- Timestamp:
- 2020-05-22T13:51:12+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sedrst.F90
r12649 r12961 42 42 CHARACTER(LEN=50) :: clname ! trc output restart file name 43 43 CHARACTER(LEN=256) :: clpath ! full path to ocean output restart file 44 CHARACTER(LEN=52) :: clpname ! trc output restart file name including AGRIF 44 45 !!---------------------------------------------------------------------- 45 46 ! … … 80 81 IF(lwp) WRITE(numsed,*) & 81 82 ' open sed restart.output NetCDF file: ',TRIM(clpath)//clname 82 CALL iom_open( TRIM(clpath)//TRIM(clname), numrsw, ldwrt = .TRUE., kdlev = jpksed, cdcomp = 'SED' ) 83 IF(.NOT.lwxios) THEN 84 CALL iom_open( TRIM(clpath)//TRIM(clname), numrsw, ldwrt = .TRUE., kdlev = jpksed, cdcomp = 'SED' ) 85 ELSE 86 #if defined key_iomput 87 cwsxios_context = "rstws_"//TRIM(ADJUSTL(clkt)) 88 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 89 clpname = clname 90 ELSE 91 clpname = TRIM(Agrif_CFixed())//"_"//clname 92 ENDIF 93 CALL iom_init( cwsxios_context, TRIM(clpath)//TRIM(clpname), ld_tmppatch = .false.,& 94 ld_closedef = .FALSE. ) 95 CALL iom_swap( cxios_context ) 96 #else 97 clinfo = 'Can not use XIOS in trc_rst_opn' 98 CALL ctl_stop(TRIM(clinfo)) 99 #endif 100 ENDIF 101 83 102 lrst_sed = .TRUE. 84 103 ENDIF … … 120 139 zdta2 = 0. 121 140 141 IF(lrxios) CALL iom_swap(crsxios_context) 122 142 DO jn = 1, jptrased 123 143 cltra = TRIM(sedtrcd(jn)) 124 144 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 125 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta(:,:,:,jn) )145 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta(:,:,:,jn), ldxios = lrxios ) 126 146 ELSE 127 147 zdta(:,:,:,jn) = 0.0 … … 142 162 cltra = TRIM(seddia3d(jn)) 143 163 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 144 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta1(:,:,:,jn) )164 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta1(:,:,:,jn), ldxios = lrxios ) 145 165 ELSE 146 166 zdta1(:,:,:,jn) = 0.0 … … 169 189 cltra = "dbioturb" 170 190 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 171 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:) )191 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrxios ) 172 192 ELSE 173 193 zdta2(:,:,:) = 0.0 … … 179 199 cltra = "irrig" 180 200 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 181 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:) )201 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrxios ) 182 202 ELSE 183 203 zdta2(:,:,:) = 0.0 … … 189 209 cltra = "sedligand" 190 210 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 191 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:) )211 CALL iom_get( numrsr, jpdom_autoglo, TRIM(cltra), zdta2(:,:,:), ldxios = lrxios ) 192 212 ELSE 193 213 zdta2(:,:,:) = 0.0 … … 196 216 CALL pack_arr( jpoce, sedligand(1:jpoce,1:jpksed), & 197 217 & zdta2(1:jpi,1:jpj,1:jpksed), iarroce(1:jpoce) ) 198 218 IF(lrxios) CALL iom_swap(cxios_context) 199 219 IF( ln_timing ) CALL timing_stop('sed_rst_read') 200 220 … … 240 260 !! 1. WRITE in nutwrs 241 261 !! ------------------ 242 243 244 CALL iom_rstput( kt, nitrst, numrsw, 'kt', zinfo)262 IF( lwxios ) CALL iom_swap( cwsxios_context ) 263 ! zinfo(1) = REAL( kt) 264 CALL iom_rstput( kt, nitrst, numrsw, 'kt', REAL( kt , wp), ldxios = lwxios ) 245 265 246 266 ! Back to 2D geometry … … 272 292 DO jn = 1, jptrased 273 293 cltra = TRIM(sedtrcd(jn)) 274 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), trcsedi(:,:,:,jn) )294 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), trcsedi(:,:,:,jn), ldxios = lwxios ) 275 295 ENDDO 276 296 277 297 DO jn = 1, 2 278 298 cltra = TRIM(seddia3d(jn)) 279 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), flxsedi3d(:,:,:,jn) )299 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), flxsedi3d(:,:,:,jn), ldxios = lwxios ) 280 300 ENDDO 281 301 … … 284 304 285 305 cltra = "dbioturb" 286 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) )306 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:), ldxios = lwxios ) 287 307 288 308 CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed) , iarroce(1:jpoce), & … … 290 310 291 311 cltra = "irrig" 292 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) )312 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:), ldxios = lwxios ) 293 313 294 314 CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed) , iarroce(1:jpoce), & … … 296 316 297 317 cltra = "sedligand" 298 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 318 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:), ldxios = lwxios ) 319 IF( lwxios ) CALL iom_swap( cxios_context ) 299 320 300 321 IF( kt == nitrst ) THEN 301 CALL iom_close( numrsw ) ! close the restart file (only at last time step) 322 IF(.NOT.lwxios) THEN 323 CALL iom_close( numrsw ) ! close the restart file (only at last time step) 324 ELSE 325 CALL iom_context_finalize( cwsxios_context ) 326 ENDIF 302 327 IF( l_offline .AND. ln_rst_list ) THEN 303 328 nrst_lst = nrst_lst + 1 … … 342 367 REAL(wp) :: zkt, zrdttrc1 343 368 REAL(wp) :: zndastp 369 CHARACTER(len = 82) :: clpname 344 370 345 371 ! Time domain : restart … … 353 379 354 380 IF( ln_rst_sed ) THEN 381 lxios_sini = .FALSE. 355 382 CALL iom_open( TRIM(cn_sedrst_indir)//'/'//cn_sedrst_in, numrsr ) 356 CALL iom_get ( numrsr, 'kt', zkt ) ! last time-step of previous run 357 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) 358 401 IF(lwp) THEN 359 402 WRITE(numsed,*) ' *** Info read in restart : ' … … 376 419 ! ! set the date in offline mode 377 420 IF( ln_rst_sed .AND. nn_rstsed == 2 ) THEN 378 CALL iom_get( numrsr, 'ndastp', zndastp ) 421 IF(lrxios) CALL iom_swap(crsxios_context) 422 CALL iom_get( numrsr, 'ndastp', zndastp, ldxios = lrxios ) 379 423 ndastp = NINT( zndastp ) 380 CALL iom_get( numrsr, 'adatrj', adatrj ) 424 CALL iom_get( numrsr, 'adatrj', adatrj, ldxios = lrxios ) 425 IF(lrxios) CALL iom_swap(crxios_context) 381 426 ELSE 382 427 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam … … 402 447 IF(lwp) WRITE(numsed,*) 'trc_wri : write the TOP restart file (NetCDF) at it= ', kt, ' date= ', ndastp 403 448 IF(lwp) WRITE(numsed,*) '~~~~~~~' 404 ENDIF 405 CALL iom_rstput( kt, nitrst, numrsw, 'kt' , REAL( kt , wp) ) ! time-step 406 CALL iom_rstput( kt, nitrst, numrsw, 'ndastp' , REAL( ndastp, wp) ) ! date 407 CALL iom_rstput( kt, nitrst, numrsw, 'adatrj' , adatrj ) ! number of elapsed days since 408 ! ! the begining of the run [s] 449 IF( lwxios ) CALL iom_init_closedef(cwsxios_context) 450 ENDIF 451 IF( lwxios ) CALL iom_swap( cwsxios_context ) 452 CALL iom_rstput( kt, nitrst, numrsw, 'kt' , REAL( kt , wp), ldxios = lwxios ) ! time-step 453 CALL iom_rstput( kt, nitrst, numrsw, 'ndastp' , REAL( ndastp, wp), ldxios = lwxios ) ! date 454 CALL iom_rstput( kt, nitrst, numrsw, 'adatrj' , adatrj, ldxios = lwxios ) ! number of elapsed days since 455 ! ! the begining of the run [s] 456 IF( lwxios ) CALL iom_swap( cxios_context ) 409 457 ENDIF 410 458
Note: See TracChangeset
for help on using the changeset viewer.