43 SUBROUTINE calpw(PW,IDECID)
46 use vrbls3d, only: q, qqw, qqi, qqr, qqs, cwm, qqg, t, rswtt, &
47 train, tcucn, mcvg, pmid, o3, ext, pint, rlwtt, &
49 use vrbls4d, only: smoke, fv3dust, coarsepm
52 use ctlblk_mod, only: lm, jsta, jend, im, spval, ista, iend
60 real,
PARAMETER :: rhowat=1.e3
61 real,
parameter:: con_rd =2.8705e+2
62 real,
parameter:: con_rv =4.6150e+2
63 real,
parameter:: con_eps =con_rd/con_rv
64 real,
parameter:: con_epsm1 =con_rd/con_rv-1
68 integer,
intent(in) :: idecid
69 real,
dimension(ista:iend,jsta:jend),
intent(inout) :: pw
71 REAL alpm,dz,pm,pwsum,rhoair,dp,es
72 REAL qdum(ista:iend,jsta:jend), pws(ista:iend,jsta:jend),qs(ista:iend,jsta:jend)
99 ELSE IF (idecid == 2)
THEN
103 qdum(i,j) = qqw(i,j,l)
106 ELSE IF (idecid == 3)
THEN
110 qdum(i,j) = qqi(i,j,l)
113 ELSE IF (idecid == 4)
THEN
117 qdum(i,j) = qqr(i,j,l)
120 ELSE IF (idecid == 5)
THEN
124 qdum(i,j) = qqs(i,j,l)
127 ELSE IF (idecid == 6)
THEN
131 qdum(i,j) = cwm(i,j,l)
135 ELSE IF (idecid == 16)
THEN
139 qdum(i,j) = qqg(i,j,l)
143 ELSE IF (idecid == 7)
THEN
148 IF (t(i,j,l) >= tfrz)
THEN
151 qdum(i,j) = qqw(i,j,l) + qqr(i,j,l)
155 ELSE IF (idecid == 8)
THEN
160 IF (t(i,j,l) <= tfrz)
THEN
163 qdum(i,j) = qqi(i,j,l) + qqs(i,j,l)
167 ELSE IF (idecid == 9)
THEN
172 qdum(i,j) = rswtt(i,j,l)
175 ELSE IF (idecid == 10)
THEN
180 qdum(i,j) = rlwtt(i,j,l)
183 ELSE IF (idecid == 11)
THEN
188 qdum(i,j) = train(i,j,l)
191 ELSE IF (idecid == 12)
THEN
196 qdum(i,j) = tcucn(i,j,l)
199 ELSE IF (idecid == 13)
THEN
204 qdum(i,j) = mcvg(i,j,l)
208 ELSE IF (idecid == 14)
THEN
213 es = min(
fpvsnew(t(i,j,l)),pmid(i,j,l))
214 qs(i,j) = con_eps*es/(pmid(i,j,l)+con_epsm1*es)
218 ELSE IF (idecid == 15)
THEN
222 qdum(i,j) = o3(i,j,l)
227 ELSE IF (idecid == 17)
THEN
231 qdum(i,j) = ext(i,j,l)
237 ELSE IF (idecid == 18)
THEN
241 qdum(i,j) = smoke(i,j,l,1)/(1e9)
247 ELSE IF (idecid == 19)
THEN
251 qdum(i,j) = taod5503d(i,j,l)
256 ELSE IF (idecid == 20)
THEN
260 qdum(i,j) = sca(i,j,l)
265 ELSE IF (idecid == 21)
THEN
269 qdum(i,j) = asy(i,j,l)
275 ELSE IF (idecid == 22)
THEN
279 qdum(i,j) = fv3dust(i,j,l,1)/(1e9)
285 ELSE IF (idecid == 23)
THEN
289 qdum(i,j) = coarsepm(i,j,l,1)/(1e9)
297 if(pint(i,j,l+1) <spval .and. qdum(i,j) < spval)
then
298 dp = pint(i,j,l+1) - pint(i,j,l)
299 IF (idecid == 19)
THEN
300 pw(i,j) = pw(i,j) + qdum(i,j)
302 pw(i,j) = pw(i,j) + qdum(i,j)*max(dp,0.)*gi*htm(i,j,l)
304 IF (idecid == 14) pws(i,j) = pws(i,j) + qs(i,j)*dp*gi*htm(i,j,l)
314 IF (idecid == 14)
THEN
318 if( pw(i,j)<spval)
then
319 pw(i,j) = max(0.,pw(i,j)/pws(i,j)*100.)
327 IF (idecid == 15)
then
331 if( pw(i,j)<spval)
then
332 pw(i,j) = pw(i,j) / 2.14e-5
elemental real function, public fpvsnew(t)