New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 11536 for NEMO/trunk/src/OCE/IOM/iom.F90 – NEMO

Ignore:
Timestamp:
2019-09-11T15:54:18+02:00 (5 years ago)
Author:
smasson
Message:

trunk: merge dev_r10984_HPC-13 into the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/IOM/iom.F90

    r10817 r11536  
    5858   PUBLIC iom_init, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get 
    5959   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 
    6161 
    6262   PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 
     
    212212          CALL iom_set_axis_attr( "depthv", bounds=zw_bnds ) 
    213213          CALL iom_set_axis_attr( "depthw", bounds=zt_bnds ) 
    214           ! 
    215 # if defined key_floats 
    216214          CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,jpnfl) /) ) 
    217 # endif 
    218215# if defined key_si3 
    219216          CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
     
    835832 
    836833 
    837    FUNCTION iom_varid ( kiomid, cdvar, kdimsz, kndims, ldstop )   
     834   FUNCTION iom_varid ( kiomid, cdvar, kdimsz, kndims, lduld, ldstop )   
    838835      !!----------------------------------------------------------------------- 
    839836      !!                  ***  FUNCTION  iom_varid  *** 
     
    844841      CHARACTER(len=*)     , INTENT(in   )           ::   cdvar    ! name of the variable 
    845842      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) 
    847845      LOGICAL              , INTENT(in   ), OPTIONAL ::   ldstop   ! stop if looking for non-existing variable (default = .TRUE.) 
    848846      ! 
     
    874872               iiv = iiv + 1 
    875873               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 ) 
    877875               ELSE 
    878876                  CALL ctl_stop( trim(clinfo), 'Too many variables in the file '//iom_file(kiomid)%name,   & 
     
    892890               ENDIF 
    893891               IF( PRESENT(kndims) )  kndims = iom_file(kiomid)%ndims(iiv) 
     892               IF( PRESENT( lduld) )  lduld  = iom_file(kiomid)%luld( iiv) 
    894893            ENDIF 
    895894         ENDIF 
     
    12701269               !--- overlap areas and extra hallows (mpp) 
    12711270               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 ) 
    12731272               ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 
    12741273                  ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 
    12751274                  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 ) 
    12771276                  ELSE   ! put some arbitrary value (a call to lbc_lnk will be done later...) 
    12781277                     DO jj = nlcj+1, jpj   ;   pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :)   ;   END DO 
     
    12991298            CALL xios_recv_field( trim(cdvar), pv_r3d) 
    13001299            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) 
    13021301            ENDIF 
    13031302         ELSEIF( PRESENT(pv_r2d) ) THEN 
     
    13061305            CALL xios_recv_field( trim(cdvar), pv_r2d) 
    13071306            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) 
    13091308            ENDIF 
    13101309         ELSEIF( PRESENT(pv_r1d) ) THEN 
     
    16691668      CHARACTER(LEN=*), INTENT(in) ::   cdname 
    16701669      REAL(wp)        , INTENT(in) ::   pfield0d 
    1671       REAL(wp)        , DIMENSION(jpi,jpj) ::   zz     ! masson 
     1670!!      REAL(wp)        , DIMENSION(jpi,jpj) ::   zz     ! masson 
    16721671#if defined key_iomput 
    1673       zz(:,:)=pfield0d 
    1674       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/))  
    16761675#else 
    16771676      IF( .FALSE. )   WRITE(numout,*) cdname, pfield0d   ! useless test to avoid compilation warnings 
     
    19791978      ! Cell vertices on boundries 
    19801979      DO jn = 1, 4 
    1981          CALL lbc_lnk( 'iom', z_bnds(jn,:,:,1), cdgrd, 1., pval=999._wp ) 
    1982          CALL lbc_lnk( 'iom', z_bnds(jn,:,:,2), cdgrd, 1., pval=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 ) 
    19831982      END DO 
    19841983      ! 
     
    23892388   !!   NOT 'key_iomput'                               a few dummy routines 
    23902389   !!---------------------------------------------------------------------- 
    2391  
    23922390   SUBROUTINE iom_setkt( kt, cdname ) 
    23932391      INTEGER         , INTENT(in)::   kt  
     
    24042402 
    24052403   LOGICAL FUNCTION iom_use( cdname ) 
    2406       !!---------------------------------------------------------------------- 
    2407       !!---------------------------------------------------------------------- 
    24082404      CHARACTER(LEN=*), INTENT(in) ::   cdname 
    2409       !!---------------------------------------------------------------------- 
    24102405#if defined key_iomput 
    24112406      iom_use = xios_field_is_active( cdname ) 
     
    24142409#endif 
    24152410   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   
    24172423   !!====================================================================== 
    24182424END MODULE iom 
Note: See TracChangeset for help on using the changeset viewer.