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