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

Changeset 13871


Ignore:
Timestamp:
2020-11-25T12:51:29+01:00 (3 years ago)
Author:
andmirek
Message:

Ticket #2462: Addressing reviewr comments stage 1

Location:
NEMO/branches/2020/dev_12905_xios_restart
Files:
49 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_12905_xios_restart/src/ICE/ice.F90

    r13727 r13871  
    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/dev_12905_xios_restart/src/ICE/icedia.F90

    r13727 r13871  
    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            IF(lrxios) CALL iom_swap(cr_icerst_cxt) 
     224            CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lrxios ) 
    225225            IF(lwp) WRITE(numout,*) 
    226226            IF(lwp) WRITE(numout,*) 'ice_dia_rst read at time step = ', ziter 
    227227            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) 
     228            CALL iom_get( numrir, 'frc_voltop' , frc_voltop, ldxios = lrxios  ) 
     229            CALL iom_get( numrir, 'frc_volbot' , frc_volbot, ldxios = lrxios  ) 
     230            CALL iom_get( numrir, 'frc_temtop' , frc_temtop, ldxios = lrxios  ) 
     231            CALL iom_get( numrir, 'frc_tembot' , frc_tembot, ldxios = lrxios  ) 
     232            CALL iom_get( numrir, 'frc_sal'    , frc_sal,    ldxios = lrxios  ) 
     233            CALL iom_get( numrir, jpdom_auto, 'vol_loc_ini', vol_loc_ini, ldxios = lrxios ) 
     234            CALL iom_get( numrir, jpdom_auto, 'tem_loc_ini', tem_loc_ini, ldxios = lrxios ) 
     235            CALL iom_get( numrir, jpdom_auto, 'sal_loc_ini', sal_loc_ini, ldxios = lrxios ) 
     236            IF(lrxios) CALL iom_swap(cxios_context) 
    237237         ELSE 
    238238            IF(lwp) WRITE(numout,*) 
     
    263263         ! Write in numriw (if iter == nitrst) 
    264264         ! ------------------  
    265          IF( lwxios ) CALL iom_swap(      cwixios_context         ) 
     265         IF( lwxios ) CALL iom_swap(      cw_icerst_cxt         ) 
    266266         CALL iom_rstput( iter, nitrst, numriw, 'frc_voltop' , frc_voltop,  ldxios = lwxios ) 
    267267         CALL iom_rstput( iter, nitrst, numriw, 'frc_volbot' , frc_volbot,  ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icedyn_adv_pra.F90

    r13727 r13871  
    955955         ! 
    956956         IF( id1 > 0 ) THEN                     !**  Read the restart file  **! 
    957             IF(lrixios) CALL iom_swap(crixios_context) 
     957            IF(lrxios) CALL iom_swap(cr_icerst_cxt) 
    958958            ! 
    959959            !                                                        ! 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 ) 
     960            CALL iom_get( numrir, jpdom_auto, 'sxice' , sxice , psgn = -1._wp, ldxios = lrxios ) 
     961            CALL iom_get( numrir, jpdom_auto, 'syice' , syice , psgn = -1._wp, ldxios = lrxios ) 
     962            CALL iom_get( numrir, jpdom_auto, 'sxxice', sxxice, ldxios = lrxios ) 
     963            CALL iom_get( numrir, jpdom_auto, 'syyice', syyice, ldxios = lrxios ) 
     964            CALL iom_get( numrir, jpdom_auto, 'sxyice', sxyice, ldxios = lrxios ) 
    965965            !                                                        ! 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  ) 
     966            CALL iom_get( numrir, jpdom_auto, 'sxsn'  , sxsn  , psgn = -1._wp, ldxios = lrxios ) 
     967            CALL iom_get( numrir, jpdom_auto, 'sysn'  , sysn  , psgn = -1._wp, ldxios = lrxios ) 
     968            CALL iom_get( numrir, jpdom_auto, 'sxxsn' , sxxsn, ldxios = lrxios  ) 
     969            CALL iom_get( numrir, jpdom_auto, 'syysn' , syysn, ldxios = lrxios  ) 
     970            CALL iom_get( numrir, jpdom_auto, 'sxysn' , sxysn, ldxios = lrxios  ) 
    971971            !                                                        ! 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   ) 
     972            CALL iom_get( numrir, jpdom_auto, 'sxa'   , sxa   , psgn = -1._wp, ldxios = lrxios ) 
     973            CALL iom_get( numrir, jpdom_auto, 'sya'   , sya   , psgn = -1._wp, ldxios = lrxios ) 
     974            CALL iom_get( numrir, jpdom_auto, 'sxxa'  , sxxa, ldxios = lrxios   ) 
     975            CALL iom_get( numrir, jpdom_auto, 'syya'  , syya, ldxios = lrxios   ) 
     976            CALL iom_get( numrir, jpdom_auto, 'sxya'  , sxya, ldxios = lrxios   ) 
    977977            !                                                        ! 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 ) 
     978            CALL iom_get( numrir, jpdom_auto, 'sxsal' , sxsal , psgn = -1._wp, ldxios = lrxios ) 
     979            CALL iom_get( numrir, jpdom_auto, 'sysal' , sysal , psgn = -1._wp, ldxios = lrxios ) 
     980            CALL iom_get( numrir, jpdom_auto, 'sxxsal', sxxsal, ldxios = lrxios ) 
     981            CALL iom_get( numrir, jpdom_auto, 'syysal', syysal, ldxios = lrxios ) 
     982            CALL iom_get( numrir, jpdom_auto, 'sxysal', sxysal, ldxios = lrxios ) 
    983983            !                                                        ! 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 ) 
     984            CALL iom_get( numrir, jpdom_auto, 'sxage' , sxage , psgn = -1._wp, ldxios = lrxios ) 
     985            CALL iom_get( numrir, jpdom_auto, 'syage' , syage , psgn = -1._wp, ldxios = lrxios ) 
     986            CALL iom_get( numrir, jpdom_auto, 'sxxage', sxxage, ldxios = lrxios ) 
     987            CALL iom_get( numrir, jpdom_auto, 'syyage', syyage, ldxios = lrxios ) 
     988            CALL iom_get( numrir, jpdom_auto, 'sxyage', sxyage, ldxios = lrxios ) 
    989989            !                                                        ! snow layers heat content 
    990990            DO jk = 1, nlay_s 
    991991               WRITE(zchar1,'(I2.2)') jk 
    992992               znam = 'sxc0'//'_l'//zchar1   
    993                CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrixios )   ;   sxc0 (:,:,jk,:) = z3d(:,:,:) 
     993               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrxios )   ;   sxc0 (:,:,jk,:) = z3d(:,:,:) 
    994994               znam = 'syc0'//'_l'//zchar1   
    995                CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrixios )   ;   syc0 (:,:,jk,:) = z3d(:,:,:) 
     995               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrxios )   ;   syc0 (:,:,jk,:) = z3d(:,:,:) 
    996996               znam = 'sxxc0'//'_l'//zchar1  
    997                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   sxxc0(:,:,jk,:) = z3d(:,:,:) 
     997               CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios )   ;   sxxc0(:,:,jk,:) = z3d(:,:,:) 
    998998               znam = 'syyc0'//'_l'//zchar1  
    999                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   syyc0(:,:,jk,:) = z3d(:,:,:) 
     999               CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios )   ;   syyc0(:,:,jk,:) = z3d(:,:,:) 
    10001000               znam = 'sxyc0'//'_l'//zchar1  
    1001                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   sxyc0(:,:,jk,:) = z3d(:,:,:) 
     1001               CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios )   ;   sxyc0(:,:,jk,:) = z3d(:,:,:) 
    10021002            END DO 
    10031003            !                                                        ! ice layers heat content 
     
    10051005               WRITE(zchar1,'(I2.2)') jk 
    10061006               znam = 'sxe'//'_l'//zchar1    
    1007                CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrixios )   ;   sxe (:,:,jk,:) = z3d(:,:,:) 
     1007               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrxios )   ;   sxe (:,:,jk,:) = z3d(:,:,:) 
    10081008               znam = 'sye'//'_l'//zchar1    
    1009                CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrixios )   ;   sye (:,:,jk,:) = z3d(:,:,:) 
     1009               CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrxios )   ;   sye (:,:,jk,:) = z3d(:,:,:) 
    10101010               znam = 'sxxe'//'_l'//zchar1   
    1011                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   sxxe(:,:,jk,:) = z3d(:,:,:) 
     1011               CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios )   ;   sxxe(:,:,jk,:) = z3d(:,:,:) 
    10121012               znam = 'syye'//'_l'//zchar1   
    1013                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   syye(:,:,jk,:) = z3d(:,:,:) 
     1013               CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios )   ;   syye(:,:,jk,:) = z3d(:,:,:) 
    10141014               znam = 'sxye'//'_l'//zchar1   
    1015                CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrixios )   ;   sxye(:,:,jk,:) = z3d(:,:,:) 
     1015               CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios )   ;   sxye(:,:,jk,:) = z3d(:,:,:) 
    10161016            END DO 
    10171017            ! 
    10181018            IF( ln_pnd_LEV ) THEN                                    ! melt pond fraction 
    10191019               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 ) 
     1020                  CALL iom_get( numrir, jpdom_auto, 'sxap' , sxap , psgn = -1._wp, ldxios = lrxios ) 
     1021                  CALL iom_get( numrir, jpdom_auto, 'syap' , syap , psgn = -1._wp, ldxios = lrxios ) 
     1022                  CALL iom_get( numrir, jpdom_auto, 'sxxap', sxxap, ldxios = lrxios ) 
     1023                  CALL iom_get( numrir, jpdom_auto, 'syyap', syyap, ldxios = lrxios ) 
     1024                  CALL iom_get( numrir, jpdom_auto, 'sxyap', sxyap, ldxios = lrxios ) 
    10251025                  !                                                     ! 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 ) 
     1026                  CALL iom_get( numrir, jpdom_auto, 'sxvp' , sxvp , psgn = -1._wp, ldxios = lrxios ) 
     1027                  CALL iom_get( numrir, jpdom_auto, 'syvp' , syvp , psgn = -1._wp, ldxios = lrxios ) 
     1028                  CALL iom_get( numrir, jpdom_auto, 'sxxvp', sxxvp, ldxios = lrxios ) 
     1029                  CALL iom_get( numrir, jpdom_auto, 'syyvp', syyvp, ldxios = lrxios ) 
     1030                  CALL iom_get( numrir, jpdom_auto, 'sxyvp', sxyvp, ldxios = lrxios ) 
    10311031               ELSE 
    10321032                  sxap = 0._wp ;   syap = 0._wp    ;   sxxap = 0._wp    ;   syyap = 0._wp    ;   sxyap = 0._wp   ! melt pond fraction 
     
    10361036               IF ( ln_pnd_lids ) THEN                               ! melt pond lid volume 
    10371037                  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 ) 
     1038                     CALL iom_get( numrir, jpdom_auto, 'sxvl' , sxvl , psgn = -1._wp, ldxios = lrxios ) 
     1039                     CALL iom_get( numrir, jpdom_auto, 'syvl' , syvl , psgn = -1._wp, ldxios = lrxios ) 
     1040                     CALL iom_get( numrir, jpdom_auto, 'sxxvl', sxxvl, ldxios = lrxios ) 
     1041                     CALL iom_get( numrir, jpdom_auto, 'syyvl', syyvl, ldxios = lrxios ) 
     1042                     CALL iom_get( numrir, jpdom_auto, 'sxyvl', sxyvl, ldxios = lrxios ) 
    10431043                  ELSE 
    10441044                     sxvl = 0._wp; syvl = 0._wp    ;   sxxvl = 0._wp    ;   syyvl = 0._wp    ;   sxyvl = 0._wp   ! melt pond lid volume 
     
    10461046               ENDIF 
    10471047            ENDIF 
    1048             IF(lrixios) CALL iom_swap(cxios_context) 
     1048            IF(lrxios) CALL iom_swap(cxios_context) 
    10491049            ! 
    10501050         ELSE                                   !**  start rheology from rest  **! 
     
    10791079         ! 
    10801080         !                                                           ! ice thickness 
    1081          IF( lwxios ) CALL iom_swap(      cwixios_context         ) 
     1081         IF( lwxios ) CALL iom_swap(      cw_icerst_cxt         ) 
    10821082         CALL iom_rstput( iter, nitrst, numriw, 'sxice' , sxice,  ldxios = lwxios) 
    10831083         CALL iom_rstput( iter, nitrst, numriw, 'syice' , syice,  ldxios = lwxios) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icedyn_rhg_evp.F90

    r13727 r13871  
    10051005         IF( ln_rstart ) THEN                   !* Read the restart file 
    10061006            ! 
    1007             IF(lrixios) CALL iom_swap(crixios_context) 
     1007            IF(lrxios) CALL iom_swap(cr_icerst_cxt) 
    10081008            id1 = iom_varid( numrir, 'stress1_i' , ldstop = .FALSE. ) 
    10091009            id2 = iom_varid( numrir, 'stress2_i' , ldstop = .FALSE. ) 
     
    10111011            ! 
    10121012            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 ) 
     1013               CALL iom_get( numrir, jpdom_auto, 'stress1_i' , stress1_i , cd_type = 'T', ldxios = lrxios ) 
     1014               CALL iom_get( numrir, jpdom_auto, 'stress2_i' , stress2_i , cd_type = 'T', ldxios = lrxios ) 
     1015               CALL iom_get( numrir, jpdom_auto, 'stress12_i', stress12_i, cd_type = 'F', ldxios = lrxios ) 
    10161016            ELSE                                     ! start rheology from rest 
    10171017               IF(lwp) WRITE(numout,*) 
     
    10211021               stress12_i(:,:) = 0._wp 
    10221022            ENDIF 
    1023             IF(lrixios) CALL iom_swap(cxios_context) 
     1023            IF(lrxios) CALL iom_swap(cxios_context) 
    10241024         ELSE                                   !* Start from rest 
    10251025            IF(lwp) WRITE(numout,*) 
     
    10351035         iter = kt + nn_fsbc - 1             ! ice restarts are written at kt == nitrst - nn_fsbc + 1 
    10361036         ! 
    1037          IF( lwxios ) CALL iom_swap(      cwixios_context         ) 
     1037         IF( lwxios ) CALL iom_swap(      cw_icerst_cxt         ) 
    10381038         CALL iom_rstput( iter, nitrst, numriw, 'stress1_i' , stress1_i,  ldxios = lwxios ) 
    10391039         CALL iom_rstput( iter, nitrst, numriw, 'stress2_i' , stress2_i,  ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icerst.F90

    r13750 r13871  
    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. ) 
     97               CALL iom_init( cw_icerst_cxt, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE. ) 
    9898               CALL iom_swap(      cxios_context          ) 
    9999#else 
     
    138138      ! ------------------  
    139139      !                                                                        ! calendar control 
    140       IF( lwxios ) CALL iom_swap(      cwixios_context         ) 
     140      IF( lwxios ) CALL iom_swap(      cw_icerst_cxt         ) 
    141141      CALL iom_rstput( iter, nitrst, numriw, 'nn_fsbc', REAL( nn_fsbc, wp ), ldxios = lwxios )      ! time-step  
    142142      CALL iom_rstput( iter, nitrst, numriw, 'kt_ice' , REAL( iter   , wp ), ldxios = lwxios )      ! date 
     
    183183            CALL iom_close( numriw ) 
    184184         ELSE 
    185             CALL iom_context_finalize(      cwixios_context          ) 
     185            CALL iom_context_finalize(      cw_icerst_cxt          ) 
    186186         ENDIF 
    187187         lrst_ice = .FALSE. 
     
    217217      CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir ) 
    218218 
    219       lrixios = lrxios.AND.lxios_sini 
    220       IF( lrixios) THEN 
    221           crixios_context = 'si3_rst' 
     219      IF( lrxios) THEN 
     220          cr_icerst_cxt = 'si3_rst' 
    222221          IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SI3' 
    223222          IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     
    226225             clpname = TRIM(Agrif_CFixed())//"_"//cn_icerst_in    
    227226          ENDIF 
    228           CALL iom_init( crixios_context, fname = TRIM(cn_icerst_indir)//'/'//TRIM(clpname), & 
     227          CALL iom_init( cr_icerst_cxt, fname = TRIM(cn_icerst_indir)//'/'//TRIM(clpname), & 
    229228                                          idfp = iom_file(numrir)%nfid, ld_closedef = .TRUE. ) 
    230229      ENDIF 
     
    236235      IF( id0 > 0 ) THEN   ! == case of a normal restart == ! 
    237236         !                 ! ------------------------------ ! 
    238          IF(lrixios) CALL iom_swap(crixios_context)  
     237         IF(lrxios) CALL iom_swap(cr_icerst_cxt)  
    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, ldxios = lrxios ) 
     240         CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lrxios )     
    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  , ldxios = lrxios ) 
     256         CALL iom_get( numrir, jpdom_auto, 'v_s'  , v_s  , ldxios = lrxios ) 
     257         CALL iom_get( numrir, jpdom_auto, 'sv_i' , sv_i , ldxios = lrxios ) 
     258         CALL iom_get( numrir, jpdom_auto, 'a_i'  , a_i  , ldxios = lrxios ) 
     259         CALL iom_get( numrir, jpdom_auto, 't_su' , t_su , ldxios = lrxios ) 
     260         CALL iom_get( numrir, jpdom_auto, 'u_ice', u_ice, cd_type = 'U', psgn = -1._wp, ldxios = lrxios ) 
     261         CALL iom_get( numrir, jpdom_auto, 'v_ice', v_ice, cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
    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, ldxios = lrxios ) 
    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, ldxios = lrxios ) 
    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, ldxios = lrxios ) 
    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, ldxios = lrxios ) 
     289            CALL iom_get( numrir, jpdom_auto, 'v_ip' , v_ip, ldxios = lrxios ) 
    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, ldxios = lrxios) 
    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, ldxios = lrxios ) 
     309               CALL iom_get( numrir, jpdom_auto, 't1_ice' , t1_ice , ldxios = lrxios ) 
    311310            ELSE                                     ! start from rest 
    312311               IF(lwp) WRITE(numout,*) '   ==>>   previous run without conductivity output then set it to zero' 
     
    317316 
    318317         CALL iom_delay_rst( 'READ', 'ICE', numrir )   ! read only ice delayed global communication variables 
    319          IF(lrixios) CALL iom_swap(cxios_context) 
     318         IF(lrxios) CALL iom_swap(cxios_context) 
    320319         !                 ! ---------------------------------- ! 
    321320      ELSE                 ! == case of a simplified restart == ! 
  • NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icestp.F90

    r13727 r13871  
    293293      IF( ln_rstart )  THEN 
    294294          CALL iom_close( numrir )  ! close input ice restart file 
    295           IF(lrixios) CALL iom_context_finalize(      crixios_context         ) 
     295          IF(lrxios) CALL iom_context_finalize(      cr_icerst_cxt         ) 
    296296      ENDIF 
    297297      ! 
  • NEMO/branches/2020/dev_12905_xios_restart/src/ICE/iceupdate.F90

    r13727 r13871  
    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               IF(lrxios) CALL iom_swap(cr_icerst_cxt) 
     430               CALL iom_get( numrir, jpdom_auto, 'snwice_mass'  , snwice_mass  , ldxios = lrxios ) 
     431               CALL iom_get( numrir, jpdom_auto, 'snwice_mass_b', snwice_mass_b, ldxios = lrxios ) 
     432               IF(lrxios) CALL iom_swap(cxios_context) 
    433433            ELSE                                     ! start from rest 
    434434               IF(lwp) WRITE(numout,*) '   ==>>   previous run without snow-ice mass output then set it' 
     
    447447         iter = kt + nn_fsbc - 1             ! ice restarts are written at kt == nitrst - nn_fsbc + 1 
    448448         ! 
    449          IF( lwxios ) CALL iom_swap(      cwixios_context         ) 
     449         IF( lwxios ) CALL iom_swap(      cw_icerst_cxt         ) 
    450450         CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass'  , snwice_mass,   ldxios = lwxios ) 
    451451         CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass_b', snwice_mass_b, ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/DIA/diahsb.F90

    r13727 r13871  
    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            IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
     270            CALL iom_get( numror, 'frc_v', frc_v, ldxios = lrxios ) 
     271            CALL iom_get( numror, 'frc_t', frc_t, ldxios = lrxios ) 
     272            CALL iom_get( numror, 'frc_s', frc_s, ldxios = lrxios ) 
    273273            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 ) 
     274               CALL iom_get( numror, 'frc_wn_t', frc_wn_t, ldxios = lrxios ) 
     275               CALL iom_get( numror, 'frc_wn_s', frc_wn_s, ldxios = lrxios ) 
    276276            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 ) 
     277            CALL iom_get( numror, jpdom_auto, 'surf_ini'  , surf_ini  , ldxios = lrxios ) ! ice sheet coupling 
     278            CALL iom_get( numror, jpdom_auto, 'ssh_ini'   , ssh_ini   , ldxios = lrxios ) 
     279            CALL iom_get( numror, jpdom_auto, 'e3t_ini'   , e3t_ini   , ldxios = lrxios ) 
     280            CALL iom_get( numror, jpdom_auto, 'tmask_ini' , tmask_ini , ldxios = lrxios ) 
     281            CALL iom_get( numror, jpdom_auto, 'hc_loc_ini', hc_loc_ini, ldxios = lrxios ) 
     282            CALL iom_get( numror, jpdom_auto, 'sc_loc_ini', sc_loc_ini, ldxios = lrxios ) 
    283283            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 ) 
     284               CALL iom_get( numror, jpdom_auto, 'ssh_hc_loc_ini', ssh_hc_loc_ini, ldxios = lrxios ) 
     285               CALL iom_get( numror, jpdom_auto, 'ssh_sc_loc_ini', ssh_sc_loc_ini, ldxios = lrxios ) 
    286286            ENDIF 
    287             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     287            IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    288288         ELSE 
    289289            IF(lwp) WRITE(numout,*) 
     
    325325         IF(lwp) WRITE(numout,*) 
    326326         ! 
    327          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     327         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    328328         CALL iom_rstput( kt, nitrst, numrow, 'frc_v', frc_v, ldxios = lwxios ) 
    329329         CALL iom_rstput( kt, nitrst, numrow, 'frc_t', frc_t, ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/DOM/daymod.F90

    r13727 r13871  
    316316 
    317317      IF( TRIM(cdrw) == 'READ' ) THEN 
    318          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     318         IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    319319         IF( iom_varid( numror, 'kt', ldstop = .FALSE. ) > 0 ) THEN 
    320320            ! Get Calendar informations 
    321             CALL iom_get( numror, 'kt', zkt, ldxios = lroxios )   ! last time-step of previous run 
     321            CALL iom_get( numror, 'kt', zkt, ldxios = lrxios )   ! last time-step of previous run 
    322322            IF(lwp) THEN 
    323323               WRITE(numout,*) ' *** Info read in restart : ' 
     
    338338            IF ( nrstdt == 2 ) THEN 
    339339               ! read the parameters corresponding to nit000 - 1 (last time step of previous run) 
    340                CALL iom_get( numror, 'ndastp', zndastp, ldxios = lroxios ) 
     340               CALL iom_get( numror, 'ndastp', zndastp, ldxios = lrxios ) 
    341341               ndastp = NINT( zndastp ) 
    342                CALL iom_get( numror, 'adatrj', adatrj , ldxios = lroxios ) 
    343           CALL iom_get( numror, 'ntime' , ktime  , ldxios = lroxios ) 
     342               CALL iom_get( numror, 'adatrj', adatrj , ldxios = lrxios ) 
     343          CALL iom_get( numror, 'ntime' , ktime  , ldxios = lrxios ) 
    344344               nn_time0 = NINT(ktime) 
    345345               ! calculate start time in hours and minutes 
     
    384384            adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 
    385385         ENDIF 
    386          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     386         IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    387387         IF( ABS(adatrj  - REAL(NINT(adatrj),wp)) < 0.1 / rday )   adatrj = REAL(NINT(adatrj),wp)   ! avoid truncation error 
    388388         ! 
     
    403403         ENDIF 
    404404         ! calendar control 
    405          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     405         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    406406         CALL iom_rstput( kt, nitrst, numrow, 'kt'     , REAL( kt    , wp)  , ldxios = lwxios )   ! time-step 
    407407         CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp)  , ldxios = lwxios )   ! date 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/DOM/domvvl.F90

    r13727 r13871  
    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            IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
     788            CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm), ldxios = lrxios    ) 
    789789            ! 
    790790            id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) 
     
    799799            ! 
    800800            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 ) 
     801               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
     802               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
    803803               ! needed to restart if land processor not computed  
    804804               IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' 
     
    814814               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    815815               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    816                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 
     816               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
    817817               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    818818               l_1st_euler = .true. 
     
    821821               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    822822               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    823                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 
     823               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
    824824               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    825825               l_1st_euler = .true. 
     
    846846               !                          ! ----------------------- ! 
    847847               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 ) 
     848                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios ) 
     849                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios ) 
    850850               ELSE                            ! one at least array is missing 
    851851                  tilde_e3t_b(:,:,:) = 0.0_wp 
     
    856856                  !                       ! ------------ ! 
    857857                  IF( id5 > 0 ) THEN  ! required array exists 
    858                      CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lroxios ) 
     858                     CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios ) 
    859859                  ELSE                ! array is missing 
    860860                     hdiv_lf(:,:,:) = 0.0_wp 
     
    862862               ENDIF 
    863863            ENDIF 
    864             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     864            IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    865865            ! 
    866866         ELSE                                   !* Initialize at "rest" 
     
    930930         !                                   ! =================== 
    931931         IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 
    932          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     932         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    933933         !                                           ! --------- ! 
    934934         !                                           ! all cases ! 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/DYN/dynspg_ts.F90

    r13727 r13871  
    899899      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
    900900         !                                   ! --------------- 
    901          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     901         IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    902902         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 )  
     903            CALL iom_get( numror, jpdom_auto, 'ub2_b'  , ub2_b  (:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
     904            CALL iom_get( numror, jpdom_auto, 'vb2_b'  , vb2_b  (:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios )  
     905            CALL iom_get( numror, jpdom_auto, 'un_bf'  , un_bf  (:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
     906            CALL iom_get( numror, jpdom_auto, 'vn_bf'  , vn_bf  (:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios )  
    907907            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 ) 
     908               CALL iom_get( numror, jpdom_auto, 'sshbb_e'  , sshbb_e(:,:), cd_type = 'T', psgn =  1._wp, ldxios = lrxios )    
     909               CALL iom_get( numror, jpdom_auto, 'ubb_e'    ,   ubb_e(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
     910               CALL iom_get( numror, jpdom_auto, 'vbb_e'    ,   vbb_e(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
     911               CALL iom_get( numror, jpdom_auto, 'sshb_e'   ,  sshb_e(:,:), cd_type = 'T', psgn =  1._wp, ldxios = lrxios )  
     912               CALL iom_get( numror, jpdom_auto, 'ub_e'     ,    ub_e(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
     913               CALL iom_get( numror, jpdom_auto, 'vb_e'     ,    vb_e(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
    914914            ENDIF 
    915915#if defined key_agrif 
    916916            ! Read time integrated fluxes 
    917917            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 ) 
     918               CALL iom_get( numror, jpdom_auto, 'ub2_i_b'  , ub2_i_b(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
     919               CALL iom_get( numror, jpdom_auto, 'vb2_i_b'  , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
    920920            ELSE 
    921921               ub2_i_b(:,:) = 0._wp   ;   vb2_i_b(:,:) = 0._wp   ! used in the 1st update of agrif 
     
    932932#endif 
    933933         ENDIF 
    934          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     934         IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    935935         ! 
    936936      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
    937937         !                                   ! ------------------- 
    938938         IF(lwp) WRITE(numout,*) '---- ts_rst ----' 
    939          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     939         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    940940         CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:), ldxios = lwxios ) 
    941941         CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:), ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/IOM/in_out_manager.F90

    r13727 r13871  
    166166   LOGICAL       ::   lsp_area = .TRUE.     !: to make a control print over a specific area 
    167167   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 
     168   CHARACTER(LEN=lc) ::   cr_ocerst_cxt        !: context name used in xios to read OCE restart 
     169   CHARACTER(LEN=lc) ::   cw_ocerst_cxt        !: context name used in xios to write OCE restart file 
     170   CHARACTER(LEN=lc) ::   cr_icerst_cxt       !: context name used in xios to read SI3 restart 
     171   CHARACTER(LEN=lc) ::   cw_icerst_cxt       !: context name used in xios to write SI3 restart file 
     172   CHARACTER(LEN=lc) ::   cr_toprst_cxt       !: context name used in xios to read TOP restart 
     173   CHARACTER(LEN=lc) ::   cw_toprst_cxt       !: context name used in xios to write TOP restart file 
     174   CHARACTER(LEN=lc) ::   cr_sedrst_cxt       !: context name used in xios to read SEDIMENT restart 
     175   CHARACTER(LEN=lc) ::   cw_sedrst_cxt       !: context name used in xios to write SEDIMENT restart file 
    176176 
    177177 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/IOM/iom.F90

    r13750 r13871  
    141141      CALL iom_swap( cdname ) 
    142142 
    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)) 
     143      llrstr = (cdname == cr_ocerst_cxt) .OR. (cdname == cr_icerst_cxt) 
     144      llrstr = llrstr .OR. (cdname == cr_toprst_cxt) 
     145      llrstr = llrstr .OR. (cdname == cr_sedrst_cxt) 
     146 
     147      llrstw = (cdname == cw_ocerst_cxt) .OR. (cdname == cw_icerst_cxt) 
     148      llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 
     149      llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) 
    150150 
    151151      llrst_context = llrstr .OR. llrstw 
     
    168168      IF(.NOT.llrst_context) CALL set_scalar 
    169169      ! 
    170       IF( TRIM(cdname) == TRIM(cxios_context) ) THEN   
     170      IF( cdname == cxios_context ) THEN   
    171171         CALL set_grid( "T", glamt, gphit, .FALSE., .FALSE. )  
    172172         CALL set_grid( "U", glamu, gphiu, .FALSE., .FALSE. ) 
     
    212212      ! vertical grid definition 
    213213      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 ) 
     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 ) 
    218218 
    219219          ! 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) ) 
     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) ) 
    227227           
    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) /) ) 
     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) /) ) 
    249249# 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) /) ) 
     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) /) ) 
    253253# endif 
    254254#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) /) ) 
     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) /) ) 
    265265      ENDIF 
    266266      ! 
    267267      ! automatic definitions of some of the xml attributs 
    268268      IF(llrstr) THEN 
    269           IF(PRESENT(idfp)) THEN 
    270              CALL iom_set_rst_context(.TRUE.) 
     269         IF(PRESENT(idfp)) THEN 
     270            CALL iom_set_rst_context(.TRUE.) 
    271271!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 
     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 
    276276      ELSE IF(llrstw) THEN 
    277           CALL iom_set_rstw_file(fname) 
     277         CALL iom_set_rstw_file(fname) 
    278278      ELSE 
    279           CALL set_xmlatt 
     279         CALL set_xmlatt 
    280280      ENDIF 
    281281      ! 
     
    301301      !! 
    302302      !!---------------------------------------------------------------------- 
    303    CHARACTER(len=*), OPTIONAL, INTENT(IN) :: cdname 
     303      CHARACTER(len=*), OPTIONAL, INTENT(IN) :: cdname 
    304304#if defined key_iomput 
    305    LOGICAL :: llrstw 
     305      LOGICAL :: llrstw 
    306306 
    307307      llrstw = .FALSE. 
    308308      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)) 
     309         llrstw = (cdname == cw_ocerst_cxt) 
     310         llrstw = llrstw .OR. (cdname == cw_icerst_cxt) 
     311         llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 
     312         llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) 
    313313      ENDIF 
    314314 
    315315      IF( llrstw ) THEN 
    316316!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() 
     317         CALL iom_set_rst_context(.FALSE.) 
     318         CALL xios_close_context_definition() 
    319319      ELSE 
    320           CALL xios_close_context_definition() 
    321           CALL xios_update_calendar( 0 ) 
     320         CALL xios_close_context_definition() 
     321         CALL xios_update_calendar( 0 ) 
    322322      ENDIF 
    323323#else 
     
    335335      !!               id of the file is assumed to be rrestart. 
    336336      !!--------------------------------------------------------------------- 
    337  
    338    CHARACTER(len=*), INTENT(IN) :: cdfname 
    339    INTEGER         , INTENT(IN) :: idnum  
     337      CHARACTER(len=*), INTENT(IN) :: cdfname 
     338      INTEGER         , INTENT(IN) :: idnum  
    340339#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) 
     340      INTEGER                                    :: ndims, nvars, natts, unlimitedDimId, dimlen, xtype,mdims 
     341      TYPE(xios_field)                           :: field_hdl 
     342      TYPE(xios_file)                            :: file_hdl 
     343      TYPE(xios_filegroup)                       :: filegroup_hdl 
     344      INTEGER                                    :: dimids(4), jv,i, idim 
     345      CHARACTER(LEN=256)                         :: clinfo               ! info character 
     346      INTEGER, ALLOCATABLE                       :: indimlens(:) 
     347      CHARACTER(LEN=nf90_max_name), ALLOCATABLE  :: indimnames(:) 
     348      CHARACTER(LEN=nf90_max_name)               :: dimname, varname 
     349      LOGICAL                                    :: lmeta 
     350!metadata in restart file for restart read with XIOS 
     351      INTEGER, PARAMETER :: NMETA = 10 
     352      CHARACTER(LEN=lc)  :: meta(NMETA) 
     353 
     354 
     355      meta(1) = "nav_lat" 
     356      meta(2) = "nav_lon" 
     357      meta(3) = "nav_lev" 
     358      meta(4) = "time_instant" 
     359      meta(5) = "time_instant_bounds" 
     360      meta(6) = "time_counter" 
     361      meta(7) = "time_counter_bounds" 
     362      meta(8) = "x" 
     363      meta(9) = "y" 
     364      meta(10) = "numcat" 
     365 
     366      clinfo = '          iom_set_vars_active, file: '//TRIM(cdfname) 
    364367 
    365368!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 
     369      CALL xios_get_handle("file_definition", filegroup_hdl ) 
     370      CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart') 
     371      CALL xios_set_file_attr( "rrestart", name=trim(cdfname), type="one_file", & 
     372           par_access="collective", enabled=.TRUE., mode="read",                & 
     373                                                    output_freq=xios_timestep   ) 
     374 
     375      CALL iom_nf90_check( nf90_inquire(idnum, ndims, nvars, natts ), clinfo ) 
     376      ALLOCATE(indimlens(ndims), indimnames(ndims)) 
     377      CALL iom_nf90_check( nf90_inquire(idnum, unlimitedDimId = unlimitedDimId ), clinfo ) 
     378 
     379      DO idim = 1, ndims 
     380         CALL iom_nf90_check( nf90_inquire_dimension(idnum, idim, dimname, dimlen ), clinfo ) 
     381         indimlens(idim) = dimlen 
     382         indimnames(idim) = dimname 
     383      ENDDO 
     384 
     385      DO jv =1, nvars 
     386         lmeta = .FALSE. 
     387         CALL iom_nf90_check( nf90_inquire_variable(idnum, jv, varname, xtype, ndims, dimids, natts ), clinfo ) 
     388         DO i = 1, NMETA 
     389           IF(varname == meta(i)) THEN 
     390             lmeta = .TRUE. 
     391           ENDIF 
     392         ENDDO 
     393         IF(.NOT.lmeta) THEN 
     394            CALL xios_add_child(file_hdl, field_hdl, varname) 
     395            mdims = ndims 
     396 
     397            IF(ANY(dimids(1:ndims) == unlimitedDimId)) THEN 
     398               mdims = mdims - 1 
    415399            ENDIF 
    416         ENDDO 
    417         DEALLOCATE(indimlens, indimnames) 
     400 
     401            IF(mdims == 3) THEN 
     402               CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname,   & 
     403                                   domain_ref="grid_N",                           & 
     404                                   axis_ref=iom_axis(indimlens(dimids(mdims))),   & 
     405                                   prec = 8, operation = "instant"                ) 
     406            ELSEIF(mdims == 2) THEN 
     407               CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname,  & 
     408                                   domain_ref="grid_N", prec = 8,                & 
     409                                   operation = "instant"                         )  
     410            ELSEIF(mdims == 1) THEN 
     411               CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname, & 
     412                                   axis_ref=iom_axis(indimlens(dimids(mdims))), & 
     413                                   prec = 8, operation = "instant"              ) 
     414            ELSEIF(mdims == 0) THEN 
     415               CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname, & 
     416                                   scalar_ref = "grid_scalar", prec = 8,        & 
     417                                   operation = "instant"                        ) 
     418            ELSE 
     419               WRITE(ctmp1,*) 'iom_set_vars_active: variable ', TRIM(varname) ,' incorrect number of dimensions'  
     420               CALL ctl_stop( 'iom_set_vars_active:', ctmp1 ) 
     421            ENDIF 
     422         ENDIF 
     423      ENDDO 
     424      DEALLOCATE(indimlens, indimnames) 
    418425#endif 
    419426   END SUBROUTINE iom_set_vars_active 
     
    425432      !! ** Purpose :  define file name in XIOS context for writing restart 
    426433      !!--------------------------------------------------------------------- 
    427    CHARACTER(len=*) :: cdrst_file 
     434      CHARACTER(len=*) :: cdrst_file 
    428435#if defined key_iomput 
    429    TYPE(xios_file) :: file_hdl 
    430    TYPE(xios_filegroup) :: filegroup_hdl 
    431    INTEGER :: i 
    432    CHARACTER(lc)  ::   clpath 
     436      TYPE(xios_file) :: file_hdl 
     437      TYPE(xios_filegroup) :: filegroup_hdl 
    433438 
    434439!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)) 
     440      IF(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ',cdrst_file 
     441      CALL xios_get_handle("file_definition", filegroup_hdl ) 
     442      CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') 
     443      IF(nxioso.eq.1) THEN  
     444         CALL xios_set_file_attr( "wrestart", type="one_file", enabled=.TRUE.,&  
     445                                       mode="write", output_freq=xios_timestep)  
     446         IF(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in one_file mode'  
     447      ELSE   
     448         CALL xios_set_file_attr( "wrestart", type="multiple_file", enabled=.TRUE.,&  
     449                                            mode="write", output_freq=xios_timestep)  
     450         IF(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in multiple_file mode'  
     451      ENDIF  
     452      CALL xios_set_file_attr( "wrestart", name=trim(cdrst_file)) 
    448453#endif 
    449454   END SUBROUTINE iom_set_rstw_file 
     
    458463      !!--------------------------------------------------------------------- 
    459464!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 
     465      CHARACTER(len = *), INTENT(IN)                     :: sdfield 
     466      REAL(dp), OPTIONAL, INTENT(IN)                     :: rd0 
     467      REAL(sp), OPTIONAL, INTENT(IN)                     :: rs0 
     468      REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:)       :: rd1 
     469      REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:)       :: rs1 
     470      REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :)    :: rd2 
     471      REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :)    :: rs2 
     472      REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rd3   
     473      REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rs3 
    469474#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) 
     475      TYPE(xios_field) :: field_hdl 
     476      TYPE(xios_file) :: file_hdl 
     477 
     478      CALL xios_get_handle("wrestart", file_hdl) 
    478479!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 
     480      CALL xios_add_child(file_hdl, field_hdl, sdfield) 
     481 
     482      IF(PRESENT(rd3)) THEN 
     483         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     484                             domain_ref = "grid_N",                       & 
     485                             axis_ref = iom_axis(size(rd3, 3)),           & 
     486                             prec = 8, operation = "instant"              ) 
     487      ELSEIF(PRESENT(rs3)) THEN 
     488         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     489                             domain_ref = "grid_N",                       & 
     490                             axis_ref = iom_axis(size(rd3, 3)),           & 
     491                             prec = 4, operation = "instant"              ) 
     492      ELSEIF(PRESENT(rd2)) THEN 
     493         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     494                             domain_ref = "grid_N", prec = 8,             & 
     495                             operation = "instant"                        )  
     496      ELSEIF(PRESENT(rs2)) THEN 
     497         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     498                             domain_ref = "grid_N", prec = 4,             & 
     499                             operation = "instant"                        ) 
     500      ELSEIF(PRESENT(rd1)) THEN 
     501         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     502                             axis_ref = iom_axis(size(rd1, 1)),           & 
     503                             prec = 8, operation = "instant"              ) 
     504      ELSEIF(PRESENT(rs1)) THEN 
     505         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     506                             axis_ref = iom_axis(size(rd1, 1)),           & 
     507                             prec = 4, operation = "instant"              ) 
     508      ELSEIF(PRESENT(rd0)) THEN 
     509         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     510                             scalar_ref = "grid_scalar", prec = 8,        & 
     511                             operation = "instant"                        ) 
     512      ELSEIF(PRESENT(rs0)) THEN 
     513         CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 
     514                             scalar_ref = "grid_scalar", prec = 4,        & 
     515                             operation = "instant"                        ) 
     516      ENDIF 
    508517#endif 
    509518   END SUBROUTINE iom_set_rstw_active 
     
    518527      !!              iom_set_rst_context 
    519528      !!--------------------------------------------------------------------- 
    520     INTEGER, INTENT(IN) :: idlev 
    521     CHARACTER(len=lc)   :: axis_ref 
    522     CHARACTER(len=12)   :: str 
    523        IF(idlev == jpk) THEN 
     529      INTEGER, INTENT(IN) :: idlev 
     530      CHARACTER(len=lc)   :: axis_ref 
     531      CHARACTER(len=12)   :: str 
     532      IF(idlev == jpk) THEN 
    524533         axis_ref="nav_lev" 
    525534#if defined key_si3 
    526        ELSEIF(idlev == jpl) THEN 
     535      ELSEIF(idlev == jpl) THEN 
    527536         axis_ref="numcat" 
    528537#endif          
    529        ELSE 
     538      ELSE 
    530539         write(str, *) idlev 
    531540         CALL ctl_stop( 'iom_axis', 'Definition for axis with '//TRIM(ADJUSTL(str))//' levels missing') 
    532        ENDIF 
     541      ENDIF 
    533542   END FUNCTION iom_axis 
    534543 
     
    541550      !!                
    542551      !!--------------------------------------------------------------------- 
    543    LOGICAL, INTENT(IN)               :: ld_rstr 
    544    INTEGER :: ji 
     552      LOGICAL, INTENT(IN)               :: ld_rstr 
     553      INTEGER :: ji 
    545554#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)  
     555      TYPE(xios_domaingroup)            :: domaingroup_hdl  
     556      TYPE(xios_domain)                 :: domain_hdl  
     557      TYPE(xios_axisgroup)              :: axisgroup_hdl  
     558      TYPE(xios_axis)                   :: axis_hdl  
     559      TYPE(xios_scalar)                 :: scalar_hdl  
     560      TYPE(xios_scalargroup)            :: scalargroup_hdl  
     561 
     562      CALL xios_get_handle("domain_definition",domaingroup_hdl)  
     563      CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N")  
     564      CALL set_grid("N", glamt, gphit, .TRUE., ld_rstr)  
    556565  
    557      CALL xios_get_handle("axis_definition",axisgroup_hdl)  
    558      CALL xios_add_child(axisgroup_hdl, axis_hdl, "nav_lev")  
     566      CALL xios_get_handle("axis_definition",axisgroup_hdl)  
     567      CALL xios_add_child(axisgroup_hdl, axis_hdl, "nav_lev")  
    559568!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 )  
     569!     CALL xios_set_axis_attr( "nav_lev", long_name="Vertical levels",  unit="m", positive="down")  
     570      CALL xios_set_axis_attr( "nav_lev", long_name = "Vertical levels in meters", positive = "down") 
     571      CALL iom_set_axis_attr( "nav_lev", paxis = gdept_1d )  
    563572#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")  
     573      CALL xios_add_child(axisgroup_hdl, axis_hdl, "numcat") 
     574      CALL iom_set_axis_attr( "numcat", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
     575#endif 
     576      CALL xios_get_handle("scalar_definition", scalargroup_hdl)  
     577      CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar")  
    570578#endif 
    571579   END SUBROUTINE iom_set_rst_context 
     
    15261534#ifdef key_iomput 
    15271535      IF( kt == kwrite ) THEN 
    1528           IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
    1529           CALL iom_put(trim(cdvar), pvar) 
     1536         IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
     1537         CALL iom_put(trim(cdvar), pvar) 
    15301538      ELSE 
    1531           IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 
    1532           CALL iom_set_rstw_active( trim(cdvar), rs0 = pvar )  
     1539         IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 
     1540         CALL iom_set_rstw_active( trim(cdvar), rs0 = pvar )  
    15331541      ENDIF 
    15341542#endif 
     
    15591567#ifdef key_iomput 
    15601568      IF( kt == kwrite ) THEN 
    1561           IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
    1562           CALL iom_put(trim(cdvar), pvar) 
     1569         IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
     1570         CALL iom_put(trim(cdvar), pvar) 
    15631571      ELSE 
    1564           IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 
    1565           CALL iom_set_rstw_active( trim(cdvar), rd0 = pvar )  
     1572         IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 
     1573         CALL iom_set_rstw_active( trim(cdvar), rd0 = pvar )  
    15661574      ENDIF 
    15671575#endif 
     
    17291737         IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 
    17301738         CALL iom_put(trim(cdvar), pvar) 
    1731      ELSE 
     1739      ELSE 
    17321740         IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 
    17331741         CALL iom_set_rstw_active( trim(cdvar), rs3 = pvar ) 
     
    21352143      CALL iom_swap( cdname )   ! swap to cdname context 
    21362144      CALL xios_update_calendar(kt) 
    2137       IF( cdname /= TRIM(cxios_context) )   CALL iom_swap( TRIM(cxios_context) )   ! return back to nemo context 
     2145      IF( cdname /= TRIM(cxios_context) )   CALL iom_swap( cxios_context )   ! return back to nemo context 
    21382146   END SUBROUTINE iom_setkt 
    21392147 
     
    21492157         CALL iom_swap( cdname )   ! swap to cdname context 
    21502158         CALL xios_context_finalize() ! finalize the context 
    2151          IF( cdname /= TRIM(cxios_context) ) CALL iom_swap( TRIM(cxios_context) )   ! return back to nemo context 
     2159         IF( cdname /= cxios_context ) CALL iom_swap( cxios_context )   ! return back to nemo context 
    21522160      ENDIF 
    21532161      ! 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/IOM/iom_def.F90

    r13727 r13871  
    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/dev_12905_xios_restart/src/OCE/IOM/restart.F90

    r13750 r13871  
    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               CALL iom_init( cw_ocerst_cxt, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .false. ) 
    119119               CALL iom_swap(      cxios_context          ) 
    120120#else 
     
    142142      INTEGER, INTENT(in) ::   Kbb, Kmm   ! ocean time level indices 
    143143      !!---------------------------------------------------------------------- 
    144                      IF(lwxios) CALL iom_swap(      cwxios_context          ) 
     144                     IF(lwxios) CALL iom_swap(      cw_ocerst_cxt          ) 
    145145                     CALL iom_rstput( kt, nitrst, numrow, 'rdt'    , rn_Dt       , ldxios = lwxios)   ! dynamics time step 
    146146                     CALL iom_delay_rst( 'WRITE', 'OCE', numrow )   ! save only ocean delayed global communication variables 
     
    167167            CALL iom_close( numrow )     ! close the restart file (only at last time step) 
    168168         ELSE 
    169             CALL iom_context_finalize(      cwxios_context          ) 
     169            CALL iom_context_finalize(      cw_ocerst_cxt          ) 
    170170         ENDIF 
    171171!!gm         IF( .NOT. lk_trdmld )   lrst_oce = .FALSE. 
     
    209209! can handle checking if variable is in the restart file (there will be no need to open 
    210210! restart) 
    211          lroxios = lrxios.AND.lxios_sini 
    212  
    213          IF( lroxios) THEN 
    214              crxios_context = 'oce_rst' 
     211         lrxios = lrxios.AND.lxios_sini 
     212 
     213         IF( lrxios) THEN 
     214             cr_ocerst_cxt = 'oce_rst' 
    215215             IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS' 
    216216             IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     
    219219                clpname = TRIM(Agrif_CFixed())//"_"//cn_ocerst_in    
    220220             ENDIF 
    221              CALL iom_init( crxios_context, fname = TRIM(clpath)//TRIM(clpname), & 
     221             CALL iom_init( cr_ocerst_cxt, fname = TRIM(clpath)//TRIM(clpname), & 
    222222                              idfp = iom_file(numror)%nfid, ld_closedef = .TRUE. ) 
    223223         ENDIF 
     
    245245 
    246246      ! Check dynamics and tracer time-step consistency and force Euler restart if changed 
    247       IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     247      IF( lrxios ) CALL iom_swap( cr_ocerst_cxt ) 
    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, ldxios = lrxios ) 
    250250         IF( zrdt /= rn_Dt ) THEN 
    251251            IF(lwp) WRITE( numout,*) 
     
    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, ldxios = lrxios )  
    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, ldxios = lrxios )  
    268268         ts(:,:,1,jp_tem,Kmm) = w3d(:,:,1) 
    269269         RETURN  
     
    288288      CALL iom_get( numror, jpdom_auto, 'sshn'   ,ssh(:,:         ,Kmm), ldxios = lrxios ) 
    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, ldxios = lrxios )   ! 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) ) 
     294      IF( lrxios ) CALL iom_swap( cxios_context ) 
    295295      ! 
    296296      IF( l_1st_euler ) THEN                                  ! Euler restart  
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ISF/isfcpl.F90

    r13750 r13871  
    144144      END DO  
    145145      ! 
    146       IF( lwxios ) CALL iom_swap( cwxios_context ) 
     146      IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 
    147147      CALL iom_rstput( kt, nitrst, numrow, 'tmask'  , tmask , ldxios = lwxios ) 
    148148      CALL iom_rstput( kt, nitrst, numrow, 'ssmask' , ssmask, ldxios = lwxios ) 
     
    174174      !!---------------------------------------------------------------------- 
    175175      ! 
    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) ) 
     176      IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
     177      CALL iom_get( numror, jpdom_auto, 'ssmask'  , zssmask_b, ldxios = lrxios   ) ! need to extrapolate T/S 
     178      IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    179179 
    180180      ! compute new ssh if we open a full water column  
     
    257257      !!---------------------------------------------------------------------- 
    258258      !  
    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) ) 
     259      IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
     260      CALL iom_get( numror, jpdom_auto, 'tmask'  , ztmask_b, ldxios = lrxios   ) ! need to extrapolate T/S 
     261      !CALL iom_get( numror, jpdom_auto, 'wmask'  , zwmask_b, ldxios = lrxios   ) ! need to extrapolate T/S 
     262      !CALL iom_get( numror, jpdom_auto, 'gdepw_n', zdepw_b(:,:,:), ldxios = lrxios ) ! need to interpol vertical profile (vvl) 
     263      IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    264264      ! 
    265265      !  
     
    405405      !!---------------------------------------------------------------------- 
    406406      ! 
    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) ) 
     407      IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
     408      CALL iom_get( numror, jpdom_auto, 'tmask'  , ztmask_b, ldxios = lrxios ) 
     409      CALL iom_get( numror, jpdom_auto, 'e3u_n'  , ze3u_b  , ldxios = lrxios ) 
     410      CALL iom_get( numror, jpdom_auto, 'e3v_n'  , ze3v_b  , ldxios = lrxios ) 
     411      IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    412412      ! 
    413413      ! 1.0: compute horizontal volume flux divergence difference before-after coupling 
     
    517517 
    518518      ! 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) ) 
     519      IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
     520      CALL iom_get( numror, jpdom_auto, 'tmask'  , ztmask_b(:,:,:), ldxios = lrxios   ) ! need to extrapolate T/S 
     521      CALL iom_get( numror, jpdom_auto, 'e3t_n'  , ze3t_b(:,:,:)  , ldxios = lrxios ) 
     522      CALL iom_get( numror, jpdom_auto, 'tn'     , zt_b(:,:,:)    , ldxios = lrxios ) 
     523      CALL iom_get( numror, jpdom_auto, 'sn'     , zs_b(:,:,:)    , ldxios = lrxios ) 
     524      IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    525525 
    526526      ! compute run length 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ISF/isfrst.F90

    r13727 r13871  
    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         IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
     56         CALL iom_get( numror, jpdom_auto, cfwf_b, pfwf_b(:,:)        , ldxios = lrxios )   ! before ice shelf melt 
     57         CALL iom_get( numror, jpdom_auto, chc_b , ptsc_b (:,:,jp_tem), ldxios = lrxios )   ! before ice shelf heat flux 
     58         CALL iom_get( numror, jpdom_auto, csc_b , ptsc_b (:,:,jp_sal), ldxios = lrxios )   ! before ice shelf heat flux 
     59         IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    6060      ELSE 
    6161         pfwf_b(:,:)   = pfwf(:,:) 
     
    9191      ! 
    9292      ! write restart variable 
    93       IF( lwxios ) CALL iom_swap( cwxios_context ) 
     93      IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 
    9494      CALL iom_rstput( kt, nitrst, numrow, cfwf_b, pfwf(:,:)       , ldxios = lwxios ) 
    9595      CALL iom_rstput( kt, nitrst, numrow, chc_b , ptsc(:,:,jp_tem), ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/SBC/sbcapr.F90

    r13727 r13871  
    148148         !                                      ! ---------------------------------------- ! 
    149149         !                                            !* Restart: read in restart file 
    150          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     150         IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    151151         IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN  
    152152            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 
     153            CALL iom_get( numror, jpdom_auto, 'ssh_ibb', ssh_ibb, ldxios = lrxios )   ! before inv. barometer ssh 
    154154            ! 
    155155         ELSE                                         !* no restart: set from nit000 values 
     
    157157            ssh_ibb(:,:) = ssh_ib(:,:) 
    158158         ENDIF 
    159          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     159         IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    160160      ENDIF 
    161161      !                                         ! ---------------------------------------- ! 
     
    165165         IF(lwp) WRITE(numout,*) 'sbc_apr : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp 
    166166         IF(lwp) WRITE(numout,*) '~~~~' 
    167          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     167         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    168168         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib, ldxios = lwxios ) 
    169169         IF( lwxios ) CALL iom_swap(      cxios_context          ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/SBC/sbcmod.F90

    r13727 r13871  
    497497      IF( kt == nit000 ) THEN                          !   set the forcing field at nit000 - 1    ! 
    498498         !                                             ! ---------------------------------------- ! 
    499          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     499         IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    500500         IF( ln_rstart .AND.    &                               !* Restart: read in restart file 
    501501            & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN 
    502502            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) 
     503            CALL iom_get( numror, jpdom_auto, 'utau_b', utau_b, ldxios = lrxios )   ! before i-stress  (U-point) 
     504            CALL iom_get( numror, jpdom_auto, 'vtau_b', vtau_b, ldxios = lrxios )   ! before j-stress  (V-point) 
     505            CALL iom_get( numror, jpdom_auto,  'qns_b',  qns_b, ldxios = lrxios )   ! before non solar heat flux (T-point) 
    506506            ! 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) 
     507            ! CALL iom_get( numror, jpdom_auto, 'qsr_b' , qsr_b, ldxios = lrxios  ) ! before     solar heat flux (T-point) 
     508            CALL iom_get( numror, jpdom_auto, 'emp_b', emp_b, ldxios = lrxios  )    ! before     freshwater flux (T-point) 
    509509            ! To ensure restart capability with 3.3x/3.4 restart files    !! to be removed in v3.6 
    510510            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) 
     511               CALL iom_get( numror, jpdom_auto, 'sfx_b', sfx_b, ldxios = lrxios )  ! before salt flux (T-point) 
    512512            ELSE 
    513513               sfx_b (:,:) = sfx(:,:) 
     
    521521            sfx_b (:,:) = sfx (:,:) 
    522522         ENDIF 
    523          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     523         IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    524524      ENDIF 
    525525      !                                                ! ---------------------------------------- ! 
     
    530530            &                    'at it= ', kt,' date= ', ndastp 
    531531         IF(lwp) WRITE(numout,*) '~~~~' 
    532          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     532         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    533533         CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau, ldxios = lwxios ) 
    534534         CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau, ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/SBC/sbcrnf.F90

    r13727 r13871  
    157157      IF( kt == nit000 ) THEN                          !   set the forcing field at nit000 - 1    ! 
    158158         !                                             ! ---------------------------------------- ! 
    159          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     159         IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    160160         IF( ln_rstart .AND.    &                               !* Restart: read in restart file 
    161161            & 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 
     162            IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields red in the restart file', lrxios 
     163            CALL iom_get( numror, jpdom_auto, 'rnf_b', rnf_b, ldxios = lrxios )     ! before runoff 
     164            CALL iom_get( numror, jpdom_auto, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before heat content of runoff 
     165            CALL iom_get( numror, jpdom_auto, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salinity content of runoff 
    166166         ELSE                                                   !* no restart: set from nit000 values 
    167167            IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields set to nit000' 
     
    169169            rnf_tsc_b(:,:,:) = rnf_tsc(:,:,:) 
    170170         ENDIF 
    171          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     171         IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    172172      ENDIF 
    173173      !                                                ! ---------------------------------------- ! 
     
    178178            &                    'at it= ', kt,' date= ', ndastp 
    179179         IF(lwp) WRITE(numout,*) '~~~~' 
    180          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     180         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    181181         CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf, ldxios = lwxios ) 
    182182         CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem), ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/SBC/sbcssm.F90

    r13727 r13871  
    154154            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    155155            zf_sbc = REAL( nn_fsbc, wp ) 
    156             IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     156            IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    157157            CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc, ldxios = lwxios )    ! sbc frequency 
    158158            CALL iom_rstput( kt, nitrst, numrow, 'ssu_m'  , ssu_m, ldxios = lwxios  )    ! sea surface mean fields 
     
    206206         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~ ' 
    207207         ! 
    208          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     208         IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    209209         IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN 
    210210            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) 
     211            CALL iom_get( numror            , 'nn_fsbc', zf_sbc,ldxios = lrxios )     ! sbc frequency of previous run 
     212            CALL iom_get( numror, jpdom_auto, 'ssu_m'  , ssu_m, ldxios = lrxios, cd_type = 'U', psgn = -1._wp )    ! sea surface mean velocity    (U-point) 
     213            CALL iom_get( numror, jpdom_auto, 'ssv_m'  , ssv_m, ldxios = lrxios, cd_type = 'V', psgn = -1._wp )    !   "         "    velocity    (V-point) 
     214            CALL iom_get( numror, jpdom_auto, 'sst_m'  , sst_m, ldxios = lrxios )    !   "         "    temperature (T-point) 
     215            CALL iom_get( numror, jpdom_auto, 'sss_m'  , sss_m, ldxios = lrxios )    !   "         "    salinity    (T-point) 
     216            CALL iom_get( numror, jpdom_auto, 'ssh_m'  , ssh_m, ldxios = lrxios )    !   "         "    height      (T-point) 
     217            CALL iom_get( numror, jpdom_auto, 'e3t_m'  , e3t_m, ldxios = lrxios )    ! 1st level thickness          (T-point) 
    218218            ! fraction of solar net radiation absorbed in 1st T level 
    219219            IF( iom_varid( numror, 'frq_m', ldstop = .FALSE. ) > 0 ) THEN 
    220                CALL iom_get( numror, jpdom_auto, 'frq_m'  , frq_m, ldxios = lroxios  ) 
     220               CALL iom_get( numror, jpdom_auto, 'frq_m'  , frq_m, ldxios = lrxios  ) 
    221221            ELSE 
    222222               frq_m(:,:) = 1._wp   ! default definition 
     
    237237            ENDIF 
    238238         ENDIF 
    239          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     239         IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    240240      ENDIF 
    241241      ! 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/TRA/traqsr.F90

    r13727 r13871  
    135135      !                         !-----------------------------------! 
    136136      IF( kt == nit000 ) THEN          !==  1st time step  ==! 
    137          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     137         IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    138138         IF( ln_rstart .AND. iom_varid( numror, 'qsr_hc_b', ldstop = .FALSE. ) > 0  .AND. .NOT.l_1st_euler ) THEN    ! read in restart 
    139139            IF(lwp) WRITE(numout,*) '          nit000-1 qsr tracer content forcing field read in the restart file' 
    140140            z1_2 = 0.5_wp 
    141             CALL iom_get( numror, jpdom_auto, 'qsr_hc_b', qsr_hc_b, ldxios = lroxios )   ! before heat content trend due to Qsr flux 
     141            CALL iom_get( numror, jpdom_auto, 'qsr_hc_b', qsr_hc_b, ldxios = lrxios )   ! before heat content trend due to Qsr flux 
    142142         ELSE                                           ! No restart or restart not found: Euler forward time stepping 
    143143            z1_2 = 1._wp 
    144144            qsr_hc_b(:,:,:) = 0._wp 
    145145         ENDIF 
    146          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     146         IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    147147      ELSE                             !==  Swap of qsr heat content  ==! 
    148148         z1_2 = 0.5_wp 
     
    294294      ! 
    295295      IF( lrst_oce ) THEN     ! write in the ocean restart file 
    296          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     296         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    297297         CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b'   , qsr_hc     , ldxios = lwxios ) 
    298298         CALL iom_rstput( kt, nitrst, numrow, 'fraqsr_1lev', fraqsr_1lev, ldxios = lwxios )  
     
    432432      ! 
    433433      ! 1st ocean level attenuation coefficient (used in sbcssm) 
    434       IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     434      IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    435435      IF( iom_varid( numror, 'fraqsr_1lev', ldstop = .FALSE. ) > 0 ) THEN 
    436          CALL iom_get( numror, jpdom_auto, 'fraqsr_1lev'  , fraqsr_1lev, ldxios = lroxios  ) 
     436         CALL iom_get( numror, jpdom_auto, 'fraqsr_1lev'  , fraqsr_1lev, ldxios = lrxios  ) 
    437437      ELSE 
    438438         fraqsr_1lev(:,:) = 1._wp   ! default : no penetration 
    439439      ENDIF 
    440       IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     440      IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    441441      ! 
    442442   END SUBROUTINE tra_qsr_init 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/TRA/trasbc.F90

    r13727 r13871  
    107107      !                             !==  Set before sbc tracer content fields  ==! 
    108108      IF( kt == nit000 ) THEN             !* 1st time-step 
    109          IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     109         IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    110110         IF( ln_rstart .AND.    &               ! Restart: read in restart file 
    111111              & iom_varid( numror, 'sbc_hc_b', ldstop = .FALSE. ) > 0 ) THEN 
     
    113113            zfact = 0.5_wp 
    114114            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 
     115            CALL iom_get( numror, jpdom_auto, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before heat content sbc trend 
     116            CALL iom_get( numror, jpdom_auto, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salt content sbc trend 
    117117         ELSE                                   ! No restart or restart not found: Euler forward time stepping 
    118118            zfact = 1._wp 
     
    120120            sbc_tsc_b(:,:,:) = 0._wp 
    121121         ENDIF 
    122          IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     122         IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    123123      ELSE                                !* other time-steps: swap of forcing fields 
    124124         zfact = 0.5_wp 
     
    147147      !                   
    148148      IF( lrst_oce ) THEN           !==  write sbc_tsc in the ocean restart file  ==! 
    149          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     149         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    150150         CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem), ldxios = lwxios ) 
    151151         CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal), ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ZDF/zdfgls.F90

    r13727 r13871  
    10841084         !                                   ! --------------- 
    10851085         IF( ln_rstart ) THEN                   !* Read the restart file 
    1086             IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     1086            IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    10871087            id1 = iom_varid( numror, 'en'    , ldstop = .FALSE. ) 
    10881088            id2 = iom_varid( numror, 'avt_k' , ldstop = .FALSE. ) 
     
    10911091            ! 
    10921092            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 ) 
     1093               CALL iom_get( numror, jpdom_auto, 'en'    , en    , ldxios = lrxios ) 
     1094               CALL iom_get( numror, jpdom_auto, 'avt_k' , avt_k , ldxios = lrxios ) 
     1095               CALL iom_get( numror, jpdom_auto, 'avm_k' , avm_k , ldxios = lrxios ) 
     1096               CALL iom_get( numror, jpdom_auto, 'hmxl_n', hmxl_n, ldxios = lrxios ) 
    10971097            ELSE                         
    10981098               IF(lwp) WRITE(numout,*) 
     
    11021102               ! avt_k, avm_k already set to the background value in zdf_phy_init 
    11031103            ENDIF 
    1104             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     1104            IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    11051105         ELSE                                   !* Start from rest 
    11061106            IF(lwp) WRITE(numout,*) 
     
    11141114         !                                   ! ------------------- 
    11151115         IF(lwp) WRITE(numout,*) '---- gls-rst ----' 
    1116          IF( lwxios ) CALL iom_swap(      cwxios_context         ) 
     1116         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt         ) 
    11171117         CALL iom_rstput( kt, nitrst, numrow, 'en'    , en    , ldxios = lwxios ) 
    11181118         CALL iom_rstput( kt, nitrst, numrow, 'avt_k' , avt_k , ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ZDF/zdfosm.F90

    r13727 r13871  
    14671467     !!----------------------------------------------------------------------------- 
    14681468     IF( TRIM(cdrw) == 'READ'.AND. ln_rstart) THEN 
    1469         IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     1469        IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    14701470        id1 = iom_varid( numror, 'wn'   , ldstop = .FALSE. ) 
    14711471        IF( id1 > 0 ) THEN                       ! 'wn' exists; read 
    1472            CALL iom_get( numror, jpdom_auto, 'wn', ww, ldxios = lroxios ) 
     1472           CALL iom_get( numror, jpdom_auto, 'wn', ww, ldxios = lrxios ) 
    14731473           WRITE(numout,*) ' ===>>>> :  ww read from restart file' 
    14741474        ELSE 
     
    14791479        id2 = iom_varid( numror, 'hbli'   , ldstop = .FALSE. ) 
    14801480        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  ) 
     1481           CALL iom_get( numror, jpdom_auto, 'hbl' , hbl , ldxios = lrxios ) 
     1482           CALL iom_get( numror, jpdom_auto, 'hbli', hbli, ldxios = lrxios  ) 
    14831483           WRITE(numout,*) ' ===>>>> :  hbl & hbli read from restart file' 
    1484            IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     1484           IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    14851485           RETURN 
    14861486        ELSE                      ! 'hbl' & 'hbli' not in restart file, recalculate 
    14871487           WRITE(numout,*) ' ===>>>> : previous run without osmosis scheme, hbl computed from stratification' 
    14881488        END IF 
    1489         IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     1489        IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    14901490     END IF 
    14911491 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ZDF/zdfric.F90

    r13727 r13871  
    206206         !           !* Read the restart file 
    207207         IF( ln_rstart ) THEN 
    208             IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     208            IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    209209            id1 = iom_varid( numror, 'avt_k', ldstop = .FALSE. ) 
    210210            id2 = iom_varid( numror, 'avm_k', ldstop = .FALSE. ) 
    211211            ! 
    212212            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 ) 
     213               CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k, ldxios = lrxios ) 
     214               CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k, ldxios = lrxios ) 
    215215            ENDIF 
    216             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     216            IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    217217         ENDIF 
    218218         !           !* otherwise Kz already set to the background value in zdf_phy_init 
     
    221221         !                                   ! ------------------- 
    222222         IF(lwp) WRITE(numout,*) '---- ric-rst ----' 
    223          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     223         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    224224         CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k, ldxios = lwxios ) 
    225225         CALL iom_rstput( kt, nitrst, numrow, 'avm_k', avm_k, ldxios = lwxios) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ZDF/zdftke.F90

    r13727 r13871  
    746746         !                                   ! --------------- 
    747747         IF( ln_rstart ) THEN                   !* Read the restart file 
    748             IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 
     748            IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 
    749749            id1 = iom_varid( numror, 'en'   , ldstop = .FALSE. ) 
    750750            id2 = iom_varid( numror, 'avt_k', ldstop = .FALSE. ) 
     
    753753            ! 
    754754            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 ) 
     755               CALL iom_get( numror, jpdom_auto, 'en'   , en   , ldxios = lrxios ) 
     756               CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k, ldxios = lrxios ) 
     757               CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k, ldxios = lrxios ) 
     758               CALL iom_get( numror, jpdom_auto, 'dissl', dissl, ldxios = lrxios ) 
    759759            ELSE                                          ! start TKE from rest 
    760760               IF(lwp) WRITE(numout,*) 
     
    764764               ! avt_k, avm_k already set to the background value in zdf_phy_init 
    765765            ENDIF 
    766             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     766            IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 
    767767         ELSE                                   !* Start from rest 
    768768            IF(lwp) WRITE(numout,*) 
     
    776776         !                                   ! ------------------- 
    777777         IF(lwp) WRITE(numout,*) '---- tke_rst ----' 
    778          IF( lwxios ) CALL iom_swap(      cwxios_context          )  
     778         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          )  
    779779         CALL iom_rstput( kt, nitrst, numrow, 'en'   , en   , ldxios = lwxios ) 
    780780         CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k, ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/OCE/step.F90

    r13727 r13871  
    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/dev_12905_xios_restart/src/OCE/stpMLF.F90

    r13727 r13871  
    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/dev_12905_xios_restart/src/OFF/nemogcm.F90

    r13727 r13871  
    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/dev_12905_xios_restart/src/SAS/step.F90

    r13727 r13871  
    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 ) 
    164164         ENDIF 
    165165         lrst_oce = .FALSE. 
  • NEMO/branches/2020/dev_12905_xios_restart/src/SWE/domvvl.F90

    r13472 r13871  
    12511251         !                                   ! =================== 
    12521252         IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 
    1253          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     1253         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    12541254         !                                           ! --------- ! 
    12551255         !                                           ! all cases ! 
  • NEMO/branches/2020/dev_12905_xios_restart/src/SWE/step.F90

    r13458 r13871  
    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/dev_12905_xios_restart/src/SWE/stepLF.F90

    r13295 r13871  
    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/dev_12905_xios_restart/src/SWE/stpRK3.F90

    r13295 r13871  
    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/dev_12905_xios_restart/src/TOP/C14/trcini_c14.F90

    r13727 r13871  
    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        IF(lrxios) CALL iom_swap(cr_toprst_cxt) 
     71        CALL iom_get( numrtr, 'co2sbc', co2sbc, ldxios = lrxios )  
     72        CALL iom_get( numrtr, jpdom_auto, 'c14sbc', c14sbc, ldxios = lrxios )  
     73        CALL iom_get( numrtr, jpdom_auto, 'exch_co2', exch_co2, ldxios = lrxios )  
     74        CALL iom_get( numrtr, jpdom_auto, 'exch_c14', exch_c14, ldxios = lrxios )  
     75        CALL iom_get( numrtr, jpdom_auto, 'qtr_c14', qtr_c14, ldxios = lrxios ) 
     76        IF(lrxios) CALL iom_swap(cxios_context) 
    7777        ! 
    7878      END IF 
     
    8787      ELSE 
    8888        ! 
    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) 
     89        IF(lrxios) CALL iom_swap(cr_toprst_cxt) 
     90        CALL iom_get( numrtr, jpdom_auto, 'qint_c14', qint_c14, ldxios = lrxios )  
     91        IF(lrxios) CALL iom_swap(cxios_context) 
    9292        ! 
    9393      ENDIF 
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/C14/trcsms_c14.F90

    r13727 r13871  
    144144         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    145145         ! 
    146          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
     146         IF( lwxios ) CALL iom_swap(      cw_toprst_cxt         ) 
    147147         CALL iom_rstput( kt, nitrst, numrtw, 'co2sbc', co2sbc,     ldxios = lwxios ) ! These five need      & 
    148148         CALL iom_rstput( kt, nitrst, numrtw, 'c14sbc', c14sbc,     ldxios = lwxios ) ! &    to be written   & 
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/CFC/trcsms_cfc.F90

    r13727 r13871  
    179179         IF(lwp) WRITE(numout,*) '~~~~' 
    180180         jl = 0 
    181          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
     181         IF( lwxios ) CALL iom_swap(      cw_toprst_cxt         ) 
    182182         DO jn = jp_cfc0, jp_cfc1 
    183183             jl = jl + 1 
     
    298298         ! 
    299299         jl = 0 
    300          IF(lrtxios) CALL iom_swap(crtxios_context) 
     300         IF(lrxios) CALL iom_swap(cr_toprst_cxt) 
    301301         DO jn = jp_cfc0, jp_cfc1 
    302302            jl = jl + 1 
    303             CALL iom_get( numrtr, jpdom_auto, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl), ldxios = lrtxios )  
     303            CALL iom_get( numrtr, jpdom_auto, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl), ldxios = lrxios )  
    304304         END DO 
    305          IF(lrtxios) CALL iom_swap(cxios_context) 
     305         IF(lrxios) CALL iom_swap(cxios_context) 
    306306      ENDIF 
    307307      IF(lwp) WRITE(numout,*) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/P2Z/p2zexp.F90

    r13727 r13871  
    134134            &                    'at it= ', kt,' date= ', ndastp 
    135135         IF(lwp) WRITE(numout,*) '~~~~' 
    136          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
     136         IF( lwxios ) CALL iom_swap(      cw_toprst_cxt         ) 
    137137         CALL iom_rstput( kt, nitrst, numrtw, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:), ldxios = lwxios ) 
    138138         CALL iom_rstput( kt, nitrst, numrtw, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:), ldxios = lwxios ) 
     
    216216      ! 
    217217      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) 
     218         IF(lrxios) CALL iom_swap(cr_toprst_cxt) 
     219         CALL iom_get( numrtr, jpdom_auto, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:), ldxios = lrxios ) 
     220         CALL iom_get( numrtr, jpdom_auto, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:), ldxios = lrxios ) 
     221         IF(lrxios) CALL iom_swap(cxios_context) 
    222222      ELSE 
    223223         sedpocb(:,:) = 0._wp 
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/P4Z/p4zsms.F90

    r13727 r13871  
    332332         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    333333         !  
    334          IF(lrtxios) CALL iom_swap(crtxios_context) 
     334         IF(lrxios) CALL iom_swap(cr_toprst_cxt) 
    335335         IF( iom_varid( numrtr, 'PH', ldstop = .FALSE. ) > 0 ) THEN 
    336             CALL iom_get( numrtr, jpdom_auto, 'PH' , hi(:,:,:), ldxios = lrtxios  ) 
     336            CALL iom_get( numrtr, jpdom_auto, 'PH' , hi(:,:,:), ldxios = lrxios  ) 
    337337         ELSE 
    338338            CALL p4z_che( Kbb, Kmm )                  ! initialize the chemical constants 
    339339            CALL ahini_for_at( hi, Kbb ) 
    340340         ENDIF 
    341          CALL iom_get( numrtr, jpdom_auto, 'Silicalim', xksi(:,:), ldxios = lrtxios ) 
     341         CALL iom_get( numrtr, jpdom_auto, 'Silicalim', xksi(:,:), ldxios = lrxios ) 
    342342         IF( iom_varid( numrtr, 'Silicamax', ldstop = .FALSE. ) > 0 ) THEN 
    343             CALL iom_get( numrtr, jpdom_auto, 'Silicamax' , xksimax(:,:), ldxios = lrtxios  ) 
     343            CALL iom_get( numrtr, jpdom_auto, 'Silicamax' , xksimax(:,:), ldxios = lrxios  ) 
    344344         ELSE 
    345345            xksimax(:,:) = xksi(:,:) 
     
    347347         ! 
    348348         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  ) 
     349            CALL iom_get( numrtr, 'tcflxcum' , t_oce_co2_flx_cum, ldxios = lrxios  ) 
    350350         ELSE 
    351351            t_oce_co2_flx_cum = 0._wp 
     
    354354         IF( ln_p5z ) THEN 
    355355            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  ) 
     356               CALL iom_get( numrtr, jpdom_auto, 'sizep' , sizep(:,:,:), ldxios = lrxios  ) 
     357               CALL iom_get( numrtr, jpdom_auto, 'sizen' , sizen(:,:,:), ldxios = lrxios  ) 
     358               CALL iom_get( numrtr, jpdom_auto, 'sized' , sized(:,:,:), ldxios = lrxios  ) 
    359359            ELSE 
    360360               sizep(:,:,:) = 1. 
     
    363363            ENDIF 
    364364        ENDIF 
    365         IF(lrtxios) CALL iom_swap(cxios_context) 
     365        IF(lrxios) CALL iom_swap(cxios_context) 
    366366        ! 
    367367      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN 
     
    371371            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    372372         ENDIF 
    373          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
     373         IF( lwxios ) CALL iom_swap(      cw_toprst_cxt         ) 
    374374         CALL iom_rstput( kt, nitrst, numrtw, 'PH', hi(:,:,:),               ldxios = lwxios ) 
    375375         CALL iom_rstput( kt, nitrst, numrtw, 'Silicalim', xksi(:,:),        ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sed.F90

    r12969 r13871  
    5353   INTEGER             , PUBLIC   ::  nn_rstsed      !: control of the time step ( 0 or 1 ) for pass. tr. 
    5454   INTEGER , PUBLIC               ::  nn_dtsed = 1   !: frequency of step on passive tracers 
    55    LOGICAL,  PUBLIC               ::  lrsxios        !: use xios to read restart 
    5655   CHARACTER(len = 80) , PUBLIC   ::  cn_sedrst_in   !: suffix of pass. tracer restart name (input) 
    5756   CHARACTER(len = 256), PUBLIC   ::  cn_sedrst_indir  !: restart input directory 
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sedrst.F90

    r13750 r13871  
    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. ) 
     93            CALL iom_init( cw_sedrst_cxt, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE. ) 
    9494            CALL iom_swap(      cxios_context          ) 
    9595#else 
     
    138138      zdta2 = 0. 
    139139 
    140       IF(lrsxios) CALL iom_swap(crsxios_context) 
     140      IF(lrxios) CALL iom_swap(cr_sedrst_cxt) 
    141141      DO jn = 1, jptrased 
    142142         cltra = TRIM(sedtrcd(jn)) 
    143143         IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    144             CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta(:,:,:,jn), ldxios = lrsxios ) 
     144            CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta(:,:,:,jn), ldxios = lrxios ) 
    145145         ELSE 
    146146            zdta(:,:,:,jn) = 0.0 
     
    161161         cltra = TRIM(seddia3d(jn)) 
    162162         IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    163             CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta1(:,:,:,jn), ldxios = lrsxios ) 
     163            CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta1(:,:,:,jn), ldxios = lrxios ) 
    164164         ELSE 
    165165            zdta1(:,:,:,jn) = 0.0 
     
    188188      cltra = "dbioturb" 
    189189      IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    190          CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 
     190         CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:), ldxios = lrxios ) 
    191191      ELSE 
    192192         zdta2(:,:,:) = 0.0 
     
    198198      cltra = "irrig" 
    199199      IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    200          CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 
     200         CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:), ldxios = lrxios ) 
    201201      ELSE 
    202202         zdta2(:,:,:) = 0.0 
     
    208208      cltra = "sedligand" 
    209209      IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 
    210          CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 
     210         CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:), ldxios = lrxios ) 
    211211      ELSE 
    212212         zdta2(:,:,:) = 0.0 
     
    215215      CALL pack_arr( jpoce, sedligand(1:jpoce,1:jpksed), & 
    216216         &             zdta2(1:jpi,1:jpj,1:jpksed), iarroce(1:jpoce) ) 
    217       IF(lrsxios) CALL iom_swap(cxios_context) 
     217      IF(lrxios) CALL iom_swap(cxios_context) 
    218218      IF( ln_timing )  CALL timing_stop('sed_rst_read') 
    219219      
     
    259259      !! 1. WRITE in nutwrs 
    260260      !! ------------------ 
    261       IF( lwxios ) CALL iom_swap(      cwsxios_context         ) 
     261      IF( lwxios ) CALL iom_swap(      cw_sedrst_cxt         ) 
    262262!     zinfo(1) = REAL( kt) 
    263263      CALL iom_rstput( kt, nitrst, numrsw, 'kt', REAL( kt    , wp), ldxios = lwxios ) 
     
    322322             CALL iom_close( numrsw )     ! close the restart file (only at last time step) 
    323323          ELSE 
    324              CALL iom_context_finalize( cwsxios_context )  
     324             CALL iom_context_finalize( cw_sedrst_cxt )  
    325325          ENDIF 
    326326          IF( l_offline .AND. ln_rst_list ) THEN 
     
    381381            CALL iom_open( TRIM(cn_sedrst_indir)//'/'//cn_sedrst_in, numrsr ) 
    382382 
    383             lrsxios = lrxios.AND.lxios_sini 
    384             IF( lrsxios) THEN 
    385                 crsxios_context = 'sed_rst' 
     383            IF( lrxios) THEN 
     384                cr_sedrst_cxt = 'sed_rst' 
    386385                IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SED' 
    387386                IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     
    390389                   clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in    
    391390                ENDIF 
    392                 CALL iom_init( crsxios_context, fname = TRIM(cn_sedrst_indir)//'/'//TRIM(clpname), & 
     391                CALL iom_init( cr_sedrst_cxt, fname = TRIM(cn_sedrst_indir)//'/'//TRIM(clpname), & 
    393392                                                idfp = iom_file(numrsr)%nfid, ld_closedef = .TRUE. ) 
    394393            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) 
     394            IF(lrxios) CALL iom_swap(cr_sedrst_cxt) 
     395            CALL iom_get ( numrsr, 'kt', zkt, ldxios = lrxios )   ! last time-step of previous run 
     396            IF(lrxios) CALL iom_swap(cxios_context) 
    398397            IF(lwp) THEN 
    399398               WRITE(numsed,*) ' *** Info read in restart : ' 
     
    416415            !                                          ! set the date in offline mode 
    417416            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 ) 
     417               IF(lrxios) CALL iom_swap(cr_sedrst_cxt) 
     418               CALL iom_get( numrsr, 'ndastp', zndastp, ldxios = lrxios ) 
    420419               ndastp = NINT( zndastp ) 
    421                CALL iom_get( numrsr, 'adatrj', adatrj, ldxios = lrsxios  ) 
    422                IF(lrsxios) CALL iom_swap(crxios_context) 
     420               CALL iom_get( numrsr, 'adatrj', adatrj, ldxios = lrxios  ) 
     421               IF(lrxios) CALL iom_swap(cr_ocerst_cxt) 
    423422             ELSE 
    424423               ndastp = ndate0 - 1     ! ndate0 read in the namelist in dom_nam 
     
    444443            IF(lwp) WRITE(numsed,*) 'trc_wri : write the TOP restart file (NetCDF) at it= ', kt, ' date= ', ndastp 
    445444            IF(lwp) WRITE(numsed,*) '~~~~~~~' 
    446             IF( lwxios ) CALL iom_init_closedef(cwsxios_context) 
    447          ENDIF 
    448          IF( lwxios ) CALL iom_swap(      cwsxios_context         ) 
     445            IF( lwxios ) CALL iom_init_closedef(cw_sedrst_cxt) 
     446         ENDIF 
     447         IF( lwxios ) CALL iom_swap(      cw_sedrst_cxt         ) 
    449448         CALL iom_rstput( kt, nitrst, numrsw, 'kt'     , REAL( kt    , wp), ldxios = lwxios )   ! time-step 
    450449         CALL iom_rstput( kt, nitrst, numrsw, 'ndastp' , REAL( ndastp, wp), ldxios = lwxios )   ! date 
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sedstp.F90

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

    r13727 r13871  
    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) 
     89            IF(lrxios) CALL iom_swap(cr_toprst_cxt) 
    9090            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 
     91               CALL iom_get( numrtr, jpdom_auto, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc_b(:,:,jn), ldxios = lrxios )   ! before tracer content sbc 
    9292            END DO 
    93             IF(lrtxios) CALL iom_swap(cxios_context) 
     93            IF(lrxios) CALL iom_swap(cxios_context) 
    9494         ELSE                                         ! No restart or restart not found: Euler forward time stepping 
    9595           zfact = 1._wp 
     
    183183            &                    'at it= ', kt,' date= ', ndastp 
    184184         IF(lwp) WRITE(numout,*) '~~~~' 
    185          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
     185         IF( lwxios ) CALL iom_swap(      cw_toprst_cxt         ) 
    186186         DO jn = 1, jptra 
    187187            CALL iom_rstput( kt, nitrst, numrtw, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc(:,:,jn), ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/trc.F90

    r13727 r13871  
    6969   INTEGER             , PUBLIC ::   nittrc000          !: first time step of passive tracers model 
    7070   LOGICAL             , PUBLIC ::   l_trcdm2dc         !: Diurnal cycle for TOP 
    71    LOGICAL             , PUBLIC ::   lrtxios            !: read TOP restart with XIOS 
    7271 
    7372   !! Information for the ice module for tracers 
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/trcrst.F90

    r13750 r13871  
    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. ) 
     104            CALL iom_init( cw_toprst_cxt, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE. ) 
    105105            CALL iom_swap(      cxios_context          ) 
    106106#else 
     
    130130 
    131131      ! READ prognostic variables and computes diagnostic variable 
    132       IF(lrtxios) CALL iom_swap(crtxios_context) 
     132      IF(lrxios) CALL iom_swap(cr_toprst_cxt) 
    133133      DO jn = 1, jptra 
    134          CALL iom_get( numrtr, jpdom_auto, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm), ldxios = lrtxios ) 
     134         CALL iom_get( numrtr, jpdom_auto, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm), ldxios = lrxios ) 
    135135      END DO 
    136136 
    137137      DO jn = 1, jptra 
    138          CALL iom_get( numrtr, jpdom_auto, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb), ldxios = lrtxios ) 
     138         CALL iom_get( numrtr, jpdom_auto, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb), ldxios = lrxios ) 
    139139      END DO 
    140140      ! 
    141141      CALL iom_delay_rst( 'READ', 'TOP', numrtr )   ! read only TOP delayed global communication variables 
    142       IF(lrtxios) CALL iom_swap(cxios_context)  
     142      IF(lrxios) CALL iom_swap(cxios_context)  
    143143   END SUBROUTINE trc_rst_read 
    144144 
     
    155155      !!---------------------------------------------------------------------- 
    156156      ! 
    157       IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
     157      IF( lwxios ) CALL iom_swap(      cw_toprst_cxt         ) 
    158158      CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rn_Dt, ldxios = lwxios )   ! passive tracer time step (= ocean time step) 
    159159      ! prognostic variables  
     
    173173          CALL trc_rst_stat( Kmm, Krhs )             ! statistics 
    174174          IF(lwxios) THEN 
    175              CALL iom_context_finalize(      cwtxios_context          ) 
     175             CALL iom_context_finalize(      cw_toprst_cxt          ) 
    176176          ELSE 
    177177             CALL iom_close( numrtw )     ! close the restart file (only at last time step) 
     
    234234            lxios_sini = .FALSE. 
    235235            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' 
     236            IF( lrxios) THEN 
     237                cr_toprst_cxt = 'top_rst' 
    239238                IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for TOP' 
    240239                IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     
    243242                   clpname = TRIM(Agrif_CFixed())//"_"//cn_trcrst_in    
    244243                ENDIF 
    245                 CALL iom_init( crtxios_context, fname = TRIM(cn_trcrst_indir)//'/'//TRIM(clpname), & 
     244                CALL iom_init( cr_toprst_cxt, fname = TRIM(cn_trcrst_indir)//'/'//TRIM(clpname), & 
    246245                                          idfp = iom_file(numrtr)%nfid, ld_closedef = .TRUE. ) 
    247246            ENDIF 
    248247 
    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) 
     248            IF(lrxios) CALL iom_swap(cr_toprst_cxt) 
     249            CALL iom_get ( numrtr, 'kt', zkt, ldxios = lrxios )   ! last time-step of previous run 
     250            IF(lrxios) CALL iom_swap(cxios_context) 
    252251 
    253252            IF(lwp) THEN 
     
    271270            !                                          ! set the date in offline mode 
    272271            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 ) 
     272               IF(lrxios) CALL iom_swap(cr_toprst_cxt) 
     273               CALL iom_get( numrtr, 'ndastp', zndastp, ldxios = lrxios ) 
    275274               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) 
     275               CALL iom_get( numrtr, 'adatrj', adatrj, ldxios = lrxios  ) 
     276               CALL iom_get( numrtr, 'ntime' , ktime, ldxios = lrxios   ) 
     277               IF(lrxios) CALL iom_swap(cxios_context) 
    279278               nn_time0=INT(ktime) 
    280279               ! calculate start time in hours and minutes 
     
    336335            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    337336         ENDIF 
    338          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
     337         IF( lwxios ) CALL iom_swap(      cw_toprst_cxt         ) 
    339338         CALL iom_rstput( kt, nitrst, numrtw, 'kt'     , REAL( kt    , wp)  , ldxios = lwxios )   ! time-step 
    340339         CALL iom_rstput( kt, nitrst, numrtw, 'ndastp' , REAL( ndastp, wp)  , ldxios = lwxios )   ! date 
  • NEMO/branches/2020/dev_12905_xios_restart/src/TOP/trcstp.F90

    r13727 r13871  
    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            IF(lrxios) CALL iom_swap(cr_toprst_cxt) 
     200            CALL iom_get( numrtr, 'ktdcy', zkt, ldxios = lrxios )   
    201201            rsecfst = INT( zkt ) * rn_Dt 
    202202            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 
     203            CALL iom_get( numrtr, jpdom_auto, 'qsr_mean', qsr_mean, ldxios = lrxios )   !  A mean of qsr 
     204            CALL iom_get( numrtr, 'nrdcy', zrec, ldxios = lrxios )   !  Number of record per days 
    205205            IF( INT( zrec ) == nb_rec_per_day ) THEN 
    206206               DO jn = 1, nb_rec_per_day  
    207207                  IF( jn <= 9 )  THEN 
    208208                    WRITE(cl1,'(i1)') jn 
    209                     CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl1, qsr_arr(:,:,jn), ldxios = lrtxios )   !  A mean of qsr 
     209                    CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl1, qsr_arr(:,:,jn), ldxios = lrxios )   !  A mean of qsr 
    210210                  ELSE 
    211211                    WRITE(cl2,'(i2.2)') jn 
    212                     CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl2, qsr_arr(:,:,jn), ldxios = lrtxios )   !  A mean of qsr 
     212                    CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl2, qsr_arr(:,:,jn), ldxios = lrxios )   !  A mean of qsr 
    213213                  ENDIF 
    214214              END DO 
     
    218218               ENDDO 
    219219            ENDIF 
    220             IF(lrtxios) CALL iom_swap(cxios_context) 
     220            IF(lrxios) CALL iom_swap(cxios_context) 
    221221         ELSE                                         !* no restart: set from nit000 values 
    222222            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean set to nit000 values' 
     
    252252         zkt  = REAL( ktdcy, wp ) 
    253253         zrec = REAL( nb_rec_per_day, wp ) 
    254          IF( lwxios ) CALL iom_swap(      cwtxios_context         ) 
     254         IF( lwxios ) CALL iom_swap(      cw_toprst_cxt         ) 
    255255         CALL iom_rstput( kt, nitrst, numrtw, 'ktdcy', zkt, ldxios = lwxios  ) 
    256256         CALL iom_rstput( kt, nitrst, numrtw, 'nrdcy', zrec, ldxios = lwxios ) 
  • NEMO/branches/2020/dev_12905_xios_restart/tests/CANAL/MY_SRC/domvvl.F90

    r13727 r13871  
    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            IF( lrxios ) CALL iom_swap( cr_ocerst_cxt ) 
     788            CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm), ldxios = lrxios    ) 
    789789            ! 
    790790            id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) 
     
    799799            ! 
    800800            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 ) 
     801               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
     802               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
    803803               ! needed to restart if land processor not computed  
    804804               IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' 
     
    814814               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    815815               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    816                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 
     816               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
    817817               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    818818               l_1st_euler = .true. 
     
    821821               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    822822               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    823                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 
     823               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
    824824               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    825825               l_1st_euler = .true. 
     
    846846               !                          ! ----------------------- ! 
    847847               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 ) 
     848                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios ) 
     849                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios ) 
    850850               ELSE                            ! one at least array is missing 
    851851                  tilde_e3t_b(:,:,:) = 0.0_wp 
     
    856856                  !                       ! ------------ ! 
    857857                  IF( id5 > 0 ) THEN  ! required array exists 
    858                      CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lroxios ) 
     858                     CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios ) 
    859859                  ELSE                ! array is missing 
    860860                     hdiv_lf(:,:,:) = 0.0_wp 
     
    862862               ENDIF 
    863863            ENDIF 
    864             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     864            IF( lrxios ) CALL iom_swap( cxios_context ) 
    865865            ! 
    866866         ELSE                                   !* Initialize at "rest" 
     
    931931         !                                   ! =================== 
    932932         IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 
    933          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     933         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    934934         !                                           ! --------- ! 
    935935         !                                           ! all cases ! 
  • NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX/MY_SRC/domvvl.F90

    r13750 r13871  
    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            IF( lrxios ) CALL iom_swap( cr_ocerst_cxt ) 
     788            CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm), ldxios = lrxios    ) 
    789789            ! 
    790790            id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) 
     
    799799            ! 
    800800            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 ) 
     801               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
     802               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
    803803               ! needed to restart if land processor not computed  
    804804               IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' 
     
    814814               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    815815               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    816                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 
     816               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
    817817               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    818818               l_1st_euler = .true. 
     
    821821               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    822822               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    823                CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 
     823               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
    824824               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    825825               l_1st_euler = .true. 
     
    846846               !                          ! ----------------------- ! 
    847847               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 ) 
     848                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios ) 
     849                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios ) 
    850850               ELSE                            ! one at least array is missing 
    851851                  tilde_e3t_b(:,:,:) = 0.0_wp 
     
    856856                  !                       ! ------------ ! 
    857857                  IF( id5 > 0 ) THEN  ! required array exists 
    858                      CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lroxios ) 
     858                     CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios ) 
    859859                  ELSE                ! array is missing 
    860860                     hdiv_lf(:,:,:) = 0.0_wp 
     
    862862               ENDIF 
    863863            ENDIF 
    864             IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 
     864            IF( lrxios ) CALL iom_swap( cxios_context ) 
    865865            ! 
    866866         ELSE                                   !* Initialize at "rest" 
     
    931931         !                                   ! =================== 
    932932         IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 
    933          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
     933         IF( lwxios ) CALL iom_swap(      cw_ocerst_cxt          ) 
    934934         !                                           ! --------- ! 
    935935         !                                           ! all cases ! 
Note: See TracChangeset for help on using the changeset viewer.