3 SUBROUTINE nuage(paprs, pplay, t, pqlwp, pclc, pcltau, pclemi, pch, pcl, pcm, &
4 pct, pctlwp, ok_aie, mass_solu_aero, mass_solu_aero_pi, bl95_b0, bl95_b1, &
54 REAL zflwp, zradef, zfice(
klon), zmsac
56 REAL radius, rad_chaud
62 REAL coef, coef_froi, coef_chau
69 REAL,
PARAMETER :: t_glace_min_old = 258.
70 INTEGER,
PARAMETER :: exposant_glace_old = 6
100 zfice(i) = 1.0 - (t(i,k)-t_glace_min_old)/(273.13-t_glace_min_old)
101 zfice(i) = min(max(zfice(i),0.0), 1.0)
102 zfice(i) = zfice(i)**exposant_glace_old
115 pclc(i, k) = max(pclc(i,k), seuil_neb)
116 zflwp = 1000.*pqlwp(i, k)/
rg/pclc(i, k)*(paprs(i,k)-paprs(i,k+1))
121 cdnc(i, k) = 10.**(bl95_b0+bl95_b1*log(max(mass_solu_aero(i,k), &
122 1.e-4))/log(10.))*1.e6
126 cdnc(i, k) = min(1000.e6, max(20.e6,cdnc(i,k)))
127 cdnc_pi(i, k) = 10.**(bl95_b0+bl95_b1*log(max(mass_solu_aero_pi(i,k), &
128 1.e-4))/log(10.))*1.e6
129 cdnc_pi(i, k) = min(1000.e6, max(20.e6,cdnc_pi(i,k)))
137 rad_chaud = 1.1*((pqlwp(i,k)*pplay(i,k)/(rd*t(i,k)))/(4./3.*rpi*1000. &
138 *cdnc(i,k)))**(1./3.)
142 rad_chaud = max(rad_chaud*1.e6, 3.)
154 fl(i, k) = pclc(i, k)*(1.-zfice(i))
155 re(i, k) = rad_chaud*fl(i, k)
162 radius = max(1.1e6*((pqlwp(i,k)*pplay(i,k)/(rd*t(i,k)))/(4./3.*rpi* &
163 1000.*cdnc_pi(i,k)))**(1./3.), 3.)*(1.-zfice(i)) +
rad_froid*zfice(i)
164 cldtaupi(i, k) = 3.0/2.0*zflwp/radius
167 radius = rad_chaud*(1.-zfice(i)) +
rad_froid*zfice(i)
168 coef = coef_chau*(1.-zfice(i)) + coef_froi*zfice(i)
169 pcltau(i, k) = 3.0/2.0*zflwp/radius
170 pclemi(i, k) = 1.0 - exp(-coef*zflwp)
171 lo = (pclc(i,k)<=seuil_neb)
172 IF (lo) pclc(i, k) = 0.0
173 IF (lo) pcltau(i, k) = 0.0
174 IF (lo) pclemi(i, k) = 0.0
176 IF (.NOT. ok_aie) cldtaupi(i, k) = pcltau(i, k)
217 pctlwp(i) = pctlwp(i) + pqlwp(i, k)*(paprs(i,k)-paprs(i,k+1))/
rg
218 pct(i) = pct(i)*(1.0-pclc(i,k))
219 IF (pplay(i,k)<=cetahb*paprs(i,1)) pch(i) = pch(i)*(1.0-pclc(i,k))
220 IF (pplay(i,k)>cetahb*paprs(i,1) .AND. pplay(i,k)<=cetamb*paprs(i,1)) &
221 pcm(i) = pcm(i)*(1.0-pclc(i,k))
222 IF (pplay(i,k)>cetamb*paprs(i,1)) pcl(i) = pcl(i)*(1.0-pclc(i,k))
235 SUBROUTINE diagcld1(paprs, pplay, rain, snow, kbot, ktop, diafra, dialiq)
263 REAL canva, canvb, canvh
264 parameter(canva=2.0, canvb=0.3, canvh=0.4)
292 IF ((rain(i)+snow(i))>0.)
THEN
293 zcc(i) = cca*log(max(zepscr,(rain(i)+snow(i))*ccscal)) - ccb
294 zcc(i) = min(ccc, max(0.0,zcc(i)))
299 diafra(i, ktop(i)) = max(diafra(i,ktop(i)), zcc(i)*ccfct)
300 IF ((zcc(i)>=canvh) .AND. (pplay(i,ktop(i))<=cetahb*paprs(i, &
301 1))) diafra(i, ktop(i)) = max(diafra(i,ktop(i)), max(zcc( &
302 i)*ccfct,canva*(zcc(i)-canvb)))
303 dialiq(i, ktop(i)) = cclwmr*diafra(i, ktop(i))
308 IF (k<ktop(i) .AND. k>=kbot(i))
THEN
309 diafra(i, k) = max(diafra(i,k), zcc(i)*ccfct)
310 dialiq(i, k) = cclwmr*diafra(i, k)
317 SUBROUTINE diagcld2(paprs, pplay, t, q, diafra, dialiq)
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
371 zdthdp = (t(i,k)-t(i,k+1))/(pplay(i,k)-pplay(i,k+1)) - &
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)>cetamb*paprs(i,1) .AND. zdthdp<zdthmin(i))
THEN
384 zdelta = max(0., sign(1.,rtt-t(i,kb)))
385 zqs = r2es*foeew(t(i,kb), zdelta)/pplay(i, kb)
387 zcor = 1./(1.-retv*zqs)
390 IF (t(i,kb)<t_coup)
THEN
391 zqs = qsats(t(i,kb))/pplay(i, kb)
393 zqs = qsatl(t(i,kb))/pplay(i, kb)
396 zcll = cloib*zdthmin(i) + cloic
397 zcll = min(1.0, max(0.0,zcll))
399 IF (zcll>0.0 .AND. zrhb<crhl) zcll = zcll*(1.-(crhl-zrhb)*cloid)
400 zcll = min(1.0, max(0.0,zcll))
401 diafra(i, kb) = max(diafra(i,kb), zcll)
402 dialiq(i, kb) = diafra(i, kb)*rgammas*zqs
subroutine icefrac_lsc(np, temp, sig, icefrac)
!$Id t_glace_min REAL exposant_glace REAL rei_max REAL coefw_cld_cv REAL tmax_fonte_cv INTEGER iflag_t_glace
!$Header!integer nvarmx parameter(nfmx=10, imx=200, jmx=150, lmx=200, nvarmx=1000) real xd(imx
subroutine nuage(paprs, pplay, t, pqlwp, pclc, pcltau, pclemi, pch, pcl, pcm, pct, pctlwp, ok_aie, mass_solu_aero, mass_solu_aero_pi, bl95_b0, bl95_b1, cldtaupi, re, fl)
!$Id t_glace_min REAL exposant_glace REAL rei_max REAL coefw_cld_cv REAL tmax_fonte_cv INTEGER iflag_cld_cv common nuagecom rad_froid
subroutine diagcld2(paprs, pplay, t, q, diafra, dialiq)
subroutine diagcld1(paprs, pplay, rain, snow, kbot, ktop, diafra, dialiq)