subroutine samfdeepcnv::samfdeepcnv_run | ( | integer, intent(in) | im, |
integer, intent(in) | km, | ||
logical, intent(in) | first_time_step, | ||
logical, intent(in) | restart, | ||
real(kind=kind_phys), dimension(:,:,:), intent(in) | tmf, | ||
real(kind=kind_phys), dimension(:,:), intent(in), optional | qmicro, | ||
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(:,:), intent(in) | delp, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | prslp, | ||
real(kind=kind_phys), dimension(:), intent(in) | psp, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | phil, | ||
real(kind=kind_phys), dimension(:,:,:), intent(inout) | qtr, | ||
real(kind=kind_phys), dimension(:,:), intent(in), optional | prevsq, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | q, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | q1, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | t1, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | u1, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | v1, | ||
real(kind=kind_phys), dimension(:), intent(in) | fscav, | ||
logical, intent(in) | hwrf_samfdeep, | ||
logical, intent(in) | progsigma, | ||
real(kind=kind_phys), dimension(:), intent(out) | cldwrk, | ||
real(kind=kind_phys), dimension(:), intent(out) | rn, | ||
integer, dimension(:), intent(out) | kbot, | ||
integer, dimension(:), intent(out) | ktop, | ||
integer, dimension(:), intent(inout) | kcnv, | ||
integer, dimension(:), intent(in) | islimsk, | ||
real(kind=kind_phys), dimension(:), intent(in) | garea, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | dot, | ||
integer, intent(in) | ncloud, | ||
real(kind=kind_phys), dimension(:), intent(in) | hpbl, | ||
real(kind=kind_phys), dimension(:,:), intent(out), optional | ud_mf, | ||
real(kind=kind_phys), dimension(:,:), intent(out) | dd_mf, | ||
real(kind=kind_phys), dimension(:,:), intent(out) | dt_mf, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | cnvw, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | cnvc, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | qlcn, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | qicn, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | w_upi, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | cf_upi, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | cnv_mfd, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | cnv_dqldt, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | clcn, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | cnv_fice, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | cnv_ndrop, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | cnv_nice, | ||
integer, intent(in) | mp_phys, | ||
integer, intent(in) | 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) | evef, | ||
real(kind=kind_phys), intent(in) | pgcon, | ||
real(kind=kind_phys), intent(in) | asolfac, | ||
logical, intent(in) | do_ca, | ||
logical, intent(in) | ca_closure, | ||
logical, intent(in) | ca_entr, | ||
logical, intent(in) | ca_trigger, | ||
real(kind=kind_phys), intent(in) | nthresh, | ||
real(kind=kind_phys), dimension(:), intent(in), optional | ca_deep, | ||
real(kind=kind_phys), dimension(:), intent(out) | rainevap, | ||
real(kind=kind_phys), dimension(:,:), intent(in), optional | sigmain, | ||
real(kind=kind_phys), dimension(:,:), intent(out), optional | sigmaout, | ||
real(kind=kind_phys), intent(in) | betadcu, | ||
real(kind=kind_phys), intent(in) | betamcu, | ||
real(kind=kind_phys), intent(in) | betascu, | ||
real(kind=kind_phys), dimension (:), intent(in), optional | maxmf, | ||
logical, intent(in) | do_mynnedmf, | ||
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) [73] equation B.10 using B.2 and B.3 of Arakawa and Schubert (1974) [6] 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) [80] , 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) [159]
\[ 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.
Definition at line 75 of file samfdeepcnv.f.
References energy(), and water().