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). | |
This module contains the RUC Land Surface Model developed by NOAA/GSL (Smirnova et al. 2016 [184]).
| 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().
| 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().
| 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].
Definition at line 88 of file module_sf_ruclsm.F90.
Referenced by lsm_ruc::lsm_ruc_run().
| 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().
| 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().
| 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().