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 9019 for branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90 – NEMO

Ignore:
Timestamp:
2017-12-13T15:58:53+01:00 (7 years ago)
Author:
timgraham
Message:

Merge of dev_CNRS_2017 into branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r8698 r9019  
    11MODULE iom 
    2    !!===================================================================== 
     2   !!====================================================================== 
    33   !!                    ***  MODULE  iom *** 
    44   !! Input/Output manager :  Library to read input files 
    5    !!==================================================================== 
     5   !!====================================================================== 
    66   !! History :  2.0  ! 2005-12  (J. Belier) Original code 
    77   !!            2.0  ! 2006-02  (S. Masson) Adaptation to NEMO 
     
    1010   !!            3.6  ! 2014-15  DIMG format removed 
    1111   !!            3.6  ! 2015-15  (J. Harle) Added procedure to read REAL attributes 
    12    !!-------------------------------------------------------------------- 
    13  
    14    !!-------------------------------------------------------------------- 
     12   !!            4.0  ! 2017-11  (M. Andrejczuk) Extend IOM interface to write any 3D fields 
     13   !!---------------------------------------------------------------------- 
     14 
     15   !!---------------------------------------------------------------------- 
    1516   !!   iom_open       : open a file read only 
    1617   !!   iom_close      : close a file or all files opened by iom 
     
    1920   !!   iom_varid      : get the id of a variable in a file 
    2021   !!   iom_rstput     : write a field in a restart file (interfaced to several routines) 
    21    !!-------------------------------------------------------------------- 
     22   !!---------------------------------------------------------------------- 
    2223   USE dom_oce         ! ocean space and time domain 
    2324   USE c1d             ! 1D vertical configuration 
     
    2930   USE lib_mpp           ! MPP library 
    3031#if defined key_iomput 
    31    USE sbc_oce, ONLY :   nn_fsbc         ! ocean space and time domain 
    32    USE trc_oce, ONLY :   nn_dttrc        !  !: frequency of step on passive tracers 
    33    USE icb_oce, ONLY :   nclasses, class_num       !  !: iceberg classes 
     32   USE sbc_oce  , ONLY :   nn_fsbc         ! ocean space and time domain 
     33   USE trc_oce  , ONLY :   nn_dttrc        !  !: frequency of step on passive tracers 
     34   USE icb_oce  , ONLY :   nclasses, class_num       !  !: iceberg classes 
    3435#if defined key_lim3 
    35    USE ice    , ONLY :   jpl 
    36 #elif defined key_lim2 
    37    USE par_ice_2 
     36   USE ice      , ONLY :   jpl 
    3837#endif 
    3938   USE domngb          ! ocean space and time domain 
     
    8281 
    8382   !!---------------------------------------------------------------------- 
    84    !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     83   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
    8584   !! $Id$ 
    8685   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    8786   !!---------------------------------------------------------------------- 
    88  
    8987CONTAINS 
    9088 
     
    9795      !!---------------------------------------------------------------------- 
    9896      CHARACTER(len=*), INTENT(in)  :: cdname 
     97      ! 
    9998#if defined key_iomput 
    100  
     99      ! 
    101100      TYPE(xios_duration) :: dtime    = xios_duration(0, 0, 0, 0, 0, 0) 
    102101      TYPE(xios_date)     :: start_date 
     
    106105      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zt_bnds, zw_bnds 
    107106      !!---------------------------------------------------------------------- 
    108  
     107      ! 
    109108      ALLOCATE( zt_bnds(2,jpk), zw_bnds(2,jpk) ) 
    110  
     109      ! 
    111110      clname = cdname 
    112111      IF( TRIM(Agrif_CFixed()) /= '0' )   clname = TRIM(Agrif_CFixed())//"_"//TRIM(cdname) 
     
    127126      ! horizontal grid definition 
    128127      CALL set_scalar 
    129  
     128      ! 
    130129      IF( TRIM(cdname) == TRIM(cxios_context) ) THEN   
    131130         CALL set_grid( "T", glamt, gphit )  
     
    146145         ENDIF 
    147146      ENDIF 
    148  
     147      ! 
    149148      IF( TRIM(cdname) == TRIM(cxios_context)//"_crs" ) THEN   
    150149         CALL dom_grid_crs   ! Save the parent grid information  & Switch to coarse grid domain 
     
    169168         ENDIF 
    170169      ENDIF 
    171  
     170      ! 
    172171      ! vertical grid definition 
    173172      CALL iom_set_axis_attr( "deptht", gdept_1d ) 
     
    175174      CALL iom_set_axis_attr( "depthv", gdept_1d ) 
    176175      CALL iom_set_axis_attr( "depthw", gdepw_1d ) 
    177  
     176      ! 
    178177      ! Add vertical grid bounds 
    179178      jkmin = MIN(2,jpk)  ! in case jpk=1 (i.e. sas2D) 
     
    188187      CALL iom_set_axis_attr( "depthv", bounds=zt_bnds ) 
    189188      CALL iom_set_axis_attr( "depthw", bounds=zw_bnds ) 
    190  
    191  
     189      ! 
    192190# if defined key_floats 
    193191      CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,nfloat) /) ) 
    194192# endif 
    195 #if defined key_lim3 || defined key_lim2 
     193# if defined key_lim3 
    196194      CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
    197 #endif 
     195      ! SIMIP diagnostics (4 main arctic straits) 
     196      CALL iom_set_axis_attr( "nstrait", (/ (REAL(ji,wp), ji=1,4) /) ) 
     197# endif 
    198198      CALL iom_set_axis_attr( "icbcla", class_num ) 
    199199      CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) ) 
     
    202202      ! automatic definitions of some of the xml attributs 
    203203      CALL set_xmlatt 
    204  
     204      ! 
    205205      ! end file definition 
    206206      dtime%second = rdt 
    207       CALL xios_set_timestep(dtime) 
     207      CALL xios_set_timestep( dtime ) 
    208208      CALL xios_close_context_definition() 
    209        
    210       CALL xios_update_calendar(0) 
    211  
     209      CALL xios_update_calendar( 0 ) 
     210      ! 
    212211      DEALLOCATE( zt_bnds, zw_bnds ) 
    213  
     212      ! 
    214213#endif 
    215        
     214      ! 
    216215   END SUBROUTINE iom_init 
    217216 
     
    239238 
    240239 
    241    SUBROUTINE iom_open( cdname, kiomid, ldwrt, kdom, kiolib, ldstop, ldiof ) 
     240   SUBROUTINE iom_open( cdname, kiomid, ldwrt, kdom, kiolib, ldstop, ldiof, kdlev ) 
    242241      !!--------------------------------------------------------------------- 
    243242      !!                   ***  SUBROUTINE  iom_open  *** 
     
    252251      LOGICAL         , INTENT(in   ), OPTIONAL ::   ldstop   ! stop if open to read a non-existing file (default = .TRUE.) 
    253252      LOGICAL         , INTENT(in   ), OPTIONAL ::   ldiof    ! Interp On the Fly, needed for AGRIF (default = .FALSE.) 
    254  
     253      INTEGER         , INTENT(in   ), OPTIONAL ::   kdlev    ! number of vertical levels 
     254      ! 
    255255      CHARACTER(LEN=256)    ::   clname    ! the name of the file based on cdname [[+clcpu]+clcpu] 
    256256      CHARACTER(LEN=256)    ::   cltmpn    ! tempory name to store clname (in writting mode) 
     
    405405      IF( istop == nstop ) THEN   ! no error within this routine 
    406406         SELECT CASE (iolib) 
    407          CASE (jpnf90   )   ;   CALL iom_nf90_open(    clname, kiomid, llwrt, llok, idompar ) 
     407         CASE (jpnf90   )   ;   CALL iom_nf90_open(    clname, kiomid, llwrt, llok, idompar, kdlev = kdlev ) 
    408408         CASE DEFAULT 
    409409            CALL ctl_stop( TRIM(clinfo)//' accepted IO library is only jpnf90 (jpioipsl option has been removed) ' ) 
     
    644644      INTEGER , DIMENSION(:)     , INTENT(in   ), OPTIONAL ::   kcount     ! number of points to be read in each axis 
    645645      LOGICAL                    , INTENT(in   ), OPTIONAL ::   lrowattr   ! logical flag telling iom_get to 
    646                                                                            ! look for and use a file attribute 
    647                                                                            ! called open_ocean_jstart to set the start 
    648                                                                            ! value for the 2nd dimension (netcdf only) 
     646      !                                                                    ! look for and use a file attribute 
     647      !                                                                    ! called open_ocean_jstart to set the start 
     648      !                                                                    ! value for the 2nd dimension (netcdf only) 
    649649      ! 
    650650      LOGICAL                        ::   llnoov      ! local definition to read overlap 
     
    672672      CHARACTER(LEN=1)               ::   clrankpv, cldmspc      !  
    673673      LOGICAL                        ::   ll_depth_spec ! T => if kstart, kcount present then *only* use values for 3rd spatial dimension. 
     674      INTEGER                        ::   inlev       ! number of levels for 3D data 
    674675      !--------------------------------------------------------------------- 
    675676      ! 
     677      inlev = -1 
     678      IF( PRESENT(pv_r3d) )   inlev = SIZE(pv_r3d, 3) 
    676679      clname = iom_file(kiomid)%name   !   esier to read 
    677680      clinfo = '          iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) 
     
    775778 
    776779         IF( PRESENT(kstart) .AND. .NOT. ll_depth_spec ) THEN  
    777             istart(1:idmspc) = kstart(1:idmspc) ; icnt(1:idmspc) = kcount(1:idmspc) 
     780            istart(1:idmspc) = kstart(1:idmspc)  
     781            icnt  (1:idmspc) = kcount(1:idmspc) 
    778782         ELSE 
    779783            IF(idom == jpdom_unknown ) THEN 
     
    801805                  ENDIF 
    802806                  IF( PRESENT(pv_r3d) ) THEN 
    803                      IF( idom == jpdom_data ) THEN                                  ; icnt(3) = jpkglo 
    804                      ELSE IF( ll_depth_spec .AND. PRESENT(kstart) ) THEN            ; istart(3) = kstart(3); icnt(3) = kcount(3) 
    805                      ELSE                                                           ; icnt(3) = jpk 
     807                     IF( idom == jpdom_data ) THEN                        ;                               icnt(3) = inlev 
     808                     ELSEIF( ll_depth_spec .AND. PRESENT(kstart) ) THEN   ;   istart(3) = kstart(3)   ;  icnt(3) = kcount(3) 
     809                     ELSE                                                 ;                               icnt(3) = inlev 
    806810                     ENDIF 
    807811                  ENDIF 
     
    886890            ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 
    887891               ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 
    888                IF( icnt(3) == jpk ) THEN 
     892               IF( icnt(3) == inlev ) THEN 
    889893                  CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 
    890894               ELSE   ! put some arbitrary value (a call to lbc_lnk will be done later...) 
     
    11351139   END SUBROUTINE iom_rp0d 
    11361140 
     1141 
    11371142   SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    11381143      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
     
    11551160   END SUBROUTINE iom_rp1d 
    11561161 
     1162 
    11571163   SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    11581164      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
     
    11751181   END SUBROUTINE iom_rp2d 
    11761182 
     1183 
    11771184   SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    11781185      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
     
    12361243      REAL(wp),       DIMENSION(:,:,:), INTENT(in) ::   pfield3d 
    12371244#if defined key_iomput 
    1238       CALL xios_send_field(cdname, pfield3d) 
     1245      CALL xios_send_field( cdname, pfield3d ) 
    12391246#else 
    12401247      IF( .FALSE. )   WRITE(numout,*) cdname, pfield3d   ! useless test to avoid compilation warnings 
    12411248#endif 
    12421249   END SUBROUTINE iom_p3d 
     1250 
     1251#if defined key_iomput 
    12431252   !!---------------------------------------------------------------------- 
    1244  
    1245 #if defined key_iomput 
     1253   !!   'key_iomput'                                         IOM  interface 
     1254   !!---------------------------------------------------------------------- 
    12461255 
    12471256   SUBROUTINE iom_set_domain_attr( cdid, ni_glo, nj_glo, ibegin, jbegin, ni, nj, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj,   & 
    12481257      &                                    data_dim, data_ibegin, data_ni, data_jbegin, data_nj, lonvalue, latvalue, mask,     & 
    12491258      &                                    nvertex, bounds_lon, bounds_lat, area ) 
    1250       CHARACTER(LEN=*)                   , INTENT(in) ::   cdid 
    1251       INTEGER                  , OPTIONAL, INTENT(in) ::   ni_glo, nj_glo, ibegin, jbegin, ni, nj 
    1252       INTEGER                  , OPTIONAL, INTENT(in) ::   data_dim, data_ibegin, data_ni, data_jbegin, data_nj 
    1253       INTEGER                  , OPTIONAL, INTENT(in) ::   zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj, nvertex 
    1254       REAL(wp), DIMENSION(:)   , OPTIONAL, INTENT(in) ::   lonvalue, latvalue 
    1255       REAL(wp), DIMENSION(:,:) , OPTIONAL, INTENT(in) ::   bounds_lon, bounds_lat, area 
    1256       LOGICAL, DIMENSION(:)   , OPTIONAL, INTENT(in) ::   mask 
    1257  
    1258  
    1259       IF ( xios_is_valid_domain     (cdid) ) THEN 
     1259      !!---------------------------------------------------------------------- 
     1260      !!---------------------------------------------------------------------- 
     1261      CHARACTER(LEN=*)                  , INTENT(in) ::   cdid 
     1262      INTEGER                 , OPTIONAL, INTENT(in) ::   ni_glo, nj_glo, ibegin, jbegin, ni, nj 
     1263      INTEGER                 , OPTIONAL, INTENT(in) ::   data_dim, data_ibegin, data_ni, data_jbegin, data_nj 
     1264      INTEGER                 , OPTIONAL, INTENT(in) ::   zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj, nvertex 
     1265      REAL(wp), DIMENSION(:)  , OPTIONAL, INTENT(in) ::   lonvalue, latvalue 
     1266      REAL(wp), DIMENSION(:,:), OPTIONAL, INTENT(in) ::   bounds_lon, bounds_lat, area 
     1267      LOGICAL , DIMENSION(:)  , OPTIONAL, INTENT(in) ::   mask 
     1268      !!---------------------------------------------------------------------- 
     1269      ! 
     1270      IF( xios_is_valid_domain     (cdid) ) THEN 
    12601271         CALL xios_set_domain_attr     ( cdid, ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, jbegin=jbegin, ni=ni, nj=nj,   & 
    12611272            &    data_dim=data_dim, data_ibegin=data_ibegin, data_ni=data_ni, data_jbegin=data_jbegin, data_nj=data_nj ,   & 
     
    12631274            &    bounds_lat_1D=bounds_lat, area=area, type='curvilinear') 
    12641275     ENDIF 
    1265       IF ( xios_is_valid_domaingroup(cdid) ) THEN 
     1276      IF( xios_is_valid_domaingroup(cdid) ) THEN 
    12661277         CALL xios_set_domaingroup_attr( cdid, ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, jbegin=jbegin, ni=ni, nj=nj,   & 
    12671278            &    data_dim=data_dim, data_ibegin=data_ibegin, data_ni=data_ni, data_jbegin=data_jbegin, data_nj=data_nj ,   & 
     
    12691280            &    bounds_lat_1D=bounds_lat, area=area, type='curvilinear' ) 
    12701281      ENDIF 
    1271  
     1282      ! 
    12721283      CALL xios_solve_inheritance() 
    1273  
     1284      ! 
    12741285   END SUBROUTINE iom_set_domain_attr 
    12751286 
    12761287 
    1277    SUBROUTINE iom_set_zoom_domain_attr( cdid, ibegin, jbegin, ni, nj) 
    1278       CHARACTER(LEN=*)                   , INTENT(in) ::   cdid 
    1279       INTEGER                  , OPTIONAL, INTENT(in) ::   ibegin, jbegin, ni, nj 
    1280  
    1281       IF ( xios_is_valid_zoom_domain     (cdid) ) THEN 
    1282           CALL xios_set_zoom_domain_attr     ( cdid, ibegin=ibegin, jbegin=jbegin, ni=ni,    & 
    1283             &   nj=nj) 
    1284      ENDIF 
     1288   SUBROUTINE iom_set_zoom_domain_attr( cdid, ibegin, jbegin, ni, nj ) 
     1289      !!---------------------------------------------------------------------- 
     1290      !!---------------------------------------------------------------------- 
     1291      CHARACTER(LEN=*)          , INTENT(in) ::   cdid 
     1292      INTEGER         , OPTIONAL, INTENT(in) ::   ibegin, jbegin, ni, nj 
     1293      !!---------------------------------------------------------------------- 
     1294      IF( xios_is_valid_zoom_domain(cdid) )   CALL xios_set_zoom_domain_attr( cdid, ibegin=ibegin, jbegin=jbegin, ni=ni, nj=nj ) 
    12851295   END SUBROUTINE iom_set_zoom_domain_attr 
    12861296 
    12871297 
    12881298   SUBROUTINE iom_set_axis_attr( cdid, paxis, bounds ) 
     1299      !!---------------------------------------------------------------------- 
     1300      !!---------------------------------------------------------------------- 
    12891301      CHARACTER(LEN=*)      , INTENT(in) ::   cdid 
    12901302      REAL(wp), DIMENSION(:)  , OPTIONAL, INTENT(in) ::   paxis 
    12911303      REAL(wp), DIMENSION(:,:), OPTIONAL, INTENT(in) ::   bounds 
    1292  
    1293       IF ( PRESENT(paxis) ) THEN 
    1294          IF ( xios_is_valid_axis     (cdid) )   CALL xios_set_axis_attr     ( cdid, n_glo=SIZE(paxis), value=paxis ) 
    1295          IF ( xios_is_valid_axisgroup(cdid) )   CALL xios_set_axisgroup_attr( cdid, n_glo=SIZE(paxis), value=paxis ) 
    1296       ENDIF 
    1297       IF ( xios_is_valid_axis     (cdid) )   CALL xios_set_axis_attr     ( cdid, bounds=bounds ) 
    1298       IF ( xios_is_valid_axisgroup(cdid) )   CALL xios_set_axisgroup_attr( cdid, bounds=bounds ) 
     1304      !!---------------------------------------------------------------------- 
     1305      IF( PRESENT(paxis) ) THEN 
     1306         IF( xios_is_valid_axis     (cdid) )   CALL xios_set_axis_attr     ( cdid, n_glo=SIZE(paxis), value=paxis ) 
     1307         IF( xios_is_valid_axisgroup(cdid) )   CALL xios_set_axisgroup_attr( cdid, n_glo=SIZE(paxis), value=paxis ) 
     1308      ENDIF 
     1309      IF( xios_is_valid_axis     (cdid) )   CALL xios_set_axis_attr     ( cdid, bounds=bounds ) 
     1310      IF( xios_is_valid_axisgroup(cdid) )   CALL xios_set_axisgroup_attr( cdid, bounds=bounds ) 
    12991311      CALL xios_solve_inheritance() 
    13001312   END SUBROUTINE iom_set_axis_attr 
     
    13021314 
    13031315   SUBROUTINE iom_set_field_attr( cdid, freq_op, freq_offset ) 
    1304       CHARACTER(LEN=*)          , INTENT(in) ::   cdid 
    1305       TYPE(xios_duration),OPTIONAL , INTENT(in) ::   freq_op 
    1306       TYPE(xios_duration),OPTIONAL , INTENT(in) ::   freq_offset 
    1307       IF ( xios_is_valid_field     (cdid) )   CALL xios_set_field_attr       & 
    1308     &     ( cdid, freq_op=freq_op, freq_offset=freq_offset ) 
    1309       IF ( xios_is_valid_fieldgroup(cdid) )   CALL xios_set_fieldgroup_attr  & 
    1310     &                    ( cdid, freq_op=freq_op, freq_offset=freq_offset ) 
     1316      !!---------------------------------------------------------------------- 
     1317      !!---------------------------------------------------------------------- 
     1318      CHARACTER(LEN=*)             , INTENT(in) ::   cdid 
     1319      TYPE(xios_duration), OPTIONAL, INTENT(in) ::   freq_op 
     1320      TYPE(xios_duration), OPTIONAL, INTENT(in) ::   freq_offset 
     1321      !!---------------------------------------------------------------------- 
     1322      IF( xios_is_valid_field     (cdid) )   CALL xios_set_field_attr     ( cdid, freq_op=freq_op, freq_offset=freq_offset ) 
     1323      IF( xios_is_valid_fieldgroup(cdid) )   CALL xios_set_fieldgroup_attr( cdid, freq_op=freq_op, freq_offset=freq_offset ) 
    13111324      CALL xios_solve_inheritance() 
    13121325   END SUBROUTINE iom_set_field_attr 
     
    13141327 
    13151328   SUBROUTINE iom_set_file_attr( cdid, name, name_suffix ) 
     1329      !!---------------------------------------------------------------------- 
     1330      !!---------------------------------------------------------------------- 
    13161331      CHARACTER(LEN=*)          , INTENT(in) ::   cdid 
    13171332      CHARACTER(LEN=*),OPTIONAL , INTENT(in) ::   name, name_suffix 
    1318       IF ( xios_is_valid_file     (cdid) )   CALL xios_set_file_attr     ( cdid, name=name, name_suffix=name_suffix ) 
    1319       IF ( xios_is_valid_filegroup(cdid) )   CALL xios_set_filegroup_attr( cdid, name=name, name_suffix=name_suffix ) 
     1333      !!---------------------------------------------------------------------- 
     1334      IF( xios_is_valid_file     (cdid) )   CALL xios_set_file_attr     ( cdid, name=name, name_suffix=name_suffix ) 
     1335      IF( xios_is_valid_filegroup(cdid) )   CALL xios_set_filegroup_attr( cdid, name=name, name_suffix=name_suffix ) 
    13201336      CALL xios_solve_inheritance() 
    13211337   END SUBROUTINE iom_set_file_attr 
     
    13231339 
    13241340   SUBROUTINE iom_get_file_attr( cdid, name, name_suffix, output_freq ) 
     1341      !!---------------------------------------------------------------------- 
     1342      !!---------------------------------------------------------------------- 
    13251343      CHARACTER(LEN=*)          , INTENT(in ) ::   cdid 
    13261344      CHARACTER(LEN=*),OPTIONAL , INTENT(out) ::   name, name_suffix 
     
    13311349      IF( PRESENT( name_suffix ) )   name_suffix = '' 
    13321350      IF( PRESENT( output_freq ) )   output_freq = xios_duration(0,0,0,0,0,0) 
    1333       IF ( xios_is_valid_file     (cdid) ) THEN 
     1351      IF( xios_is_valid_file     (cdid) ) THEN 
    13341352         CALL xios_solve_inheritance() 
    13351353         CALL xios_is_defined_file_attr     ( cdid, name = llexist1, name_suffix = llexist2, output_freq = llexist3) 
     
    13381356         IF(llexist3)   CALL xios_get_file_attr     ( cdid, output_freq = output_freq ) 
    13391357      ENDIF 
    1340       IF ( xios_is_valid_filegroup(cdid) ) THEN 
     1358      IF( xios_is_valid_filegroup(cdid) ) THEN 
    13411359         CALL xios_solve_inheritance() 
    13421360         CALL xios_is_defined_filegroup_attr( cdid, name = llexist1, name_suffix = llexist2, output_freq = llexist3) 
     
    13491367 
    13501368   SUBROUTINE iom_set_grid_attr( cdid, mask ) 
     1369      !!---------------------------------------------------------------------- 
     1370      !!---------------------------------------------------------------------- 
    13511371      CHARACTER(LEN=*)                   , INTENT(in) ::   cdid 
    13521372      LOGICAL, DIMENSION(:,:,:), OPTIONAL, INTENT(in) ::   mask 
    1353       IF ( xios_is_valid_grid     (cdid) )   CALL xios_set_grid_attr     ( cdid, mask_3D=mask ) 
    1354       IF ( xios_is_valid_gridgroup(cdid) )   CALL xios_set_gridgroup_attr( cdid, mask_3D=mask ) 
     1373      !!---------------------------------------------------------------------- 
     1374      IF( xios_is_valid_grid     (cdid) )   CALL xios_set_grid_attr     ( cdid, mask_3D=mask ) 
     1375      IF( xios_is_valid_gridgroup(cdid) )   CALL xios_set_gridgroup_attr( cdid, mask_3D=mask ) 
    13551376      CALL xios_solve_inheritance() 
    13561377   END SUBROUTINE iom_set_grid_attr 
    13571378 
    13581379   SUBROUTINE iom_setkt( kt, cdname ) 
     1380      !!---------------------------------------------------------------------- 
     1381      !!---------------------------------------------------------------------- 
    13591382      INTEGER         , INTENT(in) ::   kt  
    13601383      CHARACTER(LEN=*), INTENT(in) ::   cdname 
    1361       !      
     1384      !!---------------------------------------------------------------------- 
    13621385      CALL iom_swap( cdname )   ! swap to cdname context 
    13631386      CALL xios_update_calendar(kt) 
    1364       IF( cdname /= TRIM(cxios_context) ) CALL iom_swap( TRIM(cxios_context) )   ! return back to nemo context 
    1365       ! 
     1387      IF( cdname /= TRIM(cxios_context) )   CALL iom_swap( TRIM(cxios_context) )   ! return back to nemo context 
    13661388   END SUBROUTINE iom_setkt 
    13671389 
    13681390   SUBROUTINE iom_context_finalize( cdname ) 
     1391      !!---------------------------------------------------------------------- 
     1392      !!---------------------------------------------------------------------- 
    13691393      CHARACTER(LEN=*), INTENT(in) :: cdname 
    1370       ! 
     1394      !!---------------------------------------------------------------------- 
    13711395      IF( xios_is_valid_context(cdname) ) THEN 
    13721396         CALL iom_swap( cdname )   ! swap to cdname context 
     
    13741398         IF( cdname /= TRIM(cxios_context) ) CALL iom_swap( TRIM(cxios_context) )   ! return back to nemo context 
    13751399      ENDIF 
    1376       ! 
    13771400   END SUBROUTINE iom_context_finalize 
    13781401 
     
    13831406      !! 
    13841407      !! ** Purpose :   define horizontal grids 
    1385       !! 
    13861408      !!---------------------------------------------------------------------- 
    13871409      CHARACTER(LEN=1)            , INTENT(in) ::   cdgrd 
     
    13891411      REAL(wp), DIMENSION(jpi,jpj), INTENT(in) ::   plat 
    13901412      ! 
     1413      INTEGER  :: ni, nj 
    13911414      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zmask 
    1392       INTEGER  :: ni,nj 
    1393        
    1394       ni=nlei-nldi+1 ; nj=nlej-nldj+1 
    1395  
     1415      !!---------------------------------------------------------------------- 
     1416      ! 
     1417      ni = nlei-nldi+1 
     1418      nj = nlej-nldj+1 
     1419      ! 
    13961420      CALL iom_set_domain_attr("grid_"//cdgrd, ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 
    13971421      CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
    13981422      CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)),   & 
    13991423         &                                     latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /)))   
    1400  
     1424      ! 
    14011425      IF ( ln_mskland ) THEN 
    14021426         ! mask land points, keep values on coast line -> specific mask for U, V and W points 
     
    14111435         CALL iom_set_grid_attr  ( "grid_"//cdgrd//"_3D", mask = RESHAPE(zmask(nldi:nlei,nldj:nlej,:),(/ni,nj,jpk/)) /= 0. ) 
    14121436      ENDIF 
    1413        
     1437      ! 
    14141438   END SUBROUTINE set_grid 
    14151439 
     
    14221446      !! 
    14231447      !!---------------------------------------------------------------------- 
    1424       CHARACTER(LEN=1) , INTENT(in) :: cdgrd 
    1425       ! 
    1426       REAL(wp), DIMENSION(jpi,jpj), INTENT(in)           :: plon_cnr, plat_cnr  ! Lat/lon coordinates of a contiguous vertex of cell (i,j) 
    1427       REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) :: plon_pnt, plat_pnt  ! Lat/lon coordinates of the point of cell (i,j) 
    1428       ! 
    1429       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:)   :: z_bnds      ! Lat/lon coordinates of the vertices of cell (i,j) 
    1430       REAL(wp), ALLOCATABLE, DIMENSION(:,:)       :: z_fld       ! Working array to determine where to rotate cells 
    1431       REAL(wp), ALLOCATABLE, DIMENSION(:,:)       :: z_rot       ! Lat/lon working array for rotation of cells 
    1432       ! 
    1433       INTEGER :: icnr, jcnr                                      ! Offset such that the vertex coordinate (i+icnr,j+jcnr) 
    1434       !                                                          ! represents the bottom-left corner of cell (i,j) 
     1448      CHARACTER(LEN=1)                      , INTENT(in) :: cdgrd 
     1449      REAL(wp), DIMENSION(jpi,jpj)          , INTENT(in) :: plon_cnr, plat_cnr  ! Lat/lon coord. of a contiguous vertex of cell (i,j) 
     1450      REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) :: plon_pnt, plat_pnt  ! Lat/lon coord. of the point of cell (i,j) 
     1451      ! 
    14351452      INTEGER :: ji, jj, jn, ni, nj 
    1436  
     1453      INTEGER :: icnr, jcnr                                    ! Offset such that the vertex coordinate (i+icnr,j+jcnr) 
     1454      !                                                        ! represents the bottom-left corner of cell (i,j) 
     1455      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: z_bnds      ! Lat/lon coordinates of the vertices of cell (i,j) 
     1456      REAL(wp), ALLOCATABLE, DIMENSION(:,:)     :: z_fld       ! Working array to determine where to rotate cells 
     1457      REAL(wp), ALLOCATABLE, DIMENSION(:,:)     :: z_rot       ! Lat/lon working array for rotation of cells 
     1458      !!---------------------------------------------------------------------- 
     1459      ! 
    14371460      ALLOCATE( z_bnds(4,jpi,jpj,2), z_fld(jpi,jpj), z_rot(4,2)  ) 
    1438  
     1461      ! 
    14391462      ! Offset of coordinate representing bottom-left corner 
    14401463      SELECT CASE ( TRIM(cdgrd) ) 
    1441          CASE ('T', 'W') 
    1442             icnr = -1 ; jcnr = -1 
    1443          CASE ('U') 
    1444             icnr =  0 ; jcnr = -1 
    1445          CASE ('V') 
    1446             icnr = -1 ; jcnr =  0 
     1464      CASE ('T', 'W')   ;   icnr = -1   ;   jcnr = -1 
     1465      CASE ('U')        ;   icnr =  0   ;   jcnr = -1 
     1466      CASE ('V')        ;   icnr = -1   ;   jcnr =  0 
    14471467      END SELECT 
    1448  
    1449       ni = nlei-nldi+1 ; nj = nlej-nldj+1  ! Dimensions of subdomain interior 
    1450  
     1468      ! 
     1469      ni = nlei-nldi+1   ! Dimensions of subdomain interior 
     1470      nj = nlej-nldj+1 
     1471      ! 
    14511472      z_fld(:,:) = 1._wp 
    14521473      CALL lbc_lnk( z_fld, cdgrd, -1. )    ! Working array for location of northfold 
    1453  
     1474      ! 
    14541475      ! Cell vertices that can be defined 
    14551476      DO jj = 2, jpjm1 
     
    14651486         END DO 
    14661487      END DO 
    1467  
     1488      ! 
    14681489      ! Cell vertices on boundries 
    14691490      DO jn = 1, 4 
     
    14711492         CALL lbc_lnk( z_bnds(jn,:,:,2), cdgrd, 1., pval=999._wp ) 
    14721493      END DO 
    1473  
     1494      ! 
    14741495      ! Zero-size cells at closed boundaries if cell points provided, 
    14751496      ! otherwise they are closed cells with unrealistic bounds 
     
    14961517         ENDIF 
    14971518      ENDIF 
    1498  
    1499       ! Rotate cells at the north fold 
    1500       IF( (nbondj == 1 .OR. nbondj == 2) .AND. jperio >= 3 ) THEN 
     1519      ! 
     1520      IF( (nbondj == 1 .OR. nbondj == 2) .AND. jperio >= 3 ) THEN    ! Rotate cells at the north fold 
    15011521         DO jj = 1, jpj 
    15021522            DO ji = 1, jpi 
     
    15081528            END DO 
    15091529         END DO 
    1510  
    1511       ! Invert cells at the symmetric equator 
    1512       ELSE IF( nbondj == 2 .AND. jperio == 2 ) THEN 
     1530      ELSE IF( nbondj == 2 .AND. jperio == 2 ) THEN                  ! Invert cells at the symmetric equator 
    15131531         DO ji = 1, jpi 
    15141532            z_rot(1:2,:) = z_bnds(3:4,ji,1,:) 
     
    15171535         END DO 
    15181536      ENDIF 
    1519  
     1537      ! 
    15201538      CALL iom_set_domain_attr("grid_"//cdgrd, bounds_lat = RESHAPE(z_bnds(:,nldi:nlei,nldj:nlej,1),(/ 4,ni*nj /)),           & 
    1521                                                bounds_lon = RESHAPE(z_bnds(:,nldi:nlei,nldj:nlej,2),(/ 4,ni*nj /)), nvertex=4 ) 
    1522  
     1539          &                                    bounds_lon = RESHAPE(z_bnds(:,nldi:nlei,nldj:nlej,2),(/ 4,ni*nj /)), nvertex=4 ) 
     1540      ! 
    15231541      DEALLOCATE( z_bnds, z_fld, z_rot )  
    1524  
     1542      ! 
    15251543   END SUBROUTINE set_grid_bounds 
    15261544 
     
    15351553      REAL(wp), DIMENSION(jpi,jpj), INTENT(in) ::   plat 
    15361554      ! 
     1555      INTEGER  :: ni, nj, ix, iy 
    15371556      REAL(wp), DIMENSION(:), ALLOCATABLE  ::   zlon 
    1538       INTEGER  :: ni,nj, ix, iy 
    1539  
    1540        
    1541       ni=nlei-nldi+1 ; nj=nlej-nldj+1            ! define zonal mean domain (jpj*jpk) 
    1542       ALLOCATE( zlon(ni*nj) )       ;       zlon(:) = 0. 
    1543  
     1557      !!---------------------------------------------------------------------- 
     1558      ! 
     1559      ni=nlei-nldi+1       ! define zonal mean domain (jpj*jpk) 
     1560      nj=nlej-nldj+1 
     1561      ALLOCATE( zlon(ni*nj) )       ;       zlon(:) = 0._wp 
     1562      ! 
    15441563      CALL dom_ngb( -168.53, 65.03, ix, iy, 'T' ) !  i-line that passes through Bering Strait: Reference latitude (used in plots) 
     1564!      CALL dom_ngb( 180., 90., ix, iy, 'T' ) !  i-line that passes near the North Pole : Reference latitude (used in plots) 
    15451565      CALL iom_set_domain_attr("gznl", ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 
    15461566      CALL iom_set_domain_attr("gznl", data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
     
    15531573   END SUBROUTINE set_grid_znl 
    15541574 
     1575 
    15551576   SUBROUTINE set_scalar 
    15561577      !!---------------------------------------------------------------------- 
     
    15621583      REAL(wp), DIMENSION(1)   ::   zz = 1. 
    15631584      !!---------------------------------------------------------------------- 
    1564  
     1585      ! 
    15651586      CALL iom_set_domain_attr('scalarpoint', ni_glo=jpnij, nj_glo=1, ibegin=narea-1, jbegin=0, ni=1, nj=1) 
    15661587      CALL iom_set_domain_attr('scalarpoint', data_dim=2, data_ibegin = 1, data_ni = 1, data_jbegin = 1, data_nj = 1) 
    1567        
    1568       zz=REAL(narea,wp) 
     1588      ! 
     1589      zz = REAL( narea, wp ) 
    15691590      CALL iom_set_domain_attr('scalarpoint', lonvalue=zz, latvalue=zz) 
    1570  
     1591      ! 
    15711592   END SUBROUTINE set_scalar 
    15721593 
     
    15961617      !  
    15971618      ! frequency of the call of iom_put (attribut: freq_op) 
    1598       f_op%timestep = 1        ;  f_of%timestep = 0  ; CALL iom_set_field_attr('field_definition', freq_op=f_op, freq_offset=f_of) 
    1599       f_op%timestep = 2        ;  f_of%timestep = 0  ; CALL iom_set_field_attr('trendT_even'     , freq_op=f_op, freq_offset=f_of) 
    1600       f_op%timestep = 2        ;  f_of%timestep = -1 ; CALL iom_set_field_attr('trendT_odd'      , freq_op=f_op, freq_offset=f_of) 
    1601       f_op%timestep = nn_fsbc  ;  f_of%timestep = 0  ; CALL iom_set_field_attr('SBC'             , freq_op=f_op, freq_offset=f_of) 
    1602       f_op%timestep = nn_fsbc  ;  f_of%timestep = 0  ; CALL iom_set_field_attr('SBC_scalar'      , freq_op=f_op, freq_offset=f_of) 
    1603       f_op%timestep = nn_dttrc ;  f_of%timestep = 0  ; CALL iom_set_field_attr('ptrc_T'          , freq_op=f_op, freq_offset=f_of) 
    1604       f_op%timestep = nn_dttrc ;  f_of%timestep = 0  ; CALL iom_set_field_attr('diad_T'          , freq_op=f_op, freq_offset=f_of) 
     1619      f_op%timestep = 1        ;  f_of%timestep =  0  ; CALL iom_set_field_attr('field_definition', freq_op=f_op, freq_offset=f_of) 
     1620      f_op%timestep = 2        ;  f_of%timestep =  0  ; CALL iom_set_field_attr('trendT_even'     , freq_op=f_op, freq_offset=f_of) 
     1621      f_op%timestep = 2        ;  f_of%timestep = -1  ; CALL iom_set_field_attr('trendT_odd'      , freq_op=f_op, freq_offset=f_of) 
     1622      f_op%timestep = nn_fsbc  ;  f_of%timestep =  0  ; CALL iom_set_field_attr('SBC'             , freq_op=f_op, freq_offset=f_of) 
     1623      f_op%timestep = nn_fsbc  ;  f_of%timestep =  0  ; CALL iom_set_field_attr('SBC_scalar'      , freq_op=f_op, freq_offset=f_of) 
     1624      f_op%timestep = nn_dttrc ;  f_of%timestep =  0  ; CALL iom_set_field_attr('ptrc_T'          , freq_op=f_op, freq_offset=f_of) 
     1625      f_op%timestep = nn_dttrc ;  f_of%timestep =  0  ; CALL iom_set_field_attr('diad_T'          , freq_op=f_op, freq_offset=f_of) 
    16051626 
    16061627      ! output file names (attribut: name) 
     
    16411662      zlatpira = (/ -19.0, -14.0,  -8.0, 0.0, 4.0, 8.0, 12.0, 15.0, 20.0 /) 
    16421663      CALL set_mooring( zlonpira, zlatpira ) 
    1643  
    1644        
     1664      ! 
    16451665   END SUBROUTINE set_xmlatt 
    16461666 
    16471667 
    1648    SUBROUTINE set_mooring( plon, plat) 
     1668   SUBROUTINE set_mooring( plon, plat ) 
    16491669      !!---------------------------------------------------------------------- 
    16501670      !!                     ***  ROUTINE set_mooring  *** 
     
    16531673      !! 
    16541674      !!---------------------------------------------------------------------- 
    1655       REAL(wp), DIMENSION(:), INTENT(in) ::  plon, plat           ! longitudes/latitudes oft the mooring 
     1675      REAL(wp), DIMENSION(:), INTENT(in) ::   plon, plat   ! longitudes/latitudes oft the mooring 
    16561676      ! 
    16571677!!$      CHARACTER(len=1),DIMENSION(4) ::   clgrd = (/ 'T', 'U', 'V', 'W' /)   ! suffix name 
     
    17361756      TYPE(xios_duration)   ::   output_freq  
    17371757      !!---------------------------------------------------------------------- 
    1738  
    1739       DO jn = 1,2 
    1740  
     1758      ! 
     1759      DO jn = 1, 2 
     1760         ! 
    17411761         output_freq = xios_duration(0,0,0,0,0,0) 
    17421762         IF( jn == 1 )   CALL iom_get_file_attr( cdid, name        = clname, output_freq = output_freq ) 
    17431763         IF( jn == 2 )   CALL iom_get_file_attr( cdid, name_suffix = clname ) 
    1744  
     1764         ! 
    17451765         IF ( TRIM(clname) /= '' ) THEN  
    1746  
     1766            ! 
    17471767            idx = INDEX(clname,'@expname@') + INDEX(clname,'@EXPNAME@') 
    17481768            DO WHILE ( idx /= 0 )  
     
    17501770               idx = INDEX(clname,'@expname@') + INDEX(clname,'@EXPNAME@') 
    17511771            END DO 
    1752  
     1772            ! 
    17531773            idx = INDEX(clname,'@freq@') + INDEX(clname,'@FREQ@') 
    17541774            DO WHILE ( idx /= 0 )  
     
    17811801              idx = INDEX(clname,'@freq@') + INDEX(clname,'@FREQ@') 
    17821802            END DO 
    1783  
     1803            ! 
    17841804            idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 
    17851805            DO WHILE ( idx /= 0 )  
     
    17881808               idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 
    17891809            END DO 
    1790  
     1810            ! 
    17911811            idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') 
    17921812            DO WHILE ( idx /= 0 )  
     
    17951815               idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') 
    17961816            END DO 
    1797  
     1817            ! 
    17981818            idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') 
    17991819            DO WHILE ( idx /= 0 )  
     
    18021822               idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') 
    18031823            END DO 
    1804  
     1824            ! 
    18051825            idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 
    18061826            DO WHILE ( idx /= 0 )  
     
    18091829               idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 
    18101830            END DO 
    1811  
     1831            ! 
    18121832            IF( jn == 1 .AND. TRIM(Agrif_CFixed()) /= '0' )   clname = TRIM(Agrif_CFixed())//"_"//TRIM(clname) 
    18131833            IF( jn == 1 )   CALL iom_set_file_attr( cdid, name        = clname ) 
    18141834            IF( jn == 2 )   CALL iom_set_file_attr( cdid, name_suffix = clname ) 
    1815  
    1816          ENDIF 
    1817  
     1835            ! 
     1836         ENDIF 
     1837         ! 
    18181838      END DO 
    1819  
     1839      ! 
    18201840   END SUBROUTINE iom_update_file_name 
    18211841 
     
    18261846      !! 
    18271847      !! ** Purpose :   send back the date corresponding to the given julian day 
    1828       !! 
    1829       !!---------------------------------------------------------------------- 
    1830       REAL(wp), INTENT(in   )           ::   pjday         ! julian day 
    1831       LOGICAL , INTENT(in   ), OPTIONAL ::   ld24          ! true to force 24:00 instead of 00:00 
    1832       LOGICAL , INTENT(in   ), OPTIONAL ::   ldfull        ! true to get the compleate date: yyyymmdd_hh:mm:ss 
     1848      !!---------------------------------------------------------------------- 
     1849      REAL(wp), INTENT(in   )           ::   pjday    ! julian day 
     1850      LOGICAL , INTENT(in   ), OPTIONAL ::   ld24     ! true to force 24:00 instead of 00:00 
     1851      LOGICAL , INTENT(in   ), OPTIONAL ::   ldfull   ! true to get the compleate date: yyyymmdd_hh:mm:ss 
    18331852      ! 
    18341853      CHARACTER(LEN=20) ::   iom_sdate 
     
    18371856      REAL(wp)          ::   zsec 
    18381857      LOGICAL           ::   ll24, llfull 
     1858      !!---------------------------------------------------------------------- 
    18391859      ! 
    18401860      IF( PRESENT(ld24) ) THEN   ;   ll24 = ld24 
    18411861      ELSE                       ;   ll24 = .FALSE. 
    18421862      ENDIF 
    1843  
     1863      ! 
    18441864      IF( PRESENT(ldfull) ) THEN   ;   llfull = ldfull 
    18451865      ELSE                         ;   llfull = .FALSE. 
    18461866      ENDIF 
    1847  
     1867      ! 
    18481868      CALL ju2ymds( pjday, iyear, imonth, iday, zsec ) 
    18491869      isec = NINT(zsec) 
    1850  
     1870      ! 
    18511871      IF ( ll24 .AND. isec == 0 ) THEN   ! 00:00 of the next day -> move to 24:00 of the current day 
    18521872         CALL ju2ymds( pjday - 1., iyear, imonth, iday, zsec ) 
    18531873         isec = 86400 
    18541874      ENDIF 
    1855  
     1875      ! 
    18561876      IF( iyear < 10000 ) THEN   ;   clfmt = "i4.4,2i2.2"                ! format used to write the date  
    18571877      ELSE                       ;   WRITE(clfmt, "('i',i1,',2i2.2')") INT(LOG10(REAL(iyear,wp))) + 1 
    18581878      ENDIF 
    1859        
     1879      ! 
    18601880!$AGRIF_DO_NOT_TREAT       
    1861 ! Should be fixed in the conv 
     1881      ! needed in the conv 
    18621882      IF( llfull ) THEN  
    18631883         clfmt = TRIM(clfmt)//",'_',i2.2,':',i2.2,':',i2.2" 
     
    18711891      ENDIF 
    18721892!$AGRIF_END_DO_NOT_TREAT       
    1873  
     1893      ! 
    18741894   END FUNCTION iom_sdate 
    18751895 
    18761896#else 
    1877  
     1897   !!---------------------------------------------------------------------- 
     1898   !!   NOT 'key_iomput'                               a few dummy routines 
     1899   !!---------------------------------------------------------------------- 
    18781900 
    18791901   SUBROUTINE iom_setkt( kt, cdname ) 
     
    18911913 
    18921914   LOGICAL FUNCTION iom_use( cdname ) 
     1915      !!---------------------------------------------------------------------- 
     1916      !!---------------------------------------------------------------------- 
    18931917      CHARACTER(LEN=*), INTENT(in) ::   cdname 
     1918      !!---------------------------------------------------------------------- 
    18941919#if defined key_iomput 
    18951920      iom_use = xios_field_is_active( cdname ) 
Note: See TracChangeset for help on using the changeset viewer.