This is Noah LSM driver module, with the functionality of preparing variables to run Noah LSM gfssflx(), calling Noah LSM and post-processing variables for return to the parent model suite including unit conversion, as well as diagnotics calculation. More...
Modules | |
| module | namelist_soilveg |
| This module contains namelist options for Noah LSM. | |
Functions/Subroutines | |
| subroutine, public | lsm_noah::lsm_noah_run (im, km, grav, cp, hvap, rd, eps, epsm1, rvrdm1, ps, t1, q1, soiltyp, vegtype, sigmaf, sfcemis, dlwflx, dswsfc, delt, tg3, cm, ch, prsl1, prslki, zf, land, wind, slopetyp, shdmin, shdmax, snoalb, sfalb, flag_iter, flag_guess, lheatstrg, isot, ivegsrc, bexppert, xlaipert, vegfpert, pertvegf, albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, adjvisbmd, adjnirbmd, adjvisdfd, adjnirdfd, rhonewsn1, exticeden, weasd, snwdph, tskin, tprcp, srflag, smc, stc, slc, canopy, trans, tsurf, zorl, sncovr1, qsurf, gflux, drain, evap, hflx, ep, runoff, cmm, chh, evbs, evcw, sbsno, snowc, stm, snohf, smcwlt2, smcref2, wet1, lai, rca, errmsg, errflg) |
| subroutine, public | set_soilveg_mod::set_soilveg (me, isot, ivet, nlunit, errmsg, errflg) |
| This subroutine initializes soil and vegetation. | |
| subroutine | sflx::gfssflx (nsoil, couple, icein, ffrozp, dt, zlvl, sldpth, swdn, swnet, lwdn, sfcems, sfcprs, sfctmp, sfcspd, prcp, q2, q2sat, dqsdt2, th2, ivegsrc, vegtyp, soiltyp, slopetyp, shdmin, alb, snoalb, rhonewsn, exticeden, bexpp, xlaip, lheatstrg, tbot, cmc, t1, stc, smc, sh2o, sneqv, ch, cm, z0, nroot, shdfac, snowh, albedo, eta, sheat, ec, edir, et, ett, esnow, drip, dew, beta, etp, ssoil, flx1, flx2, flx3, runoff1, runoff2, runoff3, snomlt, sncovr, rc, pc, rsmin, xlai, rcs, rct, rcq, rcsoil, soilw, soilm, smcwlt, smcdry, smcref, smcmax, errmsg, errflg) |
| This is the entity of GFS Noah LSM model of physics subroutines. It is a soil/veg/snowpack land-surface model to update soil moisture, soil ice, soil temperature, skin temperature, snowpack water content, snowdepth, and all terms of the surface energy balance and surface water balance (excluding input atmospheric forcings of downward radiation and precipitation). | |
| subroutine | alcalc |
| This subroutine calculates albedo including snow effect (0 -> 1). | |
This is Noah LSM driver module, with the functionality of preparing variables to run Noah LSM gfssflx(), calling Noah LSM and post-processing variables for return to the parent model suite including unit conversion, as well as diagnotics calculation.
| subroutine gfssflx::alcalc |
This subroutine calculates albedo including snow effect (0 -> 1).
Definition at line 988 of file sflx.f.
Referenced by sflx::gfssflx().
| subroutine sflx::gfssflx | ( | integer, intent(in) | nsoil, |
| integer, intent(in) | couple, | ||
| integer, intent(in) | icein, | ||
| real (kind=kind_phys), intent(in) | ffrozp, | ||
| real (kind=kind_phys), intent(in) | dt, | ||
| real (kind=kind_phys), intent(in) | zlvl, | ||
| real (kind=kind_phys), dimension(nsoil), intent(in) | sldpth, | ||
| real (kind=kind_phys), intent(in) | swdn, | ||
| real (kind=kind_phys), intent(in) | swnet, | ||
| real (kind=kind_phys), intent(in) | lwdn, | ||
| real (kind=kind_phys), intent(in) | sfcems, | ||
| real (kind=kind_phys), intent(in) | sfcprs, | ||
| real (kind=kind_phys), intent(in) | sfctmp, | ||
| real (kind=kind_phys), intent(in) | sfcspd, | ||
| real (kind=kind_phys), intent(in) | prcp, | ||
| real (kind=kind_phys), intent(in) | q2, | ||
| real (kind=kind_phys), intent(in) | q2sat, | ||
| real (kind=kind_phys), intent(in) | dqsdt2, | ||
| real (kind=kind_phys), intent(in) | th2, | ||
| integer, intent(in) | ivegsrc, | ||
| integer, intent(in) | vegtyp, | ||
| integer, intent(in) | soiltyp, | ||
| integer, intent(in) | slopetyp, | ||
| real (kind=kind_phys), intent(in) | shdmin, | ||
| real (kind=kind_phys), intent(in) | alb, | ||
| real (kind=kind_phys), intent(in) | snoalb, | ||
| real (kind=kind_phys), intent(in) | rhonewsn, | ||
| real (kind=kind_phys), intent(in) | exticeden, | ||
| real (kind=kind_phys), intent(in) | bexpp, | ||
| real (kind=kind_phys), intent(in) | xlaip, | ||
| real (kind=kind_phys), intent(in) | lheatstrg, | ||
| real (kind=kind_phys), intent(inout) | tbot, | ||
| real (kind=kind_phys), intent(inout) | cmc, | ||
| real (kind=kind_phys), intent(inout) | t1, | ||
| real (kind=kind_phys), dimension(nsoil), intent(inout) | stc, | ||
| real (kind=kind_phys), dimension(nsoil), intent(inout) | smc, | ||
| real (kind=kind_phys), dimension(nsoil), intent(inout) | sh2o, | ||
| real (kind=kind_phys), intent(inout) | sneqv, | ||
| real (kind=kind_phys), intent(inout) | ch, | ||
| real (kind=kind_phys), intent(inout) | cm, | ||
| real (kind=kind_phys) | z0, | ||
| integer, intent(out) | nroot, | ||
| real (kind=kind_phys), intent(out) | shdfac, | ||
| real (kind=kind_phys), intent(out) | snowh, | ||
| real (kind=kind_phys), intent(out) | albedo, | ||
| real (kind=kind_phys), intent(out) | eta, | ||
| real (kind=kind_phys), intent(out) | sheat, | ||
| real (kind=kind_phys), intent(out) | ec, | ||
| real (kind=kind_phys), intent(out) | edir, | ||
| real (kind=kind_phys), dimension(nsoil), intent(out) | et, | ||
| real (kind=kind_phys), intent(out) | ett, | ||
| real (kind=kind_phys), intent(out) | esnow, | ||
| real (kind=kind_phys), intent(out) | drip, | ||
| real (kind=kind_phys), intent(out) | dew, | ||
| real (kind=kind_phys), intent(out) | beta, | ||
| real (kind=kind_phys), intent(out) | etp, | ||
| real (kind=kind_phys), intent(out) | ssoil, | ||
| real (kind=kind_phys), intent(out) | flx1, | ||
| real (kind=kind_phys), intent(out) | flx2, | ||
| real (kind=kind_phys), intent(out) | flx3, | ||
| real (kind=kind_phys), intent(out) | runoff1, | ||
| real (kind=kind_phys), intent(out) | runoff2, | ||
| real (kind=kind_phys), intent(out) | runoff3, | ||
| real (kind=kind_phys), intent(out) | snomlt, | ||
| real (kind=kind_phys), intent(out) | sncovr, | ||
| real (kind=kind_phys), intent(out) | rc, | ||
| real (kind=kind_phys), intent(out) | pc, | ||
| real (kind=kind_phys), intent(out) | rsmin, | ||
| real (kind=kind_phys), intent(out) | xlai, | ||
| real (kind=kind_phys), intent(out) | rcs, | ||
| real (kind=kind_phys), intent(out) | rct, | ||
| real (kind=kind_phys), intent(out) | rcq, | ||
| real (kind=kind_phys), intent(out) | rcsoil, | ||
| real (kind=kind_phys), intent(out) | soilw, | ||
| real (kind=kind_phys), intent(out) | soilm, | ||
| real (kind=kind_phys), intent(out) | smcwlt, | ||
| real (kind=kind_phys), intent(out) | smcdry, | ||
| real (kind=kind_phys), intent(out) | smcref, | ||
| real (kind=kind_phys), intent(out) | smcmax, | ||
| character(len=*), intent(out) | errmsg, | ||
| integer, intent(out) | errflg | ||
| ) |
This is the entity of GFS Noah LSM model of physics subroutines. It is a soil/veg/snowpack land-surface model to update soil moisture, soil ice, soil temperature, skin temperature, snowpack water content, snowdepth, and all terms of the surface energy balance and surface water balance (excluding input atmospheric forcings of downward radiation and precipitation).
The land-surface model component was substantially upgraded from the Oregon State University (OSU) land surface model to EMC's new Noah Land Surface Model (Noah LSM) during the major implementation in the NCEP Global Forecast System (GFS) on May 31, 2005. Forecast System (GFS). The Noah LSM embodies about 10 years of upgrades (see [35], [110], [53]) to its ancestor, the OSU LSM. The Noah LSM upgrade includes:
| [in] | nsoil | integer, number of soil layers (>=2 but <=nsold) |
| [in] | couple | integer, =0:uncoupled (land model only), =1:coupled with parent atmos model |
| [in] | icein | integer, sea-ice flag (=1: sea-ice, =0: land) |
| [in] | ffrozp | real, flag for snow-rain detection (1.=snow, 0.=rain) |
| [in] | dt | real, time step (<3600 sec) |
| [in] | zlvl | real, height abv atmos ground forcing vars ( \(m\)) |
| [in] | sldpth | real, thickness of each soil layer ( \(m\)), nsoil |
| [in] | swdn | real, downward SW radiation flux ( \(W/m^2\)) |
| [in] | swnet | real, downward SW net (dn-up) flux ( \(W/m^2\)) |
| [in] | lwdn | real, downward LW radiation flux ( \(W/m^2\)) |
| [in] | sfcems | real, sfc LW emissivity (fractional) |
| [in] | sfcprs | real, pressure at height zlvl above ground( \(Pa\)) |
| [in] | sfctmp | real, air temp at height zlvl above ground ( \(K\)) |
| [in] | sfcspd | real, wind speed at height zlvl above ground ( \(m s^{-1}\)) |
| [in] | prcp | real, precipitation rate ( \(kgm^{-2}s^{-1}\)) |
| [in] | q2 | real, mixing ratio at hght zlvl above ground ( \(kgkg^{-1}\)) |
| [in] | q2sat | real, sat mixing ratio at zlvl above ground ( \(kgkg^{-1}\)) |
| [in] | dqsdt2 | real, slope of sat specific humidity curve at t=sfctmp ( \(kgkg^{-1}k^{-1}\)) |
| [in] | th2 | real, air potential temperature at zlvl above ground ( \(K\)) |
| [in] | ivegsrc | integer, sfc veg type data source UMD or IGBP |
| [in] | vegtyp | integer, vegetation type (integer index) |
| [in] | soiltyp | integer, soil type (integer index) |
| [in] | slopetyp | integer, class of sfc slope (integer index) |
| [in] | shdmin | real, min areal coverage of green veg (fraction) |
| [in] | alb | real, background snow-free sfc albedo (fraction) |
| [in] | snoalb | real, max albedo over deep snow (fraction) |
| [in] | bexpp | real, perturbation of soil type "b" parameter (perturbation) |
| [in] | xlaip | real, perturbation of leave area index (perturbation) |
| [in] | lheatstrg | logical, flag for canopy heat storage parameterization |
| [in,out] | tbot | real, bottom soil temp ( \(K\)) (local yearly-mean sfc air temp) |
| [in,out] | cmc | real, canopy moisture content ( \(m\)) |
| [in,out] | t1 | real, ground/canopy/snowpack eff skin temp ( \(K\)) |
| [in,out] | stc | real, soil temp ( \(K\)) |
| [in,out] | smc | real, total soil moisture (vol fraction) |
| [in,out] | sh2o | real, unfrozen soil moisture (vol fraction), note: frozen part = smc-sh2o |
| [in,out] | sneqv | real, water-equivalent snow depth ( \(m\)), note: snow density = snwqv/snowh |
| [in,out] | ch | real, sfc exchange coeff for heat & moisture ( \(ms^{-1}\)), note: conductance since it's been mult by wind |
| [in,out] | cm | real, sfc exchange coeff for momentum ( \(ms^{-1}\)), note: conductance since it's been mult by wind |
| [in,out] | z0 | real, roughness length ( \(m\)) |
| [out] | nroot | integer, number of root layers |
| [out] | shdfac | real, aeral coverage of green veg (fraction) |
| [out] | snowh | real, snow depth ( \(m\)) |
| [out] | albedo | real, sfc albedo incl snow effect (fraction) |
| [out] | eta | real, downward latent heat flux ( \(W/m^2\)) |
| [out] | sheat | real, downward sensible heat flux ( \(W/m^2\)) |
| [out] | ec | real, canopy water evaporation ( \(W/m^2\)) |
| [out] | edir | real, direct soil evaporation ( \(W/m^2\)) |
| [out] | et | real, plant transpiration ( \(W/m^2\)) |
| [out] | ett | real, total plant transpiration ( \(W/m^2\)) |
| [out] | esnow | real, sublimation from snowpack ( \(W/m^2\)) |
| [out] | drip | real, through-fall of precip and/or dew in excess of canopy water-holding capacity ( \(m\)) |
| [out] | dew | real, dewfall (or frostfall for t<273.15) ( \(m\)) |
| [out] | beta | real, ratio of actual/potential evap |
| [out] | etp | real, potential evaporation ( \(W/m^2\)) |
| [out] | ssoil | real, upward soil heat flux ( \(W/m^2\)) |
| [out] | flx1 | real, precip-snow sfc flux ( \(W/m^2\)) |
| [out] | flx2 | real, freezing rain latent heat flux ( \(W/m^2\)) |
| [out] | flx3 | real, phase-change heat flux from snowmelt ( \(W/m^2\)) |
| [out] | runoff1 | real, surface runoff ( \(ms^{-1}\)) not infiltrating sfc |
| [out] | runoff2 | real, sub sfc runoff ( \(ms^{-1}\)) (baseflow) |
| [out] | runoff3 | real, excess of porosity for a given soil layer |
| [out] | snomlt | real, snow melt ( \(m\)) (water equivalent) |
| [out] | sncovr | real, fractional snow cover |
| [out] | rc | real, canopy resistance (s/m) |
| [out] | pc | real, plant coeff (fraction) where pc*etp=transpi |
| [out] | rsmin | real, minimum canopy resistance (s/m) |
| [out] | xlai | real, leaf area index (dimensionless) |
| [out] | rcs | real, incoming solar rc factor (dimensionless) |
| [out] | rct | real, air temperature rc factor (dimensionless) |
| [out] | rcq | real, atoms vapor press deficit rc factor |
| [out] | rcsoil | real, soil moisture rc factor (dimensionless) |
| [out] | soilw | real, available soil moisture in root zone |
| [out] | soilm | real, total soil column moisture (frozen+unfrozen) ( \(m\)) |
| [out] | smcwlt | real, wilting point (volumetric) |
| [out] | smcdry | real, dry soil moisture threshold (volumetric) |
| [out] | smcref | real, soil moisture threshold (volumetric) |
| [out] | smcmax | real, porosity (sat val of soil mois) |
Definition at line 116 of file sflx.f.
References alcalc().
Referenced by lsm_noah::lsm_noah_run().
| subroutine, public lsm_noah::lsm_noah_run | ( | integer, intent(in) | im, |
| integer, intent(in) | km, | ||
| real (kind=kind_phys), intent(in) | grav, | ||
| real (kind=kind_phys), intent(in) | cp, | ||
| real (kind=kind_phys), intent(in) | hvap, | ||
| real (kind=kind_phys), intent(in) | rd, | ||
| real (kind=kind_phys), intent(in) | eps, | ||
| real (kind=kind_phys), intent(in) | epsm1, | ||
| real (kind=kind_phys), intent(in) | rvrdm1, | ||
| real (kind=kind_phys), dimension(:), intent(in) | ps, | ||
| real (kind=kind_phys), dimension(:), intent(in) | t1, | ||
| real (kind=kind_phys), dimension(:), intent(in) | q1, | ||
| integer, dimension(:), intent(in) | soiltyp, | ||
| integer, dimension(:), intent(in) | vegtype, | ||
| real (kind=kind_phys), dimension(:), intent(in) | sigmaf, | ||
| real (kind=kind_phys), dimension(:), intent(in) | sfcemis, | ||
| real (kind=kind_phys), dimension(:), intent(in) | dlwflx, | ||
| real (kind=kind_phys), dimension(:), intent(in) | dswsfc, | ||
| real (kind=kind_phys), intent(in) | delt, | ||
| real (kind=kind_phys), dimension(:), intent(in) | tg3, | ||
| real (kind=kind_phys), dimension(:), intent(in) | cm, | ||
| real (kind=kind_phys), dimension(:), intent(in) | ch, | ||
| real (kind=kind_phys), dimension(:), intent(in) | prsl1, | ||
| real (kind=kind_phys), dimension(:), intent(in) | prslki, | ||
| real (kind=kind_phys), dimension(:), intent(in) | zf, | ||
| logical, dimension(:), intent(in) | land, | ||
| real (kind=kind_phys), dimension(:), intent(in) | wind, | ||
| integer, dimension(:), intent(in) | slopetyp, | ||
| real (kind=kind_phys), dimension(:), intent(in) | shdmin, | ||
| real (kind=kind_phys), dimension(:), intent(in) | shdmax, | ||
| real (kind=kind_phys), dimension(:), intent(in) | snoalb, | ||
| real (kind=kind_phys), dimension(:), intent(in) | sfalb, | ||
| logical, dimension(:), intent(in) | flag_iter, | ||
| logical, dimension(:), intent(in) | flag_guess, | ||
| logical, intent(in) | lheatstrg, | ||
| integer, intent(in) | isot, | ||
| integer, intent(in) | ivegsrc, | ||
| real (kind=kind_phys), dimension(:), intent(in) | bexppert, | ||
| real (kind=kind_phys), dimension(:), intent(in) | xlaipert, | ||
| real (kind=kind_phys), dimension(:), intent(in) | vegfpert, | ||
| real (kind=kind_phys), intent(in) | pertvegf, | ||
| real (kind=kind_phys), dimension(:), intent(in) | albdvis_lnd, | ||
| real (kind=kind_phys), dimension(:), intent(in) | albdnir_lnd, | ||
| real (kind=kind_phys), dimension(:), intent(in) | albivis_lnd, | ||
| real (kind=kind_phys), dimension(:), intent(in) | albinir_lnd, | ||
| real (kind=kind_phys), dimension(:), intent(in) | adjvisbmd, | ||
| real (kind=kind_phys), dimension(:), intent(in) | adjnirbmd, | ||
| real (kind=kind_phys), dimension(:), intent(in) | adjvisdfd, | ||
| real (kind=kind_phys), dimension(:), intent(in) | adjnirdfd, | ||
| real (kind=kind_phys), dimension(:), intent(in) | rhonewsn1, | ||
| logical, intent(in) | exticeden, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | weasd, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | snwdph, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | tskin, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | tprcp, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | srflag, | ||
| real (kind=kind_phys), dimension(:,:), intent(inout) | smc, | ||
| real (kind=kind_phys), dimension(:,:), intent(inout) | stc, | ||
| real (kind=kind_phys), dimension(:,:), intent(inout) | slc, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | canopy, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | trans, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | tsurf, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | zorl, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | sncovr1, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | qsurf, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | gflux, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | drain, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | evap, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | hflx, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | ep, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | runoff, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | cmm, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | chh, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | evbs, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | evcw, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | sbsno, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | snowc, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | stm, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | snohf, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | smcwlt2, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | smcref2, | ||
| real (kind=kind_phys), dimension(:), intent(inout), optional | wet1, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | lai, | ||
| real (kind=kind_phys), dimension(:), intent(inout) | rca, | ||
| character(len=*), intent(out) | errmsg, | ||
| integer, intent(out) | errflg | ||
| ) |
qsurf).hflx) and evaporation flux (evap).Definition at line 214 of file lsm_noah.f.
References sflx::gfssflx(), and surface_perturbation::ppfbet().
| subroutine, public set_soilveg_mod::set_soilveg | ( | integer, intent(in) | me, |
| integer, intent(in) | isot, | ||
| integer, intent(in) | ivet, | ||
| integer, intent(in) | nlunit, | ||
| character(len=*), intent(out) | errmsg, | ||
| integer, intent(out) | errflg | ||
| ) |
This subroutine initializes soil and vegetation.
Definition at line 16 of file set_soilveg.f.
Referenced by lsm_noah::lsm_noah_init().