28 SUBROUTINE caltau(TAUX,TAUY)
32 use vrbls3d, only: zint, pmid, q, t, uh, vh, el_pbl, zmid
35 use params_mod, only: d00, d50, h1, d608, rd, d25
36 use ctlblk_mod
, only: jsta_2l, jend_2u, lm, jsta, jend, spval, jsta_m,&
37 jm, im, jend_m, ista, iend, ista_m, iend_m, ista_2l, iend_2u
38 use gridspec_mod
, only: gridtype
43 INTEGER,
dimension(4) :: kk(4)
44 INTEGER,
dimension(jm) :: ive, ivw
45 REAL,
dimension(ista:iend,jsta:jend),
intent(inout) :: taux, tauy
46 REAL,
ALLOCATABLE :: el(:,:,:)
47 REAL,
dimension(ista:iend,jsta:jend) :: egridu,egridv,egrid4,egrid5, el0
50 integer i,j,lmhk,ie,iw,ii,jj
51 real dz,rdz,rsfc,tv,rho,ulmh,vlmh,deludz,delvdz,elsqr,zint1, &
52 zint2,z0v,psfc,tvv,qvv,elv,elv1,elv2
57 ALLOCATE (el(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
79 IF(gridtype ==
'A')
THEN
80 CALL clmax(el0,egridu,egridv,egrid4,egrid5)
87 IF(el(i,j,lmhk-1)<spval.and.z0(i,j)<spval.and. &
88 uz0(i,j)<spval.and.vz0(i,j)<spval)
THEN
92 dz = d50*(zint(i,j,lmhk)-zint(i,j,lmhk+1))
99 tv = (h1+d608*q(i,j,lmhk))*t(i,j,lmhk)
110 deludz = (ulmh-uz0(i,j))*rdz
111 delvdz = (vlmh-vz0(i,j))*rdz
115 elsqr = el(i,j,lmhk-1)*el(i,j,lmhk-1)
116 taux(i,j) = rho*elsqr*deludz*deludz
117 tauy(i,j) = rho*elsqr*delvdz*delvdz
126 ELSE IF(gridtype ==
'E')
THEN
127 call exch(zint(1,jsta_2l,lm))
128 call exch(zint(1,jsta_2l,lm+1))
129 call exch(z0(1,jsta_2l))
130 call exch(pmid(1,jsta_2l,lm))
131 call exch(t(1,jsta_2l,lm))
132 call exch(q(1,jsta_2l,lm))
133 call exch(el_pbl(1,jsta_2l,lm))
134 call exch(el_pbl(1,jsta_2l,lm-1))
144 lmhk = nint(lmh(i,j))
147 zint1=(zint(iw,j,lmhk)+zint(ie,j,lmhk) &
148 +zint(i,j+1,lmhk)+zint(i,j-1,lmhk))*d25
149 zint2=(zint(iw,j,lmhk+1)+zint(ie,j,lmhk+1) &
150 +zint(i,j+1,lmhk+1)+zint(i,j-1,lmhk+1))*d25
151 dz = d50*(zint1-zint2)
152 z0v=(z0(iw,j)+z0(ie,j)+z0(i,j+1)+z0(i,j-1))*d25
158 psfc = (pmid(iw,j,lmhk)+pmid(ie,j,lmhk) &
159 +pmid(i,j+1,lmhk)+pmid(i,j-1,lmhk))*d25
160 tvv = (t(iw,j,lmhk)+t(ie,j,lmhk) &
161 +t(i,j+1,lmhk)+t(i,j-1,lmhk))*d25
162 qvv = (q(iw,j,lmhk)+q(ie,j,lmhk) &
163 +q(i,j+1,lmhk)+q(i,j-1,lmhk))*d25
164 tv = (h1+d608*qvv)*tvv
169 deludz = (uh(i,j,lmhk)-uz0(i,j))*rdz
170 delvdz = (vh(i,j,lmhk)-vz0(i,j))*rdz
174 elv1=(el_pbl(iw,j,lmhk)+el_pbl(ie,j,lmhk) &
175 +el_pbl(i,j+1,lmhk)+el_pbl(i,j-1,lmhk))*d25
176 elv2=(el_pbl(iw,j,lmhk-1)+el_pbl(ie,j,lmhk-1) &
177 +el_pbl(i,j+1,lmhk-1)+el_pbl(i,j-1,lmhk-1))*d25
180 taux(i,j)=rho*elsqr*deludz*deludz
181 tauy(i,j)=rho*elsqr*delvdz*delvdz
188 ELSE IF(gridtype ==
'B')
THEN
190 call exch(vh(1,jsta_2l,lm))
194 lmhk = nint(lmh(i,j))
200 dz=zmid(i,j,lmhk)-(z0(i,j)+zint(i,j,lmhk+1))
206 psfc = pmid(i,j,lmhk)
207 tv = (h1+d608*q(i,j,lmhk))*t(i,j,lmhk)
212 ulmh = 0.5*(uh(i-1,j,lmhk)+uh(i,j,lmhk))
213 vlmh = 0.5*(vh(i,j-1,lmhk)+vh(i,j,lmhk))
217 deludz = (ulmh-uz0(i,j))*rdz
218 delvdz = (vlmh-vz0(i,j))*rdz
222 elv=0.5*(el_pbl(i,j,lmhk)+el_pbl(i,j,lmhk-1))
224 taux(i,j) = rho*elsqr*deludz*deludz
227 tauy(i,j) = rho*elsqr*delvdz*delvdz