60 cactiv,cactiv_m,g,cp,xlv,r_v,forcet,forceqv_spechum,phil,raincv, &
61 qv_spechum,t,cld1d,us,vs,t2di,w,qv2di_spechum,p2di,psuri, &
62 hbot,htop,kcnv,xland,hfx2,qfx2,aod_gf,cliw,clcw, &
63 pbl,ud_mf,dd_mf,dt_mf,cnvw_moist,cnvc,imfshalcnv, &
64 flag_for_scnv_generic_tend,flag_for_dcnv_generic_tend, &
65 dtend,dtidx,ntqv,ntiw,ntcw,index_of_temperature,index_of_x_wind, &
66 index_of_y_wind,index_of_process_scnv,index_of_process_dcnv, &
67 fhour,fh_dfi_radar,ix_dfi_radar,num_dfi_radar,cap_suppress, &
68 dfi_radar_max_intervals,ldiag3d,qci_conv,do_cap_suppress, &
69 maxupmf,maxMF,do_mynnedmf,ichoice_in,ichoicem_in,ichoice_s_in, &
70 spp_cu_deep,spp_wts_cu_deep,nchem,chem3d,fscav,wetdpc_deep, &
71 do_smoke_transport,kdt,errmsg,errflg)
74 integer,
parameter :: maxiens=1
75 integer,
parameter :: maxens=1
76 integer,
parameter :: maxens2=1
77 integer,
parameter :: maxens3=16
78 integer,
parameter :: ensdim=16
80 integer,
parameter :: ideep=1
82 integer :: ichoicem=13
83 integer :: ichoice_s=3
84 integer,
intent(in) :: spp_cu_deep
85 real(kind_phys),
dimension(:,:),
intent(in),
optional :: &
87 real(kind=kind_phys) :: spp_wts_cu_deep_tmp
89 logical,
intent(in) :: do_cap_suppress, do_smoke_transport
90 real(kind=kind_phys),
parameter :: aodc0=0.14
91 real(kind=kind_phys),
parameter :: aodreturn=30.
92 real(kind=kind_phys) :: dts,fpi,fp
93 integer,
parameter :: dicycle=0
94 integer,
parameter :: dicycle_m=0
95 integer :: ishallow_g3
97 integer :: its,ite, jts,jte, kts,kte
98 integer,
intent(in ) :: im,km,ntracer,nchem,kdt
99 integer,
intent(in ) :: ichoice_in,ichoicem_in,ichoice_s_in
100 logical,
intent(in ) :: flag_init, flag_restart, do_mynnedmf
101 logical,
intent(in ) :: flag_for_scnv_generic_tend,flag_for_dcnv_generic_tend
102 real (kind=kind_phys),
intent(in) :: g,cp,xlv,r_v
103 logical,
intent(in ) :: ldiag3d
105 real(kind=kind_phys),
intent(inout),
optional :: dtend(:,:,:)
107 integer,
intent(in) :: dtidx(:,:), &
108 index_of_x_wind, index_of_y_wind, index_of_temperature, &
109 index_of_process_scnv, index_of_process_dcnv, ntqv, ntcw, ntiw
111 real(kind=kind_phys),
dimension( : , : ),
intent(in ),
optional :: forcet,forceqv_spechum
112 real(kind=kind_phys),
dimension( : , : ),
intent(in ) :: w,phil
113 real(kind=kind_phys),
dimension( : , : ),
intent(inout ) :: t,us,vs
114 real(kind=kind_phys),
dimension( : , : ),
intent(inout ),
optional :: qci_conv
115 real(kind=kind_phys),
dimension( : , : ),
intent(out ) :: cnvw_moist,cnvc
116 real(kind=kind_phys),
dimension( : , : ),
intent(inout ) :: cliw, clcw
121 real(kind=kind_phys),
allocatable :: clcw_save(:,:), cliw_save(:,:)
123 integer,
intent(in) :: dfi_radar_max_intervals
124 real(kind=kind_phys),
intent(in) :: fhour, fh_dfi_radar(:)
125 integer,
intent(in) :: num_dfi_radar, ix_dfi_radar(:)
126 real(kind=kind_phys),
intent(in),
optional :: cap_suppress(:,:)
129 integer,
dimension (:),
intent(out) :: hbot,htop,kcnv
130 integer,
dimension (:),
intent(in) :: xland
131 real(kind=kind_phys),
dimension (:),
intent(in) :: pbl
132 real(kind=kind_phys),
dimension (:),
intent(in),
optional :: maxmf
135 integer,
dimension (im) :: tropics
138 real(kind=kind_phys),
dimension (:),
intent(in) :: hfx2,qfx2,psuri
139 real(kind=kind_phys),
dimension (:,:),
intent(out) :: dd_mf,dt_mf
140 real(kind=kind_phys),
dimension (:,:),
intent(out),
optional :: ud_mf
141 real(kind=kind_phys),
dimension (:),
intent(out) :: raincv,cld1d
142 real(kind=kind_phys),
dimension (:),
intent(out),
optional :: maxupmf
143 real(kind=kind_phys),
dimension (:,:),
intent(in) :: t2di,p2di
147 real(kind=kind_phys),
dimension (:,:),
intent(in) :: qv2di_spechum
148 real(kind=kind_phys),
dimension (:,:),
intent(inout) :: qv_spechum
149 real(kind=kind_phys),
dimension (:),
intent(inout),
optional :: aod_gf
152 real(kind=kind_phys),
dimension (im,km) :: qv2di, qv, forceqv, cnvw
155 real(kind=kind_phys),
dimension(:),
intent(in) :: garea
157 real(kind=kind_phys),
intent(in ) :: dt
159 integer,
intent(in ) :: imfshalcnv
160 integer,
dimension(:),
intent(inout),
optional :: cactiv,cactiv_m
161 real(kind_phys),
dimension(:),
intent(in) :: fscav
163 real(kind_phys),
dimension(:,:,:),
intent(inout),
optional :: chem3d
164 real(kind_phys),
dimension(:,:),
intent(inout),
optional :: wetdpc_deep
167 character(len=*),
intent(out) :: errmsg
168 integer,
intent(out) :: errflg
171 integer,
dimension(im) :: k22_shallow,kbcon_shallow,ktop_shallow
172 real(kind=kind_phys),
dimension (im) :: rand_mom,rand_vmas
173 real(kind=kind_phys),
dimension (im,4) :: rand_clos
174 real(kind=kind_phys),
dimension (im,km,11) :: gdc,gdc2
175 real(kind=kind_phys),
dimension (im) :: ht
176 real(kind=kind_phys),
dimension (im) :: ccn_gf,ccn_m
177 real(kind=kind_phys) :: ccnclean
178 real(kind=kind_phys),
dimension (im) :: dx
179 real(kind=kind_phys),
dimension (im) :: frhm,frhd
180 real(kind=kind_phys),
dimension (im,km) :: outt,outq,outqc,phh,subm,cupclw,cupclws
181 real(kind=kind_phys),
dimension (im,km) :: dhdt,zu,zus,zd,phf,zum,zdm,outum,outvm
182 real(kind=kind_phys),
dimension (im,km) :: outts,outqs,outqcs,outu,outv,outus,outvs
183 real(kind=kind_phys),
dimension (im,km) :: outtm,outqm,outqcm,submm,cupclwm
184 real(kind=kind_phys),
dimension (im,km) :: cnvwt,cnvwts,cnvwtm
185 real(kind=kind_phys),
dimension (im,km) :: hco,hcdo,zdo,zdd,hcom,hcdom,zdom
186 real(kind=kind_phys),
dimension (km) :: zh
187 real(kind=kind_phys),
dimension (im) :: tau_ecmwf,edt,edtm,edtd,ter11,aa0,xlandi
188 real(kind=kind_phys),
dimension (im) :: pret,prets,pretm,hexec
189 real(kind=kind_phys),
dimension (im,10) :: forcing,forcing2
190 real(kind=kind_phys),
dimension (im,nchem) :: wetdpc_mid
192 integer,
dimension (im) :: kbcon, ktop,ierr,ierrs,ierrm,kpbli
193 integer,
dimension (im) :: k22s,kbcons,ktops,k22,jmin,jminm
194 integer,
dimension (im) :: kbconm,ktopm,k22m
207 integer :: iens,ibeg,iend,jbeg,jend,n
208 integer :: ibegh,iendh,jbegh,jendh
209 integer :: ibegc,iendc,jbegc,jendc,kstop
210 real(kind=kind_phys),
dimension(im,km) :: rho_dryar
212 real(kind=kind_phys) :: pten,pqen,paph,zrho,pahfs,pqhfl,zkhvfl,pgeoh
213 integer,
parameter :: ipn = 0
220 real(kind=kind_phys),
dimension (im,km) :: qcheck,zo,t2d,q2d,po,p2d,rhoi,clw_ten
221 real(kind=kind_phys),
dimension (im,km) :: tn,qo,tshall,qshall,dz8w,omeg
222 real(kind=kind_phys),
dimension (im) :: z1,psur,cuten,cutens,cutenm
223 real(kind=kind_phys),
dimension (im) :: umean,vmean,pmean
224 real(kind=kind_phys),
dimension (im) :: xmbs,xmbs2,xmb,xmbm,xmb_dumm,mconv
229 integer :: i,j,k,icldck,ipr,jpr,jpr_deep,ipr_deep,uidx,vidx,tidx,qidx
230 integer :: itf,jtf,ktf,iss,jss,nbegin,nend,cliw_idx,clcw_idx
231 integer :: high_resolution
232 real(kind=kind_phys) :: clwtot,clwtot1,excess,tcrit,tscl_kf,dp,dq,sub_spread,subcenter
233 real(kind=kind_phys) :: dsubclw,dsubclws,dsubclwm,dtime_max,ztm,ztq,hfm,qfm,rkbcon,rktop
234 real(kind=kind_phys),
dimension(km) :: massflx,trcflx_in1,clw_in1,po_cup
236 real(kind=kind_phys),
dimension (im) :: flux_tun,tun_rad_mid,tun_rad_shall,tun_rad_deep
238 character*50 :: ierrc(im),ierrcm(im)
239 character*50 :: ierrcs(im)
244 real(kind=kind_phys),
dimension (im) :: hfx,qfx
246 real(kind=kind_phys) tem,tem1,tf,tcr,tcrf,psum
247 real(kind=kind_phys) :: cliw_shal,clcw_shal,tem_shal, cliw_both, weight_sum
248 real(kind=kind_phys) :: cliw_deep,clcw_deep,tem_deep, clcw_both
249 integer :: cliw_deep_idx, clcw_deep_idx, cliw_shal_idx, clcw_shal_idx
251 real(kind=kind_phys) :: cap_suppress_j(im)
253 integer :: itime, do_cap_suppress_here
259 parameter(tf=258.16, tcr=273.16, tcrf=1.0/(tcr-tf))
265 ichoicem = ichoicem_in
266 ichoice_s = ichoice_s_in
267 if(do_cap_suppress)
then
269 do itime=1,num_dfi_radar
270 if(ix_dfi_radar(itime)<1) cycle
271 if(fhour<fh_dfi_radar(itime)) cycle
272 if(fhour>=fh_dfi_radar(itime+1)) cycle
277 if(do_cap_suppress .and. itime<=num_dfi_radar)
then
278 do_cap_suppress_here = 1
280 cap_suppress_j(:) = cap_suppress(:,itime)
283 do_cap_suppress_here = 0
285 cap_suppress_j(:) = 0
290 if(flag_for_dcnv_generic_tend)
then
294 cliw_deep_idx=dtidx(100+ntiw,index_of_process_dcnv)
295 clcw_deep_idx=dtidx(100+ntcw,index_of_process_dcnv)
297 if(flag_for_scnv_generic_tend)
then
301 cliw_shal_idx=dtidx(100+ntiw,index_of_process_scnv)
302 clcw_shal_idx=dtidx(100+ntcw,index_of_process_scnv)
304 if(cliw_deep_idx>=1 .or. clcw_deep_idx>=1 .or. &
305 cliw_shal_idx>=1 .or. clcw_shal_idx>=1)
then
306 allocate(clcw_save(im,km), cliw_save(im,km))
309 clcw_save(:,:)=clcw(:,:)
310 cliw_save(:,:)=cliw(:,:)
320 qv2di = qv2di_spechum/(1.0_kind_phys-qv2di_spechum)
322 forceqv = forceqv_spechum/(1.0_kind_phys-qv2di_spechum)
324 qv = qv_spechum/(1.0_kind_phys-qv_spechum)
330 if (spp_cu_deep == 0)
then
336 spp_wts_cu_deep_tmp=min(max(-1.0_kind_phys, spp_wts_cu_deep(i,1)),1.0_kind_phys)
337 rand_mom(i) = spp_wts_cu_deep_tmp
338 rand_vmas(i) = spp_wts_cu_deep_tmp
339 rand_clos(i,:) = spp_wts_cu_deep_tmp
370 if (imfshalcnv == 3)
then
409 dz8w(i,1)=zo(i,2)-zo(i,1)
413 dz8w(i,k)=zo(i,k+1)-zo(i,k)
417 zh(k)=zh(k-1)+dz8w(i,k-1)
418 if(zh(k).gt.pbl(i))
then
434 if (flag_init .and. .not.flag_restart)
then
437 if((cactiv(i).eq.0) .and. (cactiv_m(i).eq.0))
then
438 if(aodc0>aod_gf(i)) aod_gf(i)=aod_gf(i)+((aodc0-aod_gf(i))*(dt/(aodreturn*60)))
439 if(aod_gf(i)>aodc0) aod_gf(i)=aodc0
443 ccn_gf(i)=max(5., (aod_gf(i)/0.0027)**(1/0.640))
446 ccnclean=max(5., (aodc0/0.0027)**(1/0.640))
451 xlandi(i)=real(xland(i))
469 psur(:)=0.01*psuri(:)
471 ter11(i)=max(0.,ht(i))
569 p2d(i,k)=0.01*p2di(i,k)
571 rhoi(i,k) = 100.*p2d(i,k)/(287.04*(t2di(i,k)*(1.+0.608*qv2di(i,k))))
574 qo(i,k)=max(1.e-16,qv(i,k))
575 t2d(i,k)=t2di(i,k)-forcet(i,k)*dt
576 q2d(i,k)=max(1.e-16,qv2di(i,k)-forceqv(i,k)*dt)
577 if(qo(i,k).lt.1.e-16)qo(i,k)=1.e-16
583123
format(1x,i2,1x,2(1x,f8.0),1x,2(1x,f8.3),3(1x,e13.5))
588 qshall(i,k)=max(1.e-16,qv(i,k))
596 hfx(i)=hfx2(i)*cp*rhoi(i,1)
597 qfx(i)=qfx2(i)*xlv*rhoi(i,1)
598 dx(i) = sqrt(garea(i))
604 qo(i,k)=max(1.e-16,qv(i,k))
611 dhdt(i,k)=cp*(forcet(i,k)+(t(i,k)-t2di(i,k))/dt) + &
612 xlv*(forceqv(i,k)+(qv(i,k)-qv2di(i,k))/dt)
620 if((p2d(i,1)-p2d(i,k)).gt.150.and.p2d(i,k).gt.300)
then
621 dp=-.5*(p2d(i,k+1)-p2d(i,k-1))
623 umean(i)=umean(i)+us(i,k)*dp
625 vmean(i)=vmean(i)+vs(i,k)*dp
634 if (clcw(i,k) .gt. -999.0 .and. clcw(i,k+1) .gt. -999.0 )
then
635 dp=(p2d(i,k)-p2d(i,k+1))
637 clwtot = cliw(i,k) + clcw(i,k)
638 if(clwtot.lt.1.e-32)clwtot=0.
639 forcing(i,7)=forcing(i,7)+clwtot*dp
642 if(psum.gt.0)forcing(i,7)=forcing(i,7)/psum
643 forcing2(i,7)=forcing(i,7)
651 if(mconv(i).lt.0.)mconv(i)=0.
652 if((dx(i)<6500.).and.do_mynnedmf.and.(maxmf(i).gt.0.))ierr(i)=555
655 if (dx(its)<6500.)
then
661 if(ishallow_g3.eq.1)
then
674 zo,t2d,q2d,ter11,tshall,qshall,p2d,psur,dhdt,kpbli, &
675 rhoi,hfx,qfx,xlandi,ichoice_s,tcrit,dt, &
678 zus,xmbs,kbcons,ktops,k22s,ierrs,ierrcs, &
680 outts,outqs,outqcs,outus,outvs,cnvwt,prets,cupclws, &
682 itf,ktf,its,ite, kts,kte,ipr,tropics)
686 if(xmbs(i).gt.0.)
then
688 if (dx(i)<6500.)
then
696 call neg_check(
'shallow',ipn,dt,qcheck,outqs,outts,outus,outvs, &
697 outqcs,prets,its,ite,kts,kte,itf,ktf,ktops)
705 itf,ktf,its,ite, kts,kte &
759 ,do_smoke_transport &
771 ,do_cap_suppress_here,cap_suppress_j &
777 qcheck(i,k)=qv(i,k) +outqs(i,k)*dt
782 call neg_check(
'mid',ipn,dt,qcheck,outqm,outtm,outum,outvm, &
783 outqcm,pretm,its,ite,kts,kte,itf,ktf,ktopm)
788 itf,ktf,its,ite, kts,kte &
845 ,do_smoke_transport &
857 ,do_cap_suppress_here,cap_suppress_j &
865 qcheck(i,k)=qv(i,k) +(outqs(i,k)+outqm(i,k))*dt
870 call neg_check(
'deep',ipn,dt,qcheck,outq,outt,outu,outv, &
871 outqc,pret,its,ite,kts,kte,itf,ktf,ktop)
877 if(pretm(i).gt.0.)
then
886 if(pret(i).gt.0.)
then
911 if(ktopm(i).gt.kts .or. ktop(i).gt.kts)kstop=max(ktopm(i),ktop(i))
912 if(ktops(i).gt.kts)kstop=max(kstop,ktops(i))
915 if(kbcon(i).gt.2 .or. kbconm(i).gt.2)
then
916 hbot(i)=max(kbconm(i),kbcon(i))
922 cnvc(i,k) = 0.04 * log(1. + 675. * zu(i,k) * xmb(i)) + &
923 0.04 * log(1. + 675. * zum(i,k) * xmbm(i)) + &
924 0.04 * log(1. + 675. * zus(i,k) * xmbs(i))
925 cnvc(i,k) = min(cnvc(i,k), 0.6)
926 cnvc(i,k) = max(cnvc(i,k), 0.0)
927 cnvw(i,k)=cnvwt(i,k)*xmb(i)*dt+cnvwts(i,k)*xmbs(i)*dt+cnvwtm(i,k)*xmbm(i)*dt
928 ud_mf(i,k)=cuten(i)*zu(i,k)*xmb(i)*dt
929 dd_mf(i,k)=cuten(i)*zd(i,k)*edt(i)*xmb(i)*dt
930 t(i,k)=t(i,k)+dt*(cutens(i)*outts(i,k)+cutenm(i)*outtm(i,k)+outt(i,k)*cuten(i))
931 qv(i,k)=max(1.e-16,qv(i,k)+dt*(cutens(i)*outqs(i,k)+cutenm(i)*outqm(i,k)+outq(i,k)*cuten(i)))
932 gdc(i,k,7)=sqrt(us(i,k)**2 +vs(i,k)**2)
933 us(i,k)=us(i,k)+outu(i,k)*cuten(i)*dt +outum(i,k)*cutenm(i)*dt +outus(i,k)*cutens(i)*dt
934 vs(i,k)=vs(i,k)+outv(i,k)*cuten(i)*dt +outvm(i,k)*cutenm(i)*dt +outvs(i,k)*cutens(i)*dt
936 gdc(i,k,1)= max(0.,tun_rad_shall(i)*cupclws(i,k)*cutens(i))
938 gdc2(i,k,1)=max(0.,tun_rad_mid(i)*cupclwm(i,k)*cutenm(i)+frhd(i)*cupclw(i,k)*cuten(i)+tun_rad_shall(i)*cupclws(i,k)*cutens(i))
940 qci_conv(i,k)=gdc2(i,k,1)
941 gdc(i,k,2)=(outt(i,k))*86400.
942 gdc(i,k,3)=(outtm(i,k))*86400.
943 gdc(i,k,4)=(outts(i,k))*86400.
944 gdc(i,k,7)=-(gdc(i,k,7)-sqrt(us(i,k)**2 +vs(i,k)**2))/dt
946 gdc(i,k,8)=(outqm(i,k)+outqs(i,k)+outq(i,k))*86400.*xlv/cp
947 gdc(i,k,9)=gdc(i,k,2)+gdc(i,k,3)+gdc(i,k,4)
950 dp=100.*(p2d(i,k)-p2d(i,k+1))
951 dtime_max=min(dtime_max,.5*dp)
952 po_cup(k)=.5*(p2d(i,k)+p2d(i,k+1))
953 if (clcw(i,k) .gt. -999.0 .and. clcw(i,k+1) .gt. -999.0 )
then
954 clwtot = cliw(i,k) + clcw(i,k)
955 if(clwtot.lt.1.e-32)clwtot=0.
956 clwtot1= cliw(i,k+1) + clcw(i,k+1)
957 if(clwtot1.lt.1.e-32)clwtot1=0.
959 massflx(k)=-(xmb(i) *( zu(i,k)- edt(i)* zd(i,k))) &
960 -(xmbm(i)*(zdm(i,k)-edtm(i)*zdm(i,k))) &
962 trcflx_in1(k)=massflx(k)*.5*(clwtot+clwtot1)
963 forcing2(i,3)=forcing2(i,3)+clwtot
969 call fct1d3 (kstop,kte,dtime_max,po_cup, &
970 clw_in1,massflx,trcflx_in1,clw_ten(i,:),g)
973 tem = dt*(outqcs(i,k)*cutens(i)+outqc(i,k)*cuten(i) &
974 +outqcm(i,k)*cutenm(i) &
977 tem1 = max(0.0, min(1.0, (tcr-t(i,k))*tcrf))
978 if (clcw(i,k) .gt. -999.0)
then
979 cliw(i,k) = max(0.,cliw(i,k) + tem * tem1)
980 clcw(i,k) = max(0.,clcw(i,k) + tem *(1.0-tem1))
982 cliw(i,k) = max(0.,cliw(i,k) + tem)
987 gdc(i,1,10)=forcing(i,1)
988 gdc(i,2,10)=forcing(i,2)
989 gdc(i,3,10)=forcing(i,3)
990 gdc(i,4,10)=forcing(i,4)
991 gdc(i,5,10)=forcing(i,5)
992 gdc(i,6,10)=forcing(i,6)
993 gdc(i,7,10)=forcing(i,7)
994 gdc(i,8,10)=forcing(i,8)
1000 gdc(i,16,10)=pret(i)*3600.
1003 if(forcing2(i,6).gt.0.)
then
1004 maxupmf(i)=maxval(xmb(i)*zu(i,kts:ktf)/forcing2(i,6))
1007 if(ktop(i).gt.2 .and.pret(i).gt.0.)dt_mf(i,ktop(i)-1)=ud_mf(i,ktop(i))
1013 if(pret(i).gt.0.)
then
1015 raincv(i)=.001*(cutenm(i)*pretm(i)+cutens(i)*prets(i)+cuten(i)*pret(i))*dt
1018 if(pretm(i).gt.0)raincv(i)=.001*cutenm(i)*pretm(i)*dt
1021 if(pretm(i).gt.0)
then
1028 if(ccn_m(i).lt.ccn_gf(i))
then
1032 if(ccn_gf(i)<0) ccn_gf(i)=0
1035 aod_gf(i)=0.0027*(ccn_gf(i)**0.64)
1036 if(aod_gf(i)<0.007)
then
1038 ccn_gf(i)=(aod_gf(i)/0.0027)**(1/0.640)
1039 elseif(aod_gf(i)>aodc0)
then
1041 ccn_gf(i)=(aod_gf(i)/0.0027)**(1/0.640)
1050 qv_spechum = qv/(1.0_kind_phys+qv)
1051 cnvw_moist = cnvw/(1.0_kind_phys+qv)
1057 if(ishallow_g3.eq.1 .and. .not.flag_for_scnv_generic_tend)
then
1058 uidx=dtidx(index_of_x_wind,index_of_process_scnv)
1059 vidx=dtidx(index_of_y_wind,index_of_process_scnv)
1060 tidx=dtidx(index_of_temperature,index_of_process_scnv)
1061 qidx=dtidx(100+ntqv,index_of_process_scnv)
1065 dtend(:,k,uidx) = dtend(:,k,uidx) + cutens(:)*outus(:,k) * dt
1072 dtend(:,k,vidx) = dtend(:,k,vidx) + cutens(:)*outvs(:,k) * dt
1079 dtend(:,k,tidx) = dtend(:,k,tidx) + cutens(:)*outts(:,k) * dt
1087 tem = cutens(i)*outqs(i,k)* dt
1088 tem = tem/(1.0_kind_phys+tem)
1089 dtend(i,k,qidx) = dtend(i,k,qidx) + tem
1095 if((ideep.eq.1. .or. imid_gf.eq.1) .and. .not.flag_for_dcnv_generic_tend)
then
1096 uidx=dtidx(index_of_x_wind,index_of_process_dcnv)
1097 vidx=dtidx(index_of_y_wind,index_of_process_dcnv)
1098 tidx=dtidx(index_of_temperature,index_of_process_dcnv)
1102 dtend(:,k,uidx) = dtend(:,k,uidx) + (cuten*outu(:,k)+cutenm*outum(:,k)) * dt
1109 dtend(:,k,vidx) = dtend(:,k,vidx) + (cuten*outv(:,k)+cutenm*outvm(:,k)) * dt
1116 dtend(:,k,tidx) = dtend(:,k,tidx) + (cuten*outt(:,k)+cutenm*outtm(:,k)) * dt
1121 qidx=dtidx(100+ntqv,index_of_process_dcnv)
1126 tem = (cuten(i)*outq(i,k) + cutenm(i)*outqm(i,k))* dt
1127 tem = tem/(1.0_kind_phys+tem)
1128 dtend(i,k,qidx) = dtend(i,k,qidx) + tem
1134 if(
allocated(clcw_save))
then
1138 tem_shal = dt*(outqcs(i,k)*cutens(i)+outqcm(i,k)*cutenm(i))
1139 tem_deep = dt*(outqc(i,k)*cuten(i)+clw_ten(i,k))
1140 tem = tem_shal+tem_deep
1141 tem1 = max(0.0, min(1.0, (tcr-t(i,k))*tcrf))
1142 weight_sum = abs(tem_shal)+abs(tem_deep)
1143 if(weight_sum<1e-12)
then
1147 if (clcw_save(i,k) .gt. -999.0)
then
1148 cliw_both = max(0.,cliw_save(i,k) + tem * tem1) - cliw_save(i,k)
1149 clcw_both = max(0.,clcw_save(i,k) + tem) - clcw_save(i,k)
1150 else if(cliw_idx>=1)
then
1151 cliw_both = max(0.,cliw_save(i,k) + tem) - cliw_save(i,k)
1154 if(cliw_deep_idx>=1)
then
1155 dtend(i,k,cliw_deep_idx) = dtend(i,k,cliw_deep_idx) + abs(tem_deep)/weight_sum*cliw_both
1157 if(clcw_deep_idx>=1)
then
1158 dtend(i,k,clcw_deep_idx) = dtend(i,k,clcw_deep_idx) + abs(tem_deep)/weight_sum*clcw_both
1160 if(cliw_shal_idx>=1)
then
1161 dtend(i,k,cliw_shal_idx) = dtend(i,k,cliw_shal_idx) + abs(tem_shal)/weight_sum*cliw_both
1163 if(clcw_shal_idx>=1)
then
1164 dtend(i,k,clcw_shal_idx) = dtend(i,k,clcw_shal_idx) + abs(tem_shal)/weight_sum*clcw_both