CCPP SciDoc  v6.0.0
Common Community Physics Package Developed at DTC

◆ lsm_ruc_run()

subroutine, public lsm_ruc::lsm_ruc_run ( integer, intent(in)  iter,
integer, intent(in)  me,
integer, intent(in)  master,
real (kind=kind_phys), intent(in)  delt,
integer, intent(in)  kdt,
integer, intent(in)  im,
integer, intent(in)  nlev,
integer, intent(in)  lsm_ruc,
integer, intent(in)  lsm,
integer, intent(in)  imp_physics,
integer, intent(in)  imp_physics_gfdl,
integer, intent(in)  imp_physics_thompson,
integer, intent(in)  imp_physics_nssl,
logical, intent(in)  do_mynnsfclay,
integer, intent(in)  lsoil_ruc,
integer, intent(in)  lsoil,
logical, intent(in)  rdlai,
real (kind=kind_phys), dimension(:), intent(in)  xlat_d,
real (kind=kind_phys), dimension(:), intent(in)  xlon_d,
real (kind=kind_phys), dimension(:), intent(in)  zs,
real (kind=kind_phys), dimension(:), intent(in)  t1,
real (kind=kind_phys), dimension(:), intent(in)  q1,
real (kind=kind_phys), dimension(:), intent(in)  qc,
integer, dimension(:), intent(inout)  stype,
integer, dimension(:), intent(in)  vtype,
real (kind=kind_phys), dimension(:), intent(in)  sigmaf,
real (kind=kind_phys), dimension(:), intent(in)  laixy,
real (kind=kind_phys), dimension(:), intent(in)  dlwflx,
real (kind=kind_phys), dimension(:), intent(in)  dswsfc,
real (kind=kind_phys), dimension(:), intent(in)  tg3,
real (kind=kind_phys), dimension(:), intent(in)  coszen,
logical, dimension(:), intent(in)  land,
logical, dimension(:), intent(in)  icy,
logical, dimension(:), intent(in)  use_lake,
real (kind=kind_phys), dimension(:), intent(in)  rainnc,
real (kind=kind_phys), dimension(:), intent(in)  rainc,
real (kind=kind_phys), dimension(:), intent(in)  ice,
real (kind=kind_phys), dimension(:), intent(in)  snow,
real (kind=kind_phys), dimension(:), intent(in)  graupel,
real (kind=kind_phys), dimension(:), intent(in)  prsl1,
real (kind=kind_phys), dimension(:), intent(in)  zf,
real (kind=kind_phys), dimension(:), intent(in)  wind,
real (kind=kind_phys), dimension(:), intent(in)  shdmin,
real (kind=kind_phys), dimension(:), intent(in)  shdmax,
real (kind=kind_phys), dimension(:), intent(in)  srflag,
real (kind=kind_phys), dimension(:), intent(in)  sfalb_lnd_bck,
real (kind=kind_phys), dimension(:), intent(in)  snoalb,
integer, intent(in)  isot,
integer, intent(in)  ivegsrc,
real (kind=kind_phys), dimension(:), intent(inout)  fice,
real (kind=kind_phys), dimension(:), intent(inout)  smcwlt2,
real (kind=kind_phys), dimension(:), intent(inout)  smcref2,
real (kind=kind_phys), intent(in)  min_lakeice,
real (kind=kind_phys), intent(in)  min_seaice,
real (kind=kind_phys), dimension(:), intent(in)  oceanfrac,
real (kind=kind_phys), intent(in)  con_cp,
real (kind=kind_phys), intent(in)  con_rd,
real (kind=kind_phys), intent(in)  con_rv,
real (kind=kind_phys), intent(in)  con_g,
real (kind=kind_phys), intent(in)  con_pi,
real (kind=kind_phys), intent(in)  con_hvap,
real (kind=kind_phys), intent(in)  con_fvirt,
real (kind=kind_phys), dimension(:), intent(inout)  semisbase,
real (kind=kind_phys), dimension(:), intent(inout)  semis_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  semis_ice,
real (kind=kind_phys), dimension(:), intent(inout)  sfalb_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  sfalb_ice,
real (kind=kind_phys), dimension(:), intent(inout)  sncovr1_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  weasd_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  snwdph_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  tskin_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  sncovr1_ice,
real (kind=kind_phys), dimension(:), intent(inout)  weasd_ice,
real (kind=kind_phys), dimension(:), intent(inout)  snwdph_ice,
real (kind=kind_phys), dimension(:), intent(inout)  tskin_ice,
real (kind=kind_phys), dimension(:,:), intent(inout)  smois,
real (kind=kind_phys), dimension(:,:), intent(inout)  tsice,
real (kind=kind_phys), dimension(:,:), intent(inout)  tslb,
real (kind=kind_phys), dimension(:,:), intent(inout)  sh2o,
real (kind=kind_phys), dimension(:,:), intent(inout)  keepfr,
real (kind=kind_phys), dimension(:,:), intent(inout)  smfrkeep,
real (kind=kind_phys), dimension(:), intent(inout)  canopy,
real (kind=kind_phys), dimension(:), intent(inout)  trans,
real (kind=kind_phys), dimension(:), intent(inout)  tsurf_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  tsnow_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  z0rl_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  sfcqc_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  sfcqv_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  qsurf_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  gflux_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  evap_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  hflx_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  runof,
real (kind=kind_phys), dimension(:), intent(inout)  runoff,
real (kind=kind_phys), dimension(:), intent(inout)  srunoff,
real (kind=kind_phys), dimension(:), intent(inout)  drain,
real (kind=kind_phys), dimension(:), intent(in)  cm_lnd,
real (kind=kind_phys), dimension(:), intent(in)  ch_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  evbs,
real (kind=kind_phys), dimension(:), intent(inout)  evcw,
real (kind=kind_phys), dimension(:), intent(inout)  stm,
real (kind=kind_phys), dimension(:), intent(inout)  wetness,
real (kind=kind_phys), dimension(:), intent(inout)  snowfallac_lnd,
real (kind=kind_phys), dimension(:), intent(out)  albdvis_lnd,
real (kind=kind_phys), dimension(:), intent(out)  albdnir_lnd,
real (kind=kind_phys), dimension(:), intent(out)  albivis_lnd,
real (kind=kind_phys), dimension(:), intent(out)  albinir_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  sfcqc_ice,
real (kind=kind_phys), dimension(:), intent(inout)  sfcqv_ice,
real (kind=kind_phys), dimension(:), intent(inout)  tsurf_ice,
real (kind=kind_phys), dimension(:), intent(inout)  tsnow_ice,
real (kind=kind_phys), dimension(:), intent(inout)  z0rl_ice,
real (kind=kind_phys), dimension(:), intent(inout)  qsurf_ice,
real (kind=kind_phys), dimension(:), intent(inout)  gflux_ice,
real (kind=kind_phys), dimension(:), intent(inout)  evap_ice,
real (kind=kind_phys), dimension(:), intent(inout)  ep1d_ice,
real (kind=kind_phys), dimension(:), intent(inout)  hflx_ice,
real (kind=kind_phys), dimension(:), intent(in)  cm_ice,
real (kind=kind_phys), dimension(:), intent(in)  ch_ice,
real (kind=kind_phys), dimension(:), intent(inout)  snowfallac_ice,
real (kind=kind_phys), dimension(:), intent(out)  albdvis_ice,
real (kind=kind_phys), dimension(:), intent(out)  albdnir_ice,
real (kind=kind_phys), dimension(:), intent(out)  albivis_ice,
real (kind=kind_phys), dimension(:), intent(out)  albinir_ice,
real (kind=kind_phys), dimension(:), intent(inout)  rhosnf,
real (kind=kind_phys), dimension(:), intent(inout)  sbsno,
real (kind=kind_phys), dimension(:), intent(inout)  cmm_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  chh_lnd,
real (kind=kind_phys), dimension(:), intent(inout)  cmm_ice,
real (kind=kind_phys), dimension(:), intent(inout)  chh_ice,
logical, dimension(:), intent(in)  flag_iter,
logical, dimension(:), intent(in)  flag_guess,
logical, intent(in)  flag_init,
logical, intent(in)  lsm_cold_start,
logical, dimension(:), intent(in)  flag_cice,
logical, intent(in)  frac_grid,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)
  • Set flag for land and ice points.

– number of soil categories

– set parameters for IGBP land-use data

  • Save land-related prognostic fields for guess run.
  • Prepare variables to run RUC LSM:
    • 1. configuration information (c):
      ffrozp - fraction of frozen precipitation
      frpcpn - .true. if mixed phase precipitation available
      1:im - horizontal_loop_extent
      fice - fraction of sea-ice in the grid cell
      delt - timestep (sec) (dt should not exceed 3600 secs)
      conflx2 - height ( \(m\)) above ground of atmospheric forcing variables
      lsoil_ruc - number of soil layers (= 6 or 9)
      zs - the depth of each soil level ( \(m\))
  • 2. forcing data (f):
    sfcprs - pressure at height zf above ground (pascals)
    sfctmp - air temperature ( \(K\)) at height zf above ground
    q2 - pressure at height zf above ground (pascals)
    qcatm - cloud water mising ration at height zf above ground ( \(kg !kg^{-1}\))
    rho2 - air density at height zf above ground (pascals)
  • 3. canopy/soil characteristics (s):
    vtype - vegetation type (integer index)
    stype - soil type (integer index)
    sfcems - surface emmisivity -> sfcemis
    sfalb_lnd_bck - backround snow-free surface albedo (fraction) -> albbck_lnd
    snoalb - upper bound on maximum albedo over deep snow -> snoalb1d_lnd
  • Prepare land/ice/water masks for RUC LSM
  • 4. history (state) variables (h):
    cmc - canopy moisture content ( \(mm\))
    soilt = tskin - ground/canopy/snowpack effective skin temperature ( \(K\))
    soilt1 = snowpack temperature at the bottom of the 1st layer ( \(K\))
    tslb(lsoil_ruc) - soil temp ( \(K\)) -> stsoil
    smois(lsoil_ruc) - total soil moisture content (volumetric fraction) -> smsoil
    sh2o(lsoil_ruc) - unfrozen soil moisture content (volumetric fraction) -> slsoil
    smfrsoil(lsoil_ruc) - frozen soil moisture content (volumetric fraction) -> smfrsoil
    keepfrflag(lsoil_ruc) - flag for frozen soil physics: 0. or 1.
    wet - soil moisture availability at surface
    snowh_lnd - actual snow depth ( \(m\))
    sneqv_lnd - liquid water-equivalent snow depth ( \(m\))
    sncovr_lnd - fraction of snow in the grid cell
    chh_lnd - surface exchange coefficient for heat ( \(m s^{-1}\)) -> chs
    z0_lnd - surface roughness ( \(m\)) -> zorl( \(cm\))
    qsfc_lnd - specific humidity at surface ( \(kg kg^{-1}\))
    qvg_lnd - water vapor mixing ratio at surface ( \(kg kg^{-1}\))
    qsg_lnd - saturated water vapor mixing ratio at surface ( \(kg kg^{-1}\))
    qcg_lnd - cloud water mixing ratio at surface ( \(kg kg^{-1}\))
    solnet_lnd - net sw radiation flux (dn-up) ( \(W m^{-2}\))

– sanity checks on sneqv and snowh

  • Call RUC LSM lsmruc() for land.
  • RUC LSM: prepare variables for return to parent model and unit conversion.
    • 6. output (o):
      lh - actual latent heat flux ( \(W m^{-2}\): positive, if upward from sfc)
      hfx - sensible heat flux ( \(W m^{-2}\): positive, if upward from sfc)
      ssoil - soil heat flux ( \(W m^{-2}\): negative if downward from surface)
      runoff1 - surface runoff ( \(m s^{-1}\)), not infiltrating the surface
      runoff2 - subsurface runoff ( \(m s^{-1}\)), drainage out bottom
      snoh - phase-change heat flux from snowmelt (w m-2)
      lh - actual latent heat flux ( \(W m^{-2}\): positive, if upward from sfc)
      hfx - sensible heat flux ( \(W m^{-2}\): positive, if upward from sfc)
      ssoil - soil heat flux ( \(W m^{-2}\): negative if downward from surface)
      runoff1 - surface runoff ( \(m s^{-1}\)), not infiltrating the surface
      runoff2 - subsurface runoff ( \(m s^{-1}\)), drainage out bottom
      snoh - phase-change heat flux from snowmelt (w m-2)

– sanity checks on sneqv and snowh

  • Call RUC LSM lsmruc() for ice.
  • Restore land-related prognostic fields for guess run.

References module_sf_ruclsm::lsmruc(), module_sf_ruclsm::rslf(), and module_sf_ruclsm::sfctmp().

Here is the call graph for this function: