INTERFACE:
subroutine SoilWater (c, vol_liq, dwat, hk, dhkdw)DESCRIPTION:
Soil hydrology
Soil moisture is predicted from a 10-layer model (as with soil
temperature), in which the vertical soil moisture transport is governed
by infiltration, runoff, gradient diffusion, gravity, and root
extraction through canopy transpiration. The net water applied to the
surface layer is the snowmelt plus precipitation plus the throughfall
of canopy dew minus surface runoff and evaporation.
The vertical water flow in an unsaturated porous media is described by
Darcy's law, and the hydraulic conductivity and the soil negative
potential vary with soil water content and soil texture based on the work
of Clapp and Hornberger (1978) and Cosby et al. (1984). The equation is
integrated over the layer thickness, in which the time rate of change in
water mass must equal the net flow across the bounding interface, plus the
rate of internal source or sink. The terms of water flow across the layer
interfaces are linearly expanded by using first-order Taylor expansion.
The equations result in a tridiagonal system equation.
Note: length units here are all millimeter
(in temperature subroutine uses same soil layer
structure required but lengths are m)
Richards equation:
d wat d d wat d psi
----- = - -- [ k(----- ----- - 1) ] + S
dt dz dz d wat
where: wat = volume of water per volume of soil (mm**3/mm**3)
psi = soil matrix potential (mm)
dt = time step (s)
z = depth (mm)
dz = thickness (mm)
qin = inflow at top (mm h2o /s)
qout= outflow at bottom (mm h2o /s)
s = source/sink flux (mm h2o /s)
k = hydraulic conductivity (mm h2o /s)
d qin d qin
qin[n+1] = qin[n] + -------- d wat(j-1) + --------- d wat(j)
d wat(j-1) d wat(j)
==================|=================
< qin
d wat(j)/dt * dz = qin[n+1] - qout[n+1] + S(j)
> qout
==================|=================
d qout d qout
qout[n+1] = qout[n] + --------- d wat(j) + --------- d wat(j+1)
d wat(j) d wat(j+1)
Solution: linearize k and psi about d wat and use tridiagonal
system of equations to solve for d wat,
where for layer j
r_j = a_j [d wat_j-1] + b_j [d wat_j] + c_j [d wat_j+1]
USES:
use shr_kind_mod, only: r8 => shr_kind_r8
use clmtype
use globals, only: dtime
use clm_varcon, only: wimp
use clm_varpar, only : nlevsoi
use shr_const_mod, only : SHR_CONST_TKFRZ, SHR_CONST_LATICE, SHR_CONST_G
use TridiagonalMod, only : Tridiagonal
ARGUMENTS:
implicit none
type (column_type),target,intent(inout):: c !column derived type
real(r8), intent(in) :: vol_liq(1 : nlevsoi) ! soil water per unit volume [mm/mm]
real(r8), intent(out) :: dwat (1 : nlevsoi) ! change of soil water [m3/m3]
real(r8), intent(out) :: hk (1 : nlevsoi) ! hydraulic conductivity [mm h2o/s]
real(r8), intent(out) :: dhkdw(1 : nlevsoi) ! d(hk)/d(vol_liq)
CALLED FROM:
subroutine Hydrology2 in module Hydrology2ModREVISION HISTORY:
15 September 1999: Yongjiu Dai; Initial code 15 December 1999: Paul Houser and Jon Radakovich; F90 Revision 2/27/02, Peter Thornton: Migrated to new data structures. Includes treatment of multiple PFTs on a single soil column.LOCAL VARIABLES:
local pointers to original implicit in arguments
real(r8),pointer:: smpmin !restriction for min of soil potential (mm)
real(r8),pointer:: qflx_infl !infiltration (mm H2O /s)
real(r8),pointer:: qflx_tran_veg !vegetation transpiration (mm H2O/s) (+ = to atm)
local pointers to original implicit in arrays
real(r8),dimension(:),pointer:: eff_porosity!effective porosity = porosity - vol_ice
real(r8),dimension(:),pointer:: watsat !volumetric soil water at saturation (porosity)
real(r8),dimension(:),pointer:: hksat !hydraulic conductivity at saturation (mm H2O /s)
real(r8),dimension(:),pointer:: bsw !Clapp and Hornberger "b"
real(r8),dimension(:),pointer:: sucsat !minimum soil suction (mm)
real(r8),dimension(:),pointer:: t_soisno !soil temperature (Kelvin)
local pointers to original implicit inout arrays
real(r8),dimension(:),pointer:: h2osoi_liq !liquid water (kg/m2)
local pointers to original implicit out arrays
real(r8),dimension(:),pointer:: rootr_column !effective fraction of roots in each soil layer