- Timestamp:
- 2021-12-03T20:32:50+01:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14318_RK3_stage1
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14318_RK3_stage1
- Property svn:externals
-
old new 9 9 10 10 # SETTE 11 ^/utils/CI/sette@14244 sette 11 ^/utils/CI/sette@HEAD sette 12
-
- Property svn:externals
-
NEMO/branches/2021/dev_r14318_RK3_stage1/src/TOP/PISCES/SED/sedrst.F90
r14239 r15574 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 AGRIF44 CHARACTER(LEN=3) :: cdcomp 45 45 !!---------------------------------------------------------------------- 46 46 ! … … 65 65 66 66 IF( .NOT. ln_rst_list .AND. nn_stock == -1 ) RETURN ! we will never do any restart 67 68 67 ! to get better performances with NetCDF format: 69 ! we open and define the tracer restart file one tracer time step before writing the data (-> at nitrst - 1)70 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 171 IF( kt == nitrst - 2*nn_dtsed .OR. nn_stock == nn_dtsed .OR. ( kt == nitend - nn_dtsed.AND. .NOT. lrst_sed ) ) THEN68 ! we open and define the tracer restart file one tracer time step before writing the data (-> at nitrst - 2*nn_dttrc + 1) 69 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 2*nn_dttrc + 1 70 IF( kt == nitrst - 1 .OR. nn_stock == 1 .OR. ( kt == nitend - 1 .AND. .NOT. lrst_sed ) ) THEN 72 71 ! beware of the format used to write kt (default is i8.8, that should be large enough) 73 72 IF( nitrst > 1.0e9 ) THEN ; WRITE(clkt,* ) nitrst … … 81 80 IF(lwp) WRITE(numsed,*) & 82 81 ' open sed restart.output NetCDF file: ',TRIM(clpath)//clname 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_xios 87 cw_sedrst_cxt = "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 numrsw = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 94 CALL iom_init( cw_sedrst_cxt, kdid = numrsw, ld_closedef = .FALSE. ) 95 #else 96 CALL ctl_stop( 'Can not use XIOS in trc_rst_opn' ) 97 #endif 98 ENDIF 99 82 cdcomp ='SED' 83 CALL iom_open( TRIM(clpath)//TRIM(clname), numrsw, ldwrt = .TRUE., kdlev = jpksed, cdcomp = cdcomp ) 100 84 lrst_sed = .TRUE. 101 85 ENDIF … … 204 188 & zdta2(1:jpi,1:jpj,1:jpksed), iarroce(1:jpoce) ) 205 189 206 cltra = "sedligand"207 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN208 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:) )209 ELSE210 zdta2(:,:,:) = 0.0211 ENDIF212 213 CALL pack_arr( jpoce, sedligand(1:jpoce,1:jpksed), &214 & zdta2(1:jpi,1:jpj,1:jpksed), iarroce(1:jpoce) )215 190 IF( ln_timing ) CALL timing_stop('sed_rst_read') 216 191 … … 247 222 IF(lwp) WRITE(numsed,*) '~~~~~~~~~' 248 223 249 250 trcsedi(:,:,:,:) = 0.0251 flxsedi3d(:,:,:,:) = 0.0252 224 zdta(:,:) = 1.0 253 225 zdta2(:,:,:) = 0.0 254 255 226 256 227 !! 1. WRITE in nutwrs 257 228 !! ------------------ 258 !zinfo(1) = REAL( kt)259 CALL iom_rstput( kt, nitrst, numrsw, 'kt', REAL( kt , wp))229 zinfo(1) = REAL( kt) 230 CALL iom_rstput( kt, nitrst, numrsw, 'kt', zinfo ) 260 231 261 232 ! Back to 2D geometry 262 233 DO jn = 1, jpsol 263 CALL unpack_arr( jpoce, trcsedi(1:jpi,1:jpj,1:jpksed,jn) , iarroce(1:jpoce), &234 CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed) , iarroce(1:jpoce), & 264 235 & solcp(1:jpoce,1:jpksed,jn ) ) 236 cltra = TRIM(sedtrcd(jn)) 237 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 265 238 END DO 266 239 267 240 DO jn = 1, jpwat 268 CALL unpack_arr( jpoce, trcsedi(1:jpi,1:jpj,1:jpksed,jpsol+jn) , iarroce(1:jpoce), &241 CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed) , iarroce(1:jpoce), & 269 242 & pwcp(1:jpoce,1:jpksed,jn ) ) 243 cltra = TRIM(sedtrcd(jpsol+jn)) 244 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 270 245 END DO 271 246 ! pH … … 276 251 ENDDO 277 252 278 CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,1) , iarroce(1:jpoce), &253 CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed) , iarroce(1:jpoce), & 279 254 & zdta(1:jpoce,1:jpksed) ) 255 cltra = TRIM(seddia3d(1)) 256 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 280 257 281 CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,2) , iarroce(1:jpoce), &258 CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed) , iarroce(1:jpoce), & 282 259 & co3por(1:jpoce,1:jpksed) ) 260 cltra = TRIM(seddia3d(2)) 261 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 283 262 284 263 ! prognostic variables 285 264 ! -------------------- 286 265 287 DO jn = 1, jptrased288 cltra = TRIM(sedtrcd(jn))289 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), trcsedi(:,:,:,jn) )290 ENDDO291 292 DO jn = 1, 2293 cltra = TRIM(seddia3d(jn))294 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), flxsedi3d(:,:,:,jn) )295 ENDDO296 297 266 CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed) , iarroce(1:jpoce), & 298 267 & db(1:jpoce,1:jpksed) ) … … 307 276 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 308 277 309 CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed) , iarroce(1:jpoce), &310 & sedligand(1:jpoce,1:jpksed) )311 312 cltra = "sedligand"313 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) )314 315 278 IF( kt == nitrst ) THEN 316 IF(.NOT.lwxios) THEN 317 CALL iom_close( numrsw ) ! close the restart file (only at last time step) 318 ELSE 319 CALL iom_context_finalize( cw_sedrst_cxt ) 320 iom_file(numrsw)%nfid = 0 321 numrsw = 0 322 ENDIF 279 CALL iom_close( numrsw ) ! close the restart file (only at last time step) 323 280 IF( l_offline .AND. ln_rst_list ) THEN 324 281 nrst_lst = nrst_lst + 1 … … 351 308 !! In both those options, the exact duration of the experiment 352 309 !! since the beginning (cumulated duration of all previous restart runs) 353 !! is not stored in the restart and is assumed to be (nittrc000-1)*r n_Dt.310 !! is not stored in the restart and is assumed to be (nittrc000-1)*rdt. 354 311 !! This is valid is the time step has remained constant. 355 312 !! … … 363 320 REAL(wp) :: zkt, zrdttrc1 364 321 REAL(wp) :: zndastp 365 CHARACTER(len = 82) :: clpname366 322 367 323 ! Time domain : restart … … 375 331 376 332 IF( ln_rst_sed ) THEN 377 lxios_sini = .FALSE.378 333 CALL iom_open( TRIM(cn_sedrst_indir)//'/'//cn_sedrst_in, numrsr ) 379 380 IF( lrxios) THEN381 cr_sedrst_cxt = 'sed_rst'382 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SED'383 ! IF( TRIM(Agrif_CFixed()) == '0' ) THEN384 ! clpname = cn_sedrst_in385 ! ELSE386 ! clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in387 ! ENDIF388 CALL iom_init( cr_sedrst_cxt, kdid = numrsr, ld_closedef = .TRUE. )389 ENDIF390 334 CALL iom_get ( numrsr, 'kt', zkt ) ! last time-step of previous run 335 391 336 IF(lwp) THEN 392 337 WRITE(numsed,*) ' *** Info read in restart : ' … … 401 346 ENDIF 402 347 ! Control of date 403 IF( nittrc000 - NINT( zkt ) /= nn_dtsed.AND. nn_rstsed /= 0 ) &348 IF( nittrc000 - NINT( zkt ) /= 1 .AND. nn_rstsed /= 0 ) & 404 349 & CALL ctl_stop( ' ===>>>> : problem with nittrc000 for the restart', & 405 350 & ' verify the restart file or rerun with nn_rsttr = 0 (namelist)' ) … … 414 359 ELSE 415 360 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam 416 adatrj = ( REAL( nittrc000-1, wp ) * r n_Dt ) / rday361 adatrj = ( REAL( nittrc000-1, wp ) * rdt ) / rday 417 362 ! note this is wrong if time step has changed during run 418 363 ENDIF … … 435 380 IF(lwp) WRITE(numsed,*) 'trc_wri : write the TOP restart file (NetCDF) at it= ', kt, ' date= ', ndastp 436 381 IF(lwp) WRITE(numsed,*) '~~~~~~~' 437 IF( lwxios ) CALL iom_init_closedef(cw_sedrst_cxt)438 382 ENDIF 439 383 CALL iom_rstput( kt, nitrst, numrsw, 'kt' , REAL( kt , wp) ) ! time-step 440 384 CALL iom_rstput( kt, nitrst, numrsw, 'ndastp' , REAL( ndastp, wp) ) ! date 441 CALL iom_rstput( kt, nitrst, numrsw, 'adatrj' , adatrj ) ! number of elapsed days since442 ! 385 CALL iom_rstput( kt, nitrst, numrsw, 'adatrj' , adatrj ) ! number of elapsed days since 386 ! ! the begining of the run [s] 443 387 ENDIF 444 388
Note: See TracChangeset
for help on using the changeset viewer.