Changeset 12377 for NEMO/trunk/src/OCE/DOM/domain.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/OCE/DOM/domain.F90
r11536 r12377 30 30 USE trc_oce ! shared ocean & passive tracers variab 31 31 USE phycst ! physical constants 32 USE closea ! closed seas33 32 USE domhgr ! domain: set the horizontal mesh 34 33 USE domzgr ! domain: set the vertical mesh … … 38 37 USE c1d ! 1D configuration 39 38 USE dyncor_c1d ! 1D configuration: Coriolis term (cor_c1d routine) 40 USE wet_dry, ONLY : ll_wd 39 USE wet_dry, ONLY : ll_wd 40 USE closea , ONLY : dom_clo ! closed seas 41 41 ! 42 42 USE in_out_manager ! I/O manager … … 58 58 CONTAINS 59 59 60 SUBROUTINE dom_init( cdstr)60 SUBROUTINE dom_init( Kbb, Kmm, Kaa, cdstr ) 61 61 !!---------------------------------------------------------------------- 62 62 !! *** ROUTINE dom_init *** … … 73 73 !! - 1D configuration, move Coriolis, u and v at T-point 74 74 !!---------------------------------------------------------------------- 75 INTEGER , INTENT(in) :: Kbb, Kmm, Kaa ! ocean time level indices 76 CHARACTER (len=*), INTENT(in) :: cdstr ! model: NEMO or SAS. Determines core restart variables 77 ! 75 78 INTEGER :: ji, jj, jk, ik ! dummy loop indices 76 79 INTEGER :: iconf = 0 ! local integers 77 80 CHARACTER (len=64) :: cform = "(A12, 3(A13, I7))" 78 CHARACTER (len=*), INTENT(IN) :: cdstr ! model: NEMO or SAS. Determines core restart variables79 81 INTEGER , DIMENSION(jpi,jpj) :: ik_top , ik_bot ! top and bottom ocean level 80 82 REAL(wp), DIMENSION(jpi,jpj) :: z1_hu_0, z1_hv_0 … … 134 136 ENDIF 135 137 ! 136 CALL dom_hgr ! Horizontal mesh 137 CALL dom_zgr( ik_top, ik_bot ) ! Vertical mesh and bathymetry 138 CALL dom_msk( ik_top, ik_bot ) ! Masks 139 IF( ln_closea ) CALL dom_clo ! ln_closea=T : closed seas included in the simulation 140 ! Read in masks to define closed seas and lakes 141 ! 142 DO jj = 1, jpj ! depth of the iceshelves 143 DO ji = 1, jpi 144 ik = mikt(ji,jj) 145 risfdep(ji,jj) = gdepw_0(ji,jj,ik) 146 END DO 147 END DO 138 CALL dom_hgr ! Horizontal mesh 139 140 IF( ln_closea ) CALL dom_clo ! Read in masks to define closed seas and lakes 141 142 CALL dom_zgr( ik_top, ik_bot ) ! Vertical mesh and bathymetry 143 144 CALL dom_msk( ik_top, ik_bot ) ! Masks 148 145 ! 149 146 ht_0(:,:) = 0._wp ! Reference ocean thickness … … 161 158 ! 162 159 ! before ! now ! after ! 163 gdept _b = gdept_0 ; gdept_n = gdept_0 ! ---! depth of grid-points164 gdepw _b = gdepw_0 ; gdepw_n = gdepw_0 ! ---!165 gde3w _n= gde3w_0 ! --- !160 gdept(:,:,:,Kbb) = gdept_0 ; gdept(:,:,:,Kmm) = gdept_0 ; gdept(:,:,:,Kaa) = gdept_0 ! depth of grid-points 161 gdepw(:,:,:,Kbb) = gdepw_0 ; gdepw(:,:,:,Kmm) = gdepw_0 ; gdepw(:,:,:,Kaa) = gdepw_0 ! 162 gde3w = gde3w_0 ! --- ! 166 163 ! 167 e3t _b = e3t_0 ; e3t_n = e3t_0 ; e3t_a= e3t_0 ! scale factors168 e3u _b = e3u_0 ; e3u_n = e3u_0 ; e3u_a= e3u_0 !169 e3v _b = e3v_0 ; e3v_n = e3v_0 ; e3v_a= e3v_0 !170 e3f _n= e3f_0 ! --- !171 e3w _b = e3w_0 ; e3w_n = e3w_0 ! --- !172 e3uw _b = e3uw_0 ; e3uw_n = e3uw_0 ! --- !173 e3vw _b = e3vw_0 ; e3vw_n = e3vw_0 ! ---!164 e3t(:,:,:,Kbb) = e3t_0 ; e3t(:,:,:,Kmm) = e3t_0 ; e3t(:,:,:,Kaa) = e3t_0 ! scale factors 165 e3u(:,:,:,Kbb) = e3u_0 ; e3u(:,:,:,Kmm) = e3u_0 ; e3u(:,:,:,Kaa) = e3u_0 ! 166 e3v(:,:,:,Kbb) = e3v_0 ; e3v(:,:,:,Kmm) = e3v_0 ; e3v(:,:,:,Kaa) = e3v_0 ! 167 e3f = e3f_0 ! --- ! 168 e3w(:,:,:,Kbb) = e3w_0 ; e3w(:,:,:,Kmm) = e3w_0 ; e3w(:,:,:,Kaa) = e3w_0 ! 169 e3uw(:,:,:,Kbb) = e3uw_0 ; e3uw(:,:,:,Kmm) = e3uw_0 ; e3uw(:,:,:,Kaa) = e3uw_0 ! 170 e3vw(:,:,:,Kbb) = e3vw_0 ; e3vw(:,:,:,Kmm) = e3vw_0 ; e3vw(:,:,:,Kaa) = e3vw_0 ! 174 171 ! 175 172 z1_hu_0(:,:) = ssumask(:,:) / ( hu_0(:,:) + 1._wp - ssumask(:,:) ) ! _i mask due to ISF … … 177 174 ! 178 175 ! before ! now ! after ! 179 ht _n= ht_0 ! ! water column thickness180 hu _b = hu_0 ; hu_n = hu_0 ; hu_a= hu_0 !181 hv _b = hv_0 ; hv_n = hv_0 ; hv_a= hv_0 !182 r1_hu _b = z1_hu_0 ; r1_hu_n = z1_hu_0 ; r1_hu_a= z1_hu_0 ! inverse of water column thickness183 r1_hv _b = z1_hv_0 ; r1_hv_n = z1_hv_0 ; r1_hv_a= z1_hv_0 !176 ht = ht_0 ! ! water column thickness 177 hu(:,:,Kbb) = hu_0 ; hu(:,:,Kmm) = hu_0 ; hu(:,:,Kaa) = hu_0 ! 178 hv(:,:,Kbb) = hv_0 ; hv(:,:,Kmm) = hv_0 ; hv(:,:,Kaa) = hv_0 ! 179 r1_hu(:,:,Kbb) = z1_hu_0 ; r1_hu(:,:,Kmm) = z1_hu_0 ; r1_hu(:,:,Kaa) = z1_hu_0 ! inverse of water column thickness 180 r1_hv(:,:,Kbb) = z1_hv_0 ; r1_hv(:,:,Kmm) = z1_hv_0 ; r1_hv(:,:,Kaa) = z1_hv_0 ! 184 181 ! 185 182 ! 186 183 ELSE != time varying : initialize before/now/after variables 187 184 ! 188 IF( .NOT.l_offline ) CALL dom_vvl_init 185 IF( .NOT.l_offline ) CALL dom_vvl_init( Kbb, Kmm, Kaa ) 189 186 ! 190 187 ENDIF … … 192 189 IF( lk_c1d ) CALL cor_c1d ! 1D configuration: Coriolis set at T-point 193 190 ! 194 IF( ln_meshmask .AND. .NOT.ln_iscpl ) CALL dom_wri ! Create a domain file 195 IF( ln_meshmask .AND. ln_iscpl .AND. .NOT.ln_rstart ) CALL dom_wri ! Create a domain file 196 IF( .NOT.ln_rstart ) CALL dom_ctl ! Domain control 197 ! 198 IF( ln_write_cfg ) CALL cfg_write ! create the configuration file 191 IF( ln_meshmask ) CALL dom_wri ! Create a domain file 192 IF( .NOT.ln_rstart ) CALL dom_ctl ! Domain control 193 ! 194 IF( ln_write_cfg ) CALL cfg_write ! create the configuration file 199 195 ! 200 196 IF(lwp) THEN … … 292 288 & nn_it000, nn_itend , nn_date0 , nn_time0 , nn_leapy , nn_istate , & 293 289 & nn_stock, nn_write , ln_mskland , ln_clobber , nn_chunksz, nn_euler , & 294 & ln_cfmeta, ln_ iscpl, ln_xios_read, nn_wxios295 NAMELIST/namdom/ ln_linssh, rn_ isfhmin, rn_rdt, rn_atfp, ln_crs, ln_meshmask290 & ln_cfmeta, ln_xios_read, nn_wxios 291 NAMELIST/namdom/ ln_linssh, rn_rdt, rn_atfp, ln_crs, ln_meshmask 296 292 #if defined key_netcdf4 297 293 NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip … … 306 302 ! 307 303 ! 308 REWIND( numnam_ref ) ! Namelist namrun in reference namelist : Parameters of the run309 304 READ ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) 310 305 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namrun in reference namelist' ) 311 REWIND( numnam_cfg ) ! Namelist namrun in configuration namelist : Parameters of the run312 306 READ ( numnam_cfg, namrun, IOSTAT = ios, ERR = 902 ) 313 307 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namrun in configuration namelist' ) … … 343 337 WRITE(numout,*) ' overwrite an existing file ln_clobber = ', ln_clobber 344 338 WRITE(numout,*) ' NetCDF chunksize (bytes) nn_chunksz = ', nn_chunksz 345 WRITE(numout,*) ' IS coupling at the restart step ln_iscpl = ', ln_iscpl346 339 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 347 340 WRITE(numout,*) ' READ restart for a single file using XIOS ln_xios_read =', ln_xios_read … … 404 397 #endif 405 398 406 REWIND( numnam_ref ) ! Namelist namdom in reference namelist : space & time domain (bathymetry, mesh, timestep)407 399 READ ( numnam_ref, namdom, IOSTAT = ios, ERR = 903) 408 400 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in reference namelist' ) 409 REWIND( numnam_cfg ) ! Namelist namdom in configuration namelist : space & time domain (bathymetry, mesh, timestep)410 401 READ ( numnam_cfg, namdom, IOSTAT = ios, ERR = 904 ) 411 402 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdom in configuration namelist' ) … … 417 408 WRITE(numout,*) ' linear free surface (=T) ln_linssh = ', ln_linssh 418 409 WRITE(numout,*) ' create mesh/mask file ln_meshmask = ', ln_meshmask 419 WRITE(numout,*) ' treshold to open the isf cavity rn_isfhmin = ', rn_isfhmin, ' [m]'420 410 WRITE(numout,*) ' ocean time step rn_rdt = ', rn_rdt 421 411 WRITE(numout,*) ' asselin time filter parameter rn_atfp = ', rn_atfp … … 436 426 #if defined key_netcdf4 437 427 ! ! NetCDF 4 case ("key_netcdf4" defined) 438 REWIND( numnam_ref ) ! Namelist namnc4 in reference namelist : NETCDF439 428 READ ( numnam_ref, namnc4, IOSTAT = ios, ERR = 907) 440 429 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namnc4 in reference namelist' ) 441 REWIND( numnam_cfg ) ! Namelist namnc4 in configuration namelist : NETCDF442 430 READ ( numnam_cfg, namnc4, IOSTAT = ios, ERR = 908 ) 443 431 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'namnc4 in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.