4 SUBROUTINE tlift(p, t, rr, rs, gz, plcl, icb, nk, tvp, tpk, clw, nd, nl, &
9 INTEGER icb, nk, nd, nl
10 INTEGER,
PARAMETER :: na=60
11 REAL gz(nd), tpk(nd), clw(nd), plcl
12 REAL t(nd), rr(nd), rs(nd), tvp(nd), p(nd)
13 REAL dtvpdt1(nd), dtvpdq1(nd)
16 REAL clw_new(na), qi(na)
17 REAL dtpdt1(na), dtpdq1(na)
19 REAL gravity, cpd, cpv, cl, ci, cpvmcl, clmci, eps, alv0, alf0
20 REAL cpp, cpinv, ah0, alf, tg, s, ahg, tc, denom, alv, es, esi
22 INTEGER icbl, i, imin, j, icb1
75 cpp = cpd*(1.-rr(nk)) + rr(nk)*cpv
88 tpk(i) = t(nk) - (gz(i)-gz(nk))*cpinv
91 tvp(i) = tpk(i)*(1.+rr(nk)/eps-rr(nk))
93 dtvpdt1(i) = 1. + rr(nk)/eps - rr(nk)
94 dtvpdq1(i) = tpk(i)*(1./eps-1.)
106 ah0 = (cpd*(1.-rr(nk))+cl*rr(nk))*t(nk) + rr(nk)*(alv0-cpvmcl*(t(nk)-273.15 &
113 IF (plcl<p(icb1)) imin = min(imin+1, nl)
118 alv = alv0 - cpvmcl*(t(i)-273.15)
119 alf = alf0 + clmci*(t(i)-273.15)
126 s = cpd*(1.-rr(nk)) + cl*rr(nk) + alv*alv*
rg/(rv*t(i)*t(i))
133 ahg = cpd*tg + (cl-cpd)*rr(nk)*tg + alv*
rg + gz(i)
135 tg = tg + s*(ah0-ahg)
138 denom = max(denom, 1.0)
142 es = 6.112*exp(17.67*tc/denom)
143 rg = eps*es/(p(i)-es*(1.-eps))
150 tpk(i) = (ah0-gz(i)-alv*
rg)/(cpd+(cl-cpd)*rr(nk))
158 clw(i) = max(0.0, clw(i))
161 tvp(i) = tpk(i)*(1.+
rg/eps-rr(nk))
169 dtvpdt1(i) = dtpdt1(i)*(1.+
rg/eps-rr(nk)+alv*
rg/(rd*tpk(i)))
170 dtvpdq1(i) = dtpdq1(i)*(1.+
rg/eps-rr(nk)+alv*
rg/(rd*tpk(i))) - tpk(i)
186 IF (t(i)<263.15)
THEN
190 es = 6.112*exp(17.67*tc/denom)
191 alv = alv0 - cpvmcl*(t(i)-273.15)
192 alf = alf0 + clmci*(t(i)-273.15)
195 esi = exp(23.33086-(6111.72784/tpk(i))+0.15215*log(tpk(i)))
196 qsat_new = eps*esi/(p(i)-esi*(1.-eps))
199 snew = cpd*(1.-rr(nk)) + cl*rr(nk) + alv*alv*qsat_new/(rv*tpk(i)* &
203 tpk(i) = tg + (alf*qi(i)+alv*
rg*(1.-(esi/es)))*snew
209 clw(i) = rr(nk) - qsat_new
210 clw(i) = max(0.0, clw(i))
213 tvp(i) = tpk(i)*(1.+qsat_new/eps-rr(nk))
subroutine tlift(p, t, rr, rs, gz, plcl, icb, nk, tvp, tpk, clw, nd, nl, dtvpdt1, dtvpdq1)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false