Changeset 12969 for NEMO/branches/2020/dev_12905_xios_restart/src/TOP
- Timestamp:
- 2020-05-26T12:05:09+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_12905_xios_restart/src/TOP
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/C14/trcini_c14.F90
r12961 r12969 68 68 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 69 69 ! 70 IF(lr xios) CALL iom_swap(crtxios_context)71 CALL iom_get( numrtr, 'co2sbc', co2sbc, ldxios = lr xios )72 CALL iom_get( numrtr, jpdom_autoglo, 'c14sbc', c14sbc, ldxios = lr xios )73 CALL iom_get( numrtr, jpdom_autoglo, 'exch_co2', exch_co2, ldxios = lr xios )74 CALL iom_get( numrtr, jpdom_autoglo, 'exch_c14', exch_c14, ldxios = lr xios )75 CALL iom_get( numrtr, jpdom_autoglo, 'qtr_c14', qtr_c14, ldxios = lr xios )76 IF(lr xios) CALL iom_swap(cxios_context)70 IF(lrtxios) CALL iom_swap(crtxios_context) 71 CALL iom_get( numrtr, 'co2sbc', co2sbc, ldxios = lrtxios ) 72 CALL iom_get( numrtr, jpdom_autoglo, 'c14sbc', c14sbc, ldxios = lrtxios ) 73 CALL iom_get( numrtr, jpdom_autoglo, 'exch_co2', exch_co2, ldxios = lrtxios ) 74 CALL iom_get( numrtr, jpdom_autoglo, 'exch_c14', exch_c14, ldxios = lrtxios ) 75 CALL iom_get( numrtr, jpdom_autoglo, 'qtr_c14', qtr_c14, ldxios = lrtxios ) 76 IF(lrtxios) CALL iom_swap(cxios_context) 77 77 ! 78 78 END IF … … 87 87 ELSE 88 88 ! 89 IF(lr xios) CALL iom_swap(crtxios_context)90 CALL iom_get( numrtr, jpdom_autoglo, 'qint_c14', qint_c14, ldxios = lr xios )91 IF(lr xios) CALL iom_swap(cxios_context)89 IF(lrtxios) CALL iom_swap(crtxios_context) 90 CALL iom_get( numrtr, jpdom_autoglo, 'qint_c14', qint_c14, ldxios = lrtxios ) 91 IF(lrtxios) CALL iom_swap(cxios_context) 92 92 ! 93 93 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/CFC/trcsms_cfc.F90
r12961 r12969 297 297 ! 298 298 jl = 0 299 IF(lr xios) CALL iom_swap(crtxios_context)299 IF(lrtxios) CALL iom_swap(crtxios_context) 300 300 DO jn = jp_cfc0, jp_cfc1 301 301 jl = jl + 1 302 CALL iom_get( numrtr, jpdom_autoglo, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl), ldxios = lr xios )302 CALL iom_get( numrtr, jpdom_autoglo, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl), ldxios = lrtxios ) 303 303 END DO 304 IF(lr xios) CALL iom_swap(cxios_context)304 IF(lrtxios) CALL iom_swap(cxios_context) 305 305 ENDIF 306 306 IF(lwp) WRITE(numout,*) -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/P2Z/p2zexp.F90
r12961 r12969 215 215 ! 216 216 IF( ln_rsttr ) THEN 217 IF(lr xios) CALL iom_swap(crtxios_context)218 CALL iom_get( numrtr, jpdom_autoglo, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:), ldxios = lr xios )219 CALL iom_get( numrtr, jpdom_autoglo, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:), ldxios = lr xios )220 IF(lr xios) CALL iom_swap(cxios_context)217 IF(lrtxios) CALL iom_swap(crtxios_context) 218 CALL iom_get( numrtr, jpdom_autoglo, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:), ldxios = lrtxios ) 219 CALL iom_get( numrtr, jpdom_autoglo, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:), ldxios = lrtxios ) 220 IF(lrtxios) CALL iom_swap(cxios_context) 221 221 ELSE 222 222 sedpocb(:,:) = 0._wp -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/P4Z/p4zsms.F90
r12961 r12969 339 339 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 340 340 ! 341 IF(lr xios) CALL iom_swap(crtxios_context)341 IF(lrtxios) CALL iom_swap(crtxios_context) 342 342 IF( iom_varid( numrtr, 'PH', ldstop = .FALSE. ) > 0 ) THEN 343 CALL iom_get( numrtr, jpdom_autoglo, 'PH' , hi(:,:,:), ldxios = lr xios )343 CALL iom_get( numrtr, jpdom_autoglo, 'PH' , hi(:,:,:), ldxios = lrtxios ) 344 344 ELSE 345 345 CALL p4z_che( Kbb, Kmm ) ! initialize the chemical constants 346 346 CALL ahini_for_at( hi, Kbb ) 347 347 ENDIF 348 CALL iom_get( numrtr, jpdom_autoglo, 'Silicalim', xksi(:,:), ldxios = lr xios )348 CALL iom_get( numrtr, jpdom_autoglo, 'Silicalim', xksi(:,:), ldxios = lrtxios ) 349 349 IF( iom_varid( numrtr, 'Silicamax', ldstop = .FALSE. ) > 0 ) THEN 350 CALL iom_get( numrtr, jpdom_autoglo, 'Silicamax' , xksimax(:,:), ldxios = lr xios )350 CALL iom_get( numrtr, jpdom_autoglo, 'Silicamax' , xksimax(:,:), ldxios = lrtxios ) 351 351 ELSE 352 352 xksimax(:,:) = xksi(:,:) … … 354 354 ! 355 355 IF( iom_varid( numrtr, 'tcflxcum', ldstop = .FALSE. ) > 0 ) THEN ! cumulative total flux of carbon 356 CALL iom_get( numrtr, 'tcflxcum' , t_oce_co2_flx_cum, ldxios = lr xios )356 CALL iom_get( numrtr, 'tcflxcum' , t_oce_co2_flx_cum, ldxios = lrtxios ) 357 357 ELSE 358 358 t_oce_co2_flx_cum = 0._wp … … 361 361 IF( ln_p5z ) THEN 362 362 IF( iom_varid( numrtr, 'sized', ldstop = .FALSE. ) > 0 ) THEN 363 CALL iom_get( numrtr, jpdom_autoglo, 'sizep' , sizep(:,:,:), ldxios = lr xios )364 CALL iom_get( numrtr, jpdom_autoglo, 'sizen' , sizen(:,:,:), ldxios = lr xios )365 CALL iom_get( numrtr, jpdom_autoglo, 'sized' , sized(:,:,:), ldxios = lr xios )363 CALL iom_get( numrtr, jpdom_autoglo, 'sizep' , sizep(:,:,:), ldxios = lrtxios ) 364 CALL iom_get( numrtr, jpdom_autoglo, 'sizen' , sizen(:,:,:), ldxios = lrtxios ) 365 CALL iom_get( numrtr, jpdom_autoglo, 'sized' , sized(:,:,:), ldxios = lrtxios ) 366 366 ELSE 367 367 sizep(:,:,:) = 1. … … 370 370 ENDIF 371 371 ENDIF 372 IF(lr xios) CALL iom_swap(cxios_context)372 IF(lrtxios) CALL iom_swap(cxios_context) 373 373 ! 374 374 ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sed.F90
r10425 r12969 53 53 INTEGER , PUBLIC :: nn_rstsed !: control of the time step ( 0 or 1 ) for pass. tr. 54 54 INTEGER , PUBLIC :: nn_dtsed = 1 !: frequency of step on passive tracers 55 LOGICAL, PUBLIC :: lrsxios !: use xios to read restart 55 56 CHARACTER(len = 80) , PUBLIC :: cn_sedrst_in !: suffix of pass. tracer restart name (input) 56 57 CHARACTER(len = 256), PUBLIC :: cn_sedrst_indir !: restart input directory -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sedrst.F90
r12961 r12969 139 139 zdta2 = 0. 140 140 141 IF(lr xios) CALL iom_swap(crsxios_context)141 IF(lrsxios) CALL iom_swap(crsxios_context) 142 142 DO jn = 1, jptrased 143 143 cltra = TRIM(sedtrcd(jn)) 144 144 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 145 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta(:,:,:,jn), ldxios = lr xios )145 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta(:,:,:,jn), ldxios = lrsxios ) 146 146 ELSE 147 147 zdta(:,:,:,jn) = 0.0 … … 162 162 cltra = TRIM(seddia3d(jn)) 163 163 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 164 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta1(:,:,:,jn), ldxios = lr xios )164 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta1(:,:,:,jn), ldxios = lrsxios ) 165 165 ELSE 166 166 zdta1(:,:,:,jn) = 0.0 … … 189 189 cltra = "dbioturb" 190 190 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 191 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lr xios )191 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 192 192 ELSE 193 193 zdta2(:,:,:) = 0.0 … … 199 199 cltra = "irrig" 200 200 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 201 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lr xios )201 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 202 202 ELSE 203 203 zdta2(:,:,:) = 0.0 … … 209 209 cltra = "sedligand" 210 210 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 211 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lr xios )211 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrsxios ) 212 212 ELSE 213 213 zdta2(:,:,:) = 0.0 … … 216 216 CALL pack_arr( jpoce, sedligand(1:jpoce,1:jpksed), & 217 217 & zdta2(1:jpi,1:jpj,1:jpksed), iarroce(1:jpoce) ) 218 IF(lr xios) CALL iom_swap(cxios_context)218 IF(lrsxios) CALL iom_swap(cxios_context) 219 219 IF( ln_timing ) CALL timing_stop('sed_rst_read') 220 220 … … 382 382 CALL iom_open( TRIM(cn_sedrst_indir)//'/'//cn_sedrst_in, numrsr ) 383 383 384 IF( lrxios .AND. .NOT. lxios_sini) THEN 385 CALL ctl_stop('OCE and SED restart must be in a single file when XIOS is used to read restart') 386 ENDIF 387 IF( lrxios) THEN 388 crsxios_context = 'sed_rst' 389 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SED' 390 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 391 clpname = cn_sedrst_in 392 ELSE 393 clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in 394 ENDIF 395 CALL iom_init( crsxios_context, fname = TRIM(cn_sedrst_indir)//'/'//TRIM(clpname), & 396 idfp = iom_file(numrsr)%nfid, ld_tmppatch = .TRUE. ) 397 ENDIF 398 IF(lrxios) CALL iom_swap(crsxios_context) 399 CALL iom_get ( numrsr, 'kt', zkt, ldxios = lrxios ) ! last time-step of previous run 400 IF(lrxios) CALL iom_swap(cxios_context) 384 lrsxios = lrxios.AND.lxios_sini 385 IF( lrsxios) THEN 386 crsxios_context = 'sed_rst' 387 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SED' 388 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 389 clpname = cn_sedrst_in 390 ELSE 391 clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in 392 ENDIF 393 CALL iom_init( crsxios_context, fname = TRIM(cn_sedrst_indir)//'/'//TRIM(clpname), & 394 idfp = iom_file(numrsr)%nfid, ld_tmppatch = .TRUE. ) 395 ENDIF 396 IF(lrsxios) CALL iom_swap(crsxios_context) 397 CALL iom_get ( numrsr, 'kt', zkt, ldxios = lrsxios ) ! last time-step of previous run 398 IF(lrsxios) CALL iom_swap(cxios_context) 401 399 IF(lwp) THEN 402 400 WRITE(numsed,*) ' *** Info read in restart : ' … … 419 417 ! ! set the date in offline mode 420 418 IF( ln_rst_sed .AND. nn_rstsed == 2 ) THEN 421 IF(lr xios) CALL iom_swap(crsxios_context)422 CALL iom_get( numrsr, 'ndastp', zndastp, ldxios = lr xios )419 IF(lrsxios) CALL iom_swap(crsxios_context) 420 CALL iom_get( numrsr, 'ndastp', zndastp, ldxios = lrsxios ) 423 421 ndastp = NINT( zndastp ) 424 CALL iom_get( numrsr, 'adatrj', adatrj, ldxios = lr xios )425 IF(lr xios) CALL iom_swap(crxios_context)422 CALL iom_get( numrsr, 'adatrj', adatrj, ldxios = lrsxios ) 423 IF(lrsxios) CALL iom_swap(crxios_context) 426 424 ELSE 427 425 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sedstp.F90
r12961 r12969 86 86 IF( kt == nitsed000 ) THEN 87 87 CALL iom_close( numrsr ) ! close input tracer restart file 88 IF(lr xios) CALL iom_context_finalize( crsxios_context )88 IF(lrsxios) CALL iom_context_finalize( crsxios_context ) 89 89 ! IF(lwm) CALL FLUSH( numont ) ! flush namelist output 90 90 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/TRP/trcsbc.F90
r12961 r12969 86 86 IF(lwp) WRITE(numout,*) ' nittrc000-1 surface tracer content forcing fields read in the restart file' 87 87 zfact = 0.5_wp 88 IF(lr xios) CALL iom_swap(crtxios_context)88 IF(lrtxios) CALL iom_swap(crtxios_context) 89 89 DO jn = 1, jptra 90 CALL iom_get( numrtr, jpdom_autoglo, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc_b(:,:,jn), ldxios = lr xios ) ! before tracer content sbc90 CALL iom_get( numrtr, jpdom_autoglo, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc_b(:,:,jn), ldxios = lrtxios ) ! before tracer content sbc 91 91 END DO 92 IF(lr xios) CALL iom_swap(cxios_context)92 IF(lrtxios) CALL iom_swap(cxios_context) 93 93 ELSE ! No restart or restart not found: Euler forward time stepping 94 94 zfact = 1._wp -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/trc.F90
r12489 r12969 69 69 INTEGER , PUBLIC :: nittrc000 !: first time step of passive tracers model 70 70 LOGICAL , PUBLIC :: l_trcdm2dc !: Diurnal cycle for TOP 71 LOGICAL , PUBLIC :: lrtxios !: read TOP restart with XIOS 71 72 72 73 !! Information for the ice module for tracers -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/trcrst.F90
r12961 r12969 130 130 131 131 ! READ prognostic variables and computes diagnostic variable 132 IF(lr xios) CALL iom_swap(crtxios_context)132 IF(lrtxios) CALL iom_swap(crtxios_context) 133 133 DO jn = 1, jptra 134 CALL iom_get( numrtr, jpdom_autoglo, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm), ldxios = lr xios )134 CALL iom_get( numrtr, jpdom_autoglo, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm), ldxios = lrtxios ) 135 135 END DO 136 136 137 137 DO jn = 1, jptra 138 CALL iom_get( numrtr, jpdom_autoglo, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb), ldxios = lr xios )138 CALL iom_get( numrtr, jpdom_autoglo, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb), ldxios = lrtxios ) 139 139 END DO 140 140 ! 141 141 CALL iom_delay_rst( 'READ', 'TOP', numrtr ) ! read only TOP delayed global communication variables 142 IF(lr xios) CALL iom_swap(cxios_context)142 IF(lrtxios) CALL iom_swap(cxios_context) 143 143 END SUBROUTINE trc_rst_read 144 144 … … 234 234 lxios_sini = .FALSE. 235 235 CALL iom_open( TRIM(cn_trcrst_indir)//'/'//cn_trcrst_in, numrtr ) 236 IF( lrxios .AND. .NOT. lxios_sini) THEN 237 CALL ctl_stop('OCE and TOP restart must be in a single file when XIOS is used to read restart') 238 ENDIF 239 IF( lrxios) THEN 236 lrtxios = lrxios.AND.lxios_sini 237 IF( lrtxios) THEN 240 238 crtxios_context = 'top_rst' 241 239 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for TOP' … … 249 247 ENDIF 250 248 251 IF(lr xios) CALL iom_swap(crtxios_context)252 CALL iom_get ( numrtr, 'kt', zkt, ldxios = lr xios ) ! last time-step of previous run253 IF(lr xios) CALL iom_swap(cxios_context)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) 254 252 255 253 IF(lwp) THEN … … 273 271 ! ! set the date in offline mode 274 272 IF( ln_rsttr .AND. nn_rsttr == 2 ) THEN 275 IF(lr xios) CALL iom_swap(crtxios_context)276 CALL iom_get( numrtr, 'ndastp', zndastp, ldxios = lr xios )273 IF(lrtxios) CALL iom_swap(crtxios_context) 274 CALL iom_get( numrtr, 'ndastp', zndastp, ldxios = lrtxios ) 277 275 ndastp = NINT( zndastp ) 278 CALL iom_get( numrtr, 'adatrj', adatrj, ldxios = lr xios )279 CALL iom_get( numrtr, 'ntime' , ktime, ldxios = lr xios )280 IF(lr xios) CALL iom_swap(cxios_context)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) 281 279 nn_time0=INT(ktime) 282 280 ! calculate start time in hours and minutes -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/trcstp.F90
r12961 r12969 109 109 IF( kt == nittrc000 ) THEN 110 110 CALL iom_close( numrtr ) ! close input tracer restart file 111 IF(lr xios) CALL iom_context_finalize( crtxios_context )111 IF(lrtxios) CALL iom_context_finalize( crtxios_context ) 112 112 IF(lwm) CALL FLUSH( numont ) ! flush namelist output 113 113 ENDIF … … 196 196 & .AND. iom_varid( numrtr, 'ktdcy' , ldstop = .FALSE. ) > 0 & 197 197 & .AND. iom_varid( numrtr, 'nrdcy' , ldstop = .FALSE. ) > 0 ) THEN 198 IF(lr xios) CALL iom_swap(crtxios_context)199 CALL iom_get( numrtr, 'ktdcy', zkt, ldxios = lr xios )198 IF(lrtxios) CALL iom_swap(crtxios_context) 199 CALL iom_get( numrtr, 'ktdcy', zkt, ldxios = lrtxios ) 200 200 rsecfst = INT( zkt ) * rn_Dt 201 201 IF(lwp) WRITE(numout,*) 'trc_qsr_mean: qsr_mean read in the restart file at time-step rsecfst =', rsecfst, ' s ' 202 CALL iom_get( numrtr, jpdom_autoglo, 'qsr_mean', qsr_mean, ldxios = lr xios ) ! A mean of qsr203 CALL iom_get( numrtr, 'nrdcy', zrec, ldxios = lr xios ) ! Number of record per days202 CALL iom_get( numrtr, jpdom_autoglo, 'qsr_mean', qsr_mean, ldxios = lrtxios ) ! A mean of qsr 203 CALL iom_get( numrtr, 'nrdcy', zrec, ldxios = lrtxios ) ! Number of record per days 204 204 IF( INT( zrec ) == nb_rec_per_day ) THEN 205 205 DO jn = 1, nb_rec_per_day 206 206 IF( jn <= 9 ) THEN 207 207 WRITE(cl1,'(i1)') jn 208 CALL iom_get( numrtr, jpdom_autoglo, 'qsr_arr_'//cl1, qsr_arr(:,:,jn), ldxios = lr xios ) ! A mean of qsr208 CALL iom_get( numrtr, jpdom_autoglo, 'qsr_arr_'//cl1, qsr_arr(:,:,jn), ldxios = lrtxios ) ! A mean of qsr 209 209 ELSE 210 210 WRITE(cl2,'(i2.2)') jn 211 CALL iom_get( numrtr, jpdom_autoglo, 'qsr_arr_'//cl2, qsr_arr(:,:,jn), ldxios = lr xios ) ! A mean of qsr211 CALL iom_get( numrtr, jpdom_autoglo, 'qsr_arr_'//cl2, qsr_arr(:,:,jn), ldxios = lrtxios ) ! A mean of qsr 212 212 ENDIF 213 213 END DO … … 217 217 ENDDO 218 218 ENDIF 219 IF(lr xios) CALL iom_swap(cxios_context)219 IF(lrtxios) CALL iom_swap(cxios_context) 220 220 ELSE !* no restart: set from nit000 values 221 221 IF(lwp) WRITE(numout,*) 'trc_qsr_mean: qsr_mean set to nit000 values'
Note: See TracChangeset
for help on using the changeset viewer.