1 SUBROUTINE concvl (iflag_con,iflag_clos,
3 . t,
q,t_wake,q_wake,s_wake,
u,
v,tra,ntra,
5 . d_t,d_q,d_u,d_v,d_tra,
6 . rain, snow, kbas, ktop,
sigd,
7 . cbmf,plcl,plfc,wbeff,upwd,dnwd,dnwdbis,
9 . cape,cin,tvp,tconv,iflag,
10 . pbase,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr,
11 . qcondc,wd,pmflxr,pmflxs,
14 . da,phi,mp,phi2,d1a,dam,sij,clw,elij,
15 . dd_t,dd_q,lalim_conv,wght_th,
16 . evap, ep, epmlmmm,eplamm,
72 #include "dimensions.h"
78 REAL t_wake(klon,
klev),q_wake(klon,
klev)
80 REAL tra(klon,
klev,nbtr)
82 REAL work1(klon,
klev),work2(klon,
klev),ptop2(klon)
83 REAL pmflxr(klon,
klev+1),pmflxs(klon,
klev+1)
84 REAL ale(klon),alp(klon)
88 REAL d_tra(klon,
klev,nbtr)
89 REAL rain(klon),snow(klon)
91 INTEGER kbas(klon),ktop(klon)
92 REAL em_ph(klon,
klev+1),em_p(klon,
klev)
103 REAL wdtraina(klon,
klev),wdtrainm(klon,
klev)
107 REAL cape(klon),cin(klon),tvp(klon,
klev)
108 REAL tconv(klon,
klev)
111 INTEGER lalim_conv(klon)
112 REAL wght_th(klon,
klev)
121 REAL pbase(klon),bbase(klon)
122 REAL dtvpdt1(klon,
klev),dtvpdq1(klon,
klev)
123 REAL dplcldt(klon),dplcldr(klon)
124 REAL qcondc(klon,
klev)
126 REAL plim1(klon),plim2(klon),asupmax(klon,
klev)
127 REAL supmax0(klon),asupmaxmin(klon)
130 REAL zx_t,zdelta,zx_qs,zcor
136 REAL qs(klon,
klev),qs_wake(klon,
klev)
137 REAL cbmf(klon),plcl(klon),plfc(klon),wbeff(klon)
156 REAL,
SAVE,
ALLOCATABLE :: ql(:,:), q1(:,:), t1(:,:)
161 REAL h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot
162 $ , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot
163 SAVE h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot
164 $ , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot
167 REAL d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec
169 REAL fs_bound, fq_bound
183 REAL d_t_ec(klon,
klev)
188 logical,
save :: first=.true.
190 INTEGER,
SAVE :: itap, igout
197 #include "iniprint.h"
203 allocate(ql(klon,
klev))
204 allocate(t1(klon,
klev))
205 allocate(q1(klon,
klev))
219 IF (if_ebil.ge.1)
THEN
255 &
WRITE(
lunout,*)
'supcrit1, supcrit2' ,supcrit1, supcrit2
260 IF (if_ebil.ge.1) d_h_vcol_phy=0.
276 em_ph(
i,
k) = paprs(
i,
k) / 100.0
310 zdelta=max(0.,sign(1.,rtt-zx_t))
311 zx_qs= min(0.5 , r2es * foeew(zx_t,zdelta)/em_p(
i,
k)/100.0)
312 zcor=1./(1.-retv*zx_qs)
317 zdelta=max(0.,sign(1.,rtt-zx_t))
318 zx_qs= min(0.5 , r2es * foeew(zx_t,zdelta)/em_p(
i,
k)/100.0)
319 zcor=1./(1.-retv*zx_qs)
320 qs_wake(
i,
k)=zx_qs*zcor
327 zdelta=max(0.,sign(1.,rtt-zx_t))
328 zx_qs= r2es * foeew(zx_t,zdelta)/em_p(
i,
k)/100.0
329 zx_qs= min(0.5,zx_qs)
330 zcor=1./(1.-retv*zx_qs)
336 zdelta=max(0.,sign(1.,rtt-zx_t))
337 zx_qs= r2es * foeew(zx_t,zdelta)/em_p(
i,
k)/100.0
338 zx_qs= min(0.5,zx_qs)
339 zcor=1./(1.-retv*zx_qs)
356 print *,
'-> cv_driver'
360 $ d_t,d_q,d_u,d_v,d_tra,rain,
361 $ vprecip,cbmf,work1,work2,
363 $
dtime,ma,upwd,dnwd,dnwdbis,qcondc,wd,cape,
364 $ da,phi,mp,phi2,d1a,dam,sij,clw,elij,
365 $ evap,ep,epmlmmm,eplamm,
367 print *,
'cv_driver ->'
370 cbmf(
i) = ma(
i,kbas(
i))
379 : t,
q,qs,t_wake,q_wake,qs_wake,s_wake,
u,
v,tra,
382 . em_sig1feed,em_sig2feed,em_wght,
383 . iflag,d_t,d_q,d_u,d_v,d_tra,rain,kbas,ktop,
384 $ cbmf,plcl,plfc,wbeff,work1,work2,ptop2,
sigd,
385 $ ma,mip,vprecip,upwd,dnwd,dnwdbis,qcondc,wd,
387 $ dd_t,dd_q,plim1,plim2,asupmax,supmax0,
388 $ asupmaxmin,lalim_conv,
390 $ da,phi,mp,phi2,d1a,dam,sij,clw,elij,
391 $ evap,ep,epmlmmm,eplamm,
397 .
WRITE(
lunout,*)
' cva_driver -> cbmf,plcl,plfc,wbeff ',
398 . cbmf(1),plcl(1),plfc(1),wbeff(1)
401 rain(
i) = rain(
i)/86400.
438 t1(
i,
k) = t(
i,
k)+ d_t(
i,
k)
446 IF (t1(
i,
k).LT.rtt)
THEN
447 pmflxs(
i,
k)=vprecip(
i,
k)
449 pmflxr(
i,
k)=vprecip(
i,
k)