next up previous contents
Next: Drainage Up: Fortran: Module Interface SoilHydrologyMod Previous: Infiltration   Contents

SoilWater


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 Hydrology2Mod
REVISION 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



Mariana Vertenstein 2003-01-14