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 14018 for NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/IOM/restart.F90 – NEMO

Ignore:
Timestamp:
2020-12-02T18:22:24+01:00 (3 years ago)
Author:
techene
Message:

#2385 branch updated with trunk 13970

Location:
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3

    • Property svn:externals
      •  

        old new  
        88 
        99# SETTE 
        10 ^/utils/CI/sette@13559        sette 
         10^/utils/CI/sette@13795        sette 
  • NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/IOM/restart.F90

    r13895 r14018  
    111111            ELSE 
    112112#if defined key_iomput 
    113                cwxios_context = "rstw_"//TRIM(ADJUSTL(clkt)) 
     113               cw_ocerst_cxt = "rstw_"//TRIM(ADJUSTL(clkt)) 
    114114               IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    115115                  clpname = clname 
     
    117117                  clpname = TRIM(Agrif_CFixed())//"_"//clname    
    118118               ENDIF 
    119                CALL iom_init( cwxios_context, TRIM(clpath)//TRIM(clpname), .false. ) 
    120                CALL xios_update_calendar(nitrst) 
     119               numrow = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 
     120               CALL iom_init( cw_ocerst_cxt, kdid = numrow, ld_closedef = .false. ) 
    121121               CALL iom_swap(      cxios_context          ) 
    122122#else 
     
    147147      INTEGER, INTENT(in) ::   Kbb, Kmm   ! ocean time level indices 
    148148      !!---------------------------------------------------------------------- 
    149                      IF(lwxios) CALL iom_swap(      cwxios_context          ) 
    150                      CALL iom_rstput( kt, nitrst, numrow, 'rdt'    , rn_Dt       , ldxios = lwxios)   ! dynamics time step 
    151                      CALL iom_delay_rst( 'WRITE', 'OCE', numrow )   ! save only ocean delayed global communication variables 
     149                     CALL iom_rstput( kt, nitrst, numrow, 'rdt'    , rn_Dt       )   ! dynamics time step 
     150                     IF(.NOT.lwxios) CALL iom_delay_rst( 'WRITE', 'OCE', numrow )   ! save only ocean delayed global communication variables 
    152151 
    153152      IF ( .NOT. ln_diurnal_only ) THEN 
    154                      CALL iom_rstput( kt, nitrst, numrow, 'ub'     , uu(:,:,:       ,Kbb), ldxios = lwxios        )     ! before fields 
    155                      CALL iom_rstput( kt, nitrst, numrow, 'vb'     , vv(:,:,:       ,Kbb), ldxios = lwxios        ) 
    156                      CALL iom_rstput( kt, nitrst, numrow, 'tb'     , ts(:,:,:,jp_tem,Kbb), ldxios = lwxios ) 
    157                      CALL iom_rstput( kt, nitrst, numrow, 'sb'     , ts(:,:,:,jp_sal,Kbb), ldxios = lwxios ) 
    158                      CALL iom_rstput( kt, nitrst, numrow, 'sshb'   ,ssh(:,:         ,Kbb), ldxios = lwxios      ) 
     153                     CALL iom_rstput( kt, nitrst, numrow, 'ub'     , uu(:,:,:       ,Kbb) )     ! before fields 
     154                     CALL iom_rstput( kt, nitrst, numrow, 'vb'     , vv(:,:,:       ,Kbb) ) 
     155                     CALL iom_rstput( kt, nitrst, numrow, 'tb'     , ts(:,:,:,jp_tem,Kbb) ) 
     156                     CALL iom_rstput( kt, nitrst, numrow, 'sb'     , ts(:,:,:,jp_sal,Kbb) ) 
     157                     CALL iom_rstput( kt, nitrst, numrow, 'sshb'   , ssh(:,:         ,Kbb)) 
    159158                     ! 
    160                      CALL iom_rstput( kt, nitrst, numrow, 'un'     , uu(:,:,:       ,Kmm), ldxios = lwxios        )     ! now fields 
    161                      CALL iom_rstput( kt, nitrst, numrow, 'vn'     , vv(:,:,:       ,Kmm), ldxios = lwxios        ) 
    162                      CALL iom_rstput( kt, nitrst, numrow, 'tn'     , ts(:,:,:,jp_tem,Kmm), ldxios = lwxios ) 
    163                      CALL iom_rstput( kt, nitrst, numrow, 'sn'     , ts(:,:,:,jp_sal,Kmm), ldxios = lwxios ) 
    164                      CALL iom_rstput( kt, nitrst, numrow, 'sshn'   ,ssh(:,:         ,Kmm), ldxios = lwxios      ) 
    165                      CALL iom_rstput( kt, nitrst, numrow, 'rhop'   , rhop, ldxios = lwxios      ) 
     159                     CALL iom_rstput( kt, nitrst, numrow, 'un'     , uu(:,:,:       ,Kmm) )     ! now fields 
     160                     CALL iom_rstput( kt, nitrst, numrow, 'vn'     , vv(:,:,:       ,Kmm) ) 
     161                     CALL iom_rstput( kt, nitrst, numrow, 'tn'     , ts(:,:,:,jp_tem,Kmm) ) 
     162                     CALL iom_rstput( kt, nitrst, numrow, 'sn'     , ts(:,:,:,jp_sal,Kmm) ) 
     163                     CALL iom_rstput( kt, nitrst, numrow, 'sshn'   , ssh(:,:         ,Kmm)) 
     164                     CALL iom_rstput( kt, nitrst, numrow, 'rhop'   , rhop      ) 
    166165      ENDIF 
    167166       
    168       IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst, ldxios = lwxios )   
    169       IF(lwxios) CALL iom_swap(      cxios_context          ) 
     167      IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst )   
    170168      IF( kt == nitrst ) THEN 
    171169         IF(.NOT.lwxios) THEN 
    172170            CALL iom_close( numrow )     ! close the restart file (only at last time step) 
    173171         ELSE 
    174             CALL iom_context_finalize(      cwxios_context          ) 
     172            CALL iom_context_finalize(      cw_ocerst_cxt          ) 
     173            iom_file(numrow)%nfid       = 0 
     174            numrow = 0 
    175175         ENDIF 
    176176!!gm         IF( .NOT. lk_trdmld )   lrst_oce = .FALSE. 
     
    195195      !!                the file has already been opened 
    196196      !!---------------------------------------------------------------------- 
    197       LOGICAL        ::   llok 
    198       CHARACTER(lc)  ::   clpath   ! full path to ocean output restart file 
     197      LOGICAL             ::   llok 
     198      CHARACTER(len=lc)   ::   clpath   ! full path to ocean output restart file 
     199      CHARACTER(len=lc+2) ::   clpname  ! file name including agrif prefix 
    199200      !!---------------------------------------------------------------------- 
    200201      ! 
     
    213214! can handle checking if variable is in the restart file (there will be no need to open 
    214215! restart) 
    215          IF( .NOT.lxios_set )   lrxios = lrxios.AND.lxios_sini 
    216          IF( lrxios ) THEN 
    217              crxios_context = 'nemo_rst' 
    218              IF( .NOT.lxios_set ) THEN 
    219                  IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS' 
    220                  CALL iom_init( crxios_context ) 
    221                  lxios_set = .TRUE. 
    222              ENDIF 
    223          ENDIF 
    224          IF( TRIM(Agrif_CFixed()) /= '0' .AND. lrxios ) THEN 
    225              CALL iom_init( crxios_context ) 
    226              IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for AGRIF' 
    227              lxios_set = .TRUE. 
    228          ENDIF  
     216         lrxios = lrxios.AND.lxios_sini 
     217 
     218         IF( lrxios) THEN 
     219             cr_ocerst_cxt = 'oce_rst' 
     220             IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS' 
     221!            IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     222!               clpname = cn_ocerst_in 
     223!            ELSE 
     224!               clpname = TRIM(Agrif_CFixed())//"_"//cn_ocerst_in    
     225!            ENDIF 
     226             CALL iom_init( cr_ocerst_cxt, kdid = numror, ld_closedef = .TRUE. ) 
     227             CALL iom_swap(      cxios_context          ) 
     228         ENDIF 
     229 
    229230      ENDIF 
    230231 
     
    252253      !!---------------------------------------------------------------------- 
    253254      ! 
    254       CALL iom_delay_rst( 'READ', 'OCE', numror )   ! read only ocean delayed global communication variables 
     255      IF(.NOT.lrxios ) CALL iom_delay_rst( 'READ', 'OCE', numror )   ! read only ocean delayed global communication variables 
    255256      ! 
    256257      !                             !*  Diurnal DSST  
    257       IF( ln_diurnal )   CALL iom_get( numror, jpdom_auto, 'Dsst' , x_dsst, ldxios = lrxios )  
     258      IF( ln_diurnal )   CALL iom_get( numror, jpdom_auto, 'Dsst' , x_dsst )  
    258259      IF ( ln_diurnal_only ) THEN  
    259260         IF(lwp) WRITE( numout, * ) & 
    260261         &   "rst_read:- ln_diurnal_only set, setting rhop=rho0"  
    261262         rhop = rho0 
    262          CALL iom_get( numror, jpdom_auto, 'tn'     , w3d, ldxios = lrxios )  
     263         CALL iom_get( numror, jpdom_auto, 'tn'     , w3d )  
    263264         ts(:,:,1,jp_tem,Kmm) = w3d(:,:,1) 
    264265         RETURN  
     
    267268      !                             !*  Read Kmm fields 
    268269      IF(lwp) WRITE(numout,*)    '           Kmm u, v and T-S fields read in the restart file' 
    269       CALL iom_get( numror, jpdom_auto, 'un'     , uu(:,:,:       ,Kmm), ldxios = lrxios, cd_type = 'U', psgn = -1._wp ) 
    270       CALL iom_get( numror, jpdom_auto, 'vn'     , vv(:,:,:       ,Kmm), ldxios = lrxios, cd_type = 'V', psgn = -1._wp ) 
    271       CALL iom_get( numror, jpdom_auto, 'tn'     , ts(:,:,:,jp_tem,Kmm), ldxios = lrxios ) 
    272       CALL iom_get( numror, jpdom_auto, 'sn'     , ts(:,:,:,jp_sal,Kmm), ldxios = lrxios ) 
     270      CALL iom_get( numror, jpdom_auto, 'un'     , uu(:,:,:       ,Kmm), cd_type = 'U', psgn = -1._wp ) 
     271      CALL iom_get( numror, jpdom_auto, 'vn'     , vv(:,:,:       ,Kmm), cd_type = 'V', psgn = -1._wp ) 
     272      CALL iom_get( numror, jpdom_auto, 'tn'     , ts(:,:,:,jp_tem,Kmm) ) 
     273      CALL iom_get( numror, jpdom_auto, 'sn'     , ts(:,:,:,jp_sal,Kmm) ) 
    273274      ! 
    274275      IF( l_1st_euler ) THEN        !*  Euler restart 
     
    279280      ELSE                          !* Leap frog restart 
    280281         IF(lwp) WRITE(numout,*) '           Kbb u, v and T-S fields read in the restart file' 
    281          CALL iom_get( numror, jpdom_auto, 'ub'     , uu(:,:,:       ,Kbb), ldxios = lrxios, cd_type = 'U', psgn = -1._wp ) 
    282          CALL iom_get( numror, jpdom_auto, 'vb'     , vv(:,:,:       ,Kbb), ldxios = lrxios, cd_type = 'V', psgn = -1._wp ) 
    283          CALL iom_get( numror, jpdom_auto, 'tb'     , ts(:,:,:,jp_tem,Kbb), ldxios = lrxios ) 
    284          CALL iom_get( numror, jpdom_auto, 'sb'     , ts(:,:,:,jp_sal,Kbb), ldxios = lrxios ) 
     282         CALL iom_get( numror, jpdom_auto, 'ub'     , uu(:,:,:       ,Kbb), cd_type = 'U', psgn = -1._wp ) 
     283         CALL iom_get( numror, jpdom_auto, 'vb'     , vv(:,:,:       ,Kbb), cd_type = 'V', psgn = -1._wp ) 
     284         CALL iom_get( numror, jpdom_auto, 'tb'     , ts(:,:,:,jp_tem,Kbb) ) 
     285         CALL iom_get( numror, jpdom_auto, 'sb'     , ts(:,:,:,jp_sal,Kbb) ) 
    285286      ENDIF 
    286287      ! 
    287288      IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN 
    288          CALL iom_get( numror, jpdom_auto, 'rhop'   , rhop, ldxios = lrxios )   ! now    potential density 
     289         CALL iom_get( numror, jpdom_auto, 'rhop'   , rhop )   ! now    potential density 
    289290      ELSE 
    290291         CALL eos( ts(:,:,:,:,Kmm), rhd, rhop, gdept(:,:,:,Kmm) )    
Note: See TracChangeset for help on using the changeset viewer.