7 . cd_h, cd_m, pcfh, pcfm, cgh, cgq)
31 REAL paprs(klon,
klev+1)
71 REAL pcfm(klon,
klev), pcfh(klon,
klev)
74 REAL zxt, zxq, zxu, zxv, zxmod,
taux, tauy
108 REAL zcor, zdelta, zcvm5, zxqs
109 REAL fac, pblmin, zmzp, term
135 z(
i,1) = rd * t(
i,1) / (0.5*(paprs(
i,1)+
pplay(
i,1)))
136 . * (paprs(
i,1)-
pplay(
i,1)) / rg
141 . + rd * 0.5*(t(
i,
k-1)+t(
i,
k)) / paprs(
i,
k)
148 zdelta=max(0.,sign(1.,rtt-
tsol(
i)))
149 zcvm5 = r5les*rlvtt*(1.-zdelta) + r5ies*rlstt*zdelta
150 zcvm5 = zcvm5 / rcpd / (1.0+rvtmp2*
q(
i,1))
151 zxqs= r2es * foeew(
tsol(
i),zdelta)/paprs(
i,1)
153 zcor=1./(1.-retv*zxqs)
156 IF (
tsol(
i).LT.t_coup)
THEN
157 zxqs = qsats(
tsol(
i)) / paprs(
i,1)
159 zxqs = qsatl(
tsol(
i)) / paprs(
i,1)
163 zx_alf2 = 1.0 - zx_alf1
164 zxt = (t(
i,1)+
z(
i,1)*rg/rcpd/(1.+rvtmp2*
q(
i,1)))
165 . *(1.+retv*
q(
i,1))*zx_alf1
166 . + (t(
i,2)+
z(
i,2)*rg/rcpd/(1.+rvtmp2*
q(
i,2)))
167 . *(1.+retv*
q(
i,2))*zx_alf2
168 zxu =
u(
i,1)*zx_alf1+
u(
i,2)*zx_alf2
169 zxv =
v(
i,1)*zx_alf1+
v(
i,2)*zx_alf2
170 zxq =
q(
i,1)*zx_alf1+
q(
i,2)*zx_alf2
171 zxmod = 1.0+sqrt(zxu**2+zxv**2)
172 khfs(
i) = (
tsol(
i)*(1.+retv*
q(
i,1))-zxt) *zxmod*cd_h(
i)
173 kqfs(
i) = (zxqs-zxq) *zxmod*cd_h(
i) *
beta(
i)
174 heatv(
i) = khfs(
i) + 0.61*zxt*kqfs(
i)
175 taux = zxu *zxmod*cd_m(
i)
176 tauy = zxv *zxmod*cd_m(
i)
177 ustar(
i) = sqrt(
taux**2+tauy**2)
178 ustar(
i) = max(sqrt(ustar(
i)),0.01)
185 obklen(
i) = -t(
i,1)*ustar(
i)**3/(rg*vk*heatv(
i))
197 zdu2 = (
u(
i,
k)-
u(
i,1))**2+(
v(
i,
k)-
v(
i,1))**2+fac*ustar(
i)**2
198 zdu2 = max(zdu2,1.0e-20)
199 ztvd =(t(
i,
k)+
z(
i,
k)*0.5*rg/rcpd/(1.+rvtmp2*
q(
i,
k)))
201 ztvu =(t(
i,1)-
z(
i,
k)*0.5*rg/rcpd/(1.+rvtmp2*
q(
i,1)))
203 rino(
i,
k) = (
z(
i,
k)-
z(
i,1))*rg*(ztvd-ztvu)
204 . /(zdu2*0.5*(ztvd+ztvu))
205 IF (rino(
i,
k).GE.ricr)
THEN
207 . (ricr-rino(
i,
k-1))/(rino(
i,
k-1)-rino(
i,
k))
219 if (check(
i)) pblh(
i) =
z(
i,isommet)
226 IF (heatv(
i) .GT. 0.)
THEN
240 phiminv(
i) = (1.-binm*pblh(
i)/obklen(
i))**onet
241 wm(
i)= ustar(
i)*phiminv(
i)
242 therm(
i) = heatv(
i)*fak/wm(
i)
253 zdu2 = (
u(
i,
k)-
u(
i,1))**2+(
v(
i,
k)-
v(
i,1))**2+fac*ustar(
i)**2
254 zdu2 = max(zdu2,1.0e-20)
255 ztvd =(t(
i,
k)+
z(
i,
k)*0.5*rg/rcpd/(1.+rvtmp2*
q(
i,
k)))
257 ztvu =(t(
i,1)+therm(
i)-
z(
i,
k)*0.5*rg/rcpd/(1.+rvtmp2*
q(
i,1)))
259 rino(
i,
k) = (
z(
i,
k)-
z(
i,1))*rg*(ztvd-ztvu)
260 . /(zdu2*0.5*(ztvd+ztvu))
261 IF (rino(
i,
k).GE.ricr)
THEN
263 . (ricr-rino(
i,
k-1))/(rino(
i,
k-1)-rino(
i,
k))
274 if (check(
i)) pblh(
i) =
z(
i,isommet)
281 IF (check(
i)) pblh(
i) =
z(
i,isommet)
296 pblmin = 700.0*ustar(
i)
297 pblh(
i) = max(pblh(
i),pblmin)
304 fak1(
i) = ustar(
i)*pblh(
i)*vk
310 zxt=(t(
i,1)-
z(
i,1)*0.5*rg/rcpd/(1.+rvtmp2*
q(
i,1)))
312 phiminv(
i) = (1. - binm*pblh(
i)/obklen(
i))**onet
313 phihinv(
i) = sqrt(1. - binh*pblh(
i)/obklen(
i))
314 wm(
i) = ustar(
i)*phiminv(
i)
315 fak2(
i) = wm(
i)*pblh(
i)*vk
316 wstr(
i) = (heatv(
i)*rg*pblh(
i)/zxt)**onet
317 fak3(
i) = fakn*wstr(
i)/wm(
i)
324 DO 1000
k = 2, isommet
333 IF (zkmin.EQ.0.0 .AND. zp(
i).GT.pblh(
i)) zp(
i) = pblh(
i)
334 IF (zm(
i) .LT. pblh(
i))
THEN
335 zmzp = 0.5*(zm(
i) + zp(
i))
337 zl(
i) = zmzp/obklen(
i)
339 IF (zh(
i).LE.1.0) zzh(
i) = (1. - zh(
i))**2
357 IF (zl(
i).LE.1.)
THEN
358 pblk(
i) = fak1(
i)*zh(
i)*zzh(
i)/(1. +
betas*zl(
i))
360 pblk(
i) = fak1(
i)*zh(
i)*zzh(
i)/(
betas + zl(
i))
363 pcfh(
i,
k) = pcfm(
i,
k)
374 IF (zh(
i).lt.sffrac)
THEN
386 term = (1. - betam*zl(
i))**onet
387 pblk(
i) = fak1(
i)*zh(
i)*zzh(
i)*term
388 pr(
i) = term/sqrt(1. - betah*zl(
i))
396 pblk(
i) = fak2(
i)*zh(
i)*zzh(
i)
397 cgs(
i,
k) = fak3(
i)/(pblh(
i)*wm(
i))
398 cgh(
i,
k) = khfs(
i)*cgs(
i,
k)
399 pr(
i) = phiminv(
i)/phihinv(
i) + ccon*fak3(
i)/fak
400 cgq(
i,
k) = kqfs(
i)*cgs(
i,
k)
409 pcfh(
i,
k) = pblk(
i)/pr(
i)