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 13934 for NEMO – NEMO

Changeset 13934 for NEMO


Ignore:
Timestamp:
2020-12-01T13:17:32+01:00 (3 years ago)
Author:
andmirek
Message:

Ticket #2462: update test branch

Location:
NEMO/branches/2020/test_12905_xios_restart
Files:
60 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/test_12905_xios_restart/cfgs/C1D_PAPA/EXPREF/namelist_cfg

    r13727 r13934  
    428428/ 
    429429!----------------------------------------------------------------------- 
    430 !----------------------------------------------------------------------- 
    431 / 
    432 !----------------------------------------------------------------------- 
    433430&namhsb        !  Heat and salt budgets                                 (default: OFF) 
    434431!----------------------------------------------------------------------- 
  • NEMO/branches/2020/test_12905_xios_restart/cfgs/ORCA2_OFF_PISCES/EXPREF/namelist_cfg

    r13727 r13934  
    388388/ 
    389389!----------------------------------------------------------------------- 
    390 !----------------------------------------------------------------------- 
    391 / 
    392 !----------------------------------------------------------------------- 
    393390&namhsb        !  Heat and salt budgets                                 (default: OFF) 
    394391!----------------------------------------------------------------------- 
  • NEMO/branches/2020/test_12905_xios_restart/cfgs/ORCA2_OFF_TRC/EXPREF/namelist_cfg

    r13727 r13934  
    384384/ 
    385385!----------------------------------------------------------------------- 
    386 !----------------------------------------------------------------------- 
    387 / 
    388 !----------------------------------------------------------------------- 
    389386&namhsb        !  Heat and salt budgets                                 (default: OFF) 
    390387!----------------------------------------------------------------------- 
  • NEMO/branches/2020/test_12905_xios_restart/cfgs/SHARED/namelist_ref

    r13727 r13934  
    12641264!!gm   ln_trdmld_instant = .false.         !  flag to diagnose trends of instantantaneous or mean ML T/S 
    12651265!!gm 
    1266 / 
    12671266!----------------------------------------------------------------------- 
    12681267&namhsb        !  Heat and salt budgets                                 (default: OFF) 
  • NEMO/branches/2020/test_12905_xios_restart/cfgs/WED025/EXPREF/namelist_cfg

    r13727 r13934  
    583583/ 
    584584!----------------------------------------------------------------------- 
    585 !----------------------------------------------------------------------- 
    586 / 
    587 !----------------------------------------------------------------------- 
    588585&namhsb        !  Heat and salt budgets                                 (default: OFF) 
    589586!----------------------------------------------------------------------- 
  • NEMO/branches/2020/test_12905_xios_restart/src/ICE/ice.F90

    r13727 r13934  
    179179   LOGICAL , PUBLIC ::   ln_cndflx        !: use conduction flux as surface boundary condition (instead of qsr and qns)  
    180180   LOGICAL , PUBLIC ::   ln_cndemulate    !: emulate conduction flux (if not provided)  
    181    LOGICAL , PUBLIC ::   lrixios          !: use xios to read restart in SI3 
    182181   !                                      ! Conduction flux as surface forcing or not 
    183182   INTEGER, PUBLIC, PARAMETER ::   np_cnd_OFF = 0  !: no forcing from conduction flux (ice thermodynamics forced via qsr and qns) 
  • NEMO/branches/2020/test_12905_xios_restart/src/ICE/icedia.F90

    r13727 r13934  
    221221         IF( ln_rstart ) THEN                   !* Read the restart file 
    222222            ! 
    223             IF(lrixios) CALL iom_swap(crixios_context) 
    224             CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lrixios ) 
     223            CALL iom_get( numrir, 'kt_ice' , ziter ) 
    225224            IF(lwp) WRITE(numout,*) 
    226225            IF(lwp) WRITE(numout,*) 'ice_dia_rst read at time step = ', ziter 
    227226            IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
    228             CALL iom_get( numrir, 'frc_voltop' , frc_voltop, ldxios = lrixios  ) 
    229             CALL iom_get( numrir, 'frc_volbot' , frc_volbot, ldxios = lrixios  ) 
    230             CALL iom_get( numrir, 'frc_temtop' , frc_temtop, ldxios = lrixios  ) 
    231             CALL iom_get( numrir, 'frc_tembot' , frc_tembot, ldxios = lrixios  ) 
    232             CALL iom_get( numrir, 'frc_sal'    , frc_sal,    ldxios = lrixios  ) 
    233             CALL iom_get( numrir, jpdom_auto, 'vol_loc_ini', vol_loc_ini, ldxios = lrixios ) 
    234             CALL iom_get( numrir, jpdom_auto, 'tem_loc_ini', tem_loc_ini, ldxios = lrixios ) 
    235             CALL iom_get( numrir, jpdom_auto, 'sal_loc_ini', sal_loc_ini, ldxios = lrixios ) 
    236             IF(lrixios) CALL iom_swap(cxios_context) 
     227            CALL iom_get( numrir, 'frc_voltop' , frc_voltop  ) 
     228            CALL iom_get( numrir, 'frc_volbot' , frc_volbot  ) 
     229            CALL iom_get( numrir, 'frc_temtop' , frc_temtop  ) 
     230            CALL iom_get( numrir, 'frc_tembot' , frc_tembot  ) 
     231            CALL iom_get( numrir, 'frc_sal'    , frc_sal     ) 
     232            CALL iom_get( numrir, jpdom_auto, 'vol_loc_ini', vol_loc_ini ) 
     233            CALL iom_get( numrir, jpdom_auto, 'tem_loc_ini', tem_loc_ini ) 
     234            CALL iom_get( numrir, jpdom_auto, 'sal_loc_ini', sal_loc_ini ) 
    237235         ELSE 
    238236            IF(lwp) WRITE(numout,*) 
     
    263261         ! Write in numriw (if iter == nitrst) 
    264262         ! ------------------  
    265          IF( lwxios ) CALL iom_swap(      cwixios_context         ) 
    266          CALL iom_rstput( iter, nitrst, numriw, 'frc_voltop' , frc_voltop,  ldxios = lwxios ) 
    267          CALL iom_rstput( iter, nitrst, numriw, 'frc_volbot' , frc_volbot,  ldxios = lwxios ) 
    268          CALL iom_rstput( iter, nitrst, numriw, 'frc_temtop' , frc_temtop,  ldxios = lwxios ) 
    269          CALL iom_rstput( iter, nitrst, numriw, 'frc_tembot' , frc_tembot,  ldxios = lwxios ) 
    270          CALL iom_rstput( iter, nitrst, numriw, 'frc_sal'    , frc_sal,     ldxios = lwxios ) 
    271          CALL iom_rstput( iter, nitrst, numriw, 'vol_loc_ini', vol_loc_ini, ldxios = lwxios ) 
    272          CALL iom_rstput( iter, nitrst, numriw, 'tem_loc_ini', tem_loc_ini, ldxios = lwxios ) 
    273          CALL iom_rstput( iter, nitrst, numriw, 'sal_loc_ini', sal_loc_ini, ldxios = lwxios ) 
    274          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     263         CALL iom_rstput( iter, nitrst, numriw, 'frc_voltop' , frc_voltop ) 
     264         CALL iom_rstput( iter, nitrst, numriw, 'frc_volbot' , frc_volbot ) 
     265         CALL iom_rstput( iter, nitrst, numriw, 'frc_temtop' , frc_temtop ) 
     266         CALL iom_rstput( iter, nitrst, numriw, 'frc_tembot' , frc_tembot ) 
     267         CALL iom_rstput( iter, nitrst, numriw, 'frc_sal'    , frc_sal    ) 
     268         CALL iom_rstput( iter, nitrst, numriw, 'vol_loc_ini', vol_loc_ini ) 
     269         CALL iom_rstput( iter, nitrst, numriw, 'tem_loc_ini', tem_loc_ini ) 
     270         CALL iom_rstput( iter, nitrst, numriw, 'sal_loc_ini', sal_loc_ini ) 
    275271         ! 
    276272      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/ICE/icedyn_adv_pra.F90

    r13727 r13934  
    955955         ! 
    956956         IF( id1 > 0 ) THEN                     !**  Read the restart file  **! 
    957             IF(lrixios) CALL iom_swap(crixios_context) 
    958957            ! 
    959958            !                                                        ! ice thickness 
    960             CALL iom_get( numrir, jpdom_auto, 'sxice' , sxice , psgn = -1._wp, ldxios = lrixios ) 
    961             CALL iom_get( numrir, jpdom_auto, 'syice' , syice , psgn = -1._wp, ldxios = lrixios ) 
    962             CALL iom_get( numrir, jpdom_auto, 'sxxice', sxxice, ldxios = lrixios ) 
    963             CALL iom_get( numrir, jpdom_auto, 'syyice', syyice, ldxios = lrixios ) 
    964             CALL iom_get( numrir, jpdom_auto, 'sxyice', sxyice, ldxios = lrixios ) 
     959            CALL iom_get( numrir, jpdom_auto, 'sxice' , sxice , psgn = -1._wp ) 
     960            CALL iom_get( numrir, jpdom_auto, 'syice' , syice , psgn = -1._wp ) 
     961            CALL iom_get( numrir, jpdom_auto, 'sxxice', sxxice ) 
     962            CALL iom_get( numrir, jpdom_auto, 'syyice', syyice ) 
     963            CALL iom_get( numrir, jpdom_auto, 'sxyice', sxyice ) 
    965964            !                                                        ! snow thickness 
    966             CALL iom_get( numrir, jpdom_auto, 'sxsn'  , sxsn  , psgn = -1._wp, ldxios = lrixios ) 
    967             CALL iom_get( numrir, jpdom_auto, 'sysn'  , sysn  , psgn = -1._wp, ldxios = lrixios ) 
    968             CALL iom_get( numrir, jpdom_auto, 'sxxsn' , sxxsn, ldxios = lrixios  ) 
    969             CALL iom_get( numrir, jpdom_auto, 'syysn' , syysn, ldxios = lrixios  ) 
    970             CALL iom_get( numrir, jpdom_auto, 'sxysn' , sxysn, ldxios = lrixios  ) 
     965            CALL iom_get( numrir, jpdom_auto, 'sxsn'  , sxsn  , psgn = -1._wp ) 
     966            CALL iom_get( numrir, jpdom_auto, 'sysn'  , sysn  , psgn = -1._wp ) 
     967            CALL iom_get( numrir, jpdom_auto, 'sxxsn' , sxxsn  ) 
     968            CALL iom_get( numrir, jpdom_auto, 'syysn' , syysn  ) 
     969            CALL iom_get( numrir, jpdom_auto, 'sxysn' , sxysn  ) 
    971970            !                                                        ! ice concentration 
    972             CALL iom_get( numrir, jpdom_auto, 'sxa'   , sxa   , psgn = -1._wp, ldxios = lrixios ) 
    973             CALL iom_get( numrir, jpdom_auto, 'sya'   , sya   , psgn = -1._wp, ldxios = lrixios ) 
    974             CALL iom_get( numrir, jpdom_auto, 'sxxa'  , sxxa, ldxios = lrixios   ) 
    975             CALL iom_get( numrir, jpdom_auto, 'syya'  , syya, ldxios = lrixios   ) 
    976             CALL iom_get( numrir, jpdom_auto, 'sxya'  , sxya, ldxios = lrixios   ) 
     971            CALL iom_get( numrir, jpdom_auto, 'sxa'   , sxa   , psgn = -1._wp ) 
     972            CALL iom_get( numrir, jpdom_auto, 'sya'   , sya   , psgn = -1._wp ) 
     973            CALL iom_get( numrir, jpdom_auto, 'sxxa'  , sxxa   ) 
     974            CALL iom_get( numrir, jpdom_auto, 'syya'  , syya   ) 
     975            CALL iom_get( numrir, jpdom_auto, 'sxya'  , sxya   ) 
    977976            !                                                        ! ice salinity 
    978             CALL iom_get( numrir, jpdom_auto, 'sxsal' , sxsal , psgn = -1._wp, ldxios = lrixios ) 
    979             CALL iom_get( numrir, jpdom_auto, 'sysal' , sysal , psgn = -1._wp, ldxios = lrixios ) 
    980             CALL iom_get( numrir, jpdom_auto, 'sxxsal', sxxsal, ldxios = lrixios ) 
    981             CALL iom_get( numrir, jpdom_auto, 'syysal', syysal, ldxios = lrixios ) 
    982             CALL iom_get( numrir, jpdom_auto, 'sxysal', sxysal, ldxios = lrixios ) 
     977            CALL iom_get( numrir, jpdom_auto, 'sxsal' , sxsal , psgn = -1._wp ) 
     978            CALL iom_get( numrir, jpdom_auto, 'sysal' , sysal , psgn = -1._wp ) 
     979            CALL iom_get( numrir, jpdom_auto, 'sxxsal', sxxsal ) 
     980            CALL iom_get( numrir, jpdom_auto, 'syysal', syysal ) 
     981            CALL iom_get( numrir, jpdom_auto, 'sxysal', sxysal ) 
    983982            !                                                        ! ice age 
    984             CALL iom_get( numrir, jpdom_auto, 'sxage' , sxage , psgn = -1._wp, ldxios = lrixios ) 
    985             CALL iom_get( numrir, jpdom_auto, 'syage' , syage , psgn = -1._wp, ldxios = lrixios ) 
    986             CALL iom_get( numrir, jpdom_auto, 'sxxage', sxxage, ldxios = lrixios ) 
    987             CALL iom_get( numrir, jpdom_auto, 'syyage', syyage, ldxios = lrixios ) 
    988             CALL iom_get( numrir, jpdom_auto, 'sxyage', sxyage, ldxios = lrixios ) 
     983            CALL iom_get( numrir, jpdom_auto, 'sxage' , sxage , psgn = -1._wp ) 
     984            CALL iom_get( numrir, jpdom_auto, 'syage' , syage , psgn = -1._wp ) 
     985            CALL iom_get( numrir, jpdom_auto, 'sxxage', sxxage ) 
     986            CALL iom_get( numrir, jpdom_auto, 'syyage', syyage ) 
     987            CALL iom_get( numrir, jpdom_auto, 'sxyage', sxyage ) 
    989988            !                                                        ! snow layers heat content 
    990989            DO jk = 1, nlay_s 
    991990               WRITE(zchar1,'(I2.2)') jk 
    992991               znam = 'sxc0'//'_l'//zchar1   
    993                CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrixios )   ;   sxc0 (:,:,jk,:) = z3d(:,:,:) 
     992               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp )   ;   sxc0 (:,:,jk,:) = z3d(:,:,:) 
    994993               znam = 'syc0'//'_l'//zchar1   
    995                CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrixios )   ;   syc0 (:,:,jk,:) = z3d(:,:,:) 
     994               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp )   ;   syc0 (:,:,jk,:) = z3d(:,:,:) 
    996995               znam = 'sxxc0'//'_l'//zchar1  
    997                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   sxxc0(:,:,jk,:) = z3d(:,:,:) 
     996               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   sxxc0(:,:,jk,:) = z3d(:,:,:) 
    998997               znam = 'syyc0'//'_l'//zchar1  
    999                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   syyc0(:,:,jk,:) = z3d(:,:,:) 
     998               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   syyc0(:,:,jk,:) = z3d(:,:,:) 
    1000999               znam = 'sxyc0'//'_l'//zchar1  
    1001                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   sxyc0(:,:,jk,:) = z3d(:,:,:) 
     1000               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   sxyc0(:,:,jk,:) = z3d(:,:,:) 
    10021001            END DO 
    10031002            !                                                        ! ice layers heat content 
     
    10051004               WRITE(zchar1,'(I2.2)') jk 
    10061005               znam = 'sxe'//'_l'//zchar1    
    1007                CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrixios )   ;   sxe (:,:,jk,:) = z3d(:,:,:) 
     1006               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp )   ;   sxe (:,:,jk,:) = z3d(:,:,:) 
    10081007               znam = 'sye'//'_l'//zchar1    
    1009                CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrixios )   ;   sye (:,:,jk,:) = z3d(:,:,:) 
     1008               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp )   ;   sye (:,:,jk,:) = z3d(:,:,:) 
    10101009               znam = 'sxxe'//'_l'//zchar1   
    1011                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   sxxe(:,:,jk,:) = z3d(:,:,:) 
     1010               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   sxxe(:,:,jk,:) = z3d(:,:,:) 
    10121011               znam = 'syye'//'_l'//zchar1   
    1013                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   syye(:,:,jk,:) = z3d(:,:,:) 
     1012               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   syye(:,:,jk,:) = z3d(:,:,:) 
    10141013               znam = 'sxye'//'_l'//zchar1   
    1015                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   sxye(:,:,jk,:) = z3d(:,:,:) 
     1014               CALL iom_get( numrir, jpdom_auto, znam , z3d )   ;   sxye(:,:,jk,:) = z3d(:,:,:) 
    10161015            END DO 
    10171016            ! 
    10181017            IF( ln_pnd_LEV ) THEN                                    ! melt pond fraction 
    10191018               IF( iom_varid( numrir, 'sxap', ldstop = .FALSE. ) > 0 ) THEN 
    1020                   CALL iom_get( numrir, jpdom_auto, 'sxap' , sxap , psgn = -1._wp, ldxios = lrixios ) 
    1021                   CALL iom_get( numrir, jpdom_auto, 'syap' , syap , psgn = -1._wp, ldxios = lrixios ) 
    1022                   CALL iom_get( numrir, jpdom_auto, 'sxxap', sxxap, ldxios = lrixios ) 
    1023                   CALL iom_get( numrir, jpdom_auto, 'syyap', syyap, ldxios = lrixios ) 
    1024                   CALL iom_get( numrir, jpdom_auto, 'sxyap', sxyap, ldxios = lrixios ) 
     1019                  CALL iom_get( numrir, jpdom_auto, 'sxap' , sxap , psgn = -1._wp ) 
     1020                  CALL iom_get( numrir, jpdom_auto, 'syap' , syap , psgn = -1._wp ) 
     1021                  CALL iom_get( numrir, jpdom_auto, 'sxxap', sxxap ) 
     1022                  CALL iom_get( numrir, jpdom_auto, 'syyap', syyap ) 
     1023                  CALL iom_get( numrir, jpdom_auto, 'sxyap', sxyap ) 
    10251024                  !                                                     ! melt pond volume 
    1026                   CALL iom_get( numrir, jpdom_auto, 'sxvp' , sxvp , psgn = -1._wp, ldxios = lrixios ) 
    1027                   CALL iom_get( numrir, jpdom_auto, 'syvp' , syvp , psgn = -1._wp, ldxios = lrixios ) 
    1028                   CALL iom_get( numrir, jpdom_auto, 'sxxvp', sxxvp, ldxios = lrixios ) 
    1029                   CALL iom_get( numrir, jpdom_auto, 'syyvp', syyvp, ldxios = lrixios ) 
    1030                   CALL iom_get( numrir, jpdom_auto, 'sxyvp', sxyvp, ldxios = lrixios ) 
     1025                  CALL iom_get( numrir, jpdom_auto, 'sxvp' , sxvp , psgn = -1._wp ) 
     1026                  CALL iom_get( numrir, jpdom_auto, 'syvp' , syvp , psgn = -1._wp ) 
     1027                  CALL iom_get( numrir, jpdom_auto, 'sxxvp', sxxvp ) 
     1028                  CALL iom_get( numrir, jpdom_auto, 'syyvp', syyvp ) 
     1029                  CALL iom_get( numrir, jpdom_auto, 'sxyvp', sxyvp ) 
    10311030               ELSE 
    10321031                  sxap = 0._wp ;   syap = 0._wp    ;   sxxap = 0._wp    ;   syyap = 0._wp    ;   sxyap = 0._wp   ! melt pond fraction 
     
    10361035               IF ( ln_pnd_lids ) THEN                               ! melt pond lid volume 
    10371036                  IF( iom_varid( numrir, 'sxvl', ldstop = .FALSE. ) > 0 ) THEN 
    1038                      CALL iom_get( numrir, jpdom_auto, 'sxvl' , sxvl , psgn = -1._wp, ldxios = lrixios ) 
    1039                      CALL iom_get( numrir, jpdom_auto, 'syvl' , syvl , psgn = -1._wp, ldxios = lrixios ) 
    1040                      CALL iom_get( numrir, jpdom_auto, 'sxxvl', sxxvl, ldxios = lrixios ) 
    1041                      CALL iom_get( numrir, jpdom_auto, 'syyvl', syyvl, ldxios = lrixios ) 
    1042                      CALL iom_get( numrir, jpdom_auto, 'sxyvl', sxyvl, ldxios = lrixios ) 
     1037                     CALL iom_get( numrir, jpdom_auto, 'sxvl' , sxvl , psgn = -1._wp ) 
     1038                     CALL iom_get( numrir, jpdom_auto, 'syvl' , syvl , psgn = -1._wp ) 
     1039                     CALL iom_get( numrir, jpdom_auto, 'sxxvl', sxxvl ) 
     1040                     CALL iom_get( numrir, jpdom_auto, 'syyvl', syyvl ) 
     1041                     CALL iom_get( numrir, jpdom_auto, 'sxyvl', sxyvl ) 
    10431042                  ELSE 
    10441043                     sxvl = 0._wp; syvl = 0._wp    ;   sxxvl = 0._wp    ;   syyvl = 0._wp    ;   sxyvl = 0._wp   ! melt pond lid volume 
     
    10461045               ENDIF 
    10471046            ENDIF 
    1048             IF(lrixios) CALL iom_swap(cxios_context) 
    10491047            ! 
    10501048         ELSE                                   !**  start rheology from rest  **! 
     
    10791077         ! 
    10801078         !                                                           ! ice thickness 
    1081          IF( lwxios ) CALL iom_swap(      cwixios_context         ) 
    1082          CALL iom_rstput( iter, nitrst, numriw, 'sxice' , sxice,  ldxios = lwxios) 
    1083          CALL iom_rstput( iter, nitrst, numriw, 'syice' , syice,  ldxios = lwxios) 
    1084          CALL iom_rstput( iter, nitrst, numriw, 'sxxice', sxxice, ldxios = lwxios) 
    1085          CALL iom_rstput( iter, nitrst, numriw, 'syyice', syyice, ldxios = lwxios) 
    1086          CALL iom_rstput( iter, nitrst, numriw, 'sxyice', sxyice, ldxios = lwxios) 
     1079         CALL iom_rstput( iter, nitrst, numriw, 'sxice' , sxice) 
     1080         CALL iom_rstput( iter, nitrst, numriw, 'syice' , syice) 
     1081         CALL iom_rstput( iter, nitrst, numriw, 'sxxice', sxxice) 
     1082         CALL iom_rstput( iter, nitrst, numriw, 'syyice', syyice) 
     1083         CALL iom_rstput( iter, nitrst, numriw, 'sxyice', sxyice) 
    10871084         !                                                           ! snow thickness 
    1088          CALL iom_rstput( iter, nitrst, numriw, 'sxsn'  , sxsn,  ldxios = lwxios ) 
    1089          CALL iom_rstput( iter, nitrst, numriw, 'sysn'  , sysn,  ldxios = lwxios ) 
    1090          CALL iom_rstput( iter, nitrst, numriw, 'sxxsn' , sxxsn, ldxios = lwxios ) 
    1091          CALL iom_rstput( iter, nitrst, numriw, 'syysn' , syysn, ldxios = lwxios ) 
    1092          CALL iom_rstput( iter, nitrst, numriw, 'sxysn' , sxysn, ldxios = lwxios ) 
     1085         CALL iom_rstput( iter, nitrst, numriw, 'sxsn'  , sxsn ) 
     1086         CALL iom_rstput( iter, nitrst, numriw, 'sysn'  , sysn ) 
     1087         CALL iom_rstput( iter, nitrst, numriw, 'sxxsn' , sxxsn ) 
     1088         CALL iom_rstput( iter, nitrst, numriw, 'syysn' , syysn ) 
     1089         CALL iom_rstput( iter, nitrst, numriw, 'sxysn' , sxysn ) 
    10931090         !                                                           ! ice concentration 
    1094          CALL iom_rstput( iter, nitrst, numriw, 'sxa'   , sxa,  ldxios = lwxios  ) 
    1095          CALL iom_rstput( iter, nitrst, numriw, 'sya'   , sya,  ldxios = lwxios  ) 
    1096          CALL iom_rstput( iter, nitrst, numriw, 'sxxa'  , sxxa, ldxios = lwxios  ) 
    1097          CALL iom_rstput( iter, nitrst, numriw, 'syya'  , syya, ldxios = lwxios  ) 
    1098          CALL iom_rstput( iter, nitrst, numriw, 'sxya'  , sxya, ldxios = lwxios  ) 
     1091         CALL iom_rstput( iter, nitrst, numriw, 'sxa'   , sxa  ) 
     1092         CALL iom_rstput( iter, nitrst, numriw, 'sya'   , sya  ) 
     1093         CALL iom_rstput( iter, nitrst, numriw, 'sxxa'  , sxxa  ) 
     1094         CALL iom_rstput( iter, nitrst, numriw, 'syya'  , syya  ) 
     1095         CALL iom_rstput( iter, nitrst, numriw, 'sxya'  , sxya  ) 
    10991096         !                                                           ! ice salinity 
    1100          CALL iom_rstput( iter, nitrst, numriw, 'sxsal' , sxsal,  ldxios = lwxios) 
    1101          CALL iom_rstput( iter, nitrst, numriw, 'sysal' , sysal,  ldxios = lwxios) 
    1102          CALL iom_rstput( iter, nitrst, numriw, 'sxxsal', sxxsal, ldxios = lwxios) 
    1103          CALL iom_rstput( iter, nitrst, numriw, 'syysal', syysal, ldxios = lwxios) 
    1104          CALL iom_rstput( iter, nitrst, numriw, 'sxysal', sxysal, ldxios = lwxios) 
     1097         CALL iom_rstput( iter, nitrst, numriw, 'sxsal' , sxsal) 
     1098         CALL iom_rstput( iter, nitrst, numriw, 'sysal' , sysal) 
     1099         CALL iom_rstput( iter, nitrst, numriw, 'sxxsal', sxxsal) 
     1100         CALL iom_rstput( iter, nitrst, numriw, 'syysal', syysal) 
     1101         CALL iom_rstput( iter, nitrst, numriw, 'sxysal', sxysal) 
    11051102         !                                                           ! ice age 
    1106          CALL iom_rstput( iter, nitrst, numriw, 'sxage' , sxage,  ldxios = lwxios) 
    1107          CALL iom_rstput( iter, nitrst, numriw, 'syage' , syage,  ldxios = lwxios) 
    1108          CALL iom_rstput( iter, nitrst, numriw, 'sxxage', sxxage, ldxios = lwxios) 
    1109          CALL iom_rstput( iter, nitrst, numriw, 'syyage', syyage, ldxios = lwxios) 
    1110          CALL iom_rstput( iter, nitrst, numriw, 'sxyage', sxyage, ldxios = lwxios) 
     1103         CALL iom_rstput( iter, nitrst, numriw, 'sxage' , sxage) 
     1104         CALL iom_rstput( iter, nitrst, numriw, 'syage' , syage) 
     1105         CALL iom_rstput( iter, nitrst, numriw, 'sxxage', sxxage) 
     1106         CALL iom_rstput( iter, nitrst, numriw, 'syyage', syyage) 
     1107         CALL iom_rstput( iter, nitrst, numriw, 'sxyage', sxyage) 
    11111108         !                                                           ! snow layers heat content 
    11121109         DO jk = 1, nlay_s 
    11131110            WRITE(zchar1,'(I2.2)') jk 
    11141111            znam = 'sxc0'//'_l'//zchar1  ;   z3d(:,:,:) = sxc0 (:,:,jk,:) 
    1115             CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios) 
     1112            CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 
    11161113            znam = 'syc0'//'_l'//zchar1  ;   z3d(:,:,:) = syc0 (:,:,jk,:) 
    1117             CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios) 
     1114            CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 
    11181115            znam = 'sxxc0'//'_l'//zchar1 ;   z3d(:,:,:) = sxxc0(:,:,jk,:) 
    1119             CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios) 
     1116            CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 
    11201117            znam = 'syyc0'//'_l'//zchar1 ;   z3d(:,:,:) = syyc0(:,:,jk,:) 
    1121             CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios) 
     1118            CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 
    11221119            znam = 'sxyc0'//'_l'//zchar1 ;   z3d(:,:,:) = sxyc0(:,:,jk,:) 
    1123             CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios) 
     1120            CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 
    11241121         END DO 
    11251122         !                                                           ! ice layers heat content 
     
    11271124            WRITE(zchar1,'(I2.2)') jk 
    11281125            znam = 'sxe'//'_l'//zchar1   ;   z3d(:,:,:) = sxe (:,:,jk,:) 
    1129             CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios) 
     1126            CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 
    11301127            znam = 'sye'//'_l'//zchar1   ;   z3d(:,:,:) = sye (:,:,jk,:) 
    1131             CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios) 
     1128            CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 
    11321129            znam = 'sxxe'//'_l'//zchar1  ;   z3d(:,:,:) = sxxe(:,:,jk,:) 
    1133             CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios) 
     1130            CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 
    11341131            znam = 'syye'//'_l'//zchar1  ;   z3d(:,:,:) = syye(:,:,jk,:) 
    1135             CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios) 
     1132            CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 
    11361133            znam = 'sxye'//'_l'//zchar1  ;   z3d(:,:,:) = sxye(:,:,jk,:) 
    1137             CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios) 
     1134            CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 
    11381135         END DO 
    11391136         ! 
    11401137         IF( ln_pnd_LEV ) THEN                                       ! melt pond fraction 
    1141             CALL iom_rstput( iter, nitrst, numriw, 'sxap' , sxap , ldxios = lwxios ) 
    1142             CALL iom_rstput( iter, nitrst, numriw, 'syap' , syap , ldxios = lwxios ) 
    1143             CALL iom_rstput( iter, nitrst, numriw, 'sxxap', sxxap, ldxios = lwxios ) 
    1144             CALL iom_rstput( iter, nitrst, numriw, 'syyap', syyap, ldxios = lwxios ) 
    1145             CALL iom_rstput( iter, nitrst, numriw, 'sxyap', sxyap, ldxios = lwxios ) 
     1138            CALL iom_rstput( iter, nitrst, numriw, 'sxap' , sxap ) 
     1139            CALL iom_rstput( iter, nitrst, numriw, 'syap' , syap ) 
     1140            CALL iom_rstput( iter, nitrst, numriw, 'sxxap', sxxap ) 
     1141            CALL iom_rstput( iter, nitrst, numriw, 'syyap', syyap ) 
     1142            CALL iom_rstput( iter, nitrst, numriw, 'sxyap', sxyap ) 
    11461143            !                                                        ! melt pond volume 
    1147             CALL iom_rstput( iter, nitrst, numriw, 'sxvp' , sxvp , ldxios = lwxios ) 
    1148             CALL iom_rstput( iter, nitrst, numriw, 'syvp' , syvp , ldxios = lwxios ) 
    1149             CALL iom_rstput( iter, nitrst, numriw, 'sxxvp', sxxvp, ldxios = lwxios ) 
    1150             CALL iom_rstput( iter, nitrst, numriw, 'syyvp', syyvp, ldxios = lwxios ) 
    1151             CALL iom_rstput( iter, nitrst, numriw, 'sxyvp', sxyvp, ldxios = lwxios ) 
     1144            CALL iom_rstput( iter, nitrst, numriw, 'sxvp' , sxvp ) 
     1145            CALL iom_rstput( iter, nitrst, numriw, 'syvp' , syvp ) 
     1146            CALL iom_rstput( iter, nitrst, numriw, 'sxxvp', sxxvp ) 
     1147            CALL iom_rstput( iter, nitrst, numriw, 'syyvp', syyvp ) 
     1148            CALL iom_rstput( iter, nitrst, numriw, 'sxyvp', sxyvp ) 
    11521149            ! 
    11531150            IF ( ln_pnd_lids ) THEN                                  ! melt pond lid volume 
    1154                CALL iom_rstput( iter, nitrst, numriw, 'sxvl' , sxvl , ldxios = lwxios ) 
    1155                CALL iom_rstput( iter, nitrst, numriw, 'syvl' , syvl , ldxios = lwxios ) 
    1156                CALL iom_rstput( iter, nitrst, numriw, 'sxxvl', sxxvl, ldxios = lwxios ) 
    1157                CALL iom_rstput( iter, nitrst, numriw, 'syyvl', syyvl, ldxios = lwxios ) 
    1158                CALL iom_rstput( iter, nitrst, numriw, 'sxyvl', sxyvl, ldxios = lwxios ) 
     1151               CALL iom_rstput( iter, nitrst, numriw, 'sxvl' , sxvl ) 
     1152               CALL iom_rstput( iter, nitrst, numriw, 'syvl' , syvl ) 
     1153               CALL iom_rstput( iter, nitrst, numriw, 'sxxvl', sxxvl ) 
     1154               CALL iom_rstput( iter, nitrst, numriw, 'syyvl', syyvl ) 
     1155               CALL iom_rstput( iter, nitrst, numriw, 'sxyvl', sxyvl ) 
    11591156            ENDIF 
    11601157         ENDIF 
    1161          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
    11621158         ! 
    11631159      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/ICE/icedyn_rhg_evp.F90

    r13727 r13934  
    10051005         IF( ln_rstart ) THEN                   !* Read the restart file 
    10061006            ! 
    1007             IF(lrixios) CALL iom_swap(crixios_context) 
    10081007            id1 = iom_varid( numrir, 'stress1_i' , ldstop = .FALSE. ) 
    10091008            id2 = iom_varid( numrir, 'stress2_i' , ldstop = .FALSE. ) 
     
    10111010            ! 
    10121011            IF( MIN( id1, id2, id3 ) > 0 ) THEN      ! fields exist 
    1013                CALL iom_get( numrir, jpdom_auto, 'stress1_i' , stress1_i , cd_type = 'T', ldxios = lrixios ) 
    1014                CALL iom_get( numrir, jpdom_auto, 'stress2_i' , stress2_i , cd_type = 'T', ldxios = lrixios ) 
    1015                CALL iom_get( numrir, jpdom_auto, 'stress12_i', stress12_i, cd_type = 'F', ldxios = lrixios ) 
     1012               CALL iom_get( numrir, jpdom_auto, 'stress1_i' , stress1_i , cd_type = 'T' ) 
     1013               CALL iom_get( numrir, jpdom_auto, 'stress2_i' , stress2_i , cd_type = 'T' ) 
     1014               CALL iom_get( numrir, jpdom_auto, 'stress12_i', stress12_i, cd_type = 'F' ) 
    10161015            ELSE                                     ! start rheology from rest 
    10171016               IF(lwp) WRITE(numout,*) 
     
    10211020               stress12_i(:,:) = 0._wp 
    10221021            ENDIF 
    1023             IF(lrixios) CALL iom_swap(cxios_context) 
    10241022         ELSE                                   !* Start from rest 
    10251023            IF(lwp) WRITE(numout,*) 
     
    10351033         iter = kt + nn_fsbc - 1             ! ice restarts are written at kt == nitrst - nn_fsbc + 1 
    10361034         ! 
    1037          IF( lwxios ) CALL iom_swap(      cwixios_context         ) 
    1038          CALL iom_rstput( iter, nitrst, numriw, 'stress1_i' , stress1_i,  ldxios = lwxios ) 
    1039          CALL iom_rstput( iter, nitrst, numriw, 'stress2_i' , stress2_i,  ldxios = lwxios ) 
    1040          CALL iom_rstput( iter, nitrst, numriw, 'stress12_i', stress12_i, ldxios = lwxios ) 
    1041          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     1035         CALL iom_rstput( iter, nitrst, numriw, 'stress1_i' , stress1_i ) 
     1036         CALL iom_rstput( iter, nitrst, numriw, 'stress2_i' , stress2_i ) 
     1037         CALL iom_rstput( iter, nitrst, numriw, 'stress12_i', stress12_i ) 
    10421038         ! 
    10431039      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/ICE/icerst.F90

    r13750 r13934  
    8989            ELSE 
    9090#if defined key_iomput 
    91                cwixios_context = "rstwi_"//TRIM(ADJUSTL(clkt)) 
     91               cw_icerst_cxt = "rstwi_"//TRIM(ADJUSTL(clkt)) 
    9292               IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    9393                  clpname = clname 
     
    9595                  clpname = TRIM(Agrif_CFixed())//"_"//clname 
    9696               ENDIF 
    97                CALL iom_init( cwixios_context, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE. ) 
    98                CALL iom_swap(      cxios_context          ) 
     97               numriw = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 
     98               CALL iom_init( cw_icerst_cxt, kdid = numriw, ld_closedef = .FALSE. ) 
     99               CALL iom_swap( cxios_context ) 
    99100#else 
    100101               clinfo = 'Can not use XIOS in rst_opn' 
     
    134135         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~'          
    135136      ENDIF 
    136  
     137       
    137138      ! Write in numriw (if iter == nitrst) 
    138139      ! ------------------  
    139140      !                                                                        ! calendar control 
    140       IF( lwxios ) CALL iom_swap(      cwixios_context         ) 
    141       CALL iom_rstput( iter, nitrst, numriw, 'nn_fsbc', REAL( nn_fsbc, wp ), ldxios = lwxios )      ! time-step  
    142       CALL iom_rstput( iter, nitrst, numriw, 'kt_ice' , REAL( iter   , wp ), ldxios = lwxios )      ! date 
    143       CALL iom_delay_rst( 'WRITE', 'ICE', numriw )   ! save only ice delayed global communication variables 
     141      CALL iom_rstput( iter, nitrst, numriw, 'nn_fsbc', REAL( nn_fsbc, wp ) )      ! time-step  
     142      CALL iom_rstput( iter, nitrst, numriw, 'kt_ice' , REAL( iter   , wp ) )      ! date 
     143       
     144      IF(.NOT.lwxios) CALL iom_delay_rst( 'WRITE', 'ICE', numriw )   ! save only ice delayed global communication variables 
    144145 
    145146      ! Prognostic variables 
    146       CALL iom_rstput( iter, nitrst, numriw, 'v_i'  , v_i  , ldxios = lwxios ) 
    147       CALL iom_rstput( iter, nitrst, numriw, 'v_s'  , v_s  , ldxios = lwxios ) 
    148       CALL iom_rstput( iter, nitrst, numriw, 'sv_i' , sv_i , ldxios = lwxios ) 
    149       CALL iom_rstput( iter, nitrst, numriw, 'a_i'  , a_i  , ldxios = lwxios ) 
    150       CALL iom_rstput( iter, nitrst, numriw, 't_su' , t_su , ldxios = lwxios ) 
    151       CALL iom_rstput( iter, nitrst, numriw, 'u_ice', u_ice, ldxios = lwxios ) 
    152       CALL iom_rstput( iter, nitrst, numriw, 'v_ice', v_ice, ldxios = lwxios ) 
    153       CALL iom_rstput( iter, nitrst, numriw, 'oa_i' , oa_i , ldxios = lwxios ) 
    154       CALL iom_rstput( iter, nitrst, numriw, 'a_ip' , a_ip , ldxios = lwxios ) 
    155       CALL iom_rstput( iter, nitrst, numriw, 'v_ip' , v_ip , ldxios = lwxios ) 
    156       CALL iom_rstput( iter, nitrst, numriw, 'v_il' , v_il , ldxios = lwxios ) 
     147      CALL iom_rstput( iter, nitrst, numriw, 'v_i'  , v_i  ) 
     148      CALL iom_rstput( iter, nitrst, numriw, 'v_s'  , v_s  ) 
     149      CALL iom_rstput( iter, nitrst, numriw, 'sv_i' , sv_i ) 
     150      CALL iom_rstput( iter, nitrst, numriw, 'a_i'  , a_i  ) 
     151      CALL iom_rstput( iter, nitrst, numriw, 't_su' , t_su ) 
     152      CALL iom_rstput( iter, nitrst, numriw, 'u_ice', u_ice ) 
     153      CALL iom_rstput( iter, nitrst, numriw, 'v_ice', v_ice ) 
     154      CALL iom_rstput( iter, nitrst, numriw, 'oa_i' , oa_i ) 
     155      CALL iom_rstput( iter, nitrst, numriw, 'a_ip' , a_ip ) 
     156      CALL iom_rstput( iter, nitrst, numriw, 'v_ip' , v_ip ) 
     157      CALL iom_rstput( iter, nitrst, numriw, 'v_il' , v_il ) 
    157158      ! Snow enthalpy 
    158159      DO jk = 1, nlay_s  
     
    160161         znam = 'e_s'//'_l'//zchar1 
    161162         z3d(:,:,:) = e_s(:,:,jk,:) 
    162          CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios ) 
     163         CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
    163164      END DO 
    164165      ! Ice enthalpy 
     
    167168         znam = 'e_i'//'_l'//zchar1 
    168169         z3d(:,:,:) = e_i(:,:,jk,:) 
    169          CALL iom_rstput( iter, nitrst, numriw, znam , z3d, ldxios = lwxios ) 
     170         CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 
    170171      END DO 
    171172      ! fields needed for Met Office (Jules) coupling 
    172173      IF( ln_cpl ) THEN 
    173          CALL iom_rstput( iter, nitrst, numriw, 'cnd_ice', cnd_ice, ldxios = lwxios ) 
    174          CALL iom_rstput( iter, nitrst, numriw, 't1_ice' , t1_ice,  ldxios = lwxios ) 
    175       ENDIF 
    176       IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     174         CALL iom_rstput( iter, nitrst, numriw, 'cnd_ice', cnd_ice ) 
     175         CALL iom_rstput( iter, nitrst, numriw, 't1_ice' , t1_ice ) 
     176      ENDIF 
    177177      ! 
    178178 
     
    183183            CALL iom_close( numriw ) 
    184184         ELSE 
    185             CALL iom_context_finalize(      cwixios_context          ) 
     185            CALL iom_context_finalize(      cw_icerst_cxt          ) 
     186            iom_file(numriw)%nfid       = 0 
     187            numriw = 0 
    186188         ENDIF 
    187189         lrst_ice = .FALSE. 
     
    217219      CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir ) 
    218220 
    219       lrixios = lrxios.AND.lxios_sini 
    220       IF( lrixios) THEN 
    221           crixios_context = 'si3_rst' 
     221      IF( lrxios) THEN 
     222          cr_icerst_cxt = 'si3_rst' 
    222223          IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SI3' 
    223           IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    224              clpname = cn_icerst_in 
    225           ELSE 
    226              clpname = TRIM(Agrif_CFixed())//"_"//cn_icerst_in    
    227           ENDIF 
    228           CALL iom_init( crixios_context, fname = TRIM(cn_icerst_indir)//'/'//TRIM(clpname), & 
    229                                           idfp = iom_file(numrir)%nfid, ld_closedef = .TRUE. ) 
     224!         IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     225!            clpname = cn_icerst_in 
     226!         ELSE 
     227!            clpname = TRIM(Agrif_CFixed())//"_"//cn_icerst_in    
     228!         ENDIF 
     229          CALL iom_init( cr_icerst_cxt, kdid = numrir, ld_closedef = .TRUE. ) 
    230230      ENDIF 
    231231 
     
    236236      IF( id0 > 0 ) THEN   ! == case of a normal restart == ! 
    237237         !                 ! ------------------------------ ! 
    238          IF(lrixios) CALL iom_swap(crixios_context)  
    239238         ! Time info 
    240          CALL iom_get( numrir, 'nn_fsbc', zfice, ldxios = lrixios ) 
    241          CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lrixios )     
     239         CALL iom_get( numrir, 'nn_fsbc', zfice ) 
     240         CALL iom_get( numrir, 'kt_ice' , ziter )     
    242241         IF(lwp) WRITE(numout,*) '   read ice restart file at time step    : ', ziter 
    243242         IF(lwp) WRITE(numout,*) '   in any case we force it to nit000 - 1 : ', nit000 - 1 
     
    254253 
    255254         ! --- mandatory fields --- !  
    256          CALL iom_get( numrir, jpdom_auto, 'v_i'  , v_i  , ldxios = lrixios ) 
    257          CALL iom_get( numrir, jpdom_auto, 'v_s'  , v_s  , ldxios = lrixios ) 
    258          CALL iom_get( numrir, jpdom_auto, 'sv_i' , sv_i , ldxios = lrixios ) 
    259          CALL iom_get( numrir, jpdom_auto, 'a_i'  , a_i  , ldxios = lrixios ) 
    260          CALL iom_get( numrir, jpdom_auto, 't_su' , t_su , ldxios = lrixios ) 
    261          CALL iom_get( numrir, jpdom_auto, 'u_ice', u_ice, cd_type = 'U', psgn = -1._wp, ldxios = lrixios ) 
    262          CALL iom_get( numrir, jpdom_auto, 'v_ice', v_ice, cd_type = 'V', psgn = -1._wp, ldxios = lrixios ) 
     255         CALL iom_get( numrir, jpdom_auto, 'v_i'  , v_i  ) 
     256         CALL iom_get( numrir, jpdom_auto, 'v_s'  , v_s  ) 
     257         CALL iom_get( numrir, jpdom_auto, 'sv_i' , sv_i ) 
     258         CALL iom_get( numrir, jpdom_auto, 'a_i'  , a_i  ) 
     259         CALL iom_get( numrir, jpdom_auto, 't_su' , t_su ) 
     260         CALL iom_get( numrir, jpdom_auto, 'u_ice', u_ice, cd_type = 'U', psgn = -1._wp ) 
     261         CALL iom_get( numrir, jpdom_auto, 'v_ice', v_ice, cd_type = 'V', psgn = -1._wp ) 
    263262         ! Snow enthalpy 
    264263         DO jk = 1, nlay_s 
    265264            WRITE(zchar1,'(I2.2)') jk 
    266265            znam = 'e_s'//'_l'//zchar1 
    267             CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios ) 
     266            CALL iom_get( numrir, jpdom_auto, znam , z3d ) 
    268267            e_s(:,:,jk,:) = z3d(:,:,:) 
    269268         END DO 
     
    272271            WRITE(zchar1,'(I2.2)') jk 
    273272            znam = 'e_i'//'_l'//zchar1 
    274             CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios ) 
     273            CALL iom_get( numrir, jpdom_auto, znam , z3d ) 
    275274            e_i(:,:,jk,:) = z3d(:,:,:) 
    276275         END DO 
     
    279278         id1 = iom_varid( numrir, 'oa_i' , ldstop = .FALSE. ) 
    280279         IF( id1 > 0 ) THEN                       ! fields exist 
    281             CALL iom_get( numrir, jpdom_auto, 'oa_i', oa_i, ldxios = lrixios ) 
     280            CALL iom_get( numrir, jpdom_auto, 'oa_i', oa_i ) 
    282281         ELSE                                     ! start from rest 
    283282            IF(lwp) WRITE(numout,*) '   ==>>   previous run without ice age output then set it to zero' 
     
    287286         id2 = iom_varid( numrir, 'a_ip' , ldstop = .FALSE. ) 
    288287         IF( id2 > 0 ) THEN                       ! fields exist 
    289             CALL iom_get( numrir, jpdom_auto, 'a_ip' , a_ip, ldxios = lrixios ) 
    290             CALL iom_get( numrir, jpdom_auto, 'v_ip' , v_ip, ldxios = lrixios ) 
     288            CALL iom_get( numrir, jpdom_auto, 'a_ip' , a_ip ) 
     289            CALL iom_get( numrir, jpdom_auto, 'v_ip' , v_ip ) 
    291290         ELSE                                     ! start from rest 
    292291            IF(lwp) WRITE(numout,*) '   ==>>   previous run without melt ponds output then set it to zero' 
     
    297296         id3 = iom_varid( numrir, 'v_il' , ldstop = .FALSE. ) 
    298297         IF( id3 > 0 ) THEN 
    299             CALL iom_get( numrir, jpdom_auto, 'v_il', v_il, ldxios = lrixios) 
     298            CALL iom_get( numrir, jpdom_auto, 'v_il', v_il) 
    300299         ELSE 
    301300            IF(lwp) WRITE(numout,*) '   ==>>   previous run without melt ponds lids output then set it to zero' 
     
    307306            id5 = iom_varid( numrir, 't1_ice'  , ldstop = .FALSE. ) 
    308307            IF( id4 > 0 .AND. id5 > 0 ) THEN         ! fields exist 
    309                CALL iom_get( numrir, jpdom_auto, 'cnd_ice', cnd_ice, ldxios = lrixios ) 
    310                CALL iom_get( numrir, jpdom_auto, 't1_ice' , t1_ice , ldxios = lrixios ) 
     308               CALL iom_get( numrir, jpdom_auto, 'cnd_ice', cnd_ice ) 
     309               CALL iom_get( numrir, jpdom_auto, 't1_ice' , t1_ice ) 
    311310            ELSE                                     ! start from rest 
    312311               IF(lwp) WRITE(numout,*) '   ==>>   previous run without conductivity output then set it to zero' 
     
    316315         ENDIF 
    317316 
    318          CALL iom_delay_rst( 'READ', 'ICE', numrir )   ! read only ice delayed global communication variables 
    319          IF(lrixios) CALL iom_swap(cxios_context) 
     317         IF(.NOT.lrxios) CALL iom_delay_rst( 'READ', 'ICE', numrir )   ! read only ice delayed global communication variables 
    320318         !                 ! ---------------------------------- ! 
    321319      ELSE                 ! == case of a simplified restart == ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/ICE/icestp.F90

    r13727 r13934  
    212212      ! --- Ocean time step --- ! 
    213213      !-------------------------! 
    214       IF( ln_icedyn )                   CALL ice_update_tau( kt, uu(:,:,1,Kbb), vv(:,:,1,Kbb) )   ! -- update surface ocean stresses 
     214      CALL ice_update_tau( kt, uu(:,:,1,Kbb), vv(:,:,1,Kbb) )         ! -- update surface ocean stresses 
    215215!!gm   remark, the ocean-ice stress is not saved in ice diag call above .....  find a solution!!! 
    216216      ! 
     
    292292      ! 
    293293      IF( ln_rstart )  THEN 
    294           CALL iom_close( numrir )  ! close input ice restart file 
    295           IF(lrixios) CALL iom_context_finalize(      crixios_context         ) 
     294         CALL iom_close( numrir )  ! close input ice restart file 
     295         IF(lrxios) CALL iom_context_finalize(      cr_icerst_cxt         ) 
    296296      ENDIF 
    297297      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/ICE/icetab.F90

    r10069 r13934  
    4040      INTEGER , DIMENSION(ndim1d)     , INTENT(in   ) ::   tab_ind  ! input index 
    4141      REAL(wp), DIMENSION(jpi,jpj,jpl), INTENT(in   ) ::   tab2d    ! input 2D field 
    42       REAL(wp), DIMENSION(ndim1d,jpl) , INTENT(  out) ::   tab1d    ! output 1D field 
     42      REAL(wp), DIMENSION(ndim1d,jpl) , INTENT(inout) ::   tab1d    ! output 1D field 
    4343      ! 
    4444      INTEGER ::   jl, jn, jid, jjd 
     
    6161      INTEGER , DIMENSION(ndim1d) , INTENT(in   ) ::   tab_ind  ! input index 
    6262      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   tab2d    ! input 2D field 
    63       REAL(wp), DIMENSION(ndim1d) , INTENT(  out) ::   tab1d    ! output 1D field 
     63      REAL(wp), DIMENSION(ndim1d) , INTENT(inout) ::   tab1d    ! output 1D field 
    6464      ! 
    6565      INTEGER ::   jn , jid, jjd 
     
    8080      INTEGER , DIMENSION(ndim1d)     , INTENT(in   ) ::   tab_ind   ! input index 
    8181      REAL(wp), DIMENSION(ndim1d,jpl) , INTENT(in   ) ::   tab1d     ! input 1D field 
    82       REAL(wp), DIMENSION(jpi,jpj,jpl), INTENT(  out) ::   tab2d     ! output 2D field 
     82      REAL(wp), DIMENSION(jpi,jpj,jpl), INTENT(inout) ::   tab2d     ! output 2D field 
    8383      ! 
    8484      INTEGER ::   jl, jn, jid, jjd 
     
    101101      INTEGER , DIMENSION(ndim1d) , INTENT(in   ) ::   tab_ind   ! input index 
    102102      REAL(wp), DIMENSION(ndim1d) , INTENT(in   ) ::   tab1d     ! input 1D field 
    103       REAL(wp), DIMENSION(jpi,jpj), INTENT(  out) ::   tab2d     ! output 2D field 
     103      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   tab2d     ! output 2D field 
    104104      ! 
    105105      INTEGER ::   jn , jid, jjd 
  • NEMO/branches/2020/test_12905_xios_restart/src/ICE/iceupdate.F90

    r13727 r13934  
    427427            ! 
    428428            IF( id1 > 0 ) THEN                       ! fields exist 
    429                IF(lrixios) CALL iom_swap(crixios_context) 
    430                CALL iom_get( numrir, jpdom_auto, 'snwice_mass'  , snwice_mass  , ldxios = lrixios ) 
    431                CALL iom_get( numrir, jpdom_auto, 'snwice_mass_b', snwice_mass_b, ldxios = lrixios ) 
    432                IF(lrixios) CALL iom_swap(cxios_context) 
     429               CALL iom_get( numrir, jpdom_auto, 'snwice_mass'  , snwice_mass   ) 
     430               CALL iom_get( numrir, jpdom_auto, 'snwice_mass_b', snwice_mass_b ) 
    433431            ELSE                                     ! start from rest 
    434432               IF(lwp) WRITE(numout,*) '   ==>>   previous run without snow-ice mass output then set it' 
     
    447445         iter = kt + nn_fsbc - 1             ! ice restarts are written at kt == nitrst - nn_fsbc + 1 
    448446         ! 
    449          IF( lwxios ) CALL iom_swap(      cwixios_context         ) 
    450          CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass'  , snwice_mass,   ldxios = lwxios ) 
    451          CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass_b', snwice_mass_b, ldxios = lwxios ) 
    452          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     447         CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass'  , snwice_mass   ) 
     448         CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass_b', snwice_mass_b ) 
    453449         ! 
    454450      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/DIA/diahsb.F90

    r13727 r13934  
    267267            IF(lwp) WRITE(numout,*) '   dia_hsb_rst : read hsb restart at it= ', kt,' date= ', ndastp 
    268268            IF(lwp) WRITE(numout,*) 
    269             IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    270             CALL iom_get( numror, 'frc_v', frc_v, ldxios = lroxios ) 
    271             CALL iom_get( numror, 'frc_t', frc_t, ldxios = lroxios ) 
    272             CALL iom_get( numror, 'frc_s', frc_s, ldxios = lroxios ) 
     269            CALL iom_get( numror, 'frc_v', frc_v ) 
     270            CALL iom_get( numror, 'frc_t', frc_t ) 
     271            CALL iom_get( numror, 'frc_s', frc_s ) 
    273272            IF( ln_linssh ) THEN 
    274                CALL iom_get( numror, 'frc_wn_t', frc_wn_t, ldxios = lroxios ) 
    275                CALL iom_get( numror, 'frc_wn_s', frc_wn_s, ldxios = lroxios ) 
     273               CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 
     274               CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 
    276275            ENDIF 
    277             CALL iom_get( numror, jpdom_auto, 'surf_ini'  , surf_ini  , ldxios = lroxios ) ! ice sheet coupling 
    278             CALL iom_get( numror, jpdom_auto, 'ssh_ini'   , ssh_ini   , ldxios = lroxios ) 
    279             CALL iom_get( numror, jpdom_auto, 'e3t_ini'   , e3t_ini   , ldxios = lroxios ) 
    280             CALL iom_get( numror, jpdom_auto, 'tmask_ini' , tmask_ini , ldxios = lroxios ) 
    281             CALL iom_get( numror, jpdom_auto, 'hc_loc_ini', hc_loc_ini, ldxios = lroxios ) 
    282             CALL iom_get( numror, jpdom_auto, 'sc_loc_ini', sc_loc_ini, ldxios = lroxios ) 
     276            CALL iom_get( numror, jpdom_auto, 'surf_ini'  , surf_ini  ) ! ice sheet coupling 
     277            CALL iom_get( numror, jpdom_auto, 'ssh_ini'   , ssh_ini    ) 
     278            CALL iom_get( numror, jpdom_auto, 'e3t_ini'   , e3t_ini    ) 
     279            CALL iom_get( numror, jpdom_auto, 'tmask_ini' , tmask_ini ) 
     280            CALL iom_get( numror, jpdom_auto, 'hc_loc_ini', hc_loc_ini ) 
     281            CALL iom_get( numror, jpdom_auto, 'sc_loc_ini', sc_loc_ini ) 
    283282            IF( ln_linssh ) THEN 
    284                CALL iom_get( numror, jpdom_auto, 'ssh_hc_loc_ini', ssh_hc_loc_ini, ldxios = lroxios ) 
    285                CALL iom_get( numror, jpdom_auto, 'ssh_sc_loc_ini', ssh_sc_loc_ini, ldxios = lroxios ) 
     283               CALL iom_get( numror, jpdom_auto, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
     284               CALL iom_get( numror, jpdom_auto, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
    286285            ENDIF 
    287             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    288286         ELSE 
    289287            IF(lwp) WRITE(numout,*) 
     
    325323         IF(lwp) WRITE(numout,*) 
    326324         ! 
    327          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    328          CALL iom_rstput( kt, nitrst, numrow, 'frc_v', frc_v, ldxios = lwxios ) 
    329          CALL iom_rstput( kt, nitrst, numrow, 'frc_t', frc_t, ldxios = lwxios ) 
    330          CALL iom_rstput( kt, nitrst, numrow, 'frc_s', frc_s, ldxios = lwxios ) 
     325         CALL iom_rstput( kt, nitrst, numrow, 'frc_v', frc_v ) 
     326         CALL iom_rstput( kt, nitrst, numrow, 'frc_t', frc_t ) 
     327         CALL iom_rstput( kt, nitrst, numrow, 'frc_s', frc_s ) 
    331328         IF( ln_linssh ) THEN 
    332             CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t, ldxios = lwxios ) 
    333             CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s, ldxios = lwxios ) 
     329            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 
     330            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 
    334331         ENDIF 
    335          CALL iom_rstput( kt, nitrst, numrow, 'surf_ini'  , surf_ini  , ldxios = lwxios )      ! ice sheet coupling 
    336          CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini'   , ssh_ini   , ldxios = lwxios ) 
    337          CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini'   , e3t_ini   , ldxios = lwxios ) 
    338          CALL iom_rstput( kt, nitrst, numrow, 'tmask_ini' , tmask_ini , ldxios = lwxios ) 
    339          CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini, ldxios = lwxios ) 
    340          CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini, ldxios = lwxios ) 
     332         CALL iom_rstput( kt, nitrst, numrow, 'surf_ini'  , surf_ini  )      ! ice sheet coupling 
     333         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini'   , ssh_ini    ) 
     334         CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini'   , e3t_ini    ) 
     335         CALL iom_rstput( kt, nitrst, numrow, 'tmask_ini' , tmask_ini ) 
     336         CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini ) 
     337         CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini ) 
    341338         IF( ln_linssh ) THEN 
    342             CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini, ldxios = lwxios ) 
    343             CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini, ldxios = lwxios ) 
     339            CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
     340            CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
    344341         ENDIF 
    345          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    346342         ! 
    347343      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/DIU/diu_coolskin.F90

    r13727 r13934  
    9595      !!---------------------------------------------------------------------- 
    9696      ! 
    97       IF( .NOT. ln_blk )   CALL ctl_stop("diu_coolskin.f90: diurnal flux processing only implemented for bulk forcing") 
     97      IF( .NOT. (ln_blk .OR. ln_abl) )   CALL ctl_stop("diu_coolskin.f90: diurnal flux processing only implemented for bulk forcing") 
    9898      ! 
    9999      DO_2D( 1, 1, 1, 1 ) 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/DOM/daymod.F90

    r13727 r13934  
    316316 
    317317      IF( TRIM(cdrw) == 'READ' ) THEN 
    318          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    319318         IF( iom_varid( numror, 'kt', ldstop = .FALSE. ) > 0 ) THEN 
    320319            ! Get Calendar informations 
    321             CALL iom_get( numror, 'kt', zkt, ldxios = lroxios )   ! last time-step of previous run 
     320            CALL iom_get( numror, 'kt', zkt )   ! last time-step of previous run 
    322321            IF(lwp) THEN 
    323322               WRITE(numout,*) ' *** Info read in restart : ' 
     
    338337            IF ( nrstdt == 2 ) THEN 
    339338               ! read the parameters corresponding to nit000 - 1 (last time step of previous run) 
    340                CALL iom_get( numror, 'ndastp', zndastp, ldxios = lroxios ) 
     339               CALL iom_get( numror, 'ndastp', zndastp ) 
    341340               ndastp = NINT( zndastp ) 
    342                CALL iom_get( numror, 'adatrj', adatrj , ldxios = lroxios ) 
    343           CALL iom_get( numror, 'ntime' , ktime  , ldxios = lroxios ) 
     341               CALL iom_get( numror, 'adatrj', adatrj ) 
     342          CALL iom_get( numror, 'ntime' , ktime  ) 
    344343               nn_time0 = NINT(ktime) 
    345344               ! calculate start time in hours and minutes 
     
    384383            adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 
    385384         ENDIF 
    386          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    387385         IF( ABS(adatrj  - REAL(NINT(adatrj),wp)) < 0.1 / rday )   adatrj = REAL(NINT(adatrj),wp)   ! avoid truncation error 
    388386         ! 
     
    403401         ENDIF 
    404402         ! calendar control 
    405          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    406          CALL iom_rstput( kt, nitrst, numrow, 'kt'     , REAL( kt    , wp)  , ldxios = lwxios )   ! time-step 
    407          CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp)  , ldxios = lwxios )   ! date 
    408          CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj             , ldxios = lwxios            )   ! number of elapsed days since 
     403         CALL iom_rstput( kt, nitrst, numrow, 'kt'     , REAL( kt    , wp)   )   ! time-step 
     404         CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp)   )   ! date 
     405         CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj              )   ! number of elapsed days since 
    409406         !                                                                                                   ! the begining of the run [s] 
    410          CALL iom_rstput( kt, nitrst, numrow, 'ntime'  , REAL( nn_time0, wp), ldxios = lwxios ) ! time 
    411          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     407         CALL iom_rstput( kt, nitrst, numrow, 'ntime'  , REAL( nn_time0, wp) ) ! time 
    412408      ENDIF 
    413409      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/DOM/domqco.F90

    r13750 r13934  
    212212            ! 
    213213            IF( MIN( id1, id2 ) > 0 ) THEN       ! all required arrays exist 
    214                CALL iom_get( numror, jpdom_auto, 'sshb'   , ssh(:,:,Kbb), ldxios = lrxios    ) 
    215                CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm), ldxios = lrxios    ) 
     214               CALL iom_get( numror, jpdom_auto, 'sshb'   , ssh(:,:,Kbb)    ) 
     215               CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm)    ) 
    216216               ! needed to restart if land processor not computed 
    217217               IF(lwp) write(numout,*) 'qe_rst_read : ssh(:,:,Kbb) and ssh(:,:,Kmm) found in restart files' 
     
    227227               IF(lwp) write(numout,*) 'sshn set equal to sshb.' 
    228228               IF(lwp) write(numout,*) 'neuler is forced to 0' 
    229                CALL iom_get( numror, jpdom_auto, 'sshb', ssh(:,:,Kbb), ldxios = lrxios ) 
     229               CALL iom_get( numror, jpdom_auto, 'sshb', ssh(:,:,Kbb) ) 
    230230               ssh(:,:,Kmm) = ssh(:,:,Kbb) 
    231231               l_1st_euler = .TRUE. 
     
    234234               IF(lwp) write(numout,*) 'sshb set equal to sshn.' 
    235235               IF(lwp) write(numout,*) 'neuler is forced to 0' 
    236                CALL iom_get( numror, jpdom_auto, 'sshn', ssh(:,:,Kmm), ldxios = lrxios ) 
     236               CALL iom_get( numror, jpdom_auto, 'sshn', ssh(:,:,Kmm) ) 
    237237               ssh(:,:,Kbb) = ssh(:,:,Kmm) 
    238238               l_1st_euler = .TRUE. 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/DOM/domvvl.F90

    r13727 r13934  
    785785         IF( ln_rstart ) THEN                   !* Read the restart file 
    786786            CALL rst_read_open                  !  open the restart file if necessary 
    787             IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    788             CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm), ldxios = lroxios    ) 
     787            CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm)    ) 
    789788            ! 
    790789            id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) 
     
    799798            ! 
    800799            IF( MIN( id1, id2 ) > 0 ) THEN       ! all required arrays exist 
    801                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 
    802                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 
     800               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 
     801               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 
    803802               ! needed to restart if land processor not computed  
    804803               IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' 
     
    814813               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    815814               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    816                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 
     815               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 
    817816               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    818817               l_1st_euler = .true. 
     
    821820               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    822821               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    823                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 
     822               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 
    824823               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    825824               l_1st_euler = .true. 
     
    846845               !                          ! ----------------------- ! 
    847846               IF( MIN( id3, id4 ) > 0 ) THEN  ! all required arrays exist 
    848                   CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lroxios ) 
    849                   CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lroxios ) 
     847                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 
     848                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 
    850849               ELSE                            ! one at least array is missing 
    851850                  tilde_e3t_b(:,:,:) = 0.0_wp 
     
    856855                  !                       ! ------------ ! 
    857856                  IF( id5 > 0 ) THEN  ! required array exists 
    858                      CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lroxios ) 
     857                     CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) ) 
    859858                  ELSE                ! array is missing 
    860859                     hdiv_lf(:,:,:) = 0.0_wp 
     
    862861               ENDIF 
    863862            ENDIF 
    864             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    865863            ! 
    866864         ELSE                                   !* Initialize at "rest" 
     
    930928         !                                   ! =================== 
    931929         IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 
    932          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    933930         !                                           ! --------- ! 
    934931         !                                           ! all cases ! 
    935932         !                                           ! --------- ! 
    936          CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lwxios ) 
    937          CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lwxios ) 
     933         CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) ) 
     934         CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) ) 
    938935         !                                           ! ----------------------- ! 
    939936         IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN  ! z_tilde and layer cases ! 
    940937            !                                        ! ----------------------- ! 
    941             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lwxios) 
    942             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(:,:,:)) 
    943940         END IF 
    944941         !                                           ! -------------!     
    945942         IF( ln_vvl_ztilde ) THEN                    ! z_tilde case ! 
    946943            !                                        ! ------------ ! 
    947             CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lwxios) 
     944            CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:)) 
    948945         ENDIF 
    949946         ! 
    950          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    951947      ENDIF 
    952948      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/DYN/dynspg_ts.F90

    r13727 r13934  
    899899      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
    900900         !                                   ! --------------- 
    901          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    902901         IF( ln_rstart .AND. ln_bt_fw .AND. (.NOT.l_1st_euler) ) THEN    !* Read the restart file 
    903             CALL iom_get( numror, jpdom_auto, 'ub2_b'  , ub2_b  (:,:), cd_type = 'U', psgn = -1._wp, ldxios = lroxios )    
    904             CALL iom_get( numror, jpdom_auto, 'vb2_b'  , vb2_b  (:,:), cd_type = 'V', psgn = -1._wp, ldxios = lroxios )  
    905             CALL iom_get( numror, jpdom_auto, 'un_bf'  , un_bf  (:,:), cd_type = 'U', psgn = -1._wp, ldxios = lroxios )    
    906             CALL iom_get( numror, jpdom_auto, 'vn_bf'  , vn_bf  (:,:), cd_type = 'V', psgn = -1._wp, ldxios = lroxios )  
     902            CALL iom_get( numror, jpdom_auto, 'ub2_b'  , ub2_b  (:,:), cd_type = 'U', psgn = -1._wp )    
     903            CALL iom_get( numror, jpdom_auto, 'vb2_b'  , vb2_b  (:,:), cd_type = 'V', psgn = -1._wp )  
     904            CALL iom_get( numror, jpdom_auto, 'un_bf'  , un_bf  (:,:), cd_type = 'U', psgn = -1._wp )    
     905            CALL iom_get( numror, jpdom_auto, 'vn_bf'  , vn_bf  (:,:), cd_type = 'V', psgn = -1._wp )  
    907906            IF( .NOT.ln_bt_av ) THEN 
    908                CALL iom_get( numror, jpdom_auto, 'sshbb_e'  , sshbb_e(:,:), cd_type = 'T', psgn =  1._wp, ldxios = lroxios )    
    909                CALL iom_get( numror, jpdom_auto, 'ubb_e'    ,   ubb_e(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lroxios )    
    910                CALL iom_get( numror, jpdom_auto, 'vbb_e'    ,   vbb_e(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lroxios ) 
    911                CALL iom_get( numror, jpdom_auto, 'sshb_e'   ,  sshb_e(:,:), cd_type = 'T', psgn =  1._wp, ldxios = lroxios )  
    912                CALL iom_get( numror, jpdom_auto, 'ub_e'     ,    ub_e(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lroxios )    
    913                CALL iom_get( numror, jpdom_auto, 'vb_e'     ,    vb_e(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lroxios ) 
     907               CALL iom_get( numror, jpdom_auto, 'sshbb_e'  , sshbb_e(:,:), cd_type = 'T', psgn =  1._wp )    
     908               CALL iom_get( numror, jpdom_auto, 'ubb_e'    ,   ubb_e(:,:), cd_type = 'U', psgn = -1._wp )    
     909               CALL iom_get( numror, jpdom_auto, 'vbb_e'    ,   vbb_e(:,:), cd_type = 'V', psgn = -1._wp ) 
     910               CALL iom_get( numror, jpdom_auto, 'sshb_e'   ,  sshb_e(:,:), cd_type = 'T', psgn =  1._wp )  
     911               CALL iom_get( numror, jpdom_auto, 'ub_e'     ,    ub_e(:,:), cd_type = 'U', psgn = -1._wp )    
     912               CALL iom_get( numror, jpdom_auto, 'vb_e'     ,    vb_e(:,:), cd_type = 'V', psgn = -1._wp ) 
    914913            ENDIF 
    915914#if defined key_agrif 
    916915            ! Read time integrated fluxes 
    917916            IF ( .NOT.Agrif_Root() ) THEN 
    918                CALL iom_get( numror, jpdom_auto, 'ub2_i_b'  , ub2_i_b(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lroxios )    
    919                CALL iom_get( numror, jpdom_auto, 'vb2_i_b'  , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lroxios ) 
     917               CALL iom_get( numror, jpdom_auto, 'ub2_i_b'  , ub2_i_b(:,:), cd_type = 'U', psgn = -1._wp )    
     918               CALL iom_get( numror, jpdom_auto, 'vb2_i_b'  , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp ) 
    920919            ELSE 
    921920               ub2_i_b(:,:) = 0._wp   ;   vb2_i_b(:,:) = 0._wp   ! used in the 1st update of agrif 
     
    932931#endif 
    933932         ENDIF 
    934          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    935933         ! 
    936934      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
    937935         !                                   ! ------------------- 
    938936         IF(lwp) WRITE(numout,*) '---- ts_rst ----' 
    939          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    940          CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:), ldxios = lwxios ) 
    941          CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:), ldxios = lwxios ) 
    942          CALL iom_rstput( kt, nitrst, numrow, 'un_bf'   , un_bf  (:,:), ldxios = lwxios ) 
    943          CALL iom_rstput( kt, nitrst, numrow, 'vn_bf'   , vn_bf  (:,:), ldxios = lwxios ) 
     937         CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:) ) 
     938         CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:) ) 
     939         CALL iom_rstput( kt, nitrst, numrow, 'un_bf'   , un_bf  (:,:) ) 
     940         CALL iom_rstput( kt, nitrst, numrow, 'vn_bf'   , vn_bf  (:,:) ) 
    944941         ! 
    945942         IF (.NOT.ln_bt_av) THEN 
    946             CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e'  , sshbb_e(:,:), ldxios = lwxios )  
    947             CALL iom_rstput( kt, nitrst, numrow, 'ubb_e'    ,   ubb_e(:,:), ldxios = lwxios ) 
    948             CALL iom_rstput( kt, nitrst, numrow, 'vbb_e'    ,   vbb_e(:,:), ldxios = lwxios ) 
    949             CALL iom_rstput( kt, nitrst, numrow, 'sshb_e'   ,  sshb_e(:,:), ldxios = lwxios ) 
    950             CALL iom_rstput( kt, nitrst, numrow, 'ub_e'     ,    ub_e(:,:), ldxios = lwxios ) 
    951             CALL iom_rstput( kt, nitrst, numrow, 'vb_e'     ,    vb_e(:,:), ldxios = lwxios ) 
     943            CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e'  , sshbb_e(:,:) )  
     944            CALL iom_rstput( kt, nitrst, numrow, 'ubb_e'    ,   ubb_e(:,:) ) 
     945            CALL iom_rstput( kt, nitrst, numrow, 'vbb_e'    ,   vbb_e(:,:) ) 
     946            CALL iom_rstput( kt, nitrst, numrow, 'sshb_e'   ,  sshb_e(:,:) ) 
     947            CALL iom_rstput( kt, nitrst, numrow, 'ub_e'     ,    ub_e(:,:) ) 
     948            CALL iom_rstput( kt, nitrst, numrow, 'vb_e'     ,    vb_e(:,:) ) 
    952949         ENDIF 
    953950#if defined key_agrif 
    954951         ! Save time integrated fluxes 
    955952         IF ( .NOT.Agrif_Root() ) THEN 
    956             CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b'  , ub2_i_b(:,:), ldxios = lwxios ) 
    957             CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b'  , vb2_i_b(:,:), ldxios = lwxios ) 
     953            CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b'  , ub2_i_b(:,:) ) 
     954            CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b'  , vb2_i_b(:,:) ) 
    958955         ENDIF 
    959956#endif 
    960          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    961957      ENDIF 
    962958      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/IOM/in_out_manager.F90

    r13727 r13934  
    8989   LOGICAL ::   lrst_abl              !: logical to control the abl restart write  
    9090   INTEGER ::   numror = 0            !: logical unit for ocean restart (read). Init to 0 is needed for SAS (in daymod.F90) 
    91    INTEGER ::   numrir                !: logical unit for ice   restart (read) 
    92    INTEGER ::   numrar                !: logical unit for abl   restart (read) 
    93    INTEGER ::   numrow                !: logical unit for ocean restart (write) 
    94    INTEGER ::   numriw                !: logical unit for ice   restart (write) 
    95    INTEGER ::   numraw                !: logical unit for abl   restart (write) 
     91   INTEGER ::   numrir = 0            !: logical unit for ice   restart (read) 
     92   INTEGER ::   numrar = 0            !: logical unit for abl   restart (read) 
     93   INTEGER ::   numrow = 0            !: logical unit for ocean restart (write) 
     94   INTEGER ::   numriw = 0            !: logical unit for ice   restart (write) 
     95   INTEGER ::   numraw = 0            !: logical unit for abl   restart (write) 
     96   INTEGER ::   numrtr = 0            !: trc restart (read ) 
     97   INTEGER ::   numrtw = 0            !: trc restart (write ) 
     98   INTEGER ::   numrsr = 0            !: logical unit for sed restart (read) 
     99   INTEGER ::   numrsw = 0            !: logical unit for sed restart (write) 
     100 
    96101   INTEGER ::   nrst_lst              !: number of restart to output next 
    97102 
     
    165170   LOGICAL       ::   lwp      = .FALSE.    !: boolean : true on the 1st processor only .OR. sn_cfctl%l_oceout=T 
    166171   LOGICAL       ::   lsp_area = .TRUE.     !: to make a control print over a specific area 
    167    CHARACTER(LEN=lc) ::   cxios_context         !: context name used in xios 
    168    CHARACTER(LEN=lc) ::   crxios_context        !: context name used in xios to read OCE restart 
    169    CHARACTER(LEN=lc) ::   cwxios_context        !: context name used in xios to write OCE restart file 
    170    CHARACTER(LEN=lc) ::   crixios_context       !: context name used in xios to read SI3 restart 
    171    CHARACTER(LEN=lc) ::   cwixios_context       !: context name used in xios to write SI3 restart file 
    172    CHARACTER(LEN=lc) ::   crtxios_context       !: context name used in xios to read TOP restart 
    173    CHARACTER(LEN=lc) ::   cwtxios_context       !: context name used in xios to write TOP restart file 
    174    CHARACTER(LEN=lc) ::   crsxios_context       !: context name used in xios to read SEDIMENT restart 
    175    CHARACTER(LEN=lc) ::   cwsxios_context       !: context name used in xios to write SEDIMENT restart file 
     172   CHARACTER(LEN=lc) ::   cxios_context     !: context name used in xios 
     173   CHARACTER(LEN=lc) ::   cr_ocerst_cxt     !: context name used in xios to read OCE restart 
     174   CHARACTER(LEN=lc) ::   cw_ocerst_cxt     !: context name used in xios to write OCE restart file 
     175   CHARACTER(LEN=lc) ::   cr_icerst_cxt     !: context name used in xios to read SI3 restart 
     176   CHARACTER(LEN=lc) ::   cw_icerst_cxt     !: context name used in xios to write SI3 restart file 
     177   CHARACTER(LEN=lc) ::   cr_toprst_cxt     !: context name used in xios to read TOP restart 
     178   CHARACTER(LEN=lc) ::   cw_toprst_cxt     !: context name used in xios to write TOP restart file 
     179   CHARACTER(LEN=lc) ::   cr_sedrst_cxt     !: context name used in xios to read SEDIMENT restart 
     180   CHARACTER(LEN=lc) ::   cw_sedrst_cxt     !: context name used in xios to write SEDIMENT restart file 
    176181 
    177182 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/IOM/iom.F90

    r13750 r13934  
    6060   PUBLIC iom_chkatt, iom_getatt, iom_putatt, iom_getszuld, iom_rstput, iom_delay_rst, iom_put 
    6161   PUBLIC iom_use, iom_context_finalize, iom_update_file_name, iom_miss_val 
     62   PUBLIC iom_xios_setid 
    6263 
    6364   PRIVATE iom_rp0d_sp, iom_rp1d_sp, iom_rp2d_sp, iom_rp3d_sp 
     
    7374   PRIVATE iom_set_rst_context, iom_set_vars_active 
    7475# endif 
     76   PRIVATE set_xios_context 
    7577   PRIVATE iom_set_rstw_active 
    7678 
     
    103105CONTAINS 
    104106 
    105    SUBROUTINE iom_init( cdname, fname, idfp, ld_closedef )  
     107   SUBROUTINE iom_init( cdname, kdid, ld_closedef )  
    106108      !!---------------------------------------------------------------------- 
    107109      !!                     ***  ROUTINE   *** 
     
    111113      !!---------------------------------------------------------------------- 
    112114      CHARACTER(len=*),           INTENT(in)  :: cdname 
    113       CHARACTER(len=*), OPTIONAL, INTENT(in)  :: fname 
    114       INTEGER         , OPTIONAL, INTENT(in)  :: idfp         ! pointer to netcdf file for restart reading with XIOS 
     115      INTEGER         , OPTIONAL, INTENT(in)  :: kdid           
    115116      LOGICAL         , OPTIONAL, INTENT(in)  :: ld_closedef 
    116117#if defined key_iomput 
     
    141142      CALL iom_swap( cdname ) 
    142143 
    143       llrstr = (TRIM(cdname) == TRIM(crxios_context)) .OR. (TRIM(cdname) == TRIM(crixios_context)) 
    144       llrstr = llrstr .OR. (TRIM(cdname) == TRIM(crtxios_context)) 
    145       llrstr = llrstr .OR. (TRIM(cdname) == TRIM(crsxios_context)) 
    146  
    147       llrstw = (TRIM(cdname) == TRIM(cwxios_context)) .OR. (TRIM(cdname) == TRIM(cwixios_context)) 
    148       llrstw = llrstw .OR. (TRIM(cdname) == TRIM(cwtxios_context)) 
    149       llrstw = llrstw .OR. (TRIM(cdname) == TRIM(cwsxios_context)) 
     144      llrstr = (cdname == cr_ocerst_cxt) .OR. (cdname == cr_icerst_cxt) 
     145      llrstr = llrstr .OR. (cdname == cr_toprst_cxt) 
     146      llrstr = llrstr .OR. (cdname == cr_sedrst_cxt) 
     147 
     148      llrstw = (cdname == cw_ocerst_cxt) .OR. (cdname == cw_icerst_cxt) 
     149      llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 
     150      llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) 
    150151 
    151152      llrst_context = llrstr .OR. llrstw 
     
    168169      IF(.NOT.llrst_context) CALL set_scalar 
    169170      ! 
    170       IF( TRIM(cdname) == TRIM(cxios_context) ) THEN   
     171      IF( cdname == cxios_context ) THEN   
    171172         CALL set_grid( "T", glamt, gphit, .FALSE., .FALSE. )  
    172173         CALL set_grid( "U", glamu, gphiu, .FALSE., .FALSE. ) 
     
    212213      ! vertical grid definition 
    213214      IF(.NOT.llrst_context) THEN 
    214           CALL iom_set_axis_attr(  "deptht", paxis = gdept_1d ) 
    215           CALL iom_set_axis_attr(  "depthu", paxis = gdept_1d ) 
    216           CALL iom_set_axis_attr(  "depthv", paxis = gdept_1d ) 
    217           CALL iom_set_axis_attr(  "depthw", paxis = gdepw_1d ) 
     215         CALL iom_set_axis_attr(  "deptht", paxis = gdept_1d ) 
     216         CALL iom_set_axis_attr(  "depthu", paxis = gdept_1d ) 
     217         CALL iom_set_axis_attr(  "depthv", paxis = gdept_1d ) 
     218         CALL iom_set_axis_attr(  "depthw", paxis = gdepw_1d ) 
    218219 
    219220          ! ABL 
    220           IF( .NOT. ALLOCATED(ght_abl) ) THEN   ! force definition for xml files (xios)  
    221              ALLOCATE( ght_abl(jpka), ghw_abl(jpka), e3t_abl(jpka), e3w_abl(jpka) )   ! default allocation needed by iom 
    222              ght_abl(:) = -1._wp   ;   ghw_abl(:) = -1._wp 
    223              e3t_abl(:) = -1._wp   ;   e3w_abl(:) = -1._wp 
    224           ENDIF 
    225           CALL iom_set_axis_attr( "ght_abl", ght_abl(2:jpka) ) 
    226           CALL iom_set_axis_attr( "ghw_abl", ghw_abl(2:jpka) ) 
     221         IF( .NOT. ALLOCATED(ght_abl) ) THEN   ! force definition for xml files (xios)  
     222            ALLOCATE( ght_abl(jpka), ghw_abl(jpka), e3t_abl(jpka), e3w_abl(jpka) )   ! default allocation needed by iom 
     223            ght_abl(:) = -1._wp   ;   ghw_abl(:) = -1._wp 
     224            e3t_abl(:) = -1._wp   ;   e3w_abl(:) = -1._wp 
     225         ENDIF 
     226         CALL iom_set_axis_attr( "ght_abl", ght_abl(2:jpka) ) 
     227         CALL iom_set_axis_attr( "ghw_abl", ghw_abl(2:jpka) ) 
    227228           
    228           ! Add vertical grid bounds 
    229           zt_bnds(2,:      ) = gdept_1d(:) 
    230           zt_bnds(1,2:jpk  ) = gdept_1d(1:jpkm1) 
    231           zt_bnds(1,1      ) = gdept_1d(1) - e3w_1d(1) 
    232           zw_bnds(1,:      ) = gdepw_1d(:) 
    233           zw_bnds(2,1:jpkm1) = gdepw_1d(2:jpk) 
    234           zw_bnds(2,jpk:   ) = gdepw_1d(jpk) + e3t_1d(jpk) 
    235           CALL iom_set_axis_attr(  "deptht", bounds=zw_bnds ) 
    236           CALL iom_set_axis_attr(  "depthu", bounds=zw_bnds ) 
    237           CALL iom_set_axis_attr(  "depthv", bounds=zw_bnds ) 
    238           CALL iom_set_axis_attr(  "depthw", bounds=zt_bnds ) 
    239  
    240           ! ABL 
    241           za_bnds(1,:) = ghw_abl(1:jpkam1) 
    242           za_bnds(2,:) = ghw_abl(2:jpka  ) 
    243           CALL iom_set_axis_attr( "ght_abl", bounds=za_bnds ) 
    244           za_bnds(1,:) = ght_abl(2:jpka  ) 
    245           za_bnds(2,:) = ght_abl(2:jpka  ) + e3w_abl(2:jpka) 
    246           CALL iom_set_axis_attr( "ghw_abl", bounds=za_bnds ) 
    247  
    248           CALL iom_set_axis_attr(  "nfloat", (/ (REAL(ji,wp), ji=1,jpnfl) /) ) 
     229         ! Add vertical grid bounds 
     230         zt_bnds(2,:      ) = gdept_1d(:) 
     231         zt_bnds(1,2:jpk  ) = gdept_1d(1:jpkm1) 
     232         zt_bnds(1,1      ) = gdept_1d(1) - e3w_1d(1) 
     233         zw_bnds(1,:      ) = gdepw_1d(:) 
     234         zw_bnds(2,1:jpkm1) = gdepw_1d(2:jpk) 
     235         zw_bnds(2,jpk:   ) = gdepw_1d(jpk) + e3t_1d(jpk) 
     236         CALL iom_set_axis_attr(  "deptht", bounds=zw_bnds ) 
     237         CALL iom_set_axis_attr(  "depthu", bounds=zw_bnds ) 
     238         CALL iom_set_axis_attr(  "depthv", bounds=zw_bnds ) 
     239         CALL iom_set_axis_attr(  "depthw", bounds=zt_bnds ) 
     240 
     241         ! ABL 
     242         za_bnds(1,:) = ghw_abl(1:jpkam1) 
     243         za_bnds(2,:) = ghw_abl(2:jpka  ) 
     244         CALL iom_set_axis_attr( "ght_abl", bounds=za_bnds ) 
     245         za_bnds(1,:) = ght_abl(2:jpka  ) 
     246         za_bnds(2,:) = ght_abl(2:jpka  ) + e3w_abl(2:jpka) 
     247         CALL iom_set_axis_attr( "ghw_abl", bounds=za_bnds ) 
     248 
     249         CALL iom_set_axis_attr(  "nfloat", (/ (REAL(ji,wp), ji=1,jpnfl) /) ) 
    249250# if defined key_si3 
    250           CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
    251           ! SIMIP diagnostics (4 main arctic straits) 
    252           CALL iom_set_axis_attr( "nstrait", (/ (REAL(ji,wp), ji=1,4) /) ) 
     251         CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
     252         ! SIMIP diagnostics (4 main arctic straits) 
     253         CALL iom_set_axis_attr( "nstrait", (/ (REAL(ji,wp), ji=1,4) /) ) 
    253254# endif 
    254255#if defined key_top 
    255           IF( ALLOCATED(profsed) ) CALL iom_set_axis_attr( "profsed", paxis = profsed ) 
    256 #endif 
    257           CALL iom_set_axis_attr( "icbcla", class_num ) 
    258           CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) )   ! strange syntaxe and idea... 
    259           CALL iom_set_axis_attr( "iax_26C", (/ REAL(26,wp) /) )   ! strange syntaxe and idea... 
    260           CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) )   ! strange syntaxe and idea... 
    261           ! for diaprt, we need to define an axis which size can be 1 (default) or 5 (if the file subbasins.nc exists) 
    262           INQUIRE( FILE = 'subbasins.nc', EXIST = ll_exist ) 
    263           nbasin = 1 + 4 * COUNT( (/ll_exist/) ) 
    264           CALL iom_set_axis_attr( "basin"  , (/ (REAL(ji,wp), ji=1,nbasin) /) ) 
     256         IF( ALLOCATED(profsed) ) CALL iom_set_axis_attr( "profsed", paxis = profsed ) 
     257#endif 
     258         CALL iom_set_axis_attr( "icbcla", class_num ) 
     259         CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) )   ! strange syntaxe and idea... 
     260         CALL iom_set_axis_attr( "iax_26C", (/ REAL(26,wp) /) )   ! strange syntaxe and idea... 
     261         CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) )   ! strange syntaxe and idea... 
     262         ! for diaprt, we need to define an axis which size can be 1 (default) or 5 (if the file subbasins.nc exists) 
     263         INQUIRE( FILE = 'subbasins.nc', EXIST = ll_exist ) 
     264         nbasin = 1 + 4 * COUNT( (/ll_exist/) ) 
     265         CALL iom_set_axis_attr( "basin"  , (/ (REAL(ji,wp), ji=1,nbasin) /) ) 
    265266      ENDIF 
    266267      ! 
    267268      ! automatic definitions of some of the xml attributs 
    268269      IF(llrstr) THEN 
    269           IF(PRESENT(idfp)) THEN 
    270              CALL iom_set_rst_context(.TRUE.) 
     270         IF(PRESENT(kdid)) THEN 
     271            CALL iom_set_rst_context(.TRUE.) 
    271272!set which fields will be read from restart file 
    272              CALL iom_set_vars_active(fname, idfp) 
    273           ELSE 
    274              CALL ctl_stop( 'iom_init:', 'restart read with XIOS: missing pointer to NETCDF file' ) 
    275           ENDIF 
     273            CALL iom_set_vars_active(kdid) 
     274         ELSE 
     275            CALL ctl_stop( 'iom_init:', 'restart read with XIOS: missing pointer to NETCDF file' ) 
     276         ENDIF 
    276277      ELSE IF(llrstw) THEN 
    277           CALL iom_set_rstw_file(fname) 
     278         CALL iom_set_rstw_file(iom_file(kdid)%name) 
    278279      ELSE 
    279           CALL set_xmlatt 
     280         CALL set_xmlatt 
    280281      ENDIF 
    281282      ! 
     
    301302      !! 
    302303      !!---------------------------------------------------------------------- 
    303    CHARACTER(len=*), OPTIONAL, INTENT(IN) :: cdname 
     304      CHARACTER(len=*), OPTIONAL, INTENT(IN) :: cdname 
    304305#if defined key_iomput 
    305    LOGICAL :: llrstw 
     306      LOGICAL :: llrstw 
    306307 
    307308      llrstw = .FALSE. 
    308309      IF(PRESENT(cdname)) THEN 
    309          llrstw = (TRIM(cdname) == TRIM(cwxios_context)) 
    310          llrstw = llrstw .OR. (TRIM(cdname) == TRIM(cwixios_context)) 
    311          llrstw = llrstw .OR. (TRIM(cdname) == TRIM(cwtxios_context)) 
    312          llrstw = llrstw .OR. (TRIM(cdname) == TRIM(cwsxios_context)) 
     310         llrstw = (cdname == cw_ocerst_cxt) 
     311         llrstw = llrstw .OR. (cdname == cw_icerst_cxt) 
     312         llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 
     313         llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) 
    313314      ENDIF 
    314315 
    315316      IF( llrstw ) THEN 
    316317!set names of the fields in restart file IF using XIOS to write data 
    317           CALL iom_set_rst_context(.FALSE.) 
    318           CALL xios_close_context_definition() 
     318         CALL iom_set_rst_context(.FALSE.) 
     319         CALL xios_close_context_definition() 
    319320      ELSE 
    320           CALL xios_close_context_definition() 
    321           CALL xios_update_calendar( 0 ) 
     321         CALL xios_close_context_definition() 
     322         CALL xios_update_calendar( 0 ) 
    322323      ENDIF 
    323324#else 
     
    327328   END SUBROUTINE iom_init_closedef 
    328329 
    329    SUBROUTINE iom_set_vars_active(cdfname, idnum) 
     330   SUBROUTINE iom_set_vars_active(idnum) 
    330331      !!--------------------------------------------------------------------- 
    331332      !!                   ***  SUBROUTINE  iom_set_vars_active  *** 
     
    335336      !!               id of the file is assumed to be rrestart. 
    336337      !!--------------------------------------------------------------------- 
    337  
    338    CHARACTER(len=*), INTENT(IN) :: cdfname 
    339    INTEGER         , INTENT(IN) :: idnum  
     338      INTEGER, INTENT(IN) :: idnum  
     339       
    340340#if defined key_iomput 
    341    INTEGER                                    :: ndims, nvars, natts, unlimitedDimId, dimlen, xtype,mdims 
    342    TYPE(xios_field)                           :: field_hdl 
    343    TYPE(xios_file)                            :: file_hdl 
    344    TYPE(xios_filegroup)                       :: filegroup_hdl 
    345    INTEGER                                    :: dimids(4), jv,i, idim 
    346    CHARACTER(LEN=256)                         :: clinfo               ! info character 
    347    INTEGER, ALLOCATABLE                       :: indimlens(:) 
    348    CHARACTER(LEN=nf90_max_name), ALLOCATABLE  :: indimnames(:) 
    349    CHARACTER(LEN=nf90_max_name)               :: dimname, varname 
    350    LOGICAL                                    :: lmeta 
    351  
    352         meta(1) = "nav_lat" 
    353         meta(2) = "nav_lon" 
    354         meta(3) = "nav_lev" 
    355         meta(4) = "time_instant" 
    356         meta(5) = "time_instant_bounds" 
    357         meta(6) = "time_counter" 
    358         meta(7) = "time_counter_bounds" 
    359         meta(8) = "x" 
    360         meta(9) = "y" 
    361         meta(10) = "numcat" 
    362  
    363         clinfo = '          iom_set_vars_active, file: '//TRIM(cdfname) 
     341      INTEGER                                    :: ndims, nvars, natts, unlimitedDimId, dimlen, xtype,mdims 
     342      TYPE(xios_field)                           :: field_hdl 
     343      TYPE(xios_file)                            :: file_hdl 
     344      TYPE(xios_filegroup)                       :: filegroup_hdl 
     345      INTEGER                                    :: dimids(4), jv,i, idim 
     346      CHARACTER(LEN=256)                         :: clinfo               ! info character 
     347      INTEGER, ALLOCATABLE                       :: indimlens(:) 
     348      CHARACTER(LEN=nf90_max_name), ALLOCATABLE  :: indimnames(:) 
     349      CHARACTER(LEN=nf90_max_name)               :: dimname, varname 
     350      INTEGER                                    :: iln 
     351      CHARACTER(LEN=lc)                          :: fname 
     352      LOGICAL                                    :: lmeta 
     353!metadata in restart file for restart read with XIOS 
     354      INTEGER, PARAMETER                         :: NMETA = 10 
     355      CHARACTER(LEN=lc)                          :: meta(NMETA) 
     356 
     357 
     358      meta(1) = "nav_lat" 
     359      meta(2) = "nav_lon" 
     360      meta(3) = "nav_lev" 
     361      meta(4) = "time_instant" 
     362      meta(5) = "time_instant_bounds" 
     363      meta(6) = "time_counter" 
     364      meta(7) = "time_counter_bounds" 
     365      meta(8) = "x" 
     366      meta(9) = "y" 
     367      meta(10) = "numcat" 
     368 
     369      clinfo = '          iom_set_vars_active, file: '//TRIM(iom_file(idnum)%name) 
     370 
     371      iln = INDEX( iom_file(idnum)%name, '.nc' ) 
     372!XIOS doee not need .nc 
     373      IF(iln > 0) THEN 
     374        fname =  iom_file(idnum)%name(1:iln-1) 
     375      ELSE 
     376        fname =  iom_file(idnum)%name 
     377      ENDIF 
    364378 
    365379!set name of the restart file and enable available fields 
    366         CALL xios_get_handle("file_definition", filegroup_hdl ) 
    367         CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart') 
    368         CALL xios_set_file_attr( "rrestart", name=trim(cdfname), type="one_file", & 
    369              par_access="collective", enabled=.TRUE., mode="read",                 & 
    370              output_freq=xios_timestep) 
    371  
    372         CALL iom_nf90_check( nf90_inquire(idnum, ndims, nvars, natts ), clinfo ) 
    373         ALLOCATE(indimlens(ndims), indimnames(ndims)) 
    374         CALL iom_nf90_check( nf90_inquire(idnum, unlimitedDimId = unlimitedDimId ), clinfo ) 
    375  
    376         DO idim = 1, ndims 
    377            CALL iom_nf90_check( nf90_inquire_dimension(idnum, idim, dimname, dimlen ), clinfo ) 
    378            indimlens(idim) = dimlen 
    379            indimnames(idim) = dimname 
    380         ENDDO 
    381  
    382         DO jv =1, nvars 
    383             lmeta = .FALSE. 
    384             CALL iom_nf90_check( nf90_inquire_variable(idnum, jv, varname, xtype, ndims, dimids, natts ), clinfo ) 
    385             DO i = 1, NMETA 
    386                IF(TRIM(varname) == TRIM(meta(i))) THEN 
    387                   lmeta = .TRUE. 
    388                ENDIF 
    389             ENDDO 
    390             IF(.NOT.lmeta) THEN 
    391                CALL xios_add_child(file_hdl, field_hdl, TRIM(varname)) 
    392                mdims = ndims 
    393  
    394                IF(ANY(dimids(1:ndims) == unlimitedDimId)) THEN 
    395                 mdims = mdims - 1 
    396                ENDIF 
    397  
    398                IF(mdims == 3) THEN 
    399                       CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname),   & 
    400                                    domain_ref="grid_N", axis_ref=TRIM(iom_axis(indimlens(dimids(mdims)))), & 
    401                                    prec = 8, operation = "instant") 
    402                ELSEIF(mdims == 2) THEN 
    403                       CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname), & 
    404                                           domain_ref="grid_N", prec = 8, operation = "instant")  
    405                ELSEIF(mdims == 1) THEN 
    406                       CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname), & 
    407                                           axis_ref=TRIM(iom_axis(indimlens(dimids(mdims)))), prec = 8, operation = "instant") 
    408                ELSEIF(mdims == 0) THEN 
    409                       CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname), & 
    410                                                 scalar_ref = "grid_scalar", prec = 8, operation = "instant") 
    411                ELSE 
    412                       WRITE(ctmp1,*) 'iom_set_vars_active: variable ', TRIM(varname) ,' incorrect number of dimensions'  
    413                       CALL ctl_stop( 'iom_set_vars_active:', ctmp1 ) 
    414                ENDIF 
     380      CALL xios_get_handle("file_definition", filegroup_hdl ) 
     381      CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart') 
     382      CALL xios_set_file_attr( "rrestart", name=fname, type="one_file",      & 
     383           par_access="collective", enabled=.TRUE., mode="read",              & 
     384                                                    output_freq=xios_timestep ) 
     385 
     386      CALL iom_nf90_check( nf90_inquire(iom_file(idnum)%nfid, ndims, nvars, natts ), clinfo ) 
     387      ALLOCATE(indimlens(ndims), indimnames(ndims)) 
     388      CALL iom_nf90_check( nf90_inquire(iom_file(idnum)%nfid, unlimitedDimId = unlimitedDimId ), clinfo ) 
     389 
     390      DO idim = 1, ndims 
     391         CALL iom_nf90_check( nf90_inquire_dimension(iom_file(idnum)%nfid, idim, dimname, dimlen ), clinfo ) 
     392         indimlens(idim) = dimlen 
     393         indimnames(idim) = dimname 
     394      ENDDO 
     395 
     396      DO jv =1, nvars 
     397         lmeta = .FALSE. 
     398         CALL iom_nf90_check( nf90_inquire_variable(iom_file(idnum)%nfid, jv, varname, xtype, ndims, dimids, natts ), clinfo ) 
     399         DO i = 1, NMETA 
     400           IF(varname == meta(i)) THEN 
     401             lmeta = .TRUE. 
     402           ENDIF 
     403         ENDDO 
     404         IF(.NOT.lmeta) THEN 
     405            CALL xios_add_child(file_hdl, field_hdl, varname) 
     406            mdims = ndims 
     407 
     408            IF(ANY(dimids(1:ndims) == unlimitedDimId)) THEN 
     409               mdims = mdims - 1 
    415410            ENDIF 
    416         ENDDO 
    417         DEALLOCATE(indimlens, indimnames) 
     411 
     412            IF(mdims == 3) THEN 
     413               CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname,   & 
     414                                   domain_ref="grid_N",                           & 
     415                                   axis_ref=iom_axis(indimlens(dimids(mdims))),   & 
     416                                   prec = 8, operation = "instant"                ) 
     417            ELSEIF(mdims == 2) THEN 
     418               CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname,  & 
     419                                   domain_ref="grid_N", prec = 8,                & 
     420                                   operation = "instant"                         )  
     421            ELSEIF(mdims == 1) THEN 
     422               CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname, & 
     423                                   axis_ref=iom_axis(indimlens(dimids(mdims))), & 
     424                                   prec = 8, operation = "instant"              ) 
     425            ELSEIF(mdims == 0) THEN 
     426               CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname, & 
     427                                   scalar_ref = "grid_scalar", prec = 8,        & 
     428                                   operation = "instant"                        ) 
     429            ELSE 
     430               WRITE(ctmp1,*) 'iom_set_vars_active: variable ', TRIM(varname) ,' incorrect number of dimensions'  
     431               CALL ctl_stop( 'iom_set_vars_active:', ctmp1 ) 
     432            ENDIF 
     433         ENDIF 
     434      ENDDO 
     435      DEALLOCATE(indimlens, indimnames) 
    418436#endif 
    419437   END SUBROUTINE iom_set_vars_active 
     
    425443      !! ** Purpose :  define file name in XIOS context for writing restart 
    426444      !!--------------------------------------------------------------------- 
    427    CHARACTER(len=*) :: cdrst_file 
     445      CHARACTER(len=*) :: cdrst_file 
    428446#if defined key_iomput 
    429    TYPE(xios_file) :: file_hdl 
    430    TYPE(xios_filegroup) :: filegroup_hdl 
    431    INTEGER :: i 
    432    CHARACTER(lc)  ::   clpath 
     447      TYPE(xios_file) :: file_hdl 
     448      TYPE(xios_filegroup) :: filegroup_hdl 
    433449 
    434450!set name of the restart file and enable available fields 
    435         IF(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ',cdrst_file 
    436         CALL xios_get_handle("file_definition", filegroup_hdl ) 
    437         CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') 
    438         IF(nxioso.eq.1) THEN  
    439            CALL xios_set_file_attr( "wrestart", type="one_file", enabled=.TRUE.,&  
    440                                     mode="write", output_freq=xios_timestep)  
    441            if(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in one_file mode'  
    442         ELSE   
    443            CALL xios_set_file_attr( "wrestart", type="multiple_file", enabled=.TRUE.,&  
    444                                     mode="write", output_freq=xios_timestep)  
    445            if(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in multiple_file mode'  
    446         ENDIF  
    447         CALL xios_set_file_attr( "wrestart", name=trim(cdrst_file)) 
     451      IF(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ', TRIM(cdrst_file) 
     452      CALL xios_get_handle("file_definition", filegroup_hdl ) 
     453      CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') 
     454      IF(nxioso.eq.1) THEN  
     455         CALL xios_set_file_attr( "wrestart", type="one_file", enabled=.TRUE.,&  
     456                                       mode="write", output_freq=xios_timestep)  
     457         IF(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in one_file mode'  
     458      ELSE   
     459         CALL xios_set_file_attr( "wrestart", type="multiple_file", enabled=.TRUE.,&  
     460                                            mode="write", output_freq=xios_timestep)  
     461         IF(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in multiple_file mode'  
     462      ENDIF  
     463      CALL xios_set_file_attr( "wrestart", name=trim(cdrst_file)) 
    448464#endif 
    449465   END SUBROUTINE iom_set_rstw_file 
     
    458474      !!--------------------------------------------------------------------- 
    459475!sets enabled = .TRUE. for each field in restart file 
    460    CHARACTER(len = *), INTENT(IN)                     :: sdfield 
    461    REAL(dp), OPTIONAL, INTENT(IN)                     :: rd0 
    462    REAL(sp), OPTIONAL, INTENT(IN)                     :: rs0 
    463    REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:)       :: rd1 
    464    REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:)       :: rs1 
    465    REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :)    :: rd2 
    466    REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :)    :: rs2 
    467    REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rd3   
    468    REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rs3 
     476      CHARACTER(len = *), INTENT(IN)                     :: sdfield 
     477      REAL(dp), OPTIONAL, INTENT(IN)                     :: rd0 
     478      REAL(sp), OPTIONAL, INTENT(IN)                     :: rs0 
     479      REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:)       :: rd1 
     480      REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:)       :: rs1 
     481      REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :)    :: rd2 
     482      REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :)    :: rs2 
     483      REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rd3   
     484      REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rs3 
    469485#if defined key_iomput 
    470    TYPE(xios_field) :: field_hdl 
    471    TYPE(xios_file) :: file_hdl 
    472    INTEGER :: i 
    473    CHARACTER(lc)  ::   clpath 
    474    CHARACTER(len=1024) :: fname 
    475    CHARACTER(len=lc)   :: axis_ref 
    476  
    477         CALL xios_get_handle("wrestart", file_hdl) 
     486      TYPE(xios_field) :: field_hdl 
     487      TYPE(xios_file) :: file_hdl 
     488 
     489      CALL xios_get_handle("wrestart", file_hdl) 
    478490!define fields for restart context 
    479         CALL xios_add_child(file_hdl, field_hdl, TRIM(sdfield)) 
    480  
    481         IF(PRESENT(rd3)) THEN 
    482                CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield),   & 
    483                             domain_ref="grid_N", axis_ref=TRIM(iom_axis(size(rd3, 3))), & 
    484                             prec = 8, operation = "instant") 
    485         ELSEIF(PRESENT(rs3)) THEN 
    486                CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield),   & 
    487                             domain_ref="grid_N", axis_ref=TRIM(iom_axis(size(rd3, 3))), & 
    488                             prec = 4, operation = "instant") 
    489         ELSEIF(PRESENT(rd2)) THEN 
    490                CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 
    491                                    domain_ref="grid_N", prec = 8, operation = "instant")  
    492         ELSEIF(PRESENT(rs2)) THEN 
    493                CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 
    494                                    domain_ref="grid_N", prec = 4, operation = "instant") 
    495         ELSEIF(PRESENT(rd1)) THEN 
    496                CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 
    497                                    axis_ref=TRIM(iom_axis(size(rd1, 1))), prec = 8, operation = "instant") 
    498         ELSEIF(PRESENT(rs1)) THEN 
    499                CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 
    500                                    axis_ref=TRIM(iom_axis(size(rd1, 1))), prec = 4, operation = "instant") 
    501         ELSEIF(PRESENT(rd0)) THEN 
    502                CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 
    503                                          scalar_ref = "grid_scalar", prec = 8, operation = "instant") 
    504         ELSEIF(PRESENT(rs0)) THEN 
    505                CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 
    506                                          scalar_ref = "grid_scalar", prec = 4, operation = "instant") 
    507         ENDIF 
     491      CALL xios_add_child(file_hdl, field_hdl, sdfield) 
     492 
     493      IF(PRESENT(rd3)) THEN 
     494         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     495                             domain_ref = "grid_N",                       & 
     496                             axis_ref = iom_axis(size(rd3, 3)),           & 
     497                             prec = 8, operation = "instant"              ) 
     498      ELSEIF(PRESENT(rs3)) THEN 
     499         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     500                             domain_ref = "grid_N",                       & 
     501                             axis_ref = iom_axis(size(rd3, 3)),           & 
     502                             prec = 4, operation = "instant"              ) 
     503      ELSEIF(PRESENT(rd2)) THEN 
     504         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     505                             domain_ref = "grid_N", prec = 8,             & 
     506                             operation = "instant"                        )  
     507      ELSEIF(PRESENT(rs2)) THEN 
     508         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     509                             domain_ref = "grid_N", prec = 4,             & 
     510                             operation = "instant"                        ) 
     511      ELSEIF(PRESENT(rd1)) THEN 
     512         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     513                             axis_ref = iom_axis(size(rd1, 1)),           & 
     514                             prec = 8, operation = "instant"              ) 
     515      ELSEIF(PRESENT(rs1)) THEN 
     516         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     517                             axis_ref = iom_axis(size(rd1, 1)),           & 
     518                             prec = 4, operation = "instant"              ) 
     519      ELSEIF(PRESENT(rd0)) THEN 
     520         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     521                             scalar_ref = "grid_scalar", prec = 8,        & 
     522                             operation = "instant"                        ) 
     523      ELSEIF(PRESENT(rs0)) THEN 
     524         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     525                             scalar_ref = "grid_scalar", prec = 4,        & 
     526                             operation = "instant"                        ) 
     527      ENDIF 
    508528#endif 
    509529   END SUBROUTINE iom_set_rstw_active 
    510530 
    511531   FUNCTION iom_axis(idlev) result(axis_ref) 
    512      !!--------------------------------------------------------------------- 
     532      !!--------------------------------------------------------------------- 
    513533      !!                   ***  FUNCTION  iom_axis  *** 
    514534      !! 
     
    518538      !!              iom_set_rst_context 
    519539      !!--------------------------------------------------------------------- 
    520     INTEGER, INTENT(IN) :: idlev 
    521     CHARACTER(len=lc)   :: axis_ref 
    522     CHARACTER(len=12)   :: str 
    523        IF(idlev == jpk) THEN 
     540      INTEGER, INTENT(IN) :: idlev 
     541      CHARACTER(len=lc)   :: axis_ref 
     542      CHARACTER(len=12)   :: str 
     543      IF(idlev == jpk) THEN 
    524544         axis_ref="nav_lev" 
    525545#if defined key_si3 
    526        ELSEIF(idlev == jpl) THEN 
     546      ELSEIF(idlev == jpl) THEN 
    527547         axis_ref="numcat" 
    528548#endif          
    529        ELSE 
     549      ELSE 
    530550         write(str, *) idlev 
    531551         CALL ctl_stop( 'iom_axis', 'Definition for axis with '//TRIM(ADJUSTL(str))//' levels missing') 
    532        ENDIF 
     552      ENDIF 
    533553   END FUNCTION iom_axis 
    534554 
     555   FUNCTION iom_xios_setid(cdname) result(kid) 
     556     !!--------------------------------------------------------------------- 
     557      !!                   ***  FUNCTION    *** 
     558      !! 
     559      !! ** Purpose : this function returns first available id to keep information about file  
     560      !!              sets filename in iom_file structure and sets name 
     561      !!              of XIOS context depending on cdcomp 
     562      !!              corresponds to iom_nf90_open 
     563      !!--------------------------------------------------------------------- 
     564      CHARACTER(len=*), INTENT(in   ) :: cdname      ! File name 
     565      INTEGER                         :: kid      ! identifier of the opened file 
     566      INTEGER                         :: jl 
     567 
     568      kid = 0 
     569      DO jl = jpmax_files, 1, -1 
     570         IF( iom_file(jl)%nfid == 0 )   kid = jl 
     571      ENDDO 
     572 
     573      iom_file(kid)%name   = TRIM(cdname) 
     574      iom_file(kid)%nfid   = 1 
     575      iom_file(kid)%nvars  = 0 
     576      iom_file(kid)%irec   = -1 
     577 
     578   END FUNCTION iom_xios_setid 
     579 
    535580   SUBROUTINE iom_set_rst_context(ld_rstr)  
    536      !!--------------------------------------------------------------------- 
     581      !!--------------------------------------------------------------------- 
    537582      !!                   ***  SUBROUTINE  iom_set_rst_context  *** 
    538583      !! 
     
    541586      !!                
    542587      !!--------------------------------------------------------------------- 
    543    LOGICAL, INTENT(IN)               :: ld_rstr 
    544    INTEGER :: ji 
     588      LOGICAL, INTENT(IN)               :: ld_rstr 
     589      INTEGER :: ji 
    545590#if defined key_iomput 
    546    TYPE(xios_domaingroup)            :: domaingroup_hdl  
    547    TYPE(xios_domain)                 :: domain_hdl  
    548    TYPE(xios_axisgroup)              :: axisgroup_hdl  
    549    TYPE(xios_axis)                   :: axis_hdl  
    550    TYPE(xios_scalar)                 :: scalar_hdl  
    551    TYPE(xios_scalargroup)            :: scalargroup_hdl  
    552  
    553      CALL xios_get_handle("domain_definition",domaingroup_hdl)  
    554      CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N")  
    555      CALL set_grid("N", glamt, gphit, .TRUE., ld_rstr)  
     591      TYPE(xios_domaingroup)            :: domaingroup_hdl  
     592      TYPE(xios_domain)                 :: domain_hdl  
     593      TYPE(xios_axisgroup)              :: axisgroup_hdl  
     594      TYPE(xios_axis)                   :: axis_hdl  
     595      TYPE(xios_scalar)                 :: scalar_hdl  
     596      TYPE(xios_scalargroup)            :: scalargroup_hdl  
     597 
     598      CALL xios_get_handle("domain_definition",domaingroup_hdl)  
     599      CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N")  
     600      CALL set_grid("N", glamt, gphit, .TRUE., ld_rstr)  
    556601  
    557      CALL xios_get_handle("axis_definition",axisgroup_hdl)  
    558      CALL xios_add_child(axisgroup_hdl, axis_hdl, "nav_lev")  
     602      CALL xios_get_handle("axis_definition",axisgroup_hdl)  
     603      CALL xios_add_child(axisgroup_hdl, axis_hdl, "nav_lev")  
    559604!AGRIF fails to compile when unit= is in call to xios_set_axis_attr 
    560 !    CALL xios_set_axis_attr( "nav_lev", long_name="Vertical levels",  unit="m", positive="down")  
    561      CALL xios_set_axis_attr( "nav_lev", long_name="Vertical levels in meters", positive="down") 
    562      CALL iom_set_axis_attr( "nav_lev", paxis = gdept_1d )  
     605!     CALL xios_set_axis_attr( "nav_lev", long_name="Vertical levels",  unit="m", positive="down")  
     606      CALL xios_set_axis_attr( "nav_lev", long_name = "Vertical levels in meters", positive = "down") 
     607      CALL iom_set_axis_attr( "nav_lev", paxis = gdept_1d )  
    563608#if defined key_si3 
    564      CALL xios_add_child(axisgroup_hdl, axis_hdl, "numcat") 
    565      CALL iom_set_axis_attr( "numcat", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
    566 #endif 
    567  
    568      CALL xios_get_handle("scalar_definition", scalargroup_hdl)  
    569      CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar")  
     609      CALL xios_add_child(axisgroup_hdl, axis_hdl, "numcat") 
     610      CALL iom_set_axis_attr( "numcat", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
     611#endif 
     612      CALL xios_get_handle("scalar_definition", scalargroup_hdl)  
     613      CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar")  
    570614#endif 
    571615   END SUBROUTINE iom_set_rst_context 
     616 
     617 
     618   SUBROUTINE set_xios_context(kdid, cdcont)  
     619      !!--------------------------------------------------------------------- 
     620      !!                   ***  SUBROUTINE  iom_set_rst_context  *** 
     621      !! 
     622      !! ** Purpose : set correct XIOS context based on kdid 
     623      !!                
     624      !!--------------------------------------------------------------------- 
     625      INTEGER,           INTENT(IN)     :: kdid           ! Identifier of the file 
     626      CHARACTER(LEN=lc), INTENT(OUT)    :: cdcont         ! name of the context for XIOS read/write 
     627       
     628      cdcont = "NONE" 
     629 
     630      IF(lrxios) THEN 
     631         IF(kdid == numror) THEN 
     632            cdcont = cr_ocerst_cxt 
     633         ELSEIF(kdid == numrir) THEN 
     634            cdcont = cr_icerst_cxt  
     635         ELSEIF(kdid == numrtr) THEN 
     636            cdcont = cr_toprst_cxt 
     637         ELSEIF(kdid == numrsr) THEN 
     638            cdcont = cr_sedrst_cxt 
     639         ENDIF 
     640      ENDIF 
     641 
     642      IF(lwxios) THEN 
     643         IF(kdid == numrow) THEN 
     644            cdcont = cw_ocerst_cxt 
     645         ELSEIF(kdid == numriw) THEN 
     646            cdcont = cw_icerst_cxt 
     647         ELSEIF(kdid == numrtw) THEN 
     648            cdcont = cw_toprst_cxt 
     649         ELSEIF(kdid == numrsw) THEN 
     650            cdcont = cw_sedrst_cxt 
     651         ENDIF 
     652      ENDIF 
     653   END SUBROUTINE set_xios_context 
     654 
    572655 
    573656   SUBROUTINE iom_swap( cdname ) 
     
    829912   !!                   INTERFACE iom_get 
    830913   !!---------------------------------------------------------------------- 
    831    SUBROUTINE iom_g0d_sp( kiomid, cdvar, pvar, ktime, ldxios ) 
     914   SUBROUTINE iom_g0d_sp( kiomid, cdvar, pvar, ktime ) 
    832915      INTEGER         , INTENT(in   )                 ::   kiomid    ! Identifier of the file 
    833916      CHARACTER(len=*), INTENT(in   )                 ::   cdvar     ! Name of the variable 
     
    835918      REAL(dp)                                        ::   ztmp_pvar ! tmp var to read field 
    836919      INTEGER         , INTENT(in   ),     OPTIONAL   ::   ktime     ! record number 
    837       LOGICAL         , INTENT(in   ),     OPTIONAL   ::   ldxios    ! use xios to read restart 
    838920      ! 
    839921      INTEGER                                         ::   idvar     ! variable id 
     
    843925      CHARACTER(LEN=100)                              ::   clname    ! file name 
    844926      CHARACTER(LEN=1)                                ::   cldmspc   ! 
    845       LOGICAL                                         ::   llxios 
    846       ! 
    847       llxios = .FALSE. 
    848       IF( PRESENT(ldxios) ) llxios = ldxios 
    849  
    850       IF(.NOT.llxios) THEN  ! read data using default library 
     927      CHARACTER(LEN=lc)                               ::   context 
     928      ! 
     929      CALL set_xios_context(kiomid, context) 
     930 
     931      IF(context == "NONE") THEN  ! read data using default library 
    851932         itime = 1 
    852933         IF( PRESENT(ktime) ) itime = ktime 
     
    871952#if defined key_iomput 
    872953         IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 
     954         CALL iom_swap(context) 
    873955         CALL xios_recv_field( trim(cdvar), pvar) 
     956         CALL iom_swap(cxios_context) 
    874957#else 
    875958         WRITE(ctmp1,*) 'Can not use XIOS in iom_g0d, file: '//trim(clname)//', var:'//trim(cdvar) 
     
    879962   END SUBROUTINE iom_g0d_sp 
    880963 
    881    SUBROUTINE iom_g0d_dp( kiomid, cdvar, pvar, ktime, ldxios ) 
     964   SUBROUTINE iom_g0d_dp( kiomid, cdvar, pvar, ktime ) 
    882965      INTEGER         , INTENT(in   )                 ::   kiomid    ! Identifier of the file 
    883966      CHARACTER(len=*), INTENT(in   )                 ::   cdvar     ! Name of the variable 
    884967      REAL(dp)        , INTENT(  out)                 ::   pvar      ! read field 
    885968      INTEGER         , INTENT(in   ),     OPTIONAL   ::   ktime     ! record number 
    886       LOGICAL         , INTENT(in   ),     OPTIONAL   ::   ldxios    ! use xios to read restart 
    887969      ! 
    888970      INTEGER                                         ::   idvar     ! variable id 
     
    892974      CHARACTER(LEN=100)                              ::   clname    ! file name 
    893975      CHARACTER(LEN=1)                                ::   cldmspc   ! 
    894       LOGICAL                                         ::   llxios 
    895       ! 
    896       llxios = .FALSE. 
    897       IF( PRESENT(ldxios) ) llxios = ldxios 
    898  
    899       IF(.NOT.llxios) THEN  ! read data using default library 
     976      CHARACTER(LEN=lc)                               ::   context 
     977      ! 
     978      CALL set_xios_context(kiomid, context) 
     979 
     980      IF(context == "NONE") THEN  ! read data using default library 
    900981         itime = 1 
    901982         IF( PRESENT(ktime) ) itime = ktime 
     
    9191000#if defined key_iomput 
    9201001         IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 
     1002         CALL iom_swap(context) 
    9211003         CALL xios_recv_field( trim(cdvar), pvar) 
     1004         CALL iom_swap(cxios_context) 
    9221005#else 
    9231006         WRITE(ctmp1,*) 'Can not use XIOS in iom_g0d, file: '//trim(clname)//', var:'//trim(cdvar) 
     
    9271010   END SUBROUTINE iom_g0d_dp 
    9281011 
    929    SUBROUTINE iom_g1d_sp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, ldxios ) 
     1012   SUBROUTINE iom_g1d_sp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount ) 
    9301013      INTEGER         , INTENT(in   )                         ::   kiomid    ! Identifier of the file 
    9311014      INTEGER         , INTENT(in   )                         ::   kdom      ! Type of domain to be read 
     
    9361019      INTEGER         , INTENT(in   ), DIMENSION(1), OPTIONAL ::   kstart    ! start axis position of the reading  
    9371020      INTEGER         , INTENT(in   ), DIMENSION(1), OPTIONAL ::   kcount    ! number of points in each axis 
    938       LOGICAL         , INTENT(in   ),               OPTIONAL ::   ldxios    ! read data using XIOS 
    9391021      ! 
    9401022      IF( kiomid > 0 ) THEN 
     
    9421024            ALLOCATE(ztmp_pvar(size(pvar,1))) 
    9431025            CALL iom_get_123d( kiomid, kdom       , cdvar        , pv_r1d=ztmp_pvar,   & 
    944               &                                                     ktime=ktime, kstart=kstart, kcount=kcount, & 
    945               &                                                     ldxios=ldxios ) 
     1026              &                                                     ktime=ktime, kstart=kstart, kcount=kcount ) 
    9461027            pvar = ztmp_pvar 
    9471028            DEALLOCATE(ztmp_pvar) 
     
    9511032 
    9521033 
    953    SUBROUTINE iom_g1d_dp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount, ldxios ) 
     1034   SUBROUTINE iom_g1d_dp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount ) 
    9541035      INTEGER         , INTENT(in   )                         ::   kiomid    ! Identifier of the file 
    9551036      INTEGER         , INTENT(in   )                         ::   kdom      ! Type of domain to be read 
     
    9591040      INTEGER         , INTENT(in   ), DIMENSION(1), OPTIONAL ::   kstart    ! start axis position of the reading  
    9601041      INTEGER         , INTENT(in   ), DIMENSION(1), OPTIONAL ::   kcount    ! number of points in each axis 
    961       LOGICAL         , INTENT(in   ),               OPTIONAL ::   ldxios    ! read data using XIOS 
    9621042      ! 
    9631043      IF( kiomid > 0 ) THEN 
    9641044         IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom       , cdvar        , pv_r1d=pvar,   & 
    965               &                                                     ktime=ktime, kstart=kstart, kcount=kcount, & 
    966               &                                                     ldxios=ldxios ) 
     1045              &                                                     ktime=ktime, kstart=kstart, kcount=kcount) 
    9671046      ENDIF 
    9681047   END SUBROUTINE iom_g1d_dp 
    9691048 
    970    SUBROUTINE iom_g2d_sp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount, ldxios) 
     1049   SUBROUTINE iom_g2d_sp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount) 
    9711050      INTEGER         , INTENT(in   )                         ::   kiomid    ! Identifier of the file 
    9721051      INTEGER         , INTENT(in   )                         ::   kdom      ! Type of domain to be read 
     
    9801059      INTEGER         , INTENT(in   ), DIMENSION(2), OPTIONAL ::   kstart    ! start axis position of the reading  
    9811060      INTEGER         , INTENT(in   ), DIMENSION(2), OPTIONAL ::   kcount    ! number of points in each axis 
    982       LOGICAL         , INTENT(in   ),               OPTIONAL ::   ldxios    ! read data using XIOS 
    9831061      ! 
    9841062      IF( kiomid > 0 ) THEN 
     
    9871065            CALL iom_get_123d( kiomid, kdom, cdvar      , pv_r2d = ztmp_pvar  , ktime = ktime,   & 
    9881066             &                                                      cd_type = cd_type, psgn   = psgn  , kfill = kfill,   & 
    989              &                                                      kstart  = kstart , kcount = kcount, ldxios=ldxios  ) 
     1067             &                                                      kstart  = kstart , kcount = kcount  ) 
    9901068            pvar = ztmp_pvar 
    9911069            DEALLOCATE(ztmp_pvar) 
     
    9941072   END SUBROUTINE iom_g2d_sp 
    9951073 
    996    SUBROUTINE iom_g2d_dp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount, ldxios) 
     1074   SUBROUTINE iom_g2d_dp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount) 
    9971075      INTEGER         , INTENT(in   )                         ::   kiomid    ! Identifier of the file 
    9981076      INTEGER         , INTENT(in   )                         ::   kdom      ! Type of domain to be read 
     
    10051083      INTEGER         , INTENT(in   ), DIMENSION(2), OPTIONAL ::   kstart    ! start axis position of the reading  
    10061084      INTEGER         , INTENT(in   ), DIMENSION(2), OPTIONAL ::   kcount    ! number of points in each axis 
    1007       LOGICAL         , INTENT(in   ),               OPTIONAL ::   ldxios    ! read data using XIOS 
    10081085      ! 
    10091086      IF( kiomid > 0 ) THEN 
    10101087         IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom, cdvar      , pv_r2d = pvar  , ktime = ktime,   & 
    10111088            &                                                       cd_type = cd_type, psgn   = psgn  , kfill = kfill,   & 
    1012             &                                                       kstart  = kstart , kcount = kcount, ldxios=ldxios  ) 
     1089            &                                                       kstart  = kstart , kcount = kcount                ) 
    10131090      ENDIF 
    10141091   END SUBROUTINE iom_g2d_dp 
    10151092 
    1016    SUBROUTINE iom_g3d_sp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount, ldxios ) 
     1093   SUBROUTINE iom_g3d_sp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount ) 
    10171094      INTEGER         , INTENT(in   )                         ::   kiomid    ! Identifier of the file 
    10181095      INTEGER         , INTENT(in   )                         ::   kdom      ! Type of domain to be read 
     
    10261103      INTEGER         , INTENT(in   ), DIMENSION(3), OPTIONAL ::   kstart    ! start axis position of the reading  
    10271104      INTEGER         , INTENT(in   ), DIMENSION(3), OPTIONAL ::   kcount    ! number of points in each axis 
    1028       LOGICAL         , INTENT(in   ),               OPTIONAL ::   ldxios    ! read data using XIOS 
    10291105      ! 
    10301106      IF( kiomid > 0 ) THEN 
     
    10331109            CALL iom_get_123d( kiomid, kdom, cdvar      , pv_r3d = ztmp_pvar  , ktime = ktime,   & 
    10341110            &                                                       cd_type = cd_type, psgn   = psgn  , kfill = kfill,   & 
    1035             &                                                       kstart  = kstart , kcount = kcount, ldxios=ldxios  ) 
     1111            &                                                       kstart  = kstart , kcount = kcount                ) 
    10361112            pvar = ztmp_pvar 
    10371113            DEALLOCATE(ztmp_pvar) 
     
    10401116   END SUBROUTINE iom_g3d_sp 
    10411117 
    1042    SUBROUTINE iom_g3d_dp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount, ldxios ) 
     1118   SUBROUTINE iom_g3d_dp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount ) 
    10431119      INTEGER         , INTENT(in   )                         ::   kiomid    ! Identifier of the file 
    10441120      INTEGER         , INTENT(in   )                         ::   kdom      ! Type of domain to be read 
     
    10511127      INTEGER         , INTENT(in   ), DIMENSION(3), OPTIONAL ::   kstart    ! start axis position of the reading  
    10521128      INTEGER         , INTENT(in   ), DIMENSION(3), OPTIONAL ::   kcount    ! number of points in each axis 
    1053       LOGICAL         , INTENT(in   ),               OPTIONAL ::   ldxios    ! read data using XIOS 
    10541129      ! 
    10551130      IF( kiomid > 0 ) THEN 
     
    10571132            CALL iom_get_123d( kiomid, kdom, cdvar      , pv_r3d = pvar  , ktime = ktime,   & 
    10581133            &                                                       cd_type = cd_type, psgn   = psgn  , kfill = kfill,   & 
    1059             &                                                       kstart  = kstart , kcount = kcount, ldxios=ldxios  ) 
     1134            &                                                       kstart  = kstart , kcount = kcount                ) 
    10601135         END IF 
    10611136      ENDIF 
     
    10651140 
    10661141   SUBROUTINE iom_get_123d( kiomid , kdom, cdvar, pv_r1d, pv_r2d, pv_r3d, ktime ,   & 
    1067          &                  cd_type, psgn, kfill, kstart, kcount, ldxios ) 
     1142         &                  cd_type, psgn, kfill, kstart, kcount ) 
    10681143      !!----------------------------------------------------------------------- 
    10691144      !!                  ***  ROUTINE  iom_get_123d  *** 
     
    10851160      INTEGER , DIMENSION(:)     , INTENT(in   ), OPTIONAL ::   kstart    ! start position of the reading in each axis  
    10861161      INTEGER , DIMENSION(:)     , INTENT(in   ), OPTIONAL ::   kcount    ! number of points to be read in each axis 
    1087       LOGICAL                    , INTENT(in   ), OPTIONAL ::   ldxios    ! use XIOS to read restart 
    10881162      ! 
    10891163      LOGICAL                        ::   llok        ! true if ok! 
    1090       LOGICAL                        ::   llxios      ! local definition for XIOS read 
    10911164      INTEGER                        ::   jl          ! loop on number of dimension  
    10921165      INTEGER                        ::   idom        ! type of domain 
     
    11151188      REAL(dp)                       ::   gma, gmi 
    11161189      !--------------------------------------------------------------------- 
    1117       ! 
     1190      CHARACTER(LEN=lc)                               ::   context 
     1191      ! 
     1192      CALL set_xios_context(kiomid, context) 
    11181193      inlev = -1 
    11191194      IF( PRESENT(pv_r3d) )   inlev = SIZE(pv_r3d, 3) 
    11201195      ! 
    1121       llxios = .FALSE. 
    1122       IF( PRESENT(ldxios) )   llxios = ldxios 
    1123       ! 
    11241196      idom = kdom 
    11251197      istop = nstop 
    11261198      ! 
    1127       IF(.NOT.llxios) THEN 
     1199      IF(context == "NONE") THEN 
    11281200         clname = iom_file(kiomid)%name   !   esier to read 
    11291201         clinfo = '          iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) 
     
    12931365!would be good to be able to check which context is active and swap only if current is not restart 
    12941366         idvar = iom_varid( kiomid, cdvar ) 
    1295  
     1367         CALL iom_swap(context) 
    12961368         zsgn = 1._wp 
    12971369         IF( PRESENT(psgn   ) )   zsgn    = psgn 
     
    13151387            CALL xios_recv_field( trim(cdvar), pv_r1d) 
    13161388         ENDIF 
     1389         CALL iom_swap(cxios_context) 
    13171390#else 
    13181391         istop = istop + 1  
     
    15101583   !!                   INTERFACE iom_rstput 
    15111584   !!---------------------------------------------------------------------- 
    1512    SUBROUTINE iom_rp0d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1585   SUBROUTINE iom_rp0d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    15131586      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    15141587      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    15171590      REAL(sp)        , INTENT(in)                         ::   pvar     ! written field 
    15181591      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1519       LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
    1520       LOGICAL :: llx                ! local xios write flag 
    1521       INTEGER :: ivid   ! variable id 
    1522  
    1523       llx = .FALSE. 
    1524       IF(PRESENT(ldxios)) llx = ldxios 
     1592      ! 
     1593      LOGICAL           :: llx                ! local xios write flag 
     1594      INTEGER           :: ivid   ! variable id 
     1595      CHARACTER(LEN=lc) :: context 
     1596      ! 
     1597      CALL set_xios_context(kiomid, context) 
     1598 
     1599      llx = .NOT. (context == "NONE") 
     1600 
    15251601      IF( llx ) THEN 
    15261602#ifdef key_iomput 
    1527       IF( kt == kwrite ) THEN 
    1528           IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
    1529           CALL iom_put(trim(cdvar), pvar) 
    1530       ELSE 
    1531           IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 
    1532           CALL iom_set_rstw_active( trim(cdvar), rs0 = pvar )  
    1533       ENDIF 
     1603         IF( kt == kwrite ) THEN 
     1604            IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
     1605            CALL iom_swap(context) 
     1606            CALL iom_put(trim(cdvar), pvar) 
     1607            CALL iom_swap(cxios_context) 
     1608         ELSE 
     1609            IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 
     1610            CALL iom_swap(context) 
     1611            CALL iom_set_rstw_active( trim(cdvar), rs0 = pvar )  
     1612            CALL iom_swap(cxios_context) 
     1613         ENDIF 
    15341614#endif 
    15351615      ELSE 
     
    15431623   END SUBROUTINE iom_rp0d_sp 
    15441624 
    1545    SUBROUTINE iom_rp0d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1625   SUBROUTINE iom_rp0d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    15461626      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    15471627      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    15501630      REAL(dp)        , INTENT(in)                         ::   pvar     ! written field 
    15511631      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1552       LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
    1553       LOGICAL :: llx                ! local xios write flag 
    1554       INTEGER :: ivid   ! variable id 
    1555  
    1556       llx = .FALSE. 
    1557       IF(PRESENT(ldxios)) llx = ldxios 
     1632      ! 
     1633      LOGICAL           :: llx                ! local xios write flag 
     1634      INTEGER           :: ivid   ! variable id 
     1635      CHARACTER(LEN=lc) :: context 
     1636      ! 
     1637      CALL set_xios_context(kiomid, context) 
     1638 
     1639      llx = .NOT. (context == "NONE") 
     1640 
    15581641      IF( llx ) THEN 
    15591642#ifdef key_iomput 
    1560       IF( kt == kwrite ) THEN 
    1561           IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
    1562           CALL iom_put(trim(cdvar), pvar) 
    1563       ELSE 
    1564           IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 
    1565           CALL iom_set_rstw_active( trim(cdvar), rd0 = pvar )  
    1566       ENDIF 
     1643         IF( kt == kwrite ) THEN 
     1644            IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
     1645            CALL iom_swap(context) 
     1646            CALL iom_put(trim(cdvar), pvar) 
     1647            CALL iom_swap(cxios_context) 
     1648         ELSE 
     1649            IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 
     1650            CALL iom_swap(context) 
     1651            CALL iom_set_rstw_active( trim(cdvar), rd0 = pvar )  
     1652            CALL iom_swap(cxios_context) 
     1653         ENDIF 
    15671654#endif 
    15681655      ELSE 
     
    15771664 
    15781665 
    1579    SUBROUTINE iom_rp1d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1666   SUBROUTINE iom_rp1d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    15801667      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    15811668      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    15841671      REAL(sp)        , INTENT(in), DIMENSION(          :) ::   pvar     ! written field 
    15851672      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1586       LOGICAL, OPTIONAL                                    ::   ldxios   ! xios write flag 
    1587       LOGICAL :: llx                ! local xios write flag 
    1588       INTEGER :: ivid   ! variable id 
    1589  
    1590       llx = .FALSE. 
    1591       IF(PRESENT(ldxios)) llx = ldxios 
     1673      ! 
     1674      LOGICAL           :: llx                ! local xios write flag 
     1675      INTEGER           :: ivid   ! variable id 
     1676      CHARACTER(LEN=lc) :: context 
     1677      ! 
     1678      CALL set_xios_context(kiomid, context) 
     1679 
     1680      llx = .NOT. (context == "NONE") 
     1681 
    15921682      IF( llx ) THEN 
    15931683#ifdef key_iomput 
    1594       IF( kt == kwrite ) THEN 
    1595          IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 
    1596          CALL iom_put(trim(cdvar), pvar) 
    1597       ELSE 
    1598          IF(lwp) write(numout,*) 'RESTART: define (XIOS 1D)',trim(cdvar) 
    1599          CALL iom_set_rstw_active( trim(cdvar), rs1 = pvar ) 
    1600       ENDIF 
     1684         IF( kt == kwrite ) THEN 
     1685            IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 
     1686            CALL iom_swap(context) 
     1687            CALL iom_put(trim(cdvar), pvar) 
     1688            CALL iom_swap(cxios_context) 
     1689         ELSE 
     1690            IF(lwp) write(numout,*) 'RESTART: define (XIOS 1D)',trim(cdvar) 
     1691            CALL iom_swap(context) 
     1692            CALL iom_set_rstw_active( trim(cdvar), rs1 = pvar ) 
     1693            CALL iom_swap(cxios_context) 
     1694         ENDIF 
    16011695#endif 
    16021696      ELSE 
     
    16101704   END SUBROUTINE iom_rp1d_sp 
    16111705 
    1612    SUBROUTINE iom_rp1d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1706   SUBROUTINE iom_rp1d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    16131707      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    16141708      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    16171711      REAL(dp)        , INTENT(in), DIMENSION(          :) ::   pvar     ! written field 
    16181712      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1619       LOGICAL, OPTIONAL                                    ::   ldxios   ! xios write flag 
    1620       LOGICAL :: llx                ! local xios write flag 
    1621       INTEGER :: ivid   ! variable id 
    1622  
    1623       llx = .FALSE. 
    1624       IF(PRESENT(ldxios)) llx = ldxios 
     1713      ! 
     1714      LOGICAL           :: llx                ! local xios write flag 
     1715      INTEGER           :: ivid   ! variable id 
     1716      CHARACTER(LEN=lc) :: context 
     1717      ! 
     1718      CALL set_xios_context(kiomid, context) 
     1719 
     1720      llx = .NOT. (context == "NONE") 
     1721 
    16251722      IF( llx ) THEN 
    16261723#ifdef key_iomput 
    1627       IF( kt == kwrite ) THEN 
    1628          IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 
    1629          CALL iom_put(trim(cdvar), pvar) 
    1630       ELSE 
    1631          IF(lwp) write(numout,*) 'RESTART: define (XIOS 1D)',trim(cdvar) 
    1632          CALL iom_set_rstw_active( trim(cdvar), rd1 = pvar ) 
    1633       ENDIF 
     1724         IF( kt == kwrite ) THEN 
     1725            IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 
     1726            CALL iom_swap(context) 
     1727            CALL iom_put(trim(cdvar), pvar) 
     1728            CALL iom_swap(cxios_context) 
     1729         ELSE 
     1730            IF(lwp) write(numout,*) 'RESTART: define (XIOS 1D)',trim(cdvar) 
     1731            CALL iom_swap(context) 
     1732            CALL iom_set_rstw_active( trim(cdvar), rd1 = pvar ) 
     1733            CALL iom_swap(cxios_context) 
     1734         ENDIF 
    16341735#endif 
    16351736      ELSE 
     
    16441745 
    16451746 
    1646    SUBROUTINE iom_rp2d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1747   SUBROUTINE iom_rp2d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    16471748      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    16481749      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    16511752      REAL(sp)        , INTENT(in), DIMENSION(:,    :    ) ::   pvar     ! written field 
    16521753      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1653       LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
    1654       LOGICAL :: llx 
    1655       INTEGER :: ivid   ! variable id 
    1656  
    1657       llx = .FALSE. 
    1658       IF(PRESENT(ldxios)) llx = ldxios 
     1754      ! 
     1755      LOGICAL            :: llx 
     1756      INTEGER            :: ivid   ! variable id 
     1757      CHARACTER(LEN=lc)  :: context 
     1758      ! 
     1759      CALL set_xios_context(kiomid, context) 
     1760 
     1761      llx = .NOT. (context == "NONE") 
     1762 
    16591763      IF( llx ) THEN 
    16601764#ifdef key_iomput 
    1661       IF( kt == kwrite ) THEN 
    1662          IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 
    1663          CALL iom_put(trim(cdvar), pvar) 
    1664       ELSE 
    1665          IF(lwp) write(numout,*) 'RESTART: define (XIOS 2D)',trim(cdvar) 
    1666          CALL iom_set_rstw_active( trim(cdvar), rs2 = pvar ) 
    1667       ENDIF 
     1765         IF( kt == kwrite ) THEN 
     1766            IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 
     1767            CALL iom_swap(context) 
     1768            CALL iom_put(trim(cdvar), pvar) 
     1769            CALL iom_swap(cxios_context) 
     1770         ELSE 
     1771            IF(lwp) write(numout,*) 'RESTART: define (XIOS 2D)',trim(cdvar) 
     1772            CALL iom_swap(context) 
     1773            CALL iom_set_rstw_active( trim(cdvar), rs2 = pvar ) 
     1774            CALL iom_swap(cxios_context) 
     1775         ENDIF 
    16681776#endif 
    16691777      ELSE 
     
    16771785   END SUBROUTINE iom_rp2d_sp 
    16781786 
    1679    SUBROUTINE iom_rp2d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1787   SUBROUTINE iom_rp2d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    16801788      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    16811789      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    16841792      REAL(dp)        , INTENT(in), DIMENSION(:,    :    ) ::   pvar     ! written field 
    16851793      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1686       LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
    1687       LOGICAL :: llx 
    1688       INTEGER :: ivid   ! variable id 
    1689  
    1690       llx = .FALSE. 
    1691       IF(PRESENT(ldxios)) llx = ldxios 
     1794      ! 
     1795      LOGICAL           :: llx 
     1796      INTEGER           :: ivid   ! variable id 
     1797      CHARACTER(LEN=lc) :: context 
     1798      ! 
     1799      CALL set_xios_context(kiomid, context) 
     1800 
     1801      llx = .NOT. (context == "NONE") 
     1802 
    16921803      IF( llx ) THEN 
    16931804#ifdef key_iomput 
    1694       IF( kt == kwrite ) THEN 
    1695          IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 
    1696          CALL iom_put(trim(cdvar), pvar) 
    1697       ELSE 
    1698          IF(lwp) write(numout,*) 'RESTART: define (XIOS 2D)',trim(cdvar) 
    1699          CALL iom_set_rstw_active( trim(cdvar), rd2 = pvar ) 
    1700       ENDIF 
     1805         IF( kt == kwrite ) THEN 
     1806            IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 
     1807            CALL iom_swap(context) 
     1808            CALL iom_put(trim(cdvar), pvar) 
     1809            CALL iom_swap(cxios_context) 
     1810         ELSE 
     1811            IF(lwp) write(numout,*) 'RESTART: define (XIOS 2D)',trim(cdvar) 
     1812            CALL iom_swap(context) 
     1813            CALL iom_set_rstw_active( trim(cdvar), rd2 = pvar ) 
     1814            CALL iom_swap(cxios_context) 
     1815         ENDIF 
    17011816#endif 
    17021817      ELSE 
     
    17111826 
    17121827 
    1713    SUBROUTINE iom_rp3d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1828   SUBROUTINE iom_rp3d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    17141829      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    17151830      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    17181833      REAL(sp)        , INTENT(in),       DIMENSION(:,:,:) ::   pvar     ! written field 
    17191834      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1720       LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
    1721       LOGICAL :: llx                 ! local xios write flag 
    1722       INTEGER :: ivid   ! variable id 
    1723  
    1724       llx = .FALSE. 
    1725       IF(PRESENT(ldxios)) llx = ldxios 
     1835      ! 
     1836      LOGICAL           :: llx                 ! local xios write flag 
     1837      INTEGER           :: ivid   ! variable id 
     1838      CHARACTER(LEN=lc) :: context 
     1839      ! 
     1840      CALL set_xios_context(kiomid, context) 
     1841 
     1842      llx = .NOT. (context == "NONE") 
     1843 
    17261844      IF( llx ) THEN 
    17271845#ifdef key_iomput 
    1728       IF( kt == kwrite ) THEN 
    1729          IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 
    1730          CALL iom_put(trim(cdvar), pvar) 
    1731      ELSE 
    1732          IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 
    1733          CALL iom_set_rstw_active( trim(cdvar), rs3 = pvar ) 
    1734       ENDIF 
     1846         IF( kt == kwrite ) THEN 
     1847            IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 
     1848            CALL iom_swap(context) 
     1849            CALL iom_put(trim(cdvar), pvar) 
     1850            CALL iom_swap(cxios_context) 
     1851         ELSE 
     1852            IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 
     1853            CALL iom_swap(context) 
     1854            CALL iom_set_rstw_active( trim(cdvar), rs3 = pvar ) 
     1855            CALL iom_swap(cxios_context) 
     1856         ENDIF 
    17351857#endif 
    17361858      ELSE 
     
    17441866   END SUBROUTINE iom_rp3d_sp 
    17451867 
    1746    SUBROUTINE iom_rp3d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
     1868   SUBROUTINE iom_rp3d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
    17471869      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    17481870      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    17511873      REAL(dp)        , INTENT(in),       DIMENSION(:,:,:) ::   pvar     ! written field 
    17521874      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    1753       LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
    1754       LOGICAL :: llx                 ! local xios write flag 
    1755       INTEGER :: ivid   ! variable id 
    1756  
    1757       llx = .FALSE. 
    1758       IF(PRESENT(ldxios)) llx = ldxios 
     1875      ! 
     1876      LOGICAL           :: llx                 ! local xios write flag 
     1877      INTEGER           :: ivid   ! variable id 
     1878      CHARACTER(LEN=lc) :: context 
     1879      ! 
     1880      CALL set_xios_context(kiomid, context) 
     1881 
     1882      llx = .NOT. (context == "NONE") 
     1883 
    17591884      IF( llx ) THEN 
    17601885#ifdef key_iomput 
    1761       IF( kt == kwrite ) THEN 
    1762          IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 
    1763          CALL iom_put(trim(cdvar), pvar) 
    1764       ELSE 
    1765          IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 
    1766          CALL iom_set_rstw_active( trim(cdvar), rd3 = pvar ) 
    1767       ENDIF 
     1886         IF( kt == kwrite ) THEN 
     1887            IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 
     1888            CALL iom_swap(context) 
     1889            CALL iom_put(trim(cdvar), pvar) 
     1890            CALL iom_swap(cxios_context) 
     1891         ELSE 
     1892            IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 
     1893            CALL iom_swap(context) 
     1894            CALL iom_set_rstw_active( trim(cdvar), rd3 = pvar ) 
     1895            CALL iom_swap(cxios_context) 
     1896         ENDIF 
    17681897#endif 
    17691898      ELSE 
     
    18802009      IF( iom_use(cdname) ) THEN 
    18812010#if defined key_iomput 
    1882          IF( SIZE(pfield2d, dim=1) == jpi .AND. SIZE(pfield2d, dim=2) == jpj ) THEN 
    1883             CALL xios_send_field( cdname, pfield2d(Nis0:Nie0, Njs0:Nje0) )       ! this extraction will create a copy of pfield2d 
    1884          ELSE 
    1885             CALL xios_send_field( cdname, pfield2d ) 
    1886          ENDIF 
     2011         CALL xios_send_field( cdname, pfield2d ) 
    18872012#else 
    18882013         WRITE(numout,*) pfield2d   ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings 
     
    18962021      IF( iom_use(cdname) ) THEN 
    18972022#if defined key_iomput 
    1898          IF( SIZE(pfield2d, dim=1) == jpi .AND. SIZE(pfield2d, dim=2) == jpj ) THEN 
    1899             CALL xios_send_field( cdname, pfield2d(Nis0:Nie0, Njs0:Nje0) )       ! this extraction will create a copy of pfield2d 
    1900          ELSE 
    1901             CALL xios_send_field( cdname, pfield2d ) 
    1902          ENDIF 
     2023         CALL xios_send_field( cdname, pfield2d ) 
    19032024#else 
    19042025         WRITE(numout,*) pfield2d   ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings 
     
    19122033      IF( iom_use(cdname) ) THEN 
    19132034#if defined key_iomput 
    1914          IF( SIZE(pfield3d, dim=1) == jpi .AND. SIZE(pfield3d, dim=2) == jpj ) THEN 
    1915             CALL xios_send_field( cdname, pfield3d(Nis0:Nie0, Njs0:Nje0,:) )     ! this extraction will create a copy of pfield3d 
    1916          ELSE 
    1917             CALL xios_send_field( cdname, pfield3d ) 
    1918          ENDIF 
     2035         CALL xios_send_field( cdname, pfield3d ) 
    19192036#else 
    19202037         WRITE(numout,*) pfield3d   ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings 
     
    19282045      IF( iom_use(cdname) ) THEN 
    19292046#if defined key_iomput 
    1930          IF( SIZE(pfield3d, dim=1) == jpi .AND. SIZE(pfield3d, dim=2) == jpj ) THEN 
    1931             CALL xios_send_field( cdname, pfield3d(Nis0:Nie0, Njs0:Nje0,:) )     ! this extraction will create a copy of pfield3d 
    1932          ELSE 
    1933             CALL xios_send_field( cdname, pfield3d ) 
    1934          ENDIF 
     2047         CALL xios_send_field( cdname, pfield3d ) 
    19352048#else 
    19362049         WRITE(numout,*) pfield3d   ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings 
     
    19442057      IF( iom_use(cdname) ) THEN 
    19452058#if defined key_iomput 
    1946          IF( SIZE(pfield4d, dim=1) == jpi .AND. SIZE(pfield4d, dim=2) == jpj ) THEN 
    1947             CALL xios_send_field( cdname, pfield4d(Nis0:Nie0, Njs0:Nje0,:,:) )   ! this extraction will create a copy of pfield4d 
    1948          ELSE 
    1949             CALL xios_send_field (cdname, pfield4d ) 
    1950          ENDIF 
     2059         CALL xios_send_field (cdname, pfield4d ) 
    19512060#else 
    19522061         WRITE(numout,*) pfield4d   ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings 
     
    19602069      IF( iom_use(cdname) ) THEN 
    19612070#if defined key_iomput 
    1962          IF( SIZE(pfield4d, dim=1) == jpi .AND. SIZE(pfield4d, dim=2) == jpj ) THEN 
    1963             CALL xios_send_field( cdname, pfield4d(Nis0:Nie0, Njs0:Nje0,:,:) )   ! this extraction will create a copy of pfield4d 
    1964          ELSE 
    1965             CALL xios_send_field (cdname, pfield4d ) 
    1966          ENDIF 
     2071         CALL xios_send_field (cdname, pfield4d ) 
    19672072#else 
    19682073         WRITE(numout,*) pfield4d   ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings 
     
    21352240      CALL iom_swap( cdname )   ! swap to cdname context 
    21362241      CALL xios_update_calendar(kt) 
    2137       IF( cdname /= TRIM(cxios_context) )   CALL iom_swap( TRIM(cxios_context) )   ! return back to nemo context 
     2242      IF( cdname /= TRIM(cxios_context) )   CALL iom_swap( cxios_context )   ! return back to nemo context 
    21382243   END SUBROUTINE iom_setkt 
    21392244 
     
    21492254         CALL iom_swap( cdname )   ! swap to cdname context 
    21502255         CALL xios_context_finalize() ! finalize the context 
    2151          IF( cdname /= TRIM(cxios_context) ) CALL iom_swap( TRIM(cxios_context) )   ! return back to nemo context 
     2256         IF( cdname /= cxios_context ) CALL iom_swap( cxios_context )   ! return back to nemo context 
    21522257      ENDIF 
    21532258      ! 
     
    21702275      ! 
    21712276      CALL iom_set_domain_attr("grid_"//cdgrd, ni_glo=Ni0glo,nj_glo=Nj0glo,ibegin=mig0(Nis0)-1,jbegin=mjg0(Njs0)-1,ni=Ni_0,nj=Nj_0) 
    2172       CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = 0, data_ni = Ni_0, data_jbegin = 0, data_nj = Nj_0) 
     2277      CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = -nn_hls, data_ni = jpi, data_jbegin = -nn_hls, data_nj = jpj) 
    21732278!don't define lon and lat for restart reading context.  
    21742279      IF ( .NOT.ldrxios ) & 
     
    22692374      CALL dom_ngb( 180.0_wp, 90.0_wp, ix, iy, 'T' ) !  i-line that passes near the North Pole : Reference latitude (used in plots) 
    22702375      CALL iom_set_domain_attr("gznl", ni_glo=Ni0glo, nj_glo=Nj0glo, ibegin=mig0(Nis0)-1, jbegin=mjg0(Njs0)-1, ni=Ni_0, nj=Nj_0) 
    2271       CALL iom_set_domain_attr("gznl", data_dim=2, data_ibegin = 0, data_ni = Ni_0, data_jbegin = 0, data_nj = Nj_0) 
     2376      CALL iom_set_domain_attr("gznl", data_dim=2, data_ibegin = -nn_hls, data_ni = jpi, data_jbegin = -nn_hls, data_nj = jpj) 
    22722377      CALL iom_set_domain_attr("gznl", lonvalue = real(zlon, dp),   & 
    22732378         &                             latvalue = real(RESHAPE(plat(Nis0:Nie0, Njs0:Nje0),(/ Ni_0*Nj_0 /)),dp))   
    2274       CALL iom_set_zoom_domain_attr("ptr", ibegin=ix-1, jbegin=0, ni=1, nj=Nj_0) 
     2379      CALL iom_set_zoom_domain_attr("ptr", ibegin=ix-1, jbegin=0, ni=1, nj=Nj0glo) 
    22752380      ! 
    22762381      CALL iom_update_file_name('ptr') 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/IOM/iom_def.F90

    r13727 r13934  
    3838!XIOS read restart    
    3939   LOGICAL, PUBLIC            ::   lrxios = .FALSE.     !: read single file restart using XIOS main switch 
    40    LOGICAL, PUBLIC            ::   lroxios = .FALSE.    !: read single file restart using XIOS for oce       
    4140   LOGICAL, PUBLIC            ::   lxios_sini = .FALSE. ! is restart in a single file 
    4241 
     
    6261   END TYPE file_descriptor 
    6362   TYPE(file_descriptor), DIMENSION(jpmax_files), PUBLIC ::   iom_file !: array containing the info for all opened files 
    64 !metadata in restart file for restart read with XIOS 
    65    INTEGER, PUBLIC, PARAMETER :: NMETA = 10 
    66    CHARACTER(LEN=nf90_max_name), PUBLIC :: meta(NMETA) 
    6763!$AGRIF_END_DO_NOT_TREAT 
    6864   ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/IOM/restart.F90

    r13750 r13934  
    110110            ELSE 
    111111#if defined key_iomput 
    112                cwxios_context = "rstw_"//TRIM(ADJUSTL(clkt)) 
     112               cw_ocerst_cxt = "rstw_"//TRIM(ADJUSTL(clkt)) 
    113113               IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    114114                  clpname = clname 
     
    116116                  clpname = TRIM(Agrif_CFixed())//"_"//clname    
    117117               ENDIF 
    118                CALL iom_init( cwxios_context, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .false. ) 
     118               numrow = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 
     119               CALL iom_init( cw_ocerst_cxt, kdid = numrow, ld_closedef = .false. ) 
    119120               CALL iom_swap(      cxios_context          ) 
    120121#else 
     
    142143      INTEGER, INTENT(in) ::   Kbb, Kmm   ! ocean time level indices 
    143144      !!---------------------------------------------------------------------- 
    144                      IF(lwxios) CALL iom_swap(      cwxios_context          ) 
    145                      CALL iom_rstput( kt, nitrst, numrow, 'rdt'    , rn_Dt       , ldxios = lwxios)   ! dynamics time step 
    146                      CALL iom_delay_rst( 'WRITE', 'OCE', numrow )   ! save only ocean delayed global communication variables 
     145                     CALL iom_rstput( kt, nitrst, numrow, 'rdt'    , rn_Dt       )   ! dynamics time step 
     146                     IF(.NOT.lwxios) CALL iom_delay_rst( 'WRITE', 'OCE', numrow )   ! save only ocean delayed global communication variables 
    147147 
    148148      IF ( .NOT. ln_diurnal_only ) THEN 
    149                      CALL iom_rstput( kt, nitrst, numrow, 'ub'     , uu(:,:,:       ,Kbb), ldxios = lwxios        )     ! before fields 
    150                      CALL iom_rstput( kt, nitrst, numrow, 'vb'     , vv(:,:,:       ,Kbb), ldxios = lwxios        ) 
    151                      CALL iom_rstput( kt, nitrst, numrow, 'tb'     , ts(:,:,:,jp_tem,Kbb), ldxios = lwxios ) 
    152                      CALL iom_rstput( kt, nitrst, numrow, 'sb'     , ts(:,:,:,jp_sal,Kbb), ldxios = lwxios ) 
    153                      CALL iom_rstput( kt, nitrst, numrow, 'sshb'   ,ssh(:,:         ,Kbb), ldxios = lwxios      ) 
     149                     CALL iom_rstput( kt, nitrst, numrow, 'ub'     , uu(:,:,:       ,Kbb) )     ! before fields 
     150                     CALL iom_rstput( kt, nitrst, numrow, 'vb'     , vv(:,:,:       ,Kbb) ) 
     151                     CALL iom_rstput( kt, nitrst, numrow, 'tb'     , ts(:,:,:,jp_tem,Kbb) ) 
     152                     CALL iom_rstput( kt, nitrst, numrow, 'sb'     , ts(:,:,:,jp_sal,Kbb) ) 
     153                     CALL iom_rstput( kt, nitrst, numrow, 'sshb'   , ssh(:,:         ,Kbb)) 
    154154                     ! 
    155                      CALL iom_rstput( kt, nitrst, numrow, 'un'     , uu(:,:,:       ,Kmm), ldxios = lwxios        )     ! now fields 
    156                      CALL iom_rstput( kt, nitrst, numrow, 'vn'     , vv(:,:,:       ,Kmm), ldxios = lwxios        ) 
    157                      CALL iom_rstput( kt, nitrst, numrow, 'tn'     , ts(:,:,:,jp_tem,Kmm), ldxios = lwxios ) 
    158                      CALL iom_rstput( kt, nitrst, numrow, 'sn'     , ts(:,:,:,jp_sal,Kmm), ldxios = lwxios ) 
    159                      CALL iom_rstput( kt, nitrst, numrow, 'sshn'   ,ssh(:,:         ,Kmm), ldxios = lwxios      ) 
    160                      CALL iom_rstput( kt, nitrst, numrow, 'rhop'   , rhop, ldxios = lwxios      ) 
     155                     CALL iom_rstput( kt, nitrst, numrow, 'un'     , uu(:,:,:       ,Kmm) )     ! now fields 
     156                     CALL iom_rstput( kt, nitrst, numrow, 'vn'     , vv(:,:,:       ,Kmm) ) 
     157                     CALL iom_rstput( kt, nitrst, numrow, 'tn'     , ts(:,:,:,jp_tem,Kmm) ) 
     158                     CALL iom_rstput( kt, nitrst, numrow, 'sn'     , ts(:,:,:,jp_sal,Kmm) ) 
     159                     CALL iom_rstput( kt, nitrst, numrow, 'sshn'   , ssh(:,:         ,Kmm)) 
     160                     CALL iom_rstput( kt, nitrst, numrow, 'rhop'   , rhop      ) 
    161161      ENDIF 
    162162       
    163       IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst, ldxios = lwxios )   
    164       IF(lwxios) CALL iom_swap(      cxios_context          ) 
     163      IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst )   
    165164      IF( kt == nitrst ) THEN 
    166165         IF(.NOT.lwxios) THEN 
    167166            CALL iom_close( numrow )     ! close the restart file (only at last time step) 
    168167         ELSE 
    169             CALL iom_context_finalize(      cwxios_context          ) 
     168            CALL iom_context_finalize(      cw_ocerst_cxt          ) 
     169            iom_file(numrow)%nfid       = 0 
     170            numrow = 0 
    170171         ENDIF 
    171172!!gm         IF( .NOT. lk_trdmld )   lrst_oce = .FALSE. 
     
    209210! can handle checking if variable is in the restart file (there will be no need to open 
    210211! restart) 
    211          lroxios = lrxios.AND.lxios_sini 
    212  
    213          IF( lroxios) THEN 
    214              crxios_context = 'oce_rst' 
     212         lrxios = lrxios.AND.lxios_sini 
     213 
     214         IF( lrxios) THEN 
     215             cr_ocerst_cxt = 'oce_rst' 
    215216             IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS' 
    216              IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    217                 clpname = cn_ocerst_in 
    218              ELSE 
    219                 clpname = TRIM(Agrif_CFixed())//"_"//cn_ocerst_in    
    220              ENDIF 
    221              CALL iom_init( crxios_context, fname = TRIM(clpath)//TRIM(clpname), & 
    222                               idfp = iom_file(numror)%nfid, ld_closedef = .TRUE. ) 
     217!            IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     218!               clpname = cn_ocerst_in 
     219!            ELSE 
     220!               clpname = TRIM(Agrif_CFixed())//"_"//cn_ocerst_in    
     221!            ENDIF 
     222             CALL iom_init( cr_ocerst_cxt, kdid = numror, ld_closedef = .TRUE. ) 
     223             CALL iom_swap(      cxios_context          ) 
    223224         ENDIF 
    224225 
     
    245246 
    246247      ! Check dynamics and tracer time-step consistency and force Euler restart if changed 
    247       IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    248248      IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 )   THEN 
    249          CALL iom_get( numror, 'rdt', zrdt, ldxios = lroxios ) 
     249         CALL iom_get( numror, 'rdt', zrdt ) 
    250250         IF( zrdt /= rn_Dt ) THEN 
    251251            IF(lwp) WRITE( numout,*) 
     
    257257      ENDIF 
    258258 
    259       CALL iom_delay_rst( 'READ', 'OCE', numror )   ! read only ocean delayed global communication variables 
     259      IF(.NOT.lrxios ) CALL iom_delay_rst( 'READ', 'OCE', numror )   ! read only ocean delayed global communication variables 
    260260       
    261261      ! Diurnal DSST  
    262       IF( ln_diurnal ) CALL iom_get( numror, jpdom_auto, 'Dsst' , x_dsst, ldxios = lroxios )  
     262      IF( ln_diurnal ) CALL iom_get( numror, jpdom_auto, 'Dsst' , x_dsst )  
    263263      IF ( ln_diurnal_only ) THEN  
    264264         IF(lwp) WRITE( numout, * ) & 
    265265         &   "rst_read:- ln_diurnal_only set, setting rhop=rho0"  
    266266         rhop = rho0 
    267          CALL iom_get( numror, jpdom_auto, 'tn'     , w3d, ldxios = lroxios )  
     267         CALL iom_get( numror, jpdom_auto, 'tn'     , w3d )  
    268268         ts(:,:,1,jp_tem,Kmm) = w3d(:,:,1) 
    269269         RETURN  
     
    272272      IF( iom_varid( numror, 'ub', ldstop = .FALSE. ) > 0 ) THEN 
    273273         ! before fields 
    274          CALL iom_get( numror, jpdom_auto, 'ub'     , uu(:,:,:       ,Kbb), ldxios = lrxios, cd_type = 'U', psgn = -1._wp ) 
    275          CALL iom_get( numror, jpdom_auto, 'vb'     , vv(:,:,:       ,Kbb), ldxios = lrxios, cd_type = 'V', psgn = -1._wp ) 
    276          CALL iom_get( numror, jpdom_auto, 'tb'     , ts(:,:,:,jp_tem,Kbb), ldxios = lrxios ) 
    277          CALL iom_get( numror, jpdom_auto, 'sb'     , ts(:,:,:,jp_sal,Kbb), ldxios = lrxios ) 
    278          CALL iom_get( numror, jpdom_auto, 'sshb'   ,ssh(:,:         ,Kbb), ldxios = lrxios ) 
     274         CALL iom_get( numror, jpdom_auto, 'ub'     , uu(:,:,:       ,Kbb), cd_type = 'U', psgn = -1._wp ) 
     275         CALL iom_get( numror, jpdom_auto, 'vb'     , vv(:,:,:       ,Kbb), cd_type = 'V', psgn = -1._wp ) 
     276         CALL iom_get( numror, jpdom_auto, 'tb'     , ts(:,:,:,jp_tem,Kbb) ) 
     277         CALL iom_get( numror, jpdom_auto, 'sb'     , ts(:,:,:,jp_sal,Kbb) ) 
     278         CALL iom_get( numror, jpdom_auto, 'sshb'   ,ssh(:,:         ,Kbb) ) 
    279279      ELSE 
    280280         l_1st_euler =  .TRUE.      ! before field not found, forced euler 1st time-step 
     
    282282      ! 
    283283      ! now fields 
    284       CALL iom_get( numror, jpdom_auto, 'un'     , uu(:,:,:       ,Kmm), ldxios = lrxios, cd_type = 'U', psgn = -1._wp ) 
    285       CALL iom_get( numror, jpdom_auto, 'vn'     , vv(:,:,:       ,Kmm), ldxios = lrxios, cd_type = 'V', psgn = -1._wp ) 
    286       CALL iom_get( numror, jpdom_auto, 'tn'     , ts(:,:,:,jp_tem,Kmm), ldxios = lrxios ) 
    287       CALL iom_get( numror, jpdom_auto, 'sn'     , ts(:,:,:,jp_sal,Kmm), ldxios = lrxios ) 
    288       CALL iom_get( numror, jpdom_auto, 'sshn'   ,ssh(:,:         ,Kmm), ldxios = lrxios ) 
     284      CALL iom_get( numror, jpdom_auto, 'un'     , uu(:,:,:       ,Kmm), cd_type = 'U', psgn = -1._wp ) 
     285      CALL iom_get( numror, jpdom_auto, 'vn'     , vv(:,:,:       ,Kmm), cd_type = 'V', psgn = -1._wp ) 
     286      CALL iom_get( numror, jpdom_auto, 'tn'     , ts(:,:,:,jp_tem,Kmm) ) 
     287      CALL iom_get( numror, jpdom_auto, 'sn'     , ts(:,:,:,jp_sal,Kmm) ) 
     288      CALL iom_get( numror, jpdom_auto, 'sshn'   ,ssh(:,:         ,Kmm) ) 
    289289      IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN 
    290          CALL iom_get( numror, jpdom_auto, 'rhop'   , rhop, ldxios = lroxios )   ! now    potential density 
     290         CALL iom_get( numror, jpdom_auto, 'rhop'   , rhop )   ! now    potential density 
    291291      ELSE 
    292292         CALL eos( ts(:,:,:,:,Kmm), rhd, rhop, gdept(:,:,:,Kmm) )    
    293293      ENDIF 
    294       IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    295294      ! 
    296295      IF( l_1st_euler ) THEN                                  ! Euler restart  
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/ISF/isfcpl.F90

    r13750 r13934  
    144144      END DO  
    145145      ! 
    146       IF( lwxios ) CALL iom_swap( cwxios_context ) 
    147       CALL iom_rstput( kt, nitrst, numrow, 'tmask'  , tmask , ldxios = lwxios ) 
    148       CALL iom_rstput( kt, nitrst, numrow, 'ssmask' , ssmask, ldxios = lwxios ) 
    149       CALL iom_rstput( kt, nitrst, numrow, 'e3t_n'  , ze3t , ldxios = lwxios ) 
    150       CALL iom_rstput( kt, nitrst, numrow, 'e3u_n'  , ze3u , ldxios = lwxios ) 
    151       CALL iom_rstput( kt, nitrst, numrow, 'e3v_n'  , ze3v , ldxios = lwxios ) 
    152       CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', zgdepw , ldxios = lwxios ) 
    153       IF( lwxios ) CALL iom_swap( cxios_context ) 
     146      CALL iom_rstput( kt, nitrst, numrow, 'tmask'  , tmask  ) 
     147      CALL iom_rstput( kt, nitrst, numrow, 'ssmask' , ssmask ) 
     148      CALL iom_rstput( kt, nitrst, numrow, 'e3t_n'  , ze3t   ) 
     149      CALL iom_rstput( kt, nitrst, numrow, 'e3u_n'  , ze3u   ) 
     150      CALL iom_rstput( kt, nitrst, numrow, 'e3v_n'  , ze3v   ) 
     151      CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', zgdepw ) 
    154152      ! 
    155153   END SUBROUTINE isfcpl_rst_write 
     
    174172      !!---------------------------------------------------------------------- 
    175173      ! 
    176       IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    177       CALL iom_get( numror, jpdom_auto, 'ssmask'  , zssmask_b, ldxios = lroxios   ) ! need to extrapolate T/S 
    178       IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     174      CALL iom_get( numror, jpdom_auto, 'ssmask'  , zssmask_b   ) ! need to extrapolate T/S 
    179175 
    180176      ! compute new ssh if we open a full water column  
     
    257253      !!---------------------------------------------------------------------- 
    258254      !  
    259       IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    260       CALL iom_get( numror, jpdom_auto, 'tmask'  , ztmask_b, ldxios = lroxios   ) ! need to extrapolate T/S 
    261       !CALL iom_get( numror, jpdom_auto, 'wmask'  , zwmask_b, ldxios = lroxios   ) ! need to extrapolate T/S 
    262       !CALL iom_get( numror, jpdom_auto, 'gdepw_n', zdepw_b(:,:,:), ldxios = lroxios ) ! need to interpol vertical profile (vvl) 
    263       IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     255      CALL iom_get( numror, jpdom_auto, 'tmask'  , ztmask_b   ) ! need to extrapolate T/S 
     256      !CALL iom_get( numror, jpdom_auto, 'wmask'  , zwmask_b  ) ! need to extrapolate T/S 
     257      !CALL iom_get( numror, jpdom_auto, 'gdepw_n', zdepw_b(:,:,:) ) ! need to interpol vertical profile (vvl) 
    264258      ! 
    265259      !  
     
    405399      !!---------------------------------------------------------------------- 
    406400      ! 
    407       IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    408       CALL iom_get( numror, jpdom_auto, 'tmask'  , ztmask_b, ldxios = lroxios ) 
    409       CALL iom_get( numror, jpdom_auto, 'e3u_n'  , ze3u_b  , ldxios = lroxios ) 
    410       CALL iom_get( numror, jpdom_auto, 'e3v_n'  , ze3v_b  , ldxios = lroxios ) 
    411       IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     401      CALL iom_get( numror, jpdom_auto, 'tmask'  , ztmask_b ) 
     402      CALL iom_get( numror, jpdom_auto, 'e3u_n'  , ze3u_b   ) 
     403      CALL iom_get( numror, jpdom_auto, 'e3v_n'  , ze3v_b   ) 
    412404      ! 
    413405      ! 1.0: compute horizontal volume flux divergence difference before-after coupling 
     
    517509 
    518510      ! get restart variable 
    519       IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    520       CALL iom_get( numror, jpdom_auto, 'tmask'  , ztmask_b(:,:,:), ldxios = lroxios   ) ! need to extrapolate T/S 
    521       CALL iom_get( numror, jpdom_auto, 'e3t_n'  , ze3t_b(:,:,:)  , ldxios = lroxios ) 
    522       CALL iom_get( numror, jpdom_auto, 'tn'     , zt_b(:,:,:)    , ldxios = lroxios ) 
    523       CALL iom_get( numror, jpdom_auto, 'sn'     , zs_b(:,:,:)    , ldxios = lroxios ) 
    524       IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     511      CALL iom_get( numror, jpdom_auto, 'tmask'  , ztmask_b(:,:,:) ) ! need to extrapolate T/S 
     512      CALL iom_get( numror, jpdom_auto, 'e3t_n'  , ze3t_b(:,:,:)   ) 
     513      CALL iom_get( numror, jpdom_auto, 'tn'     , zt_b(:,:,:)     ) 
     514      CALL iom_get( numror, jpdom_auto, 'sn'     , zs_b(:,:,:)     ) 
    525515 
    526516      ! compute run length 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/ISF/isfrst.F90

    r13727 r13934  
    5353      IF( iom_varid( numror, cfwf_b, ldstop = .FALSE. ) > 0 ) THEN 
    5454         IF(lwp) WRITE(numout,*) '          nit000-1 isf tracer content forcing fields read in the restart file' 
    55          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    56          CALL iom_get( numror, jpdom_auto, cfwf_b, pfwf_b(:,:)        , ldxios = lroxios )   ! before ice shelf melt 
    57          CALL iom_get( numror, jpdom_auto, chc_b , ptsc_b (:,:,jp_tem), ldxios = lroxios )   ! before ice shelf heat flux 
    58          CALL iom_get( numror, jpdom_auto, csc_b , ptsc_b (:,:,jp_sal), ldxios = lroxios )   ! before ice shelf heat flux 
    59          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     55         CALL iom_get( numror, jpdom_auto, cfwf_b, pfwf_b(:,:)         )   ! before ice shelf melt 
     56         CALL iom_get( numror, jpdom_auto, chc_b , ptsc_b (:,:,jp_tem) )   ! before ice shelf heat flux 
     57         CALL iom_get( numror, jpdom_auto, csc_b , ptsc_b (:,:,jp_sal) )   ! before ice shelf heat flux 
    6058      ELSE 
    6159         pfwf_b(:,:)   = pfwf(:,:) 
     
    9189      ! 
    9290      ! write restart variable 
    93       IF( lwxios ) CALL iom_swap( cwxios_context ) 
    94       CALL iom_rstput( kt, nitrst, numrow, cfwf_b, pfwf(:,:)       , ldxios = lwxios ) 
    95       CALL iom_rstput( kt, nitrst, numrow, chc_b , ptsc(:,:,jp_tem), ldxios = lwxios ) 
    96       CALL iom_rstput( kt, nitrst, numrow, csc_b , ptsc(:,:,jp_sal), ldxios = lwxios ) 
    97       IF( lwxios ) CALL iom_swap( cxios_context ) 
     91      CALL iom_rstput( kt, nitrst, numrow, cfwf_b, pfwf(:,:)        ) 
     92      CALL iom_rstput( kt, nitrst, numrow, chc_b , ptsc(:,:,jp_tem) ) 
     93      CALL iom_rstput( kt, nitrst, numrow, csc_b , ptsc(:,:,jp_sal) ) 
    9894      ! 
    9995   END SUBROUTINE isfrst_write 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/SBC/sbcapr.F90

    r13727 r13934  
    148148         !                                      ! ---------------------------------------- ! 
    149149         !                                            !* Restart: read in restart file 
    150          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    151150         IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN  
    152151            IF(lwp) WRITE(numout,*) 'sbc_apr:   ssh_ibb read in the restart file' 
    153             CALL iom_get( numror, jpdom_auto, 'ssh_ibb', ssh_ibb, ldxios = lroxios )   ! before inv. barometer ssh 
     152            CALL iom_get( numror, jpdom_auto, 'ssh_ibb', ssh_ibb )   ! before inv. barometer ssh 
    154153            ! 
    155154         ELSE                                         !* no restart: set from nit000 values 
     
    157156            ssh_ibb(:,:) = ssh_ib(:,:) 
    158157         ENDIF 
    159          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    160158      ENDIF 
    161159      !                                         ! ---------------------------------------- ! 
     
    165163         IF(lwp) WRITE(numout,*) 'sbc_apr : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp 
    166164         IF(lwp) WRITE(numout,*) '~~~~' 
    167          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    168          CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib, ldxios = lwxios ) 
    169          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     165         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib ) 
    170166      ENDIF 
    171167      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/SBC/sbcmod.F90

    r13727 r13934  
    229229      CASE DEFAULT                     !- not supported 
    230230      END SELECT 
    231       IF( ln_diurnal .AND. .NOT. ln_blk )   CALL ctl_stop( "sbc_init: diurnal flux processing only implemented for bulk forcing" ) 
     231      IF( ln_diurnal .AND. .NOT. (ln_blk.OR.ln_abl) )   CALL ctl_stop( "sbc_init: diurnal flux processing only implemented for bulk forcing" ) 
    232232      ! 
    233233      !                       !**  allocate and set required variables 
     
    497497      IF( kt == nit000 ) THEN                          !   set the forcing field at nit000 - 1    ! 
    498498         !                                             ! ---------------------------------------- ! 
    499          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    500499         IF( ln_rstart .AND.    &                               !* Restart: read in restart file 
    501500            & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN 
    502501            IF(lwp) WRITE(numout,*) '          nit000-1 surface forcing fields red in the restart file' 
    503             CALL iom_get( numror, jpdom_auto, 'utau_b', utau_b, ldxios = lroxios )   ! before i-stress  (U-point) 
    504             CALL iom_get( numror, jpdom_auto, 'vtau_b', vtau_b, ldxios = lroxios )   ! before j-stress  (V-point) 
    505             CALL iom_get( numror, jpdom_auto,  'qns_b',  qns_b, ldxios = lroxios )   ! before non solar heat flux (T-point) 
     502            CALL iom_get( numror, jpdom_auto, 'utau_b', utau_b )   ! before i-stress  (U-point) 
     503            CALL iom_get( numror, jpdom_auto, 'vtau_b', vtau_b )   ! before j-stress  (V-point) 
     504            CALL iom_get( numror, jpdom_auto,  'qns_b',  qns_b )   ! before non solar heat flux (T-point) 
    506505            ! The 3D heat content due to qsr forcing is treated in traqsr 
    507             ! CALL iom_get( numror, jpdom_auto, 'qsr_b' , qsr_b, ldxios = lroxios  ) ! before     solar heat flux (T-point) 
    508             CALL iom_get( numror, jpdom_auto, 'emp_b', emp_b, ldxios = lroxios  )    ! before     freshwater flux (T-point) 
     506            ! CALL iom_get( numror, jpdom_auto, 'qsr_b' , qsr_b  ) ! before     solar heat flux (T-point) 
     507            CALL iom_get( numror, jpdom_auto, 'emp_b', emp_b  )    ! before     freshwater flux (T-point) 
    509508            ! To ensure restart capability with 3.3x/3.4 restart files    !! to be removed in v3.6 
    510509            IF( iom_varid( numror, 'sfx_b', ldstop = .FALSE. ) > 0 ) THEN 
    511                CALL iom_get( numror, jpdom_auto, 'sfx_b', sfx_b, ldxios = lroxios )  ! before salt flux (T-point) 
     510               CALL iom_get( numror, jpdom_auto, 'sfx_b', sfx_b )  ! before salt flux (T-point) 
    512511            ELSE 
    513512               sfx_b (:,:) = sfx(:,:) 
     
    521520            sfx_b (:,:) = sfx (:,:) 
    522521         ENDIF 
    523          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    524522      ENDIF 
    525523      !                                                ! ---------------------------------------- ! 
     
    530528            &                    'at it= ', kt,' date= ', ndastp 
    531529         IF(lwp) WRITE(numout,*) '~~~~' 
    532          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    533          CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau, ldxios = lwxios ) 
    534          CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau, ldxios = lwxios ) 
    535          CALL iom_rstput( kt, nitrst, numrow, 'qns_b'  , qns, ldxios = lwxios  ) 
     530         CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau ) 
     531         CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau ) 
     532         CALL iom_rstput( kt, nitrst, numrow, 'qns_b'  , qns  ) 
    536533         ! The 3D heat content due to qsr forcing is treated in traqsr 
    537534         ! CALL iom_rstput( kt, nitrst, numrow, 'qsr_b'  , qsr  ) 
    538          CALL iom_rstput( kt, nitrst, numrow, 'emp_b'  , emp, ldxios = lwxios  ) 
    539          CALL iom_rstput( kt, nitrst, numrow, 'sfx_b'  , sfx, ldxios = lwxios  ) 
    540          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     535         CALL iom_rstput( kt, nitrst, numrow, 'emp_b'  , emp  ) 
     536         CALL iom_rstput( kt, nitrst, numrow, 'sfx_b'  , sfx  ) 
    541537      ENDIF 
    542538      !                                                ! ---------------------------------------- ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/SBC/sbcrnf.F90

    r13727 r13934  
    157157      IF( kt == nit000 ) THEN                          !   set the forcing field at nit000 - 1    ! 
    158158         !                                             ! ---------------------------------------- ! 
    159          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    160159         IF( ln_rstart .AND.    &                               !* Restart: read in restart file 
    161160            & iom_varid( numror, 'rnf_b', ldstop = .FALSE. ) > 0 ) THEN 
    162             IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields red in the restart file', lroxios 
    163             CALL iom_get( numror, jpdom_auto, 'rnf_b', rnf_b, ldxios = lroxios )     ! before runoff 
    164             CALL iom_get( numror, jpdom_auto, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem), ldxios = lroxios )   ! before heat content of runoff 
    165             CALL iom_get( numror, jpdom_auto, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal), ldxios = lroxios )   ! before salinity content of runoff 
     161            IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields red in the restart file', lrxios 
     162            CALL iom_get( numror, jpdom_auto, 'rnf_b', rnf_b )     ! before runoff 
     163            CALL iom_get( numror, jpdom_auto, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem) )   ! before heat content of runoff 
     164            CALL iom_get( numror, jpdom_auto, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal) )   ! before salinity content of runoff 
    166165         ELSE                                                   !* no restart: set from nit000 values 
    167166            IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields set to nit000' 
     
    169168            rnf_tsc_b(:,:,:) = rnf_tsc(:,:,:) 
    170169         ENDIF 
    171          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    172170      ENDIF 
    173171      !                                                ! ---------------------------------------- ! 
     
    178176            &                    'at it= ', kt,' date= ', ndastp 
    179177         IF(lwp) WRITE(numout,*) '~~~~' 
    180          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    181          CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf, ldxios = lwxios ) 
    182          CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem), ldxios = lwxios ) 
    183          CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal), ldxios = lwxios ) 
    184          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     178         CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf ) 
     179         CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem) ) 
     180         CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal) ) 
    185181      ENDIF 
    186182      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/SBC/sbcssm.F90

    r13727 r13934  
    154154            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    155155            zf_sbc = REAL( nn_fsbc, wp ) 
    156             IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    157             CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc, ldxios = lwxios )    ! sbc frequency 
    158             CALL iom_rstput( kt, nitrst, numrow, 'ssu_m'  , ssu_m, ldxios = lwxios  )    ! sea surface mean fields 
    159             CALL iom_rstput( kt, nitrst, numrow, 'ssv_m'  , ssv_m, ldxios = lwxios  ) 
    160             CALL iom_rstput( kt, nitrst, numrow, 'sst_m'  , sst_m, ldxios = lwxios  ) 
    161             CALL iom_rstput( kt, nitrst, numrow, 'sss_m'  , sss_m, ldxios = lwxios  ) 
    162             CALL iom_rstput( kt, nitrst, numrow, 'ssh_m'  , ssh_m, ldxios = lwxios  ) 
    163             CALL iom_rstput( kt, nitrst, numrow, 'e3t_m'  , e3t_m, ldxios = lwxios  ) 
    164             CALL iom_rstput( kt, nitrst, numrow, 'frq_m'  , frq_m, ldxios = lwxios  ) 
    165             ! 
    166             IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     156            CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc )    ! sbc frequency 
     157            CALL iom_rstput( kt, nitrst, numrow, 'ssu_m'  , ssu_m  )    ! sea surface mean fields 
     158            CALL iom_rstput( kt, nitrst, numrow, 'ssv_m'  , ssv_m  ) 
     159            CALL iom_rstput( kt, nitrst, numrow, 'sst_m'  , sst_m  ) 
     160            CALL iom_rstput( kt, nitrst, numrow, 'sss_m'  , sss_m  ) 
     161            CALL iom_rstput( kt, nitrst, numrow, 'ssh_m'  , ssh_m  ) 
     162            CALL iom_rstput( kt, nitrst, numrow, 'e3t_m'  , e3t_m  ) 
     163            CALL iom_rstput( kt, nitrst, numrow, 'frq_m'  , frq_m  ) 
     164            ! 
    167165         ENDIF 
    168166         ! 
     
    206204         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~ ' 
    207205         ! 
    208          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    209206         IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN 
    210207            l_ssm_mean = .TRUE. 
    211             CALL iom_get( numror            , 'nn_fsbc', zf_sbc,ldxios = lroxios )     ! sbc frequency of previous run 
    212             CALL iom_get( numror, jpdom_auto, 'ssu_m'  , ssu_m, ldxios = lroxios, cd_type = 'U', psgn = -1._wp )    ! sea surface mean velocity    (U-point) 
    213             CALL iom_get( numror, jpdom_auto, 'ssv_m'  , ssv_m, ldxios = lroxios, cd_type = 'V', psgn = -1._wp )    !   "         "    velocity    (V-point) 
    214             CALL iom_get( numror, jpdom_auto, 'sst_m'  , sst_m, ldxios = lroxios )    !   "         "    temperature (T-point) 
    215             CALL iom_get( numror, jpdom_auto, 'sss_m'  , sss_m, ldxios = lroxios )    !   "         "    salinity    (T-point) 
    216             CALL iom_get( numror, jpdom_auto, 'ssh_m'  , ssh_m, ldxios = lroxios )    !   "         "    height      (T-point) 
    217             CALL iom_get( numror, jpdom_auto, 'e3t_m'  , e3t_m, ldxios = lroxios )    ! 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_auto, 'ssu_m'  , ssu_m, cd_type = 'U', psgn = -1._wp )    ! sea surface mean velocity    (U-point) 
     210            CALL iom_get( numror, jpdom_auto, 'ssv_m'  , ssv_m, cd_type = 'V', psgn = -1._wp )    !   "         "    velocity    (V-point) 
     211            CALL iom_get( numror, jpdom_auto, 'sst_m'  , sst_m )    !   "         "    temperature (T-point) 
     212            CALL iom_get( numror, jpdom_auto, 'sss_m'  , sss_m )    !   "         "    salinity    (T-point) 
     213            CALL iom_get( numror, jpdom_auto, 'ssh_m'  , ssh_m )    !   "         "    height      (T-point) 
     214            CALL iom_get( numror, jpdom_auto, 'e3t_m'  , e3t_m )    ! 1st level thickness          (T-point) 
    218215            ! fraction of solar net radiation absorbed in 1st T level 
    219216            IF( iom_varid( numror, 'frq_m', ldstop = .FALSE. ) > 0 ) THEN 
    220                CALL iom_get( numror, jpdom_auto, 'frq_m'  , frq_m, ldxios = lroxios  ) 
     217               CALL iom_get( numror, jpdom_auto, 'frq_m'  , frq_m  ) 
    221218            ELSE 
    222219               frq_m(:,:) = 1._wp   ! default definition 
     
    237234            ENDIF 
    238235         ENDIF 
    239          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    240236      ENDIF 
    241237      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/TRA/traqsr.F90

    r13727 r13934  
    135135      !                         !-----------------------------------! 
    136136      IF( kt == nit000 ) THEN          !==  1st time step  ==! 
    137          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    138137         IF( ln_rstart .AND. iom_varid( numror, 'qsr_hc_b', ldstop = .FALSE. ) > 0  .AND. .NOT.l_1st_euler ) THEN    ! read in restart 
    139138            IF(lwp) WRITE(numout,*) '          nit000-1 qsr tracer content forcing field read in the restart file' 
    140139            z1_2 = 0.5_wp 
    141             CALL iom_get( numror, jpdom_auto, 'qsr_hc_b', qsr_hc_b, ldxios = lroxios )   ! before heat content trend due to Qsr flux 
     140            CALL iom_get( numror, jpdom_auto, 'qsr_hc_b', qsr_hc_b )   ! before heat content trend due to Qsr flux 
    142141         ELSE                                           ! No restart or restart not found: Euler forward time stepping 
    143142            z1_2 = 1._wp 
    144143            qsr_hc_b(:,:,:) = 0._wp 
    145144         ENDIF 
    146          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    147145      ELSE                             !==  Swap of qsr heat content  ==! 
    148146         z1_2 = 0.5_wp 
     
    294292      ! 
    295293      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          ) 
     294         CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b'   , qsr_hc      ) 
     295         CALL iom_rstput( kt, nitrst, numrow, 'fraqsr_1lev', fraqsr_1lev )  
    300296      ENDIF 
    301297      ! 
     
    432428      ! 
    433429      ! 1st ocean level attenuation coefficient (used in sbcssm) 
    434       IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    435430      IF( iom_varid( numror, 'fraqsr_1lev', ldstop = .FALSE. ) > 0 ) THEN 
    436          CALL iom_get( numror, jpdom_auto, 'fraqsr_1lev'  , fraqsr_1lev, ldxios = lroxios  ) 
     431         CALL iom_get( numror, jpdom_auto, 'fraqsr_1lev'  , fraqsr_1lev  ) 
    437432      ELSE 
    438433         fraqsr_1lev(:,:) = 1._wp   ! default : no penetration 
    439434      ENDIF 
    440       IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    441435      ! 
    442436   END SUBROUTINE tra_qsr_init 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/TRA/trasbc.F90

    r13727 r13934  
    107107      !                             !==  Set before sbc tracer content fields  ==! 
    108108      IF( kt == nit000 ) THEN             !* 1st time-step 
    109          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    110109         IF( ln_rstart .AND.    &               ! Restart: read in restart file 
    111110              & iom_varid( numror, 'sbc_hc_b', ldstop = .FALSE. ) > 0 ) THEN 
     
    113112            zfact = 0.5_wp 
    114113            sbc_tsc(:,:,:) = 0._wp 
    115             CALL iom_get( numror, jpdom_auto, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem), ldxios = lroxios )   ! before heat content sbc trend 
    116             CALL iom_get( numror, jpdom_auto, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal), ldxios = lroxios )   ! before salt content sbc trend 
     114            CALL iom_get( numror, jpdom_auto, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem) )   ! before heat content sbc trend 
     115            CALL iom_get( numror, jpdom_auto, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal) )   ! before salt content sbc trend 
    117116         ELSE                                   ! No restart or restart not found: Euler forward time stepping 
    118117            zfact = 1._wp 
     
    120119            sbc_tsc_b(:,:,:) = 0._wp 
    121120         ENDIF 
    122          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    123121      ELSE                                !* other time-steps: swap of forcing fields 
    124122         zfact = 0.5_wp 
     
    147145      !                   
    148146      IF( lrst_oce ) THEN           !==  write sbc_tsc in the ocean restart file  ==! 
    149          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    150          CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem), ldxios = lwxios ) 
    151          CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal), ldxios = lwxios ) 
    152          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     147         CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem) ) 
     148         CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal) ) 
    153149      ENDIF 
    154150      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/ZDF/zdfgls.F90

    r13727 r13934  
    10841084         !                                   ! --------------- 
    10851085         IF( ln_rstart ) THEN                   !* Read the restart file 
    1086             IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    10871086            id1 = iom_varid( numror, 'en'    , ldstop = .FALSE. ) 
    10881087            id2 = iom_varid( numror, 'avt_k' , ldstop = .FALSE. ) 
     
    10911090            ! 
    10921091            IF( MIN( id1, id2, id3, id4 ) > 0 ) THEN        ! all required arrays exist 
    1093                CALL iom_get( numror, jpdom_auto, 'en'    , en    , ldxios = lroxios ) 
    1094                CALL iom_get( numror, jpdom_auto, 'avt_k' , avt_k , ldxios = lroxios ) 
    1095                CALL iom_get( numror, jpdom_auto, 'avm_k' , avm_k , ldxios = lroxios ) 
    1096                CALL iom_get( numror, jpdom_auto, 'hmxl_n', hmxl_n, ldxios = lroxios ) 
     1092               CALL iom_get( numror, jpdom_auto, 'en'    , en    ) 
     1093               CALL iom_get( numror, jpdom_auto, 'avt_k' , avt_k ) 
     1094               CALL iom_get( numror, jpdom_auto, 'avm_k' , avm_k ) 
     1095               CALL iom_get( numror, jpdom_auto, 'hmxl_n', hmxl_n ) 
    10971096            ELSE                         
    10981097               IF(lwp) WRITE(numout,*) 
     
    11021101               ! avt_k, avm_k already set to the background value in zdf_phy_init 
    11031102            ENDIF 
    1104             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    11051103         ELSE                                   !* Start from rest 
    11061104            IF(lwp) WRITE(numout,*) 
     
    11141112         !                                   ! ------------------- 
    11151113         IF(lwp) WRITE(numout,*) '---- gls-rst ----' 
    1116          IF( lwxios ) CALL iom_swap(      cwxios_context         ) 
    1117          CALL iom_rstput( kt, nitrst, numrow, 'en'    , en    , ldxios = lwxios ) 
    1118          CALL iom_rstput( kt, nitrst, numrow, 'avt_k' , avt_k , ldxios = lwxios ) 
    1119          CALL iom_rstput( kt, nitrst, numrow, 'avm_k' , avm_k , ldxios = lwxios ) 
    1120          CALL iom_rstput( kt, nitrst, numrow, 'hmxl_n', hmxl_n, ldxios = lwxios ) 
    1121          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     1114         CALL iom_rstput( kt, nitrst, numrow, 'en'    , en     ) 
     1115         CALL iom_rstput( kt, nitrst, numrow, 'avt_k' , avt_k  ) 
     1116         CALL iom_rstput( kt, nitrst, numrow, 'avm_k' , avm_k  ) 
     1117         CALL iom_rstput( kt, nitrst, numrow, 'hmxl_n', hmxl_n ) 
    11221118         ! 
    11231119      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/ZDF/zdfosm.F90

    r13727 r13934  
    14671467     !!----------------------------------------------------------------------------- 
    14681468     IF( TRIM(cdrw) == 'READ'.AND. ln_rstart) THEN 
    1469         IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    14701469        id1 = iom_varid( numror, 'wn'   , ldstop = .FALSE. ) 
    14711470        IF( id1 > 0 ) THEN                       ! 'wn' exists; read 
    1472            CALL iom_get( numror, jpdom_auto, 'wn', ww, ldxios = lroxios ) 
     1471           CALL iom_get( numror, jpdom_auto, 'wn', ww ) 
    14731472           WRITE(numout,*) ' ===>>>> :  ww read from restart file' 
    14741473        ELSE 
     
    14791478        id2 = iom_varid( numror, 'hbli'   , ldstop = .FALSE. ) 
    14801479        IF( id1 > 0 .AND. id2 > 0) THEN                       ! 'hbl' exists; read and return 
    1481            CALL iom_get( numror, jpdom_auto, 'hbl' , hbl , ldxios = lroxios ) 
    1482            CALL iom_get( numror, jpdom_auto, 'hbli', hbli, ldxios = lroxios  ) 
     1480           CALL iom_get( numror, jpdom_auto, 'hbl' , hbl ) 
     1481           CALL iom_get( numror, jpdom_auto, 'hbli', hbli  ) 
    14831482           WRITE(numout,*) ' ===>>>> :  hbl & hbli read from restart file' 
    1484            IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    14851483           RETURN 
    14861484        ELSE                      ! 'hbl' & 'hbli' not in restart file, recalculate 
    14871485           WRITE(numout,*) ' ===>>>> : previous run without osmosis scheme, hbl computed from stratification' 
    14881486        END IF 
    1489         IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    14901487     END IF 
    14911488 
     
    14951492     IF( TRIM(cdrw) == 'WRITE') THEN     !* Write hbli into the restart file, then return 
    14961493        IF(lwp) WRITE(numout,*) '---- osm-rst ----' 
    1497          CALL iom_rstput( kt, nitrst, numrow, 'wn'     , ww  , ldxios = lwxios ) 
    1498          CALL iom_rstput( kt, nitrst, numrow, 'hbl'    , hbl , ldxios = lwxios ) 
    1499          CALL iom_rstput( kt, nitrst, numrow, 'hbli'   , hbli, ldxios = lwxios ) 
     1494         CALL iom_rstput( kt, nitrst, numrow, 'wn'     , ww  ) 
     1495         CALL iom_rstput( kt, nitrst, numrow, 'hbl'    , hbl ) 
     1496         CALL iom_rstput( kt, nitrst, numrow, 'hbli'   , hbli ) 
    15001497        RETURN 
    15011498     END IF 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/ZDF/zdfric.F90

    r13727 r13934  
    206206         !           !* Read the restart file 
    207207         IF( ln_rstart ) THEN 
    208             IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    209208            id1 = iom_varid( numror, 'avt_k', ldstop = .FALSE. ) 
    210209            id2 = iom_varid( numror, 'avm_k', ldstop = .FALSE. ) 
    211210            ! 
    212211            IF( MIN( id1, id2 ) > 0 ) THEN         ! restart exists => read it 
    213                CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k, ldxios = lroxios ) 
    214                CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k, ldxios = lroxios ) 
     212               CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k ) 
     213               CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k ) 
    215214            ENDIF 
    216             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    217215         ENDIF 
    218216         !           !* otherwise Kz already set to the background value in zdf_phy_init 
     
    221219         !                                   ! ------------------- 
    222220         IF(lwp) WRITE(numout,*) '---- ric-rst ----' 
    223          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    224          CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k, ldxios = lwxios ) 
    225          CALL iom_rstput( kt, nitrst, numrow, 'avm_k', avm_k, ldxios = lwxios) 
    226          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     221         CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k ) 
     222         CALL iom_rstput( kt, nitrst, numrow, 'avm_k', avm_k) 
    227223         ! 
    228224      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/ZDF/zdftke.F90

    r13727 r13934  
    746746         !                                   ! --------------- 
    747747         IF( ln_rstart ) THEN                   !* Read the restart file 
    748             IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    749748            id1 = iom_varid( numror, 'en'   , ldstop = .FALSE. ) 
    750749            id2 = iom_varid( numror, 'avt_k', ldstop = .FALSE. ) 
     
    753752            ! 
    754753            IF( MIN( id1, id2, id3, id4 ) > 0 ) THEN      ! fields exist 
    755                CALL iom_get( numror, jpdom_auto, 'en'   , en   , ldxios = lroxios ) 
    756                CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k, ldxios = lroxios ) 
    757                CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k, ldxios = lroxios ) 
    758                CALL iom_get( numror, jpdom_auto, 'dissl', dissl, ldxios = lroxios ) 
     754               CALL iom_get( numror, jpdom_auto, 'en'   , en    ) 
     755               CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k ) 
     756               CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k ) 
     757               CALL iom_get( numror, jpdom_auto, 'dissl', dissl ) 
    759758            ELSE                                          ! start TKE from rest 
    760759               IF(lwp) WRITE(numout,*) 
     
    764763               ! avt_k, avm_k already set to the background value in zdf_phy_init 
    765764            ENDIF 
    766             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    767765         ELSE                                   !* Start from rest 
    768766            IF(lwp) WRITE(numout,*) 
     
    776774         !                                   ! ------------------- 
    777775         IF(lwp) WRITE(numout,*) '---- tke_rst ----' 
    778          IF( lwxios ) CALL iom_swap(      cwxios_context          )  
    779          CALL iom_rstput( kt, nitrst, numrow, 'en'   , en   , ldxios = lwxios ) 
    780          CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k, ldxios = lwxios ) 
    781          CALL iom_rstput( kt, nitrst, numrow, 'avm_k', avm_k, ldxios = lwxios ) 
    782          CALL iom_rstput( kt, nitrst, numrow, 'dissl', dissl, ldxios = lwxios ) 
    783          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
     776         CALL iom_rstput( kt, nitrst, numrow, 'en'   , en    ) 
     777         CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k ) 
     778         CALL iom_rstput( kt, nitrst, numrow, 'avm_k', avm_k ) 
     779         CALL iom_rstput( kt, nitrst, numrow, 'dissl', dissl ) 
    784780         ! 
    785781      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/step.F90

    r13727 r13934  
    125125      ENDIF 
    126126      IF((kstp == nitrst) .AND. lwxios) THEN 
    127          CALL iom_swap(      cwxios_context          ) 
    128          CALL iom_init_closedef(cwxios_context) 
    129          CALL iom_setkt( kstp - nit000 + 1,      cwxios_context          ) 
     127         CALL iom_swap(      cw_ocerst_cxt          ) 
     128         CALL iom_init_closedef(cw_ocerst_cxt) 
     129         CALL iom_setkt( kstp - nit000 + 1,      cw_ocerst_cxt          ) 
    130130#if defined key_top 
    131          CALL iom_swap(      cwtxios_context          ) 
    132          CALL iom_init_closedef(cwtxios_context) 
    133          CALL iom_setkt( kstp - nit000 + 1,      cwtxios_context          ) 
     131         CALL iom_swap(      cw_toprst_cxt          ) 
     132         CALL iom_init_closedef(cw_toprst_cxt) 
     133         CALL iom_setkt( kstp - nit000 + 1,      cw_toprst_cxt          ) 
    134134#endif 
    135135      ENDIF 
    136136#if defined key_si3 
    137137      IF(((kstp + nn_fsbc - 1) == nitrst) .AND. lwxios) THEN 
    138          CALL iom_swap(      cwixios_context          ) 
    139          CALL iom_init_closedef(cwixios_context) 
    140          CALL iom_setkt( kstp - nit000 + 1,      cwixios_context          ) 
     138         CALL iom_swap(      cw_icerst_cxt          ) 
     139         CALL iom_init_closedef(cw_icerst_cxt) 
     140         CALL iom_setkt( kstp - nit000 + 1,      cw_icerst_cxt          ) 
    141141      ENDIF 
    142142#endif 
     
    355355      IF( kstp == nit000 ) THEN                          ! 1st time step only 
    356356                                        CALL iom_close( numror )   ! close input  ocean restart file 
    357          IF( lroxios )                  CALL iom_context_finalize(      crxios_context         ) 
     357         IF( lrxios )                   CALL iom_context_finalize(      cr_ocerst_cxt         ) 
    358358         IF(lwm)                        CALL FLUSH    ( numond )   ! flush output namelist oce 
    359359         IF(lwm .AND. numoni /= -1 )    CALL FLUSH    ( numoni )   ! flush output namelist ice (if exist) 
  • NEMO/branches/2020/test_12905_xios_restart/src/OCE/stpMLF.F90

    r13727 r13934  
    364364      IF( kstp == nitend .OR. indic < 0 ) THEN 
    365365                      CALL iom_context_finalize(      cxios_context          ) ! needed for XIOS+AGRIF 
    366          IF(lrxios) CALL iom_context_finalize(      crxios_context          ) 
     366         IF(lrxios) CALL iom_context_finalize(      cr_ocerst_cxt          ) 
    367367         IF( ln_crs ) CALL iom_context_finalize( trim(cxios_context)//"_crs" ) ! 
    368368      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/OFF/dtadyn.F90

    r13727 r13934  
    4646   USE fldread         ! read input fields  
    4747   USE timing          ! Timing 
    48    USE trc, ONLY : ln_rsttr, numrtr, numrtw, lrst_trc 
     48   USE trc, ONLY : ln_rsttr, lrst_trc 
    4949 
    5050   IMPLICIT NONE 
  • NEMO/branches/2020/test_12905_xios_restart/src/OFF/nemogcm.F90

    r13727 r13934  
    127127         ! 
    128128      IF((istp == nitrst) .AND. lwxios) THEN 
    129          CALL iom_swap(      cwtxios_context          ) 
    130          CALL iom_init_closedef(cwtxios_context) 
    131          CALL iom_setkt( istp - nit000 + 1,      cwtxios_context          ) 
     129         CALL iom_swap(      cw_toprst_cxt          ) 
     130         CALL iom_init_closedef(cw_toprst_cxt) 
     131         CALL iom_setkt( istp - nit000 + 1,      cw_toprst_cxt          ) 
    132132      ENDIF 
    133133 
  • NEMO/branches/2020/test_12905_xios_restart/src/SAS/step.F90

    r13727 r13934  
    9191                             CALL iom_setkt( kstp - nit000 + 1, cxios_context )   ! tell iom we are at time step kstp 
    9292      IF((kstp == nitrst) .AND. lwxios) THEN 
    93          CALL iom_swap(      cwxios_context          ) 
    94          CALL iom_init_closedef(cwxios_context) 
    95          CALL iom_setkt( kstp - nit000 + 1,      cwxios_context          ) 
     93         CALL iom_swap(      cw_ocerst_cxt          ) 
     94         CALL iom_init_closedef(cw_ocerst_cxt) 
     95         CALL iom_setkt( kstp - nit000 + 1,      cw_ocerst_cxt          ) 
    9696#if defined key_top 
    97          CALL iom_swap(      cwtxios_context          ) 
    98          CALL iom_init_closedef(cwtxios_context) 
    99          CALL iom_setkt( kstp - nit000 + 1,      cwtxios_context          ) 
     97         CALL iom_swap(      cw_toprst_cxt          ) 
     98         CALL iom_init_closedef(cw_toprst_cxt) 
     99         CALL iom_setkt( kstp - nit000 + 1,      cw_toprst_cxt          ) 
    100100#endif 
    101101      ENDIF 
     
    104104#if defined key_si3 
    105105      IF(((kstp + nn_fsbc - 1) == nitrst) .AND. lwxios) THEN 
    106          CALL iom_swap(      cwixios_context          ) 
    107          CALL iom_init_closedef(cwixios_context) 
    108          CALL iom_setkt( kstp - nit000 + 1,      cwixios_context          ) 
     106         CALL iom_swap(      cw_icerst_cxt          ) 
     107         CALL iom_init_closedef(cw_icerst_cxt) 
     108         CALL iom_setkt( kstp - nit000 + 1,      cw_icerst_cxt          ) 
    109109      ENDIF 
    110110#endif 
     
    148148      IF( kstp == nit000   ) THEN 
    149149            CALL iom_close( numror )                          ! close input  ocean restart file 
    150             IF( lroxios )     CALL iom_context_finalize(      crxios_context      ) 
     150            IF( lrxios )     CALL iom_context_finalize(      cr_ocerst_cxt      ) 
    151151      ENDIF 
    152152       
     
    161161            CALL iom_close( numrow )      
    162162         ELSE 
    163             CALL iom_context_finalize( cwxios_context ) 
     163            CALL iom_context_finalize( cw_ocerst_cxt ) 
     164            iom_file(numrow)%nfid       = 0 
     165            numrow = 0 
    164166         ENDIF 
    165167         lrst_oce = .FALSE. 
  • NEMO/branches/2020/test_12905_xios_restart/src/SWE/domvvl.F90

    r13472 r13934  
    11051105         IF( ln_rstart ) THEN                   !* Read the restart file 
    11061106            CALL rst_read_open                  !  open the restart file if necessary 
    1107             CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm), ldxios = lrxios    ) 
     1107            CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm)    ) 
    11081108            ! 
    11091109            id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) 
     
    11181118            ! 
    11191119            IF( MIN( id1, id2 ) > 0 ) THEN       ! all required arrays exist 
    1120                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
    1121                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
     1120               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 
     1121               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 
    11221122               ! needed to restart if land processor not computed  
    11231123               IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' 
     
    11331133               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    11341134               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    1135                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
     1135               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 
    11361136               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    11371137               l_1st_euler = .true. 
     
    11401140               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    11411141               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    1142                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
     1142               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 
    11431143               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    11441144               l_1st_euler = .true. 
     
    11651165               !                          ! ----------------------- ! 
    11661166               IF( MIN( id3, id4 ) > 0 ) THEN  ! all required arrays exist 
    1167                   CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios ) 
    1168                   CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios ) 
     1167                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 
     1168                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 
    11691169               ELSE                            ! one at least array is missing 
    11701170                  tilde_e3t_b(:,:,:) = 0.0_wp 
     
    11751175                  !                       ! ------------ ! 
    11761176                  IF( id5 > 0 ) THEN  ! required array exists 
    1177                      CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios ) 
     1177                     CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) ) 
    11781178                  ELSE                ! array is missing 
    11791179                     hdiv_lf(:,:,:) = 0.0_wp 
     
    12511251         !                                   ! =================== 
    12521252         IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 
    1253          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    12541253         !                                           ! --------- ! 
    12551254         !                                           ! all cases ! 
    12561255         !                                           ! --------- ! 
    1257          CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lwxios ) 
    1258          CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lwxios ) 
     1256         CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) ) 
     1257         CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) ) 
    12591258         !                                           ! ----------------------- ! 
    12601259         IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN  ! z_tilde and layer cases ! 
    12611260            !                                        ! ----------------------- ! 
    1262             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lwxios) 
    1263             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lwxios) 
     1261            CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:)) 
     1262            CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:)) 
    12641263         END IF 
    12651264         !                                           ! -------------!     
    12661265         IF( ln_vvl_ztilde ) THEN                    ! z_tilde case ! 
    12671266            !                                        ! ------------ ! 
    1268             CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lwxios) 
     1267            CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:)) 
    12691268         ENDIF 
    12701269         ! 
    1271          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    12721270      ENDIF 
    12731271      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/SWE/step.F90

    r13458 r13934  
    304304      IF( kstp == nitend .OR. indic < 0 ) THEN  
    305305                      CALL iom_context_finalize(      cxios_context          ) ! needed for XIOS+AGRIF 
    306                       IF(lrxios) CALL iom_context_finalize(      crxios_context          ) 
     306                      IF(lrxios) CALL iom_context_finalize(      cr_ocerst_cxt          ) 
    307307      ENDIF 
    308308#endif 
  • NEMO/branches/2020/test_12905_xios_restart/src/SWE/stepLF.F90

    r13295 r13934  
    318318      IF( kstp == nitend .OR. indic < 0 ) THEN  
    319319                      CALL iom_context_finalize(      cxios_context          ) ! needed for XIOS+AGRIF 
    320                       IF(lrxios) CALL iom_context_finalize(      crxios_context          ) 
     320                      IF(lrxios) CALL iom_context_finalize(      cr_ocerst_cxt          ) 
    321321      ENDIF 
    322322#endif 
  • NEMO/branches/2020/test_12905_xios_restart/src/SWE/stpRK3.F90

    r13295 r13934  
    361361      IF( kstp == nitend .OR. indic < 0 ) THEN  
    362362                      CALL iom_context_finalize(      cxios_context          ) ! needed for XIOS+AGRIF 
    363                       IF(lrxios) CALL iom_context_finalize(      crxios_context          ) 
     363                      IF(lrxios) CALL iom_context_finalize(      cr_ocerst_cxt          ) 
    364364      ENDIF 
    365365#endif 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/C14/trcini_c14.F90

    r13727 r13934  
    6868        IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    6969        !  
    70         IF(lrtxios) CALL iom_swap(crtxios_context) 
    71         CALL iom_get( numrtr, 'co2sbc', co2sbc, ldxios = lrtxios )  
    72         CALL iom_get( numrtr, jpdom_auto, 'c14sbc', c14sbc, ldxios = lrtxios )  
    73         CALL iom_get( numrtr, jpdom_auto, 'exch_co2', exch_co2, ldxios = lrtxios )  
    74         CALL iom_get( numrtr, jpdom_auto, 'exch_c14', exch_c14, ldxios = lrtxios )  
    75         CALL iom_get( numrtr, jpdom_auto, 'qtr_c14', qtr_c14, ldxios = lrtxios ) 
    76         IF(lrtxios) CALL iom_swap(cxios_context) 
     70        CALL iom_get( numrtr, 'co2sbc', co2sbc )  
     71        CALL iom_get( numrtr, jpdom_auto, 'c14sbc', c14sbc )  
     72        CALL iom_get( numrtr, jpdom_auto, 'exch_co2', exch_co2 )  
     73        CALL iom_get( numrtr, jpdom_auto, 'exch_c14', exch_c14 )  
     74        CALL iom_get( numrtr, jpdom_auto, 'qtr_c14', qtr_c14 ) 
    7775        ! 
    7876      END IF 
     
    8785      ELSE 
    8886        ! 
    89         IF(lrtxios) CALL iom_swap(crtxios_context) 
    90         CALL iom_get( numrtr, jpdom_auto, 'qint_c14', qint_c14, ldxios = lrtxios )  
    91         IF(lrtxios) CALL iom_swap(cxios_context) 
     87        CALL iom_get( numrtr, jpdom_auto, 'qint_c14', qint_c14 )  
    9288        ! 
    9389      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/C14/trcsms_c14.F90

    r13727 r13934  
    144144         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    145145         ! 
    146          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
    147          CALL iom_rstput( kt, nitrst, numrtw, 'co2sbc', co2sbc,     ldxios = lwxios ) ! These five need      & 
    148          CALL iom_rstput( kt, nitrst, numrtw, 'c14sbc', c14sbc,     ldxios = lwxios ) ! &    to be written   & 
    149          CALL iom_rstput( kt, nitrst, numrtw, 'exch_co2', exch_co2, ldxios = lwxios ) ! &    for temporal    & 
    150          CALL iom_rstput( kt, nitrst, numrtw, 'exch_c14', exch_c14, ldxios = lwxios ) ! &    averages        & 
    151          CALL iom_rstput( kt, nitrst, numrtw, 'qtr_c14', qtr_c14,   ldxios = lwxios ) ! &    to be coherent. 
    152          CALL iom_rstput( kt, nitrst, numrtw, 'qint_c14', qint_c14, ldxios = lwxios ) ! Cumulative 
    153          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     146         CALL iom_rstput( kt, nitrst, numrtw, 'co2sbc', co2sbc ) ! These five need      & 
     147         CALL iom_rstput( kt, nitrst, numrtw, 'c14sbc', c14sbc ) ! &    to be written   & 
     148         CALL iom_rstput( kt, nitrst, numrtw, 'exch_co2', exch_co2 ) ! &    for temporal    & 
     149         CALL iom_rstput( kt, nitrst, numrtw, 'exch_c14', exch_c14 ) ! &    averages        & 
     150         CALL iom_rstput( kt, nitrst, numrtw, 'qtr_c14', qtr_c14   ) ! &    to be coherent. 
     151         CALL iom_rstput( kt, nitrst, numrtw, 'qint_c14', qint_c14 ) ! Cumulative 
    154152         ! 
    155153      ENDIF 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/CFC/trcsms_cfc.F90

    r13727 r13934  
    179179         IF(lwp) WRITE(numout,*) '~~~~' 
    180180         jl = 0 
    181          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
    182181         DO jn = jp_cfc0, jp_cfc1 
    183182             jl = jl + 1 
    184             CALL iom_rstput( kt, nitrst, numrtw, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl), ldxios = lwxios ) 
     183            CALL iom_rstput( kt, nitrst, numrtw, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl) ) 
    185184         END DO 
    186          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
    187185      ENDIF                                             
    188186      ! 
     
    298296         ! 
    299297         jl = 0 
    300          IF(lrtxios) CALL iom_swap(crtxios_context) 
    301298         DO jn = jp_cfc0, jp_cfc1 
    302299            jl = jl + 1 
    303             CALL iom_get( numrtr, jpdom_auto, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl), ldxios = lrtxios )  
     300            CALL iom_get( numrtr, jpdom_auto, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl) )  
    304301         END DO 
    305          IF(lrtxios) CALL iom_swap(cxios_context) 
    306302      ENDIF 
    307303      IF(lwp) WRITE(numout,*) 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/PISCES/P2Z/p2zexp.F90

    r13727 r13934  
    134134            &                    'at it= ', kt,' date= ', ndastp 
    135135         IF(lwp) WRITE(numout,*) '~~~~' 
    136          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
    137          CALL iom_rstput( kt, nitrst, numrtw, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:), ldxios = lwxios ) 
    138          CALL iom_rstput( kt, nitrst, numrtw, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:), ldxios = lwxios ) 
    139          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     136         CALL iom_rstput( kt, nitrst, numrtw, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) ) 
     137         CALL iom_rstput( kt, nitrst, numrtw, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) ) 
    140138      ENDIF 
    141139      ! 
     
    216214      ! 
    217215      IF( ln_rsttr ) THEN 
    218          IF(lrtxios) CALL iom_swap(crtxios_context) 
    219          CALL iom_get( numrtr, jpdom_auto, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:), ldxios = lrtxios ) 
    220          CALL iom_get( numrtr, jpdom_auto, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:), ldxios = lrtxios ) 
    221          IF(lrtxios) CALL iom_swap(cxios_context) 
     216         CALL iom_get( numrtr, jpdom_auto, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) ) 
     217         CALL iom_get( numrtr, jpdom_auto, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) ) 
    222218      ELSE 
    223219         sedpocb(:,:) = 0._wp 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/PISCES/P4Z/p4zsms.F90

    r13727 r13934  
    332332         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    333333         !  
    334          IF(lrtxios) CALL iom_swap(crtxios_context) 
    335334         IF( iom_varid( numrtr, 'PH', ldstop = .FALSE. ) > 0 ) THEN 
    336             CALL iom_get( numrtr, jpdom_auto, 'PH' , hi(:,:,:), ldxios = lrtxios  ) 
     335            CALL iom_get( numrtr, jpdom_auto, 'PH' , hi(:,:,:)  ) 
    337336         ELSE 
    338337            CALL p4z_che( Kbb, Kmm )                  ! initialize the chemical constants 
    339338            CALL ahini_for_at( hi, Kbb ) 
    340339         ENDIF 
    341          CALL iom_get( numrtr, jpdom_auto, 'Silicalim', xksi(:,:), ldxios = lrtxios ) 
     340         CALL iom_get( numrtr, jpdom_auto, 'Silicalim', xksi(:,:) ) 
    342341         IF( iom_varid( numrtr, 'Silicamax', ldstop = .FALSE. ) > 0 ) THEN 
    343             CALL iom_get( numrtr, jpdom_auto, 'Silicamax' , xksimax(:,:), ldxios = lrtxios  ) 
     342            CALL iom_get( numrtr, jpdom_auto, 'Silicamax' , xksimax(:,:)  ) 
    344343         ELSE 
    345344            xksimax(:,:) = xksi(:,:) 
     
    347346         ! 
    348347         IF( iom_varid( numrtr, 'tcflxcum', ldstop = .FALSE. ) > 0 ) THEN  ! cumulative total flux of carbon 
    349             CALL iom_get( numrtr, 'tcflxcum' , t_oce_co2_flx_cum, ldxios = lrtxios  ) 
     348            CALL iom_get( numrtr, 'tcflxcum' , t_oce_co2_flx_cum  ) 
    350349         ELSE 
    351350            t_oce_co2_flx_cum = 0._wp 
     
    354353         IF( ln_p5z ) THEN 
    355354            IF( iom_varid( numrtr, 'sized', ldstop = .FALSE. ) > 0 ) THEN 
    356                CALL iom_get( numrtr, jpdom_auto, 'sizep' , sizep(:,:,:), ldxios = lrtxios  ) 
    357                CALL iom_get( numrtr, jpdom_auto, 'sizen' , sizen(:,:,:), ldxios = lrtxios  ) 
    358                CALL iom_get( numrtr, jpdom_auto, 'sized' , sized(:,:,:), ldxios = lrtxios  ) 
     355               CALL iom_get( numrtr, jpdom_auto, 'sizep' , sizep(:,:,:)  ) 
     356               CALL iom_get( numrtr, jpdom_auto, 'sizen' , sizen(:,:,:)  ) 
     357               CALL iom_get( numrtr, jpdom_auto, 'sized' , sized(:,:,:)  ) 
    359358            ELSE 
    360359               sizep(:,:,:) = 1. 
     
    363362            ENDIF 
    364363        ENDIF 
    365         IF(lrtxios) CALL iom_swap(cxios_context) 
    366364        ! 
    367365      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN 
     
    371369            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    372370         ENDIF 
    373          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
    374          CALL iom_rstput( kt, nitrst, numrtw, 'PH', hi(:,:,:),               ldxios = lwxios ) 
    375          CALL iom_rstput( kt, nitrst, numrtw, 'Silicalim', xksi(:,:),        ldxios = lwxios ) 
    376          CALL iom_rstput( kt, nitrst, numrtw, 'Silicamax', xksimax(:,:),     ldxios = lwxios ) 
    377          CALL iom_rstput( kt, nitrst, numrtw, 'tcflxcum', t_oce_co2_flx_cum, ldxios = lwxios ) 
     371         CALL iom_rstput( kt, nitrst, numrtw, 'PH', hi(:,:,:)           ) 
     372         CALL iom_rstput( kt, nitrst, numrtw, 'Silicalim', xksi(:,:)    ) 
     373         CALL iom_rstput( kt, nitrst, numrtw, 'Silicamax', xksimax(:,:) ) 
     374         CALL iom_rstput( kt, nitrst, numrtw, 'tcflxcum', t_oce_co2_flx_cum ) 
    378375         IF( ln_p5z ) THEN 
    379             CALL iom_rstput( kt, nitrst, numrtw, 'sizep', sizep(:,:,:), ldxios = lwxios ) 
    380             CALL iom_rstput( kt, nitrst, numrtw, 'sizen', sizen(:,:,:), ldxios = lwxios ) 
    381             CALL iom_rstput( kt, nitrst, numrtw, 'sized', sized(:,:,:), ldxios = lwxios ) 
    382          ENDIF 
    383          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     376            CALL iom_rstput( kt, nitrst, numrtw, 'sizep', sizep(:,:,:) ) 
     377            CALL iom_rstput( kt, nitrst, numrtw, 'sizen', sizen(:,:,:) ) 
     378            CALL iom_rstput( kt, nitrst, numrtw, 'sized', sized(:,:,:) ) 
     379         ENDIF 
    384380      ENDIF 
    385381      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/PISCES/SED/sed.F90

    r12969 r13934  
    4444   REAL    , PUBLIC               ::  sedmask 
    4545   REAL(wp), PUBLIC               ::  denssol                !: density of solid material 
    46    INTEGER , PUBLIC               ::  numrsr, numrsw   !: logical unit for sed restart (read and write) 
    4746   LOGICAL , PUBLIC               ::  lrst_sed       !: logical to control the trc restart write 
    4847   LOGICAL , PUBLIC               ::  ln_rst_sed  = .TRUE.     !: initialisation from a restart file or not 
     
    5352   INTEGER             , PUBLIC   ::  nn_rstsed      !: control of the time step ( 0 or 1 ) for pass. tr. 
    5453   INTEGER , PUBLIC               ::  nn_dtsed = 1   !: frequency of step on passive tracers 
    55    LOGICAL,  PUBLIC               ::  lrsxios        !: use xios to read restart 
    5654   CHARACTER(len = 80) , PUBLIC   ::  cn_sedrst_in   !: suffix of pass. tracer restart name (input) 
    5755   CHARACTER(len = 256), PUBLIC   ::  cn_sedrst_indir  !: restart input directory 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/PISCES/SED/sedrst.F90

    r13750 r13934  
    8585         ELSE 
    8686#if defined key_iomput 
    87             cwsxios_context = "rstws_"//TRIM(ADJUSTL(clkt)) 
     87            cw_sedrst_cxt = "rstws_"//TRIM(ADJUSTL(clkt)) 
    8888            IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    8989               clpname = clname 
     
    9191               clpname = TRIM(Agrif_CFixed())//"_"//clname 
    9292            ENDIF 
    93             CALL iom_init( cwsxios_context, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE. ) 
    94             CALL iom_swap(      cxios_context          ) 
     93            numrsw = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 
     94            CALL iom_init( cw_sedrst_cxt, kdid = numrsw, ld_closedef = .FALSE. ) 
    9595#else 
    9696               clinfo = 'Can not use XIOS in trc_rst_opn' 
     
    138138      zdta2 = 0. 
    139139 
    140       IF(lrsxios) CALL iom_swap(crsxios_context) 
    141140      DO jn = 1, jptrased 
    142141         cltra = TRIM(sedtrcd(jn)) 
    143142         IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    144             CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta(:,:,:,jn), ldxios = lrsxios ) 
     143            CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta(:,:,:,jn) ) 
    145144         ELSE 
    146145            zdta(:,:,:,jn) = 0.0 
     
    161160         cltra = TRIM(seddia3d(jn)) 
    162161         IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    163             CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta1(:,:,:,jn), ldxios = lrsxios ) 
     162            CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta1(:,:,:,jn) ) 
    164163         ELSE 
    165164            zdta1(:,:,:,jn) = 0.0 
     
    188187      cltra = "dbioturb" 
    189188      IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    190          CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 
     189         CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:) ) 
    191190      ELSE 
    192191         zdta2(:,:,:) = 0.0 
     
    198197      cltra = "irrig" 
    199198      IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    200          CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 
     199         CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:) ) 
    201200      ELSE 
    202201         zdta2(:,:,:) = 0.0 
     
    208207      cltra = "sedligand" 
    209208      IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    210          CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 
     209         CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:) ) 
    211210      ELSE 
    212211         zdta2(:,:,:) = 0.0 
     
    215214      CALL pack_arr( jpoce, sedligand(1:jpoce,1:jpksed), & 
    216215         &             zdta2(1:jpi,1:jpj,1:jpksed), iarroce(1:jpoce) ) 
    217       IF(lrsxios) CALL iom_swap(cxios_context) 
    218216      IF( ln_timing )  CALL timing_stop('sed_rst_read') 
    219217      
     
    259257      !! 1. WRITE in nutwrs 
    260258      !! ------------------ 
    261       IF( lwxios ) CALL iom_swap(      cwsxios_context         ) 
    262259!     zinfo(1) = REAL( kt) 
    263       CALL iom_rstput( kt, nitrst, numrsw, 'kt', REAL( kt    , wp), ldxios = lwxios ) 
     260      CALL iom_rstput( kt, nitrst, numrsw, 'kt', REAL( kt    , wp) ) 
    264261 
    265262      ! Back to 2D geometry 
     
    291288      DO jn = 1, jptrased 
    292289         cltra = TRIM(sedtrcd(jn)) 
    293          CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), trcsedi(:,:,:,jn), ldxios = lwxios ) 
     290         CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), trcsedi(:,:,:,jn) ) 
    294291      ENDDO 
    295292 
    296293      DO jn = 1, 2 
    297294         cltra = TRIM(seddia3d(jn)) 
    298          CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), flxsedi3d(:,:,:,jn), ldxios = lwxios ) 
     295         CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), flxsedi3d(:,:,:,jn) ) 
    299296      ENDDO 
    300297 
     
    303300 
    304301      cltra = "dbioturb" 
    305       CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:), ldxios = lwxios ) 
     302      CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 
    306303 
    307304      CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed)  , iarroce(1:jpoce), & 
     
    309306 
    310307      cltra = "irrig" 
    311       CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:), ldxios = lwxios ) 
     308      CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 
    312309 
    313310      CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed)  , iarroce(1:jpoce), & 
     
    315312 
    316313      cltra = "sedligand" 
    317       CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:), ldxios = lwxios ) 
    318       IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     314      CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 
    319315 
    320316      IF( kt == nitrst ) THEN 
     
    322318             CALL iom_close( numrsw )     ! close the restart file (only at last time step) 
    323319          ELSE 
    324              CALL iom_context_finalize( cwsxios_context )  
     320             CALL iom_context_finalize( cw_sedrst_cxt )  
     321             iom_file(numrsw)%nfid       = 0 
     322             numrsw = 0 
    325323          ENDIF 
    326324          IF( l_offline .AND. ln_rst_list ) THEN 
     
    381379            CALL iom_open( TRIM(cn_sedrst_indir)//'/'//cn_sedrst_in, numrsr ) 
    382380 
    383             lrsxios = lrxios.AND.lxios_sini 
    384             IF( lrsxios) THEN 
    385                 crsxios_context = 'sed_rst' 
     381            IF( lrxios) THEN 
     382                cr_sedrst_cxt = 'sed_rst' 
    386383                IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SED' 
    387                 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    388                    clpname = cn_sedrst_in 
    389                 ELSE 
    390                    clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in    
    391                 ENDIF 
    392                 CALL iom_init( crsxios_context, fname = TRIM(cn_sedrst_indir)//'/'//TRIM(clpname), & 
    393                                                 idfp = iom_file(numrsr)%nfid, ld_closedef = .TRUE. ) 
    394             ENDIF 
    395             IF(lrsxios) CALL iom_swap(crsxios_context) 
    396             CALL iom_get ( numrsr, 'kt', zkt, ldxios = lrsxios )   ! last time-step of previous run 
    397             IF(lrsxios) CALL iom_swap(cxios_context) 
     384!               IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     385!                  clpname = cn_sedrst_in 
     386!               ELSE 
     387!                  clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in    
     388!               ENDIF 
     389                CALL iom_init( cr_sedrst_cxt, kdid = numrsr, ld_closedef = .TRUE. ) 
     390            ENDIF 
     391            CALL iom_get ( numrsr, 'kt', zkt )   ! last time-step of previous run 
    398392            IF(lwp) THEN 
    399393               WRITE(numsed,*) ' *** Info read in restart : ' 
     
    416410            !                                          ! set the date in offline mode 
    417411            IF( ln_rst_sed .AND. nn_rstsed == 2 ) THEN 
    418                IF(lrsxios) CALL iom_swap(crsxios_context) 
    419                CALL iom_get( numrsr, 'ndastp', zndastp, ldxios = lrsxios ) 
     412               CALL iom_get( numrsr, 'ndastp', zndastp ) 
    420413               ndastp = NINT( zndastp ) 
    421                CALL iom_get( numrsr, 'adatrj', adatrj, ldxios = lrsxios  ) 
    422                IF(lrsxios) CALL iom_swap(crxios_context) 
     414               CALL iom_get( numrsr, 'adatrj', adatrj  ) 
    423415             ELSE 
    424416               ndastp = ndate0 - 1     ! ndate0 read in the namelist in dom_nam 
     
    444436            IF(lwp) WRITE(numsed,*) 'trc_wri : write the TOP restart file (NetCDF) at it= ', kt, ' date= ', ndastp 
    445437            IF(lwp) WRITE(numsed,*) '~~~~~~~' 
    446             IF( lwxios ) CALL iom_init_closedef(cwsxios_context) 
    447          ENDIF 
    448          IF( lwxios ) CALL iom_swap(      cwsxios_context         ) 
    449          CALL iom_rstput( kt, nitrst, numrsw, 'kt'     , REAL( kt    , wp), ldxios = lwxios )   ! time-step 
    450          CALL iom_rstput( kt, nitrst, numrsw, 'ndastp' , REAL( ndastp, wp), ldxios = lwxios )   ! date 
    451          CALL iom_rstput( kt, nitrst, numrsw, 'adatrj' , adatrj,            ldxios = lwxios )   ! number of elapsed days since 
     438            IF( lwxios ) CALL iom_init_closedef(cw_sedrst_cxt) 
     439         ENDIF 
     440         CALL iom_rstput( kt, nitrst, numrsw, 'kt'     , REAL( kt    , wp) )   ! time-step 
     441         CALL iom_rstput( kt, nitrst, numrsw, 'ndastp' , REAL( ndastp, wp) )   ! date 
     442         CALL iom_rstput( kt, nitrst, numrsw, 'adatrj' , adatrj )   ! number of elapsed days since 
    452443         !                                                                                      ! the begining of the run [s] 
    453          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
    454444      ENDIF 
    455445 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/PISCES/SED/sedstp.F90

    r12969 r13934  
    8686      IF( kt == nitsed000 ) THEN 
    8787          CALL iom_close( numrsr )       ! close input tracer restart file 
    88           IF(lrsxios) CALL iom_context_finalize(      crsxios_context  ) 
    89 !          IF(lwm) CALL FLUSH( numont )   ! flush namelist output 
     88          IF(lrxios) CALL iom_context_finalize(      cr_sedrst_cxt  ) 
     89!         IF(lwm) CALL FLUSH( numont )   ! flush namelist output 
    9090      ENDIF 
    9191      IF( lrst_sed )            CALL sed_rst_wri( kt )   ! restart file output 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/TRP/trcsbc.F90

    r13727 r13934  
    8787            IF(lwp) WRITE(numout,*) '          nittrc000-1 surface tracer content forcing fields read in the restart file' 
    8888            zfact = 0.5_wp 
    89             IF(lrtxios) CALL iom_swap(crtxios_context) 
    9089            DO jn = 1, jptra 
    91                CALL iom_get( numrtr, jpdom_auto, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc_b(:,:,jn), ldxios = lrtxios )   ! before tracer content sbc 
     90               CALL iom_get( numrtr, jpdom_auto, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc_b(:,:,jn) )   ! before tracer content sbc 
    9291            END DO 
    93             IF(lrtxios) CALL iom_swap(cxios_context) 
    9492         ELSE                                         ! No restart or restart not found: Euler forward time stepping 
    9593           zfact = 1._wp 
     
    183181            &                    'at it= ', kt,' date= ', ndastp 
    184182         IF(lwp) WRITE(numout,*) '~~~~' 
    185          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
    186          DO jn = 1, jptra 
    187             CALL iom_rstput( kt, nitrst, numrtw, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc(:,:,jn), ldxios = lwxios ) 
    188          END DO 
    189          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     183         DO jn = 1, jptra 
     184            CALL iom_rstput( kt, nitrst, numrtw, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc(:,:,jn) ) 
     185         END DO 
    190186      ENDIF 
    191187      ! 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/trc.F90

    r13727 r13934  
    2121   INTEGER, PUBLIC ::   numonr     = -1   !: reference passive tracer namelist output output.namelist.top 
    2222   INTEGER, PUBLIC ::   numstr            !: tracer statistics 
    23    INTEGER, PUBLIC ::   numrtr     = -1   !: trc restart (read ) 
    24    INTEGER, PUBLIC ::   numrtw            !: trc restart ( write ) 
    2523   CHARACTER(:), ALLOCATABLE, PUBLIC ::   numnat_ref   !: character buffer for reference passive tracer namelist_top_ref 
    2624   CHARACTER(:), ALLOCATABLE, PUBLIC ::   numnat_cfg   !: character buffer for configuration specific passive tracer namelist_top_cfg 
     
    6967   INTEGER             , PUBLIC ::   nittrc000          !: first time step of passive tracers model 
    7068   LOGICAL             , PUBLIC ::   l_trcdm2dc         !: Diurnal cycle for TOP 
    71    LOGICAL             , PUBLIC ::   lrtxios            !: read TOP restart with XIOS 
    7269 
    7370   !! Information for the ice module for tracers 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/trcrst.F90

    r13750 r13934  
    9696         ELSE 
    9797#if defined key_iomput 
    98             cwtxios_context = "rstwt_"//TRIM(ADJUSTL(clkt)) 
     98            cw_toprst_cxt = "rstwt_"//TRIM(ADJUSTL(clkt)) 
    9999            IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    100100               clpname = clname 
     
    102102               clpname = TRIM(Agrif_CFixed())//"_"//clname 
    103103            ENDIF 
    104             CALL iom_init( cwtxios_context, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE. ) 
    105             CALL iom_swap(      cxios_context          ) 
     104            numrtw = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 
     105            CALL iom_init( cw_toprst_cxt, kdid = numrtw, ld_closedef = .FALSE. ) 
    106106#else 
    107107               clinfo = 'Can not use XIOS in trc_rst_opn' 
     
    130130 
    131131      ! READ prognostic variables and computes diagnostic variable 
    132       IF(lrtxios) CALL iom_swap(crtxios_context) 
    133132      DO jn = 1, jptra 
    134          CALL iom_get( numrtr, jpdom_auto, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm), ldxios = lrtxios ) 
     133         CALL iom_get( numrtr, jpdom_auto, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) ) 
    135134      END DO 
    136135 
    137136      DO jn = 1, jptra 
    138          CALL iom_get( numrtr, jpdom_auto, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb), ldxios = lrtxios ) 
    139       END DO 
    140       ! 
    141       CALL iom_delay_rst( 'READ', 'TOP', numrtr )   ! read only TOP delayed global communication variables 
    142       IF(lrtxios) CALL iom_swap(cxios_context)  
     137         CALL iom_get( numrtr, jpdom_auto, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) ) 
     138      END DO 
     139      ! 
     140      IF(.NOT.lrxios) CALL iom_delay_rst( 'READ', 'TOP', numrtr )   ! read only TOP delayed global communication variables 
    143141   END SUBROUTINE trc_rst_read 
    144142 
     
    155153      !!---------------------------------------------------------------------- 
    156154      ! 
    157       IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
    158       CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rn_Dt, ldxios = lwxios )   ! passive tracer time step (= ocean time step) 
     155      CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rn_Dt )   ! passive tracer time step (= ocean time step) 
    159156      ! prognostic variables  
    160157      ! --------------------  
    161158      DO jn = 1, jptra 
    162          CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm), ldxios = lwxios ) 
     159         CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) ) 
    163160      END DO 
    164161 
    165162      DO jn = 1, jptra 
    166          CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb), ldxios = lwxios ) 
    167       END DO 
    168       IF( lwxios ) CALL iom_swap(      cxios_context         ) 
    169       ! 
    170       CALL iom_delay_rst( 'WRITE', 'TOP', numrtw )   ! save only TOP delayed global communication variables 
     163         CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) ) 
     164      END DO 
     165 
     166      IF( .NOT. lwxios ) CALL iom_delay_rst( 'WRITE', 'TOP', numrtw )   ! save only TOP delayed global communication variables 
    171167     
    172168      IF( kt == nitrst ) THEN 
    173169          CALL trc_rst_stat( Kmm, Krhs )             ! statistics 
    174170          IF(lwxios) THEN 
    175              CALL iom_context_finalize(      cwtxios_context          ) 
     171             CALL iom_context_finalize(      cw_toprst_cxt          ) 
     172             iom_file(numrtw)%nfid       = 0 
     173             numrtw = 0 
    176174          ELSE 
    177175             CALL iom_close( numrtw )     ! close the restart file (only at last time step) 
     
    234232            lxios_sini = .FALSE. 
    235233            CALL iom_open( TRIM(cn_trcrst_indir)//'/'//cn_trcrst_in, numrtr ) 
    236             lrtxios = lrxios.AND.lxios_sini 
    237             IF( lrtxios) THEN 
    238                 crtxios_context = 'top_rst' 
     234            IF( lrxios) THEN 
     235                cr_toprst_cxt = 'top_rst' 
    239236                IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for TOP' 
    240                 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    241                    clpname = cn_trcrst_in 
    242                 ELSE 
    243                    clpname = TRIM(Agrif_CFixed())//"_"//cn_trcrst_in    
    244                 ENDIF 
    245                 CALL iom_init( crtxios_context, fname = TRIM(cn_trcrst_indir)//'/'//TRIM(clpname), & 
    246                                           idfp = iom_file(numrtr)%nfid, ld_closedef = .TRUE. ) 
    247             ENDIF 
    248  
    249             IF(lrtxios) CALL iom_swap(crtxios_context) 
    250             CALL iom_get ( numrtr, 'kt', zkt, ldxios = lrtxios )   ! last time-step of previous run 
    251             IF(lrtxios) CALL iom_swap(cxios_context) 
     237!               IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     238!                  clpname = cn_trcrst_in 
     239!               ELSE 
     240!                  clpname = TRIM(Agrif_CFixed())//"_"//cn_trcrst_in    
     241!               ENDIF 
     242                CALL iom_init( cr_toprst_cxt, kdid = numrtr, ld_closedef = .TRUE. ) 
     243            ENDIF 
     244 
     245            CALL iom_get ( numrtr, 'kt', zkt )   ! last time-step of previous run 
    252246 
    253247            IF(lwp) THEN 
     
    271265            !                                          ! set the date in offline mode 
    272266            IF( ln_rsttr .AND. nn_rsttr == 2 ) THEN 
    273                IF(lrtxios) CALL iom_swap(crtxios_context) 
    274                CALL iom_get( numrtr, 'ndastp', zndastp, ldxios = lrtxios ) 
     267               CALL iom_get( numrtr, 'ndastp', zndastp ) 
    275268               ndastp = NINT( zndastp ) 
    276                CALL iom_get( numrtr, 'adatrj', adatrj, ldxios = lrtxios  ) 
    277                CALL iom_get( numrtr, 'ntime' , ktime, ldxios = lrtxios   ) 
    278                IF(lrtxios) CALL iom_swap(cxios_context) 
     269               CALL iom_get( numrtr, 'adatrj', adatrj  ) 
     270               CALL iom_get( numrtr, 'ntime' , ktime   ) 
    279271               nn_time0=INT(ktime) 
    280272               ! calculate start time in hours and minutes 
     
    336328            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    337329         ENDIF 
    338          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
    339          CALL iom_rstput( kt, nitrst, numrtw, 'kt'     , REAL( kt    , wp)  , ldxios = lwxios )   ! time-step 
    340          CALL iom_rstput( kt, nitrst, numrtw, 'ndastp' , REAL( ndastp, wp)  , ldxios = lwxios )   ! date 
    341          CALL iom_rstput( kt, nitrst, numrtw, 'adatrj' , adatrj             , ldxios = lwxios )   ! number of elapsed days since 
     330         CALL iom_rstput( kt, nitrst, numrtw, 'kt'     , REAL( kt    , wp)   )   ! time-step 
     331         CALL iom_rstput( kt, nitrst, numrtw, 'ndastp' , REAL( ndastp, wp)   )   ! date 
     332         CALL iom_rstput( kt, nitrst, numrtw, 'adatrj' , adatrj              )   ! number of elapsed days since 
    342333         !                                                                     ! the begining of the run [s] 
    343          CALL iom_rstput( kt, nitrst, numrtw, 'ntime'  , REAL( nn_time0, wp), ldxios = lwxios ) ! time 
    344          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     334         CALL iom_rstput( kt, nitrst, numrtw, 'ntime'  , REAL( nn_time0, wp) ) ! time 
    345335      ENDIF 
    346336 
  • NEMO/branches/2020/test_12905_xios_restart/src/TOP/trcstp.F90

    r13727 r13934  
    110110      IF( kt == nittrc000 ) THEN 
    111111         CALL iom_close( numrtr )                         ! close input tracer restart file 
    112          IF(lrtxios) CALL iom_context_finalize(      crtxios_context          ) 
     112         IF(lrxios) CALL iom_context_finalize(      cr_toprst_cxt          ) 
    113113         IF(lwm) CALL FLUSH( numont )                     ! flush namelist output 
    114114      ENDIF 
     
    197197           &                              .AND. iom_varid( numrtr, 'ktdcy'    , ldstop = .FALSE. ) > 0  & 
    198198           &                              .AND. iom_varid( numrtr, 'nrdcy'    , ldstop = .FALSE. ) > 0  ) THEN 
    199             IF(lrtxios) CALL iom_swap(crtxios_context) 
    200             CALL iom_get( numrtr, 'ktdcy', zkt, ldxios = lrtxios )   
     199            CALL iom_get( numrtr, 'ktdcy', zkt )   
    201200            rsecfst = INT( zkt ) * rn_Dt 
    202201            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean read in the restart file at time-step rsecfst =', rsecfst, ' s ' 
    203             CALL iom_get( numrtr, jpdom_auto, 'qsr_mean', qsr_mean, ldxios = lrtxios )   !  A mean of qsr 
    204             CALL iom_get( numrtr, 'nrdcy', zrec, ldxios = lrtxios )   !  Number of record per days 
     202            CALL iom_get( numrtr, jpdom_auto, 'qsr_mean', qsr_mean )   !  A mean of qsr 
     203            CALL iom_get( numrtr, 'nrdcy', zrec )   !  Number of record per days 
    205204            IF( INT( zrec ) == nb_rec_per_day ) THEN 
    206205               DO jn = 1, nb_rec_per_day  
    207206                  IF( jn <= 9 )  THEN 
    208207                    WRITE(cl1,'(i1)') jn 
    209                     CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl1, qsr_arr(:,:,jn), ldxios = lrtxios )   !  A mean of qsr 
     208                    CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl1, qsr_arr(:,:,jn) )   !  A mean of qsr 
    210209                  ELSE 
    211210                    WRITE(cl2,'(i2.2)') jn 
    212                     CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl2, qsr_arr(:,:,jn), ldxios = lrtxios )   !  A mean of qsr 
     211                    CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl2, qsr_arr(:,:,jn) )   !  A mean of qsr 
    213212                  ENDIF 
    214213              END DO 
     
    218217               ENDDO 
    219218            ENDIF 
    220             IF(lrtxios) CALL iom_swap(cxios_context) 
    221219         ELSE                                         !* no restart: set from nit000 values 
    222220            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean set to nit000 values' 
     
    252250         zkt  = REAL( ktdcy, wp ) 
    253251         zrec = REAL( nb_rec_per_day, wp ) 
    254          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
    255          CALL iom_rstput( kt, nitrst, numrtw, 'ktdcy', zkt, ldxios = lwxios  ) 
    256          CALL iom_rstput( kt, nitrst, numrtw, 'nrdcy', zrec, ldxios = lwxios ) 
     252         CALL iom_rstput( kt, nitrst, numrtw, 'ktdcy', zkt  ) 
     253         CALL iom_rstput( kt, nitrst, numrtw, 'nrdcy', zrec ) 
    257254          DO jn = 1, nb_rec_per_day  
    258255             IF( jn <= 9 )  THEN 
    259256               WRITE(cl1,'(i1)') jn 
    260                CALL iom_rstput( kt, nitrst, numrtw, 'qsr_arr_'//cl1, qsr_arr(:,:,jn), ldxios = lwxios ) 
     257               CALL iom_rstput( kt, nitrst, numrtw, 'qsr_arr_'//cl1, qsr_arr(:,:,jn) ) 
    261258             ELSE 
    262259               WRITE(cl2,'(i2.2)') jn 
    263                CALL iom_rstput( kt, nitrst, numrtw, 'qsr_arr_'//cl2, qsr_arr(:,:,jn), ldxios = lwxios ) 
     260               CALL iom_rstput( kt, nitrst, numrtw, 'qsr_arr_'//cl2, qsr_arr(:,:,jn) ) 
    264261             ENDIF 
    265262         END DO 
    266          CALL iom_rstput( kt, nitrst, numrtw, 'qsr_mean', qsr_mean(:,:), ldxios = lwxios ) 
    267          IF( lwxios ) CALL iom_swap(      cxios_context         ) 
     263         CALL iom_rstput( kt, nitrst, numrtw, 'qsr_mean', qsr_mean(:,:) ) 
    268264      ENDIF 
    269265      ! 
  • NEMO/branches/2020/test_12905_xios_restart/tests/CANAL/MY_SRC/domvvl.F90

    r13727 r13934  
    785785         IF( ln_rstart ) THEN                   !* Read the restart file 
    786786            CALL rst_read_open                  !  open the restart file if necessary 
    787             IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    788             CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm), ldxios = lroxios    ) 
     787            CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm)    ) 
    789788            ! 
    790789            id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) 
     
    799798            ! 
    800799            IF( MIN( id1, id2 ) > 0 ) THEN       ! all required arrays exist 
    801                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 
    802                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 
     800               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 
     801               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 
    803802               ! needed to restart if land processor not computed  
    804803               IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' 
     
    814813               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    815814               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    816                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 
     815               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 
    817816               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    818817               l_1st_euler = .true. 
     
    821820               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    822821               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    823                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 
     822               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 
    824823               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    825824               l_1st_euler = .true. 
     
    846845               !                          ! ----------------------- ! 
    847846               IF( MIN( id3, id4 ) > 0 ) THEN  ! all required arrays exist 
    848                   CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lroxios ) 
    849                   CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lroxios ) 
     847                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 
     848                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 
    850849               ELSE                            ! one at least array is missing 
    851850                  tilde_e3t_b(:,:,:) = 0.0_wp 
     
    856855                  !                       ! ------------ ! 
    857856                  IF( id5 > 0 ) THEN  ! required array exists 
    858                      CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lroxios ) 
     857                     CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) ) 
    859858                  ELSE                ! array is missing 
    860859                     hdiv_lf(:,:,:) = 0.0_wp 
     
    862861               ENDIF 
    863862            ENDIF 
    864             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    865863            ! 
    866864         ELSE                                   !* Initialize at "rest" 
     
    931929         !                                   ! =================== 
    932930         IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 
    933          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    934931         !                                           ! --------- ! 
    935932         !                                           ! all cases ! 
    936933         !                                           ! --------- ! 
    937          CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lwxios ) 
    938          CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lwxios ) 
     934         CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) ) 
     935         CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) ) 
    939936         !                                           ! ----------------------- ! 
    940937         IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN  ! z_tilde and layer cases ! 
    941938            !                                        ! ----------------------- ! 
    942             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lwxios) 
    943             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lwxios) 
     939            CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:)) 
     940            CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:)) 
    944941         END IF 
    945942         !                                           ! -------------!     
    946943         IF( ln_vvl_ztilde ) THEN                    ! z_tilde case ! 
    947944            !                                        ! ------------ ! 
    948             CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lwxios) 
     945            CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:)) 
    949946         ENDIF 
    950947         ! 
    951          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    952948      ENDIF 
    953949      ! 
  • NEMO/branches/2020/test_12905_xios_restart/tests/ISOMIP+/EXPREF/namelist_cfg

    r13727 r13934  
    477477/ 
    478478!----------------------------------------------------------------------- 
    479 !----------------------------------------------------------------------- 
    480 / 
    481 !----------------------------------------------------------------------- 
    482479&namhsb        !  Heat and salt budgets                                 (default: OFF) 
    483480!----------------------------------------------------------------------- 
  • NEMO/branches/2020/test_12905_xios_restart/tests/ISOMIP/EXPREF/namelist_cfg

    r13727 r13934  
    437437/ 
    438438!----------------------------------------------------------------------- 
    439 !----------------------------------------------------------------------- 
    440 / 
    441 !----------------------------------------------------------------------- 
    442439&namhsb        !  Heat and salt budgets                                 (default: OFF) 
    443440!----------------------------------------------------------------------- 
  • NEMO/branches/2020/test_12905_xios_restart/tests/VORTEX/MY_SRC/domvvl.F90

    r13750 r13934  
    785785         IF( ln_rstart ) THEN                   !* Read the restart file 
    786786            CALL rst_read_open                  !  open the restart file if necessary 
    787             IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
    788             CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm), ldxios = lroxios    ) 
     787            CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm)    ) 
    789788            ! 
    790789            id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) 
     
    799798            ! 
    800799            IF( MIN( id1, id2 ) > 0 ) THEN       ! all required arrays exist 
    801                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 
    802                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 
     800               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 
     801               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 
    803802               ! needed to restart if land processor not computed  
    804803               IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' 
     
    814813               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    815814               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    816                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 
     815               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 
    817816               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    818817               l_1st_euler = .true. 
     
    821820               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    822821               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    823                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 
     822               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 
    824823               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    825824               l_1st_euler = .true. 
     
    846845               !                          ! ----------------------- ! 
    847846               IF( MIN( id3, id4 ) > 0 ) THEN  ! all required arrays exist 
    848                   CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lroxios ) 
    849                   CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lroxios ) 
     847                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 
     848                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 
    850849               ELSE                            ! one at least array is missing 
    851850                  tilde_e3t_b(:,:,:) = 0.0_wp 
     
    856855                  !                       ! ------------ ! 
    857856                  IF( id5 > 0 ) THEN  ! required array exists 
    858                      CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lroxios ) 
     857                     CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) ) 
    859858                  ELSE                ! array is missing 
    860859                     hdiv_lf(:,:,:) = 0.0_wp 
     
    862861               ENDIF 
    863862            ENDIF 
    864             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
    865863            ! 
    866864         ELSE                                   !* Initialize at "rest" 
     
    931929         !                                   ! =================== 
    932930         IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 
    933          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    934931         !                                           ! --------- ! 
    935932         !                                           ! all cases ! 
    936933         !                                           ! --------- ! 
    937          CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lwxios ) 
    938          CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lwxios ) 
     934         CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) ) 
     935         CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) ) 
    939936         !                                           ! ----------------------- ! 
    940937         IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN  ! z_tilde and layer cases ! 
    941938            !                                        ! ----------------------- ! 
    942             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lwxios) 
    943             CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lwxios) 
     939            CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:)) 
     940            CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:)) 
    944941         END IF 
    945942         !                                           ! -------------!     
    946943         IF( ln_vvl_ztilde ) THEN                    ! z_tilde case ! 
    947944            !                                        ! ------------ ! 
    948             CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lwxios) 
     945            CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:)) 
    949946         ENDIF 
    950947         ! 
    951          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    952948      ENDIF 
    953949      ! 
Note: See TracChangeset for help on using the changeset viewer.