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 8612 for branches/2017/dev_r8600_xios_read/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90 – NEMO

Ignore:
Timestamp:
2017-10-11T13:03:17+02:00 (6 years ago)
Author:
andmirek
Message:

#1953 read single file restart with XIOS

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8600_xios_read/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90

    r6140 r8612  
    193193            WRITE(numout,*) '~~~~~~~~' 
    194194         ENDIF 
    195  
     195         lxios_sini = .FALSE. 
    196196         clpath = TRIM(cn_ocerst_indir) 
    197197         IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 
    198198         CALL iom_open( TRIM(clpath)//cn_ocerst_in, numror, kiolib = jlibalt ) 
    199       ENDIF 
     199! are we using XIOS to read the data? Part above will have to modified once XIOS 
     200! can handle checking if variable is in the restart file (there will be no need to open 
     201! restart) 
     202         IF(.NOT.lxios_set) lxios_read = lxios_read.AND.lxios_sini 
     203         IF( lxios_read) THEN 
     204           rxios_context = 'nemo_rst' 
     205         if(.NOT.lxios_set) then 
     206             IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS' 
     207             CALL iom_init( rxios_context ) 
     208             lxios_set = .TRUE. 
     209         endif 
     210         ENDIF 
     211         IF( TRIM(Agrif_CFixed()) /= '0' .AND. lxios_read) THEN 
     212            CALL iom_init( rxios_context ) 
     213            IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for AGRIF' 
     214            lxios_set = .TRUE. 
     215         ENDIF  
     216      ENDIF 
     217 
    200218   END SUBROUTINE rst_read_open 
    201219 
     
    211229      REAL(wp) ::   zrdt 
    212230      INTEGER  ::   jk 
     231      TYPE(xios_duration):: dtime 
     232      integer::ni,nj,nk 
    213233      !!---------------------------------------------------------------------- 
    214234 
     
    217237      ! Check dynamics and tracer time-step consistency and force Euler restart if changed 
    218238      IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 )   THEN 
    219          CALL iom_get( numror, 'rdt', zrdt ) 
     239         CALL iom_get( numror, 'rdt', zrdt, lrxios = lxios_read ) 
    220240         IF( zrdt /= rdt )   neuler = 0 
    221241      ENDIF 
    222242 
    223243      ! Diurnal DSST  
    224       IF( ln_diurnal ) CALL iom_get( numror, jpdom_autoglo, 'Dsst' , x_dsst  )  
     244      IF( ln_diurnal ) CALL iom_get( numror, jpdom_autoglo, 'Dsst' , x_dsst, lrxios = lxios_read )  
    225245      IF ( ln_diurnal_only ) THEN  
    226246         IF(lwp) WRITE( numout, * ) & 
    227247         &   "rst_read:- ln_diurnal_only set, setting rhop=rau0"  
    228248         rhop = rau0 
    229          CALL iom_get( numror, jpdom_autoglo, 'tn'     , tsn(:,:,1,jp_tem) )  
     249         CALL iom_get( numror, jpdom_autoglo, 'tn'     , tsn(:,:,1,jp_tem), lrxios = lxios_read )  
    230250         RETURN  
    231251      ENDIF   
    232252       
    233253      IF( iom_varid( numror, 'ub', ldstop = .FALSE. ) > 0 ) THEN 
    234          CALL iom_get( numror, jpdom_autoglo, 'ub'     , ub      )   ! before fields 
    235          CALL iom_get( numror, jpdom_autoglo, 'vb'     , vb      ) 
    236          CALL iom_get( numror, jpdom_autoglo, 'tb'     , tsb(:,:,:,jp_tem) ) 
    237          CALL iom_get( numror, jpdom_autoglo, 'sb'     , tsb(:,:,:,jp_sal) ) 
    238          CALL iom_get( numror, jpdom_autoglo, 'sshb'   , sshb    ) 
     254         CALL iom_get( numror, jpdom_autoglo, 'ub'     , ub, lrxios = lxios_read                )   ! before fields 
     255         CALL iom_get( numror, jpdom_autoglo, 'vb'     , vb, lrxios = lxios_read                ) 
     256         CALL iom_get( numror, jpdom_autoglo, 'tb'     , tsb(:,:,:,jp_tem), lrxios = lxios_read ) 
     257         CALL iom_get( numror, jpdom_autoglo, 'sb'     , tsb(:,:,:,jp_sal), lrxios = lxios_read ) 
     258         CALL iom_get( numror, jpdom_autoglo, 'sshb'   , sshb, lrxios = lxios_read              ) 
    239259      ELSE 
    240260         neuler = 0 
    241261      ENDIF 
    242262      ! 
    243       CALL iom_get( numror, jpdom_autoglo, 'un'     , un      )   ! now    fields 
    244       CALL iom_get( numror, jpdom_autoglo, 'vn'     , vn      ) 
    245       CALL iom_get( numror, jpdom_autoglo, 'tn'     , tsn(:,:,:,jp_tem) ) 
    246       CALL iom_get( numror, jpdom_autoglo, 'sn'     , tsn(:,:,:,jp_sal) ) 
    247       CALL iom_get( numror, jpdom_autoglo, 'sshn'   , sshn    ) 
     263      CALL iom_get( numror, jpdom_autoglo, 'un'     , un, lrxios = lxios_read )   ! now    fields 
     264      CALL iom_get( numror, jpdom_autoglo, 'vn'     , vn, lrxios = lxios_read ) 
     265      CALL iom_get( numror, jpdom_autoglo, 'tn'     , tsn(:,:,:,jp_tem), lrxios = lxios_read ) 
     266      CALL iom_get( numror, jpdom_autoglo, 'sn'     , tsn(:,:,:,jp_sal), lrxios = lxios_read ) 
     267      CALL iom_get( numror, jpdom_autoglo, 'sshn'   , sshn, lrxios = lxios_read ) 
    248268      IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN 
    249          CALL iom_get( numror, jpdom_autoglo, 'rhop'   , rhop    )   ! now    potential density 
     269         CALL iom_get( numror, jpdom_autoglo, 'rhop'   , rhop, lrxios = lxios_read )   ! now    potential density 
    250270      ELSE 
    251271         CALL eos( tsn, rhd, rhop, gdept_n(:,:,:) )    
Note: See TracChangeset for help on using the changeset viewer.