CCPP SciDoc for UFS-SRW v2.2.0  SRW v2.2.0
Common Community Physics Package Developed at DTC

◆ noahmpdrv_run()

subroutine, public noahmpdrv::noahmpdrv_run ( integer, intent(in)  im,
integer, intent(in)  km,
integer, intent(in)  lsnowl,
integer, intent(in)  itime,
real(kind=kind_phys), dimension(:), intent(in)  ps,
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,
integer, dimension(:), intent(in)  soiltyp,
integer, dimension(:), intent(in)  soilcol,
integer, dimension(:), intent(in)  vegtype,
real(kind=kind_phys), dimension(:), intent(in)  sigmaf,
real(kind=kind_phys), dimension(:), intent(in)  dlwflx,
real(kind=kind_phys), dimension(:), intent(in)  dswsfc,
real(kind=kind_phys), dimension(:), intent(in)  snet,
real(kind=kind_phys), intent(in)  delt,
real(kind=kind_phys), dimension(:), intent(in)  tg3,
real(kind=kind_phys), dimension(:), intent(inout)  cm,
real(kind=kind_phys), dimension(:), intent(inout)  ch,
real(kind=kind_phys), dimension(:), intent(in)  prsl1,
real(kind=kind_phys), dimension(:), intent(in)  prslk1,
real(kind=kind_phys), dimension(:), intent(in)  prslki,
real(kind=kind_phys), dimension(:), intent(in)  prsik1,
real(kind=kind_phys), dimension(:), intent(in)  zf,
real(kind=kind_phys), dimension(:), intent(in)  pblh,
logical, dimension(:), intent(in)  dry,
real(kind=kind_phys), dimension(:), intent(in)  wind,
integer, dimension(:), intent(in)  slopetyp,
real(kind=kind_phys), dimension(:), intent(in)  shdmin,
real(kind=kind_phys), dimension(:), intent(in)  shdmax,
real(kind=kind_phys), dimension(:), intent(in)  snoalb,
real(kind=kind_phys), dimension(:), intent(inout)  sfalb,
logical, dimension(:), intent(in)  flag_iter,
real(kind=kind_phys), intent(in)  con_g,
integer, intent(in)  idveg,
integer, intent(in)  iopt_crs,
integer, intent(in)  iopt_btr,
integer, intent(in)  iopt_run,
integer, intent(in)  iopt_sfc,
integer, intent(in)  iopt_frz,
integer, intent(in)  iopt_inf,
integer, intent(in)  iopt_rad,
integer, intent(in)  iopt_alb,
integer, intent(in)  iopt_snf,
integer, intent(in)  iopt_tbot,
integer, intent(in)  iopt_stc,
integer, intent(in)  iopt_trs,
integer, intent(in)  iopt_diag,
real(kind=kind_phys), dimension(:), intent(in)  xlatin,
real(kind=kind_phys), dimension(:), intent(in)  xcoszin,
integer, intent(in)  iyrlen,
real(kind=kind_phys), intent(in)  julian,
real(kind=kind_phys), dimension(:), intent(in)  garea,
real(kind=kind_phys), dimension(:), intent(in)  rainn_mp,
real(kind=kind_phys), dimension(:), intent(in)  rainc_mp,
real(kind=kind_phys), dimension(:), intent(in)  snow_mp,
real(kind=kind_phys), dimension(:), intent(in)  graupel_mp,
real(kind=kind_phys), dimension(:), intent(in)  ice_mp,
real(kind=kind_phys), dimension(:), intent(in)  rhonewsn1,
real(kind=kind_phys), intent(in)  con_hvap,
real(kind=kind_phys), intent(in)  con_cp,
real(kind=kind_phys), intent(in)  con_jcal,
real(kind=kind_phys), intent(in)  rhoh2o,
real(kind=kind_phys), intent(in)  con_eps,
real(kind=kind_phys), intent(in)  con_epsm1,
real(kind=kind_phys), intent(in)  con_fvirt,
real(kind=kind_phys), intent(in)  con_rd,
real(kind=kind_phys), intent(in)  con_hfus,
logical, intent(in)  thsfc_loc,
real(kind=kind_phys), dimension(:), intent(inout)  weasd,
real(kind=kind_phys), dimension(:), intent(inout)  snwdph,
real(kind=kind_phys), dimension(:), intent(inout)  tskin,
real(kind=kind_phys), dimension(:), intent(inout)  tprcp,
real(kind=kind_phys), dimension(:), intent(inout)  srflag,
real(kind=kind_phys), dimension(:,:), intent(inout)  smc,
real(kind=kind_phys), dimension(:,:), intent(inout)  stc,
real(kind=kind_phys), dimension(:,:), intent(inout)  slc,
real(kind=kind_phys), dimension(:), intent(inout)  canopy,
real(kind=kind_phys), dimension(:), intent(inout)  trans,
real(kind=kind_phys), dimension(:), intent(inout)  tsurf,
real(kind=kind_phys), dimension(:), intent(inout)  zorl,
real(kind=kind_phys), dimension(:), intent(inout)  rb1,
real(kind=kind_phys), dimension(:), intent(inout)  fm1,
real(kind=kind_phys), dimension(:), intent(inout)  fh1,
real(kind=kind_phys), dimension(:), intent(inout)  ustar1,
real(kind=kind_phys), dimension(:), intent(inout)  stress1,
real(kind=kind_phys), dimension(:), intent(inout)  fm101,
real(kind=kind_phys), dimension(:), intent(inout)  fh21,
real(kind=kind_phys), dimension(:), intent(inout)  rmol1,
real(kind=kind_phys), dimension(:), intent(inout)  flhc1,
real(kind=kind_phys), dimension(:), intent(inout)  flqc1,
logical, intent(in)  do_mynnsfclay,
real(kind=kind_phys), dimension(:), intent(inout)  snowxy,
real(kind=kind_phys), dimension(:), intent(inout)  tvxy,
real(kind=kind_phys), dimension(:), intent(inout)  tgxy,
real(kind=kind_phys), dimension(:), intent(inout)  canicexy,
real(kind=kind_phys), dimension(:), intent(inout)  canliqxy,
real(kind=kind_phys), dimension(:), intent(inout)  eahxy,
real(kind=kind_phys), dimension(:), intent(inout)  tahxy,
real(kind=kind_phys), dimension(:), intent(inout)  cmxy,
real(kind=kind_phys), dimension(:), intent(inout)  chxy,
real(kind=kind_phys), dimension(:), intent(inout)  fwetxy,
real(kind=kind_phys), dimension(:), intent(inout)  sneqvoxy,
real(kind=kind_phys), dimension(:), intent(inout)  alboldxy,
real(kind=kind_phys), dimension(:), intent(inout)  qsnowxy,
real(kind=kind_phys), dimension(:), intent(inout)  wslakexy,
real(kind=kind_phys), dimension(:), intent(inout)  zwtxy,
real(kind=kind_phys), dimension(:), intent(inout)  waxy,
real(kind=kind_phys), dimension(:), intent(inout)  wtxy,
real(kind=kind_phys), dimension(:,lsnowl:), intent(inout)  tsnoxy,
real(kind=kind_phys), dimension(:,lsnowl:), intent(inout)  zsnsoxy,
real(kind=kind_phys), dimension(:,lsnowl:), intent(inout)  snicexy,
real(kind=kind_phys), dimension(:,lsnowl:), intent(inout)  snliqxy,
real(kind=kind_phys), dimension(:), intent(inout)  lfmassxy,
real(kind=kind_phys), dimension(:), intent(inout)  rtmassxy,
real(kind=kind_phys), dimension(:), intent(inout)  stmassxy,
real(kind=kind_phys), dimension(:), intent(inout)  woodxy,
real(kind=kind_phys), dimension(:), intent(inout)  stblcpxy,
real(kind=kind_phys), dimension(:), intent(inout)  fastcpxy,
real(kind=kind_phys), dimension(:), intent(inout)  xlaixy,
real(kind=kind_phys), dimension(:), intent(inout)  xsaixy,
real(kind=kind_phys), dimension(:), intent(inout)  taussxy,
real(kind=kind_phys), dimension(:,:), intent(inout)  smoiseq,
real(kind=kind_phys), dimension(:), intent(inout)  smcwtdxy,
real(kind=kind_phys), dimension(:), intent(inout)  deeprechxy,
real(kind=kind_phys), dimension(:), intent(inout)  rechxy,
real(kind=kind_phys), dimension(:), intent(out)  albdvis,
real(kind=kind_phys), dimension(:), intent(out)  albdnir,
real(kind=kind_phys), dimension(:), intent(out)  albivis,
real(kind=kind_phys), dimension(:), intent(out)  albinir,
real(kind=kind_phys), dimension(:), intent(out)  emiss,
real(kind=kind_phys), dimension(:), intent(out)  sncovr1,
real(kind=kind_phys), dimension(:), intent(out)  qsurf,
real(kind=kind_phys), dimension(:), intent(out)  gflux,
real(kind=kind_phys), dimension(:), intent(out)  drain,
real(kind=kind_phys), dimension(:), intent(out)  evap,
real(kind=kind_phys), dimension(:), intent(out)  hflx,
real(kind=kind_phys), dimension(:), intent(out)  ep,
real(kind=kind_phys), dimension(:), intent(out)  runoff,
real(kind=kind_phys), dimension(:), intent(out)  cmm,
real(kind=kind_phys), dimension(:), intent(out)  chh,
real(kind=kind_phys), dimension(:), intent(out)  evbs,
real(kind=kind_phys), dimension(:), intent(out)  evcw,
real(kind=kind_phys), dimension(:), intent(out)  sbsno,
real(kind=kind_phys), dimension(:), intent(out)  pah,
real(kind=kind_phys), dimension(:), intent(out)  ecan,
real(kind=kind_phys), dimension(:), intent(out)  etran,
real(kind=kind_phys), dimension(:), intent(out)  edir,
real(kind=kind_phys), dimension(:), intent(out)  snowc,
real(kind=kind_phys), dimension(:), intent(out)  stm,
real(kind=kind_phys), dimension(:), intent(out)  snohf,
real(kind=kind_phys), dimension(:), intent(out)  smcwlt2,
real(kind=kind_phys), dimension(:), intent(out)  smcref2,
real(kind=kind_phys), dimension(:), intent(out)  wet1,
real(kind=kind_phys), dimension(:), intent(out)  t2mmp,
real(kind=kind_phys), dimension(:), intent(out)  q2mp,
real(kind=kind_phys), dimension(:), intent(out)  zvfun,
real(kind=kind_phys), dimension(:), intent(out)  ztmax,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg,
real(kind=kind_phys), dimension(:), intent(out), optional  canopy_heat_storage_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  rainfall_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  sw_absorbed_total_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  sw_reflected_total_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  lw_absorbed_total_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  temperature_bare_grd_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  temperature_veg_grd_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  temperature_veg_2m_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  temperature_bare_2m_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  spec_humidity_veg_2m_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  spec_humidity_bare_2m_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  sw_absorbed_veg_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  sw_absorbed_ground_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  snowmelt_out_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  snowmelt_shallow_ccpp,
real(kind=kind_phys), dimension(:,:), intent(out), optional  albedo_direct_snow_ccpp,
real(kind=kind_phys), dimension(:,:), intent(out), optional  albedo_diffuse_snow_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  ch_vegetated_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  ch_bare_ground_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  sensible_heat_grd_veg_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  sensible_heat_leaf_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  sensible_heat_grd_bar_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  latent_heat_grd_veg_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  latent_heat_grd_bare_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  ground_heat_veg_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  ground_heat_bare_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  lw_absorbed_grd_veg_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  lw_absorbed_leaf_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  lw_absorbed_grd_bare_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  latent_heat_trans_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  latent_heat_leaf_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  ch_leaf_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  ch_below_canopy_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  ch_vegetated_2m_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  ch_bare_ground_2m_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  precip_adv_heat_veg_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  precip_adv_heat_grd_v_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  precip_adv_heat_grd_b_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  spec_humid_sfc_veg_ccpp,
real(kind=kind_phys), dimension(:), intent(out), optional  spec_humid_sfc_bare_ccpp 
)

Argument Table

NoahMP Driver General Algorithm

  • Initialize CCPP error handling variables.
  • Set a flag to only continue with each grid cell if the fraction of land is non-zero.
  • This driver may be called as part of an iterative loop. If called as the first "guess" run, save land-related prognostic fields to restore.
  • Initialize output variables to zero and prepare variables for input into the NoahMP LSM.
  • Call transfer_mp_parameters() to fill a derived datatype for input into the NoahMP LSM.
  • Call noahmp_options() to set module-level scheme options for the NoahMP LSM.
  • If the vegetation type is ice for the grid cell, call noahmp_options_glacier() to set module-level scheme options for NoahMP Glacier and call noahmp_glacier().
  • For other vegetation types, call noahmp_sflx(), the entry point of the NoahMP LSM.
  • Set output variables from the output of noahmp_glacier() and/or noahmp_sflx().
  • Call penman() to calculate potential evaporation.
  • Calculate the surface specific humidity and convert surface sensible and latent heat fluxes in W m-2 from their kinematic values.
  • If a "guess" run, restore the land-related prognostic fields.

References penman(), and transfer_mp_parameters().

Here is the call graph for this function: