← Back to Documentation Home
CCPP SciDoc v8.0.0  v8.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
RUC LSM Model

This module contains the RUC Land Surface Model developed by NOAA/GSL (Smirnova et al. 2016 [184]). More...

Modules

module  module_sf_ruclsm
 This module contains the entity of the RUC LSM model, which is a
soil/veg/snowpack and ice/snowpack/land-surface model to update soil moisture, soil temperature, skin temperature, snowpack water content, snowdepth, and all terms of the surface energy balance and surface water balance.
 

Functions/Subroutines

subroutine, public module_soil_pre::init_soil_depth_3 (zs, dzs, num_soil_levels)
 This subroutine defines level depth in soil and thickness of soil layers RUC LSM.
 
subroutine, public module_soil_pre::init_soil_3_real (tsk, tmn, smois, tslb, st_input, sm_input, landmask, sst, zs, dzs, st_levels_input, sm_levels_input, num_soil_layers, num_st_levels_input, num_sm_levels_input, num_st_levels_alloc, num_sm_levels_alloc, flag_sst, flag_soil_layers, flag_soil_levels, ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte)
 This subroutine initializes soil moisture and temperature at RUC vertical levels from the Noah layers. RUC has 3 levels in the top Noah layer, therefore, initialization of soil moisture at these top levels is questionable.
 
subroutine, public set_soilveg_ruc_mod::set_soilveg_ruc (me, isot, ivet, nlunit, errmsg, errflg)
 This subroutine specifies vegetation and soil parameters for a given soil and land-use classification.
 
subroutine, public module_sf_ruclsm::lsmruc (xlat, xlon, dt, init, lsm_cold_start, ktau, iter, nsl, graupelncv, snowncv, rainncv, raincv, zs, rainbl, snow, snowh, snowc, frzfrac, frpcpn, rhosnf, precipfr, exticeden, hgt, stdev, z3d, p8w, t3d, qv3d, qc3d, rho3d, emisbck, glw, gswdn, gsw, emiss, chklowq, chs, flqc, flhc, rhonewsn_ex, mosaic_lu, mosaic_soil, isncond_opt, isncovr_opt, mavail, canwat, vegfra, alb, znt, z0, snoalb, albbck, lai, landusef, nlcat, soilctop, nscat, smcwlt, smcref, qsfc, qsg, qvg, qcg, dew, soilt1, tsnav, tbot, ivgtyp, isltyp, xland, iswater, isice, xice, xice_threshold, cp, rv, rd, g0, pi, lv, stbolt, soilmois, sh2o, smavail, smmax, tso, soilt, edir, ec, ett, sublim, snoh, hfx, qfx, lh, infiltr, runoff1, runoff2, acrunoff, sfcexc, sfcevp, grdflx, snowfallac, acsnow, snom, smfr3d, keepfr3dflag, add_fire_heat_flux, fire_heat_flux, myj, shdmin, shdmax, rdlai2d, ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte, errmsg, errflg)
 The RUN LSM model is described in Smirnova et al.(1997) [182] and Smirnova et al.(2000) [183].
 
subroutine, public module_sf_ruclsm::ruclsminit (debug_print, landfrac, fice, min_seaice, nzs, isltyp, ivgtyp, mavail, sh2o, smfr3d, tslb, smois, ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte)
 This subroutine computes liquid and forezen soil moisture from the total soil moisture, and also computes soil moisture availability in the top soil layer.
 
real(kind_phys) function, public module_sf_ruclsm::rslf (p, t)
 This function calculates the liquid saturation vapor mixing ratio as a function of temperature and pressure (from Thompson scheme).
 

Detailed Description

This module contains the RUC Land Surface Model developed by NOAA/GSL (Smirnova et al. 2016 [184]).

Argument Table

RUC LSM General Algorithm

Function/Subroutine Documentation

◆ init_soil_3_real()

subroutine, public module_soil_pre::init_soil_3_real ( real, dimension(ims:ime,jms:jme), intent(inout)  tsk,
real, dimension(ims:ime,jms:jme), intent(in)  tmn,
real, dimension(ims:ime,num_soil_layers,jms:jme), intent(out)  smois,
real, dimension(ims:ime,num_soil_layers,jms:jme), intent(out)  tslb,
real, dimension(ims:ime,1:num_st_levels_alloc,jms:jme), intent(inout)  st_input,
real, dimension(ims:ime,1:num_sm_levels_alloc,jms:jme), intent(inout)  sm_input,
real, dimension(ims:ime,jms:jme), intent(in)  landmask,
real, dimension(ims:ime,jms:jme), intent(in)  sst,
real, dimension(num_soil_layers)  zs,
real, dimension(num_soil_layers)  dzs,
integer, dimension(1:num_st_levels_input), intent(inout)  st_levels_input,
integer, dimension(1:num_sm_levels_input), intent(inout)  sm_levels_input,
integer, intent(in)  num_soil_layers,
integer, intent(in)  num_st_levels_input,
integer, intent(in)  num_sm_levels_input,
integer, intent(in)  num_st_levels_alloc,
integer, intent(in)  num_sm_levels_alloc,
integer, intent(in)  flag_sst,
integer, intent(in)  flag_soil_layers,
integer, intent(in)  flag_soil_levels,
integer, intent(in)  ids,
integer, intent(in)  ide,
integer, intent(in)  jds,
integer, intent(in)  jde,
integer, intent(in)  kds,
integer, intent(in)  kde,
integer, intent(in)  ims,
integer, intent(in)  ime,
integer, intent(in)  jms,
integer, intent(in)  jme,
integer, intent(in)  kms,
integer, intent(in)  kme,
integer, intent(in)  its,
integer, intent(in)  ite,
integer, intent(in)  jts,
integer, intent(in)  jte,
integer, intent(in)  kts,
integer, intent(in)  kte 
)

This subroutine initializes soil moisture and temperature at RUC vertical levels from the Noah layers. RUC has 3 levels in the top Noah layer, therefore, initialization of soil moisture at these top levels is questionable.

Definition at line 71 of file module_soil_pre.F90.

Referenced by lsm_ruc::lsm_ruc_run().

Here is the caller graph for this function:

◆ init_soil_depth_3()

subroutine, public module_soil_pre::init_soil_depth_3 ( real, dimension(1:num_soil_levels), intent(out)  zs,
real, dimension(1:num_soil_levels), intent(out)  dzs,
integer, intent(in)  num_soil_levels 
)

This subroutine defines level depth in soil and thickness of soil layers RUC LSM.

In RUC LSM ZS-soil levels, and DZS-soil layer thicknesses, not used ZS is specified in the namelist: num_soil_levels =6 or 9. other options with number of levels are possible, but WRF users should change consistently the namelist entry with the ZS array in this subroutine.

Definition at line 26 of file module_soil_pre.F90.

Referenced by lsm_ruc::lsm_ruc_init().

Here is the caller graph for this function:

◆ lsmruc()

subroutine, public module_sf_ruclsm::lsmruc ( real (kind_phys), intent(in)  xlat,
real (kind_phys), intent(in)  xlon,
real (kind_phys), intent(in)  dt,
logical, intent(in)  init,
logical, intent(in)  lsm_cold_start,
integer, intent(in)  ktau,
integer, intent(in)  iter,
integer, intent(in)  nsl,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  graupelncv,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  snowncv,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  rainncv,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  raincv,
real (kind_phys), dimension( 1:nsl), intent(in)  zs,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  rainbl,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  snow,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  snowh,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  snowc,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  frzfrac,
logical, intent(in)  frpcpn,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(out)  rhosnf,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(out)  precipfr,
logical, intent(in)  exticeden,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  hgt,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  stdev,
real (kind_phys), dimension( ims:ime, kms:kme, jms:jme ), intent(in)  z3d,
real (kind_phys), dimension( ims:ime, kms:kme, jms:jme ), intent(in)  p8w,
real (kind_phys), dimension( ims:ime, kms:kme, jms:jme ), intent(in)  t3d,
real (kind_phys), dimension( ims:ime, kms:kme, jms:jme ), intent(in)  qv3d,
real (kind_phys), dimension( ims:ime, kms:kme, jms:jme ), intent(in)  qc3d,
real (kind_phys), dimension( ims:ime, kms:kme, jms:jme ), intent(in)  rho3d,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  emisbck,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  glw,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  gswdn,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  gsw,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  emiss,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  chklowq,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  chs,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  flqc,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  flhc,
real (kind_phys), dimension( ims:ime), intent(in)  rhonewsn_ex,
integer, intent(in)  mosaic_lu,
integer, intent(in)  mosaic_soil,
integer, intent(in)  isncond_opt,
integer, intent(in)  isncovr_opt,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  mavail,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  canwat,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  vegfra,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  alb,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  znt,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  z0,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  snoalb,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  albbck,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  lai,
real (kind_phys), dimension( ims:ime , 1:nlcat, jms:jme ), intent(in)  landusef,
integer, intent(in)  nlcat,
real (kind_phys), dimension( ims:ime , 1:nscat, jms:jme ), intent(in)  soilctop,
integer, intent(in)  nscat,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  smcwlt,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  smcref,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  qsfc,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  qsg,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  qvg,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  qcg,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  dew,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  soilt1,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  tsnav,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  tbot,
integer, dimension( ims:ime , jms:jme ), intent(in)  ivgtyp,
integer, dimension( ims:ime , jms:jme ), intent(in)  isltyp,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  xland,
integer, intent(in)  iswater,
integer, intent(in)  isice,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  xice,
real (kind_phys), intent(in)  xice_threshold,
real (kind_phys), intent(in)  cp,
real (kind_phys), intent(in)  rv,
real (kind_phys), intent(in)  rd,
real (kind_phys), intent(in)  g0,
real (kind_phys), intent(in)  pi,
real (kind_phys), intent(in)  lv,
real (kind_phys), intent(in)  stbolt,
real (kind_phys), dimension( ims:ime , 1:nsl, jms:jme ), intent(inout)  soilmois,
real (kind_phys), dimension( ims:ime , 1:nsl, jms:jme ), intent(inout)  sh2o,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  smavail,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  smmax,
real (kind_phys), dimension( ims:ime , 1:nsl, jms:jme ), intent(inout)  tso,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  soilt,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  edir,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  ec,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  ett,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  sublim,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  snoh,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  hfx,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  qfx,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  lh,
real (kind_phys), dimension( its:ite, jts:jte )  infiltr,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  runoff1,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  runoff2,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  acrunoff,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(inout)  sfcexc,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  sfcevp,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  grdflx,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(out)  snowfallac,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  acsnow,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(inout)  snom,
real (kind_phys), dimension( ims:ime, 1:nsl, jms:jme)  smfr3d,
real (kind_phys), dimension( ims:ime, 1:nsl, jms:jme)  keepfr3dflag,
logical, intent(in)  add_fire_heat_flux,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  fire_heat_flux,
logical, intent(in)  myj,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  shdmin,
real (kind_phys), dimension( ims:ime , jms:jme ), intent(in)  shdmax,
logical, intent(in)  rdlai2d,
integer, intent(in)  ims,
integer, intent(in)  ime,
integer, intent(in)  jms,
integer, intent(in)  jme,
integer, intent(in)  kms,
integer, intent(in)  kme,
integer, intent(in)  its,
integer, intent(in)  ite,
integer, intent(in)  jts,
integer, intent(in)  jte,
integer, intent(in)  kts,
integer, intent(in)  kte,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

The RUN LSM model is described in Smirnova et al.(1997) [182] and Smirnova et al.(2000) [183].

RUC LSM General Algorithm

  • Table TBQ is for resolution of balance equation in vilka()
  • Initialize soil/vegetation parameters
  • Initializing inside-snow temp if it is not defined
  • For RUC LSM CHKLOWQ needed for MYJPBL should 1 because is actual specific humidity at the surface, and not the saturation value
  • Z3D(1) is thickness between first full sigma level and the surface, but first mass level is at the half of the first sigma level (u and v are also at the half of first sigma level)
  • Initialize snow, graupel and ice fractions in frozen precip
  • Apply the same frozen precipitation fraction to convective precip
  • Calculate snow, graupel and ice fractions in falling frozen precip
  • If here no info about constituents of frozen precipitation, suppose it is all snow
  • Convert exchange coeff QKMS to [m/s]
  • Convert incoming snow and canwat from mm to m
  • Call soilvegin() to initialize soil and surface properties

Definition at line 88 of file module_sf_ruclsm.F90.

Referenced by lsm_ruc::lsm_ruc_run().

Here is the caller graph for this function:

◆ rslf()

real (kind_phys) function, public module_sf_ruclsm::rslf ( real (kind_phys), intent(in)  p,
real (kind_phys), intent(in)  t 
)

This function calculates the liquid saturation vapor mixing ratio as a function of temperature and pressure (from Thompson scheme).

Definition at line 7709 of file module_sf_ruclsm.F90.

References module_sf_ruclsm::rslf().

Referenced by lsm_ruc::lsm_ruc_init(), lsm_ruc::lsm_ruc_run(), and module_sf_ruclsm::rslf().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ruclsminit()

subroutine, public module_sf_ruclsm::ruclsminit ( logical, intent(in)  debug_print,
real (kind_phys), dimension( ims:ime), intent(in)  landfrac,
real (kind_phys), dimension( ims:ime), intent(in)  fice,
real (kind_phys), intent(in)  min_seaice,
integer, intent(in)  nzs,
integer, dimension( ims:ime, jms:jme ), intent(inout)  isltyp,
integer, dimension( ims:ime, jms:jme ), intent(inout)  ivgtyp,
real (kind_phys), dimension( ims:ime, jms:jme ), intent(out)  mavail,
real (kind_phys), dimension( ims:ime, 1:nzs, jms:jme ), intent(out)  sh2o,
real (kind_phys), dimension( ims:ime, 1:nzs, jms:jme ), intent(out)  smfr3d,
real (kind_phys), dimension( ims:ime, 1:nzs, jms:jme ), intent(in)  tslb,
real (kind_phys), dimension( ims:ime, 1:nzs, jms:jme ), intent(in)  smois,
integer, intent(in)  ims,
integer, intent(in)  ime,
integer, intent(in)  jms,
integer, intent(in)  jme,
integer, intent(in)  kms,
integer, intent(in)  kme,
integer, intent(in)  its,
integer, intent(in)  ite,
integer, intent(in)  jts,
integer, intent(in)  jte,
integer, intent(in)  kts,
integer, intent(in)  kte 
)

This subroutine computes liquid and forezen soil moisture from the total soil moisture, and also computes soil moisture availability in the top soil layer.

Definition at line 7227 of file module_sf_ruclsm.F90.

Referenced by lsm_ruc::lsm_ruc_run().

Here is the caller graph for this function:

◆ set_soilveg_ruc()

subroutine, public set_soilveg_ruc_mod::set_soilveg_ruc ( integer  me,
integer, intent(in)  isot,
integer, intent(in)  ivet,
integer, intent(in)  nlunit,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

This subroutine specifies vegetation and soil parameters for a given soil and land-use classification.

Definition at line 21 of file set_soilveg_ruc.F90.

Referenced by lsm_ruc::lsm_ruc_init().

Here is the caller graph for this function: