4 SUBROUTINE tlift(P,T,RR,RS,GZ,PLCL,ICB,NK,
8 c argument nk ajoute(jyg) = niveau
de depart
de la
12 REAL gz(nd),tpk(nd),clw(nd)
13 REAL t(nd),rr(nd),rs(nd),tvp(nd),p(nd)
14 REAL dtvpdt1(nd),dtvpdq1(nd)
15 c temperature wrt t1 and q1
17 REAL clw_new(na),qi(na)
18 REAL dtpdt1(na),dtpdq1(na)
24 c *** assign
values of thermodynamic constants ***
34 ccccccccccccccccccccccc
35 c constantes coherentes avec le modele du centre europeen
36 c sb rd = 1000.0 * 1.380658e-23 * 6.0221367e+23 / 28.9644
37 c sb rv = 1000.0 * 1.380658e-23 * 6.0221367e+23 / 18.0153
49 c on utilise les constantes thermo du centre europeen: (sb)
64 cccccccccccccccccccccc
66 c *** calculate certain parcel quantities, including static energy ***
77 c icb may be below condensation level
79 ccc tpk(
i)=t(1)-gz(
i)*cpinv
80 ccc tvp(
i)=tpk(
i)*(1.+rr(1)/
eps)
86 tpk(
i)=t(nk)-(gz(
i) - gz(nk))*cpinv
88 ccc tvp(
i)=tpk(
i)*(1.+rr(nk)/
eps)
89 tvp(
i)=tpk(
i)*(1.+rr(nk)/
eps-rr(nk))
91 dtvpdt1(
i) = 1.+rr(nk)/
eps-rr(nk)
92 dtvpdq1(
i) = tpk(
i)*(1./
eps-1.)
99 c *** find lifted parcel temperature and mixing ratio ***
102 cc ah0=(
cpd*(1.-rr(1))+
cl*rr(1))*t(1)
103 cc $ +rr(1)*(alv0-
cpvmcl*(t(1)-273.15))
104 ah0=(
cpd*(1.-rr(nk))+
cl*rr(nk))*t(nk)
105 $ +rr(nk)*(alv0-
cpvmcl*(t(nk)-273.15)) + gz(nk)
110 c If icb is below
lcl, start loop at icb+1
111 IF (plcl .LT. p(icb1)) imin = min(imin+1,
nl)
117 alf=alf0+clmci*(t(
i)-273.15)
121 c s=
cpd+alv*alv*rg/(rv*t(
i)*t(
i))
123 cc s=
cpd*(1.-rr(1))+
cl*rr(1)+alv*alv*rg/(rv*t(
i)*t(
i))
124 s=
cpd*(1.-rr(nk))+
cl*rr(nk)+alv*alv*rg/(rv*t(
i)*t(
i))
130 cc ahg=
cpd*tg+(
cl-
cpd)*rr(1)*tg+alv*rg+gz(
i)
131 ahg=
cpd*tg+(
cl-
cpd)*rr(nk)*tg+alv*rg+gz(
i)
138 c formule
de bolton pour psat
140 es=6.112*exp(17.67*tc/denom)
147 cc tpk(
i)=(ah0-gz(
i)-alv*rg)/(
cpd+(
cl-
cpd)*rr(1))
148 tpk(
i)=(ah0-gz(
i)-alv*rg)/(
cpd+(
cl-
cpd)*rr(nk))
156 clw(
i)=max(0.0,clw(
i))
158 ccc tvp(
i)=tpk(
i)*(1.+rg/
eps)
159 tvp(
i)=tpk(
i)*(1.+rg/
eps-rr(nk))
167 dtvpdt1(
i) = dtpdt1(
i)*(1. + rg/
eps -
168 . rr(nk) + alv*rg/(rd*tpk(
i)) )
169 dtvpdq1(
i) = dtpdq1(
i)*(1. + rg/
eps -
170 . rr(nk) + alv*rg/(rd*tpk(
i)) ) - tpk(
i)
181 c rajout
de la procedure icefrac
183 c sb CALL icefrac(t,clw,clw_new,qi,nd,
nl)
186 IF (t(
i).LT.263.15)
THEN
190 es=6.112*exp(17.67*tc/denom)
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))
197 ccc snew=
cpd*(1.-rr(1))+
cl*rr(1)+alv*alv*qsat_new/(rv*tpk(
i)*tpk(
i))
198 snew=
cpd*(1.-rr(nk))+
cl*rr(nk)
199 . +alv*alv*qsat_new/(rv*tpk(
i)*tpk(
i))
202 tpk(
i)=tg+(alf*qi(
i)+alv*rg*(1.-(esi/es)))*snew
203 c@$$ print*,
'################################'
205 c@$$ print*,(alf*qi(
i)+alv*rg*(1.-(esi/es)))*snew
207 ccc clw(
i)=rr(1)-qsat_new
208 clw(
i)=rr(nk)-qsat_new
209 clw(
i)=max(0.0,clw(
i))
211 ccc tvp(
i)=tpk(
i)*(1.+qsat_new/
eps)
212 tvp(
i)=tpk(
i)*(1.+qsat_new/
eps-rr(nk))
223 ******************************************************
224 ** bk : rajout
de la temperature des ascendances
225 ** non dilues au niveau
klev = nd
226 ** posons le environ egal a celui
de klev-1
227 ********************************************************
231 *******************************************************