4 SUBROUTINE conema3 (dtime,paprs,pplay,t,q,u,v,tra,ntra,
5 . work1,work2,d_t,d_q,d_u,d_v,d_tra,
6 . rain, snow, kbas, ktop,
7 . upwd,dnwd,dnwdbis,bas,top,ma,cape,tvp,rflag,
8 . pbase,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr,
57 #include "dimensions.h"
64 REAL d_t2(klon,
klev), d_q2(klon,
klev)
65 REAL d_u2(klon,
klev), d_v2(klon,
klev)
72 REAL d_u(klon,
klev), d_v(klon,
klev), d_tra(klon,
klev,ntra)
73 REAL work1(klon,
klev), work2(klon,
klev)
74 REAL upwd(klon,
klev), dnwd(klon,
klev), dnwdbis(klon,
klev)
77 REAL cape(klon), tvp(klon,
klev), rflag(klon)
78 REAL pbase(klon), bbase(klon)
79 REAL dtvpdt1(klon,
klev), dtvpdq1(klon,
klev)
80 REAL dplcldt(klon), dplcldr(klon)
81 INTEGER kbas(klon), ktop(klon)
84 REAL qcond_incld(klon,
klev)
86 LOGICAL,
SAVE :: first=.true.
90 REAL,
ALLOCATABLE,
SAVE :: em_t(:)
93 REAL,
ALLOCATABLE,
SAVE :: em_q(:)
96 REAL,
ALLOCATABLE,
SAVE :: em_qs(:)
99 REAL,
ALLOCATABLE,
SAVE :: em_u(:),em_v(:),em_tra(:,:)
102 REAL,
ALLOCATABLE,
SAVE ::em_ph(:),em_p(:)
105 REAL,
ALLOCATABLE,
SAVE ::em_work1(:),em_work2(:)
108 REAL,
SAVE :: em_precip
110 REAL,
ALLOCATABLE,
SAVE :: em_d_t(:),em_d_q(:)
113 REAL,
ALLOCATABLE,
SAVE ::em_d_u(:),em_d_v(:),em_d_tra(:,:)
116 REAL,
ALLOCATABLE,
SAVE :: em_upwd(:),em_dnwd(:),em_dnwdbis(:)
118 REAL em_dtvpdt1(
klev), em_dtvpdq1(
klev)
119 REAL em_dplcldt, em_dplcldr
125 INTEGER em_bas, em_top
132 REAL zx_t, zx_qs, zdelta, zcor
140 REAL,
ALLOCATABLE,
SAVE ::emmip(:)
144 REAL,
ALLOCATABLE,
SAVE ::emmke(:)
150 REAL,
ALLOCATABLE,
SAVE ::emma(:)
158 real em_cape, em_tvp(
klev)
159 real em_pbase, em_bbase
171 integer ifc(klon,
klev)
173 real cldf(klon,
klev), cldq(klon,
klev)
174 real ftadj(klon,
klev), fqadj(klon,
klev)
188 allocate(em_qs(
klev))
191 allocate(em_work1(
klev), em_work2(
klev))
192 allocate(em_d_t(
klev), em_d_q(
klev))
193 allocate(em_d_u(
klev), em_d_v(
klev), em_d_tra(
klev,nbtr))
194 allocate(em_upwd(
klev), em_dnwd(
klev), em_dnwdbis(
klev))
195 allocate(emmip(
klev))
196 allocate(emmke(
klev))
202 qcond_incld(:,:) = 0.
208 em_ph(
l) = paprs(
i,
l) / 100.0
218 em_tra(
l,itra) = tra(
i,
l,itra)
231 zdelta=max(0.,sign(1.,rtt-zx_t))
232 zx_qs= r2es * foeew(zx_t,zdelta)/em_p(
l)/100.0
235 zcor=1./(1.-retv*zx_qs)
240 em_work1(
l) = work1(
i,
l)
241 em_work2(
l) = work2(
i,
l)
264 1792
format(
'sig avant convect ',/,10(1
x,e13.5))
267 1793
format(
'w avant convect ',/,10(1
x,e13.5))
275 . em_t, em_q, em_qs,em_u ,em_v ,
276 . em_tra, em_p, em_ph,
278 . em_d_t, em_d_q,em_d_u,em_d_v,
279 . em_d_tra, em_precip,
280 . em_bas, em_top,em_upwd, em_dnwd, em_dnwdbis,
281 . em_work1, em_work2,emmip,emmke,emma,ment,
282 . qent,tps,tls,sij,em_cape,em_tvp,em_pbase,em_bbase,
283 . em_dtvpdt1,em_dtvpdq1,em_dplcldt,em_dplcldr,
284 . em_d_t2,em_d_q2,em_d_u2,em_d_v2,em_wd,em_qcond,em_qcondc)
304 cldf(
i,
k) = em_cldf(
k)
305 cldq(
i,
k) = em_cldq(
k)
306 ftadj(
i,
k) = em_ftadj(
k)
307 fqadj(
i,
k) = em_fradj(
k)
315 if (iflag.ne.1 .and. iflag.ne.4)
then
331 sigsum = sigsum + em_work1(
k)
333 if (sigsum .eq. 0.0)
then
349 if (iflag.EQ.1 .or. iflag.EQ.4)
then
358 rain(
i) = em_precip/ 86400.0
362 rflag(
i) =
REAL(iflag)
365 dplcldt(
i) = em_dplcldt
366 dplcldr(
i) = em_dplcldr
378 d_tra(
i,
l,itra) =
dtime * em_d_tra(
l,itra)
380 upwd(
i,
l) = em_upwd(
l)
381 dnwd(
i,
l) = em_dnwd(
l)
382 dnwdbis(
i,
l) = em_dnwdbis(
l)
383 work1(
i,
l) = em_work1(
l)
384 work2(
i,
l) = em_work2(
l)
387 dtvpdt1(
i,
l) = em_dtvpdt1(
l)
388 dtvpdq1(
i,
l) = em_dtvpdq1(
l)
391 qcond_incld(
i,
l) = em_qcondc(
l)
393 qcond_incld(
i,
l) = em_qcond(
l)
403 if (ktop(
i)-kbas(
i).gt.0.and.
404 s
l.ge.kbas(
i).and.
l.le.ktop(
i))
then
405 qcond_incld(
i,
l)=rain(
i)*8.e4
413 print*,
'l=',
l,
', qcond_incld=',qcond_incld(1,
l)