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().