59 subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart, gf_coldstart, &
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(:,:),
optional,
intent(in) :: &
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, gf_coldstart
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) :: 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,mc_thresh
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) .or. gf_coldstart)
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))
599 mc_thresh(i)=3.25/dx(i)
605 qo(i,k)=max(1.e-16,qv(i,k))
612 dhdt(i,k)=cp*(forcet(i,k)+(t(i,k)-t2di(i,k))/dt) + &
613 xlv*(forceqv(i,k)+(qv(i,k)-qv2di(i,k))/dt)
621 if((p2d(i,1)-p2d(i,k)).gt.150.and.p2d(i,k).gt.300)
then
622 dp=-.5*(p2d(i,k+1)-p2d(i,k-1))
624 umean(i)=umean(i)+us(i,k)*dp
626 vmean(i)=vmean(i)+vs(i,k)*dp
635 if (clcw(i,k) .gt. -999.0 .and. clcw(i,k+1) .gt. -999.0 )
then
636 dp=(p2d(i,k)-p2d(i,k+1))
638 clwtot = cliw(i,k) + clcw(i,k)
639 if(clwtot.lt.1.e-32)clwtot=0.
640 forcing(i,7)=forcing(i,7)+clwtot*dp
643 if(psum.gt.0)forcing(i,7)=forcing(i,7)/psum
644 forcing2(i,7)=forcing(i,7)
652 if(mconv(i).lt.0.)mconv(i)=0.
653 if((dx(i)<6500.).and.do_mynnedmf.and.(maxmf(i).gt.0.))ierr(i)=555
656 if (dx(its)<6500.)
then
662 if(ishallow_g3.eq.1)
then
675 zo,t2d,q2d,ter11,tshall,qshall,p2d,psur,dhdt,kpbli, &
676 rhoi,hfx,qfx,xlandi,ichoice_s,tcrit,dt, &
679 zus,xmbs,kbcons,ktops,k22s,ierrs,ierrcs, &
681 outts,outqs,outqcs,outus,outvs,cnvwt,prets,cupclws, &
683 itf,ktf,its,ite, kts,kte,ipr,tropics)
687 if(xmbs(i).gt.0.)
then
689 if (dx(i)<6500.)
then
697 call neg_check(
'shallow',ipn,dt,qcheck,outqs,outts,outus,outvs, &
698 outqcs,prets,its,ite,kts,kte,itf,ktf,ktops)
706 itf,ktf,its,ite, kts,kte &
760 ,do_smoke_transport &
772 ,do_cap_suppress_here,cap_suppress_j &
774 ,jminm,kdt,mc_thresh)
778 qcheck(i,k)=qv(i,k) +outqs(i,k)*dt
783 call neg_check(
'mid',ipn,dt,qcheck,outqm,outtm,outum,outvm, &
784 outqcm,pretm,its,ite,kts,kte,itf,ktf,ktopm)
789 itf,ktf,its,ite, kts,kte &
846 ,do_smoke_transport &
858 ,do_cap_suppress_here,cap_suppress_j &
866 qcheck(i,k)=qv(i,k) +(outqs(i,k)+outqm(i,k))*dt
871 call neg_check(
'deep',ipn,dt,qcheck,outq,outt,outu,outv, &
872 outqc,pret,its,ite,kts,kte,itf,ktf,ktop)
878 if(pretm(i).gt.0.)
then
888 if(forcing2(i,6).gt.0.)
then
889 maxupmf(i)=maxval(xmb(i)*zu(i,kts:ktf)/forcing2(i,6))
892 if((maxupmf(i).lt.0.1) .or. (pret(i)*3600.lt.0.05)) pret(i)=0.
894 if(pret(i).gt.0.)
then
919 if(ktopm(i).gt.kts .or. ktop(i).gt.kts)kstop=max(ktopm(i),ktop(i))
920 if(ktops(i).gt.kts)kstop=max(kstop,ktops(i))
923 if(kbcon(i).gt.2 .or. kbconm(i).gt.2)
then
924 hbot(i)=max(kbconm(i),kbcon(i))
930 cnvc(i,k) = 0.04 * log(1. + 675. * zu(i,k) * xmb(i)) + &
931 0.04 * log(1. + 675. * zum(i,k) * xmbm(i)) + &
932 0.04 * log(1. + 675. * zus(i,k) * xmbs(i))
933 cnvc(i,k) = min(cnvc(i,k), 0.6)
934 cnvc(i,k) = max(cnvc(i,k), 0.0)
935 cnvw(i,k)=cnvwt(i,k)*xmb(i)*dt+cnvwts(i,k)*xmbs(i)*dt+cnvwtm(i,k)*xmbm(i)*dt
936 ud_mf(i,k)=cuten(i)*zu(i,k)*xmb(i)*dt
937 dd_mf(i,k)=cuten(i)*zd(i,k)*edt(i)*xmb(i)*dt
938 t(i,k)=t(i,k)+dt*(cutens(i)*outts(i,k)+cutenm(i)*outtm(i,k)+outt(i,k)*cuten(i))
939 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)))
940 gdc(i,k,7)=sqrt(us(i,k)**2 +vs(i,k)**2)
941 us(i,k)=us(i,k)+outu(i,k)*cuten(i)*dt +outum(i,k)*cutenm(i)*dt +outus(i,k)*cutens(i)*dt
942 vs(i,k)=vs(i,k)+outv(i,k)*cuten(i)*dt +outvm(i,k)*cutenm(i)*dt +outvs(i,k)*cutens(i)*dt
944 gdc(i,k,1)= max(0.,tun_rad_shall(i)*cupclws(i,k)*cutens(i))
946 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))
948 qci_conv(i,k)=gdc2(i,k,1)
949 gdc(i,k,2)=(outt(i,k))*86400.
950 gdc(i,k,3)=(outtm(i,k))*86400.
951 gdc(i,k,4)=(outts(i,k))*86400.
952 gdc(i,k,7)=-(gdc(i,k,7)-sqrt(us(i,k)**2 +vs(i,k)**2))/dt
954 gdc(i,k,8)=(outqm(i,k)+outqs(i,k)+outq(i,k))*86400.*xlv/cp
955 gdc(i,k,9)=gdc(i,k,2)+gdc(i,k,3)+gdc(i,k,4)
958 dp=100.*(p2d(i,k)-p2d(i,k+1))
959 dtime_max=min(dtime_max,.5*dp)
960 po_cup(k)=.5*(p2d(i,k)+p2d(i,k+1))
961 if (clcw(i,k) .gt. -999.0 .and. clcw(i,k+1) .gt. -999.0 )
then
962 clwtot = cliw(i,k) + clcw(i,k)
963 if(clwtot.lt.1.e-32)clwtot=0.
964 clwtot1= cliw(i,k+1) + clcw(i,k+1)
965 if(clwtot1.lt.1.e-32)clwtot1=0.
967 massflx(k)=-(xmb(i) *( zu(i,k)- edt(i)* zd(i,k))) &
968 -(xmbm(i)*(zdm(i,k)-edtm(i)*zdm(i,k))) &
970 trcflx_in1(k)=massflx(k)*.5*(clwtot+clwtot1)
971 forcing2(i,3)=forcing2(i,3)+clwtot
977 call fct1d3 (kstop,kte,dtime_max,po_cup, &
978 clw_in1,massflx,trcflx_in1,clw_ten(i,:),g)
981 tem = dt*(outqcs(i,k)*cutens(i)+outqc(i,k)*cuten(i) &
982 +outqcm(i,k)*cutenm(i) &
985 tem1 = max(0.0, min(1.0, (tcr-t(i,k))*tcrf))
986 if (clcw(i,k) .gt. -999.0)
then
987 cliw(i,k) = max(0.,cliw(i,k) + tem * tem1)
988 clcw(i,k) = max(0.,clcw(i,k) + tem *(1.0-tem1))
990 cliw(i,k) = max(0.,cliw(i,k) + tem)
995 gdc(i,1,10)=forcing(i,1)
996 gdc(i,2,10)=forcing(i,2)
997 gdc(i,3,10)=forcing(i,3)
998 gdc(i,4,10)=forcing(i,4)
999 gdc(i,5,10)=forcing(i,5)
1000 gdc(i,6,10)=forcing(i,6)
1001 gdc(i,7,10)=forcing(i,7)
1002 gdc(i,8,10)=forcing(i,8)
1004 gdc(i,11,10)=xmbm(i)
1005 gdc(i,12,10)=xmbs(i)
1008 gdc(i,16,10)=pret(i)*3600.
1011 if(ktop(i).gt.2 .and.pret(i).gt.0.)dt_mf(i,ktop(i)-1)=ud_mf(i,ktop(i))
1017 if(pret(i).gt.0.)
then
1019 raincv(i)=.001*(cutenm(i)*pretm(i)+cutens(i)*prets(i)+cuten(i)*pret(i))*dt
1022 if(pretm(i).gt.0)raincv(i)=.001*cutenm(i)*pretm(i)*dt
1025 if(pretm(i).gt.0)
then
1032 if(ccn_m(i).lt.ccn_gf(i))
then
1036 if(ccn_gf(i)<0) ccn_gf(i)=0
1039 aod_gf(i)=0.0027*(ccn_gf(i)**0.64)
1040 if(aod_gf(i)<0.007)
then
1042 ccn_gf(i)=(aod_gf(i)/0.0027)**(1/0.640)
1043 elseif(aod_gf(i)>aodc0)
then
1045 ccn_gf(i)=(aod_gf(i)/0.0027)**(1/0.640)
1054 qv_spechum = qv/(1.0_kind_phys+qv)
1055 cnvw_moist = cnvw/(1.0_kind_phys+qv)
1061 if(ishallow_g3.eq.1 .and. .not.flag_for_scnv_generic_tend)
then
1062 uidx=dtidx(index_of_x_wind,index_of_process_scnv)
1063 vidx=dtidx(index_of_y_wind,index_of_process_scnv)
1064 tidx=dtidx(index_of_temperature,index_of_process_scnv)
1065 qidx=dtidx(100+ntqv,index_of_process_scnv)
1069 dtend(:,k,uidx) = dtend(:,k,uidx) + cutens(:)*outus(:,k) * dt
1076 dtend(:,k,vidx) = dtend(:,k,vidx) + cutens(:)*outvs(:,k) * dt
1083 dtend(:,k,tidx) = dtend(:,k,tidx) + cutens(:)*outts(:,k) * dt
1091 tem = cutens(i)*outqs(i,k)* dt
1092 tem = tem/(1.0_kind_phys+tem)
1093 dtend(i,k,qidx) = dtend(i,k,qidx) + tem
1099 if((ideep.eq.1. .or. imid_gf.eq.1) .and. .not.flag_for_dcnv_generic_tend)
then
1100 uidx=dtidx(index_of_x_wind,index_of_process_dcnv)
1101 vidx=dtidx(index_of_y_wind,index_of_process_dcnv)
1102 tidx=dtidx(index_of_temperature,index_of_process_dcnv)
1106 dtend(:,k,uidx) = dtend(:,k,uidx) + (cuten*outu(:,k)+cutenm*outum(:,k)) * dt
1113 dtend(:,k,vidx) = dtend(:,k,vidx) + (cuten*outv(:,k)+cutenm*outvm(:,k)) * dt
1120 dtend(:,k,tidx) = dtend(:,k,tidx) + (cuten*outt(:,k)+cutenm*outtm(:,k)) * dt
1125 qidx=dtidx(100+ntqv,index_of_process_dcnv)
1130 tem = (cuten(i)*outq(i,k) + cutenm(i)*outqm(i,k))* dt
1131 tem = tem/(1.0_kind_phys+tem)
1132 dtend(i,k,qidx) = dtend(i,k,qidx) + tem
1138 if(
allocated(clcw_save))
then
1142 tem_shal = dt*(outqcs(i,k)*cutens(i)+outqcm(i,k)*cutenm(i))
1143 tem_deep = dt*(outqc(i,k)*cuten(i)+clw_ten(i,k))
1144 tem = tem_shal+tem_deep
1145 tem1 = max(0.0, min(1.0, (tcr-t(i,k))*tcrf))
1146 weight_sum = abs(tem_shal)+abs(tem_deep)
1147 if(weight_sum<1e-12)
then
1151 if (clcw_save(i,k) .gt. -999.0)
then
1152 cliw_both = max(0.,cliw_save(i,k) + tem * tem1) - cliw_save(i,k)
1153 clcw_both = max(0.,clcw_save(i,k) + tem) - clcw_save(i,k)
1154 else if(cliw_idx>=1)
then
1155 cliw_both = max(0.,cliw_save(i,k) + tem) - cliw_save(i,k)
1158 if(cliw_deep_idx>=1)
then
1159 dtend(i,k,cliw_deep_idx) = dtend(i,k,cliw_deep_idx) + abs(tem_deep)/weight_sum*cliw_both
1161 if(clcw_deep_idx>=1)
then
1162 dtend(i,k,clcw_deep_idx) = dtend(i,k,clcw_deep_idx) + abs(tem_deep)/weight_sum*clcw_both
1164 if(cliw_shal_idx>=1)
then
1165 dtend(i,k,cliw_shal_idx) = dtend(i,k,cliw_shal_idx) + abs(tem_shal)/weight_sum*cliw_both
1167 if(clcw_shal_idx>=1)
then
1168 dtend(i,k,clcw_shal_idx) = dtend(i,k,clcw_shal_idx) + abs(tem_shal)/weight_sum*clcw_both