← Back to Documentation Home
CCPP SciDoc v8.0.0  v8.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
lsm_ruc Module Reference

This module contain the RUC land surface model driver. More...

Functions/Subroutines

subroutine, public lsm_ruc_init (me, master, isot, ivegsrc, nlunit, lsm_cold_start, flag_init, con_fvirt, con_rd, im, lsoil_ruc, lsoil, kice, nlev, lsm_ruc, lsm, slmsk, stype, vtype, landfrac, q1, prsl1, tsfc_lnd, tsfc_ice, tsfc_wat, tg3, smc, slc, stc, fice, min_seaice, sncovr_lnd, sncovr_ice, snoalb, facsf, facwf, alvsf, alvwf, alnsf, alnwf, sfcqv_lnd, sfcqv_ice, sfalb_lnd_bck, semisbase, semis_lnd, semis_ice, albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, albdvis_ice, albdnir_ice, albivis_ice, albinir_ice, zs, sh2o, smfrkeep, tslb, smois, wetness, tsice, pores, resid, errmsg, errflg)
 This subroutine calls set_soilveg_ruc() to specify vegetation and soil parameters for a given soil and land-use classification.
 
subroutine, public lsm_ruc_final (errmsg, errflg)
 
subroutine, public lsm_ruc_run (iter, me, master, delt, kdt, im, nlev, lsm_ruc, lsm, imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_nssl, do_mynnsfclay, use_cdeps_data, mask_dat, exticeden, lsoil_ruc, lsoil, mosaic_lu, mosaic_soil, isncond_opt, isncovr_opt, nlcat, nscat, rdlai, xlat_d, xlon_d, oro, sigma, zs, t1, q1, qc, stype, vtype, vegtype_frac, soiltype_frac, sigmaf, laixy, dlwflx, dswsfc, tg3, coszen, land, icy, use_lake, rainnc, rainc, ice, snow, graupel, prsl1, zf, wind, shdmin, shdmax, srflag, sfalb_lnd_bck, snoalb, isot, ivegsrc, fice, smcwlt2, smcref2, min_lakeice, min_seaice, oceanfrac, rhonewsn1, con_cp, con_rd, con_rv, con_g, con_pi, con_hvap, con_hfus, con_fvirt, stbolt, rhoh2o, semisbase, semis_lnd, semis_ice, sfalb_lnd, sfalb_ice, sncovr1_lnd, weasd_lnd, snwdph_lnd, tskin_lnd, sncovr1_ice, weasd_ice, snwdph_ice, tskin_ice, smois, tsice, tslb, sh2o, keepfr, smfrkeep, canopy, trans, tsurf_lnd, tsnow_lnd, z0rl_lnd, sfcqc_lnd, sfcqv_lnd, qsurf_lnd, gflux_lnd, evap_lnd, hflx_lnd, runof, runoff, srunoff, drain, cm_lnd, ch_lnd, evbs, evcw, stm, wetness, snowfallac_lnd, acsnow_lnd, snowmt_lnd, snohf, albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, sfcqc_ice, sfcqv_ice, tsurf_ice, tsnow_ice, z0rl_ice, qsurf_ice, gflux_ice, evap_ice, ep1d_ice, hflx_ice, cm_ice, ch_ice, snowfallac_ice, acsnow_ice, snowmt_ice, albdvis_ice, albdnir_ice, albivis_ice, albinir_ice, add_fire_heat_flux, fire_heat_flux_out, frac_grid_burned_out, rhosnf, sbsno, cmm_lnd, chh_lnd, cmm_ice, chh_ice, flag_iter, flag_guess, flag_init, lsm_cold_start, flag_cice, frac_grid, errmsg, errflg)
 

Detailed Description

This module contain the RUC land surface model driver.

Function/Subroutine Documentation

◆ lsm_ruc_final()

subroutine, public lsm_ruc::lsm_ruc_final ( character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

Argument Table

Definition at line 243 of file lsm_ruc.F90.

◆ lsm_ruc_init()

subroutine, public lsm_ruc::lsm_ruc_init ( integer, intent(in)  me,
integer, intent(in)  master,
integer, intent(in)  isot,
integer, intent(in)  ivegsrc,
integer, intent(in)  nlunit,
logical, intent(in)  lsm_cold_start,
logical, intent(in)  flag_init,
real (kind_phys), intent(in)  con_fvirt,
real (kind_phys), intent(in)  con_rd,
integer, intent(in)  im,
integer, intent(in)  lsoil_ruc,
integer, intent(in)  lsoil,
integer, intent(in)  kice,
integer, intent(in)  nlev,
integer, intent(in)  lsm_ruc,
integer, intent(in)  lsm,
real (kind_phys), dimension(:), intent(in)  slmsk,
integer, dimension(:), intent(in)  stype,
integer, dimension(:), intent(in)  vtype,
real (kind_phys), dimension(:), intent(in)  landfrac,
real (kind_phys), dimension(:), intent(in)  q1,
real (kind_phys), dimension(:), intent(in)  prsl1,
real (kind_phys), dimension(:), intent(in)  tsfc_lnd,
real (kind_phys), dimension(:), intent(in)  tsfc_ice,
real (kind_phys), dimension(:), intent(in)  tsfc_wat,
real (kind_phys), dimension(:), intent(in)  tg3,
real (kind_phys), dimension(:,:), intent(in)  smc,
real (kind_phys), dimension(:,:), intent(in)  slc,
real (kind_phys), dimension(:,:), intent(in)  stc,
real (kind_phys), dimension(:), intent(in)  fice,
real (kind_phys), intent(in)  min_seaice,
real (kind_phys), dimension(:), intent(in)  sncovr_lnd,
real (kind_phys), dimension(:), intent(in)  sncovr_ice,
real (kind_phys), dimension(:), intent(in)  snoalb,
real (kind_phys), dimension(:), intent(in)  facsf,
real (kind_phys), dimension(:), intent(in)  facwf,
real (kind_phys), dimension(:), intent(in)  alvsf,
real (kind_phys), dimension(:), intent(in)  alvwf,
real (kind_phys), dimension(:), intent(in)  alnsf,
real (kind_phys), dimension(:), intent(in)  alnwf,
real (kind_phys), dimension(:), intent(inout)  sfcqv_lnd,
real (kind_phys), dimension(:), intent(inout)  sfcqv_ice,
real (kind_phys), dimension(:), intent(inout)  sfalb_lnd_bck,
real (kind_phys), dimension(:), intent(out)  semisbase,
real (kind_phys), dimension(:), intent(inout)  semis_lnd,
real (kind_phys), dimension(:), intent(inout)  semis_ice,
real (kind_phys), dimension(:), intent(inout)  albdvis_lnd,
real (kind_phys), dimension(:), intent(inout)  albdnir_lnd,
real (kind_phys), dimension(:), intent(inout)  albivis_lnd,
real (kind_phys), dimension(:), intent(inout)  albinir_lnd,
real (kind_phys), dimension(:), intent(inout)  albdvis_ice,
real (kind_phys), dimension(:), intent(inout)  albdnir_ice,
real (kind_phys), dimension(:), intent(inout)  albivis_ice,
real (kind_phys), dimension(:), intent(inout)  albinir_ice,
real (kind_phys), dimension(:), intent(out)  zs,
real (kind_phys), dimension(:,:), intent(inout)  sh2o,
real (kind_phys), dimension(:,:), intent(inout)  smfrkeep,
real (kind_phys), dimension(:,:), intent(inout)  tslb,
real (kind_phys), dimension(:,:), intent(inout)  smois,
real (kind_phys), dimension(:), intent(inout)  wetness,
real (kind_phys), dimension(:,:), intent(inout)  tsice,
real (kind_phys), dimension(:), intent(out)  pores,
real (kind_phys), dimension(:), intent(out)  resid,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

This subroutine calls set_soilveg_ruc() to specify vegetation and soil parameters for a given soil and land-use classification.

Argument Table

  • Call rucinit() to initialize soil/ice/water variables

Definition at line 36 of file lsm_ruc.F90.

References module_soil_pre::init_soil_depth_3(), module_sf_ruclsm::rslf(), and set_soilveg_ruc_mod::set_soilveg_ruc().

Here is the call graph for this function:

◆ lsm_ruc_run()

subroutine, public lsm_ruc::lsm_ruc_run ( integer, intent(in)  iter,
integer, intent(in)  me,
integer, intent(in)  master,
real (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,
logical, intent(in)  use_cdeps_data,
real (kind_phys), dimension(:), intent(in), optional  mask_dat,
logical, intent(in)  exticeden,
integer, intent(in)  lsoil_ruc,
integer, intent(in)  lsoil,
integer, intent(in)  mosaic_lu,
integer, intent(in)  mosaic_soil,
integer, intent(in)  isncond_opt,
integer, intent(in)  isncovr_opt,
integer, intent(in)  nlcat,
integer, intent(in)  nscat,
logical, intent(in)  rdlai,
real (kind_phys), dimension(:), intent(in)  xlat_d,
real (kind_phys), dimension(:), intent(in)  xlon_d,
real (kind_phys), dimension(:), intent(in)  oro,
real (kind_phys), dimension(:), intent(in)  sigma,
real (kind_phys), dimension(:), intent(in)  zs,
real (kind_phys), dimension(:), intent(in)  t1,
real (kind_phys), dimension(:), intent(in)  q1,
real (kind_phys), dimension(:), intent(in)  qc,
integer, dimension(:), intent(inout)  stype,
integer, dimension(:), intent(in)  vtype,
real (kind_phys), dimension(:,:), intent(in)  vegtype_frac,
real (kind_phys), dimension(:,:), intent(in)  soiltype_frac,
real (kind_phys), dimension(:), intent(in)  sigmaf,
real (kind_phys), dimension(:), intent(inout)  laixy,
real (kind_phys), dimension(:), intent(in)  dlwflx,
real (kind_phys), dimension(:), intent(in)  dswsfc,
real (kind_phys), dimension(:), intent(in)  tg3,
real (kind_phys), dimension(:), intent(in)  coszen,
logical, dimension(:), intent(in)  land,
logical, dimension(:), intent(in)  icy,
integer, dimension(:), intent(in)  use_lake,
real (kind_phys), dimension(:), intent(in)  rainnc,
real (kind_phys), dimension(:), intent(in)  rainc,
real (kind_phys), dimension(:), intent(in)  ice,
real (kind_phys), dimension(:), intent(in)  snow,
real (kind_phys), dimension(:), intent(in)  graupel,
real (kind_phys), dimension(:), intent(in)  prsl1,
real (kind_phys), dimension(:), intent(in)  zf,
real (kind_phys), dimension(:), intent(in)  wind,
real (kind_phys), dimension(:), intent(in)  shdmin,
real (kind_phys), dimension(:), intent(in)  shdmax,
real (kind_phys), dimension(:), intent(in)  srflag,
real (kind_phys), dimension(:), intent(in)  sfalb_lnd_bck,
real (kind_phys), dimension(:), intent(in)  snoalb,
integer, intent(in)  isot,
integer, intent(in)  ivegsrc,
real (kind_phys), dimension(:), intent(inout)  fice,
real (kind_phys), dimension(:), intent(inout)  smcwlt2,
real (kind_phys), dimension(:), intent(inout)  smcref2,
real (kind_phys), intent(in)  min_lakeice,
real (kind_phys), intent(in)  min_seaice,
real (kind_phys), dimension(:), intent(in)  oceanfrac,
real (kind_phys), dimension(:), intent(in)  rhonewsn1,
real (kind_phys), intent(in)  con_cp,
real (kind_phys), intent(in)  con_rd,
real (kind_phys), intent(in)  con_rv,
real (kind_phys), intent(in)  con_g,
real (kind_phys), intent(in)  con_pi,
real (kind_phys), intent(in)  con_hvap,
real (kind_phys), intent(in)  con_hfus,
real (kind_phys), intent(in)  con_fvirt,
real (kind_phys), intent(in)  stbolt,
real (kind_phys), intent(in)  rhoh2o,
real (kind_phys), dimension(:), intent(inout)  semisbase,
real (kind_phys), dimension(:), intent(inout)  semis_lnd,
real (kind_phys), dimension(:), intent(inout)  semis_ice,
real (kind_phys), dimension(:), intent(inout)  sfalb_lnd,
real (kind_phys), dimension(:), intent(inout)  sfalb_ice,
real (kind_phys), dimension(:), intent(inout)  sncovr1_lnd,
real (kind_phys), dimension(:), intent(inout)  weasd_lnd,
real (kind_phys), dimension(:), intent(inout)  snwdph_lnd,
real (kind_phys), dimension(:), intent(inout)  tskin_lnd,
real (kind_phys), dimension(:), intent(inout)  sncovr1_ice,
real (kind_phys), dimension(:), intent(inout)  weasd_ice,
real (kind_phys), dimension(:), intent(inout)  snwdph_ice,
real (kind_phys), dimension(:), intent(inout)  tskin_ice,
real (kind_phys), dimension(:,:), intent(inout)  smois,
real (kind_phys), dimension(:,:), intent(inout)  tsice,
real (kind_phys), dimension(:,:), intent(inout)  tslb,
real (kind_phys), dimension(:,:), intent(inout)  sh2o,
real (kind_phys), dimension(:,:), intent(inout)  keepfr,
real (kind_phys), dimension(:,:), intent(inout)  smfrkeep,
real (kind_phys), dimension(:), intent(inout)  canopy,
real (kind_phys), dimension(:), intent(inout)  trans,
real (kind_phys), dimension(:), intent(inout)  tsurf_lnd,
real (kind_phys), dimension(:), intent(inout)  tsnow_lnd,
real (kind_phys), dimension(:), intent(inout)  z0rl_lnd,
real (kind_phys), dimension(:), intent(inout)  sfcqc_lnd,
real (kind_phys), dimension(:), intent(inout)  sfcqv_lnd,
real (kind_phys), dimension(:), intent(inout)  qsurf_lnd,
real (kind_phys), dimension(:), intent(inout)  gflux_lnd,
real (kind_phys), dimension(:), intent(inout)  evap_lnd,
real (kind_phys), dimension(:), intent(inout)  hflx_lnd,
real (kind_phys), dimension(:), intent(inout)  runof,
real (kind_phys), dimension(:), intent(inout)  runoff,
real (kind_phys), dimension(:), intent(inout)  srunoff,
real (kind_phys), dimension(:), intent(inout)  drain,
real (kind_phys), dimension(:), intent(in)  cm_lnd,
real (kind_phys), dimension(:), intent(in)  ch_lnd,
real (kind_phys), dimension(:), intent(inout)  evbs,
real (kind_phys), dimension(:), intent(inout)  evcw,
real (kind_phys), dimension(:), intent(inout)  stm,
real (kind_phys), dimension(:), intent(inout)  wetness,
real (kind_phys), dimension(:), intent(inout)  snowfallac_lnd,
real (kind_phys), dimension(:), intent(inout)  acsnow_lnd,
real (kind_phys), dimension(:), intent(inout)  snowmt_lnd,
real (kind_phys), dimension(:), intent(inout)  snohf,
real (kind_phys), dimension(:), intent(out)  albdvis_lnd,
real (kind_phys), dimension(:), intent(out)  albdnir_lnd,
real (kind_phys), dimension(:), intent(out)  albivis_lnd,
real (kind_phys), dimension(:), intent(out)  albinir_lnd,
real (kind_phys), dimension(:), intent(inout)  sfcqc_ice,
real (kind_phys), dimension(:), intent(inout)  sfcqv_ice,
real (kind_phys), dimension(:), intent(inout)  tsurf_ice,
real (kind_phys), dimension(:), intent(inout)  tsnow_ice,
real (kind_phys), dimension(:), intent(inout)  z0rl_ice,
real (kind_phys), dimension(:), intent(inout)  qsurf_ice,
real (kind_phys), dimension(:), intent(inout)  gflux_ice,
real (kind_phys), dimension(:), intent(inout)  evap_ice,
real (kind_phys), dimension(:), intent(inout)  ep1d_ice,
real (kind_phys), dimension(:), intent(inout)  hflx_ice,
real (kind_phys), dimension(:), intent(in)  cm_ice,
real (kind_phys), dimension(:), intent(in)  ch_ice,
real (kind_phys), dimension(:), intent(inout)  snowfallac_ice,
real (kind_phys), dimension(:), intent(inout)  acsnow_ice,
real (kind_phys), dimension(:), intent(inout)  snowmt_ice,
real (kind_phys), dimension(:), intent(out)  albdvis_ice,
real (kind_phys), dimension(:), intent(out)  albdnir_ice,
real (kind_phys), dimension(:), intent(out)  albivis_ice,
real (kind_phys), dimension(:), intent(out)  albinir_ice,
logical, intent(in)  add_fire_heat_flux,
real (kind_phys), dimension(:), intent(in)  fire_heat_flux_out,
real (kind_phys), dimension(:), intent(in)  frac_grid_burned_out,
real (kind_phys), dimension(:), intent(inout)  rhosnf,
real (kind_phys), dimension(:), intent(inout)  sbsno,
real (kind_phys), dimension(:), intent(inout)  cmm_lnd,
real (kind_phys), dimension(:), intent(inout)  chh_lnd,
real (kind_phys), dimension(:), intent(inout)  cmm_ice,
real (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 - water vapor mix. ratio at height zf above ground ( \(kg kg^{-1}\))
    qcatm - cloud water mixing ratio at height zf above ground ( \(kg kg^{-1}\))
    rho2 - air density at height zf above ground (( \(kg m^{-3}\)))
  • 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

  • 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}\))

– sanity checks on sneqv and snowh

  • Restore land-related prognostic fields for guess run.

Definition at line 329 of file lsm_ruc.F90.

References module_soil_pre::init_soil_3_real(), module_sf_ruclsm::lsmruc(), module_sf_ruclsm::rslf(), and module_sf_ruclsm::ruclsminit().

Here is the call graph for this function: