3 & qcloud,ctot,zpspsk,paprs,ztla,zthl, &
21 #include "thermcell.h"
23 INTEGER itap,ind1,ind2
24 INTEGER ngrid,
klev,klon,
l,ig
32 REAL zpspsk(ngrid,
klev)
33 REAL paprs(ngrid,
klev+1)
37 REAL zqsatth(ngrid,
klev)
38 REAL zqsatenv(ngrid,
klev)
41 REAL sigma1(ngrid,
klev)
42 REAL sigma2(ngrid,
klev)
44 REAL qlenv(ngrid,
klev)
45 REAL qltot(ngrid,
klev)
51 REAL qsatmmussig1,qsatmmussig2,sqrt2pi,
pi
53 REAL alth,alenv,ath,aenv
54 REAL sth,senv,sigma1s,sigma2s,xth,xenv
55 REAL tbef,zdelta,qsatbef,zcor
57 REAL ratqs(ngrid,
klev)
59 REAL zpdf_sig(ngrid),zpdf_k(ngrid),zpdf_delta(ngrid)
60 REAL zpdf_a(ngrid),zpdf_b(ngrid),zpdf_e1(ngrid),zpdf_e2(ngrid)
61 REAL zqs(ngrid), qcloud(ngrid)
103 if ((
ztv(ind1,1).gt.
ztv(ind1,2)).and.(
fraca(ind1,ind2).gt.1.e-10))
then
105 zqenv(ind1)=(po(ind1)-
fraca(ind1,ind2)*
zqta(ind1,ind2))/(1.-
fraca(ind1,ind2))
109 tbef=zthl(ind1,ind2)*zpspsk(ind1,ind2)
110 zdelta=max(0.,sign(1.,rtt-tbef))
111 qsatbef= r2es * foeew(tbef,zdelta)/paprs(ind1,ind2)
112 qsatbef=min(0.5,qsatbef)
113 zcor=1./(1.-retv*qsatbef)
115 zqsatenv(ind1,ind2)=qsatbef
120 alenv=(0.622*lv*zqsatenv(ind1,ind2))/(rdd*zthl(ind1,ind2)**2)
121 aenv=1./(1.+(alenv*lv/cppd))
122 senv=aenv*(po(ind1)-zqsatenv(ind1,ind2))
127 tbef=ztla(ind1,ind2)*zpspsk(ind1,ind2)
128 zdelta=max(0.,sign(1.,rtt-tbef))
129 qsatbef= r2es * foeew(tbef,zdelta)/paprs(ind1,ind2)
130 qsatbef=min(0.5,qsatbef)
131 zcor=1./(1.-retv*qsatbef)
133 zqsatth(ind1,ind2)=qsatbef
135 alth=(0.622*lv*zqsatth(ind1,ind2))/(rdd*ztla(ind1,ind2)**2)
136 ath=1./(1.+(alth*lv/cppd))
137 sth=ath*(
zqta(ind1,ind2)-zqsatth(ind1,ind2))
145 sigma1s=(1.1**0.5)*(
fraca(ind1,ind2)**0.6)/(1-
fraca(ind1,ind2))*((sth-senv)**2)**0.5+ratqs(ind1,ind2)*po(ind1)
146 sigma2s=0.11*((sth-senv)**2)**0.5/(
fraca(ind1,ind2)+0.02)**0.4+0.002*
zqta(ind1,ind2)
153 xth=sth/(sqrt(2.)*sigma2s)
154 xenv=senv/(sqrt(2.)*sigma1s)
155 cth(ind1,ind2)=0.5*(1.+1.*erf(xth))
156 cenv(ind1,ind2)=0.5*(1.+1.*erf(xenv))
157 ctot(ind1,ind2)=
fraca(ind1,ind2)*cth(ind1,ind2)+(1.-1.*
fraca(ind1,ind2))*cenv(ind1,ind2)
162 qlth(ind1,ind2)=sigma2s*((exp(-1.*xth**2)/sqrt2pi)+xth*sqrt(2.)*cth(ind1,ind2))
163 qlenv(ind1,ind2)=sigma1s*((exp(-1.*xenv**2)/sqrt2pi)+xenv*sqrt(2.)*cenv(ind1,ind2))
164 qltot(ind1,ind2)=
fraca(ind1,ind2)*qlth(ind1,ind2)+(1.-1.*
fraca(ind1,ind2))*qlenv(ind1,ind2)
171 if (ctot(ind1,ind2).lt.1.e-10)
then
173 qcloud(ind1)=zqsatenv(ind1,ind2)
177 ctot(ind1,ind2)=ctot(ind1,ind2)
178 qcloud(ind1)=qltot(ind1,ind2)/ctot(ind1,ind2)+zqs(ind1)
190 zdelta=max(0.,sign(1.,rtt-tbef))
191 qsatbef= r2es * foeew(tbef,zdelta)/paprs(ind1,ind2)
192 qsatbef=min(0.5,qsatbef)
193 zcor=1./(1.-retv*qsatbef)
195 zqsatenv(ind1,ind2)=qsatbef
199 zthl(ind1,ind2)=t(ind1,ind2)*(101325/paprs(ind1,ind2))**(rdd/cppd)
200 alenv=(0.622*lv*zqsatenv(ind1,ind2))/(rdd*zthl(ind1,ind2)**2)
201 aenv=1./(1.+(alenv*lv/cppd))
202 senv=aenv*(po(ind1)-zqsatenv(ind1,ind2))
205 sigma1s=ratqs(ind1,ind2)*zqenv(ind1)
208 xenv=senv/(sqrt(2.)*sigma1s)
209 ctot(ind1,ind2)=0.5*(1.+1.*erf(xenv))
210 qltot(ind1,ind2)=sigma1s*((exp(-1.*xenv**2)/sqrt2pi)+xenv*sqrt(2.)*cenv(ind1,ind2))
212 if (ctot(ind1,ind2).lt.1.e-3)
then
214 qcloud(ind1)=zqsatenv(ind1,ind2)
218 ctot(ind1,ind2)=ctot(ind1,ind2)
219 qcloud(ind1)=qltot(ind1,ind2)/ctot(ind1,ind2)+zqsatenv(ind1,ind2)