CCPP Scientific Documentation
v5.0.0
subroutine module_bl_mynn::mynn_bl_driver ( integer, intent(in)  initflag,
logical, intent(in)  restart,
logical, intent(in)  cycling,
integer, intent(in)  grav_settling,
real, intent(in)  delt,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in)  dz,
real, dimension(ims:ime,jms:jme), intent(in)  dx,
real, dimension(ims:ime,jms:jme), intent(in)  znt,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in)  u,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in)  v,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in)  w,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in)  th,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in)  sqv3D,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in), optional  sqc3D,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in), optional  sqi3D,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in), optional  qnc,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in), optional  qni,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in), optional  qnwfa,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in), optional  qnifa,
real, dimension(ims:ime,kms:kme), intent(in), optional  ozone,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in)  p,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in)  exner,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in)  rho,
real, dimension(ims:ime,kms:kme,jms:jme), intent(in)  T3D,
real, dimension(ims:ime,jms:jme), intent(in)  xland,
real, dimension(ims:ime,jms:jme), intent(in)  ts,
real, dimension(ims:ime,jms:jme), intent(in)  qsfc,
real, dimension(ims:ime,jms:jme), intent(in)  qcg,
real, dimension(ims:ime,jms:jme), intent(in)  ps,
real, dimension(ims:ime,jms:jme), intent(in)  ust,
real, dimension(ims:ime,jms:jme), intent(in)  ch,
real, dimension(ims:ime,jms:jme), intent(in)  hfx,
real, dimension(ims:ime,jms:jme), intent(in)  qfx,
real, dimension(ims:ime,jms:jme), intent(in)  rmol,
real, dimension(ims:ime,jms:jme), intent(in)  wspd,
real, dimension(ims:ime,jms:jme), intent(in)  uoce,
real, dimension(ims:ime,jms:jme), intent(in)  voce,
real, dimension(ims:ime,jms:jme), intent(in)  vdfg,
real, dimension(ims:ime,kms:kme,jms:jme), intent(inout)  Qke,
  qke_adv,
logical, intent(in)  bl_mynn_tkeadvect,
  if,
  WRF_CHEM 
)

GSD 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_{vli}-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_{vli}-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.
    • Calculate the buoyancy production of TKE from cloud-top cooling when bl_mynn_topdown =1.
    • Call mym_turbulence() to collect the necessary variable to carry out successive claculations.
    • 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}\).
    • Call retrieve_exchange_coeffs() to retrieve K_m1 and K_h1.

References b1, bl_mynn_mixchem, bl_mynn_topdown, cphh_st, cphh_unst, cphm_st, cphm_unst, debug_code, dmp_mf(), get_pblh(), karman, mym_condensation(), mym_initialize(), mym_predict(), mym_turbulence(), mynn_mix_chem(), mynn_tendencies(), p1000mb, rd, retrieve_exchange_coeffs(), scale_aware(), scaleaware, twothirds, xlscp, and xlvcp.

Referenced by mynnedmf_wrapper::mynnedmf_wrapper_run().

Here is the call graph for this function: