subroutine samfdeepcnv::samfdeepcnv_run | ( | integer, intent(in) | im, |
integer, intent(in) | ix, | ||
integer, intent(in) | km, | ||
integer, intent(in) | itc, | ||
integer, intent(in) | ntc, | ||
real(kind=kind_phys), intent(in) | cliq, | ||
real(kind=kind_phys), intent(in) | cp, | ||
real(kind=kind_phys), intent(in) | cvap, | ||
real(kind=kind_phys), intent(in) | eps, | ||
real(kind=kind_phys), intent(in) | epsm1, | ||
real(kind=kind_phys), intent(in) | fv, | ||
real(kind=kind_phys), intent(in) | grav, | ||
real(kind=kind_phys), intent(in) | hvap, | ||
real(kind=kind_phys), intent(in) | rd, | ||
real(kind=kind_phys), intent(in) | rv, | ||
real(kind=kind_phys), intent(in) | t0c, | ||
real(kind=kind_phys), intent(in) | delt, | ||
integer, intent(in) | ntk, | ||
integer, intent(in) | ntr, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | delp, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | prslp, | ||
real(kind=kind_phys), dimension(im), intent(in) | psp, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | phil, | ||
real(kind=kind_phys), dimension(ix,km,ntr+2), intent(inout) | qtr, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | q1, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | t1, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | u1, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | v1, | ||
real(kind=kind_phys), dimension(:), intent(in) | fscav, | ||
logical, intent(in) | do_ca, | ||
real(kind=kind_phys), dimension(ix), intent(in) | ca_deep, | ||
real(kind=kind_phys), dimension(im), intent(out) | cldwrk, | ||
real(kind=kind_phys), dimension(im), intent(out) | rn, | ||
integer, dimension(im), intent(out) | kbot, | ||
integer, dimension(im), intent(out) | ktop, | ||
integer, dimension(im), intent(inout) | kcnv, | ||
integer, dimension(im), intent(in) | islimsk, | ||
real(kind=kind_phys), dimension(im), intent(in) | garea, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | dot, | ||
integer, intent(in) | ncloud, | ||
real(kind=kind_phys), dimension(im,km), intent(out) | ud_mf, | ||
real(kind=kind_phys), dimension(im,km), intent(out) | dd_mf, | ||
real(kind=kind_phys), dimension(im,km), intent(out) | dt_mf, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | cnvw, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | cnvc, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | QLCN, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | QICN, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | w_upi, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | cf_upi, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | CNV_MFD, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | CNV_DQLDT, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | CLCN, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | CNV_FICE, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | CNV_NDROP, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | CNV_NICE, | ||
integer | mp_phys, | ||
integer | mp_phys_mg, | ||
real(kind=kind_phys), intent(in) | clam, | ||
real(kind=kind_phys), intent(in) | c0s, | ||
real(kind=kind_phys), intent(in) | c1, | ||
real(kind=kind_phys), intent(in) | betal, | ||
real(kind=kind_phys), intent(in) | betas, | ||
real(kind=kind_phys), intent(in) | evfact, | ||
real(kind=kind_phys), intent(in) | evfactl, | ||
real(kind=kind_phys), intent(in) | pgcon, | ||
real(kind=kind_phys), intent(in) | asolfac, | ||
character(len=*), intent(out) | errmsg, | ||
integer, intent(out) | errflg | ||
) |
\epsilon = \epsilon_0F_0 + d_1\left(1-RH\right)F_1
where \epsilon_0 is the cloud base entrainment rate, d_1 is a tunable constant, and F_0=\left(\frac{q_s}{q_{s,b}}\right)^2 and F_1=\left(\frac{q_s}{q_{s,b}}\right)^3 where q_s and q_{s,b} are the saturation specific humidities at a given level and cloud base, respectively. The detrainment rate in the cloud is assumed to be equal to the entrainment rate at cloud base.\frac{1}{\eta}\frac{\partial \eta}{\partial z} = \lambda_e - \lambda_d
where \eta is the normalized mass flux, \lambda_e is the entrainment rate and \lambda_d is the detrainment rate.A_u=\int_{z_0}^{z_t}\frac{g}{c_pT(z)}\frac{\eta}{1 + \gamma}[h(z)-h^*(z)]dz
(discretized according to Grell (1993) [71] equation B.10 using B.2 and B.3 of Arakawa and Schubert (1974) [7] and assuming \eta=1) where A_u is the updraft cloud work function, z_0 and z_t are cloud base and cloud top, respectively, \gamma = \frac{L}{c_p}\left(\frac{\partial \overline{q_s}}{\partial T}\right)_p and other quantities are previously defined.E = 1.591 - 0.639\frac{\Delta V}{\Delta z} + 0.0953\left(\frac{\Delta V}{\Delta z}\right)^2 - 0.00496\left(\frac{\Delta V}{\Delta z}\right)^3
where \Delta V is the integrated horizontal shear over the cloud depth, \Delta z, (the ratio is converted to units of 10^{-3} s^{-1}). The variable "edto" is 1-E and is constrained to the range [0,0.9].\lambda_d = \frac{1-\beta^{\frac{1}{k_{LFC}}}}{\overline{\Delta z}}
\lambda_d is the detrainment rate, \beta is a constant currently set to 0.05, implying that only 5% of downdraft mass flux at LFC reaches the ground surface due to detrainment, k_{LFC} is the vertical index of the LFC level, and \overline{\Delta z} is the average vertical grid spacing below the LFC.\frac{\partial A}{\partial t}_{LS}=\frac{A^+-cA^0}{\Delta t_{LS}}
Here A^0 is set to zero following Han et al.'s (2017) [77] , implying that the instability is completely eliminated after the convective adjustment time, \Delta t_{LS}.\frac{\partial A}{\partial t}_{cu}=\frac{A^*-A^+}{\Delta t_{cu}}
\Delta t_{cu} is the short timescale of the convection.The cloud base mass flux (xmb) is then calculated from equation 7 of Pan and Wu (1995) [139]
M_c=\frac{-\frac{\partial A}{\partial t}_{LS}}{\frac{\partial A}{\partial t}_{cu}}
Again when dtconv is larger than tauadv, the cloud base mass flux is further reduced in proportion to the ratio of tauadv to dtconv.
References funcphys::fpvs(), and scale().