next up previous contents index
Next: Module HydrologyLakeMod (File: HydrologyLakeMod.F90) Up: Module Hydrology2Mod (File: Hydrology2Mod.F90) Previous: Module Hydrology2Mod (File: Hydrology2Mod.F90)   Contents   Index


Hydrology2


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 driver
REVISION HISTORY:
   Created by Mariana Vertenstein
LOCAL 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,



Mariana Vertenstein 2004-06-21