3 SUBROUTINE nuage (paprs, pplay,
4 . t, pqlwp, pclc, pcltau, pclemi,
5 . pch, pcl, pcm, pct, pctlwp,
7 e mass_solu_aero, mass_solu_aero_pi,
47 REAL pcltau(klon,
klev), pclemi(klon,
klev)
49 REAL pct(klon), pctlwp(klon), pch(klon), pcl(klon), pcm(klon)
57 REAL zflwp, zradef, zfice, zmsac
63 REAL coef, coef_froi, coef_chau
65 REAL seuil_neb, t_glace
66 parameter(seuil_neb=0.001, t_glace=273.0-15.0)
75 REAL mass_solu_aero(klon,
klev)
76 REAL mass_solu_aero_pi(klon,
klev)
79 REAL cdnc_pi(klon,
klev)
80 REAL re_pi(klon,
klev)
86 REAL cldtaupi(klon,
klev)
98 pclc(
i,
k) = max(pclc(
i,
k), seuil_neb)
99 zflwp = 1000.*pqlwp(
i,
k)/rg/pclc(
i,
k)
100 . *(paprs(
i,
k)-paprs(
i,
k+1))
101 zfice = 1.0 - (t(
i,
k)-t_glace) / (273.13-t_glace)
102 zfice = min(max(zfice,0.0),1.0)
108 cdnc(
i,
k) = 10.**(bl95_b0+bl95_b1*
109 . log(max(mass_solu_aero(
i,
k),1.e-4))/log(10.))*1.e6
113 cdnc(
i,
k)=min(1000.e6,max(20.e6,cdnc(
i,
k)))
114 cdnc_pi(
i,
k) = 10.**(bl95_b0+bl95_b1*
115 . log(max(mass_solu_aero_pi(
i,
k),1.e-4))/log(10.))*1.e6
116 cdnc_pi(
i,
k)=min(1000.e6,max(20.e6,cdnc_pi(
i,
k)))
125 . 1.1 * ( (pqlwp(
i,
k) *
pplay(
i,
k) / (rd * t(
i,
k)) )
126 . / (4./3. * rpi * 1000. * cdnc(
i,
k)) )**(1./3.)
130 rad_chaud = max(rad_chaud*1.e6, 3.)
142 fl(
i,
k) = pclc(
i,
k)*(1.-zfice)
143 re(
i,
k) = rad_chaud*fl(
i,
k)
150 radius = max(1.1e6 * ( (pqlwp(
i,
k)*
pplay(
i,
k)/(rd*t(
i,
k)))
151 . / (4./3.*rpi*1000.*cdnc_pi(
i,
k)) )**(1./3.),
153 cldtaupi(
i,
k) = 3.0/2.0 * zflwp / radius
157 radius = rad_chaud * (1.-zfice) +
rad_froid * zfice
158 coef = coef_chau * (1.-zfice) + coef_froi * zfice
159 pcltau(
i,
k) = 3.0/2.0 * zflwp / radius
160 pclemi(
i,
k) = 1.0 - exp( - coef * zflwp)
161 lo = (pclc(
i,
k) .LE. seuil_neb)
162 IF (lo) pclc(
i,
k) = 0.0
163 IF (lo) pcltau(
i,
k) = 0.0
164 IF (lo) pclemi(
i,
k) = 0.0
166 IF (.NOT.ok_aie) cldtaupi(
i,
k)=pcltau(
i,
k)
207 pctlwp(
i) = pctlwp(
i)
208 . + pqlwp(
i,
k)*(paprs(
i,
k)-paprs(
i,
k+1))/rg
209 pct(
i) = pct(
i)*(1.0-pclc(
i,
k))
210 if (
pplay(
i,
k).LE.cetahb*paprs(
i,1))
211 . pch(
i) = pch(
i)*(1.0-pclc(
i,
k))
212 if (
pplay(
i,
k).GT.cetahb*paprs(
i,1) .AND.
214 . pcm(
i) = pcm(
i)*(1.0-pclc(
i,
k))
215 if (
pplay(
i,
k).GT.cetamb*paprs(
i,1))
216 . pcl(
i) = pcl(
i)*(1.0-pclc(
i,
k))
229 SUBROUTINE diagcld1(paprs,pplay,rain,snow,kbot,ktop,
246 REAL paprs(klon,
klev+1)
256 REAL diafra(klon,
klev)
257 REAL dialiq(klon,
klev)
260 REAL canva, canvb, canvh
261 parameter(canva=2.0, canvb=0.3, canvh=0.4)
289 IF((rain(
i)+snow(
i)).GT.0.)
THEN
290 zcc(
i)= cca * log(max(zepscr,(rain(
i)+snow(
i))*ccscal))-ccb
291 zcc(
i)= min(ccc,max(0.0,zcc(
i)))
296 diafra(
i,ktop(
i)) = max(diafra(
i,ktop(
i)),zcc(
i)*ccfct)
297 IF ((zcc(
i).GE.canvh) .AND.
298 . (
pplay(
i,ktop(
i)).LE.cetahb*paprs(
i,1)))
299 . diafra(
i,ktop(
i)) = max(diafra(
i,ktop(
i)),
300 . max(zcc(
i)*ccfct,canva*(zcc(
i)-canvb)))
301 dialiq(
i,ktop(
i))=cclwmr*diafra(
i,ktop(
i))
306 IF (
k.LT.ktop(
i) .AND.
k.GE.kbot(
i))
THEN
307 diafra(
i,
k)=max(diafra(
i,
k),zcc(
i)*ccfct)
308 dialiq(
i,
k)=cclwmr*diafra(
i,
k)
315 SUBROUTINE diagcld2(paprs,pplay,t,q, diafra,dialiq)
324 REAL paprs(klon,
klev+1)
330 REAL diafra(klon,
klev)
331 REAL dialiq(klon,
klev)
335 REAL cloia, cloib, cloic, cloid
336 parameter(cloia=1.0e+02, cloib=-10.00, cloic=-0.6, cloid=5.0)
347 INTEGER i,
k, kb, invb(klon)
348 REAL zqs, zrhb, zcll, zdthmin(klon), zdthdp
372 . - rd * 0.5*(t(
i,
k)+t(
i,
k+1))/rcpd/paprs(
i,
k+1)
373 zdthdp = zdthdp * cloia
374 IF (
pplay(
i,
k).GT.cetamb*paprs(
i,1) .AND.
375 . zdthdp.LT.zdthmin(
i) )
THEN
385 zdelta=max(0.,sign(1.,rtt-t(
i,kb)))
386 zqs= r2es*foeew(t(
i,kb),zdelta)/
pplay(
i,kb)
388 zcor=1./(1.-retv*zqs)
391 IF (t(
i,kb) .LT. t_coup)
THEN
392 zqs = qsats(t(
i,kb)) /
pplay(
i,kb)
394 zqs = qsatl(t(
i,kb)) /
pplay(
i,kb)
397 zcll = cloib * zdthmin(
i) + cloic
398 zcll = min(1.0,max(0.0,zcll))
400 IF (zcll.GT.0.0.AND.zrhb.LT.crhl)
401 . zcll=zcll*(1.-(crhl-zrhb)*cloid)
402 zcll=min(1.0,max(0.0,zcll))
403 diafra(
i,kb) = max(diafra(
i,kb),zcll)
404 dialiq(
i,kb)= diafra(
i,kb) * rgammas*zqs