24 ntrac, ntcw, ntclamt, nncl, con_g, sigmafrac, &
25 gt0, gq0, save_t, save_q, prsi, cldfrac, subcldfrac, &
26 prcp, imp_physics, imp_physics_mg, errmsg, errflg)
33 integer,
intent(in) :: im, levs
34 logical,
intent(in) :: do_cscnv, do_aw, do_shoc
35 integer,
intent(in) :: ntrac, ntcw, ntclamt, nncl
36 real(kind_phys),
intent(in) :: con_g
37 real(kind_phys),
dimension(:,:),
intent(inout) :: sigmafrac
38 real(kind_phys),
dimension(:,:),
intent(inout) :: gt0
39 real(kind_phys),
dimension(:,:,:),
intent(inout) :: gq0
40 real(kind_phys),
dimension(:,:),
intent(in) :: save_t
41 real(kind_phys),
dimension(:,:,:),
intent(in) :: save_q
42 real(kind_phys),
dimension(:,:),
intent(in) :: prsi
43 real(kind_phys),
dimension(:,:),
intent(inout),
optional :: cldfrac
44 real(kind_phys),
dimension(:,:),
intent(inout),
optional :: subcldfrac
45 real(kind_phys),
dimension(:),
intent(inout) :: prcp
46 integer,
intent(in ) :: imp_physics, imp_physics_mg
47 character(len=*),
intent( out) :: errmsg
48 integer,
intent( out) :: errflg
51 real(kind=kind_phys),
dimension(im) :: temrain1
52 real(kind=kind_phys) :: tem1, tem2
53 real(kind=kind_phys) :: onebg
62 onebg = 1.0_kind_phys/con_g
78 gt0(i,k) = gt0(i,k) - tem1 * (gt0(i,k)-save_t(i,k))
79 tem2 = tem1 * (gq0(i,k,1)-save_q(i,k,1))
80 gq0(i,k,1) = gq0(i,k,1) - tem2
81 temrain1(i) = temrain1(i) - (prsi(i,k)-prsi(i,k+1)) * tem2 * onebg
85 if (do_shoc .and. imp_physics /= imp_physics_mg)
then
88 subcldfrac(i,k) = min(1.0, subcldfrac(i,k) + sigmafrac(i,k))
96 tem1 = sigmafrac(i,k) * (gq0(i,k,n)-save_q(i,k,n))
97 gq0(i,k,n) = gq0(i,k,n) - tem1
98 temrain1(i) = temrain1(i) - (prsi(i,k)-prsi(i,k+1)) * tem1 * onebg
104 prcp(i) = max(prcp(i) - temrain1(i)*0.001, 0.0_kind_phys)
subroutine, public cs_conv_aw_adj_run(im, levs, do_cscnv, do_aw, do_shoc, ntrac, ntcw, ntclamt, nncl, con_g, sigmafrac, gt0, gq0, save_t, save_q, prsi, cldfrac, subcldfrac, prcp, imp_physics, imp_physics_mg, errmsg, errflg)
This subroutine adjusts surface rainrate for conservation.