INTERFACE:
subroutine Hydrology2(lbc, ubc, num_nolakec, filter_nolakec, &
num_soilc, filter_soilc, num_snowc, filter_snowc, &
num_nosnowc, filter_nosnowc)
DESCRIPTION:
This is the main subroutine to execute the calculation of soil/snow
hydrology
Calling sequence is:
Hydrology2: surface hydrology driver
-> SnowWater: change of snow mass and snow water onto soil
-> SurfaceRunoff: surface runoff
-> Infiltration: infiltration into surface soil layer
-> SoilWater: soil water movement between layers
-> Tridiagonal tridiagonal matrix solution
-> Drainage: subsurface runoff
-> SnowCompaction: compaction of snow layers
-> CombineSnowLayers: combine snow layers that are thinner than mini
-> DivideSnowLayers: subdivide snow layers that are thicker than ma
USES:
use shr_kind_mod, only: r8 => shr_kind_r8
use clmtype
use clm_varcon , only : denh2o, denice, istice, istwet, istsoil, spv
use clm_varpar , only : nlevsoi, nlevsno
use SnowHydrologyMod, only : SnowCompaction, CombineSnowLayers, DivideSno
SnowWater, BuildSnowFilter
use SoilHydrologyMod, only : Infiltration, SoilWater, Drainage, SurfaceRu
#if (defined COUP_CAM)
use time_manager , only : get_step_size, get_nstep, is_perpetual
#else
use time_manager , only : get_step_size, get_nstep
#endif
ARGUMENTS:
implicit none
integer, intent(in) :: lbc, ubc ! column bounds
integer, intent(in) :: num_nolakec ! number of column non
integer, intent(in) :: filter_nolakec(ubc-lbc+1) ! column filter for no
integer, intent(in) :: num_soilc ! number of column soi
integer, intent(in) :: filter_soilc(ubc-lbc+1) ! column filter for so
CALLED FROM:
subroutine driverREVISION HISTORY:
Created by Mariana VertensteinLOCAL VARIABLES:
local pointers to implicit in arguments
integer , pointer :: cgridcell(:) ! column's gridcell
integer , pointer :: clandunit(:) ! column's landunit
integer , pointer :: ityplun(:) ! landunit type
integer , pointer :: snl(:) ! number of snow layers
real(r8), pointer :: h2ocan(:) ! canopy water (mm H2O)
real(r8), pointer :: h2osno(:) ! snow water (mm H2O)
real(r8), pointer :: watsat(:,:) ! volumetric soil water at saturati
real(r8), pointer :: sucsat(:,:) ! minimum soil suction (mm)
real(r8), pointer :: bsw(:,:) ! Clapp and Hornberger "b"
real(r8), pointer :: z(:,:) ! layer depth (m)
real(r8), pointer :: forc_rain(:) ! rain rate [mm/s]
real(r8), pointer :: forc_snow(:) ! snow rate [mm/s]
real(r8), pointer :: begwb(:) ! water mass begining of the time s
real(r8), pointer :: qflx_evap_tot(:) ! qflx_evap_soi + qflx_evap_veg + q
local pointers to implicit inout arguments
real(r8), pointer :: dz(:,:) ! layer thickness depth (m)
real(r8), pointer :: zi(:,:) ! interface depth (m)
local pointers to implicit out arguments
real(r8), pointer :: endwb(:) ! water mass end of the time step
real(r8), pointer :: snowage(:) ! non dimensional snow age [-]
real(r8), pointer :: wf(:) ! soil water as frac. of whc for to
real(r8), pointer :: snowice(:) ! average snow ice lens
real(r8), pointer :: snowliq(:) ! average snow liquid water
real(r8), pointer :: t_snow(:) ! vertically averaged snow temperat
real(r8), pointer :: t_grnd(:) ! ground temperature (Kelvin)
real(r8), pointer :: t_soisno(:,:) ! soil temperature (Kelvin)
real(r8), pointer :: h2osoi_ice(:,:) ! ice lens (kg/m2)
real(r8), pointer :: h2osoi_liq(:,:) ! liquid water (kg/m2)
real(r8), pointer :: h2osoi_vol(:,:) ! volumetric soil water (0<=h2osoi_
real(r8), pointer :: qflx_drain(:) ! sub-surface runoff (mm H2O /s)
real(r8), pointer :: qflx_surf(:) ! surface runoff (mm H2O /s)
real(r8), pointer :: qflx_infl(:) ! infiltration (mm H2O /s)
real(r8), pointer :: qflx_qrgwl(:) ! qflx_surf at glaciers, wetlands,