Changeset 14143 for NEMO/trunk/src/OCE/DOM
- Timestamp:
- 2020-12-09T22:26:04+01:00 (4 years ago)
- Location:
- NEMO/trunk/src/OCE/DOM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/DOM/dom_oce.F90
r14072 r14143 136 136 ! 137 137 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ff_f , ff_t !: Coriolis factor at f- & t-points [1/s] 138 138 139 !!---------------------------------------------------------------------- 139 140 !! vertical coordinate and scale factors 140 141 !! --------------------------------------------------------------------- 142 #if defined key_qco 143 LOGICAL, PUBLIC, PARAMETER :: lk_qco = .TRUE. !: qco key flag 144 #else 145 LOGICAL, PUBLIC, PARAMETER :: lk_qco = .FALSE. !: qco key flag 146 #endif 147 #if defined key_linssh 148 LOGICAL, PUBLIC, PARAMETER :: lk_linssh = .TRUE. !: linssh key flag 149 #else 150 LOGICAL, PUBLIC, PARAMETER :: lk_linssh = .FALSE. !: linssh key flag 151 #endif 141 152 LOGICAL, PUBLIC :: ln_zco !: z-coordinate - full step 142 153 LOGICAL, PUBLIC :: ln_zps !: z-coordinate - partial step … … 151 162 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3uw_0 !: uw-vert. scale factor [m] 152 163 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3vw_0 !: vw-vert. scale factor [m] 153 ! ! time-dependent scale factors 154 #if ! defined key_qco 164 165 ! ! time-dependent scale factors (domvvl) 155 166 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: e3t, e3u, e3v, e3w, e3uw, e3vw !: vert. scale factor [m] 156 167 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3f !: F-point vert. scale factor [m] 157 #endif 158 ! ! time-dependent ratio ssh / h_0 168 169 ! ! time-dependent ratio ssh / h_0 (domqco) 159 170 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: r3t, r3u, r3v !: time-dependent ratio at t-, u- and v-point [-] 160 171 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: r3f !: mid-time-level ratio at f-point [-] … … 165 176 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gdepw_0 !: w- depth [m] 166 177 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gde3w_0 !: w- depth (sum of e3w) [m] 167 ! ! time-dependent depths of cells 178 179 ! ! time-dependent depths of cells (domvvl) 168 180 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: gdept, gdepw 169 181 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gde3w … … 174 186 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hv_0, r1_hv_0 !: v-depth [m] and [1/m] 175 187 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hf_0, r1_hf_0 !: f-depth [m] and [1/m] 176 ! ! time-dependent heights of ocean water column177 #if ! defined key_qco 188 189 ! ! time-dependent heights of ocean water column (domvvl) 178 190 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ht !: t-points [m] 179 #endif180 191 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hu, r1_hu !: u-depth [m] and [1/m] 181 192 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hv, r1_hv !: v-depth [m] and [1/m] … … 207 218 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: tmask, umask, vmask, wmask, fmask !: land/ocean mask at T-, U-, V-, W- and F-pts 208 219 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: wumask, wvmask !: land/ocean mask at WU- and WV-pts 209 #if defined key_qco 210 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: fe3mask !: land/ocean mask at F-pts for qco 211 #endif 220 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:), TARGET :: fe3mask !: land/ocean mask at F-pts (qco only) 221 212 222 !!---------------------------------------------------------------------- 213 223 !! calendar variables … … 301 311 ! 302 312 ii = ii+1 303 ALLOCATE( gdept_0(jpi,jpj,jpk) , gdepw_0(jpi,jpj,jpk) , gde3w_0(jpi,jpj,jpk) , & 304 & gdept (jpi,jpj,jpk,jpt) , gdepw (jpi,jpj,jpk,jpt) , gde3w (jpi,jpj,jpk) , STAT=ierr(ii) ) 305 ! 306 ii = ii+1 307 ALLOCATE( e3t_0(jpi,jpj,jpk) , e3u_0 (jpi,jpj,jpk) , e3v_0 (jpi,jpj,jpk) , e3f_0(jpi,jpj,jpk) , & 308 & e3w_0(jpi,jpj,jpk) , e3uw_0(jpi,jpj,jpk) , e3vw_0(jpi,jpj,jpk) , STAT=ierr(ii) ) 313 ALLOCATE( gdept_0 (jpi,jpj,jpk) , gdepw_0 (jpi,jpj,jpk) , gde3w_0(jpi,jpj,jpk) , & 314 & gdept_1d( jpk) , gdepw_1d( jpk) , STAT=ierr(ii) ) 315 ! 316 ii = ii+1 317 ALLOCATE( e3t_0 (jpi,jpj,jpk) , e3u_0 (jpi,jpj,jpk) , e3v_0 (jpi,jpj,jpk) , e3f_0(jpi,jpj,jpk) , & 318 & e3w_0 (jpi,jpj,jpk) , e3uw_0(jpi,jpj,jpk) , e3vw_0(jpi,jpj,jpk) , & 319 & e3t_1d( jpk) , e3w_1d( jpk) , STAT=ierr(ii) ) 320 ! 321 ii = ii+1 322 ALLOCATE( ht_0(jpi,jpj) , hu_0(jpi,jpj) , hv_0(jpi,jpj) , hf_0(jpi,jpj) , & 323 & r1_ht_0(jpi,jpj) , r1_hu_0(jpi,jpj) , r1_hv_0(jpi,jpj), r1_hf_0(jpi,jpj) , STAT=ierr(ii) ) 309 324 ! 310 325 #if defined key_qco 311 ii = ii+1 312 ALLOCATE( r3t (jpi,jpj,jpt) , r3u (jpi,jpj,jpt) , r3v (jpi,jpj,jpt) , r3f (jpi,jpj) , & 313 & r3t_f(jpi,jpj) , r3u_f(jpi,jpj) , r3v_f(jpi,jpj) , STAT=ierr(ii) ) 326 ! qco : ssh to h ratio and specific fmask 327 ii = ii+1 328 ALLOCATE( r3t (jpi,jpj,jpt) , r3u (jpi,jpj,jpt) , r3v (jpi,jpj,jpt) , r3f (jpi,jpj) , & 329 & r3t_f(jpi,jpj) , r3u_f(jpi,jpj) , r3v_f(jpi,jpj) , STAT=ierr(ii) ) 330 ! 331 ii = ii+1 332 ALLOCATE( fe3mask(jpi,jpj,jpk) , STAT=ierr(ii) ) 333 ! 334 #elif defined key_linssh 335 ! linear ssh no time varying coordinate arrays 314 336 #else 337 ! vvl : time varation for all vertical coordinate variables 338 ii = ii+1 339 ALLOCATE( gdept (jpi,jpj,jpk,jpt) , gdepw (jpi,jpj,jpk,jpt) , gde3w (jpi,jpj,jpk) , STAT=ierr(ii) ) 340 ! 315 341 ii = ii+1 316 342 ALLOCATE( e3t(jpi,jpj,jpk,jpt) , e3u (jpi,jpj,jpk,jpt) , e3v (jpi,jpj,jpk,jpt) , e3f(jpi,jpj,jpk) , & 317 343 & e3w(jpi,jpj,jpk,jpt) , e3uw(jpi,jpj,jpk,jpt) , e3vw(jpi,jpj,jpk,jpt) , STAT=ierr(ii) ) 318 #endif 319 ! 320 ii = ii+1 321 ALLOCATE( ht_0(jpi,jpj) , hu_0(jpi,jpj) , hv_0(jpi,jpj) , hf_0(jpi,jpj) , & 322 & r1_ht_0(jpi,jpj) , r1_hu_0(jpi,jpj) , r1_hv_0(jpi,jpj), r1_hf_0(jpi,jpj) , STAT=ierr(ii) ) 323 ! 324 #if ! defined key_qco 325 ii = ii+1 326 ALLOCATE( ht (jpi,jpj) , hu (jpi,jpj,jpt), hv (jpi,jpj,jpt) , & 327 & r1_hu (jpi,jpj,jpt), r1_hv (jpi,jpj,jpt) , STAT=ierr(ii) ) 344 ! 345 ii = ii+1 346 ALLOCATE( ht (jpi,jpj) , hu (jpi,jpj,jpt), hv (jpi,jpj,jpt) , & 347 & r1_hu (jpi,jpj,jpt), r1_hv (jpi,jpj,jpt) , STAT=ierr(ii) ) 328 348 #endif 329 349 ! … … 332 352 ! 333 353 ii = ii+1 334 ALLOCATE( gdept_1d(jpk) , gdepw_1d(jpk) , e3t_1d(jpk) , e3w_1d(jpk) , STAT=ierr(ii) ) 335 ! 336 ii = ii+1 337 ALLOCATE( tmask_i(jpi,jpj) , tmask_h(jpi,jpj) , & 354 ALLOCATE( tmask_i(jpi,jpj) , tmask_h(jpi,jpj) , & 338 355 & ssmask (jpi,jpj) , ssumask(jpi,jpj) , ssvmask(jpi,jpj) , ssfmask(jpi,jpj) , & 339 & mbkt (jpi,jpj) , mbku (jpi,jpj) , mbkv (jpi,jpj) ,STAT=ierr(ii) )356 & mbkt (jpi,jpj) , mbku (jpi,jpj) , mbkv (jpi,jpj) , STAT=ierr(ii) ) 340 357 ! 341 358 ii = ii+1 … … 348 365 ii = ii+1 349 366 ALLOCATE( wmask(jpi,jpj,jpk) , wumask(jpi,jpj,jpk), wvmask(jpi,jpj,jpk) , STAT=ierr(ii) ) 350 #if defined key_qco351 !352 ii = ii+1353 ALLOCATE( fe3mask(jpi,jpj,jpk) , STAT=ierr(ii) )354 #endif355 367 ! 356 368 dom_oce_alloc = MAXVAL(ierr) -
NEMO/trunk/src/OCE/DOM/domzgr_substitute.h90
r14053 r14143 28 28 # define gdepw(i,j,k,t) (gdepw_0(i,j,k)*(1._wp+r3t(i,j,t))) 29 29 # define gde3w(i,j,k) (gdept_0(i,j,k)*(1._wp+r3t(i,j,Kmm))-ssh(i,j,Kmm)) 30 #elif defined key_linssh 31 # define e3t(i,j,k,t) e3t_0(i,j,k) 32 # define e3u(i,j,k,t) e3u_0(i,j,k) 33 # define e3v(i,j,k,t) e3v_0(i,j,k) 34 # define e3f(i,j,k) e3f_0(i,j,k) 35 # define e3f_vor(i,j,k) e3f_0vor(i,j,k) 36 # define e3w(i,j,k,t) e3w_0(i,j,k) 37 # define e3uw(i,j,k,t) e3uw_0(i,j,k) 38 # define e3vw(i,j,k,t) e3vw_0(i,j,k) 39 # define ht(i,j) ht_0(i,j) 40 # define hu(i,j,t) hu_0(i,j) 41 # define hv(i,j,t) hv_0(i,j) 42 # define r1_hu(i,j,t) r1_hu_0(i,j) 43 # define r1_hv(i,j,t) r1_hv_0(i,j) 44 # define gdept(i,j,k,t) gdept_0(i,j,k) 45 # define gdepw(i,j,k,t) gdepw_0(i,j,k) 46 # define gde3w(i,j,k) (gdept_0(i,j,k)-ssh(i,j,Kmm)) 30 47 #endif 31 48 !!---------------------------------------------------------------------- 32 !!# define e3t_f(i,j,k) (e3t_0(i,j,k)*(1._wp+r3t_f(i,j)*tmask(i,j,k))) 33 !!# define e3u_f(i,j,k) (e3u_0(i,j,k)*(1._wp+r3u_f(i,j)*umask(i,j,k))) 34 !!# define e3v_f(i,j,k) (e3v_0(i,j,k)*(1._wp+r3v_f(i,j)*vmask(i,j,k))) 49
Note: See TracChangeset
for help on using the changeset viewer.