- Timestamp:
- 2020-06-24T14:38:26+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/SWE/domain.F90
r12822 r13151 34 34 USE dommsk ! domain: set the mask system 35 35 USE domwri ! domain: write the meshmask file 36 !!st5 37 #if ! defined key_qco 36 38 USE domvvl ! variable volume 39 #else 40 USE domqco ! variable volume 41 #endif 42 !!st5 37 43 USE c1d ! 1D configuration 38 44 USE dyncor_c1d ! 1D configuration: Coriolis term (cor_c1d routine) … … 78 84 CHARACTER (len=*), INTENT(in) :: cdstr ! model: NEMO or SAS. Determines core restart variables 79 85 ! 80 INTEGER :: ji, jj, jk, ik ! dummy loop indices 86 !!st6 87 INTEGER :: ji, jj, jk, jt ! dummy loop indices 88 !!st6 81 89 INTEGER :: iconf = 0 ! local integers 82 90 CHARACTER (len=64) :: cform = "(A12, 3(A13, I7))" … … 114 122 CASE( 7 ) ; WRITE(numout,*) ' (i.e. cyclic east-west and north-south)' 115 123 CASE DEFAULT 116 CALL ctl_stop( ' jperio is out of range' )124 CALL ctl_stop( 'dom_init: jperio is out of range' ) 117 125 END SELECT 118 126 WRITE(numout,*) ' Ocean model configuration used:' … … 144 152 IF( ln_closea ) CALL dom_clo ! Read in masks to define closed seas and lakes 145 153 146 CALL dom_zgr( ik_top, ik_bot ) ! Vertical mesh and bathymetry 154 CALL dom_zgr( ik_top, ik_bot ) ! Vertical mesh and bathymetry (return top and bottom ocean t-level indices) 147 155 148 156 CALL dom_msk( ik_top, ik_bot ) ! Masks 149 150 ht_0(:,:) = 0._wp 157 ! 158 ht_0(:,:) = 0._wp ! Reference ocean thickness 151 159 hu_0(:,:) = 0._wp 152 160 hv_0(:,:) = 0._wp … … 190 198 ! r1_e1e2t(ji,jj) = r1_e1e2t(ji,jj) / zcoeff 191 199 !!an45 200 !!st7 : make it easier to use key_qco condition (gm stuff) 201 #if defined key_qco 202 ! !== initialisation of time varying coordinate ==! Quasi-Euerian coordinate case 203 ! 204 IF( .NOT.l_offline ) CALL dom_qco_init( Kbb, Kmm, Kaa ) 205 ! 206 IF( ln_linssh ) CALL ctl_stop('STOP','domain: key_qco and ln_linssh = T are incompatible') 207 ! 208 #else 192 209 ! !== time varying part of coordinate system ==! 193 210 ! 194 211 IF( ln_linssh ) THEN != Fix in time : set to the reference one for all 195 !196 ! before ! now ! after !197 gdept(:,:,:, Kbb) = gdept_0 ; gdept(:,:,:,Kmm) = gdept_0 ; gdept(:,:,:,Kaa) = gdept_0 ! depth of grid-points198 gdepw(:,:,:, Kbb) = gdepw_0 ; gdepw(:,:,:,Kmm) = gdepw_0 ; gdepw(:,:,:,Kaa) = gdepw_0 !199 gde3w = gde3w_0 ! --- !200 !201 e3t(:,:,:,Kbb) = e3t_0 ; e3t(:,:,:,Kmm) = e3t_0 ; e3t(:,:,:,Kaa) = e3t_0 ! scale factors202 e3u(:,:,:,Kbb) = e3u_0 ; e3u(:,:,:,Kmm) = e3u_0 ; e3u(:,:,:,Kaa) = e3u_0 !203 e3v(:,:,:,Kbb) = e3v_0 ; e3v(:,:,:,Kmm) = e3v_0 ; e3v(:,:,:,Kaa) = e3v_0 !204 e3f = e3f_0 ! --- !205 e3w(:,:,:,Kbb) = e3w_0 ; e3w(:,:,:,Kmm) = e3w_0 ; e3w(:,:,:,Kaa) = e3w_0 !206 e3uw(:,:,:,Kbb) = e3uw_0 ; e3uw(:,:,:,Kmm) = e3uw_0 ; e3uw(:,:,:,Kaa) = e3uw_0 !207 e3vw(:,:,:,Kbb) = e3vw_0 ; e3vw(:,:,:,Kmm) = e3vw_0 ; e3vw(:,:,:,Kaa) = e3vw_0 !208 !209 z1_hu_0(:,:) = ssumask(:,:) / ( hu_0(:,:) + 1._wp - ssumask(:,:) ) ! _i mask due to ISF210 z1_hv_0(:,:) = ssvmask(:,:) / ( hv_0(:,:) + 1._wp - ssvmask(:,:))211 ! 212 ! before ! now ! after !213 ht = ht_0 ! ! water column thickness214 hu(:,:,Kbb) = hu_0 ; hu(:,:,Kmm) = hu_0 ; hu(:,:,Kaa) = hu_0 !215 hv(:,:,Kbb) = hv_0 ; hv(:,:,Kmm) = hv_0 ; hv(:,:,Kaa) = hv_0 !216 r1_h u(:,:,Kbb) = z1_hu_0 ; r1_hu(:,:,Kmm) = z1_hu_0 ; r1_hu(:,:,Kaa) = z1_hu_0 ! inverse of water column thickness217 r1_hv(:,:,Kbb) = z1_hv_0 ; r1_hv(:,:,Kmm) = z1_hv_0 ; r1_hv(:,:,Kaa) = z1_hv_0 !218 !212 ! 213 DO jt = 1, jpt ! depth of t- and w-grid-points 214 gdept(:,:,:,jt) = gdept_0(:,:,:) 215 gdepw(:,:,:,jt) = gdepw_0(:,:,:) 216 END DO 217 gde3w(:,:,:) = gde3w_0(:,:,:) ! = gdept as the sum of e3t 218 ! 219 DO jt = 1, jpt ! vertical scale factors 220 e3t(:,:,:,jt) = e3t_0(:,:,:) 221 e3u(:,:,:,jt) = e3u_0(:,:,:) 222 e3v(:,:,:,jt) = e3v_0(:,:,:) 223 e3w(:,:,:,jt) = e3w_0(:,:,:) 224 e3uw(:,:,:,jt) = e3uw_0(:,:,:) 225 e3vw(:,:,:,jt) = e3vw_0(:,:,:) 226 END DO 227 e3f(:,:,:) = e3f_0(:,:,:) 228 ! 229 DO jt = 1, jpt ! water column thickness and its inverse 230 hu(:,:,jt) = hu_0(:,:) 231 hv(:,:,jt) = hv_0(:,:) 232 r1_hu(:,:,jt) = r1_hu_0(:,:) 233 r1_hv(:,:,jt) = r1_hv_0(:,:) 234 END DO 235 ht(:,:) = ht_0(:,:) 219 236 ! 220 237 ELSE != time varying : initialize before/now/after variables 221 238 ! 222 IF( .NOT.l_offline ) CALL dom_vvl_init( Kbb, Kmm, Kaa ) 223 ! 224 ENDIF 239 IF( .NOT.l_offline ) CALL dom_vvl_init( Kbb, Kmm, Kaa ) 240 ! 241 ENDIF 242 #endif 243 !!st7 225 244 ! 226 245 IF( lk_c1d ) CALL cor_c1d ! 1D configuration: Coriolis set at T-point … … 238 257 WRITE(numout,*) 239 258 ENDIF 240 241 259 ! 242 260 END SUBROUTINE dom_init
Note: See TracChangeset
for help on using the changeset viewer.