next up previous contents
Next: Fortran: Module Interface SoilTemperatureMod Up: Fortran: Module Interface SoilHydrologyMod Previous: SoilWater   Contents



   subroutine Drainage(lbc, ubc, num_hydrologyc, filter_hydrologyc, &
                       num_urbanc, filter_urbanc, vol_liq, hk, &

Calculate subsurface drainage


     use shr_kind_mod, only : r8 => shr_kind_r8
     use clmtype
     use clm_time_manager, only : get_step_size
     use clm_varcon  , only : pondmx, tfrz, icol_roof, icol_road_imperv, icol_road_perv, watmin
     use clm_varpar  , only : nlevsoi
     implicit none
     integer , intent(in) :: lbc, ubc                     ! column bounds
     integer , intent(in) :: num_hydrologyc               ! number of column soil points in column filter
     integer , intent(in) :: num_urbanc                   ! number of column urban points in column filter
     integer , intent(in) :: filter_urbanc(ubc-lbc+1)     ! column filter for urban points
     integer , intent(in) :: filter_hydrologyc(ubc-lbc+1) ! column filter for soil points
     real(r8), intent(in) :: vol_liq(lbc:ubc,1:nlevsoi)   ! partial volume of liquid water in layer
     real(r8), intent(in) :: hk(lbc:ubc,1:nlevsoi)        ! hydraulic conductivity (mm h2o/s)
     real(r8), intent(in) :: icefrac(lbc:ubc,1:nlevsoi)   ! fraction of ice in layer
   15 September 1999: Yongjiu Dai; Initial code
   12 November 1999:  Z.-L. Yang and G.-Y. Niu
   15 December 1999:  Paul Houser and Jon Radakovich; F90 Revision
   4/26/05, Peter Thornton and David Lawrence: Turned off drainage from
   middle soil layers for both wet and dry fractions.
   04/25/07  Keith Oleson: Completely new routine for CLM3.5 hydrology
   27 February 2008: Keith Oleson; Saturation excess modification
   local pointers to original implicit in arguments
     integer , pointer :: ctype(:)          !column type index
     integer , pointer :: snl(:)            !number of snow layers
     real(r8), pointer :: qflx_snwcp_liq(:) !excess rainfall due to snow capping (mm H2O /s) [+]
     real(r8), pointer :: qflx_dew_grnd(:)  !ground surface dew formation (mm H2O /s) [+]
     real(r8), pointer :: qflx_dew_snow(:)  !surface dew added to snow pack (mm H2O /s) [+]
     real(r8), pointer :: qflx_sub_snow(:)  !sublimation rate from snow pack (mm H2O /s) [+]
     real(r8), pointer :: dz(:,:)           !layer depth (m)
     real(r8), pointer :: bsw(:,:)          !Clapp and Hornberger "b"
     real(r8), pointer :: eff_porosity(:,:) !effective porosity = porosity - vol_ice
     real(r8), pointer :: t_soisno(:,:)     !soil temperature (Kelvin)
     real(r8), pointer :: hksat(:,:)        !hydraulic conductivity at saturation (mm H2O /s)
     real(r8), pointer :: sucsat(:,:)       !minimum soil suction (mm)
     real(r8), pointer :: z(:,:)            !layer depth (m)
     real(r8), pointer :: zi(:,:)           !interface level below a "z" level (m)
     real(r8), pointer :: watsat(:,:)       !volumetric soil water at saturation (porosity)
     real(r8), pointer :: hkdepth(:)        !decay factor (m)
     real(r8), pointer :: zwt(:)            !water table depth (m)
     real(r8), pointer :: wa(:)             !water in the unconfined aquifer (mm)
     real(r8), pointer :: wt(:)             !total water storage (unsaturated soil water + groundwater) (mm)
     real(r8), pointer :: qcharge(:)        !aquifer recharge rate (mm/s)
   local pointers to original implicit inout arguments
     real(r8), pointer :: h2osoi_ice(:,:)   !ice lens (kg/m2)
     real(r8), pointer :: h2osoi_liq(:,:)   !liquid water (kg/m2)
   local pointers to original implicit out arguments
     real(r8), pointer :: qflx_drain(:)     !sub-surface runoff (mm H2O /s)
     real(r8), pointer :: qflx_irrig(:)     !irrigation flux (mm H2O /s)
     real(r8), pointer :: qflx_qrgwl(:)     !qflx_surf at glaciers, wetlands, lakes (mm H2O /s)
     real(r8), pointer :: eflx_impsoil(:)   !implicit evaporation for soil temperature equation
     real(r8), pointer :: qflx_rsub_sat(:)  !soil saturation excess [mm h2o/s]

Erik Kluzek 2011-06-15