subroutine satmedmfvdifq::satmedmfvdifq_run | ( | integer, intent(in) | im, |
integer, intent(in) | km, | ||
integer, intent(in) | ntrac, | ||
integer, intent(in) | ntcw, | ||
integer, intent(in) | ntrw, | ||
integer, intent(in) | ntiw, | ||
integer, intent(in) | ntke, | ||
real(kind=kind_phys), intent(in) | grav, | ||
real(kind=kind_phys), intent(in) | rd, | ||
real(kind=kind_phys), intent(in) | cp, | ||
real(kind=kind_phys), intent(in) | rv, | ||
real(kind=kind_phys), intent(in) | hvap, | ||
real(kind=kind_phys), intent(in) | hfus, | ||
real(kind=kind_phys), intent(in) | fv, | ||
real(kind=kind_phys), intent(in) | eps, | ||
real(kind=kind_phys), intent(in) | epsm1, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | dv, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | du, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | tdt, | ||
real(kind=kind_phys), dimension(:,:,:), intent(inout) | rtg, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | u1, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | v1, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | t1, | ||
real(kind=kind_phys), dimension(:,:,:), intent(in) | q1, | ||
real(kind=kind_phys), dimension(:), intent(in) | usfco, | ||
real(kind=kind_phys), dimension(:), intent(in) | vsfco, | ||
integer, intent(in) | icplocn2atm, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | swh, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | hlw, | ||
real(kind=kind_phys), dimension(:), intent(in) | xmu, | ||
real(kind=kind_phys), dimension(:), intent(in) | garea, | ||
real(kind=kind_phys), dimension(:), intent(in) | zvfun, | ||
real(kind=kind_phys), dimension(:), intent(in) | sigmaf, | ||
real(kind=kind_phys), dimension(:), intent(in) | psk, | ||
real(kind=kind_phys), dimension(:), intent(in) | rbsoil, | ||
real(kind=kind_phys), dimension(:), intent(in) | zorl, | ||
real(kind=kind_phys), dimension(:), intent(in) | u10m, | ||
real(kind=kind_phys), dimension(:), intent(in) | v10m, | ||
real(kind=kind_phys), dimension(:), intent(in) | fm, | ||
real(kind=kind_phys), dimension(:), intent(in) | fh, | ||
real(kind=kind_phys), dimension(:), intent(in) | tsea, | ||
real(kind=kind_phys), dimension(:), intent(in) | heat, | ||
real(kind=kind_phys), dimension(:), intent(in) | evap, | ||
real(kind=kind_phys), dimension(:), intent(in) | stress, | ||
real(kind=kind_phys), dimension(:), intent(in) | spd1, | ||
integer, dimension(:), intent(out) | kpbl, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | prsi, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | del, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | prsl, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | prslk, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | phii, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | phil, | ||
real(kind=kind_phys), intent(in) | delt, | ||
logical, intent(in) | dspheat, | ||
real(kind=kind_phys), dimension(:), intent(out) | dusfc, | ||
real(kind=kind_phys), dimension(:), intent(out) | dvsfc, | ||
real(kind=kind_phys), dimension(:), intent(out) | dtsfc, | ||
real(kind=kind_phys), dimension(:), intent(out) | dqsfc, | ||
real(kind=kind_phys), dimension(:), intent(out) | hpbl, | ||
real(kind=kind_phys), dimension(:,:), intent(out) | dkt, | ||
real(kind=kind_phys), dimension(:,:), intent(out) | dku, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | tkeh, | ||
integer, dimension(:), intent(in) | kinver, | ||
real(kind=kind_phys), intent(in) | xkzm_m, | ||
real(kind=kind_phys), intent(in) | xkzm_h, | ||
real(kind=kind_phys), intent(in) | xkzm_s, | ||
real(kind=kind_phys), intent(in) | dspfac, | ||
real(kind=kind_phys), intent(in) | bl_upfr, | ||
real(kind=kind_phys), intent(in) | bl_dnfr, | ||
real(kind=kind_phys), intent(in) | rlmx, | ||
real(kind=kind_phys), intent(in) | elmx, | ||
integer, intent(in) | sfc_rlm, | ||
integer, intent(in) | tc_pbl, | ||
integer, intent(in) | ntqv, | ||
real(kind=kind_phys), dimension(:,:,:), intent(inout), optional | dtend, | ||
integer, dimension(:,:), intent(in) | dtidx, | ||
integer, intent(in) | index_of_temperature, | ||
integer, intent(in) | index_of_x_wind, | ||
integer, intent(in) | index_of_y_wind, | ||
integer, intent(in) | index_of_process_pbl, | ||
logical, intent(in) | gen_tend, | ||
logical, intent(in) | ldiag3d, | ||
character(len=*), intent(out) | errmsg, | ||
integer, intent(out) | errflg ) |
satmedmfvdifq_run() computes subgrid vertical turbulence mixing using the scale-aware TKE-based moist eddy-diffusion mass-flux (EDMF) parameterization of Han and Bretherton (2019) [50] .
zi
and zl
)gdx
)tke
and tkeh
)The calculation of the boundary layer height follows Troen and Mahrt (1986) [133] section 3. The approach is to find the level in the column where a modified bulk Richardson number exceeds a critical value.
\[ Rb_{cr}=0.16(10^{-7}R_{0})^{-0.18} \]
\[ R_{0}=\frac{U_{10}}{f_{0}z_{0}} \]
where \(U_{10}\) is the wind speed at 10m above the ground surface, \(f_0\) the Coriolis parameter, and \(z_{0}\) the surface roughness length. To avoid too much variation, we restrict \(Rb_{cr}\) to vary within the range of 0.15~0.35\[ \zeta = Ri_{sfc}\frac{F_m^2}{F_h} = \frac{z}{L} \]
where \(F_m\) and \(F_h\) are surface Monin-Obukhov stability functions calculated in sfc_diff.f and \(L\) is the Obukhov length.\[ \phi_m=(1-16\frac{0.1h}{L})^{-1/4} \phi_h=(1-16\frac{0.1h}{L})^{-1/2} \]
\[ \phi_m=\phi_t=(1+5\frac{0.1h}{L}) \]
\[ w_s=(u_*^3+7\alpha\kappa w_*^3)^{1/3} \]
where \(u_*\) (ustar) is the surface friction velocity, \(\alpha\) is the ratio of the surface layer height to the PBL height (specified as sfcfrac =0.1), \(\kappa =0.4\) is the von Karman constant, and \(w_*\) is the convective velocity scale defined as eqn23 of Han et al.(2019):\[ w_{*}=[(g/T)\overline{(w'\theta_v^{'})}_0h]^{1/3} \]
\[ l_2=min(l_{up},l_{down}) \]
and dissipation length scale \(l_d\) is given by:\[ l_d=(l_{up}l_{down})^{1/2} \]
where \(l_{up}\) and \(l_{down}\) are the distances that a parcel having an initial TKE can travel upward and downward before being stopped by buoyancy effects.References mfpbltq_mod::mfpbltq(), mfscuq_mod::mfscuq(), tridi_mod::tridi2(), tridi_mod::tridin(), and tridi_mod::tridit().