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 8924 – NEMO

Changeset 8924


Ignore:
Timestamp:
2017-12-06T16:16:55+01:00 (6 years ago)
Author:
timgraham
Message:

Reverted last merge as I can't get the XIOS read branch to compile

Location:
branches/2017/dev_METO_2017/NEMOGCM
Files:
28 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_METO_2017/NEMOGCM/CONFIG/SHARED/namelist_ref

    r8910 r8924  
    5353   ln_clobber  = .true.    !  clobber (overwrite) an existing file 
    5454   nn_chunksz  =       0   !  chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) 
    55    ln_xios_read = .FALSE.  !  use XIOS to read restart file (only for a single file restart) 
    56    nn_wxios = 0      !  use XIOS to write restart file 0 - no, 1 - single file output, 2 - multiple file output 
    5755/ 
    5856! 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90

    r8910 r8924  
    255255           IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 
    256256           IF(lwp) WRITE(numout,*) '~~~~~~~' 
    257            CALL iom_get( numror, 'frc_v', frc_v, ldxios = lrxios  ) 
    258            CALL iom_get( numror, 'frc_t', frc_t, ldxios = lrxios ) 
    259            CALL iom_get( numror, 'frc_s', frc_s, ldxios = lrxios ) 
    260            CALL iom_get( numror, jpdom_autoglo, 'surf_ini', surf_ini, ldxios = lrxios ) ! ice sheet coupling 
    261            CALL iom_get( numror, jpdom_autoglo, 'ssh_ini', ssh_ini(:,:), ldxios = lrxios ) 
    262            CALL iom_get( numror, jpdom_autoglo, 'e3t_ini', e3t_ini(:,:,:), ldxios = lrxios ) 
    263            CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini(:,:,:), ldxios = lrxios ) 
    264            CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini(:,:,:), ldxios = lrxios ) 
     257           CALL iom_get( numror, 'frc_v', frc_v ) 
     258           CALL iom_get( numror, 'frc_t', frc_t ) 
     259           CALL iom_get( numror, 'frc_s', frc_s ) 
    265260           IF( ln_linssh ) THEN 
    266               CALL iom_get( numror, jpdom_autoglo, 'ssh_hc_loc_ini', ssh_hc_loc_ini(:,:), ldxios = lrxios ) 
    267               CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini(:,:), ldxios = lrxios ) 
    268               CALL iom_get( numror, 'frc_wn_t', frc_wn_t, ldxios = lrxios ) 
    269               CALL iom_get( numror, 'frc_wn_s', frc_wn_s, ldxios = lrxios ) 
     261              CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 
     262              CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 
     263           ENDIF 
     264           CALL iom_get( numror, jpdom_autoglo, 'surf_ini', surf_ini ) ! ice sheet coupling 
     265           CALL iom_get( numror, jpdom_autoglo, 'ssh_ini', ssh_ini(:,:) ) 
     266           CALL iom_get( numror, jpdom_autoglo, 'e3t_ini', e3t_ini(:,:,:) ) 
     267           CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini(:,:,:) ) 
     268           CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini(:,:,:) ) 
     269           IF( ln_linssh ) THEN 
     270              CALL iom_get( numror, jpdom_autoglo, 'ssh_hc_loc_ini', ssh_hc_loc_ini(:,:) ) 
     271              CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini(:,:) ) 
    270272           ENDIF 
    271273       ELSE 
     
    306308        IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 
    307309        IF(lwp) WRITE(numout,*) '~~~~~~~' 
    308         IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    309         CALL iom_rstput( kt, nitrst, numrow, 'frc_v'   , frc_v, ldxios = lwxios) 
    310         CALL iom_rstput( kt, nitrst, numrow, 'frc_t'   , frc_t, ldxios = lwxios) 
    311         CALL iom_rstput( kt, nitrst, numrow, 'frc_s'   , frc_s, ldxios = lwxios) 
    312         CALL iom_rstput( kt, nitrst, numrow, 'surf_ini', surf_ini, ldxios = lwxios )      ! ice sheet coupling 
    313         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini(:,:), ldxios = lwxios ) 
    314         CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini(:,:,:), ldxios = lwxios ) 
    315         CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini(:,:,:), ldxios = lwxios ) 
    316         CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini(:,:,:), ldxios = lwxios ) 
     310 
     311        CALL iom_rstput( kt, nitrst, numrow, 'frc_v'   , frc_v     ) 
     312        CALL iom_rstput( kt, nitrst, numrow, 'frc_t'   , frc_t     ) 
     313        CALL iom_rstput( kt, nitrst, numrow, 'frc_s'   , frc_s     ) 
    317314        IF( ln_linssh ) THEN 
    318            CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini(:,:), ldxios = lwxios ) 
    319            CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini(:,:), ldxios = lwxios ) 
    320            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t, ldxios = lwxios) 
    321            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s, ldxios = lwxios ) 
     315           CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 
     316           CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 
     317        ENDIF 
     318        CALL iom_rstput( kt, nitrst, numrow, 'surf_ini', surf_ini )      ! ice sheet coupling 
     319        CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini(:,:) ) 
     320        CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini(:,:,:) ) 
     321        CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini(:,:,:) ) 
     322        CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini(:,:,:) ) 
     323        IF( ln_linssh ) THEN 
     324           CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini(:,:) ) 
     325           CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini(:,:) ) 
    322326        ENDIF 
    323327        ! 
    324         IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    325328     ENDIF 
    326329     ! 
     
    364367      IF( .NOT. ln_diahsb )   RETURN 
    365368 
    366       IF(lwxios) THEN 
    367 ! define variables in restart file when writing with XIOS 
    368         CALL iom_set_rstw_var_active('frc_v') 
    369         CALL iom_set_rstw_var_active('frc_t') 
    370         CALL iom_set_rstw_var_active('frc_s') 
    371         CALL iom_set_rstw_var_active('surf_ini') 
    372         CALL iom_set_rstw_var_active('ssh_ini') 
    373         CALL iom_set_rstw_var_active('e3t_ini') 
    374         CALL iom_set_rstw_var_active('hc_loc_ini') 
    375         CALL iom_set_rstw_var_active('sc_loc_ini') 
    376         IF( ln_linssh ) THEN 
    377            CALL iom_set_rstw_var_active('ssh_hc_loc_ini') 
    378            CALL iom_set_rstw_var_active('ssh_sc_loc_ini') 
    379            CALL iom_set_rstw_var_active('frc_wn_t') 
    380            CALL iom_set_rstw_var_active('frc_wn_s') 
    381         ENDIF 
    382       ENDIF 
    383369      ! ------------------- ! 
    384370      ! 1 - Allocate memory ! 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90

    r8910 r8924  
    143143      CALL day( nit000 ) 
    144144      ! 
    145       IF( lwxios ) THEN 
    146 ! define variables in restart file when writing with XIOS 
    147           CALL iom_set_rstw_var_active('kt') 
    148           CALL iom_set_rstw_var_active('ndastp') 
    149           CALL iom_set_rstw_var_active('adatrj') 
    150           CALL iom_set_rstw_var_active('ntime') 
    151       ENDIF 
    152  
    153145   END SUBROUTINE day_init 
    154146 
     
    326318         IF( iom_varid( numror, 'kt', ldstop = .FALSE. ) > 0 ) THEN 
    327319            ! Get Calendar informations 
    328             CALL iom_get( numror, 'kt', zkt, ldxios = lrxios )   ! last time-step of previous run 
     320            CALL iom_get( numror, 'kt', zkt )   ! last time-step of previous run 
    329321            IF(lwp) THEN 
    330322               WRITE(numout,*) ' *** Info read in restart : ' 
     
    345337            IF ( nrstdt == 2 ) THEN 
    346338               ! read the parameters corresponding to nit000 - 1 (last time step of previous run) 
    347                CALL iom_get( numror, 'ndastp', zndastp, ldxios = lrxios ) 
     339               CALL iom_get( numror, 'ndastp', zndastp ) 
    348340               ndastp = NINT( zndastp ) 
    349                CALL iom_get( numror, 'adatrj', adatrj , ldxios = lrxios ) 
    350           CALL iom_get( numror, 'ntime' , ktime  , ldxios = lrxios ) 
     341               CALL iom_get( numror, 'adatrj', adatrj ) 
     342          CALL iom_get( numror, 'ntime', ktime ) 
    351343          nn_time0=INT(ktime) 
    352344               ! calculate start time in hours and minutes 
     
    407399         ENDIF 
    408400         ! calendar control 
    409          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    410          CALL iom_rstput( kt, nitrst, numrow, 'kt'     , REAL( kt    , wp)  , ldxios = lwxios )   ! time-step 
    411          CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp)  , ldxios = lwxios )   ! date 
    412          CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj             , ldxios = lwxios            )   ! number of elapsed days since 
    413          !                                                                                                   ! the begining of the run [s] 
    414     CALL iom_rstput( kt, nitrst, numrow, 'ntime'  , REAL( nn_time0, wp), ldxios = lwxios ) ! time 
    415          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     401         CALL iom_rstput( kt, nitrst, numrow, 'kt'     , REAL( kt    , wp) )   ! time-step 
     402         CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp) )   ! date 
     403         CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj            )   ! number of elapsed days since 
     404         !                                                                     ! the begining of the run [s] 
     405    CALL iom_rstput( kt, nitrst, numrow, 'ntime'  , REAL( nn_time0, wp) ) ! time 
    416406      ENDIF 
    417407      ! 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r8910 r8924  
    6161CONTAINS 
    6262 
    63    SUBROUTINE dom_init(cdstr) 
     63   SUBROUTINE dom_init 
    6464      !!---------------------------------------------------------------------- 
    6565      !!                  ***  ROUTINE dom_init  *** 
     
    7979      INTEGER ::   iconf = 0    ! local integers 
    8080      CHARACTER (len=64) ::   cform = "(A12, 3(A13, I7))"  
    81       CHARACTER (len=*), INTENT(IN) :: cdstr                  ! model: NEMO or SAS. Determines core restart variables 
    8281      INTEGER , DIMENSION(jpi,jpj) ::   ik_top , ik_bot       ! top and bottom ocean level 
    8382      REAL(wp), DIMENSION(jpi,jpj) ::   z1_hu_0, z1_hv_0 
     
    129128      CALL dom_glo                     ! global domain versus local domain 
    130129      CALL dom_nam                     ! read namelist ( namrun, namdom ) 
    131       ! 
    132       IF( lwxios ) THEN 
    133 !define names for restart write and set core output (restart.F90) 
    134          CALL iom_set_rst_vars(rst_wfields) 
    135          CALL iom_set_rstw_core(cdstr) 
    136       ENDIF 
    137 !reset namelist for SAS 
    138       IF(cdstr == 'SAS') THEN 
    139          IF(lrxios) THEN 
    140                IF(lwp) write(numout,*) 'Disable reading restart file using XIOS for SAS' 
    141                lrxios = .FALSE. 
    142          ENDIF 
    143       ENDIF 
    144       ! 
    145130      CALL dom_clo( cn_cfg, nn_cfg )   ! Closed seas and lake 
    146131      CALL dom_hgr                     ! Horizontal mesh 
     
    300285         &             nn_it000, nn_itend , nn_date0    , nn_time0     , nn_leapy  , nn_istate ,     & 
    301286         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, nn_euler  ,     & 
    302          &             ln_cfmeta, ln_iscpl, ln_xios_read, nn_wxios 
     287         &             ln_cfmeta, ln_iscpl 
    303288      NAMELIST/namdom/ ln_linssh, nn_closea, nn_msh, rn_isfhmin, rn_rdt, rn_atfp, ln_crs 
    304289#if defined key_netcdf4 
     
    308293      !!---------------------------------------------------------------------- 
    309294      ! 
    310       ln_xios_read = .false.            ! set in case ln_xios_read is not in namelist 
    311       nn_wxios = 0 
    312295      REWIND( numnam_ref )              ! Namelist namrun in reference namelist : Parameters of the run 
    313296      READ  ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) 
     
    350333         WRITE(numout,*) '      NetCDF chunksize (bytes)        nn_chunksz = ', nn_chunksz 
    351334         WRITE(numout,*) '      IS coupling at the restart step ln_iscpl   = ', ln_iscpl 
    352          IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    353             WRITE(numout,*) '      READ restart for a single file using XIOS ln_xios_read =', ln_xios_read 
    354             WRITE(numout,*) '      Write restart using XIOS        nn_wxios   = ', nn_wxios 
    355          ELSE 
    356             WRITE(numout,*) "      AGRIF: nn_wxios will be ingored. See setting for parent" 
    357             WRITE(numout,*) "      AGRIF: ln_xios_read will be ingored. See setting for parent" 
    358          ENDIF 
    359335      ENDIF 
    360336 
     
    437413      rdt       = rn_rdt 
    438414 
    439       IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    440          lrxios = ln_xios_read.AND.ln_rstart 
    441 !set output file type for XIOS based on NEMO namelist  
    442          IF (nn_wxios > 0) lwxios = .TRUE.  
    443          nxioso = nn_wxios 
    444       ENDIF 
    445  
    446415#if defined key_netcdf4 
    447416      !                             ! NetCDF 4 case   ("key_netcdf4" defined) 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r8910 r8924  
    242242      ENDIF 
    243243      ! 
    244       IF(lwxios) THEN 
    245 ! define variables in restart file when writing with XIOS 
    246          CALL iom_set_rstw_var_active('e3t_b') 
    247          CALL iom_set_rstw_var_active('e3t_n') 
    248          !                                           ! ----------------------- ! 
    249          IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN  ! z_tilde and layer cases ! 
    250             !                                        ! ----------------------- ! 
    251             CALL iom_set_rstw_var_active('tilde_e3t_b') 
    252             CALL iom_set_rstw_var_active('tilde_e3t_n') 
    253          END IF 
    254          !                                           ! -------------!     
    255          IF( ln_vvl_ztilde ) THEN                    ! z_tilde case ! 
    256             !                                        ! ------------ ! 
    257             CALL iom_set_rstw_var_active('hdiv_lf') 
    258          ENDIF 
    259          ! 
    260       ENDIF 
    261  
    262244      IF( nn_timing == 1 )  CALL timing_stop('dom_vvl_init') 
    263245      ! 
     
    817799         IF( ln_rstart ) THEN                   !* Read the restart file 
    818800            CALL rst_read_open                  !  open the restart file if necessary 
    819             CALL iom_get( numror, jpdom_autoglo, 'sshn'   , sshn, ldxios = lrxios    ) 
     801            CALL iom_get( numror, jpdom_autoglo, 'sshn'   , sshn    ) 
    820802            ! 
    821803            id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) 
     
    828810            !                             ! --------- ! 
    829811            IF( MIN( id1, id2 ) > 0 ) THEN       ! all required arrays exist 
    830                CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t_b(:,:,:), ldxios = lrxios ) 
    831                CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t_n(:,:,:), ldxios = lrxios ) 
     812               CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t_b(:,:,:) ) 
     813               CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t_n(:,:,:) ) 
    832814               ! needed to restart if land processor not computed  
    833815               IF(lwp) write(numout,*) 'dom_vvl_rst : e3t_b and e3t_n found in restart files' 
     
    843825               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    844826               IF(lwp) write(numout,*) 'neuler is forced to 0' 
    845                CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t_b(:,:,:), ldxios = lrxios ) 
     827               CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t_b(:,:,:) ) 
    846828               e3t_n(:,:,:) = e3t_b(:,:,:) 
    847829               neuler = 0 
     
    850832               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    851833               IF(lwp) write(numout,*) 'neuler is forced to 0' 
    852                CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t_n(:,:,:), ldxios = lrxios ) 
     834               CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t_n(:,:,:) ) 
    853835               e3t_b(:,:,:) = e3t_n(:,:,:) 
    854836               neuler = 0 
     
    875857               !                          ! ----------------------- ! 
    876858               IF( MIN( id3, id4 ) > 0 ) THEN  ! all required arrays exist 
    877                   CALL iom_get( numror, jpdom_autoglo, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios ) 
    878                   CALL iom_get( numror, jpdom_autoglo, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios ) 
     859                  CALL iom_get( numror, jpdom_autoglo, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 
     860                  CALL iom_get( numror, jpdom_autoglo, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 
    879861               ELSE                            ! one at least array is missing 
    880862                  tilde_e3t_b(:,:,:) = 0.0_wp 
     
    885867                  !                       ! ------------ ! 
    886868                  IF( id5 > 0 ) THEN  ! required array exists 
    887                      CALL iom_get( numror, jpdom_autoglo, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios ) 
     869                     CALL iom_get( numror, jpdom_autoglo, 'hdiv_lf', hdiv_lf(:,:,:) ) 
    888870                  ELSE                ! array is missing 
    889871                     hdiv_lf(:,:,:) = 0.0_wp 
     
    946928         !                                   ! =================== 
    947929         IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 
    948          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    949930         !                                           ! --------- ! 
    950931         !                                           ! all cases ! 
    951932         !                                           ! --------- ! 
    952          CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t_b(:,:,:), ldxios = lwxios ) 
    953          CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:), ldxios = lwxios ) 
     933         CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t_b(:,:,:) ) 
     934         CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:) ) 
    954935         !                                           ! ----------------------- ! 
    955936         IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN  ! z_tilde and layer cases ! 
    956937            !                                        ! ----------------------- ! 
    957             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lwxios) 
    958             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lwxios) 
     938            CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 
     939            CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 
    959940         END IF 
    960941         !                                           ! -------------!     
    961942         IF( ln_vvl_ztilde ) THEN                    ! z_tilde case ! 
    962943            !                                        ! ------------ ! 
    963             CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lwxios) 
     944            CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:) ) 
    964945         ENDIF 
    965946         ! 
    966          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    967947      ENDIF 
    968948      ! 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/DOM/iscplrst.F90

    r8910 r8924  
    6464 
    6565      !! get restart variable 
    66       CALL iom_get( numror, jpdom_autoglo, 'tmask'  , ztmask_b, ldxios = lrxios   ) ! need to extrapolate T/S 
    67       CALL iom_get( numror, jpdom_autoglo, 'umask'  , zumask_b, ldxios = lrxios   ) ! need to correct barotropic velocity 
    68       CALL iom_get( numror, jpdom_autoglo, 'vmask'  , zvmask_b, ldxios = lrxios   ) ! need to correct barotropic velocity 
    69       CALL iom_get( numror, jpdom_autoglo, 'smask'  , zsmask_b, ldxios = lrxios   ) ! need to correct barotropic velocity 
    70       CALL iom_get( numror, jpdom_autoglo, 'e3t_n'  , ze3t_b(:,:,:), ldxios = lrxios )  ! need to compute temperature correction 
    71       CALL iom_get( numror, jpdom_autoglo, 'e3u_n'  , ze3u_b(:,:,:), ldxios = lrxios )  ! need to correct barotropic velocity 
    72       CALL iom_get( numror, jpdom_autoglo, 'e3v_n'  , ze3v_b(:,:,:), ldxios = lrxios )  ! need to correct barotropic velocity 
    73       CALL iom_get( numror, jpdom_autoglo, 'gdepw_n', zdepw_b(:,:,:), ldxios = lrxios ) ! need to interpol vertical profile (vvl) 
     66      CALL iom_get( numror, jpdom_autoglo, 'tmask'  , ztmask_b   ) ! need to extrapolate T/S 
     67      CALL iom_get( numror, jpdom_autoglo, 'umask'  , zumask_b   ) ! need to correct barotropic velocity 
     68      CALL iom_get( numror, jpdom_autoglo, 'vmask'  , zvmask_b   ) ! need to correct barotropic velocity 
     69      CALL iom_get( numror, jpdom_autoglo, 'smask'  , zsmask_b   ) ! need to correct barotropic velocity 
     70      CALL iom_get( numror, jpdom_autoglo, 'e3t_n'  , ze3t_b(:,:,:) )  ! need to compute temperature correction 
     71      CALL iom_get( numror, jpdom_autoglo, 'e3u_n'  , ze3u_b(:,:,:) )  ! need to correct barotropic velocity 
     72      CALL iom_get( numror, jpdom_autoglo, 'e3v_n'  , ze3v_b(:,:,:) )  ! need to correct barotropic velocity 
     73      CALL iom_get( numror, jpdom_autoglo, 'gdepw_n', zdepw_b(:,:,:) ) ! need to interpol vertical profile (vvl) 
    7474 
    7575      !! read namelist 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r8910 r8924  
    5656   USE asminc          ! Assimilation increment 
    5757#endif 
     58 
    5859 
    5960   IMPLICIT NONE 
     
    11971198      ! 
    11981199      IF( TRIM(cdrw) == 'READ' ) THEN 
    1199          CALL iom_get( numror, jpdom_autoglo, 'ub2_b'  , ub2_b  (:,:), ldxios = lrxios )    
    1200          CALL iom_get( numror, jpdom_autoglo, 'vb2_b'  , vb2_b  (:,:), ldxios = lrxios )  
     1200         CALL iom_get( numror, jpdom_autoglo, 'ub2_b'  , ub2_b  (:,:) )    
     1201         CALL iom_get( numror, jpdom_autoglo, 'vb2_b'  , vb2_b  (:,:) )  
    12011202         IF( .NOT.ln_bt_av ) THEN 
    1202             CALL iom_get( numror, jpdom_autoglo, 'sshbb_e'  , sshbb_e(:,:), ldxios = lrxios )    
    1203             CALL iom_get( numror, jpdom_autoglo, 'ubb_e'    ,   ubb_e(:,:), ldxios = lrxios )    
    1204             CALL iom_get( numror, jpdom_autoglo, 'vbb_e'    ,   vbb_e(:,:), ldxios = lrxios ) 
    1205             CALL iom_get( numror, jpdom_autoglo, 'sshb_e'   ,  sshb_e(:,:), ldxios = lrxios )  
    1206             CALL iom_get( numror, jpdom_autoglo, 'ub_e'     ,    ub_e(:,:), ldxios = lrxios )    
    1207             CALL iom_get( numror, jpdom_autoglo, 'vb_e'     ,    vb_e(:,:), ldxios = lrxios ) 
     1203            CALL iom_get( numror, jpdom_autoglo, 'sshbb_e'  , sshbb_e(:,:) )    
     1204            CALL iom_get( numror, jpdom_autoglo, 'ubb_e'    ,   ubb_e(:,:) )    
     1205            CALL iom_get( numror, jpdom_autoglo, 'vbb_e'    ,   vbb_e(:,:) ) 
     1206            CALL iom_get( numror, jpdom_autoglo, 'sshb_e'   ,  sshb_e(:,:) )  
     1207            CALL iom_get( numror, jpdom_autoglo, 'ub_e'     ,    ub_e(:,:) )    
     1208            CALL iom_get( numror, jpdom_autoglo, 'vb_e'     ,    vb_e(:,:) ) 
    12081209         ENDIF 
    12091210#if defined key_agrif 
    12101211         ! Read time integrated fluxes 
    12111212         IF ( .NOT.Agrif_Root() ) THEN 
    1212             CALL iom_get( numror, jpdom_autoglo, 'ub2_i_b'  , ub2_i_b(:,:), ldxios = lrxios )    
    1213             CALL iom_get( numror, jpdom_autoglo, 'vb2_i_b'  , vb2_i_b(:,:), ldxios = lrxios ) 
     1213            CALL iom_get( numror, jpdom_autoglo, 'ub2_i_b'  , ub2_i_b(:,:) )    
     1214            CALL iom_get( numror, jpdom_autoglo, 'vb2_i_b'  , vb2_i_b(:,:) ) 
    12141215         ENDIF 
    12151216#endif 
    12161217      ! 
    12171218      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN 
    1218          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    1219          CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:), ldxios = lwxios ) 
    1220          CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:), ldxios = lwxios ) 
     1219         CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:) ) 
     1220         CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:) ) 
    12211221         ! 
    12221222         IF (.NOT.ln_bt_av) THEN 
    1223             CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e'  , sshbb_e(:,:), ldxios = lwxios )  
    1224             CALL iom_rstput( kt, nitrst, numrow, 'ubb_e'    ,   ubb_e(:,:), ldxios = lwxios ) 
    1225             CALL iom_rstput( kt, nitrst, numrow, 'vbb_e'    ,   vbb_e(:,:), ldxios = lwxios ) 
    1226             CALL iom_rstput( kt, nitrst, numrow, 'sshb_e'   ,  sshb_e(:,:), ldxios = lwxios ) 
    1227             CALL iom_rstput( kt, nitrst, numrow, 'ub_e'     ,    ub_e(:,:), ldxios = lwxios ) 
    1228             CALL iom_rstput( kt, nitrst, numrow, 'vb_e'     ,    vb_e(:,:), ldxios = lwxios ) 
     1223            CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e'  , sshbb_e(:,:) )  
     1224            CALL iom_rstput( kt, nitrst, numrow, 'ubb_e'    ,   ubb_e(:,:) ) 
     1225            CALL iom_rstput( kt, nitrst, numrow, 'vbb_e'    ,   vbb_e(:,:) ) 
     1226            CALL iom_rstput( kt, nitrst, numrow, 'sshb_e'   ,  sshb_e(:,:) ) 
     1227            CALL iom_rstput( kt, nitrst, numrow, 'ub_e'     ,    ub_e(:,:) ) 
     1228            CALL iom_rstput( kt, nitrst, numrow, 'vb_e'     ,    vb_e(:,:) ) 
    12291229         ENDIF 
    12301230#if defined key_agrif 
    12311231         ! Save time integrated fluxes 
    12321232         IF ( .NOT.Agrif_Root() ) THEN 
    1233             CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b'  , ub2_i_b(:,:), ldxios = lwxios ) 
    1234             CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b'  , vb2_i_b(:,:), ldxios = lwxios ) 
     1233            CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b'  , ub2_i_b(:,:) ) 
     1234            CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b'  , vb2_i_b(:,:) ) 
    12351235         ENDIF 
    12361236#endif 
    1237          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    12381237      ENDIF 
    12391238      ! 
     
    13231322      CALL wrk_dealloc( jpi,jpj,   zcu ) 
    13241323      ! 
    1325       IF( lwxios ) THEN 
    1326 ! define variables in restart file when writing with XIOS 
    1327          CALL iom_set_rstw_var_active('ub2_b') 
    1328          CALL iom_set_rstw_var_active('vb2_b') 
    1329          ! 
    1330          IF (.NOT.ln_bt_av) THEN 
    1331             CALL iom_set_rstw_var_active('sshbb_e') 
    1332             CALL iom_set_rstw_var_active('ubb_e') 
    1333             CALL iom_set_rstw_var_active('vbb_e') 
    1334             CALL iom_set_rstw_var_active('sshb_e') 
    1335             CALL iom_set_rstw_var_active('ub_e') 
    1336             CALL iom_set_rstw_var_active('vb_e') 
    1337          ENDIF 
    1338 #if defined key_agrif 
    1339          ! Save time integrated fluxes 
    1340          IF ( .NOT.Agrif_Root() ) THEN 
    1341             CALL iom_set_rstw_var_active('ub2_i_b') 
    1342             CALL iom_set_rstw_var_active('vb2_i_b') 
    1343          ENDIF 
    1344 #endif 
    1345       ENDIF 
    1346  
    13471324   END SUBROUTINE dyn_spg_ts_init 
    13481325 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90

    r8910 r8924  
    4444   LOGICAL       ::   ln_clobber       !: clobber (overwrite) an existing file 
    4545   INTEGER       ::   nn_chunksz       !: chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) 
    46    LOGICAL       ::   ln_xios_read     !: use xios to read single file restart 
    47    INTEGER       ::   nn_wxios         !: write resart using xios 0 - no, 1 - single, 2 - multiple file output 
    4846 
    4947#if defined key_netcdf4 
     
    152150   LOGICAL       ::   lsp_area = .TRUE.     !: to make a control print over a specific area 
    153151   CHARACTER(lc) ::   cxios_context         !: context name used in xios 
    154    CHARACTER(lc) ::   crxios_context         !: context name used in xios to read restart 
    155    CHARACTER(lc) ::   cwxios_context        !: context name used in xios to write restart file 
    156152 
    157153   !!---------------------------------------------------------------------- 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r8910 r8924  
    4444   USE ioipsl, ONLY :  ju2ymds    ! for calendar 
    4545   USE crs             ! Grid coarsening 
    46    USE lib_fortran  
    47    USE diurnal_bulk, ONLY : ln_diurnal_only, ln_diurnal 
    4846 
    4947   IMPLICIT NONE 
     
    6563   PRIVATE iom_set_domain_attr, iom_set_axis_attr, iom_set_field_attr, iom_set_file_attr, iom_get_file_attr, iom_set_grid_attr 
    6664   PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_update_file_name, iom_sdate 
    67    PRIVATE iom_set_rst_context, iom_set_rstw_active, iom_set_rstr_active 
    68    PUBLIC iom_set_rstw_var_active, iom_set_rst_vars 
    6965# endif 
    7066 
     
    9389CONTAINS 
    9490 
    95    SUBROUTINE iom_init( cdname, fname )  
     91   SUBROUTINE iom_init( cdname )  
    9692      !!---------------------------------------------------------------------- 
    9793      !!                     ***  ROUTINE   *** 
     
    10197      !!---------------------------------------------------------------------- 
    10298      CHARACTER(len=*), INTENT(in)  :: cdname 
    103       CHARACTER(len=*), OPTIONAL, INTENT(in)  :: fname 
    10499#if defined key_iomput 
    105100 
    106101      TYPE(xios_duration) :: dtime    = xios_duration(0, 0, 0, 0, 0, 0) 
    107102      TYPE(xios_date)     :: start_date 
    108       CHARACTER(len=lc) :: clname 
     103      CHARACTER(len=10) :: clname 
    109104      INTEGER           :: ji, jkmin 
    110       LOGICAL :: llrst_context              ! is context related to restart 
    111105      ! 
    112106      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zt_bnds, zw_bnds 
     
    119113      CALL xios_context_initialize(TRIM(clname), mpi_comm_opa) 
    120114      CALL iom_swap( cdname ) 
    121       llrst_context =  (TRIM(cdname) == TRIM(crxios_context) .OR. TRIM(cdname) == TRIM(cwxios_context)) 
     115 
    122116 
    123117      ! Calendar type is now defined in xml file  
     
    132126 
    133127      ! horizontal grid definition 
    134       IF(.NOT.llrst_context) CALL set_scalar 
     128      CALL set_scalar 
    135129 
    136130      IF( TRIM(cdname) == TRIM(cxios_context) ) THEN   
    137          CALL set_grid( "T", glamt, gphit, .FALSE. )  
    138          CALL set_grid( "U", glamu, gphiu, .FALSE. ) 
    139          CALL set_grid( "V", glamv, gphiv, .FALSE. ) 
    140          CALL set_grid( "W", glamt, gphit, .FALSE. ) 
     131         CALL set_grid( "T", glamt, gphit )  
     132         CALL set_grid( "U", glamu, gphiu ) 
     133         CALL set_grid( "V", glamv, gphiv ) 
     134         CALL set_grid( "W", glamt, gphit ) 
    141135         CALL set_grid_znl( gphit ) 
    142136         ! 
     
    156150         CALL dom_grid_crs   ! Save the parent grid information  & Switch to coarse grid domain 
    157151         ! 
    158          CALL set_grid( "T", glamt_crs, gphit_crs, .FALSE. )  
    159          CALL set_grid( "U", glamu_crs, gphiu_crs, .FALSE. )  
    160          CALL set_grid( "V", glamv_crs, gphiv_crs, .FALSE. )  
    161          CALL set_grid( "W", glamt_crs, gphit_crs, .FALSE. )  
     152         CALL set_grid( "T", glamt_crs, gphit_crs )  
     153         CALL set_grid( "U", glamu_crs, gphiu_crs )  
     154         CALL set_grid( "V", glamv_crs, gphiv_crs )  
     155         CALL set_grid( "W", glamt_crs, gphit_crs )  
    162156         CALL set_grid_znl( gphit_crs ) 
    163157          ! 
    164158         CALL dom_grid_glo   ! Return to parent grid domain 
    165159         ! 
    166          IF( ln_cfmeta .AND. .NOT. llrst_context) THEN   ! Add additional grid metadata 
     160         IF( ln_cfmeta ) THEN   ! Add additional grid metadata 
    167161            CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 
    168162            CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) 
     
    177171 
    178172      ! vertical grid definition 
    179       IF(.NOT.llrst_context) THEN 
    180           CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 
    181           CALL iom_set_axis_attr( "depthu", paxis = gdept_1d ) 
    182           CALL iom_set_axis_attr( "depthv", paxis = gdept_1d ) 
    183           CALL iom_set_axis_attr( "depthw", paxis = gdepw_1d ) 
    184  
    185           ! Add vertical grid bounds 
    186           jkmin = MIN(2,jpk)  ! in case jpk=1 (i.e. sas2D) 
    187           zt_bnds(2,:        ) = gdept_1d(:) 
    188           zt_bnds(1,jkmin:jpk) = gdept_1d(1:jpkm1) 
    189           zt_bnds(1,1        ) = gdept_1d(1) - e3w_1d(1) 
    190           zw_bnds(1,:        ) = gdepw_1d(:) 
    191           zw_bnds(2,1:jpkm1  ) = gdepw_1d(jkmin:jpk) 
    192           zw_bnds(2,jpk:     ) = gdepw_1d(jpk) + e3t_1d(jpk) 
    193           CALL iom_set_axis_attr( "deptht", bounds=zt_bnds ) 
    194           CALL iom_set_axis_attr( "depthu", bounds=zt_bnds ) 
    195           CALL iom_set_axis_attr( "depthv", bounds=zt_bnds ) 
    196           CALL iom_set_axis_attr( "depthw", bounds=zw_bnds ) 
     173      CALL iom_set_axis_attr( "deptht", gdept_1d ) 
     174      CALL iom_set_axis_attr( "depthu", gdept_1d ) 
     175      CALL iom_set_axis_attr( "depthv", gdept_1d ) 
     176      CALL iom_set_axis_attr( "depthw", gdepw_1d ) 
     177 
     178      ! Add vertical grid bounds 
     179      jkmin = MIN(2,jpk)  ! in case jpk=1 (i.e. sas2D) 
     180      zt_bnds(2,:        ) = gdept_1d(:) 
     181      zt_bnds(1,jkmin:jpk) = gdept_1d(1:jpkm1) 
     182      zt_bnds(1,1        ) = gdept_1d(1) - e3w_1d(1) 
     183      zw_bnds(1,:        ) = gdepw_1d(:) 
     184      zw_bnds(2,1:jpkm1  ) = gdepw_1d(jkmin:jpk) 
     185      zw_bnds(2,jpk:     ) = gdepw_1d(jpk) + e3t_1d(jpk) 
     186      CALL iom_set_axis_attr( "deptht", bounds=zt_bnds ) 
     187      CALL iom_set_axis_attr( "depthu", bounds=zt_bnds ) 
     188      CALL iom_set_axis_attr( "depthv", bounds=zt_bnds ) 
     189      CALL iom_set_axis_attr( "depthw", bounds=zw_bnds ) 
    197190 
    198191 
    199192# if defined key_floats 
    200           CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,nfloat) /) ) 
     193      CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,nfloat) /) ) 
    201194# endif 
    202195#if defined key_lim3 || defined key_lim2 
    203           CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
     196      CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
    204197#endif 
    205           CALL iom_set_axis_attr( "icbcla", class_num ) 
    206           CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) ) 
    207           CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) ) 
    208       ENDIF    
     198      CALL iom_set_axis_attr( "icbcla", class_num ) 
     199      CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) ) 
     200      CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) ) 
     201       
    209202      ! automatic definitions of some of the xml attributs 
    210       IF( TRIM(cdname) == TRIM(crxios_context) ) THEN 
    211 !set names of the fields in restart file IF using XIOS to read data 
    212           CALL iom_set_rst_context() 
    213           CALL iom_set_rst_vars(rst_rfields) 
    214 !set which fields are to be read from restart file 
    215           CALL iom_set_rstr_active() 
    216       ELSE IF( TRIM(cdname) == TRIM(cwxios_context) ) THEN 
    217 !set names of the fields in restart file IF using XIOS to write data 
    218           CALL iom_set_rst_context() 
    219           CALL iom_set_rst_vars(rst_wfields) 
    220 !set which fields are to be read from restart file 
    221           CALL iom_set_rstw_active(fname) 
    222       ELSE 
    223           CALL set_xmlatt 
    224       ENDIF 
     203      CALL set_xmlatt 
    225204 
    226205      ! end file definition 
     
    234213 
    235214#endif 
    236  
     215       
    237216   END SUBROUTINE iom_init 
    238217 
    239    SUBROUTINE iom_set_rstw_var_active(field) 
    240       !!--------------------------------------------------------------------- 
    241       !!                   ***  SUBROUTINE  iom_set_rstw_var_active  *** 
    242       !! 
    243       !! ** Purpose :  enable variable in restart file when writing with XIOS  
    244       !!--------------------------------------------------------------------- 
    245    CHARACTER(len = *), INTENT(IN) :: field 
    246    INTEGER :: i 
    247    LOGICAL :: llis_set 
    248  
    249    llis_set = .FALSE. 
    250  
    251    DO i = 1, max_rst_fields 
    252        IF(TRIM(rst_wfields(i)%vname) == field) THEN  
    253           rst_wfields(i)%active = .TRUE. 
    254           llis_set = .TRUE. 
    255           EXIT 
    256        ENDIF 
    257    ENDDO 
    258 !Warn if variable is not in defined in rst_wfields 
    259    IF(.NOT.llis_set) THEN 
    260       IF(lwp) THEN 
    261          write(numout,cform_err) 
    262          write(numout,*) 'iom_set_rstw_var_active: variable ', field ,' is available for writing but not defined'  
    263       ENDIF 
    264         nstop = nstop + 1 
    265    ENDIF 
    266  
    267    END SUBROUTINE iom_set_rstw_var_active 
    268  
    269    SUBROUTINE iom_set_rstr_active() 
    270       !!--------------------------------------------------------------------- 
    271       !!                   ***  SUBROUTINE  iom_set_rstr_active  *** 
    272       !! 
    273       !! ** Purpose :  define file name in XIOS context for reading restart file, 
    274       !!               enable variables present in restart file for reading with XIOS  
    275       !!--------------------------------------------------------------------- 
    276  
    277 !sets enabled = .TRUE. for each field in restart file 
    278    CHARACTER(len=256) :: rst_file 
    279    TYPE(xios_field) :: field_hdl 
    280    TYPE(xios_file) :: file_hdl 
    281    TYPE(xios_filegroup) :: filegroup_hdl 
    282    INTEGER :: i 
    283    CHARACTER(lc)  ::   clpath 
    284  
    285         clpath = TRIM(cn_ocerst_indir) 
    286         IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 
    287         IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    288            rst_file = TRIM(clpath)//TRIM(cn_ocerst_in) 
    289         ELSE 
    290            rst_file = TRIM(clpath)//'1_'//TRIM(cn_ocerst_in) 
    291         ENDIF 
    292 !set name of the restart file and enable available fields 
    293         if(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS) to: ',rst_file 
    294         CALL xios_get_handle("file_definition", filegroup_hdl ) 
    295         CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart') 
    296         CALL xios_set_file_attr( "rrestart", name=trim(rst_file), type="one_file", & 
    297              par_access="collective", enabled=.TRUE., mode="read",                 & 
    298              output_freq=xios_timestep) 
    299 !define variables for restart context 
    300         DO i = 1, max_rst_fields 
    301          IF( TRIM(rst_rfields(i)%vname) /= "NO_NAME") THEN 
    302            IF( iom_varid( numror, TRIM(rst_rfields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN 
    303                 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_rfields(i)%vname)) 
    304                 SELECT CASE (TRIM(rst_rfields(i)%grid)) 
    305                  CASE ("grid_N_3D") 
    306                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 
    307                         domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    308                  CASE ("grid_N") 
    309                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 
    310                         domain_ref="grid_N", operation = "instant")  
    311                 CASE ("grid_vector") 
    312                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 
    313                          axis_ref="deptht", operation = "instant") 
    314                  CASE ("grid_scalar") 
    315                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 
    316                         scalar_ref = "grid_scalar", operation = "instant") 
    317                 END SELECT 
    318                 IF(lwp) WRITE(numout,*) 'XIOS read: ', TRIM(rst_rfields(i)%vname), ' enabled in ', TRIM(rst_file) 
    319            ENDIF 
    320          ENDIF 
    321         END DO 
    322    END SUBROUTINE iom_set_rstr_active 
    323  
    324    SUBROUTINE iom_set_rstw_core(cdmdl) 
    325       !!--------------------------------------------------------------------- 
    326       !!                   ***  SUBROUTINE  iom_set_rstw_core  *** 
    327       !! 
    328       !! ** Purpose :  set variables which are always in restart file  
    329       !!--------------------------------------------------------------------- 
    330    CHARACTER (len=*), INTENT (IN) :: cdmdl ! model OPA or SAS 
    331     
    332    IF(cdmdl == "OPA") THEN 
    333 !from restart.F90 
    334    CALL iom_set_rstw_var_active("rdt") 
    335    IF ( .NOT. ln_diurnal_only ) THEN 
    336         CALL iom_set_rstw_var_active('ub'  ) 
    337         CALL iom_set_rstw_var_active('vb'  ) 
    338         CALL iom_set_rstw_var_active('tb'  ) 
    339         CALL iom_set_rstw_var_active('sb'  ) 
    340         CALL iom_set_rstw_var_active('sshb') 
    341         ! 
    342         CALL iom_set_rstw_var_active('un'  ) 
    343         CALL iom_set_rstw_var_active('vn'  ) 
    344         CALL iom_set_rstw_var_active('tn'  ) 
    345         CALL iom_set_rstw_var_active('sn'  ) 
    346         CALL iom_set_rstw_var_active('sshn') 
    347         CALL iom_set_rstw_var_active('rhop') 
    348      ! extra variable needed for the ice sheet coupling 
    349         IF ( ln_iscpl ) THEN 
    350              CALL iom_set_rstw_var_active('tmask') 
    351              CALL iom_set_rstw_var_active('umask') 
    352              CALL iom_set_rstw_var_active('vmask') 
    353              CALL iom_set_rstw_var_active('smask') 
    354              CALL iom_set_rstw_var_active('e3t_n') 
    355              CALL iom_set_rstw_var_active('e3u_n') 
    356              CALL iom_set_rstw_var_active('e3v_n') 
    357              CALL iom_set_rstw_var_active('gdepw_n') 
    358         END IF 
    359       ENDIF 
    360       IF(ln_diurnal) CALL iom_set_rstw_var_active('Dsst') 
    361 !from trasbc.F90 
    362          CALL iom_set_rstw_var_active('sbc_hc_b') 
    363          CALL iom_set_rstw_var_active('sbc_sc_b') 
    364    ENDIF 
    365    END SUBROUTINE iom_set_rstw_core 
    366  
    367    SUBROUTINE iom_set_rst_vars(fields) 
    368       !!--------------------------------------------------------------------- 
    369       !!                   ***  SUBROUTINE  iom_set_rstr_active  *** 
    370       !! 
    371       !! ** Purpose :  Fill array fields with the information about all  
    372       !!               possible variables and corresponding grids definition  
    373       !!               for reading/writing restart with XIOS 
    374       !!--------------------------------------------------------------------- 
    375    TYPE(RST_FIELD), INTENT(INOUT) :: fields(max_rst_fields) 
    376  
    377    INTEGER :: i 
    378         i = 0 
    379         i = i + 1; fields(i)%vname="rdt";            fields(i)%grid="grid_scalar" 
    380         i = i + 1; fields(i)%vname="un";             fields(i)%grid="grid_N_3D" 
    381         i = i + 1; fields(i)%vname="ub";             fields(i)%grid="grid_N_3D" 
    382         i = i + 1; fields(i)%vname="vn";             fields(i)%grid="grid_N_3D" 
    383         i = i + 1; fields(i)%vname="vb";             fields(i)%grid="grid_N_3D"   
    384         i = i + 1; fields(i)%vname="tn";             fields(i)%grid="grid_N_3D" 
    385         i = i + 1; fields(i)%vname="tb";             fields(i)%grid="grid_N_3D" 
    386         i = i + 1; fields(i)%vname="sn";             fields(i)%grid="grid_N_3D" 
    387         i = i + 1; fields(i)%vname="sb";             fields(i)%grid="grid_N_3D" 
    388         i = i + 1; fields(i)%vname="sshn";           fields(i)%grid="grid_N" 
    389         i = i + 1; fields(i)%vname="sshb";           fields(i)%grid="grid_N" 
    390         i = i + 1; fields(i)%vname="rhop";           fields(i)%grid="grid_N_3D" 
    391         i = i + 1; fields(i)%vname="kt";             fields(i)%grid="grid_scalar" 
    392         i = i + 1; fields(i)%vname="ndastp";         fields(i)%grid="grid_scalar" 
    393         i = i + 1; fields(i)%vname="adatrj";         fields(i)%grid="grid_scalar" 
    394         i = i + 1; fields(i)%vname="utau_b";         fields(i)%grid="grid_N" 
    395         i = i + 1; fields(i)%vname="vtau_b";         fields(i)%grid="grid_N" 
    396         i = i + 1; fields(i)%vname="qns_b";          fields(i)%grid="grid_N" 
    397         i = i + 1; fields(i)%vname="emp_b";          fields(i)%grid="grid_N" 
    398         i = i + 1; fields(i)%vname="sfx_b";          fields(i)%grid="grid_N" 
    399         i = i + 1; fields(i)%vname="en" ;            fields(i)%grid="grid_N_3D"  
    400         i = i + 1; fields(i)%vname="avt";            fields(i)%grid="grid_N_3D" 
    401         i = i + 1; fields(i)%vname="avm";            fields(i)%grid="grid_N_3D" 
    402         i = i + 1; fields(i)%vname="avmu";           fields(i)%grid="grid_N_3D" 
    403         i = i + 1; fields(i)%vname="avmv";           fields(i)%grid="grid_N_3D" 
    404         i = i + 1; fields(i)%vname="dissl";          fields(i)%grid="grid_N_3D" 
    405         i = i + 1; fields(i)%vname="sbc_hc_b";       fields(i)%grid="grid_N" 
    406         i = i + 1; fields(i)%vname="sbc_sc_b";       fields(i)%grid="grid_N" 
    407         i = i + 1; fields(i)%vname="qsr_hc_b";       fields(i)%grid="grid_N_3D" 
    408         i = i + 1; fields(i)%vname="fraqsr_1lev";    fields(i)%grid="grid_N" 
    409         i = i + 1; fields(i)%vname="frc_v";          fields(i)%grid="grid_scalar" 
    410         i = i + 1; fields(i)%vname="frc_t";          fields(i)%grid="grid_scalar" 
    411         i = i + 1; fields(i)%vname="frc_s";          fields(i)%grid="grid_scalar" 
    412         i = i + 1; fields(i)%vname="frc_wn_t";       fields(i)%grid="grid_scalar" 
    413         i = i + 1; fields(i)%vname="frc_wn_s";       fields(i)%grid="grid_scalar" 
    414         i = i + 1; fields(i)%vname="ssh_ini";        fields(i)%grid="grid_N" 
    415         i = i + 1; fields(i)%vname="e3t_ini";        fields(i)%grid="grid_N_3D" 
    416         i = i + 1; fields(i)%vname="hc_loc_ini";     fields(i)%grid="grid_N_3D" 
    417         i = i + 1; fields(i)%vname="sc_loc_ini";     fields(i)%grid="grid_N_3D" 
    418         i = i + 1; fields(i)%vname="ssh_hc_loc_ini"; fields(i)%grid="grid_N" 
    419         i = i + 1; fields(i)%vname="ssh_sc_loc_ini"; fields(i)%grid="grid_N" 
    420         i = i + 1; fields(i)%vname="tilde_e3t_b";    fields(i)%grid="grid_N" 
    421         i = i + 1; fields(i)%vname="tilde_e3t_n";    fields(i)%grid="grid_N" 
    422         i = i + 1; fields(i)%vname="hdiv_lf";        fields(i)%grid="grid_N" 
    423         i = i + 1; fields(i)%vname="ub2_b";          fields(i)%grid="grid_N" 
    424         i = i + 1; fields(i)%vname="vb2_b";          fields(i)%grid="grid_N" 
    425         i = i + 1; fields(i)%vname="sshbb_e";        fields(i)%grid="grid_N" 
    426         i = i + 1; fields(i)%vname="ubb_e";          fields(i)%grid="grid_N" 
    427         i = i + 1; fields(i)%vname="vbb_e";          fields(i)%grid="grid_N" 
    428         i = i + 1; fields(i)%vname="sshb_e";         fields(i)%grid="grid_N" 
    429         i = i + 1; fields(i)%vname="ub_e";           fields(i)%grid="grid_N" 
    430         i = i + 1; fields(i)%vname="vb_e";           fields(i)%grid="grid_N" 
    431         i = i + 1; fields(i)%vname="fwf_isf_b";      fields(i)%grid="grid_N" 
    432         i = i + 1; fields(i)%vname="isf_sc_b";       fields(i)%grid="grid_N" 
    433         i = i + 1; fields(i)%vname="isf_hc_b";       fields(i)%grid="grid_N" 
    434         i = i + 1; fields(i)%vname="ssh_ibb";        fields(i)%grid="grid_N" 
    435         i = i + 1; fields(i)%vname="rnf_b";          fields(i)%grid="grid_N" 
    436         i = i + 1; fields(i)%vname="rnf_hc_b";       fields(i)%grid="grid_N" 
    437         i = i + 1; fields(i)%vname="rnf_sc_b";       fields(i)%grid="grid_N" 
    438         i = i + 1; fields(i)%vname="nn_fsbc";        fields(i)%grid="grid_scalar" 
    439         i = i + 1; fields(i)%vname="ssu_m";          fields(i)%grid="grid_N" 
    440         i = i + 1; fields(i)%vname="ssv_m";          fields(i)%grid="grid_N" 
    441         i = i + 1; fields(i)%vname="sst_m";          fields(i)%grid="grid_N" 
    442         i = i + 1; fields(i)%vname="sss_m";          fields(i)%grid="grid_N" 
    443         i = i + 1; fields(i)%vname="ssh_m";          fields(i)%grid="grid_N" 
    444         i = i + 1; fields(i)%vname="e3t_m";          fields(i)%grid="grid_N" 
    445         i = i + 1; fields(i)%vname="frq_m";          fields(i)%grid="grid_N" 
    446         i = i + 1; fields(i)%vname="avmb";           fields(i)%grid="grid_vector" 
    447         i = i + 1; fields(i)%vname="avtb";           fields(i)%grid="grid_vector" 
    448         i = i + 1; fields(i)%vname="ub2_i_b";        fields(i)%grid="grid_N" 
    449         i = i + 1; fields(i)%vname="vb2_i_b";        fields(i)%grid="grid_N" 
    450         i = i + 1; fields(i)%vname="ntime";          fields(i)%grid="grid_scalar" 
    451         i = i + 1; fields(i)%vname="Dsst";           fields(i)%grid="grid_scalar" 
    452         i = i + 1; fields(i)%vname="tmask";          fields(i)%grid="grid_N_3D" 
    453         i = i + 1; fields(i)%vname="umask";          fields(i)%grid="grid_N_3D" 
    454         i = i + 1; fields(i)%vname="vmask";          fields(i)%grid="grid_N_3D" 
    455         i = i + 1; fields(i)%vname="smask";          fields(i)%grid="grid_N_3D" 
    456         i = i + 1; fields(i)%vname="gdepw_n";        fields(i)%grid="grid_N_3D" 
    457         i = i + 1; fields(i)%vname="e3t_n";          fields(i)%grid="grid_N_3D" 
    458         i = i + 1; fields(i)%vname="e3u_n";          fields(i)%grid="grid_N_3D" 
    459         i = i + 1; fields(i)%vname="e3v_n";          fields(i)%grid="grid_N_3D" 
    460         i = i + 1; fields(i)%vname="surf_ini";       fields(i)%grid="grid_N" 
    461         i = i + 1; fields(i)%vname="e3t_b";          fields(i)%grid="grid_N_3D" 
    462         i = i + 1; fields(i)%vname="mxln";           fields(i)%grid="grid_N_3D" 
    463  
    464         IF( i-1 > max_rst_fields) THEN 
    465         IF(lwp) write(numout,*) 'E R R O R : iom_set_rst_vars SIZE of RST_FIELD array is too small' 
    466         nstop = nstop + 1 
    467         ENDIF 
    468  
    469    END SUBROUTINE iom_set_rst_vars 
    470  
    471  
    472    SUBROUTINE iom_set_rstw_active(cdrst_file) 
    473       !!--------------------------------------------------------------------- 
    474       !!                   ***  SUBROUTINE  iom_set_rstr_active  *** 
    475       !! 
    476       !! ** Purpose :  define file name in XIOS context for writing restart 
    477       !!               enable variables present in restart file for writing 
    478       !!--------------------------------------------------------------------- 
    479 !sets enabled = .TRUE. for each field in restart file 
    480    CHARACTER(len=*) :: cdrst_file 
    481 #if defined key_iomput 
    482    TYPE(xios_field) :: field_hdl 
    483    TYPE(xios_file) :: file_hdl 
    484    TYPE(xios_filegroup) :: filegroup_hdl 
    485    INTEGER :: i 
    486    CHARACTER(lc)  ::   clpath 
    487  
    488 !set name of the restart file and enable available fields 
    489         IF(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ',cdrst_file 
    490         CALL xios_get_handle("file_definition", filegroup_hdl ) 
    491         CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') 
    492         IF(nxioso.eq.1) THEN  
    493            CALL xios_set_file_attr( "wrestart", type="one_file", enabled=.TRUE.,&  
    494                                     mode="write", output_freq=xios_timestep)  
    495            if(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in one_file mode'  
    496         ELSE   
    497            CALL xios_set_file_attr( "wrestart", type="multiple_file", enabled=.TRUE.,&  
    498                                     mode="write", output_freq=xios_timestep)  
    499            if(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in multiple_file mode'  
    500         ENDIF  
    501         CALL xios_set_file_attr( "wrestart", name=trim(cdrst_file)) 
    502 !defin files for restart context 
    503         DO i = 1, max_rst_fields 
    504          IF( rst_wfields(i)%active ) THEN 
    505                 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_wfields(i)%vname)) 
    506                 SELECT CASE (TRIM(rst_wfields(i)%grid)) 
    507                  CASE ("grid_N_3D") 
    508                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
    509                         domain_ref="grid_N", axis_ref="deptht", prec = 8, operation = "instant") 
    510                  CASE ("grid_N") 
    511                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
    512                         domain_ref="grid_N", prec = 8, operation = "instant")  
    513                  CASE ("grid_vector") 
    514                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
    515                          axis_ref="deptht", prec = 8, operation = "instant") 
    516                  CASE ("grid_scalar") 
    517                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
    518                         scalar_ref = "grid_scalar", prec = 8, operation = "instant") 
    519                 END SELECT 
    520          ENDIF 
    521         END DO 
    522 #endif 
    523    END SUBROUTINE iom_set_rstw_active 
    524  
    525    SUBROUTINE iom_set_rst_context( )  
    526      !!--------------------------------------------------------------------- 
    527       !!                   ***  SUBROUTINE  iom_set_rstr_active  *** 
    528       !! 
    529       !! ** Purpose : Define domain, axis and grid for restart (read/write)  
    530       !!              context  
    531       !!                
    532       !!--------------------------------------------------------------------- 
    533 #if defined key_iomput 
    534    TYPE(xios_domaingroup)            :: domaingroup_hdl  
    535    TYPE(xios_domain)                 :: domain_hdl  
    536    TYPE(xios_axisgroup)              :: axisgroup_hdl  
    537    TYPE(xios_axis)                   :: axis_hdl  
    538    TYPE(xios_scalar)                 :: scalar_hdl  
    539    TYPE(xios_scalargroup)            :: scalargroup_hdl  
    540  
    541      CALL xios_get_handle("domain_definition",domaingroup_hdl)  
    542      CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N")  
    543      CALL set_grid("N", glamt, gphit, .TRUE.)  
    544   
    545      CALL xios_get_handle("axis_definition",axisgroup_hdl)  
    546      CALL xios_add_child(axisgroup_hdl, axis_hdl, "deptht")  
    547 !AGRIF fails to compile when unit= is in call to xios_set_axis_attr 
    548 !    CALL xios_set_axis_attr( "deptht", long_name="Vertical levels",  unit="m", positive="down")  
    549      CALL xios_set_axis_attr( "deptht", long_name="Vertical levels in meters", positive="down") 
    550      CALL iom_set_axis_attr( "deptht", paxis = gdept_1d )  
    551  
    552      CALL xios_get_handle("scalar_definition", scalargroup_hdl)  
    553      CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar")  
    554 #endif 
    555    END SUBROUTINE iom_set_rst_context 
    556218 
    557219   SUBROUTINE iom_swap( cdname ) 
     
    564226#if defined key_iomput 
    565227      TYPE(xios_context) :: nemo_hdl 
     228 
    566229      IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    567230        CALL xios_get_handle(TRIM(cdname),nemo_hdl) 
     
    684347            icnt = icnt + 1 
    685348         END DO 
    686       ELSE 
    687          lxios_sini = .TRUE. 
    688349      ENDIF 
    689350      IF( llwrt ) THEN 
     
    869530   !!                   INTERFACE iom_get 
    870531   !!---------------------------------------------------------------------- 
    871    SUBROUTINE iom_g0d( kiomid, cdvar, pvar, ktime, ldxios ) 
     532   SUBROUTINE iom_g0d( kiomid, cdvar, pvar, ktime ) 
    872533      INTEGER         , INTENT(in   )                 ::   kiomid    ! Identifier of the file 
    873534      CHARACTER(len=*), INTENT(in   )                 ::   cdvar     ! Name of the variable 
    874535      REAL(wp)        , INTENT(  out)                 ::   pvar      ! read field 
    875536      INTEGER         , INTENT(in   ),     OPTIONAL   ::   ktime     ! record number 
    876       LOGICAL         , INTENT(in   ),     OPTIONAL   ::   ldxios    ! use xios to read restart 
    877537      ! 
    878538      INTEGER                                         ::   idvar     ! variable id 
     
    882542      CHARACTER(LEN=100)                              ::   clname    ! file name 
    883543      CHARACTER(LEN=1)                                ::   cldmspc   ! 
    884       LOGICAL                                         ::   llxios 
    885       ! 
    886       llxios = .FALSE. 
    887       IF( PRESENT(ldxios) ) llxios = ldxios 
    888  
    889       IF(.NOT.llxios) THEN  ! read data using default library 
    890          itime = 1 
    891          IF( PRESENT(ktime) ) itime = ktime 
    892          ! 
    893          clname = iom_file(kiomid)%name 
    894          clinfo = '          iom_g0d, file: '//trim(clname)//', var: '//trim(cdvar) 
    895          ! 
    896          IF( kiomid > 0 ) THEN 
    897             idvar = iom_varid( kiomid, cdvar ) 
    898             IF( iom_file(kiomid)%nfid > 0 .AND. idvar > 0 ) THEN 
    899                idmspc = iom_file ( kiomid )%ndims( idvar ) 
    900                IF( iom_file(kiomid)%luld(idvar) )  idmspc = idmspc - 1 
    901                WRITE(cldmspc , fmt='(i1)') idmspc 
    902                IF( idmspc > 0 )  CALL ctl_stop( TRIM(clinfo), 'When reading to a 0D array, we do not accept data', & 
    903                                     &                         'with 1 or more spatial dimensions: '//cldmspc//' were found.' , & 
    904                                     &                         'Use ncwa -a to suppress the unnecessary dimensions' ) 
    905                SELECT CASE (iom_file(kiomid)%iolib) 
    906                CASE (jpnf90   )   ;   CALL iom_nf90_get(    kiomid, idvar, pvar, itime ) 
    907                CASE DEFAULT 
    908                   CALL ctl_stop( 'iom_g0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    909                END SELECT 
    910             ENDIF 
    911          ENDIF 
    912       ELSE 
    913          IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 
    914          CALL iom_swap( TRIM(crxios_context) ) 
    915          CALL xios_recv_field( trim(cdvar), pvar) 
    916          CALL iom_swap( TRIM(cxios_context) ) 
     544      ! 
     545      itime = 1 
     546      IF( PRESENT(ktime) ) itime = ktime 
     547      ! 
     548      clname = iom_file(kiomid)%name 
     549      clinfo = '          iom_g0d, file: '//trim(clname)//', var: '//trim(cdvar) 
     550      ! 
     551      IF( kiomid > 0 ) THEN 
     552         idvar = iom_varid( kiomid, cdvar ) 
     553         IF( iom_file(kiomid)%nfid > 0 .AND. idvar > 0 ) THEN 
     554            idmspc = iom_file ( kiomid )%ndims( idvar ) 
     555            IF( iom_file(kiomid)%luld(idvar) )  idmspc = idmspc - 1 
     556            WRITE(cldmspc , fmt='(i1)') idmspc 
     557            IF( idmspc > 0 )  CALL ctl_stop( TRIM(clinfo), 'When reading to a 0D array, we do not accept data', & 
     558                                 &                         'with 1 or more spatial dimensions: '//cldmspc//' were found.' , & 
     559                                 &                         'Use ncwa -a to suppress the unnecessary dimensions' ) 
     560            SELECT CASE (iom_file(kiomid)%iolib) 
     561            CASE (jpnf90   )   ;   CALL iom_nf90_get(    kiomid, idvar, pvar, itime ) 
     562            CASE DEFAULT 
     563               CALL ctl_stop( 'iom_g0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
     564            END SELECT 
     565         ENDIF 
    917566      ENDIF 
    918567   END SUBROUTINE iom_g0d 
    919568 
    920    SUBROUTINE iom_g1d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, ldxios ) 
     569   SUBROUTINE iom_g1d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount ) 
    921570      INTEGER         , INTENT(in   )                         ::   kiomid    ! Identifier of the file 
    922571      INTEGER         , INTENT(in   )                         ::   kdom      ! Type of domain to be read 
     
    926575      INTEGER         , INTENT(in   ), DIMENSION(1), OPTIONAL ::   kstart    ! start axis position of the reading  
    927576      INTEGER         , INTENT(in   ), DIMENSION(1), OPTIONAL ::   kcount    ! number of points in each axis 
    928       LOGICAL         , INTENT(in   ),               OPTIONAL ::   ldxios    ! read data using XIOS 
    929577      ! 
    930578      IF( kiomid > 0 ) THEN 
    931579         IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom       , cdvar        , pv_r1d=pvar,   & 
    932               &                                                     ktime=ktime, kstart=kstart, kcount=kcount, & 
    933               &                                                     ldxios=ldxios ) 
     580              &                                                     ktime=ktime, kstart=kstart, kcount=kcount ) 
    934581      ENDIF 
    935582   END SUBROUTINE iom_g1d 
    936583 
    937    SUBROUTINE iom_g2d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr, ldxios) 
     584   SUBROUTINE iom_g2d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr ) 
    938585      INTEGER         , INTENT(in   )                           ::   kiomid    ! Identifier of the file 
    939586      INTEGER         , INTENT(in   )                           ::   kdom      ! Type of domain to be read 
     
    947594                                                                               ! called open_ocean_jstart to set the start 
    948595                                                                               ! value for the 2nd dimension (netcdf only) 
    949       LOGICAL         , INTENT(in   ),                 OPTIONAL ::   ldxios    ! read data using XIOS 
    950596      ! 
    951597      IF( kiomid > 0 ) THEN 
    952598         IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom       , cdvar        , pv_r2d=pvar,   & 
    953599              &                                                     ktime=ktime, kstart=kstart, kcount=kcount, & 
    954               &                                                     lrowattr=lrowattr,  ldxios=ldxios) 
     600              &                                                     lrowattr=lrowattr ) 
    955601      ENDIF 
    956602   END SUBROUTINE iom_g2d 
    957603 
    958    SUBROUTINE iom_g3d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr, ldxios ) 
     604   SUBROUTINE iom_g3d( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, lrowattr ) 
    959605      INTEGER         , INTENT(in   )                             ::   kiomid    ! Identifier of the file 
    960606      INTEGER         , INTENT(in   )                             ::   kdom      ! Type of domain to be read 
     
    968614                                                                                 ! called open_ocean_jstart to set the start 
    969615                                                                                 ! value for the 2nd dimension (netcdf only) 
    970       LOGICAL         , INTENT(in   ),                   OPTIONAL ::   ldxios    ! read data using XIOS 
    971616      ! 
    972617      IF( kiomid > 0 ) THEN 
    973618         IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom       , cdvar        , pv_r3d=pvar,   & 
    974619              &                                                     ktime=ktime, kstart=kstart, kcount=kcount, & 
    975               &                                                     lrowattr=lrowattr, ldxios=ldxios ) 
     620              &                                                     lrowattr=lrowattr ) 
    976621      ENDIF 
    977622   END SUBROUTINE iom_g3d 
     
    981626         &                  pv_r1d, pv_r2d, pv_r3d,   & 
    982627         &                  ktime , kstart, kcount,   & 
    983          &                  lrowattr, ldxios        ) 
     628         &                  lrowattr                ) 
    984629      !!----------------------------------------------------------------------- 
    985630      !!                  ***  ROUTINE  iom_get_123d  *** 
     
    1002647                                                                           ! called open_ocean_jstart to set the start 
    1003648                                                                           ! value for the 2nd dimension (netcdf only) 
    1004       LOGICAL                    , INTENT(in   ), OPTIONAL ::   ldxios     ! use XIOS to read restart 
    1005       ! 
    1006       LOGICAL                        ::   llxios       ! local definition for XIOS read 
     649      ! 
    1007650      LOGICAL                        ::   llnoov      ! local definition to read overlap 
    1008651      LOGICAL                        ::   luse_jattr  ! local definition to read open_ocean_jstart file attribute 
     
    1031674      !--------------------------------------------------------------------- 
    1032675      ! 
    1033       REAL(wp)                       :: gma, gmi 
    1034       llxios = .FALSE. 
    1035       if(PRESENT(ldxios)) llxios = ldxios 
    1036       idvar = iom_varid( kiomid, cdvar )  
     676      clname = iom_file(kiomid)%name   !   esier to read 
     677      clinfo = '          iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) 
     678      ! local definition of the domain ? 
    1037679      idom = kdom 
    1038  
    1039       IF(.NOT.llxios) THEN 
    1040           clname = iom_file(kiomid)%name   !   esier to read 
    1041           clinfo = '          iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) 
    1042           ! local definition of the domain ? 
    1043           ! do we read the overlap  
    1044           ! ugly patch SM+JMM+RB to overwrite global definition in some cases 
    1045           llnoov = (jpni * jpnj ) == jpnij .AND. .NOT. lk_agrif  
    1046           ! check kcount and kstart optionals parameters... 
    1047           IF( PRESENT(kcount) .AND. (.NOT. PRESENT(kstart)) ) CALL ctl_stop(trim(clinfo), 'kcount present needs kstart present') 
    1048           IF( PRESENT(kstart) .AND. (.NOT. PRESENT(kcount)) ) CALL ctl_stop(trim(clinfo), 'kstart present needs kcount present') 
    1049           IF( PRESENT(kstart) .AND. idom /= jpdom_unknown .AND.  idom /= jpdom_autoglo_xy  ) & 
     680      ! do we read the overlap  
     681      ! ugly patch SM+JMM+RB to overwrite global definition in some cases 
     682      llnoov = (jpni * jpnj ) == jpnij .AND. .NOT. lk_agrif  
     683      ! check kcount and kstart optionals parameters... 
     684      IF( PRESENT(kcount) .AND. (.NOT. PRESENT(kstart)) ) CALL ctl_stop(trim(clinfo), 'kcount present needs kstart present') 
     685      IF( PRESENT(kstart) .AND. (.NOT. PRESENT(kcount)) ) CALL ctl_stop(trim(clinfo), 'kstart present needs kcount present') 
     686      IF( PRESENT(kstart) .AND. idom /= jpdom_unknown .AND.  idom /= jpdom_autoglo_xy  ) & 
    1050687     &           CALL ctl_stop(trim(clinfo), 'kstart present needs kdom = jpdom_unknown or kdom = jpdom_autoglo_xy') 
    1051688 
     
    1064701      ENDIF 
    1065702 
    1066           ! Search for the variable in the data base (eventually actualize data) 
    1067           istop = nstop 
    1068           ! 
    1069           IF( idvar > 0 ) THEN 
    1070              ! to write iom_file(kiomid)%dimsz in a shorter way ! 
    1071              idimsz(:) = iom_file(kiomid)%dimsz(:, idvar)  
    1072              inbdim = iom_file(kiomid)%ndims(idvar)            ! number of dimensions in the file 
    1073              idmspc = inbdim                                   ! number of spatial dimensions in the file 
    1074              IF( iom_file(kiomid)%luld(idvar) )   idmspc = inbdim - 1 
    1075              IF( idmspc > 3 )   CALL ctl_stop(trim(clinfo), 'the file has more than 3 spatial dimensions this case is not coded...')  
    1076              ! 
    1077              ! update idom definition... 
    1078              ! Identify the domain in case of jpdom_auto(glo/dta) definition 
    1079              IF( idom == jpdom_autoglo_xy ) THEN 
    1080                 ll_depth_spec = .TRUE. 
    1081                 idom = jpdom_autoglo 
    1082              ELSE 
    1083                 ll_depth_spec = .FALSE. 
    1084              ENDIF 
    1085              IF( idom == jpdom_autoglo .OR. idom == jpdom_autodta ) THEN             
    1086                 IF( idom == jpdom_autoglo ) THEN   ;   idom = jpdom_global  
    1087                 ELSE                               ;   idom = jpdom_data 
    1088                 ENDIF 
    1089                 ind1 = INDEX( clname, '_', back = .TRUE. ) + 1 
    1090                 ind2 = INDEX( clname, '.', back = .TRUE. ) - 1 
    1091                 IF( ind2 > ind1 ) THEN   ;   IF( VERIFY( clname(ind1:ind2), '0123456789' ) == 0 )   idom = jpdom_local   ;   ENDIF 
    1092              ENDIF 
    1093              ! Identify the domain in case of jpdom_local definition 
    1094              IF( idom == jpdom_local ) THEN 
    1095                 IF(     idimsz(1) == jpi               .AND. idimsz(2) == jpj               ) THEN   ;   idom = jpdom_local_full 
    1096                 ELSEIF( idimsz(1) == nlci              .AND. idimsz(2) == nlcj              ) THEN   ;   idom = jpdom_local_noextra 
    1097                 ELSEIF( idimsz(1) == (nlei - nldi + 1) .AND. idimsz(2) == (nlej - nldj + 1) ) THEN   ;   idom = jpdom_local_noovlap 
    1098                 ELSE   ;   CALL ctl_stop( trim(clinfo), 'impossible to identify the local domain' ) 
    1099                 ENDIF 
    1100              ENDIF 
    1101              ! 
    1102              ! check the consistency between input array and data rank in the file 
    1103              ! 
    1104              ! initializations 
    1105              itime = 1 
    1106              IF( PRESENT(ktime) ) itime = ktime 
    1107  
    1108              irankpv = 1 * COUNT( (/PRESENT(pv_r1d)/) ) + 2 * COUNT( (/PRESENT(pv_r2d)/) ) + 3 * COUNT( (/PRESENT(pv_r3d)/) ) 
    1109              WRITE(clrankpv, fmt='(i1)') irankpv 
    1110              WRITE(cldmspc , fmt='(i1)') idmspc 
    1111              ! 
    1112              IF(     idmspc <  irankpv ) THEN  
    1113                 CALL ctl_stop( TRIM(clinfo), 'The file has only '//cldmspc//' spatial dimension',   & 
     703      ! Search for the variable in the data base (eventually actualize data) 
     704      istop = nstop 
     705      idvar = iom_varid( kiomid, cdvar ) 
     706      ! 
     707      IF( idvar > 0 ) THEN 
     708         ! to write iom_file(kiomid)%dimsz in a shorter way ! 
     709         idimsz(:) = iom_file(kiomid)%dimsz(:, idvar)  
     710         inbdim = iom_file(kiomid)%ndims(idvar)            ! number of dimensions in the file 
     711         idmspc = inbdim                                   ! number of spatial dimensions in the file 
     712         IF( iom_file(kiomid)%luld(idvar) )   idmspc = inbdim - 1 
     713         IF( idmspc > 3 )   CALL ctl_stop(trim(clinfo), 'the file has more than 3 spatial dimensions this case is not coded...')  
     714         ! 
     715         ! update idom definition... 
     716         ! Identify the domain in case of jpdom_auto(glo/dta) definition 
     717         IF( idom == jpdom_autoglo_xy ) THEN 
     718            ll_depth_spec = .TRUE. 
     719            idom = jpdom_autoglo 
     720         ELSE 
     721            ll_depth_spec = .FALSE. 
     722         ENDIF 
     723         IF( idom == jpdom_autoglo .OR. idom == jpdom_autodta ) THEN             
     724            IF( idom == jpdom_autoglo ) THEN   ;   idom = jpdom_global  
     725            ELSE                               ;   idom = jpdom_data 
     726            ENDIF 
     727            ind1 = INDEX( clname, '_', back = .TRUE. ) + 1 
     728            ind2 = INDEX( clname, '.', back = .TRUE. ) - 1 
     729            IF( ind2 > ind1 ) THEN   ;   IF( VERIFY( clname(ind1:ind2), '0123456789' ) == 0 )   idom = jpdom_local   ;   ENDIF 
     730         ENDIF 
     731         ! Identify the domain in case of jpdom_local definition 
     732         IF( idom == jpdom_local ) THEN 
     733            IF(     idimsz(1) == jpi               .AND. idimsz(2) == jpj               ) THEN   ;   idom = jpdom_local_full 
     734            ELSEIF( idimsz(1) == nlci              .AND. idimsz(2) == nlcj              ) THEN   ;   idom = jpdom_local_noextra 
     735            ELSEIF( idimsz(1) == (nlei - nldi + 1) .AND. idimsz(2) == (nlej - nldj + 1) ) THEN   ;   idom = jpdom_local_noovlap 
     736            ELSE   ;   CALL ctl_stop( trim(clinfo), 'impossible to identify the local domain' ) 
     737            ENDIF 
     738         ENDIF 
     739         ! 
     740         ! check the consistency between input array and data rank in the file 
     741         ! 
     742         ! initializations 
     743         itime = 1 
     744         IF( PRESENT(ktime) ) itime = ktime 
     745 
     746         irankpv = 1 * COUNT( (/PRESENT(pv_r1d)/) ) + 2 * COUNT( (/PRESENT(pv_r2d)/) ) + 3 * COUNT( (/PRESENT(pv_r3d)/) ) 
     747         WRITE(clrankpv, fmt='(i1)') irankpv 
     748         WRITE(cldmspc , fmt='(i1)') idmspc 
     749         ! 
     750         IF(     idmspc <  irankpv ) THEN  
     751            CALL ctl_stop( TRIM(clinfo), 'The file has only '//cldmspc//' spatial dimension',   & 
    1114752               &                         'it is impossible to read a '//clrankpv//'D array from this file...' ) 
    1115              ELSEIF( idmspc == irankpv ) THEN 
    1116                 IF( PRESENT(pv_r1d) .AND. idom /= jpdom_unknown )   & 
     753         ELSEIF( idmspc == irankpv ) THEN 
     754            IF( PRESENT(pv_r1d) .AND. idom /= jpdom_unknown )   & 
    1117755               &   CALL ctl_stop( TRIM(clinfo), 'case not coded...You must use jpdom_unknown' ) 
    1118              ELSEIF( idmspc >  irankpv ) THEN 
    1119                    IF( PRESENT(pv_r2d) .AND. itime == 1 .AND. idimsz(3) == 1 .AND. idmspc == 3 ) THEN 
    1120                       CALL ctl_warn( trim(clinfo), '2D array but 3 spatial dimensions for the data...'              ,   & 
     756         ELSEIF( idmspc >  irankpv ) THEN 
     757               IF( PRESENT(pv_r2d) .AND. itime == 1 .AND. idimsz(3) == 1 .AND. idmspc == 3 ) THEN 
     758                  CALL ctl_warn( trim(clinfo), '2D array but 3 spatial dimensions for the data...'              ,   & 
    1121759                        &         'As the size of the z dimension is 1 and as we try to read the first record, ',   & 
    1122760                        &         'we accept this case, even if there is a possible mix-up between z and time dimension' )    
    1123                       idmspc = idmspc - 1 
    1124                    ELSE 
    1125                       CALL ctl_stop( TRIM(clinfo), 'To keep iom lisibility, when reading a '//clrankpv//'D array,'         ,   & 
     761                  idmspc = idmspc - 1 
     762               ELSE 
     763                  CALL ctl_stop( TRIM(clinfo), 'To keep iom lisibility, when reading a '//clrankpv//'D array,'         ,   & 
    1126764                     &                         'we do not accept data with '//cldmspc//' spatial dimensions',   & 
    1127765                     &                         'Use ncwa -a to suppress the unnecessary dimensions' ) 
    1128                    ENDIF 
    1129              ENDIF 
    1130  
    1131              ! 
    1132              ! definition of istart and icnt 
    1133              ! 
    1134              icnt  (:) = 1 
    1135              istart(:) = 1 
    1136              istart(idmspc+1) = itime 
     766               ENDIF 
     767         ENDIF 
     768 
     769         ! 
     770         ! definition of istart and icnt 
     771         ! 
     772         icnt  (:) = 1 
     773         istart(:) = 1 
     774         istart(idmspc+1) = itime 
    1137775 
    1138776         IF( PRESENT(kstart) .AND. .NOT. ll_depth_spec ) THEN  
     
    1155793! JMM + SM: ugly patch before getting the new version of lib_mpp) 
    1156794!                  IF( idom /= jpdom_local_noovlap )   istart(1:2) = istart(1:2) + (/ nldi - 1, nldj - 1 /) 
    1157                       IF( llnoov .AND. idom /= jpdom_local_noovlap ) istart(1:2) = istart(1:2) + (/ nldi - 1, nldj - 1 /) 
     795                  IF( llnoov .AND. idom /= jpdom_local_noovlap ) istart(1:2) = istart(1:2) + (/ nldi - 1, nldj - 1 /) 
    1158796                  ! we do not read the overlap and the extra-halos -> from nldi to nlei and from nldj to nlej  
    1159797! JMM + SM: ugly patch before getting the new version of lib_mpp) 
     
    1172810         ENDIF 
    1173811 
    1174              ! check that istart and icnt can be used with this file 
    1175              !- 
    1176              DO jl = 1, jpmax_dims 
    1177                 itmp = istart(jl)+icnt(jl)-1 
    1178                 IF( itmp > idimsz(jl) .AND. idimsz(jl) /= 0 ) THEN 
    1179                    WRITE( ctmp1, FMT="('(istart(', i1, ') + icnt(', i1, ') - 1) = ', i5)" ) jl, jl, itmp 
    1180                    WRITE( ctmp2, FMT="(' is larger than idimsz(', i1,') = ', i5)"         ) jl, idimsz(jl) 
    1181                    CALL ctl_stop( trim(clinfo), 'start and count too big regarding to the size of the data, ', ctmp1, ctmp2 )      
    1182                 ENDIF 
    1183              END DO 
    1184  
    1185              ! check that icnt matches the input array 
    1186              !-      
    1187              IF( idom == jpdom_unknown ) THEN 
    1188                 IF( irankpv == 1 )        ishape(1:1) = SHAPE(pv_r1d) 
    1189                 IF( irankpv == 2 )        ishape(1:2) = SHAPE(pv_r2d) 
    1190                 IF( irankpv == 3 )        ishape(1:3) = SHAPE(pv_r3d) 
    1191                 ctmp1 = 'd' 
    1192              ELSE 
    1193                 IF( irankpv == 2 ) THEN 
     812         ! check that istart and icnt can be used with this file 
     813         !- 
     814         DO jl = 1, jpmax_dims 
     815            itmp = istart(jl)+icnt(jl)-1 
     816            IF( itmp > idimsz(jl) .AND. idimsz(jl) /= 0 ) THEN 
     817               WRITE( ctmp1, FMT="('(istart(', i1, ') + icnt(', i1, ') - 1) = ', i5)" ) jl, jl, itmp 
     818               WRITE( ctmp2, FMT="(' is larger than idimsz(', i1,') = ', i5)"         ) jl, idimsz(jl) 
     819               CALL ctl_stop( trim(clinfo), 'start and count too big regarding to the size of the data, ', ctmp1, ctmp2 )      
     820            ENDIF 
     821         END DO 
     822 
     823         ! check that icnt matches the input array 
     824         !-      
     825         IF( idom == jpdom_unknown ) THEN 
     826            IF( irankpv == 1 )        ishape(1:1) = SHAPE(pv_r1d) 
     827            IF( irankpv == 2 )        ishape(1:2) = SHAPE(pv_r2d) 
     828            IF( irankpv == 3 )        ishape(1:3) = SHAPE(pv_r3d) 
     829            ctmp1 = 'd' 
     830         ELSE 
     831            IF( irankpv == 2 ) THEN 
    1194832! JMM + SM: ugly patch before getting the new version of lib_mpp) 
    1195833!               ishape(1:2) = SHAPE(pv_r2d(nldi:nlei,nldj:nlej  ))   ;   ctmp1 = 'd(nldi:nlei,nldj:nlej)' 
    1196                    IF( llnoov ) THEN ; ishape(1:2)=SHAPE(pv_r2d(nldi:nlei,nldj:nlej  )) ; ctmp1='d(nldi:nlei,nldj:nlej)' 
    1197                    ELSE              ; ishape(1:2)=SHAPE(pv_r2d(1   :nlci,1   :nlcj  )) ; ctmp1='d(1:nlci,1:nlcj)' 
    1198                    ENDIF 
    1199                 ENDIF 
    1200                 IF( irankpv == 3 ) THEN  
     834               IF( llnoov ) THEN ; ishape(1:2)=SHAPE(pv_r2d(nldi:nlei,nldj:nlej  )) ; ctmp1='d(nldi:nlei,nldj:nlej)' 
     835               ELSE              ; ishape(1:2)=SHAPE(pv_r2d(1   :nlci,1   :nlcj  )) ; ctmp1='d(1:nlci,1:nlcj)' 
     836               ENDIF 
     837            ENDIF 
     838            IF( irankpv == 3 ) THEN  
    1201839! JMM + SM: ugly patch before getting the new version of lib_mpp) 
    1202840!               ishape(1:3) = SHAPE(pv_r3d(nldi:nlei,nldj:nlej,:))   ;   ctmp1 = 'd(nldi:nlei,nldj:nlej,:)' 
    1203                    IF( llnoov ) THEN ; ishape(1:3)=SHAPE(pv_r3d(nldi:nlei,nldj:nlej,:)) ; ctmp1='d(nldi:nlei,nldj:nlej,:)' 
    1204                    ELSE              ; ishape(1:3)=SHAPE(pv_r3d(1   :nlci,1   :nlcj,:)) ; ctmp1='d(1:nlci,1:nlcj,:)' 
    1205                    ENDIF 
    1206                 ENDIF 
    1207              ENDIF 
     841               IF( llnoov ) THEN ; ishape(1:3)=SHAPE(pv_r3d(nldi:nlei,nldj:nlej,:)) ; ctmp1='d(nldi:nlei,nldj:nlej,:)' 
     842               ELSE              ; ishape(1:3)=SHAPE(pv_r3d(1   :nlci,1   :nlcj,:)) ; ctmp1='d(1:nlci,1:nlcj,:)' 
     843               ENDIF 
     844            ENDIF 
     845         ENDIF 
    1208846          
    1209              DO jl = 1, irankpv 
    1210                 WRITE( ctmp2, FMT="(', ', i1,'): ', i5,' /= icnt(', i1,'):', i5)" ) jl, ishape(jl), jl, icnt(jl) 
    1211                 IF( ishape(jl) /= icnt(jl) )   CALL ctl_stop( TRIM(clinfo), 'size(pv_r'//clrankpv//TRIM(ctmp1)//TRIM(ctmp2) ) 
    1212              END DO 
    1213  
    1214           ENDIF 
    1215  
    1216           ! read the data 
    1217           !-      
    1218           IF( idvar > 0 .AND. istop == nstop ) THEN   ! no additional errors until this point... 
    1219              ! 
    1220              ! find the right index of the array to be read 
     847         DO jl = 1, irankpv 
     848            WRITE( ctmp2, FMT="(', ', i1,'): ', i5,' /= icnt(', i1,'):', i5)" ) jl, ishape(jl), jl, icnt(jl) 
     849            IF( ishape(jl) /= icnt(jl) )   CALL ctl_stop( TRIM(clinfo), 'size(pv_r'//clrankpv//TRIM(ctmp1)//TRIM(ctmp2) ) 
     850         END DO 
     851 
     852      ENDIF 
     853 
     854      ! read the data 
     855      !-      
     856      IF( idvar > 0 .AND. istop == nstop ) THEN   ! no additional errors until this point... 
     857         ! 
     858         ! find the right index of the array to be read 
    1221859! JMM + SM: ugly patch before getting the new version of lib_mpp) 
    1222860!         IF( idom /= jpdom_unknown ) THEN   ;   ix1 = nldi   ;   ix2 = nlei      ;   iy1 = nldj   ;   iy2 = nlej 
    1223861!         ELSE                               ;   ix1 = 1      ;   ix2 = icnt(1)   ;   iy1 = 1      ;   iy2 = icnt(2) 
    1224862!         ENDIF 
    1225              IF( llnoov ) THEN 
    1226                 IF( idom /= jpdom_unknown ) THEN   ;   ix1 = nldi   ;   ix2 = nlei      ;   iy1 = nldj   ;   iy2 = nlej 
    1227                 ELSE                               ;   ix1 = 1      ;   ix2 = icnt(1)   ;   iy1 = 1      ;   iy2 = icnt(2) 
    1228                 ENDIF 
    1229              ELSE 
    1230                 IF( idom /= jpdom_unknown ) THEN   ;   ix1 = 1      ;   ix2 = nlci      ;   iy1 = 1      ;   iy2 = nlcj 
    1231                 ELSE                               ;   ix1 = 1      ;   ix2 = icnt(1)   ;   iy1 = 1      ;   iy2 = icnt(2) 
    1232                 ENDIF 
    1233              ENDIF 
     863         IF( llnoov ) THEN 
     864            IF( idom /= jpdom_unknown ) THEN   ;   ix1 = nldi   ;   ix2 = nlei      ;   iy1 = nldj   ;   iy2 = nlej 
     865            ELSE                               ;   ix1 = 1      ;   ix2 = icnt(1)   ;   iy1 = 1      ;   iy2 = icnt(2) 
     866            ENDIF 
     867         ELSE 
     868            IF( idom /= jpdom_unknown ) THEN   ;   ix1 = 1      ;   ix2 = nlci      ;   iy1 = 1      ;   iy2 = nlcj 
     869            ELSE                               ;   ix1 = 1      ;   ix2 = icnt(1)   ;   iy1 = 1      ;   iy2 = icnt(2) 
     870            ENDIF 
     871         ENDIF 
    1234872       
    1235873         SELECT CASE (iom_file(kiomid)%iolib) 
     
    1240878         END SELECT 
    1241879 
    1242              IF( istop == nstop ) THEN   ! no additional errors until this point... 
    1243                 IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i6,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 
     880         IF( istop == nstop ) THEN   ! no additional errors until this point... 
     881            IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i6,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 
    1244882           
    1245                 !--- overlap areas and extra hallows (mpp) 
    1246                 IF(     PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN 
    1247                    CALL lbc_lnk( pv_r2d,'Z',-999.,'no0' ) 
    1248                 ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 
    1249                    ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 
    1250                    IF( icnt(3) == jpk ) THEN 
    1251                       CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 
    1252                    ELSE   ! put some arbitrary value (a call to lbc_lnk will be done later...) 
    1253                       DO jj = nlcj+1, jpj   ;   pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :)   ;   END DO 
    1254                       DO ji = nlci+1, jpi   ;   pv_r3d(ji    , : , :) = pv_r3d(nlei  , :   , :)   ;   END DO 
    1255                    ENDIF 
    1256                 ENDIF 
    1257                 ! 
    1258              ELSE 
    1259                 ! return if istop == nstop is false 
    1260                 RETURN 
    1261              ENDIF 
    1262           ELSE 
    1263              ! return if statment idvar > 0 .AND. istop == nstop is false 
    1264              RETURN 
    1265           ENDIF 
    1266           ! 
    1267        ELSE        ! read using XIOS. Only if KEY_IOMPUT is defined 
    1268 #if defined key_iomput 
    1269 !would be good to be able to check which context is active and swap only if current is not restart 
    1270           CALL iom_swap( TRIM(crxios_context) )  
    1271           IF( PRESENT(pv_r3d) ) THEN 
    1272              if(lwp) write(numout,*) 'XIOS RST READ (3D): ',trim(cdvar) 
    1273              CALL xios_recv_field( trim(cdvar), pv_r3d) 
    1274              IF(idom /= jpdom_unknown ) then 
    1275                  CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 
    1276              ENDIF 
    1277           ELSEIF( PRESENT(pv_r2d) ) THEN 
    1278              if(lwp) write(numout,*) 'XIOS RST READ (2D): ', trim(cdvar) 
    1279              CALL xios_recv_field( trim(cdvar), pv_r2d) 
    1280              IF(idom /= jpdom_unknown ) THEN 
    1281                  CALL lbc_lnk(pv_r2d,'Z',-999.,'no0') 
    1282              ENDIF 
    1283           ELSEIF( PRESENT(pv_r1d) ) THEN 
    1284              if(lwp) write(numout,*) 'XIOS RST READ (1D): ', trim(cdvar) 
    1285              CALL xios_recv_field( trim(cdvar), pv_r1d) 
    1286           ENDIF 
    1287           CALL iom_swap( TRIM(cxios_context) ) 
    1288 #else 
    1289           istop = istop + 1  
    1290           clinfo = 'Can not use XIOS in iom_get_123d, file: '//trim(clname)//', var:'//trim(cdvar) 
    1291 #endif 
    1292        ENDIF 
    1293 !some final adjustments 
    1294        ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 
    1295        IF( lk_c1d .AND. PRESENT(pv_r2d) )   CALL lbc_lnk( pv_r2d,'Z',1. ) 
    1296        IF( lk_c1d .AND. PRESENT(pv_r3d) )   CALL lbc_lnk( pv_r3d,'Z',1. ) 
    1297  
    1298        !--- Apply scale_factor and offset 
    1299        zscf = iom_file(kiomid)%scf(idvar)      ! scale factor 
    1300        zofs = iom_file(kiomid)%ofs(idvar)      ! offset 
    1301        IF(     PRESENT(pv_r1d) ) THEN 
    1302           IF( zscf /= 1. )   pv_r1d(:) = pv_r1d(:) * zscf  
    1303           IF( zofs /= 0. )   pv_r1d(:) = pv_r1d(:) + zofs 
    1304        ELSEIF( PRESENT(pv_r2d) ) THEN 
    1305           IF( zscf /= 1.)   pv_r2d(:,:) = pv_r2d(:,:) * zscf 
    1306           IF( zofs /= 0.)   pv_r2d(:,:) = pv_r2d(:,:) + zofs 
    1307        ELSEIF( PRESENT(pv_r3d) ) THEN 
    1308           IF( zscf /= 1.)   pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 
    1309           IF( zofs /= 0.)   pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 
    1310        ENDIF 
     883            !--- overlap areas and extra hallows (mpp) 
     884            IF(     PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN 
     885               CALL lbc_lnk( pv_r2d,'Z',-999.,'no0' ) 
     886            ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 
     887               ! 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 
     889                  CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 
     890               ELSE   ! put some arbitrary value (a call to lbc_lnk will be done later...) 
     891                  DO jj = nlcj+1, jpj   ;   pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :)   ;   END DO 
     892                  DO ji = nlci+1, jpi   ;   pv_r3d(ji    , : , :) = pv_r3d(nlei  , :   , :)   ;   END DO 
     893               ENDIF 
     894            ENDIF 
     895             
     896            ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 
     897            IF( lk_c1d .AND. PRESENT(pv_r2d) )   CALL lbc_lnk( pv_r2d,'Z',1. ) 
     898            IF( lk_c1d .AND. PRESENT(pv_r3d) )   CALL lbc_lnk( pv_r3d,'Z',1. ) 
     899     
     900            !--- Apply scale_factor and offset 
     901            zscf = iom_file(kiomid)%scf(idvar)      ! scale factor 
     902            zofs = iom_file(kiomid)%ofs(idvar)      ! offset 
     903            IF(     PRESENT(pv_r1d) ) THEN 
     904               IF( zscf /= 1. )   pv_r1d(:) = pv_r1d(:) * zscf  
     905               IF( zofs /= 0. )   pv_r1d(:) = pv_r1d(:) + zofs 
     906            ELSEIF( PRESENT(pv_r2d) ) THEN 
     907               IF( zscf /= 1.)   pv_r2d(:,:) = pv_r2d(:,:) * zscf 
     908               IF( zofs /= 0.)   pv_r2d(:,:) = pv_r2d(:,:) + zofs 
     909            ELSEIF( PRESENT(pv_r3d) ) THEN 
     910               IF( zscf /= 1.)   pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 
     911               IF( zofs /= 0.)   pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 
     912            ENDIF 
     913            ! 
     914         ENDIF 
     915         ! 
     916      ENDIF 
     917      ! 
    1311918   END SUBROUTINE iom_get_123d 
    1312919 
     
    15081115   !!                   INTERFACE iom_rstput 
    15091116   !!---------------------------------------------------------------------- 
    1510    SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1117   SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    15111118      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    15121119      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    15151122      REAL(wp)        , INTENT(in)                         ::   pvar     ! written field 
    15161123      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1517       LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
    1518       LOGICAL :: llx                ! local xios write flag 
    15191124      INTEGER :: ivid   ! variable id 
    1520  
    1521       llx = .FALSE. 
    1522       IF(PRESENT(ldxios)) llx = ldxios 
    1523       IF( llx ) THEN 
    1524 #ifdef key_iomput 
    1525       IF( kt == kwrite ) THEN 
    1526           IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
    1527           CALL xios_send_field(trim(cdvar), pvar) 
    1528       ENDIF 
    1529 #endif 
    1530       ELSE 
    1531          IF( kiomid > 0 ) THEN 
    1532             IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1533                ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1534                SELECT CASE (iom_file(kiomid)%iolib) 
    1535                CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
    1536                CASE DEFAULT      
    1537                   CALL ctl_stop( 'iom_rp0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1538                END SELECT 
    1539             ENDIF 
     1125      IF( kiomid > 0 ) THEN 
     1126         IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1127            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1128            SELECT CASE (iom_file(kiomid)%iolib) 
     1129            CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
     1130            CASE DEFAULT 
     1131               CALL ctl_stop( 'iom_rp0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
     1132            END SELECT 
    15401133         ENDIF 
    15411134      ENDIF 
    15421135   END SUBROUTINE iom_rp0d 
    15431136 
    1544    SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1137   SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    15451138      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    15461139      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    15491142      REAL(wp)        , INTENT(in), DIMENSION(          :) ::   pvar     ! written field 
    15501143      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1551       LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
    1552       LOGICAL :: llx                ! local xios write flag 
    15531144      INTEGER :: ivid   ! variable id 
    1554  
    1555       llx = .FALSE. 
    1556       IF(PRESENT(ldxios)) llx = ldxios 
    1557       IF( llx ) THEN 
    1558 #ifdef key_iomput 
    1559       IF( kt == kwrite ) THEN 
    1560          IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 
    1561          CALL xios_send_field(trim(cdvar), pvar) 
    1562       ENDIF 
    1563 #endif 
    1564       ELSE 
    1565          IF( kiomid > 0 ) THEN 
    1566             IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1567                ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1568                SELECT CASE (iom_file(kiomid)%iolib) 
    1569                CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
    1570                CASE DEFAULT      
    1571                   CALL ctl_stop( 'iom_rp1d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1572                END SELECT 
    1573             ENDIF 
     1145      IF( kiomid > 0 ) THEN 
     1146         IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1147            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1148            SELECT CASE (iom_file(kiomid)%iolib) 
     1149            CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
     1150            CASE DEFAULT 
     1151               CALL ctl_stop( 'iom_rp1d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
     1152            END SELECT 
    15741153         ENDIF 
    15751154      ENDIF 
    15761155   END SUBROUTINE iom_rp1d 
    15771156 
    1578    SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1157   SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    15791158      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    15801159      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    15831162      REAL(wp)        , INTENT(in), DIMENSION(:,    :    ) ::   pvar     ! written field 
    15841163      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1585       LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
    1586       LOGICAL :: llx 
    15871164      INTEGER :: ivid   ! variable id 
    1588  
    1589       llx = .FALSE. 
    1590       IF(PRESENT(ldxios)) llx = ldxios 
    1591       IF( llx ) THEN 
    1592 #ifdef key_iomput 
    1593       IF( kt == kwrite ) THEN 
    1594          IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 
    1595          CALL xios_send_field(trim(cdvar), pvar) 
    1596       ENDIF 
    1597 #endif 
    1598       ELSE 
    1599          IF( kiomid > 0 ) THEN 
    1600             IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1601                ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1602                SELECT CASE (iom_file(kiomid)%iolib) 
    1603                CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
    1604                CASE DEFAULT      
    1605                   CALL ctl_stop( 'iom_rp2d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1606                END SELECT 
    1607             ENDIF 
     1165      IF( kiomid > 0 ) THEN 
     1166         IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1167            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1168            SELECT CASE (iom_file(kiomid)%iolib) 
     1169            CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
     1170            CASE DEFAULT 
     1171               CALL ctl_stop( 'iom_rp2d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
     1172            END SELECT 
    16081173         ENDIF 
    16091174      ENDIF 
    16101175   END SUBROUTINE iom_rp2d 
    16111176 
    1612    SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1177   SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    16131178      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    16141179      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    16171182      REAL(wp)        , INTENT(in),       DIMENSION(:,:,:) ::   pvar     ! written field 
    16181183      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1619       LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
    1620       LOGICAL :: llx                 ! local xios write flag 
    16211184      INTEGER :: ivid   ! variable id 
    1622  
    1623       llx = .FALSE. 
    1624       IF(PRESENT(ldxios)) llx = ldxios 
    1625       IF( llx ) THEN 
    1626 #ifdef key_iomput 
    1627       IF( kt == kwrite ) THEN 
    1628          IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 
    1629          CALL xios_send_field(trim(cdvar), pvar) 
    1630       ENDIF 
    1631 #endif 
    1632       ELSE 
    1633          IF( kiomid > 0 ) THEN 
    1634             IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1635                ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1636                SELECT CASE (iom_file(kiomid)%iolib) 
    1637                CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
    1638                CASE DEFAULT      
    1639                   CALL ctl_stop( 'iom_rp3d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1640                END SELECT 
    1641             ENDIF 
     1185      IF( kiomid > 0 ) THEN 
     1186         IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1187            ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1188            SELECT CASE (iom_file(kiomid)%iolib) 
     1189            CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
     1190            CASE DEFAULT 
     1191               CALL ctl_stop( 'iom_rp3d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
     1192            END SELECT 
    16421193         ENDIF 
    16431194      ENDIF 
     
    17111262            &    lonvalue_1D=lonvalue, latvalue_1D=latvalue, mask_1D=mask, nvertex=nvertex, bounds_lon_1D=bounds_lon,      & 
    17121263            &    bounds_lat_1D=bounds_lat, area=area, type='curvilinear') 
    1713       ENDIF 
     1264     ENDIF 
    17141265      IF ( xios_is_valid_domaingroup(cdid) ) THEN 
    17151266         CALL xios_set_domaingroup_attr( cdid, ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, jbegin=jbegin, ni=ni, nj=nj,   & 
     
    18171368   SUBROUTINE iom_context_finalize( cdname ) 
    18181369      CHARACTER(LEN=*), INTENT(in) :: cdname 
    1819       CHARACTER(LEN=120)           :: clname 
    1820       ! 
    1821       clname = cdname 
    1822       IF( TRIM(Agrif_CFixed()) .NE. '0' ) clname = TRIM(Agrif_CFixed())//"_"//clname  
    1823  
    1824       IF( xios_is_valid_context(clname) ) THEN 
     1370      ! 
     1371      IF( xios_is_valid_context(cdname) ) THEN 
    18251372         CALL iom_swap( cdname )   ! swap to cdname context 
    18261373         CALL xios_context_finalize() ! finalize the context 
     
    18311378 
    18321379 
    1833    SUBROUTINE set_grid( cdgrd, plon, plat, ldxios ) 
     1380   SUBROUTINE set_grid( cdgrd, plon, plat ) 
    18341381      !!---------------------------------------------------------------------- 
    18351382      !!                     ***  ROUTINE set_grid  *** 
     
    18441391      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zmask 
    18451392      INTEGER  :: ni,nj 
    1846       LOGICAL, INTENT(IN) :: ldxios 
    18471393       
    18481394      ni=nlei-nldi+1 ; nj=nlej-nldj+1 
     
    18501396      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) 
    18511397      CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
    1852       if(.NOT.ldxios) CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)),   & 
     1398      CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)),   & 
    18531399         &                                     latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /)))   
    18541400 
    1855       IF ( ln_mskland.AND.(.NOT.ldxios) ) THEN 
     1401      IF ( ln_mskland ) THEN 
    18561402         ! mask land points, keep values on coast line -> specific mask for U, V and W points 
    18571403         SELECT CASE ( cdgrd ) 
     
    18931439      ! Offset of coordinate representing bottom-left corner 
    18941440      SELECT CASE ( TRIM(cdgrd) ) 
    1895          CASE ('T', 'W', 'N') 
     1441         CASE ('T', 'W') 
    18961442            icnr = -1 ; jcnr = -1 
    18971443         CASE ('U') 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/IOM/iom_def.F90

    r8910 r8924  
    4444   INTEGER, PARAMETER, PUBLIC ::   jpmax_digits =  5   !: maximum number of digits for the cpu number in the file name 
    4545 
    46  
    4746!$AGRIF_DO_NOT_TREAT 
    4847   INTEGER, PUBLIC            ::   iom_open_init = 0   !: used to initialize iom_file(:)%nfid to 0 
    49 !XIOS write restart    
    50    LOGICAL, PUBLIC            ::   lwxios          !: write single file restart using XIOS 
    51    INTEGER, PUBLIC            ::   nxioso          !: type of restart file when writing using XIOS 1 - single, 2 - multiple 
    52 !XIOS read restart    
    53    LOGICAL, PUBLIC            ::   lrxios          !: read single file restart using XIOS 
    54    LOGICAL, PUBLIC            ::   lxios_sini = .FALSE. ! is restart in a single file 
    55    LOGICAL, PUBLIC            ::   lxios_set  = .FALSE.  
    56  
    57  
    5848 
    5949   TYPE, PUBLIC ::   file_descriptor 
     
    7666   END TYPE file_descriptor 
    7767   TYPE(file_descriptor), DIMENSION(jpmax_files), PUBLIC ::   iom_file !: array containing the info for all opened files 
    78    INTEGER, PARAMETER, PUBLIC                   :: max_rst_fields = 95 !: maximum number of restart variables defined in iom_set_rst_vars 
    79    TYPE, PUBLIC :: RST_FIELD   
    80     CHARACTER(len=30) :: vname = "NO_NAME" ! names of variables in restart file 
    81     CHARACTER(len=30) :: grid = "NO_GRID" 
    82     LOGICAL           :: active =.FALSE. ! for restart write only: true - write field, false do not write field 
    83    END TYPE RST_FIELD 
    8468!$AGRIF_END_DO_NOT_TREAT 
    85  
    86    TYPE(RST_FIELD), PUBLIC :: rst_wfields(max_rst_fields), rst_rfields(max_rst_fields) 
    8769 
    8870   !!===================================================================== 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90

    r8910 r8924  
    126126            CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'x', kdompar(1,1)  , idmy ), clinfo) 
    127127            CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'y', kdompar(2,1)  , idmy ), clinfo) 
    128             CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'nav_lev', jpk           , idmy ), clinfo) 
    129             CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'time_counter', NF90_UNLIMITED, idmy ), clinfo) 
     128            CALL iom_nf90_check(NF90_DEF_DIM( if90id, 'z', jpk           , idmy ), clinfo) 
     129            CALL iom_nf90_check(NF90_DEF_DIM( if90id, 't', NF90_UNLIMITED, idmy ), clinfo) 
    130130            ! global attributes 
    131131            CALL iom_nf90_check(NF90_PUT_ATT( if90id, NF90_GLOBAL, 'DOMAIN_number_total'   , jpnij              ), clinfo) 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90

    r8910 r8924  
    2828   USE iom             ! I/O module 
    2929   USE diurnal_bulk 
    30  
     30    
    3131   IMPLICIT NONE 
    3232   PRIVATE 
     
    6161      CHARACTER(LEN=50)   ::   clname   ! ocean output restart file name 
    6262      CHARACTER(lc)       ::   clpath   ! full path to ocean output restart file 
    63       CHARACTER(LEN=52)   ::   clpname   ! ocean output restart file name including prefix for AGRIF 
    6463      !!---------------------------------------------------------------------- 
    6564      ! 
     
    9594            IF(lwp) THEN 
    9695               WRITE(numout,*) 
    97                IF(.NOT.lwxios) THEN 
    98                   SELECT CASE ( jprstlib ) 
    99                   CASE DEFAULT         ;   WRITE(numout,*)                            & 
    100                       '             open ocean restart NetCDF file: ',TRIM(clpath)//TRIM(clname) 
    101                   END SELECT 
    102                   IF ( snc4set%luse )      WRITE(numout,*) '             opened for NetCDF4 chunking and compression' 
    103                   IF( kt == nitrst - 1 ) THEN   ;   WRITE(numout,*) '             kt = nitrst - 1 = ', kt 
    104                   ELSE                          ;   WRITE(numout,*) '             kt = '             , kt 
    105                   ENDIF 
     96               SELECT CASE ( jprstlib ) 
     97               CASE DEFAULT         ;   WRITE(numout,*)                            & 
     98                   '             open ocean restart NetCDF file: ',TRIM(clpath)//clname 
     99               END SELECT 
     100               IF ( snc4set%luse )      WRITE(numout,*) '             opened for NetCDF4 chunking and compression' 
     101               IF( kt == nitrst - 1 ) THEN   ;   WRITE(numout,*) '             kt = nitrst - 1 = ', kt 
     102               ELSE                          ;   WRITE(numout,*) '             kt = '             , kt 
    106103               ENDIF 
    107104            ENDIF 
    108105            ! 
    109             IF(.NOT.lwxios) THEN 
    110                CALL iom_open( TRIM(clpath)//TRIM(clname), numrow, ldwrt = .TRUE., kiolib = jprstlib ) 
    111             ELSE 
    112                cwxios_context = "rstw_"//TRIM(ADJUSTL(clkt)) 
    113                IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    114                   clpname = clname 
    115                ELSE 
    116                   clpname = TRIM(Agrif_CFixed())//"_"//clname    
    117                ENDIF 
    118                CALL iom_init( cwxios_context, TRIM(clpath)//TRIM(clpname)) 
    119                CALL xios_update_calendar(nitrst) 
    120                CALL iom_swap(      cxios_context          ) 
    121             ENDIF 
     106            CALL iom_open( TRIM(clpath)//TRIM(clname), numrow, ldwrt = .TRUE., kiolib = jprstlib ) 
    122107            lrst_oce = .TRUE. 
    123108         ENDIF 
     
    138123      INTEGER, INTENT(in) ::   kt   ! ocean time-step 
    139124      !!---------------------------------------------------------------------- 
    140                      IF(lwxios) CALL iom_swap(      cwxios_context          ) 
    141                      CALL iom_rstput( kt, nitrst, numrow, 'rdt'    , rdt       , ldxios = lwxios)   ! dynamics time step 
     125 
     126                     CALL iom_rstput( kt, nitrst, numrow, 'rdt'    , rdt       )   ! dynamics and tracer time step 
    142127 
    143128      IF ( .NOT. ln_diurnal_only ) THEN 
    144                      CALL iom_rstput( kt, nitrst, numrow, 'ub'     , ub, ldxios = lwxios        )     ! before fields 
    145                      CALL iom_rstput( kt, nitrst, numrow, 'vb'     , vb, ldxios = lwxios        ) 
    146                      CALL iom_rstput( kt, nitrst, numrow, 'tb'     , tsb(:,:,:,jp_tem), ldxios = lwxios ) 
    147                      CALL iom_rstput( kt, nitrst, numrow, 'sb'     , tsb(:,:,:,jp_sal), ldxios = lwxios ) 
    148                      CALL iom_rstput( kt, nitrst, numrow, 'sshb'   , sshb, ldxios = lwxios      ) 
     129                     CALL iom_rstput( kt, nitrst, numrow, 'ub'     , ub        )     ! before fields 
     130                     CALL iom_rstput( kt, nitrst, numrow, 'vb'     , vb        ) 
     131                     CALL iom_rstput( kt, nitrst, numrow, 'tb'     , tsb(:,:,:,jp_tem) ) 
     132                     CALL iom_rstput( kt, nitrst, numrow, 'sb'     , tsb(:,:,:,jp_sal) ) 
     133                     CALL iom_rstput( kt, nitrst, numrow, 'sshb'   , sshb      ) 
    149134                     ! 
    150                      CALL iom_rstput( kt, nitrst, numrow, 'un'     , un, ldxios = lwxios        )     ! now fields 
    151                      CALL iom_rstput( kt, nitrst, numrow, 'vn'     , vn, ldxios = lwxios        ) 
    152                      CALL iom_rstput( kt, nitrst, numrow, 'tn'     , tsn(:,:,:,jp_tem), ldxios = lwxios ) 
    153                      CALL iom_rstput( kt, nitrst, numrow, 'sn'     , tsn(:,:,:,jp_sal), ldxios = lwxios ) 
    154                      CALL iom_rstput( kt, nitrst, numrow, 'sshn'   , sshn, ldxios = lwxios      ) 
    155                      CALL iom_rstput( kt, nitrst, numrow, 'rhop'   , rhop, ldxios = lwxios      ) 
     135                     CALL iom_rstput( kt, nitrst, numrow, 'un'     , un        )     ! now fields 
     136                     CALL iom_rstput( kt, nitrst, numrow, 'vn'     , vn        ) 
     137                     CALL iom_rstput( kt, nitrst, numrow, 'tn'     , tsn(:,:,:,jp_tem) ) 
     138                     CALL iom_rstput( kt, nitrst, numrow, 'sn'     , tsn(:,:,:,jp_sal) ) 
     139                     CALL iom_rstput( kt, nitrst, numrow, 'sshn'   , sshn      ) 
     140                     CALL iom_rstput( kt, nitrst, numrow, 'rhop'   , rhop      ) 
     141 
    156142                  ! extra variable needed for the ice sheet coupling 
    157143                  IF ( ln_iscpl ) THEN  
    158                      CALL iom_rstput( kt, nitrst, numrow, 'tmask'  , tmask, ldxios = lwxios ) ! need to extrapolate T/S 
    159                      CALL iom_rstput( kt, nitrst, numrow, 'umask'  , umask, ldxios = lwxios ) ! need to correct barotropic velocity 
    160                      CALL iom_rstput( kt, nitrst, numrow, 'vmask'  , vmask, ldxios = lwxios ) ! need to correct barotropic velocity 
    161                      CALL iom_rstput( kt, nitrst, numrow, 'smask'  , ssmask, ldxios = lwxios) ! need to correct barotropic velocity 
    162                      CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:), ldxios = lwxios )   ! need to compute temperature correction 
    163                      CALL iom_rstput( kt, nitrst, numrow, 'e3u_n', e3u_n(:,:,:), ldxios = lwxios )   ! need to compute bt conservation 
    164                      CALL iom_rstput( kt, nitrst, numrow, 'e3v_n', e3v_n(:,:,:), ldxios = lwxios )   ! need to compute bt conservation 
    165                      CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', gdepw_n(:,:,:), ldxios = lwxios ) ! need to compute extrapolation if vvl 
     144                     CALL iom_rstput( kt, nitrst, numrow, 'tmask'  , tmask    ) ! need to extrapolate T/S 
     145                     CALL iom_rstput( kt, nitrst, numrow, 'umask'  , umask    ) ! need to correct barotropic velocity 
     146                     CALL iom_rstput( kt, nitrst, numrow, 'vmask'  , vmask    ) ! need to correct barotropic velocity 
     147                     CALL iom_rstput( kt, nitrst, numrow, 'smask'  , ssmask    ) ! need to correct barotropic velocity 
     148                     CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:) )   ! need to compute temperature correction 
     149                     CALL iom_rstput( kt, nitrst, numrow, 'e3u_n', e3u_n(:,:,:) )   ! need to compute bt conservation 
     150                     CALL iom_rstput( kt, nitrst, numrow, 'e3v_n', e3v_n(:,:,:) )   ! need to compute bt conservation 
     151                     CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', gdepw_n(:,:,:) ) ! need to compute extrapolation if vvl 
    166152                  END IF 
    167153      ENDIF 
    168154       
    169       IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst, ldxios = lwxios 
    170       IF(lwxios) CALL iom_swap(      cxios_context          ) 
     155      IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst    
     156 
    171157      IF( kt == nitrst ) THEN 
    172          IF(.NOT.lwxios) THEN 
    173             CALL iom_close( numrow )     ! close the restart file (only at last time step) 
    174          ELSE 
    175             CALL iom_context_finalize(      cwxios_context          ) 
    176          ENDIF 
     158         CALL iom_close( numrow )     ! close the restart file (only at last time step) 
    177159!!gm         IF( .NOT. lk_trdmld )   lrst_oce = .FALSE. 
    178160!!gm  not sure what to do here   ===>>>  ask to Sebastian 
     
    182164               nitrst = nstocklist( nrst_lst ) 
    183165            ENDIF 
     166            lrst_oce = .FALSE. 
    184167      ENDIF 
    185168      ! 
     
    210193            WRITE(numout,*) '~~~~~~~~' 
    211194         ENDIF 
    212          lxios_sini = .FALSE. 
     195 
    213196         clpath = TRIM(cn_ocerst_indir) 
    214197         IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 
    215198         CALL iom_open( TRIM(clpath)//cn_ocerst_in, numror, kiolib = jlibalt ) 
    216 ! are we using XIOS to read the data? Part above will have to modified once XIOS 
    217 ! can handle checking if variable is in the restart file (there will be no need to open 
    218 ! restart) 
    219          IF(.NOT.lxios_set) lrxios = lrxios.AND.lxios_sini 
    220          IF( lrxios) THEN 
    221              crxios_context = 'nemo_rst' 
    222              IF( .NOT.lxios_set ) THEN 
    223                  IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS' 
    224                  CALL iom_init( crxios_context ) 
    225                  lxios_set = .TRUE. 
    226              ENDIF 
    227          ENDIF 
    228          IF( TRIM(Agrif_CFixed()) /= '0' .AND. lrxios) THEN 
    229              CALL iom_init( crxios_context ) 
    230              IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for AGRIF' 
    231              lxios_set = .TRUE. 
    232          ENDIF  
    233       ENDIF 
    234  
     199      ENDIF 
    235200   END SUBROUTINE rst_read_open 
    236201 
     
    246211      REAL(wp) ::   zrdt 
    247212      INTEGER  ::   jk 
    248       REAL(wp), DIMENSION(jpi, jpj, jpk) :: w3d 
    249213      !!---------------------------------------------------------------------- 
    250214 
     
    253217      ! Check dynamics and tracer time-step consistency and force Euler restart if changed 
    254218      IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 )   THEN 
    255          CALL iom_get( numror, 'rdt', zrdt, ldxios = lrxios ) 
     219         CALL iom_get( numror, 'rdt', zrdt ) 
    256220         IF( zrdt /= rdt )   neuler = 0 
    257221      ENDIF 
    258222 
    259223      ! Diurnal DSST  
    260       IF( ln_diurnal ) CALL iom_get( numror, jpdom_autoglo, 'Dsst' , x_dsst, ldxios = lrxios )  
     224      IF( ln_diurnal ) CALL iom_get( numror, jpdom_autoglo, 'Dsst' , x_dsst  )  
    261225      IF ( ln_diurnal_only ) THEN  
    262226         IF(lwp) WRITE( numout, * ) & 
    263227         &   "rst_read:- ln_diurnal_only set, setting rhop=rau0"  
    264228         rhop = rau0 
    265          CALL iom_get( numror, jpdom_autoglo, 'tn'     , w3d, ldxios = lrxios )  
    266          tsn(:,:,1,jp_tem) = w3d(:,:,1) 
     229         CALL iom_get( numror, jpdom_autoglo, 'tn'     , tsn(:,:,1,jp_tem) )  
    267230         RETURN  
    268231      ENDIF   
    269232       
    270233      IF( iom_varid( numror, 'ub', ldstop = .FALSE. ) > 0 ) THEN 
    271          CALL iom_get( numror, jpdom_autoglo, 'ub'     , ub, ldxios = lrxios                )   ! before fields 
    272          CALL iom_get( numror, jpdom_autoglo, 'vb'     , vb, ldxios = lrxios                ) 
    273          CALL iom_get( numror, jpdom_autoglo, 'tb'     , tsb(:,:,:,jp_tem), ldxios = lrxios ) 
    274          CALL iom_get( numror, jpdom_autoglo, 'sb'     , tsb(:,:,:,jp_sal), ldxios = lrxios ) 
    275          CALL iom_get( numror, jpdom_autoglo, 'sshb'   , sshb, ldxios = lrxios              ) 
     234         CALL iom_get( numror, jpdom_autoglo, 'ub'     , ub      )   ! before fields 
     235         CALL iom_get( numror, jpdom_autoglo, 'vb'     , vb      ) 
     236         CALL iom_get( numror, jpdom_autoglo, 'tb'     , tsb(:,:,:,jp_tem) ) 
     237         CALL iom_get( numror, jpdom_autoglo, 'sb'     , tsb(:,:,:,jp_sal) ) 
     238         CALL iom_get( numror, jpdom_autoglo, 'sshb'   , sshb    ) 
    276239      ELSE 
    277240         neuler = 0 
    278241      ENDIF 
    279242      ! 
    280       CALL iom_get( numror, jpdom_autoglo, 'un'     , un, ldxios = lrxios )   ! now    fields 
    281       CALL iom_get( numror, jpdom_autoglo, 'vn'     , vn, ldxios = lrxios ) 
    282       CALL iom_get( numror, jpdom_autoglo, 'tn'     , tsn(:,:,:,jp_tem), ldxios = lrxios ) 
    283       CALL iom_get( numror, jpdom_autoglo, 'sn'     , tsn(:,:,:,jp_sal), ldxios = lrxios ) 
    284       CALL iom_get( numror, jpdom_autoglo, 'sshn'   , sshn, ldxios = lrxios ) 
     243      CALL iom_get( numror, jpdom_autoglo, 'un'     , un      )   ! now    fields 
     244      CALL iom_get( numror, jpdom_autoglo, 'vn'     , vn      ) 
     245      CALL iom_get( numror, jpdom_autoglo, 'tn'     , tsn(:,:,:,jp_tem) ) 
     246      CALL iom_get( numror, jpdom_autoglo, 'sn'     , tsn(:,:,:,jp_sal) ) 
     247      CALL iom_get( numror, jpdom_autoglo, 'sshn'   , sshn    ) 
    285248      IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN 
    286          CALL iom_get( numror, jpdom_autoglo, 'rhop'   , rhop, ldxios = lrxios )   ! now    potential density 
     249         CALL iom_get( numror, jpdom_autoglo, 'rhop'   , rhop    )   ! now    potential density 
    287250      ELSE 
    288251         CALL eos( tsn, rhd, rhop, gdept_n(:,:,:) )    
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90

    r8910 r8924  
    6565      CHARACTER(len=100) ::  cn_dir   ! Root directory for location of ssr files 
    6666      TYPE(FLD_N)        ::  sn_apr   ! informations about the fields to be read 
    67       LOGICAL            ::  lrxios   ! read restart using XIOS? 
    6867      !! 
    6968      NAMELIST/namsbc_apr/ cn_dir, sn_apr, ln_ref_apr, rn_pref, ln_apr_obc 
     
    110109            CALL ctl_warn( 'sbc_apr: use inverse barometer ssh at open boundary ONLY requires ln_apr_dyn=T' ) 
    111110      ! 
    112       IF( lwxios ) THEN 
    113          CALL iom_set_rstw_var_active('ssh_ibb') 
    114       ENDIF 
    115111   END SUBROUTINE sbc_apr_init 
    116112 
     
    156152         IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN  
    157153            IF(lwp) WRITE(numout,*) 'sbc_apr:   ssh_ibb read in the restart file' 
    158             CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb, ldxios = lrxios )   ! before inv. barometer ssh 
     154            CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb )   ! before inv. barometer ssh 
    159155            ! 
    160156         ELSE                                         !* no restart: set from nit000 values 
     
    169165         IF(lwp) WRITE(numout,*) 'sbc_apr : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp 
    170166         IF(lwp) WRITE(numout,*) '~~~~' 
    171          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    172          CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib, ldxios = lwxios ) 
    173          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     167         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib ) 
    174168      ENDIF 
    175169      ! 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90

    r8910 r8924  
    218218                 & iom_varid( numror, 'fwf_isf_b', ldstop = .FALSE. ) > 0 ) THEN 
    219219               IF(lwp) WRITE(numout,*) '          nit000-1 isf tracer content forcing fields read in the restart file' 
    220                CALL iom_get( numror, jpdom_autoglo, 'fwf_isf_b', fwfisf_b(:,:), ldxios = lrxios )   ! before salt content isf_tsc trend 
    221                CALL iom_get( numror, jpdom_autoglo, 'isf_sc_b', risf_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salt content isf_tsc trend 
    222                CALL iom_get( numror, jpdom_autoglo, 'isf_hc_b', risf_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before salt content isf_tsc trend 
     220               CALL iom_get( numror, jpdom_autoglo, 'fwf_isf_b', fwfisf_b(:,:) )   ! before salt content isf_tsc trend 
     221               CALL iom_get( numror, jpdom_autoglo, 'isf_sc_b', risf_tsc_b(:,:,jp_sal) )   ! before salt content isf_tsc trend 
     222               CALL iom_get( numror, jpdom_autoglo, 'isf_hc_b', risf_tsc_b(:,:,jp_tem) )   ! before salt content isf_tsc trend 
    223223           ELSE 
    224224               fwfisf_b(:,:)    = fwfisf(:,:) 
     
    232232               &                    'at it= ', kt,' date= ', ndastp 
    233233            IF(lwp) WRITE(numout,*) '~~~~' 
    234             IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    235                 CALL iom_rstput( kt, nitrst, numrow, 'fwf_isf_b', fwfisf(:,:), ldxios = lwxios ) 
    236                 CALL iom_rstput( kt, nitrst, numrow, 'isf_hc_b' , risf_tsc(:,:,jp_tem), ldxios = lwxios ) 
    237                 CALL iom_rstput( kt, nitrst, numrow, 'isf_sc_b' , risf_tsc(:,:,jp_sal), ldxios = lwxios ) 
    238             IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     234            CALL iom_rstput( kt, nitrst, numrow, 'fwf_isf_b', fwfisf(:,:) ) 
     235            CALL iom_rstput( kt, nitrst, numrow, 'isf_hc_b' , risf_tsc(:,:,jp_tem) ) 
     236            CALL iom_rstput( kt, nitrst, numrow, 'isf_sc_b' , risf_tsc(:,:,jp_sal) ) 
    239237         ENDIF 
    240238         ! 
     
    395393      END DO 
    396394 
    397       IF( lwxios ) THEN 
    398           CALL iom_set_rstw_var_active('fwf_isf_b') 
    399           CALL iom_set_rstw_var_active('isf_hc_b') 
    400           CALL iom_set_rstw_var_active('isf_sc_b') 
    401       ENDIF 
    402  
    403  
    404395  END SUBROUTINE sbc_isf_init 
    405396 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r8910 r8924  
    5656   USE lib_mpp        ! MPP library 
    5757   USE timing         ! Timing 
     58 
    5859   USE diurnal_bulk, ONLY:   ln_diurnal_only   ! diurnal SST diagnostic 
    5960 
     
    355356      IF( ln_wave     )   CALL sbc_wave_init              ! surface wave initialisation 
    356357      ! 
    357       IF( lwxios ) THEN 
    358          CALL iom_set_rstw_var_active('utau_b') 
    359          CALL iom_set_rstw_var_active('vtau_b') 
    360          CALL iom_set_rstw_var_active('qns_b') 
    361          ! The 3D heat content due to qsr forcing is treated in traqsr 
    362          ! CALL iom_set_rstw_var_active('qsr_b') 
    363          CALL iom_set_rstw_var_active('emp_b') 
    364          CALL iom_set_rstw_var_active('sfx_b') 
    365       ENDIF 
    366  
    367358   END SUBROUTINE sbc_init 
    368359 
     
    471462            & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN 
    472463            IF(lwp) WRITE(numout,*) '          nit000-1 surface forcing fields red in the restart file' 
    473             CALL iom_get( numror, jpdom_autoglo, 'utau_b', utau_b, ldxios = lrxios )   ! before i-stress  (U-point) 
    474             CALL iom_get( numror, jpdom_autoglo, 'vtau_b', vtau_b, ldxios = lrxios )   ! before j-stress  (V-point) 
    475             CALL iom_get( numror, jpdom_autoglo, 'qns_b' , qns_b, ldxios = lrxios  )   ! before non solar heat flux (T-point) 
     464            CALL iom_get( numror, jpdom_autoglo, 'utau_b', utau_b )   ! before i-stress  (U-point) 
     465            CALL iom_get( numror, jpdom_autoglo, 'vtau_b', vtau_b )   ! before j-stress  (V-point) 
     466            CALL iom_get( numror, jpdom_autoglo, 'qns_b' , qns_b  )   ! before non solar heat flux (T-point) 
    476467            ! The 3D heat content due to qsr forcing is treated in traqsr 
    477             ! CALL iom_get( numror, jpdom_autoglo, 'qsr_b' , qsr_b, ldxios = lrxios  ) ! before     solar heat flux (T-point) 
    478             CALL iom_get( numror, jpdom_autoglo, 'emp_b', emp_b, ldxios = lrxios  )    ! before     freshwater flux (T-point) 
     468            ! CALL iom_get( numror, jpdom_autoglo, 'qsr_b' , qsr_b  ) ! before     solar heat flux (T-point) 
     469            CALL iom_get( numror, jpdom_autoglo, 'emp_b', emp_b  )    ! before     freshwater flux (T-point) 
    479470            ! To ensure restart capability with 3.3x/3.4 restart files    !! to be removed in v3.6 
    480471            IF( iom_varid( numror, 'sfx_b', ldstop = .FALSE. ) > 0 ) THEN 
    481                CALL iom_get( numror, jpdom_autoglo, 'sfx_b', sfx_b, ldxios = lrxios )  ! before salt flux (T-point) 
     472               CALL iom_get( numror, jpdom_autoglo, 'sfx_b', sfx_b )  ! before salt flux (T-point) 
    482473            ELSE 
    483474               sfx_b (:,:) = sfx(:,:) 
     
    499490            &                    'at it= ', kt,' date= ', ndastp 
    500491         IF(lwp) WRITE(numout,*) '~~~~' 
    501          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    502          CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau, ldxios = lwxios ) 
    503          CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau, ldxios = lwxios ) 
    504          CALL iom_rstput( kt, nitrst, numrow, 'qns_b'  , qns, ldxios = lwxios  ) 
     492         CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau ) 
     493         CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau ) 
     494         CALL iom_rstput( kt, nitrst, numrow, 'qns_b'  , qns  ) 
    505495         ! The 3D heat content due to qsr forcing is treated in traqsr 
    506496         ! CALL iom_rstput( kt, nitrst, numrow, 'qsr_b'  , qsr  ) 
    507          CALL iom_rstput( kt, nitrst, numrow, 'emp_b'  , emp, ldxios = lwxios  ) 
    508          CALL iom_rstput( kt, nitrst, numrow, 'sfx_b'  , sfx, ldxios = lwxios  ) 
    509          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     497         CALL iom_rstput( kt, nitrst, numrow, 'emp_b'  , emp  ) 
     498         CALL iom_rstput( kt, nitrst, numrow, 'sfx_b'  , sfx  ) 
    510499      ENDIF 
    511500      !                                                ! ---------------------------------------- ! 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90

    r8910 r8924  
    147147         IF( ln_rstart .AND.    &                               !* Restart: read in restart file 
    148148            & iom_varid( numror, 'rnf_b', ldstop = .FALSE. ) > 0 ) THEN 
    149             IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields red in the restart file', lrxios 
    150             CALL iom_get( numror, jpdom_autoglo, 'rnf_b', rnf_b, ldxios = lrxios )     ! before runoff 
    151             CALL iom_get( numror, jpdom_autoglo, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before heat content of runoff 
    152             CALL iom_get( numror, jpdom_autoglo, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salinity content of runoff 
     149            IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields red in the restart file' 
     150            CALL iom_get( numror, jpdom_autoglo, 'rnf_b', rnf_b )     ! before runoff 
     151            CALL iom_get( numror, jpdom_autoglo, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem) )   ! before heat content of runoff 
     152            CALL iom_get( numror, jpdom_autoglo, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal) )   ! before salinity content of runoff 
    153153         ELSE                                                   !* no restart: set from nit000 values 
    154154            IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields set to nit000' 
     
    164164            &                    'at it= ', kt,' date= ', ndastp 
    165165         IF(lwp) WRITE(numout,*) '~~~~' 
    166          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    167          CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf, ldxios = lwxios ) 
    168          CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem), ldxios = lwxios ) 
    169          CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal), ldxios = lwxios ) 
    170          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     166         CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf ) 
     167         CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem) ) 
     168         CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal) ) 
    171169      ENDIF 
    172170      ! 
     
    474472      ENDIF 
    475473      ! 
    476       IF( lwxios ) THEN 
    477          CALL iom_set_rstw_var_active('rnf_b') 
    478          CALL iom_set_rstw_var_active('rnf_hc_b') 
    479          CALL iom_set_rstw_var_active('rnf_sc_b') 
    480       ENDIF 
    481  
    482474   END SUBROUTINE sbc_rnf_init 
    483475 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90

    r8910 r8924  
    155155            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    156156            zf_sbc = REAL( nn_fsbc, wp ) 
    157             IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    158             CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc, ldxios = lwxios )    ! sbc frequency 
    159             CALL iom_rstput( kt, nitrst, numrow, 'ssu_m'  , ssu_m, ldxios = lwxios  )    ! sea surface mean fields 
    160             CALL iom_rstput( kt, nitrst, numrow, 'ssv_m'  , ssv_m, ldxios = lwxios  ) 
    161             CALL iom_rstput( kt, nitrst, numrow, 'sst_m'  , sst_m, ldxios = lwxios  ) 
    162             CALL iom_rstput( kt, nitrst, numrow, 'sss_m'  , sss_m, ldxios = lwxios  ) 
    163             CALL iom_rstput( kt, nitrst, numrow, 'ssh_m'  , ssh_m, ldxios = lwxios  ) 
    164             CALL iom_rstput( kt, nitrst, numrow, 'e3t_m'  , e3t_m, ldxios = lwxios  ) 
    165             CALL iom_rstput( kt, nitrst, numrow, 'frq_m'  , frq_m, ldxios = lwxios  ) 
    166             ! 
    167             IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     157            CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc )    ! sbc frequency 
     158            CALL iom_rstput( kt, nitrst, numrow, 'ssu_m'  , ssu_m  )    ! sea surface mean fields 
     159            CALL iom_rstput( kt, nitrst, numrow, 'ssv_m'  , ssv_m  ) 
     160            CALL iom_rstput( kt, nitrst, numrow, 'sst_m'  , sst_m  ) 
     161            CALL iom_rstput( kt, nitrst, numrow, 'sss_m'  , sss_m  ) 
     162            CALL iom_rstput( kt, nitrst, numrow, 'ssh_m'  , ssh_m  ) 
     163            CALL iom_rstput( kt, nitrst, numrow, 'e3t_m'  , e3t_m  ) 
     164            CALL iom_rstput( kt, nitrst, numrow, 'frq_m'  , frq_m  ) 
     165            ! 
    168166         ENDIF 
    169167         ! 
     
    208206         IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN 
    209207            l_ssm_mean = .TRUE. 
    210             CALL iom_get( numror               , 'nn_fsbc', zf_sbc, ldxios = lrxios )    ! sbc frequency of previous run 
    211             CALL iom_get( numror, jpdom_autoglo, 'ssu_m'  , ssu_m, ldxios = lrxios  )    ! sea surface mean velocity    (U-point) 
    212             CALL iom_get( numror, jpdom_autoglo, 'ssv_m'  , ssv_m, ldxios = lrxios  )    !   "         "    velocity    (V-point) 
    213             CALL iom_get( numror, jpdom_autoglo, 'sst_m'  , sst_m, ldxios = lrxios  )    !   "         "    temperature (T-point) 
    214             CALL iom_get( numror, jpdom_autoglo, 'sss_m'  , sss_m, ldxios = lrxios  )    !   "         "    salinity    (T-point) 
    215             CALL iom_get( numror, jpdom_autoglo, 'ssh_m'  , ssh_m, ldxios = lrxios  )    !   "         "    height      (T-point) 
    216             CALL iom_get( numror, jpdom_autoglo, 'e3t_m'  , e3t_m, ldxios = lrxios  )    ! 1st level thickness          (T-point) 
     208            CALL iom_get( numror               , 'nn_fsbc', zf_sbc )    ! sbc frequency of previous run 
     209            CALL iom_get( numror, jpdom_autoglo, 'ssu_m'  , ssu_m  )    ! sea surface mean velocity    (U-point) 
     210            CALL iom_get( numror, jpdom_autoglo, 'ssv_m'  , ssv_m  )    !   "         "    velocity    (V-point) 
     211            CALL iom_get( numror, jpdom_autoglo, 'sst_m'  , sst_m  )    !   "         "    temperature (T-point) 
     212            CALL iom_get( numror, jpdom_autoglo, 'sss_m'  , sss_m  )    !   "         "    salinity    (T-point) 
     213            CALL iom_get( numror, jpdom_autoglo, 'ssh_m'  , ssh_m  )    !   "         "    height      (T-point) 
     214            CALL iom_get( numror, jpdom_autoglo, 'e3t_m'  , e3t_m  )    ! 1st level thickness          (T-point) 
    217215            ! fraction of solar net radiation absorbed in 1st T level 
    218216            IF( iom_varid( numror, 'frq_m', ldstop = .FALSE. ) > 0 ) THEN 
    219                CALL iom_get( numror, jpdom_autoglo, 'frq_m'  , frq_m, ldxios = lrxios  ) 
     217               CALL iom_get( numror, jpdom_autoglo, 'frq_m'  , frq_m  ) 
    220218            ELSE 
    221219               frq_m(:,:) = 1._wp   ! default definition 
     
    253251      ENDIF 
    254252      ! 
    255       IF( lwxios.AND.nn_fsbc > 1 ) THEN 
    256          CALL iom_set_rstw_var_active('nn_fsbc') 
    257          CALL iom_set_rstw_var_active('ssu_m') 
    258          CALL iom_set_rstw_var_active('ssv_m') 
    259          CALL iom_set_rstw_var_active('sst_m') 
    260          CALL iom_set_rstw_var_active('sss_m') 
    261          CALL iom_set_rstw_var_active('ssh_m') 
    262          CALL iom_set_rstw_var_active('e3t_m') 
    263          CALL iom_set_rstw_var_active('frq_m') 
    264       ENDIF 
    265  
    266253   END SUBROUTINE sbc_ssm_init 
    267254 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r8910 r8924  
    139139            IF(lwp) WRITE(numout,*) '          nit000-1 qsr tracer content forcing field read in the restart file' 
    140140            z1_2 = 0.5_wp 
    141             CALL iom_get( numror, jpdom_autoglo, 'qsr_hc_b', qsr_hc_b, ldxios = lrxios )   ! before heat content trend due to Qsr flux 
     141            CALL iom_get( numror, jpdom_autoglo, 'qsr_hc_b', qsr_hc_b )   ! before heat content trend due to Qsr flux 
    142142         ELSE                                           ! No restart or restart not found: Euler forward time stepping 
    143143            z1_2 = 1._wp 
     
    294294      ! 
    295295      IF( lrst_oce ) THEN     ! write in the ocean restart file 
    296          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    297          CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b'   , qsr_hc, ldxios = lwxios      ) 
    298          CALL iom_rstput( kt, nitrst, numrow, 'fraqsr_1lev', fraqsr_1lev, ldxios = lwxios )  
    299          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     296         CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b'   , qsr_hc      ) 
     297         CALL iom_rstput( kt, nitrst, numrow, 'fraqsr_1lev', fraqsr_1lev )  
    300298      ENDIF 
    301299      ! 
     
    432430      ! 1st ocean level attenuation coefficient (used in sbcssm) 
    433431      IF( iom_varid( numror, 'fraqsr_1lev', ldstop = .FALSE. ) > 0 ) THEN 
    434          CALL iom_get( numror, jpdom_autoglo, 'fraqsr_1lev'  , fraqsr_1lev, ldxios = lrxios  ) 
     432         CALL iom_get( numror, jpdom_autoglo, 'fraqsr_1lev'  , fraqsr_1lev  ) 
    435433      ELSE 
    436434         fraqsr_1lev(:,:) = 1._wp   ! default : no penetration 
    437435      ENDIF 
    438436      ! 
    439       IF( lwxios ) THEN 
    440          CALL iom_set_rstw_var_active('qsr_hc_b') 
    441          CALL iom_set_rstw_var_active('fraqsr_1lev') 
    442       ENDIF 
    443437      IF( nn_timing == 1 )   CALL timing_stop('tra_qsr_init') 
    444438      ! 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90

    r8910 r8924  
    111111            zfact = 0.5_wp 
    112112            sbc_tsc(:,:,:) = 0._wp 
    113             CALL iom_get( numror, jpdom_autoglo, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before heat content sbc trend 
    114             CALL iom_get( numror, jpdom_autoglo, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salt content sbc trend 
     113            CALL iom_get( numror, jpdom_autoglo, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem) )   ! before heat content sbc trend 
     114            CALL iom_get( numror, jpdom_autoglo, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal) )   ! before salt content sbc trend 
    115115         ELSE                                   ! No restart or restart not found: Euler forward time stepping 
    116116            zfact = 1._wp 
     
    149149      !                   
    150150      IF( lrst_oce ) THEN           !==  write sbc_tsc in the ocean restart file  ==! 
    151          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    152          CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem), ldxios = lwxios ) 
    153          CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal), ldxios = lwxios ) 
    154          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     151         CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem) ) 
     152         CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal) ) 
    155153      ENDIF 
    156154      ! 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90

    r8910 r8924  
    11401140      CALL gls_rst( nit000, 'READ' )   !* read or initialize all required files 
    11411141      ! 
    1142       IF( lwxios ) THEN 
    1143          CALL iom_set_rstw_var_active('en') 
    1144          CALL iom_set_rstw_var_active('avt') 
    1145          CALL iom_set_rstw_var_active('avm') 
    1146          CALL iom_set_rstw_var_active('avmu') 
    1147          CALL iom_set_rstw_var_active('avmv') 
    1148          CALL iom_set_rstw_var_active('mxln') 
    1149       ENDIF 
    1150  
    11511142      IF( nn_timing == 1 )  CALL timing_stop('zdf_gls_init') 
    11521143      ! 
     
    11841175            ! 
    11851176            IF( MIN( id1, id2, id3, id4, id5, id6 ) > 0 ) THEN        ! all required arrays exist 
    1186                CALL iom_get( numror, jpdom_autoglo, 'en'    , en, ldxios = lrxios     ) 
    1187                CALL iom_get( numror, jpdom_autoglo, 'avt'   , avt, ldxios = lrxios    ) 
    1188                CALL iom_get( numror, jpdom_autoglo, 'avm'   , avm, ldxios = lrxios    ) 
    1189                CALL iom_get( numror, jpdom_autoglo, 'avmu'  , avmu, ldxios = lrxios   ) 
    1190                CALL iom_get( numror, jpdom_autoglo, 'avmv'  , avmv, ldxios = lrxios   ) 
    1191                CALL iom_get( numror, jpdom_autoglo, 'mxln'  , mxln, ldxios = lrxios   ) 
     1177               CALL iom_get( numror, jpdom_autoglo, 'en'    , en     ) 
     1178               CALL iom_get( numror, jpdom_autoglo, 'avt'   , avt    ) 
     1179               CALL iom_get( numror, jpdom_autoglo, 'avm'   , avm    ) 
     1180               CALL iom_get( numror, jpdom_autoglo, 'avmu'  , avmu   ) 
     1181               CALL iom_get( numror, jpdom_autoglo, 'avmv'  , avmv   ) 
     1182               CALL iom_get( numror, jpdom_autoglo, 'mxln'  , mxln   ) 
    11921183            ELSE                         
    11931184               IF(lwp) WRITE(numout,*) ' ===>>>> : previous run without gls scheme, en and mxln computed by iterative loop' 
     
    12091200         !                                   ! ------------------- 
    12101201         IF(lwp) WRITE(numout,*) '---- gls-rst ----' 
    1211          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    1212          CALL iom_rstput( kt, nitrst, numrow, 'en'   , en, ldxios = lwxios      )  
    1213          CALL iom_rstput( kt, nitrst, numrow, 'avt'  , avt_k, ldxios = lwxios  ) 
    1214          CALL iom_rstput( kt, nitrst, numrow, 'avm'  , avm_k, ldxios = lwxios  ) 
    1215          CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k, ldxios = lwxios )  
    1216          CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k, ldxios = lwxios ) 
    1217          CALL iom_rstput( kt, nitrst, numrow, 'mxln' , mxln, ldxios = lwxios   ) 
    1218          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     1202         CALL iom_rstput( kt, nitrst, numrow, 'en'   , en     )  
     1203         CALL iom_rstput( kt, nitrst, numrow, 'avt'  , avt_k  ) 
     1204         CALL iom_rstput( kt, nitrst, numrow, 'avm'  , avm_k  ) 
     1205         CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k )  
     1206         CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k ) 
     1207         CALL iom_rstput( kt, nitrst, numrow, 'mxln' , mxln   ) 
    12191208         ! 
    12201209      ENDIF 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90

    r8910 r8924  
    159159         ! file in traadv_cen2 end read here.  
    160160         IF( iom_varid( numror, 'avmb', ldstop = .FALSE. ) > 0 ) THEN 
    161             CALL iom_get( numror, jpdom_unknown, 'avmb', avmb, ldxios = lrxios ) 
    162             CALL iom_get( numror, jpdom_unknown, 'avtb', avtb, ldxios = lrxios ) 
     161            CALL iom_get( numror, jpdom_unknown, 'avmb', avmb ) 
     162            CALL iom_get( numror, jpdom_unknown, 'avtb', avtb ) 
    163163         ENDIF 
    164164      ENDIF 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r8910 r8924  
    814814      CALL tke_rst( nit000, 'READ' )  !* read or initialize all required files 
    815815      ! 
    816       IF( lwxios ) THEN 
    817          CALL iom_set_rstw_var_active('en') 
    818          CALL iom_set_rstw_var_active('avt') 
    819          CALL iom_set_rstw_var_active('avm') 
    820          CALL iom_set_rstw_var_active('avmu') 
    821          CALL iom_set_rstw_var_active('avmv') 
    822          CALL iom_set_rstw_var_active('dissl') 
    823       ENDIF 
    824  
    825816   END SUBROUTINE zdf_tke_init 
    826817 
     
    854845           ! 
    855846           IF( id1 > 0 ) THEN                       ! 'en' exists 
    856               CALL iom_get( numror, jpdom_autoglo, 'en', en, ldxios = lrxios ) 
     847              CALL iom_get( numror, jpdom_autoglo, 'en', en ) 
    857848              IF( MIN( id2, id3, id4, id5, id6 ) > 0 ) THEN        ! all required arrays exist 
    858                  CALL iom_get( numror, jpdom_autoglo, 'avt'  , avt, ldxios = lrxios   ) 
    859                  CALL iom_get( numror, jpdom_autoglo, 'avm'  , avm, ldxios = lrxios   ) 
    860                  CALL iom_get( numror, jpdom_autoglo, 'avmu' , avmu, ldxios = lrxios  ) 
    861                  CALL iom_get( numror, jpdom_autoglo, 'avmv' , avmv, ldxios = lrxios  ) 
    862                  CALL iom_get( numror, jpdom_autoglo, 'dissl', dissl, ldxios = lrxios ) 
     849                 CALL iom_get( numror, jpdom_autoglo, 'avt'  , avt   ) 
     850                 CALL iom_get( numror, jpdom_autoglo, 'avm'  , avm   ) 
     851                 CALL iom_get( numror, jpdom_autoglo, 'avmu' , avmu  ) 
     852                 CALL iom_get( numror, jpdom_autoglo, 'avmv' , avmv  ) 
     853                 CALL iom_get( numror, jpdom_autoglo, 'dissl', dissl ) 
    863854              ELSE                                                 ! one at least array is missing 
    864855                 CALL tke_avn                                          ! compute avt, avm, avmu, avmv and dissl (approximation) 
     
    889880        !                                   ! ------------------- 
    890881        IF(lwp) WRITE(numout,*) '---- tke-rst ----' 
    891         IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    892         CALL iom_rstput( kt, nitrst, numrow, 'en'   , en    , ldxios = lwxios ) 
    893         CALL iom_rstput( kt, nitrst, numrow, 'avt'  , avt_k , ldxios = lwxios ) 
    894         CALL iom_rstput( kt, nitrst, numrow, 'avm'  , avm_k , ldxios = lwxios ) 
    895         CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k, ldxios = lwxios ) 
    896         CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k, ldxios = lwxios ) 
    897         CALL iom_rstput( kt, nitrst, numrow, 'dissl', dissl , ldxios = lwxios ) 
    898         IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     882        CALL iom_rstput( kt, nitrst, numrow, 'en'   , en     ) 
     883        CALL iom_rstput( kt, nitrst, numrow, 'avt'  , avt_k  ) 
     884        CALL iom_rstput( kt, nitrst, numrow, 'avm'  , avm_k  ) 
     885        CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k ) 
     886        CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k ) 
     887        CALL iom_rstput( kt, nitrst, numrow, 'dissl', dissl  ) 
    899888        ! 
    900889     ENDIF 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r8910 r8924  
    422422      IF( lk_c1d        )   CALL     c1d_init   ! 1D column configuration 
    423423                            CALL     wad_init   ! Wetting and drying options 
    424                             CALL     dom_init("OPA")   ! Domain 
     424                            CALL     dom_init   ! Domain 
    425425      IF( ln_crs        )   CALL     crs_init   ! coarsened grid: domain initialization  
    426426      IF( ln_nnogather )    CALL nemo_northcomms! northfold neighbour lists (must be done after the masks are defined) 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/OPA_SRC/step.F90

    r8910 r8924  
    345345      IF( kstp == nitend .OR. indic < 0 ) THEN  
    346346                      CALL iom_context_finalize(      cxios_context          ) ! needed for XIOS+AGRIF 
    347                       IF(lrxios) CALL iom_context_finalize(      crxios_context          ) 
    348347         IF( ln_crs ) CALL iom_context_finalize( trim(cxios_context)//"_crs" ) !  
    349348      ENDIF 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/SAO_SRC/nemogcm.F90

    r8910 r8924  
    271271                            CALL     phy_cst    ! Physical constants 
    272272                            CALL     eos_init   ! Equation of state 
    273                             CALL     dom_init('SAO')   ! Domain 
     273                            CALL     dom_init   ! Domain 
    274274 
    275275      IF( ln_nnogather )    CALL nemo_northcomms   ! Initialise the northfold neighbour lists (must be done after the masks are defined) 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/SAS_SRC/daymod.F90

    r8910 r8924  
    3030   USE in_out_manager ! I/O manager 
    3131   USE prtctl         ! Print control 
    32    USE iom            ! I/O manager 
     32   USE iom            ! 
    3333   USE timing         ! Timing 
    3434   USE restart        ! restart 
     
    142142      ! call day to set the calendar parameters at the begining of the current simulaton. needed by iom_init 
    143143      CALL day( nit000 ) 
    144       IF( lwxios ) THEN 
    145         CALL iom_set_rstw_var_active('kt') 
    146         CALL iom_set_rstw_var_active('ndastp') 
    147         CALL iom_set_rstw_var_active('adatrj') 
    148         CALL iom_set_rstw_var_active('ntime') 
    149       ENDIF 
    150144      ! 
    151145   END SUBROUTINE day_init 
     
    324318         IF( iom_varid( numror, 'kt', ldstop = .FALSE. ) > 0 ) THEN 
    325319            ! Get Calendar informations 
    326             CALL iom_get( numror, 'kt', zkt, ldxios = lrxios )   ! last time-step of previous run 
     320            CALL iom_get( numror, 'kt', zkt )   ! last time-step of previous run 
    327321            IF(lwp) THEN 
    328322               WRITE(numout,*) ' *** Info read in restart : ' 
     
    343337            IF ( nrstdt == 2 ) THEN 
    344338               ! read the parameters corresponding to nit000 - 1 (last time step of previous run) 
    345                CALL iom_get( numror, 'ndastp', zndastp, ldxios = lrxios ) 
     339               CALL iom_get( numror, 'ndastp', zndastp ) 
    346340               ndastp = NINT( zndastp ) 
    347                CALL iom_get( numror, 'adatrj', adatrj , ldxios = lrxios ) 
    348           CALL iom_get( numror, 'ntime' , ktime  , ldxios = lrxios ) 
     341               CALL iom_get( numror, 'adatrj', adatrj ) 
     342          CALL iom_get( numror, 'ntime', ktime ) 
    349343          nn_time0=INT(ktime) 
    350344               ! calculate start time in hours and minutes 
     
    405399         ENDIF 
    406400         ! calendar control 
    407          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    408          CALL iom_rstput( kt, nitrst, numrow, 'kt'     , REAL( kt    , wp)  , ldxios = lwxios )   ! time-step 
    409          CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp)  , ldxios = lwxios )   ! date 
    410          CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj             , ldxios = lwxios )   ! number of elapsed days since 
     401         CALL iom_rstput( kt, nitrst, numrow, 'kt'     , REAL( kt    , wp) )   ! time-step 
     402         CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp) )   ! date 
     403         CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj            )   ! number of elapsed days since 
    411404         !                                                                     ! the begining of the run [s] 
    412     CALL iom_rstput( kt, nitrst, numrow, 'ntime'  , REAL( nn_time0, wp), ldxios = lwxios ) ! time 
    413          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     405    CALL iom_rstput( kt, nitrst, numrow, 'ntime'  , REAL( nn_time0, wp) ) ! time 
    414406      ENDIF 
    415407      ! 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/SAS_SRC/nemogcm.F90

    r8910 r8924  
    359359                            CALL phy_cst    ! Physical constants 
    360360                            CALL eos_init   ! Equation of state 
    361                             CALL dom_init('SAS')   ! Domain 
     361                            CALL dom_init   ! Domain 
     362 
    362363     IF( ln_nnogather )     CALL nemo_northcomms   ! Initialise the northfold neighbour lists (must be done after the masks are defined) 
    363364 
  • branches/2017/dev_METO_2017/NEMOGCM/NEMO/SAS_SRC/step.F90

    r8910 r8924  
    122122 
    123123#if defined key_iomput 
    124       IF( kstp == nitrst ) THEN 
    125          IF(.NOT.lwxios) THEN 
    126             CALL iom_close( numrow )      
    127          ELSE 
    128             CALL iom_context_finalize( cwxios_context ) 
    129          ENDIF 
    130          lrst_oce = .FALSE. 
    131       ENDIF 
    132       IF( kstp == nitend .OR. indic < 0 ) THEN 
     124      IF( kstp == nitend .OR. indic < 0 ) THEN  
    133125                             CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 
    134126      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.