- Timestamp:
- 2017-11-15T12:39:36+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_rev8689_LIM3_RST/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90
r7646 r8708 53 53 CONTAINS 54 54 55 SUBROUTINE iom_nf90_open( cdname, kiomid, ldwrt, ldok, kdompar )55 SUBROUTINE iom_nf90_open( cdname, kiomid, ldwrt, ldok, kdompar, ndlev ) 56 56 !!--------------------------------------------------------------------- 57 57 !! *** SUBROUTINE iom_open *** … … 64 64 LOGICAL , INTENT(in ) :: ldok ! check the existence 65 65 INTEGER, DIMENSION(2,5), INTENT(in ), OPTIONAL :: kdompar ! domain parameters: 66 INTEGER , INTENT(in ), OPTIONAL :: ndlev 66 67 67 68 CHARACTER(LEN=256) :: clinfo ! info character … … 76 77 INTEGER :: ihdf5 ! local variable for retrieval of value for NF90_HDF5 77 78 LOGICAL :: llclobber ! local definition of ln_clobber 79 INTEGER :: ilevels ! vertical levels 78 80 !--------------------------------------------------------------------- 79 81 80 82 clinfo = ' iom_nf90_open ~~~ ' 81 83 istop = nstop ! store the actual value of nstop 84 ilevels = jpk 85 IF(PRESENT(ndlev)) ilevels = ndlev ! number of vertical levels 86 ! by default jpk, but can be 87 ! different for LIM3 82 88 IF( nn_chunksz > 0 ) THEN ; ichunk = nn_chunksz 83 89 ELSE ; ichunk = NF90_SIZEHINT_DEFAULT … … 126 132 CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'x', kdompar(1,1) , idmy ), clinfo) 127 133 CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'y', kdompar(2,1) , idmy ), clinfo) 128 CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'z', jpk, idmy ), clinfo)134 CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'z', ilevels , idmy ), clinfo) 129 135 CALL iom_nf90_check(NF90_DEF_DIM( if90id, 't', NF90_UNLIMITED, idmy ), clinfo) 130 136 ! global attributes … … 156 162 iom_file(kiomid)%nvars = 0 157 163 iom_file(kiomid)%irec = -1 ! useless for NetCDF files, used to know if the file is in define mode 164 iom_file(kiomid)%nlev = ilevels 158 165 CALL iom_nf90_check(NF90_Inquire(if90id, unlimitedDimId = iom_file(kiomid)%iduld), clinfo) 159 166 IF ( iom_file(kiomid)%iduld .GE. 0 ) THEN … … 693 700 LOGICAL :: lchunk ! logical switch to activate chunking and compression 694 701 ! when appropriate (currently chunking is applied to 4d fields only) 702 INTEGER :: i ! local variable 695 703 !--------------------------------------------------------------------- 696 704 ! … … 706 714 ENDIF 707 715 ! define the dimension variables if it is not already done 708 cltmp = (/ 'nav_lon ', 'nav_lat ', 'nav_lev ', 'time_counter' /) 716 IF(iom_file(kiomid)%nlev == jpk ) THEN 717 cltmp = (/ 'nav_lon ', 'nav_lat ', 'nav_lev ', 'time_counter' /) 718 ELSE 719 cltmp = (/ 'nav_lon ', 'nav_lat ', 'numcat ', 'time_counter' /) 720 ENDIF 709 721 CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(1)), NF90_FLOAT , (/ 1, 2 /), iom_file(kiomid)%nvid(1) ), clinfo) 710 722 CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(2)), NF90_FLOAT , (/ 1, 2 /), iom_file(kiomid)%nvid(2) ), clinfo) … … 819 831 CALL iom_nf90_check(NF90_INQ_VARID( if90id, 'nav_lat' , idmy ), clinfo) 820 832 CALL iom_nf90_check(NF90_PUT_VAR( if90id, idmy, gphit(ix1:ix2, iy1:iy2) ), clinfo) 821 CALL iom_nf90_check(NF90_INQ_VARID( if90id, 'nav_lev' , idmy ), clinfo) 822 CALL iom_nf90_check(NF90_PUT_VAR( if90id, idmy, gdept_1d ), clinfo) 833 IF(iom_file(kiomid)%nlev == jpk ) THEN 834 !NEMO 835 CALL iom_nf90_check(NF90_INQ_VARID( if90id, 'nav_lev' , idmy ), clinfo) 836 CALL iom_nf90_check(NF90_PUT_VAR( if90id, idmy, gdept_1d ), clinfo) 837 ELSE 838 CALL iom_nf90_check(NF90_INQ_VARID( if90id, 'numcat' , idmy ), clinfo) 839 CALL iom_nf90_check(NF90_PUT_VAR( if90id, idmy, (/ (i, i = 1,iom_file(kiomid)%nlev) /)), clinfo) 840 ENDIF 823 841 ! +++ WRONG VALUE: to be improved but not really useful... 824 842 CALL iom_nf90_check(NF90_INQ_VARID( if90id, 'time_counter', idmy ), clinfo)
Note: See TracChangeset
for help on using the changeset viewer.