Changeset 13914
- Timestamp:
- 2020-11-30T11:55:56+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DOM/domain.F90
r13895 r13914 125 125 WRITE(numout,*) ' cn_cfg = ', TRIM( cn_cfg ), ' nn_cfg = ', nn_cfg 126 126 ENDIF 127 lwxios = .FALSE. 128 ln_xios_read = .FALSE. 127 129 128 ! 130 129 ! !== Reference coordinate system ==! 131 130 ! 132 131 CALL dom_glo ! global domain versus local domain 133 CALL dom_nam ! read namelist ( namrun, namdom ) 134 ! 135 IF( lwxios ) THEN 136 !define names for restart write and set core output (restart.F90) 137 CALL iom_set_rst_vars(rst_wfields) 138 CALL iom_set_rstw_core(cdstr) 139 ENDIF 140 !reset namelist for SAS 141 IF(cdstr == 'SAS') THEN 142 IF(lrxios) THEN 143 IF(lwp) write(numout,*) 'Disable reading restart file using XIOS for SAS' 144 lrxios = .FALSE. 145 ENDIF 146 ENDIF 147 ! 148 ! 149 IF( ln_rstart ) THEN ! check consistency between ln_rstart and ln_1st_euler 150 ! 151 IF(lwp) WRITE(numout,*) 'dom_nam : open the restart file' 152 CALL rst_read_open !- open the restart file 153 ! 154 IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 ) THEN !- check time-step consistency and force Euler restart if changed 155 CALL iom_get( numror, 'rdt', zrdt, ldxios = lrxios ) 156 IF( zrdt /= rn_Dt ) THEN 157 IF(lwp) WRITE( numout,*) 158 IF(lwp) WRITE( numout,*) 'ssh_init_rst: rdt not equal to the read one' 159 IF(lwp) WRITE( numout,*) 160 IF(lwp) WRITE( numout,*) ' ==>>> forced euler first time-step' 161 l_1st_euler = .TRUE. 162 ENDIF 163 ENDIF 164 ! 165 IF( iom_varid( numror, 'sshb', ldstop = .FALSE. ) <= 0 ) THEN !- check absence of one of the Kbb field (here sshb) 166 ! ! (any Kbb field is missing ==> all Kbb fields are missing) 167 IF( .NOT.l_1st_euler ) THEN 168 CALL ctl_warn ('ssh_init_rst: ssh at Kbb not found in restart files ', & 169 & 'l_1st_euler forced to .true. and ', & 170 & 'ssh(Kbb) = ssh(Kmm) ' ) 171 l_1st_euler = .TRUE. 172 ENDIF 173 ENDIF 174 ENDIF 132 CALL dom_nam( cdstr ) ! read namelist ( namrun, namdom ) 175 133 ! 176 134 CALL dom_hgr ! Horizontal mesh … … 338 296 339 297 340 SUBROUTINE dom_nam 298 SUBROUTINE dom_nam( cdstr ) 341 299 !!---------------------------------------------------------------------- 342 300 !! *** ROUTINE dom_nam *** … … 350 308 USE ioipsl 351 309 !! 352 INTEGER :: ios ! Local integer 310 CHARACTER (len=*), INTENT(in) :: cdstr ! model: NEMO or SAS. Determines core restart variables 311 ! 312 INTEGER :: ios ! Local integer 313 REAL(wp):: zrdt 314 !!---------------------------------------------------------------------- 353 315 ! 354 316 NAMELIST/namrun/ cn_ocerst_indir, cn_ocerst_outdir, nn_stocklist, ln_rst_list, & … … 368 330 WRITE(numout,*) '~~~~~~~ ' 369 331 ENDIF 332 ! 333 ! !=======================! 334 ! !== namelist namdom ==! 335 ! !=======================! 336 ! 337 READ ( numnam_ref, namdom, IOSTAT = ios, ERR = 903) 338 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in reference namelist' ) 339 READ ( numnam_cfg, namdom, IOSTAT = ios, ERR = 904 ) 340 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdom in configuration namelist' ) 341 IF(lwm) WRITE( numond, namdom ) 342 ! 343 #if defined key_agrif 344 IF( .NOT. Agrif_Root() ) THEN ! AGRIF child, subdivide the Parent timestep 345 rn_Dt = Agrif_Parent (rn_Dt ) / Agrif_Rhot() 346 ENDIF 347 #endif 348 ! 349 IF(lwp) THEN 350 WRITE(numout,*) 351 WRITE(numout,*) ' Namelist : namdom --- space & time domain' 352 WRITE(numout,*) ' linear free surface (=T) ln_linssh = ', ln_linssh 353 WRITE(numout,*) ' create mesh/mask file ln_meshmask = ', ln_meshmask 354 WRITE(numout,*) ' ocean time step rn_Dt = ', rn_Dt 355 WRITE(numout,*) ' asselin time filter parameter rn_atfp = ', rn_atfp 356 WRITE(numout,*) ' online coarsening of dynamical fields ln_crs = ', ln_crs 357 ENDIF 358 ! 359 ! set current model timestep rDt = 2*rn_Dt if MLF or rDt = rn_Dt if RK3 360 rDt = 2._wp * rn_Dt 361 r1_Dt = 1._wp / rDt 362 ! 363 #if defined key_qco 364 IF( ln_linssh ) CALL ctl_stop( 'STOP','domain: key_qco and ln_linssh = T are incompatible' ) 365 #endif 370 366 ! 371 367 ! !=======================! … … 431 427 nleapy = nn_leapy 432 428 ninist = nn_istate 429 ! 430 ! !== Set parameters for restart reading using xIOS ==! 431 lwxios = .FALSE. 432 ! 433 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 434 lrxios = ln_xios_read .AND. ln_rstart 435 IF( nn_wxios > 0 ) lwxios = .TRUE. !* set output file type for XIOS based on NEMO namelist 436 nxioso = nn_wxios 437 ENDIF 438 ! 439 IF( lwxios ) THEN !* define names for restart write and set core output (restart.F90) 440 CALL iom_set_rst_vars ( rst_wfields ) 441 CALL iom_set_rstw_core( cdstr ) 442 ENDIF 443 ! 444 IF( cdstr == 'SAS' ) THEN !* reset namelist for SAS 445 IF( lrxios ) THEN 446 IF(lwp) WRITE(numout,*) 'Disable reading restart file using XIOS for SAS' 447 lrxios = .FALSE. 448 ENDIF 449 ENDIF 450 ! 451 ! !== Check consistency between ln_rstart and ln_1st_euler ==! (i.e. set l_1st_euler) 433 452 l_1st_euler = ln_1st_euler 434 IF( .NOT. l_1st_euler .AND. .NOT. ln_rstart ) THEN 453 ! 454 IF( ln_rstart ) THEN !* Restart case 455 ! 456 IF(lwp) WRITE(numout,*) 457 IF(lwp) WRITE(numout,*) ' open the restart file' 458 CALL rst_read_open !- Open the restart file 459 ! 460 IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 ) THEN !- Check time-step consistency and force Euler restart if changed 461 CALL iom_get( numror, 'rdt', zrdt, ldxios = lrxios ) 462 IF( zrdt /= rn_Dt ) THEN 463 IF(lwp) WRITE( numout,*) 464 IF(lwp) WRITE( numout,*) ' rn_Dt = ', rn_Dt,' not equal to the READ one rdt = ', zrdt 465 IF(lwp) WRITE( numout,*) 466 IF(lwp) WRITE( numout,*) ' ==>>> forced euler first time-step' 467 l_1st_euler = .TRUE. 468 ENDIF 469 ENDIF 470 ! 471 IF( iom_varid( numror, 'sshb', ldstop = .FALSE. ) <= 0 ) THEN !- Check absence of one of the Kbb field (here sshb) 472 ! ! (any Kbb field is missing ==> all Kbb fields are missing) 473 IF( .NOT.l_1st_euler ) THEN 474 CALL ctl_warn('dom_nam : ssh at Kbb not found in restart files ', & 475 & 'l_1st_euler forced to .true. and ' , & 476 & 'ssh(Kbb) = ssh(Kmm) ' ) 477 l_1st_euler = .TRUE. 478 ENDIF 479 ENDIF 480 ELSEIF( .NOT.l_1st_euler ) THEN !* Initialization case 435 481 IF(lwp) WRITE(numout,*) 436 482 IF(lwp) WRITE(numout,*)' ==>>> Start from rest (ln_rstart=F)' 437 483 IF(lwp) WRITE(numout,*)' an Euler initial time step is used : l_1st_euler is forced to .true. ' 438 l_1st_euler = .true. 439 ENDIF 440 ! ! control of output frequency 441 IF( .NOT. ln_rst_list ) THEN ! we use nn_stock 484 l_1st_euler = .TRUE. 485 ENDIF 486 487 ! 488 ! !== control of output frequency ==! 489 ! 490 IF( .NOT. ln_rst_list ) THEN ! we use nn_stock 442 491 IF( nn_stock == -1 ) CALL ctl_warn( 'nn_stock = -1 --> no restart will be done' ) 443 492 IF( nn_stock == 0 .OR. nn_stock > nitend ) THEN … … 458 507 IF( Agrif_Root() ) THEN 459 508 IF(lwp) WRITE(numout,*) 460 SELECT CASE ( nleapy ) ! Choose calendar for IOIPSL509 SELECT CASE ( nleapy ) !== Choose calendar for IOIPSL ==! 461 510 CASE ( 1 ) 462 511 CALL ioconf_calendar('gregorian') … … 470 519 END SELECT 471 520 ENDIF 472 ! 473 ! !=======================! 474 ! !== namelist namdom ==! 475 ! !=======================! 476 ! 477 READ ( numnam_ref, namdom, IOSTAT = ios, ERR = 903) 478 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in reference namelist' ) 479 READ ( numnam_cfg, namdom, IOSTAT = ios, ERR = 904 ) 480 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdom in configuration namelist' ) 481 IF(lwm) WRITE( numond, namdom ) 482 ! 483 #if defined key_agrif 484 IF( .NOT. Agrif_Root() ) THEN ! AGRIF child, subdivide the Parent timestep 485 rn_Dt = Agrif_Parent (rn_Dt ) / Agrif_Rhot() 486 ENDIF 487 #endif 488 ! 489 IF(lwp) THEN 490 WRITE(numout,*) 491 WRITE(numout,*) ' Namelist : namdom --- space & time domain' 492 WRITE(numout,*) ' linear free surface (=T) ln_linssh = ', ln_linssh 493 WRITE(numout,*) ' create mesh/mask file ln_meshmask = ', ln_meshmask 494 WRITE(numout,*) ' ocean time step rn_Dt = ', rn_Dt 495 WRITE(numout,*) ' asselin time filter parameter rn_atfp = ', rn_atfp 496 WRITE(numout,*) ' online coarsening of dynamical fields ln_crs = ', ln_crs 497 ENDIF 498 ! 499 ! set current model timestep rDt = 2*rn_Dt if MLF or rDt = rn_Dt if RK3 500 rDt = 2._wp * rn_Dt 501 r1_Dt = 1._wp / rDt 502 ! 503 #if defined key_qco 504 IF( ln_linssh ) CALL ctl_stop( 'STOP','domain: key_qco and ln_linssh = T are incompatible' ) 505 #endif 506 507 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 508 lrxios = ln_xios_read .AND. ln_rstart 509 IF (nn_wxios > 0) lwxios = .TRUE. ! set output file type for XIOS based on NEMO namelist 510 nxioso = nn_wxios 511 ENDIF 512 521 522 513 523 #if defined key_netcdf4 514 524 !
Note: See TracChangeset
for help on using the changeset viewer.