CCPP Scientific Documentation
v4.0
GSD MYNN-EDMF PBL Scheme Module

The MYNN-EDMF scheme (Olson et al. 2019 [137]) represents the local mixing using an eddy-diffusivity approach tied to turbulent kinetic energy (TKE). The nonlocal mixing, important for convective boundary layers, is represented using a mass-flux approach. The scheme can be run with either a 2.5 or 3.0 closure and includes a partial-condensation scheme, commonly referred to as a cloud PDF or statistical-cloud scheme, to represent the effects of subgrid-scale (SGS) clouds on buoyancy. This module was originally translated from Nakanishi and Niino (2009) [132] and put into the WRF model by Mariusz Pagowski NOAA/GSD and CIRA/CSU in 2008. It was extensively modified by Joseph Olson and Jaymes Kenyon of NOAA/GSD and CU/CIRES. More...

Detailed Description

Changes to original code introduced by M. Pagowski in 2008:

  1. Code is 1D (in z)
  2. No advection of TKE, covariances and variances
  3. Cranck-Nicholson replaced with the implicit scheme
  4. Removed terrain dependent grid since input in WRF in actual distances in z[m]
  5. Cosmetic changes to adhere to WRF standard (remove common blocks, intent etc)

Further modifications implemented by J. Olson and J. Kenyon:

Departures from original MYNN (Nakanish and Niino (2009) [132])

  1. Added the of BouLac mixing length in the free atmosphere.
  2. Changed the turbulent mixing length to be integrated from the surface to the top of the BL plus a transition layer depth.

Changes made in various versions of the WRF model:

Version
v3.4.1:
  • Option to use Kitamura/Canuto modification which removes the critical Richardson number and negative TKE (default)
  • Hybrid PBL height diagnostic, which blends a theta-v-based definition in neutral/convective BL and a TKE-based definition in stable conditions.
  • TKE budget output option (bl_mynn_tkebudget)
v3.5.0:
  • TKE advection option (bl_mynn_tkeadvect)
v3.5.1:
  • Fog deposition related changes
v3.6.0:
  • Removed fog deposition from the calculation of tendencies
  • Added mixing of qc, qi, qni
  • Added output for wstar, delta, TKE_PBL, & KPBL for correct coupling to shcu schemes
v3.8.0:
  • Added subgrid scale cloud output for coupling to radiation schemes (activated by setting icloud_bl =1 in phys namelist)
  • Added WRF_DEBUG prints (at level 3000)
  • Added Tripoli and Cotton (1981) [168] correction
  • Added namelist option bl_mynn_cloudmix to test effect of mixing cloud species (default = 1: on)
  • Added mass-flux option (bl_mynn_edmf, = 1 for DMP mass-flux, 0: off). Related options:
    • bl_mynn_edmf_mom = 1 : activate momentum transport in MF scheme
    • bl_mynn_edmf_tke = 1 : activate TKE transport in MF scheme
  • Added mixing length option (bl_mynn_mixlength, see notes below)
  • Added more sophisticated saturation checks, following Thompson scheme
  • Added new cloud PDF option (bl_mynn_cloudpdf = 2) from Chaboureau and Bechtold (2002) [29] with modifications
  • Added capability to mix chemical species when env variable WRF_CHEM = 1, thanks to Wayne Angevine
  • Added scale-aware mixing length, following Junshi Ito's work Ito et al. (2015, BLM) [92]
v3.9.0:
  • Improvement to the mass-flux scheme (dynamic number of plumes, better plume/cloud depth, significant speed up, better cloud fraction)
  • Added Stochastic Parameter Perturbation (SPP) implementation
  • Many miscellaneous tweaks to the mixing lengths and stratus component of the subgrid clouds
v4.0:
  • Removed or added alternatives to WRF-specific functions/modules for the sake of portability to other models
  • Further refinement of mass-flux scheme from SCM experiments with Wayne Angevine: switch to linear entrainment and back to Simpson and Wiggert-type w-equation
  • Addition of TKE production due to radiation cooling at top of clouds (proto-version); not activated by default
  • Some code rewrites to move if-thens out of loops in an attempt to improve computational efficiency
  • New tridiagonal solver, which is supposedly 14% faster and more conservative. Impact seems very small
  • Many miscellaneous tweaks to the mixing lengths and stratus component of the subgrid-scale (SGS) clouds
v4.1:
  • Big improvements in downward SW radiation due to revision of subgrid clouds
    • better cloud fraction and subgrid scale mixing ratios
    • may experience a small cool bias during the daytime now that high SW-down bias is greatly reduced
  • Some tweaks to increase the turbulent mixing during the daytime for bl_mynn_mixlength option 2 to alleviate cool bias (very small impact)
  • Improved ensemble spread from changes to Stochastic Parameter Perturbation (SPP) in MYNN
    • now perturbing eddy diffusivity and eddy viscosity directly
    • now perturbing background rh (in SGS cloud calc only)
    • now perturbing entrainment rates in mass-flux scheme
  • Added IF checks (within IFDEFS) to protect mixchem code from being used when HRRR smoke is used (no impact when WRF-CHEM is not used)
  • Important bug fix for WRF-CHEM when transporting chemical species in MF scheme
  • Removed 2nd mass-flux scheme (no only bl_mynn_edmf = 1, no option 2)
  • Removed unused stochastic code for mass-flux scheme
  • Changed mass-flux scheme to be integrated on interface levels instead of mass levels - impact is small
  • Added option to mix second moments in MYNN as opposed to the scalar_pblmix option.
    • activated with bl_mynn_mixscalars = 1; this sets scalar_pblmix = 0
    • added tridagonal solver used in scalar_pblmix option to duplicate tendencies
    • this alone changes the interface call considerably from v4.0
  • Slight revision to TKE production due to radiation cooling at top of clouds
  • Added the non-Guassian buoyancy flux function of Bechtold and Siebesma (1998) [16]
    • improves TKE in SGS clouds
  • Added heating due to dissipation of TKE (small impact, maybe + 0.1 C daytime PBL temp)
  • Miscellaneous changes made for FV3/MPAS compatibility

Many of these changes are now documented in Olson et al. (2019, NOAA Technical Memorandum)

Collaboration diagram for GSD MYNN-EDMF PBL Scheme Module:

Modules

 GSD mynnrad_pre_run Module
 This interstitial code adds the subgrid clouds to the resolved-scale clouds if there is no resolved-scale clouds in that particular grid box.
 
 GSD mynnrad_post_run Module
 This interstitial code restores the original resolved-scale clouds (qc and qi).
 

Modules

module  mynnedmf_wrapper
 The following references best describe the code within Olson et al. (2018, NOAA Technical Memorandum) Nakanishi and Niino (2009 ) [132].
 

Functions/Subroutines

subroutine module_bl_mynn::mym_level2 (kts, kte, dz, u, v, thl, 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\). More...
 
subroutine module_bl_mynn::mym_length ( kts, kte, dz, zw, rmo, flt, flq, vt, vq, qke, dtv, el, zi, theta, qkw, Psig_bl, cldfra_bl1D, bl_mynn_mixlength, edmf_w1, edmf_a1, edmf_qc1, bl_mynn_edmf)
 This subroutine calculates the mixing lengths. More...
 
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. More...
 
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. More...
 
subroutine module_bl_mynn::mym_turbulence ( kts, kte, levflag, dz, zw, u, v, thl, ql, qw, qke, tsq, qsq, cov, vt, vq, rmo, flt, flq, zi, theta, sh, El, Dfm, Dfh, Dfq, Tcd, Qcd, Pdk, Pdt, Pdq, Pdc, qWT1D, qSHEAR1D, qBUOY1D, qDISS1D, bl_mynn_tkebudget, Psig_bl, Psig_shcu, cldfra_bl1D, bl_mynn_mixlength, edmf_w1, edmf_a1, edmf_qc1, bl_mynn_edmf, TKEprodTD, spp_pbl, rstoch_col)
 This subroutine calculates the vertical diffusivity coefficients and the production terms for the turbulent quantities. More...
 
subroutine module_bl_mynn::mym_predict (kts, kte, levflag, delt, dz, ust, flt, flq, pmz, phh, el, dfq, pdk, pdt, pdq, pdc, qke, tsq, qsq, cov, s_aw, s_awqke, bl_mynn_edmf_tke )
 This subroutine predicts the turbulent quantities at the next step. More...
 
subroutine module_bl_mynn::mym_condensation (kts, kte, dx, dz, zw, thl, qw, p, exner, tsq, qsq, cov, Sh, el, bl_mynn_cloudpdf, qc_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 . More...
 
subroutine module_bl_mynn::mynn_tendencies (kts, kte, levflag, grav_settling, delt, dz, rho, u, v, th, tk, qv, qc, qi, qnc, qni, p, exner, thl, sqv, sqc, sqi, sqw, qnwfa, qnifa, ust, flt, flq, flqv, flqc, wspd, qcg, uoce, voce, tsq, qsq, cov, tcd, qcd, dfm, dfh, dfq, Du, Dv, Dth, Dqv, Dqc, Dqi, Dqnc, Dqni, Dqnwfa, Dqnifa, vdfg1, diss_heat, s_aw, s_awthl, s_awqt, s_awqv, s_awqc, s_awu, s_awv, s_awqnc, s_awqni, s_awqnwfa, s_awqnifa, FLAG_QC, FLAG_QI, FLAG_QNC, FLAG_QNI, FLAG_QNWFA, FLAG_QNIFA, cldfra_bl1d, ztop_shallow, ktop_shallow, 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. More...
 
subroutine module_bl_mynn::mynn_mix_chem (kts, kte, levflag, grav_settling, delt, dz, nchem, kdvel, ndvel, num_vert_mix, chem1, vd1, qnc, qni, p, exner, thl, sqv, sqc, sqi, sqw, ust, flt, flq, flqv, flqc, wspd, qcg, uoce, voce, tsq, qsq, cov, tcd, qcd, dfm, dfh, dfq, s_aw, s_awchem, bl_mynn_cloudmix)
 
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::mynn_bl_init_driver ( RUBLTEN, RVBLTEN, RTHBLTEN, RQVBLTEN, RQCBLTEN, RQIBLTEN,QKE, TKE_PBL, EXCH_H
 
subroutine module_bl_mynn::dmp_mf ( kts, kte, dt, zw, dz, p, momentum_opt, tke_opt, scalar_opt, u, v, w, th, thl, thv, tk, qt, qv, qc, qke, qnc, qni, qnwfa, qnifa, exner, vt, vq, sgm, ust, flt, flq, flqv, flqc, pblh, kpbl, DX, landsea, ts,
 This subroutine is the Dynamic Multi-Plume (DMP) Mass-Flux Scheme. More...
 
subroutine module_bl_mynn::condensation_edmf (QT, THL, P, zagl, THV, QC)
 This subroutine. More...
 
subroutine module_bl_mynn::scale_aware (dx, PBL1, Psig_bl, Psig_shcu)
 This subroutine calculates the similarity functions, \(P_{\sigma-PBL}\) and \(P_{\sigma-shcu}\), to control the scale-adaptive behavior for the local and nonlocal components, respectively. More...
 
real function module_bl_mynn::esat_blend (t)
 
real function module_bl_mynn::qsat_blend (t, P, waterice)
 This function extends function "esat" and returns a "blended" saturation mixing ratio. More...
 
real 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) [29], Appendix. More...
 
subroutine module_bl_mynn::mym_initialize ( kts, kte, dz, zw, u, v, thl, qw,
 This subroutine initializes the mixing length, TKE, \(\theta^{'2}\), \(q^{'2}\), and \(\theta^{'}q^{'}\). More...
 
subroutine module_bl_mynn::mynn_bl_driver (WRF_CHEM)
 This subroutine is the GSD 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\). More...
 
subroutine module_bl_mynn::get_pblh (KTS, KTE, zi, thetav1D, qke1D, zw1D, dz1D, landsea, kzi)
 This subroutine calculates hybrid diagnotic boundary-layer height (PBLH). More...