CCPP Scientific Documentation
v5.0.0
subroutine, public lsm_ruc::lsm_ruc_run ( integer, intent(in)  iter,
integer, intent(in)  me,
integer, intent(in)  master,
integer, intent(in)  kdt,
integer, intent(in)  im,
integer, intent(in)  nlev,
integer, intent(in)  lsoil_ruc,
integer, intent(in)  lsoil,
real (kind=kind_phys), dimension(lsoil_ruc), intent(inout)  zs,
real (kind=kind_phys), dimension(im), intent(in)  t1,
real (kind=kind_phys), dimension(im), intent(in)  q1,
real (kind=kind_phys), dimension(im), intent(in)  qc,
integer, dimension(im), intent(inout)  soiltyp,
integer, dimension(im), intent(inout)  vegtype,
real (kind=kind_phys), dimension(im), intent(in)  sigmaf,
real (kind=kind_phys), dimension(:), intent(in)  laixy,
real (kind=kind_phys), dimension(im), intent(in)  sfcemis,
real (kind=kind_phys), dimension(im), intent(in)  dlwflx,
real (kind=kind_phys), dimension(im), intent(in)  dswsfc,
real (kind=kind_phys), dimension(im), intent(in)  snet,
real (kind=kind_phys), intent(in)  delt,
real (kind=kind_phys), dimension(im), intent(in)  tg3,
real (kind=kind_phys), dimension(im), intent(in)  cm,
real (kind=kind_phys), dimension(im), intent(in)  ch,
real (kind=kind_phys), dimension(im), intent(in)  prsl1,
real (kind=kind_phys), dimension(im), intent(in)  zf,
real (kind=kind_phys), dimension(im), intent(in)  wind,
real (kind=kind_phys), dimension(im), intent(in)  shdmin,
real (kind=kind_phys), dimension(im), intent(in)  shdmax,
real (kind=kind_phys), dimension(im), intent(in)  alvwf,
real (kind=kind_phys), dimension(im), intent(in)  alnwf,
real (kind=kind_phys), dimension(im), intent(in)  snoalb,
real (kind=kind_phys), dimension(im), intent(inout)  sfalb,
logical, dimension(im), intent(in)  flag_iter,
logical, dimension(im), intent(in)  flag_guess,
integer, intent(in)  isot,
integer, intent(in)  ivegsrc,
real (kind=kind_phys), dimension(im), intent(inout)  fice,
real (kind=kind_phys), dimension(im,lsoil), intent(inout)  smc,
real (kind=kind_phys), dimension(im,lsoil), intent(inout)  stc,
real (kind=kind_phys), dimension(im,lsoil), intent(inout)  slc,
integer, intent(in)  lsm_ruc,
integer, intent(in)  lsm,
logical, dimension(im), intent(in)  land,
integer, dimension(im), intent(in)  islimsk,
logical, intent(in)  rdlai,
integer, intent(in)  imp_physics,
integer, intent(in)  imp_physics_gfdl,
integer, intent(in)  imp_physics_thompson,
real (kind=kind_phys), dimension(im), intent(inout)  smcwlt2,
real (kind=kind_phys), dimension(im), intent(inout)  smcref2,
logical, intent(in)  do_mynnsfclay,
real (kind=kind_phys), intent(in)  con_cp,
real (kind=kind_phys), intent(in)  con_rv,
real (kind=kind_phys), intent(in)  con_rd,
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(im), intent(inout)  weasd,
real (kind=kind_phys), dimension(im), intent(inout)  snwdph,
real (kind=kind_phys), dimension(im), intent(inout)  tskin,
real (kind=kind_phys), dimension(im), intent(inout)  tskin_wat,
real (kind=kind_phys), dimension(im), intent(in)  rainnc,
real (kind=kind_phys), dimension(im), intent(in)  rainc,
real (kind=kind_phys), dimension(im), intent(in)  ice,
real (kind=kind_phys), dimension(im), intent(in)  snow,
real (kind=kind_phys), dimension(im), intent(in)  graupel,
real (kind=kind_phys), dimension(im), intent(inout)  srflag,
real (kind=kind_phys), dimension(im,lsoil_ruc), intent(inout)  smois,
real (kind=kind_phys), dimension(im,lsoil_ruc), intent(inout)  tslb,
real (kind=kind_phys), dimension(im,lsoil_ruc), intent(inout)  sh2o,
real (kind=kind_phys), dimension(im,lsoil_ruc), intent(inout)  keepfr,
real (kind=kind_phys), dimension(im,lsoil_ruc), intent(inout)  smfrkeep,
real (kind=kind_phys), dimension(im), intent(inout)  canopy,
real (kind=kind_phys), dimension(im), intent(inout)  trans,
real (kind=kind_phys), dimension(im), intent(inout)  tsurf,
real (kind=kind_phys), dimension(im), intent(inout)  tsnow,
real (kind=kind_phys), dimension(im), intent(inout)  zorl,
real (kind=kind_phys), dimension(im), intent(inout)  sfcqc,
real (kind=kind_phys), dimension(im), intent(inout)  sfcdew,
real (kind=kind_phys), dimension(im), intent(inout)  tice,
real (kind=kind_phys), dimension(im), intent(inout)  sfcqv,
real (kind=kind_phys), dimension(im), intent(inout)  sncovr1,
real (kind=kind_phys), dimension(im), intent(inout)  qsurf,
real (kind=kind_phys), dimension(im), intent(inout)  gflux,
real (kind=kind_phys), dimension(im), intent(inout)  drain,
real (kind=kind_phys), dimension(im), intent(inout)  evap,
real (kind=kind_phys), dimension(im), intent(inout)  hflx,
real (kind=kind_phys), dimension(im), intent(inout)  rhosnf,
real (kind=kind_phys), dimension(im), intent(inout)  runof,
real (kind=kind_phys), dimension(im), intent(inout)  runoff,
real (kind=kind_phys), dimension(im), intent(inout)  srunoff,
real (kind=kind_phys), dimension(im), intent(inout)  chh,
real (kind=kind_phys), dimension(im), intent(inout)  cmm,
real (kind=kind_phys), dimension(im), intent(inout)  evbs,
real (kind=kind_phys), dimension(im), intent(inout)  evcw,
real (kind=kind_phys), dimension(im), intent(inout)  sbsno,
real (kind=kind_phys), dimension(im), intent(inout)  stm,
real (kind=kind_phys), dimension(im), intent(inout)  wetness,
real (kind=kind_phys), dimension(im), intent(inout)  acsnow,
real (kind=kind_phys), dimension(im), intent(inout)  snowfallac,
logical, intent(in)  flag_init,
logical, intent(in)  flag_restart,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)
  • Call rucinit() at the first time step and the first interation for RUC initialization,then overwrite Noah soil fields with initialized RUC soil fields for output.
  • Set parameters for IGBP land-use data.
  • Set flag for land and ice points.
  • 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):
      vegtyp - vegetation type (integer index) -> vtype
      soiltyp - soil type (integer index) -> stype
      shdfac - areal fractional coverage of green vegetation (0.0-1.0)
      shdmin - minimum areal fractional coverage of green vegetation -> shdmin1d
      shdmax - maximum areal fractional coverage of green vegetation -> shdmax1d
      sfcems - surface emmisivity -> sfcemis
      0.5*(alvwf + alnwf) - backround snow-free surface albedo (fraction) -> albbck
      snoalb - upper bound on maximum albedo over deep snow -> snoalb1d
      sfalb - surface albedo including snow effect (unitless fraction) -> alb
      tbot - bottom soil temperature (local yearly-mean sfc air temp)
  • Prepare land/ice/water masks for RUC LSM
  • for land only
    • 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 - actual snow depth ( \(m\))
      sneqv - liquid water-equivalent snow depth ( \(m\))
      sncovr - fraction of snow in the grid cell
      ch - surface exchange coefficient for heat ( \(m s^{-1}\)) -> chs
      z0 - surface roughness ( \(m\)) -> zorl( \(cm\))
  • Call RUC LSM lsmruc().
  • 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)
  • Restore land-related prognostic fields for guess run.

References module_sf_ruclsm::lsmruc(), namelist_soilveg_ruc::refsmc, module_sf_ruclsm::rslf(), rucinit(), module_sf_ruclsm::sfctmp(), and namelist_soilveg_ruc::wltsmc.

Here is the call graph for this function: