Changeset 11536 for NEMO/trunk/src/OCE/IOM/iom.F90
- Timestamp:
- 2019-09-11T15:54:18+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/IOM/iom.F90
r10817 r11536 58 58 PUBLIC iom_init, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get 59 59 PUBLIC iom_chkatt, iom_getatt, iom_putatt, iom_getszuld, iom_rstput, iom_delay_rst, iom_put 60 PUBLIC iom_use, iom_context_finalize 60 PUBLIC iom_use, iom_context_finalize, iom_miss_val 61 61 62 62 PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d … … 212 212 CALL iom_set_axis_attr( "depthv", bounds=zw_bnds ) 213 213 CALL iom_set_axis_attr( "depthw", bounds=zt_bnds ) 214 !215 # if defined key_floats216 214 CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,jpnfl) /) ) 217 # endif218 215 # if defined key_si3 219 216 CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) … … 835 832 836 833 837 FUNCTION iom_varid ( kiomid, cdvar, kdimsz, kndims, ld stop )834 FUNCTION iom_varid ( kiomid, cdvar, kdimsz, kndims, lduld, ldstop ) 838 835 !!----------------------------------------------------------------------- 839 836 !! *** FUNCTION iom_varid *** … … 844 841 CHARACTER(len=*) , INTENT(in ) :: cdvar ! name of the variable 845 842 INTEGER, DIMENSION(:), INTENT( out), OPTIONAL :: kdimsz ! size of each dimension 846 INTEGER, INTENT( out), OPTIONAL :: kndims ! size of the dimensions 843 INTEGER , INTENT( out), OPTIONAL :: kndims ! number of dimensions 844 LOGICAL , INTENT( out), OPTIONAL :: lduld ! true if the last dimension is unlimited (time) 847 845 LOGICAL , INTENT(in ), OPTIONAL :: ldstop ! stop if looking for non-existing variable (default = .TRUE.) 848 846 ! … … 874 872 iiv = iiv + 1 875 873 IF( iiv <= jpmax_vars ) THEN 876 iom_varid = iom_nf90_varid( kiomid, cdvar, iiv, kdimsz, kndims )874 iom_varid = iom_nf90_varid( kiomid, cdvar, iiv, kdimsz, kndims, lduld ) 877 875 ELSE 878 876 CALL ctl_stop( trim(clinfo), 'Too many variables in the file '//iom_file(kiomid)%name, & … … 892 890 ENDIF 893 891 IF( PRESENT(kndims) ) kndims = iom_file(kiomid)%ndims(iiv) 892 IF( PRESENT( lduld) ) lduld = iom_file(kiomid)%luld( iiv) 894 893 ENDIF 895 894 ENDIF … … 1270 1269 !--- overlap areas and extra hallows (mpp) 1271 1270 IF( PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN 1272 CALL lbc_lnk( 'iom', pv_r2d,'Z', -999.,'no0')1271 CALL lbc_lnk( 'iom', pv_r2d,'Z', -999., kfillmode = jpfillnothing ) 1273 1272 ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 1274 1273 ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 1275 1274 IF( icnt(3) == inlev ) THEN 1276 CALL lbc_lnk( 'iom', pv_r3d,'Z', -999.,'no0')1275 CALL lbc_lnk( 'iom', pv_r3d,'Z', -999., kfillmode = jpfillnothing ) 1277 1276 ELSE ! put some arbitrary value (a call to lbc_lnk will be done later...) 1278 1277 DO jj = nlcj+1, jpj ; pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :) ; END DO … … 1299 1298 CALL xios_recv_field( trim(cdvar), pv_r3d) 1300 1299 IF(idom /= jpdom_unknown ) then 1301 CALL lbc_lnk( 'iom', pv_r3d,'Z', -999.,'no0')1300 CALL lbc_lnk( 'iom', pv_r3d,'Z', -999., kfillmode = jpfillnothing) 1302 1301 ENDIF 1303 1302 ELSEIF( PRESENT(pv_r2d) ) THEN … … 1306 1305 CALL xios_recv_field( trim(cdvar), pv_r2d) 1307 1306 IF(idom /= jpdom_unknown ) THEN 1308 CALL lbc_lnk('iom', pv_r2d,'Z',-999., 'no0')1307 CALL lbc_lnk('iom', pv_r2d,'Z',-999., kfillmode = jpfillnothing) 1309 1308 ENDIF 1310 1309 ELSEIF( PRESENT(pv_r1d) ) THEN … … 1669 1668 CHARACTER(LEN=*), INTENT(in) :: cdname 1670 1669 REAL(wp) , INTENT(in) :: pfield0d 1671 REAL(wp) , DIMENSION(jpi,jpj) :: zz ! masson1670 !! REAL(wp) , DIMENSION(jpi,jpj) :: zz ! masson 1672 1671 #if defined key_iomput 1673 zz(:,:)=pfield0d1674 CALL xios_send_field(cdname, zz)1675 !CALL xios_send_field(cdname, (/pfield0d/))1672 !!clem zz(:,:)=pfield0d 1673 !!clem CALL xios_send_field(cdname, zz) 1674 CALL xios_send_field(cdname, (/pfield0d/)) 1676 1675 #else 1677 1676 IF( .FALSE. ) WRITE(numout,*) cdname, pfield0d ! useless test to avoid compilation warnings … … 1979 1978 ! Cell vertices on boundries 1980 1979 DO jn = 1, 4 1981 CALL lbc_lnk( 'iom', z_bnds(jn,:,:,1), cdgrd, 1., p val=999._wp )1982 CALL lbc_lnk( 'iom', z_bnds(jn,:,:,2), cdgrd, 1., p val=999._wp )1980 CALL lbc_lnk( 'iom', z_bnds(jn,:,:,1), cdgrd, 1., pfillval=999._wp ) 1981 CALL lbc_lnk( 'iom', z_bnds(jn,:,:,2), cdgrd, 1., pfillval=999._wp ) 1983 1982 END DO 1984 1983 ! … … 2389 2388 !! NOT 'key_iomput' a few dummy routines 2390 2389 !!---------------------------------------------------------------------- 2391 2392 2390 SUBROUTINE iom_setkt( kt, cdname ) 2393 2391 INTEGER , INTENT(in):: kt … … 2404 2402 2405 2403 LOGICAL FUNCTION iom_use( cdname ) 2406 !!----------------------------------------------------------------------2407 !!----------------------------------------------------------------------2408 2404 CHARACTER(LEN=*), INTENT(in) :: cdname 2409 !!----------------------------------------------------------------------2410 2405 #if defined key_iomput 2411 2406 iom_use = xios_field_is_active( cdname ) … … 2414 2409 #endif 2415 2410 END FUNCTION iom_use 2416 2411 2412 SUBROUTINE iom_miss_val( cdname, pmiss_val ) 2413 CHARACTER(LEN=*), INTENT(in ) :: cdname 2414 REAL(wp) , INTENT(out) :: pmiss_val 2415 #if defined key_iomput 2416 ! get missing value 2417 CALL xios_get_field_attr( cdname, default_value = pmiss_val ) 2418 #else 2419 IF( .FALSE. ) WRITE(numout,*) cdname, pmiss_val ! useless test to avoid compilation warnings 2420 #endif 2421 END SUBROUTINE iom_miss_val 2422 2417 2423 !!====================================================================== 2418 2424 END MODULE iom
Note: See TracChangeset
for help on using the changeset viewer.