77 & LBi, UBi, LBj, UBj, &
78 & IminS, ImaxS, JminS, JmaxS, &
83 & Huon, Hvom, Hz, pm, pn, W, &
99 integer,
intent(in) :: ng, tile
100 integer,
intent(in) :: LBi, UBi, LBj, UBj
101 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
102 integer,
intent(in) :: nstp, nnew
106 real(r8),
intent(in) :: umask(LBi:,LBj:)
107 real(r8),
intent(in) :: vmask(LBi:,LBj:)
109 real(r8),
intent(in) :: Huon(LBi:,LBj:,:)
110 real(r8),
intent(in) :: Hvom(LBi:,LBj:,:)
111 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
112 real(r8),
intent(in) :: pm(LBi:,LBj:)
113 real(r8),
intent(in) :: pn(LBi:,LBj:)
114 real(r8),
intent(in) :: W(LBi:,LBj:,0:)
116 real(r8),
intent(inout) :: gls(LBi:,LBj:,0:,:)
117 real(r8),
intent(inout) :: tke(LBi:,LBj:,0:,:)
120 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
121 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
123 real(r8),
intent(in) :: Huon(LBi:UBi,LBj:UBj,N(ng))
124 real(r8),
intent(in) :: Hvom(LBi:UBi,LBj:UBj,N(ng))
125 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
126 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
127 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
128 real(r8),
intent(in) :: W(LBi:UBi,LBj:UBj,0:N(ng))
130 real(r8),
intent(inout) :: gls(LBi:UBi,LBj:UBj,0:N(ng),3)
131 real(r8),
intent(inout) :: tke(LBi:UBi,LBj:UBj,0:N(ng),3)
136 integer :: i, indx, j, k
138 real(r8),
parameter :: Gamma = 1.0_r8/6.0_r8
140 real(r8) :: cff, cff1, cff2, cff3, cff4
142 real(r8),
dimension(IminS:ImaxS,N(ng)) :: CF
143 real(r8),
dimension(IminS:ImaxS,N(ng)) :: FC
144 real(r8),
dimension(IminS:ImaxS,N(ng)) :: FCL
146 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: Hz_half
148 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: EF
149 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FE
150 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FEL
151 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FX
152 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: FXL
153 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: XF
154 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: grad
155 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: gradL
157# include "set_bounds.h"
189 xf(i,j)=0.5_r8*(huon(i,j,k)+huon(i,j,k+1))
191 & 0.5_r8*(tke(i,j,k,nstp)+tke(i-1,j,k,nstp))
193 & 0.5_r8*(gls(i,j,k,nstp)+gls(i-1,j,k,nstp))
198 ef(i,j)=0.5*(hvom(i,j,k)+hvom(i,j,k+1))
200 & 0.5*(tke(i,j,k,nstp)+tke(i,j-1,k,nstp))
202 & 0.5*(gls(i,j,k,nstp)+gls(i,j-1,k,nstp))
211 grad(i,j)=(tke(i,j,k,nstp)-tke(i-1,j,k,nstp))
213 grad(i,j)=grad(i,j)*umask(i,j)
215 gradl(i,j)=(gls(i,j,k,nstp)-gls(i-1,j,k,nstp))
217 gradl(i,j)=gradl(i,j)*umask(i,j)
222 IF (
domain(ng)%Western_Edge(tile))
THEN
224 grad(istr-1,j)=grad(istr,j)
225 gradl(istr-1,j)=gradl(istr,j)
230 IF (
domain(ng)%Eastern_Edge(tile))
THEN
232 grad(iend+2,j)=grad(iend+1,j)
233 gradl(iend+2,j)=gradl(iend+1,j)
240 xf(i,j)=0.5_r8*(huon(i,j,k)+huon(i,j,k+1))
242 & 0.5_r8*(tke(i-1,j,k,nstp)+tke(i,j,k,nstp)- &
243 & cff*(grad(i+1,j)-grad(i-1,j)))
245 & 0.5_r8*(gls(i-1,j,k,nstp)+gls(i,j,k,nstp)- &
246 & cff*(gradl(i+1,j)-gradl(i-1,j)))
252 grad(i,j)=(tke(i,j,k,nstp)-tke(i,j-1,k,nstp))
254 grad(i,j)=grad(i,j)*vmask(i,j)
256 gradl(i,j)=(gls(i,j,k,nstp)-gls(i,j-1,k,nstp))
258 gradl(i,j)=gradl(i,j)*vmask(i,j)
263 IF (
domain(ng)%Southern_Edge(tile))
THEN
265 grad(i,jstr-1)=grad(i,jstr)
266 gradl(i,jstr-1)=gradl(i,jstr)
271 IF (
domain(ng)%Northern_Edge(tile))
THEN
273 grad(i,jend+2)=grad(i,jend+1)
274 gradl(i,jend+2)=gradl(i,jend+1)
281 ef(i,j)=0.5_r8*(hvom(i,j,k)+hvom(i,j,k+1))
283 & 0.5_r8*(tke(i,j-1,k,nstp)+tke(i,j,k,nstp)- &
284 & cff*(grad(i,j+1)-grad(i,j-1)))
286 & 0.5_r8*(gls(i,j-1,k,nstp)+gls(i,j,k,nstp)- &
287 & cff*(gradl(i,j+1)-gradl(i,j-1)))
302 cff3=(1.0_r8-gamma)*
dt(ng)
307 cff=0.5_r8*(hz(i,j,k)+hz(i,j,k+1))
308 cff4=cff3*pm(i,j)*pn(i,j)
309 hz_half(i,j,k)=cff-cff4*(xf(i+1,j)-xf(i,j)+ &
311 tke(i,j,k,3)=cff*(cff1*tke(i,j,k,nstp)+ &
312 & cff2*tke(i,j,k,indx))- &
313 & cff4*(fx(i+1,j)-fx(i,j)+ &
315 gls(i,j,k,3)=cff*(cff1*gls(i,j,k,nstp)+ &
316 & cff2*gls(i,j,k,indx))- &
317 & cff4*(fxl(i+1,j)-fxl(i,j)+ &
318 & fel(i,j+1)-fel(i,j))
319 tke(i,j,k,nnew)=cff*tke(i,j,k,nstp)
320 gls(i,j,k,nnew)=cff*gls(i,j,k,nstp)
331 cf(i,k)=0.5_r8*(w(i,j,k)+w(i,j,k-1))
333 & 0.5_r8*(tke(i,j,k-1,nstp)+tke(i,j,k,nstp))
335 & 0.5_r8*(gls(i,j,k-1,nstp)+gls(i,j,k,nstp))
343 cf(i,k)=0.5_r8*(w(i,j,k)+w(i,j,k-1))
344 fc(i,k)=cf(i,k)*(cff1*(tke(i,j,k-1,nstp)+ &
345 & tke(i,j,k ,nstp))- &
346 & cff2*(tke(i,j,k-2,nstp)+ &
347 & tke(i,j,k+1,nstp)))
348 fcl(i,k)=cf(i,k)*(cff1*(gls(i,j,k-1,nstp)+ &
349 & gls(i,j,k ,nstp))- &
350 & cff2*(gls(i,j,k-2,nstp)+ &
351 & gls(i,j,k+1,nstp)))
358 cf(i,1)=0.5*(w(i,j,0)+w(i,j,1))
359 fc(i,1)=cf(i,1)*(cff1*tke(i,j,0,nstp)+ &
360 & cff2*tke(i,j,1,nstp)- &
361 & cff3*tke(i,j,2,nstp))
362 fcl(i,1)=cf(i,1)*(cff1*gls(i,j,0,nstp)+ &
363 & cff2*gls(i,j,1,nstp)- &
364 & cff3*gls(i,j,2,nstp))
365 cf(i,n(ng))=0.5*(w(i,j,n(ng))+w(i,j,n(ng)-1))
366 fc(i,n(ng))=cf(i,n(ng))*(cff1*tke(i,j,n(ng) ,nstp)+ &
367 & cff2*tke(i,j,n(ng)-1,nstp)- &
368 & cff3*tke(i,j,n(ng)-2,nstp))
369 fcl(i,n(ng))=cf(i,n(ng))*(cff1*gls(i,j,n(ng) ,nstp)+ &
370 & cff2*gls(i,j,n(ng)-1,nstp)- &
371 & cff3*gls(i,j,n(ng)-2,nstp))
380 cff3=(1.0_r8-gamma)*
dt(ng)
384 cff4=cff3*pm(i,j)*pn(i,j)
385 hz_half(i,j,k)=hz_half(i,j,k)-cff4*(cf(i,k+1)-cf(i,k))
386 cff1=1.0_r8/hz_half(i,j,k)
387 tke(i,j,k,3)=cff1*(tke(i,j,k,3)- &
388 & cff4*(fc(i,k+1)-fc(i,k)))
389 gls(i,j,k,3)=cff1*(gls(i,j,k,3)- &
390 & cff4*(fcl(i,k+1)-fcl(i,k)))
398 & lbi, ubi, lbj, ubj, n(ng), &
399 & imins, imaxs, jmins, jmaxs, &
405 & lbi, ubi, lbj, ubj, 0, n(ng), &
408 & lbi, ubi, lbj, ubj, 0, n(ng), &
414 & lbi, ubi, lbj, ubj, 0, n(ng), &