← Back to Documentation Home
CCPP SciDoc v8.0.0  v8.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
MYNN-EDMF PBL and Shallow Convection Module <br>

This scheme (1) performs pre-mynnedmf work, (2) runs the mynnedmf, and (3) performs post-mynnedmf work. More...

Modules

module  bl_mynn_common
 This module defines model-specific constants/parameters.
 

Functions/Subroutines

subroutine module_bl_mynn::mym_level2 (kts, kte, dz, u, v, thl, thetav, qw, ql, vt, vq, dtl, dqw, dtv, gm, gh, sm, sh)
 This subroutine calculates the level 2, non-dimensional wind shear \(G_M\) and vertical temperature gradient \(G_H\) as well as the level 2 stability funcitons \(S_h\) and \(S_m\).
 
subroutine module_bl_mynn::mym_length (kts, kte, xland, dz, dx, zw, rmo, flt, fltv, flq, vt, vq, u1, v1, qke, dtv, el, zi, theta, qkw, psig_bl, cldfra_bl1d, bl_mynn_mixlength, edmf_w1, edmf_a1)
 This subroutine calculates the mixing lengths.
 
subroutine module_bl_mynn::boulac_length0 (k, kts, kte, zw, dz, qtke, theta, lb1, lb2)
 This subroutine was taken from the BouLac scheme in WRF-ARW and modified for integration into the MYNN PBL scheme. WHILE loops were added to reduce the computational expense. This subroutine computes the length scales up and down and then computes the min, average of the up/down length scales, and also considers the distance to the surface.
 
subroutine module_bl_mynn::boulac_length (kts, kte, zw, dz, qtke, theta, lb1, lb2)
 This subroutine was taken from the BouLac scheme in WRF-ARW and modified for integration into the MYNN PBL scheme. WHILE loops were added to reduce the computational expense. This subroutine computes the length scales up and down and then computes the min, average of the up/down length scales, and also considers the distance to the surface.
 
subroutine module_bl_mynn::mym_turbulence (kts, kte, xland, closure, dz, dx, zw, u, v, thl, thetav, ql, qw, qke, tsq, qsq, cov, vt, vq, rmo, flt, fltv, flq, zi, theta, sh, sm, el, dfm, dfh, dfq, tcd, qcd, pdk, pdt, pdq, pdc, qwt1d, qshear1d, qbuoy1d, qdiss1d, tke_budget, psig_bl, psig_shcu, cldfra_bl1d, bl_mynn_mixlength, edmf_w1, edmf_a1, tkeprodtd, spp_pbl, rstoch_col)
 This subroutine calculates the vertical diffusivity coefficients and the production terms for the turbulent quantities.

 
subroutine module_bl_mynn::mym_predict (kts, kte, closure, delt, dz, ust, flt, flq, pmz, phh, el, dfq, rho, pdk, pdt, pdq, pdc, qke, tsq, qsq, cov, s_aw, s_awqke, bl_mynn_edmf_tke, qwt1d, qdiss1d, tke_budget)
 This subroutine predicts the turbulent quantities at the next step.
 
subroutine module_bl_mynn::mym_condensation (kts, kte, dx, dz, zw, xland, thl, qw, qv, qc, qi, qs, p, exner, tsq, qsq, cov, sh, el, bl_mynn_cloudpdf, qc_bl1d, qi_bl1d, cldfra_bl1d, pblh1, hfx1, vt, vq, th, sgm, rmo, spp_pbl, rstoch_col)
 This subroutine calculates the nonconvective component of the subgrid cloud fraction and mixing ratio as well as the functions used to calculate the buoyancy flux. Different cloud PDFs can be selected by use of the namelist parameter bl_mynn_cloudpdf .
 
subroutine module_bl_mynn::mynn_tendencies (kts, kte, i, delt, dz, rho, u, v, th, tk, qv, qc, qi, qs, qnc, qni, psfc, p, exner, thl, sqv, sqc, sqi, sqs, sqw, qnwfa, qnifa, qnbca, ozone, ust, flt, flq, flqv, flqc, wspd, uoce, voce, tsq, qsq, cov, tcd, qcd, dfm, dfh, dfq, du, dv, dth, dqv, dqc, dqi, dqs, dqnc, dqni, dqnwfa, dqnifa, dqnbca, dozone, diss_heat, s_aw, s_awthl, s_awqt, s_awqv, s_awqc, s_awu, s_awv, s_awqnc, s_awqni, s_awqnwfa, s_awqnifa, s_awqnbca, sd_aw, sd_awthl, sd_awqt, sd_awqv, sd_awqc, sd_awu, sd_awv, sub_thl, sub_sqv, sub_u, sub_v, det_thl, det_sqv, det_sqc, det_u, det_v, flag_qc, flag_qi, flag_qnc, flag_qni, flag_qs, flag_qnwfa, flag_qnifa, flag_qnbca, cldfra_bl1d, bl_mynn_cloudmix, bl_mynn_mixqt, bl_mynn_edmf, bl_mynn_edmf_mom, bl_mynn_mixscalars)
 This subroutine solves for tendencies of U, V, \(\theta\), qv, qc, and qi.
 
subroutine module_bl_mynn::retrieve_exchange_coeffs (kts, kte, dfm, dfh, dz, k_m, k_h)
 
subroutine module_bl_mynn::tridiag (n, a, b, c, d)
 
subroutine module_bl_mynn::tridiag2 (n, a, b, c, d, x)
 
subroutine module_bl_mynn::tridiag3 (kte, a, b, c, d, x)
 
subroutine module_bl_mynn::dmp_mf (kts, kte, dt, zw, dz, p, rho, momentum_opt, tke_opt, scalar_opt, u, v, w, th, thl, thv, tk, qt, qv, qc, qke, qnc, qni, qnwfa, qnifa, qnbca, exner, vt, vq, sgm, ust, flt, fltv, flq, flqv, pblh, kpbl, dx, landsea, ts, edmf_a, edmf_w, edmf_qt, edmf_thl, edmf_ent, edmf_qc, s_aw, s_awthl, s_awqt, s_awqv, s_awqc, s_awu, s_awv, s_awqke, s_awqnc, s_awqni, s_awqnwfa, s_awqnifa, s_awqnbca, sub_thl, sub_sqv, sub_u, sub_v, det_thl, det_sqv, det_sqc, det_u, det_v, nchem, chem1, s_awchem, mix_chem, qc_bl1d, cldfra_bl1d, qc_bl1d_old, cldfra_bl1d_old, f_qc, f_qi, f_qnc, f_qni, f_qnwfa, f_qnifa, f_qnbca, psig_shcu, maxwidth, ktop, maxmf, ztop, spp_pbl, rstoch_col)
 This subroutine is the Dynamic Multi-Plume (DMP) Mass-Flux Scheme.
 
subroutine module_bl_mynn::condensation_edmf (qt, thl, p, zagl, thv, qc)
 This subroutine.
 
real(kind_phys) function module_bl_mynn::esat_blend (t)
 
real(kind_phys) function module_bl_mynn::qsat_blend (t, p)
 This function extends function "esat" and returns a "blended" saturation mixing ratio. Tice currently set to 240 K, t0c = 273.15 K.
 
real(kind_phys) function module_bl_mynn::xl_blend (t)
 This function interpolates the latent heats of vaporization and sublimation into a single, temperature-dependent, "blended" value, following Chaboureau and Bechtold (2002) [30], Appendix.
 
subroutine module_bl_mynn::mynn_bl_driver (initflag, restart, cycling, delt, dz, dx, znt, u, v, w, th, sqv3d, sqc3d, sqi3d, sqs3d, qnc, qni, qnwfa, qnifa, qnbca, ozone, p, exner, rho, t3d, xland, ts, qsfc, ps, ust, ch, hfx, qfx, rmol, wspd, uoce, voce, qke, qke_adv, sh3d, sm3d, nchem, kdvel, ndvel, chem3d, vdep, smoke_dbg, frp, emis_ant_no, mix_chem, enh_mix, rrfs_sd, tsq, qsq, cov, rublten, rvblten, rthblten, rqvblten, rqcblten, rqiblten, rqncblten, rqniblten, rqsblten, rqnwfablten, rqnifablten, rqnbcablten, dozone, exch_h, exch_m, pblh, kpbl, el_pbl, dqke, qwt, qshear, qbuoy, qdiss, qc_bl, qi_bl, cldfra_bl, bl_mynn_tkeadvect, tke_budget, bl_mynn_cloudpdf, bl_mynn_mixlength, icloud_bl, closure, bl_mynn_edmf, bl_mynn_edmf_mom, bl_mynn_edmf_tke, bl_mynn_mixscalars, bl_mynn_output, bl_mynn_cloudmix, bl_mynn_mixqt, edmf_a, edmf_w, edmf_qt, edmf_thl, edmf_ent, edmf_qc, sub_thl3d, sub_sqv3d, det_thl3d, det_sqv3d, maxwidth, maxmf, ztop_plume, ktop_plume, spp_pbl, pattern_spp_pbl, rthraten, flag_qc, flag_qi, flag_qnc, flag_qni, flag_qs, flag_qnwfa, flag_qnifa, flag_qnbca, flag_ozone, ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte)
 This subroutine is the MYNN-EDNF PBL driver routine,which encompassed the majority of the subroutines that comprise the procedures that ultimately solve for tendencies of \(U, V, \theta, q_v, q_c, and q_i\).
 
subroutine module_bl_mynn::mym_initialize (kts, kte, xland, dz, dx, zw, u, v, thl, qw, zi, theta, thetav, sh, sm, ust, rmo, el, qke, tsq, qsq, cov, psig_bl, cldfra_bl1d, bl_mynn_mixlength, edmf_w1, edmf_a1, initialize_qke, spp_pbl, rstoch_col)
 This subroutine initializes the mixing length, TKE, \(\theta^{'2}\), \(q^{'2}\), and \(\theta^{'}q^{'}\).
 
subroutine module_bl_mynn::get_pblh (kts, kte, zi, thetav1d, qke1d, zw1d, dz1d, landsea, kzi)
 This subroutine calculates hybrid diagnotic boundary-layer height (PBLH).
 

Detailed Description

This scheme (1) performs pre-mynnedmf work, (2) runs the mynnedmf, and (3) performs post-mynnedmf work.

Argument Table

Function/Subroutine Documentation

◆ boulac_length()

subroutine module_bl_mynn::boulac_length ( integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), dimension(kts:kte+1), intent(in)  zw,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), dimension(kts:kte), intent(in)  qtke,
real(kind_phys), dimension(kts:kte), intent(in)  theta,
real(kind_phys), dimension(kts:kte), intent(out)  lb1,
real(kind_phys), dimension(kts:kte), intent(out)  lb2 
)

This subroutine was taken from the BouLac scheme in WRF-ARW and modified for integration into the MYNN PBL scheme. WHILE loops were added to reduce the computational expense. This subroutine computes the length scales up and down and then computes the min, average of the up/down length scales, and also considers the distance to the surface.

Definition at line 2418 of file module_bl_mynn.F90.

Referenced by module_bl_mynn::mym_length().

Here is the caller graph for this function:

◆ boulac_length0()

subroutine module_bl_mynn::boulac_length0 ( integer, intent(in)  k,
integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), dimension(kts:kte+1), intent(in)  zw,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), dimension(kts:kte), intent(in)  qtke,
real(kind_phys), dimension(kts:kte), intent(in)  theta,
real(kind_phys), intent(out)  lb1,
real(kind_phys), intent(out)  lb2 
)

This subroutine was taken from the BouLac scheme in WRF-ARW and modified for integration into the MYNN PBL scheme. WHILE loops were added to reduce the computational expense. This subroutine computes the length scales up and down and then computes the min, average of the up/down length scales, and also considers the distance to the surface.

Definition at line 2259 of file module_bl_mynn.F90.

◆ condensation_edmf()

subroutine module_bl_mynn::condensation_edmf ( real(kind_phys), intent(in)  qt,
real(kind_phys), intent(in)  thl,
real(kind_phys), intent(in)  p,
real(kind_phys), intent(in)  zagl,
real(kind_phys), intent(out)  thv,
real(kind_phys), intent(inout)  qc 
)

This subroutine.

Definition at line 6830 of file module_bl_mynn.F90.

References module_bl_mynn::condensation_edmf(), and module_bl_mynn::qsat_blend().

Referenced by module_bl_mynn::condensation_edmf(), and module_bl_mynn::dmp_mf().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dmp_mf()

subroutine module_bl_mynn::dmp_mf ( integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), intent(in)  dt,
real(kind_phys), dimension(kts:kte+1), intent(in)  zw,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), dimension(kts:kte), intent(in)  p,
real(kind_phys), dimension(kts:kte), intent(in)  rho,
integer, intent(in)  momentum_opt,
integer, intent(in)  tke_opt,
integer, intent(in)  scalar_opt,
real(kind_phys), dimension(kts:kte), intent(in)  u,
real(kind_phys), dimension(kts:kte), intent(in)  v,
real(kind_phys), dimension(kts:kte), intent(in)  w,
real(kind_phys), dimension(kts:kte), intent(in)  th,
real(kind_phys), dimension(kts:kte), intent(in)  thl,
real(kind_phys), dimension(kts:kte), intent(in)  thv,
real(kind_phys), dimension(kts:kte), intent(in)  tk,
real(kind_phys), dimension(kts:kte), intent(in)  qt,
real(kind_phys), dimension(kts:kte), intent(in)  qv,
real(kind_phys), dimension(kts:kte), intent(in)  qc,
real(kind_phys), dimension(kts:kte), intent(in)  qke,
real(kind_phys), dimension(kts:kte), intent(in)  qnc,
real(kind_phys), dimension(kts:kte), intent(in)  qni,
real(kind_phys), dimension(kts:kte), intent(in)  qnwfa,
real(kind_phys), dimension(kts:kte), intent(in)  qnifa,
real(kind_phys), dimension(kts:kte), intent(in)  qnbca,
real(kind_phys), dimension(kts:kte), intent(in)  exner,
real(kind_phys), dimension(kts:kte), intent(inout)  vt,
real(kind_phys), dimension(kts:kte), intent(inout)  vq,
real(kind_phys), dimension(kts:kte), intent(inout)  sgm,
real(kind_phys), intent(in)  ust,
real(kind_phys), intent(in)  flt,
real(kind_phys), intent(in)  fltv,
real(kind_phys), intent(in)  flq,
real(kind_phys), intent(in)  flqv,
real(kind_phys), intent(in)  pblh,
integer, intent(in)  kpbl,
real(kind_phys), intent(in)  dx,
real(kind_phys), intent(in)  landsea,
real(kind_phys), intent(in)  ts,
real(kind_phys), dimension(kts:kte), intent(out)  edmf_a,
real(kind_phys), dimension(kts:kte), intent(out)  edmf_w,
real(kind_phys), dimension(kts:kte), intent(out)  edmf_qt,
real(kind_phys), dimension(kts:kte), intent(out)  edmf_thl,
real(kind_phys), dimension(kts:kte), intent(out)  edmf_ent,
real(kind_phys), dimension(kts:kte), intent(out)  edmf_qc,
real(kind_phys), dimension(kts:kte+1)  s_aw,
real(kind_phys), dimension(kts:kte+1)  s_awthl,
real(kind_phys), dimension(kts:kte+1)  s_awqt,
real(kind_phys), dimension(kts:kte+1)  s_awqv,
real(kind_phys), dimension(kts:kte+1)  s_awqc,
real(kind_phys), dimension(kts:kte+1)  s_awu,
real(kind_phys), dimension(kts:kte+1)  s_awv,
real(kind_phys), dimension(kts:kte+1)  s_awqke,
real(kind_phys), dimension(kts:kte+1)  s_awqnc,
real(kind_phys), dimension(kts:kte+1)  s_awqni,
real(kind_phys), dimension(kts:kte+1)  s_awqnwfa,
real(kind_phys), dimension(kts:kte+1)  s_awqnifa,
real(kind_phys), dimension(kts:kte+1)  s_awqnbca,
real(kind_phys), dimension(kts:kte)  sub_thl,
real(kind_phys), dimension(kts:kte)  sub_sqv,
real(kind_phys), dimension(kts:kte)  sub_u,
real(kind_phys), dimension(kts:kte)  sub_v,
real(kind_phys), dimension(kts:kte)  det_thl,
real(kind_phys), dimension(kts:kte)  det_sqv,
real(kind_phys), dimension(kts:kte)  det_sqc,
real(kind_phys), dimension(kts:kte)  det_u,
real(kind_phys), dimension(kts:kte)  det_v,
integer, intent(in)  nchem,
real(kind_phys), dimension(:, :)  chem1,
real(kind_phys), dimension(kts:kte+1, nchem)  s_awchem,
logical, intent(in)  mix_chem,
real(kind_phys), dimension(kts:kte), intent(inout)  qc_bl1d,
real(kind_phys), dimension(kts:kte), intent(inout)  cldfra_bl1d,
real(kind_phys), dimension(kts:kte), intent(inout)  qc_bl1d_old,
real(kind_phys), dimension(kts:kte), intent(inout)  cldfra_bl1d_old,
logical, optional  f_qc,
logical, optional  f_qi,
logical, optional  f_qnc,
logical, optional  f_qni,
logical, optional  f_qnwfa,
logical, optional  f_qnifa,
logical, optional  f_qnbca,
real(kind_phys), intent(in)  psig_shcu,
real(kind_phys), intent(out)  maxwidth,
integer, intent(out)  ktop,
real(kind_phys), intent(out)  maxmf,
real(kind_phys), intent(out)  ztop,
integer, intent(in)  spp_pbl,
real(kind_phys), dimension(kts:kte)  rstoch_col 
)

This subroutine is the Dynamic Multi-Plume (DMP) Mass-Flux Scheme.

dmp_mf() calculates the nonlocal turbulent transport from the dynamic multiplume mass-flux scheme as well as the shallow-cumulus component of the subgrid clouds. Note that this mass-flux scheme is called when the namelist paramter bl_mynn_edmf is set to 1 (recommended).

Much thanks to Kay Suslj of NASA-JPL for contributing the original version of this mass-flux scheme. Considerable changes have been made from it's original form. Some additions include:

  1. scale-aware tapering as dx -> 0
  2. transport of TKE (extra namelist option)
  3. Chaboureau-Bechtold cloud fraction & coupling to radiation (when icloud_bl > 0)
  4. some extra limits for numerical stability

This scheme remains under development, so consider it experimental code.

Definition at line 5680 of file module_bl_mynn.F90.

References module_bl_mynn::condensation_edmf(), module_bl_mynn::esat_blend(), module_bl_mynn::qsat_blend(), and module_bl_mynn::xl_blend().

Referenced by module_bl_mynn::mynn_bl_driver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ esat_blend()

real(kind_phys) function module_bl_mynn::esat_blend ( real(kind_phys), intent(in)  t)
Author
JAYMES- added 22 Apr 2015 This function calculates saturation vapor pressure. Separate ice and liquid functions are used (identical to those in module_mp_thompson.F, v3.6). Then, the final returned value is a temperature-dependant "blend". Because the final value is "phase-aware", this formulation may be preferred for use throughout the module (replacing "svp").

Definition at line 7395 of file module_bl_mynn.F90.

References module_bl_mynn::esat_blend().

Referenced by module_bl_mynn::dmp_mf(), module_bl_mynn::esat_blend(), and module_bl_mynn::mym_condensation().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_pblh()

subroutine module_bl_mynn::get_pblh ( integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), intent(out)  zi,
real(kind_phys), dimension(kts:kte), intent(in)  thetav1d,
real(kind_phys), dimension(kts:kte), intent(in)  qke1d,
real(kind_phys), dimension(kts:kte+1), intent(in)  zw1d,
real(kind_phys), dimension(kts:kte), intent(in)  dz1d,
real(kind_phys), intent(in)  landsea,
integer  kzi 
)

This subroutine calculates hybrid diagnotic boundary-layer height (PBLH).

NOTES ON THE PBLH FORMULATION: The 1.5-theta-increase method defines PBL heights as the level at. which the potential temperature first exceeds the minimum potential. temperature within the boundary layer by 1.5 K. When applied to. observed temperatures, this method has been shown to produce PBL- height estimates that are unbiased relative to profiler-based. estimates (Nielsen-Gammon et al. 2008 [149]). However, their study did not include LLJs. Banta and Pichugina (2008) [164] show that a TKE-based. threshold is a good estimate of the PBL height in LLJs. Therefore, a hybrid definition is implemented that uses both methods, weighting the TKE-method more during stable conditions (PBLH < 400 m). A variable tke threshold (TKEeps) is used since no hard-wired value could be found to work best in all conditions.

get_pblh General Algorithm

  • FIND MIN THETAV IN THE LOWEST 200 M AGL
  • FIND THETAV-BASED PBLH (BEST FOR DAYTIME).
  • FOR STABLE BOUNDARY LAYERS, USE TKE METHOD TO COMPLEMENT THE THETAV-BASED DEFINITION (WHEN THE THETA-V BASED PBLH IS BELOW ~0.5 KM). THE TANH WEIGHTING FUNCTION WILL MAKE THE TKE-BASED DEFINITION NEGLIGIBLE WHEN THE THETA-V-BASED DEFINITION IS ABOVE ~1 KM.
  • With TKE advection turned on, the TKE-based PBLH can be very large in grid points with convective precipitation (> 8 km!), so an artificial limit is imposed to not let PBLH_TKE exceed the theta_v-based PBL height +/- 350 m. This has no impact on 98-99% of the domain, but is the simplest patch that adequately addresses these extremely large PBLHs.

Definition at line 5518 of file module_bl_mynn.F90.

Referenced by module_bl_mynn::mynn_bl_driver().

Here is the caller graph for this function:

◆ mym_condensation()

subroutine module_bl_mynn::mym_condensation ( integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), intent(in)  dx,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), dimension(kts:kte+1), intent(in)  zw,
real(kind_phys), intent(in)  xland,
real(kind_phys), dimension(kts:kte), intent(in)  thl,
real(kind_phys), dimension(kts:kte), intent(in)  qw,
real(kind_phys), dimension(kts:kte), intent(in)  qv,
real(kind_phys), dimension(kts:kte), intent(in)  qc,
real(kind_phys), dimension(kts:kte), intent(in)  qi,
real(kind_phys), dimension(kts:kte), intent(in)  qs,
real(kind_phys), dimension(kts:kte), intent(in)  p,
real(kind_phys), dimension(kts:kte), intent(in)  exner,
real(kind_phys), dimension(kts:kte), intent(in)  tsq,
real(kind_phys), dimension(kts:kte), intent(in)  qsq,
real(kind_phys), dimension(kts:kte), intent(in)  cov,
real(kind_phys), dimension(kts:kte), intent(in)  sh,
real(kind_phys), dimension(kts:kte), intent(in)  el,
integer, intent(in)  bl_mynn_cloudpdf,
real(kind_phys), dimension(kts:kte), intent(out)  qc_bl1d,
real(kind_phys), dimension(kts:kte), intent(out)  qi_bl1d,
real(kind_phys), dimension(kts:kte), intent(out)  cldfra_bl1d,
real(kind_phys), intent(in)  pblh1,
real(kind_phys), intent(in)  hfx1,
real(kind_phys), dimension(kts:kte), intent(inout)  vt,
real(kind_phys), dimension(kts:kte), intent(inout)  vq,
real(kind_phys), dimension(kts:kte), intent(in)  th,
real(kind_phys), dimension(kts:kte), intent(inout)  sgm,
real(kind_phys), intent(in)  rmo,
integer, intent(in)  spp_pbl,
real(kind_phys), dimension(kts:kte)  rstoch_col 
)

This subroutine calculates the nonconvective component of the subgrid cloud fraction and mixing ratio as well as the functions used to calculate the buoyancy flux. Different cloud PDFs can be selected by use of the namelist parameter bl_mynn_cloudpdf .

Definition at line 3603 of file module_bl_mynn.F90.

References module_bl_mynn::esat_blend(), module_bl_mynn::qsat_blend(), and module_bl_mynn::xl_blend().

Referenced by module_bl_mynn::mynn_bl_driver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mym_initialize()

subroutine module_bl_mynn::mym_initialize ( integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), intent(in)  xland,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), intent(in)  dx,
real(kind_phys), dimension(kts:kte+1), intent(in)  zw,
real(kind_phys), dimension(kts:kte), intent(in)  u,
real(kind_phys), dimension(kts:kte), intent(in)  v,
real(kind_phys), dimension(kts:kte), intent(in)  thl,
real(kind_phys), dimension(kts:kte), intent(in)  qw,
real(kind_phys), intent(in)  zi,
real(kind_phys), dimension(kts:kte)  theta,
real(kind_phys), dimension(kts:kte)  thetav,
real(kind_phys), dimension(kts:kte)  sh,
real(kind_phys), dimension(kts:kte)  sm,
real(kind_phys), intent(in)  ust,
real(kind_phys), intent(in)  rmo,
real(kind_phys), dimension(kts:kte), intent(inout)  el,
real(kind_phys), dimension(kts:kte), intent(inout)  qke,
real(kind_phys), dimension(kts:kte), intent(out)  tsq,
real(kind_phys), dimension(kts:kte), intent(out)  qsq,
real(kind_phys), dimension(kts:kte), intent(out)  cov,
real(kind_phys), intent(in)  psig_bl,
real(kind_phys), dimension(kts:kte), intent(in)  cldfra_bl1d,
integer, intent(in)  bl_mynn_mixlength,
real(kind_phys), dimension(kts:kte), intent(in)  edmf_w1,
real(kind_phys), dimension(kts:kte), intent(in)  edmf_a1,
logical, intent(in)  initialize_qke,
integer  spp_pbl,
real(kind_phys), dimension(kts:kte)  rstoch_col 
)

This subroutine initializes the mixing length, TKE, \(\theta^{'2}\), \(q^{'2}\), and \(\theta^{'}q^{'}\).

MYNN-EDMF mym_initialize General Algorithm

  • At first ql, vt and vq are set to zero.
  • Call mym_level2() to calculate the stability functions at level 2.

Definition at line 1515 of file module_bl_mynn.F90.

References module_bl_mynn::mym_length(), and module_bl_mynn::mym_level2().

Referenced by module_bl_mynn::mynn_bl_driver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mym_length()

subroutine module_bl_mynn::mym_length ( integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), intent(in)  xland,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), intent(in)  dx,
real(kind_phys), dimension(kts:kte+1), intent(in)  zw,
real(kind_phys), intent(in)  rmo,
real(kind_phys), intent(in)  flt,
real(kind_phys), intent(in)  fltv,
real(kind_phys), intent(in)  flq,
real(kind_phys), dimension(kts:kte), intent(in)  vt,
real(kind_phys), dimension(kts:kte), intent(in)  vq,
real(kind_phys), dimension(kts:kte), intent(in)  u1,
real(kind_phys), dimension(kts:kte), intent(in)  v1,
real(kind_phys), dimension(kts:kte), intent(in)  qke,
real(kind_phys), dimension(kts:kte), intent(in)  dtv,
real(kind_phys), dimension(kts:kte), intent(out)  el,
real(kind_phys), intent(in)  zi,
real(kind_phys), dimension(kts:kte), intent(in)  theta,
real(kind_phys), dimension(kts:kte), intent(out)  qkw,
real(kind_phys), intent(in)  psig_bl,
real(kind_phys), dimension(kts:kte), intent(in)  cldfra_bl1d,
integer, intent(in)  bl_mynn_mixlength,
real(kind_phys), dimension(kts:kte), intent(in)  edmf_w1,
real(kind_phys), dimension(kts:kte), intent(in)  edmf_a1 
)

This subroutine calculates the mixing lengths.

Definition at line 1850 of file module_bl_mynn.F90.

References module_bl_mynn::boulac_length().

Referenced by module_bl_mynn::mym_initialize(), and module_bl_mynn::mym_turbulence().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mym_level2()

subroutine module_bl_mynn::mym_level2 ( integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), dimension(kts:kte), intent(in)  u,
real(kind_phys), dimension(kts:kte), intent(in)  v,
real(kind_phys), dimension(kts:kte), intent(in)  thl,
real(kind_phys), dimension(kts:kte), intent(in)  thetav,
real(kind_phys), dimension(kts:kte), intent(in)  qw,
real(kind_phys), dimension(kts:kte), intent(in)  ql,
real(kind_phys), dimension(kts:kte), intent(in)  vt,
real(kind_phys), dimension(kts:kte), intent(in)  vq,
real(kind_phys), dimension(kts:kte), intent(out)  dtl,
real(kind_phys), dimension(kts:kte), intent(out)  dqw,
real(kind_phys), dimension(kts:kte), intent(out)  dtv,
real(kind_phys), dimension(kts:kte), intent(out)  gm,
real(kind_phys), dimension(kts:kte), intent(out)  gh,
real(kind_phys), dimension(kts:kte), intent(out)  sm,
real(kind_phys), dimension(kts:kte), intent(out)  sh 
)

This subroutine calculates the level 2, non-dimensional wind shear \(G_M\) and vertical temperature gradient \(G_H\) as well as the level 2 stability funcitons \(S_h\) and \(S_m\).

Parameters
ktshorizontal dimension
ktevertical dimension
dzvertical grid spacings ( \(m\))
uwest-east component of the horizontal wind ( \(m s^{-1}\))
vsouth-north component of the horizontal wind ( \(m s^{-1}\))
thlliquid water potential temperature
qwtotal water content \(Q_w\)
qlliquid water content ( \(kg kg^{-1}\))
vt
vq
dtlvertical gradient of \(\theta_l\) ( \(K m^{-1}\))
dqwvertical gradient of \(Q_w\)
dtvvertical gradient of \(\theta_V\) ( \(K m^{-1}\))
gm\(G_M\) divided by \(L^{2}/q^{2}\) ( \(s^{-2}\))
gh\(G_H\) divided by \(L^{2}/q^{2}\) ( \(s^{-2}\))
smstability function for momentum, at Level 2
shstability function for heat, at Level 2

MYNN-EDMF mym_level2 General Algorithm

@ {

Definition at line 1719 of file module_bl_mynn.F90.

Referenced by module_bl_mynn::mym_initialize(), and module_bl_mynn::mym_turbulence().

Here is the caller graph for this function:

◆ mym_predict()

subroutine module_bl_mynn::mym_predict ( integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), intent(in)  closure,
real(kind_phys), intent(in)  delt,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), intent(in)  ust,
real(kind_phys), intent(in)  flt,
real(kind_phys), intent(in)  flq,
real(kind_phys), intent(in)  pmz,
real(kind_phys), intent(in)  phh,
real(kind_phys), dimension(kts:kte), intent(in)  el,
real(kind_phys), dimension(kts:kte), intent(in)  dfq,
real(kind_phys), dimension(kts:kte), intent(in)  rho,
real(kind_phys), dimension(kts:kte), intent(inout)  pdk,
real(kind_phys), dimension(kts:kte), intent(inout)  pdt,
real(kind_phys), dimension(kts:kte), intent(inout)  pdq,
real(kind_phys), dimension(kts:kte), intent(inout)  pdc,
real(kind_phys), dimension(kts:kte), intent(inout)  qke,
real(kind_phys), dimension(kts:kte), intent(inout)  tsq,
real(kind_phys), dimension(kts:kte), intent(inout)  qsq,
real(kind_phys), dimension(kts:kte), intent(inout)  cov,
real(kind_phys), dimension(kts:kte+1), intent(inout)  s_aw,
real(kind_phys), dimension(kts:kte+1), intent(inout)  s_awqke,
integer, intent(in)  bl_mynn_edmf_tke,
real(kind_phys), dimension(kts:kte), intent(out)  qwt1d,
real(kind_phys), dimension(kts:kte), intent(out)  qdiss1d,
integer, intent(in)  tke_budget 
)

This subroutine predicts the turbulent quantities at the next step.

Definition at line 3197 of file module_bl_mynn.F90.

Referenced by module_bl_mynn::mynn_bl_driver().

Here is the caller graph for this function:

◆ mym_turbulence()

subroutine module_bl_mynn::mym_turbulence ( integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), intent(in)  xland,
real(kind_phys), intent(in)  closure,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), intent(in)  dx,
real(kind_phys), dimension(kts:kte+1), intent(in)  zw,
real(kind_phys), dimension(kts:kte), intent(in)  u,
real(kind_phys), dimension(kts:kte), intent(in)  v,
real(kind_phys), dimension(kts:kte), intent(in)  thl,
real(kind_phys), dimension(kts:kte), intent(in)  thetav,
real(kind_phys), dimension(kts:kte), intent(in)  ql,
real(kind_phys), dimension(kts:kte), intent(in)  qw,
real(kind_phys), dimension(kts:kte), intent(in)  qke,
real(kind_phys), dimension(kts:kte), intent(in)  tsq,
real(kind_phys), dimension(kts:kte), intent(in)  qsq,
real(kind_phys), dimension(kts:kte), intent(in)  cov,
real(kind_phys), dimension(kts:kte), intent(in)  vt,
real(kind_phys), dimension(kts:kte), intent(in)  vq,
real(kind_phys), intent(in)  rmo,
real(kind_phys), intent(in)  flt,
real(kind_phys), intent(in)  fltv,
real(kind_phys), intent(in)  flq,
real(kind_phys), intent(in)  zi,
real(kind_phys), dimension(kts:kte), intent(in)  theta,
real(kind_phys), dimension(kts:kte)  sh,
real(kind_phys), dimension(kts:kte)  sm,
real(kind_phys), dimension(kts:kte), intent(out)  el,
real(kind_phys), dimension(kts:kte), intent(out)  dfm,
real(kind_phys), dimension(kts:kte), intent(out)  dfh,
real(kind_phys), dimension(kts:kte), intent(out)  dfq,
real(kind_phys), dimension(kts:kte), intent(out)  tcd,
real(kind_phys), dimension(kts:kte), intent(out)  qcd,
real(kind_phys), dimension(kts:kte), intent(out)  pdk,
real(kind_phys), dimension(kts:kte), intent(out)  pdt,
real(kind_phys), dimension(kts:kte), intent(out)  pdq,
real(kind_phys), dimension(kts:kte), intent(out)  pdc,
real(kind_phys), dimension(kts:kte), intent(inout)  qwt1d,
real(kind_phys), dimension(kts:kte), intent(inout)  qshear1d,
real(kind_phys), dimension(kts:kte), intent(inout)  qbuoy1d,
real(kind_phys), dimension(kts:kte), intent(inout)  qdiss1d,
integer, intent(in)  tke_budget,
real(kind_phys), intent(in)  psig_bl,
real(kind_phys), intent(in)  psig_shcu,
real(kind_phys), dimension(kts:kte), intent(in)  cldfra_bl1d,
integer, intent(in)  bl_mynn_mixlength,
real(kind_phys), dimension(kts:kte), intent(in)  edmf_w1,
real(kind_phys), dimension(kts:kte), intent(in)  edmf_a1,
real(kind_phys), dimension(kts:kte), intent(in)  tkeprodtd,
integer, intent(in)  spp_pbl,
real(kind_phys), dimension(kts:kte)  rstoch_col 
)

This subroutine calculates the vertical diffusivity coefficients and the production terms for the turbulent quantities.

mym_turbulence General Algorithm

Two subroutines mym_level2() and mym_length() are called within this subrouine to collect variable to carry out successive calculations:

  • mym_level2() calculates the level 2 nondimensional wind shear \(G_M\) and vertical temperature gradient \(G_H\) as well as the level 2 stability functions \(S_h\) and \(S_m\).
  • mym_length() calculates the mixing lengths.
  • The stability criteria from Helfand and Labraga (1989) are applied.
  • The stability functions for level 2.5 or level 3.0 are calculated.
  • If level 3.0 is used, counter-gradient terms are calculated.
  • Production terms of TKE, \(\theta^{'2}\), \(q^{'2}\), and \(\theta^{'}q^{'}\) are calculated.
  • Eddy diffusivity \(K_h\) and eddy viscosity \(K_m\) are calculated.
  • TKE budget terms are calculated (if the namelist parameter tke_budget is set to True)

Definition at line 2619 of file module_bl_mynn.F90.

References module_bl_mynn::mym_length(), and module_bl_mynn::mym_level2().

Referenced by module_bl_mynn::mynn_bl_driver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mynn_bl_driver()

subroutine module_bl_mynn::mynn_bl_driver ( integer, intent(in)  initflag,
logical, intent(in)  restart,
logical, intent(in)  cycling,
real(kind_phys), intent(in)  delt,
real(kind_phys), dimension(:,:), intent(in)  dz,
real(kind_phys), dimension(:), intent(in)  dx,
real(kind_phys), dimension(:), intent(in)  znt,
real(kind_phys), dimension(:,:), intent(in)  u,
real(kind_phys), dimension(:,:), intent(in)  v,
real(kind_phys), dimension(:,:), intent(in)  w,
real(kind_phys), dimension(:,:), intent(in)  th,
real(kind_phys), dimension(:,:), intent(in)  sqv3d,
real(kind_phys), dimension(:,:), intent(in)  sqc3d,
real(kind_phys), dimension(:,:), intent(in)  sqi3d,
real(kind_phys), dimension(:,:), intent(in)  sqs3d,
real(kind_phys), dimension(:,:), intent(in)  qnc,
real(kind_phys), dimension(:,:), intent(in)  qni,
real(kind_phys), dimension(:,:), intent(in)  qnwfa,
real(kind_phys), dimension(:,:), intent(in)  qnifa,
real(kind_phys), dimension(:,:), intent(in)  qnbca,
real(kind_phys), dimension(:,:), intent(in)  ozone,
real(kind_phys), dimension(:,:), intent(in)  p,
real(kind_phys), dimension(:,:), intent(in)  exner,
real(kind_phys), dimension(:,:), intent(in)  rho,
real(kind_phys), dimension(:,:), intent(in)  t3d,
real(kind_phys), dimension(:), intent(in)  xland,
real(kind_phys), dimension(:), intent(in)  ts,
real(kind_phys), dimension(:), intent(in)  qsfc,
real(kind_phys), dimension(:), intent(in)  ps,
real(kind_phys), dimension(:), intent(in)  ust,
real(kind_phys), dimension(:), intent(in)  ch,
real(kind_phys), dimension(:), intent(in)  hfx,
real(kind_phys), dimension(:), intent(in)  qfx,
real(kind_phys), dimension(:), intent(inout)  rmol,
real(kind_phys), dimension(:), intent(in)  wspd,
real(kind_phys), dimension(:), intent(in)  uoce,
real(kind_phys), dimension(:), intent(in)  voce,
real(kind_phys), dimension(:,:), intent(inout)  qke,
real(kind_phys), dimension(:,:), intent(inout)  qke_adv,
real(kind_phys), dimension(:,:), intent(out)  sh3d,
real(kind_phys), dimension(:,:), intent(out)  sm3d,
integer, intent(in)  nchem,
integer, intent(in)  kdvel,
integer, intent(in)  ndvel,
real(kind_phys), dimension(:,:,:), intent(inout), optional  chem3d,
real(kind_phys), dimension(:,:), intent(in), optional  vdep,
logical, intent(in)  smoke_dbg,
real(kind_phys), dimension(:), intent(in), optional  frp,
real(kind_phys), dimension(:), intent(in)  emis_ant_no,
logical, intent(in)  mix_chem,
logical, intent(in)  enh_mix,
logical, intent(in)  rrfs_sd,
real(kind_phys), dimension(:,:), intent(inout)  tsq,
real(kind_phys), dimension(:,:), intent(inout)  qsq,
real(kind_phys), dimension(:,:), intent(inout)  cov,
real(kind_phys), dimension(:,:), intent(inout)  rublten,
real(kind_phys), dimension(:,:), intent(inout)  rvblten,
real(kind_phys), dimension(:,:), intent(inout)  rthblten,
real(kind_phys), dimension(:,:), intent(inout)  rqvblten,
real(kind_phys), dimension(:,:), intent(inout)  rqcblten,
real(kind_phys), dimension(:,:), intent(inout)  rqiblten,
real(kind_phys), dimension(:,:), intent(inout)  rqncblten,
real(kind_phys), dimension(:,:), intent(inout)  rqniblten,
real(kind_phys), dimension(:,:), intent(inout)  rqsblten,
real(kind_phys), dimension(:,:), intent(inout)  rqnwfablten,
real(kind_phys), dimension(:,:), intent(inout)  rqnifablten,
real(kind_phys), dimension(:,:), intent(inout)  rqnbcablten,
real(kind_phys), dimension(:,:), intent(inout)  dozone,
real(kind_phys), dimension(:,:), intent(out)  exch_h,
real(kind_phys), dimension(:,:), intent(out)  exch_m,
real(kind_phys), dimension(:), intent(inout)  pblh,
integer, dimension(:), intent(inout)  kpbl,
real(kind_phys), dimension(:,:), intent(inout)  el_pbl,
real(kind_phys), dimension(:,:), intent(inout), optional  dqke,
real(kind_phys), dimension(:,:), intent(inout), optional  qwt,
real(kind_phys), dimension(:,:), intent(inout), optional  qshear,
real(kind_phys), dimension(:,:), intent(inout), optional  qbuoy,
real(kind_phys), dimension(:,:), intent(inout), optional  qdiss,
real(kind_phys), dimension(:,:), intent(inout)  qc_bl,
real(kind_phys), dimension(:,:), intent(inout)  qi_bl,
real(kind_phys), dimension(:,:), intent(inout)  cldfra_bl,
logical, intent(in)  bl_mynn_tkeadvect,
integer, intent(in)  tke_budget,
integer, intent(in)  bl_mynn_cloudpdf,
integer, intent(in)  bl_mynn_mixlength,
integer, intent(in)  icloud_bl,
real(kind_phys), intent(in)  closure,
integer, intent(in)  bl_mynn_edmf,
integer, intent(in)  bl_mynn_edmf_mom,
integer, intent(in)  bl_mynn_edmf_tke,
integer, intent(in)  bl_mynn_mixscalars,
integer, intent(in)  bl_mynn_output,
integer, intent(in)  bl_mynn_cloudmix,
integer, intent(in)  bl_mynn_mixqt,
real(kind_phys), dimension(:,:), intent(inout), optional  edmf_a,
real(kind_phys), dimension(:,:), intent(inout), optional  edmf_w,
real(kind_phys), dimension(:,:), intent(inout), optional  edmf_qt,
real(kind_phys), dimension(:,:), intent(inout), optional  edmf_thl,
real(kind_phys), dimension(:,:), intent(inout), optional  edmf_ent,
real(kind_phys), dimension(:,:), intent(inout), optional  edmf_qc,
real(kind_phys), dimension(:,:), intent(inout), optional  sub_thl3d,
real(kind_phys), dimension(:,:), intent(inout), optional  sub_sqv3d,
real(kind_phys), dimension(:,:), intent(inout), optional  det_thl3d,
real(kind_phys), dimension(:,:), intent(inout), optional  det_sqv3d,
real(kind_phys), dimension(:), intent(out)  maxwidth,
real(kind_phys), dimension(:), intent(out)  maxmf,
real(kind_phys), dimension(:), intent(out)  ztop_plume,
integer, dimension(:), intent(inout)  ktop_plume,
integer, intent(in)  spp_pbl,
real(kind_phys), dimension(:,:), intent(in), optional  pattern_spp_pbl,
real(kind_phys), dimension(:,:), intent(in)  rthraten,
logical, intent(in)  flag_qc,
logical, intent(in)  flag_qi,
logical, intent(in)  flag_qnc,
logical, intent(in)  flag_qni,
logical, intent(in)  flag_qs,
logical, intent(in)  flag_qnwfa,
logical, intent(in)  flag_qnifa,
logical, intent(in)  flag_qnbca,
logical, intent(in)  flag_ozone,
integer, intent(in)  ids,
integer, intent(in)  ide,
integer, intent(in)  jds,
integer, intent(in)  jde,
integer, intent(in)  kds,
integer, intent(in)  kde,
integer, intent(in)  ims,
integer, intent(in)  ime,
integer, intent(in)  jms,
integer, intent(in)  jme,
integer, intent(in)  kms,
integer, intent(in)  kme,
integer, intent(in)  its,
integer, intent(in)  ite,
integer, intent(in)  jts,
integer, intent(in)  jte,
integer, intent(in)  kts,
integer, intent(in)  kte 
)

This subroutine is the MYNN-EDNF PBL driver routine,which encompassed the majority of the subroutines that comprise the procedures that ultimately solve for tendencies of \(U, V, \theta, q_v, q_c, and q_i\).

mynn_bl_driver General Algorithm

  • Within the MYNN-EDMF, there is a dependecy check for the first time step, If true, a three-dimensional initialization loop is entered. Within this loop, several arrays are initialized and k-oriented (vertical) subroutines are called at every i and j point, corresponding to the x- and y- directions, respectively.
  • Call get_pblh() to calculate hybrid ( \(\theta_{v}-TKE\)) PBL height.
  • Call scale_aware() to calculate similarity functions for scale-adaptive control ( \(P_{\sigma-PBL}\) and \(P_{\sigma-shcu}\)).
  • Call mym_initialize() to initializes the mixing length, TKE, \(\theta^{'2}\), \(q^{'2}\), and \(\theta^{'}q^{'}\). These variables are calculated after obtaining prerequisite variables by calling the following subroutines from within mym_initialize(): mym_level2() and mym_length().
  • After initializing all required variables, the regular procedures performed at every time step are ready for execution.
  • Call get_pblh() to calculate the hybrid \(\theta_{v}-TKE\) PBL height diagnostic.
  • Call scale_aware() to calculate the similarity functions, \(P_{\sigma-PBL}\) and \(P_{\sigma-shcu}\), to control the scale-adaptive behaviour for the local and nonlocal components, respectively.
  • Call mym_condensation() to calculate the nonconvective component of the subgrid cloud fraction and mixing ratio as well as the functions used to calculate the buoyancy flux. Different cloud PDFs can be selected by use of the namelist parameter bl_mynn_cloudpdf.
  • Add TKE source driven by cloud top cooling Calculate the buoyancy production of TKE from cloud-top cooling when bl_mynn_topdown =1.
  • Call mym_predict() to solve TKE and \(\theta^{'2}, q^{'2}, and \theta^{'}q^{'}\) for the following time step.
  • Call mynn_tendencies() to solve for tendencies of \(U, V, \theta, q_{v}, q_{c}, and q_{i}\).

Definition at line 361 of file module_bl_mynn.F90.

References module_bl_mynn::dmp_mf(), module_bl_mynn::get_pblh(), module_bl_mynn::mym_condensation(), module_bl_mynn::mym_initialize(), module_bl_mynn::mym_predict(), module_bl_mynn::mym_turbulence(), and module_bl_mynn::mynn_tendencies().

Referenced by mynnedmf_wrapper::mynnedmf_wrapper_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mynn_tendencies()

subroutine module_bl_mynn::mynn_tendencies ( integer, intent(in)  kts,
integer, intent(in)  kte,
integer, intent(in)  i,
real(kind_phys), intent(in)  delt,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), dimension(kts:kte), intent(in)  rho,
real(kind_phys), dimension(kts:kte), intent(in)  u,
real(kind_phys), dimension(kts:kte), intent(in)  v,
real(kind_phys), dimension(kts:kte), intent(in)  th,
real(kind_phys), dimension(kts:kte), intent(in)  tk,
real(kind_phys), dimension(kts:kte), intent(in)  qv,
real(kind_phys), dimension(kts:kte), intent(in)  qc,
real(kind_phys), dimension(kts:kte), intent(in)  qi,
real(kind_phys), dimension(kts:kte), intent(in)  qs,
real(kind_phys), dimension(kts:kte), intent(in)  qnc,
real(kind_phys), dimension(kts:kte), intent(in)  qni,
real(kind_phys), intent(in)  psfc,
real(kind_phys), dimension(kts:kte), intent(in)  p,
real(kind_phys), dimension(kts:kte), intent(in)  exner,
real(kind_phys), dimension(kts:kte), intent(inout)  thl,
real(kind_phys), dimension(kts:kte), intent(inout)  sqv,
real(kind_phys), dimension(kts:kte), intent(inout)  sqc,
real(kind_phys), dimension(kts:kte), intent(inout)  sqi,
real(kind_phys), dimension(kts:kte), intent(inout)  sqs,
real(kind_phys), dimension(kts:kte), intent(inout)  sqw,
real(kind_phys), dimension(kts:kte), intent(inout)  qnwfa,
real(kind_phys), dimension(kts:kte), intent(inout)  qnifa,
real(kind_phys), dimension(kts:kte), intent(inout)  qnbca,
real(kind_phys), dimension(kts:kte), intent(inout)  ozone,
real(kind_phys), intent(in)  ust,
real(kind_phys), intent(in)  flt,
real(kind_phys), intent(in)  flq,
real(kind_phys), intent(in)  flqv,
real(kind_phys), intent(in)  flqc,
real(kind_phys), intent(in)  wspd,
real(kind_phys), intent(in)  uoce,
real(kind_phys), intent(in)  voce,
real(kind_phys), dimension(kts:kte), intent(in)  tsq,
real(kind_phys), dimension(kts:kte), intent(in)  qsq,
real(kind_phys), dimension(kts:kte), intent(in)  cov,
real(kind_phys), dimension(kts:kte), intent(in)  tcd,
real(kind_phys), dimension(kts:kte), intent(in)  qcd,
real(kind_phys), dimension(kts:kte), intent(inout)  dfm,
real(kind_phys), dimension(kts:kte), intent(inout)  dfh,
real(kind_phys), dimension(kts:kte), intent(in)  dfq,
real(kind_phys), dimension(kts:kte), intent(inout)  du,
real(kind_phys), dimension(kts:kte), intent(inout)  dv,
real(kind_phys), dimension(kts:kte), intent(inout)  dth,
real(kind_phys), dimension(kts:kte), intent(inout)  dqv,
real(kind_phys), dimension(kts:kte), intent(inout)  dqc,
real(kind_phys), dimension(kts:kte), intent(inout)  dqi,
real(kind_phys), dimension(kts:kte), intent(inout)  dqs,
real(kind_phys), dimension(kts:kte), intent(inout)  dqnc,
real(kind_phys), dimension(kts:kte), intent(inout)  dqni,
real(kind_phys), dimension(kts:kte), intent(inout)  dqnwfa,
real(kind_phys), dimension(kts:kte), intent(inout)  dqnifa,
real(kind_phys), dimension(kts:kte), intent(inout)  dqnbca,
real(kind_phys), dimension(kts:kte), intent(inout)  dozone,
real(kind_phys), dimension(kts:kte), intent(in)  diss_heat,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_aw,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awthl,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awqt,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awqv,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awqc,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awu,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awv,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awqnc,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awqni,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awqnwfa,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awqnifa,
real(kind_phys), dimension(kts:kte+1), intent(in)  s_awqnbca,
real(kind_phys), dimension(kts:kte+1), intent(in)  sd_aw,
real(kind_phys), dimension(kts:kte+1), intent(in)  sd_awthl,
real(kind_phys), dimension(kts:kte+1), intent(in)  sd_awqt,
real(kind_phys), dimension(kts:kte+1), intent(in)  sd_awqv,
real(kind_phys), dimension(kts:kte+1), intent(in)  sd_awqc,
real(kind_phys), dimension(kts:kte+1), intent(in)  sd_awu,
real(kind_phys), dimension(kts:kte+1), intent(in)  sd_awv,
real(kind_phys), dimension(kts:kte), intent(in)  sub_thl,
real(kind_phys), dimension(kts:kte), intent(in)  sub_sqv,
real(kind_phys), dimension(kts:kte), intent(in)  sub_u,
real(kind_phys), dimension(kts:kte), intent(in)  sub_v,
real(kind_phys), dimension(kts:kte), intent(in)  det_thl,
real(kind_phys), dimension(kts:kte), intent(in)  det_sqv,
real(kind_phys), dimension(kts:kte), intent(in)  det_sqc,
real(kind_phys), dimension(kts:kte), intent(in)  det_u,
real(kind_phys), dimension(kts:kte), intent(in)  det_v,
logical, intent(in)  flag_qc,
logical, intent(in)  flag_qi,
logical, intent(in)  flag_qnc,
logical, intent(in)  flag_qni,
logical, intent(in)  flag_qs,
logical, intent(in)  flag_qnwfa,
logical, intent(in)  flag_qnifa,
logical, intent(in)  flag_qnbca,
real(kind_phys), dimension(kts:kte), intent(in)  cldfra_bl1d,
integer, intent(in)  bl_mynn_cloudmix,
integer, intent(in)  bl_mynn_mixqt,
integer, intent(in)  bl_mynn_edmf,
integer, intent(in)  bl_mynn_edmf_mom,
integer, intent(in)  bl_mynn_mixscalars 
)

This subroutine solves for tendencies of U, V, \(\theta\), qv, qc, and qi.

Definition at line 4027 of file module_bl_mynn.F90.

References module_bl_mynn::qsat_blend().

Referenced by module_bl_mynn::mynn_bl_driver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ qsat_blend()

real(kind_phys) function module_bl_mynn::qsat_blend ( real(kind_phys), intent(in)  t,
real(kind_phys), intent(in)  p 
)

This function extends function "esat" and returns a "blended" saturation mixing ratio. Tice currently set to 240 K, t0c = 273.15 K.

Author
JAYMES

Definition at line 7446 of file module_bl_mynn.F90.

References module_bl_mynn::qsat_blend().

Referenced by module_bl_mynn::condensation_edmf(), module_bl_mynn::dmp_mf(), module_bl_mynn::mym_condensation(), module_bl_mynn::mynn_tendencies(), and module_bl_mynn::qsat_blend().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ retrieve_exchange_coeffs()

subroutine module_bl_mynn::retrieve_exchange_coeffs ( integer, intent(in)  kts,
integer, intent(in)  kte,
real(kind_phys), dimension(kts:kte), intent(in)  dfm,
real(kind_phys), dimension(kts:kte), intent(in)  dfh,
real(kind_phys), dimension(kts:kte), intent(in)  dz,
real(kind_phys), dimension(kts:kte), intent(out)  k_m,
real(kind_phys), dimension(kts:kte), intent(out)  k_h 
)

Definition at line 5359 of file module_bl_mynn.F90.

◆ tridiag()

subroutine module_bl_mynn::tridiag ( integer, intent(in)  n,
real(kind_phys), dimension(n), intent(in)  a,
real(kind_phys), dimension(n), intent(in)  b,
real(kind_phys), dimension(n), intent(inout)  c,
real(kind_phys), dimension(n), intent(inout)  d 
)

Definition at line 5387 of file module_bl_mynn.F90.

◆ tridiag2()

subroutine module_bl_mynn::tridiag2 ( integer, intent(in)  n,
real(kind_phys), dimension(n), intent(in)  a,
real(kind_phys), dimension(n), intent(in)  b,
real(kind_phys), dimension(n), intent(in)  c,
real(kind_phys), dimension(n), intent(in)  d,
real(kind_phys), dimension(n), intent(out)  x 
)

Definition at line 5423 of file module_bl_mynn.F90.

◆ tridiag3()

subroutine module_bl_mynn::tridiag3 ( integer, intent(in)  kte,
real(kind_phys), dimension(kte)  a,
real(kind_phys), dimension(kte)  b,
real(kind_phys), dimension(kte)  c,
real(kind_phys), dimension(kte)  d,
real(kind_phys), dimension(kte), intent(out)  x 
)

Definition at line 5458 of file module_bl_mynn.F90.

◆ xl_blend()

real(kind_phys) function module_bl_mynn::xl_blend ( real(kind_phys), intent(in)  t)

This function interpolates the latent heats of vaporization and sublimation into a single, temperature-dependent, "blended" value, following Chaboureau and Bechtold (2002) [30], Appendix.

Author
JAYMES

Definition at line 7504 of file module_bl_mynn.F90.

References module_bl_mynn::xl_blend().

Referenced by module_bl_mynn::dmp_mf(), module_bl_mynn::mym_condensation(), and module_bl_mynn::xl_blend().

Here is the call graph for this function:
Here is the caller graph for this function: