- Timestamp:
- 2016-04-07T15:33:32+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/nemo_v3_6_STABLE_copy/NEMOGCM/TOOLS/SIREN/src/dimension.f90
r5783 r6436 154 154 ! REVISION HISTORY: 155 155 !> @date November, 2013 - Initial Version 156 !> @date Spetember, 2015 157 !> - manage useless (dummy) dimension 156 158 !> 157 159 !> @note Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 167 169 ! type and variable 168 170 PUBLIC :: TDIM !< dimension structure 171 172 PRIVATE :: cm_dumdim !< dummy dimension array 169 173 170 174 ! function and subroutine … … 182 186 PUBLIC :: dim_get_index !< get dimension index in array of dimension structure 183 187 PUBLIC :: dim_get_id !< get dimension id in array of dimension structure 188 PUBLIC :: dim_get_dummy !< fill dummy dimension array 189 PUBLIC :: dim_is_dummy !< check if dimension is defined as dummy dimension 184 190 185 191 PRIVATE :: dim__reshape_2xyzt_dp ! reshape real(8) 4D array to ('x','y','z','t') … … 209 215 END TYPE 210 216 217 CHARACTER(LEN=lc), DIMENSION(ip_maxdum), SAVE :: cm_dumdim !< dummy dimension 218 211 219 INTERFACE dim_print 212 220 MODULE PROCEDURE dim__print_unit ! print information on one dimension … … 518 526 !> @param[in] ld_uld dimension unlimited 519 527 !> @param[in] cd_sname dimension short name 520 !> @param[in] ld_u lddimension use or not528 !> @param[in] ld_use dimension use or not 521 529 !> @return dimension structure 522 530 !------------------------------------------------------------------- 523 TYPE(TDIM) FUNCTION dim_init( cd_name, id_len, ld_uld, cd_sname, ld_use )531 TYPE(TDIM) FUNCTION dim_init( cd_name, id_len, ld_uld, cd_sname, ld_use ) 524 532 IMPLICIT NONE 525 533 … … 1401 1409 1402 1410 END SUBROUTINE dim__clean_arr 1411 !------------------------------------------------------------------- 1412 !> @brief This subroutine fill dummy dimension array 1413 ! 1414 !> @author J.Paul 1415 !> @date September, 2015 - Initial Version 1416 ! 1417 !> @param[in] cd_dummy dummy configuration file 1418 !------------------------------------------------------------------- 1419 SUBROUTINE dim_get_dummy( cd_dummy ) 1420 IMPLICIT NONE 1421 ! Argument 1422 CHARACTER(LEN=*), INTENT(IN) :: cd_dummy 1423 1424 ! local variable 1425 INTEGER(i4) :: il_fileid 1426 INTEGER(i4) :: il_status 1427 1428 LOGICAL :: ll_exist 1429 1430 ! loop indices 1431 ! namelist 1432 CHARACTER(LEN=lc), DIMENSION(ip_maxdum) :: cn_dumvar 1433 CHARACTER(LEN=lc), DIMENSION(ip_maxdum) :: cn_dumdim 1434 CHARACTER(LEN=lc), DIMENSION(ip_maxdum) :: cn_dumatt 1435 1436 !---------------------------------------------------------------- 1437 NAMELIST /namdum/ & !< dummy namelist 1438 & cn_dumvar, & !< variable name 1439 & cn_dumdim, & !< dimension name 1440 & cn_dumatt !< attribute name 1441 !---------------------------------------------------------------- 1442 1443 ! init 1444 cm_dumdim(:)='' 1445 1446 ! read namelist 1447 INQUIRE(FILE=TRIM(cd_dummy), EXIST=ll_exist) 1448 IF( ll_exist )THEN 1449 1450 il_fileid=fct_getunit() 1451 1452 OPEN( il_fileid, FILE=TRIM(cd_dummy), & 1453 & FORM='FORMATTED', & 1454 & ACCESS='SEQUENTIAL', & 1455 & STATUS='OLD', & 1456 & ACTION='READ', & 1457 & IOSTAT=il_status) 1458 CALL fct_err(il_status) 1459 IF( il_status /= 0 )THEN 1460 CALL logger_fatal("DIM GET DUMMY: opening "//TRIM(cd_dummy)) 1461 ENDIF 1462 1463 READ( il_fileid, NML = namdum ) 1464 cm_dumdim(:)=cn_dumdim(:) 1465 1466 CLOSE( il_fileid ) 1467 1468 ENDIF 1469 1470 END SUBROUTINE dim_get_dummy 1471 !------------------------------------------------------------------- 1472 !> @brief This function check if dimension is defined as dummy dimension 1473 !> in configuraton file 1474 !> 1475 !> @author J.Paul 1476 !> @date September, 2015 - Initial Version 1477 ! 1478 !> @param[in] td_dim dimension structure 1479 !> @return true if dimension is dummy dimension 1480 !------------------------------------------------------------------- 1481 FUNCTION dim_is_dummy(td_dim) 1482 IMPLICIT NONE 1483 1484 ! Argument 1485 TYPE(TDIM), INTENT(IN) :: td_dim 1486 1487 ! function 1488 LOGICAL :: dim_is_dummy 1489 1490 ! loop indices 1491 INTEGER(i4) :: ji 1492 !---------------------------------------------------------------- 1493 1494 dim_is_dummy=.FALSE. 1495 DO ji=1,ip_maxdum 1496 IF( fct_lower(td_dim%c_name) == fct_lower(cm_dumdim(ji)) )THEN 1497 dim_is_dummy=.TRUE. 1498 EXIT 1499 ENDIF 1500 ENDDO 1501 1502 END FUNCTION dim_is_dummy 1403 1503 END MODULE dim 1404 1504
Note: See TracChangeset
for help on using the changeset viewer.