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


SoilTemperature


INTERFACE:

   subroutine SoilTemperature(lbc, ubc, num_nolakec, filter_nolakec, &
                              xmf, fact)
DESCRIPTION:

   Snow and soil temperatures including phase change
   o The volumetric heat capacity is calculated as a linear combination
     in terms of the volumetric fraction of the constituent phases.
   o The thermal conductivity of soil is computed from
     the algorithm of Johansen (as reported by Farouki 1981), and the
     conductivity of snow is from the formulation used in
     SNTHERM (Jordan 1991).
   o Boundary conditions:
     F = Rnet - Hg - LEg (top),  F= 0 (base of the soil column).
   o Soil / snow temperature is predicted from heat conduction
     in 10 soil layers and up to 5 snow layers.
     The thermal conductivities at the interfaces between two
     neighboring layers (j, j+1) are derived from an assumption that
     the flux across the interface is equal to that from the node j
     to the interface and the flux from the interface to the node j+1.
     The equation is solved using the Crank-Nicholson method and
     results in a tridiagonal system equation.
USES:
     use shr_kind_mod  , only : r8 => shr_kind_r8
     use clmtype
     use time_manager  , only : get_step_size
     use clm_varcon    , only : sb, capr, cnfac
     use clm_varpar    , only : nlevsno, nlevsoi
     use TridiagonalMod, only : Tridiagonal
ARGUMENTS:
     implicit none
     integer , intent(in)  :: lbc, ubc                    ! column bounds
     integer , intent(in)  :: num_nolakec                 ! number of column n
     integer , intent(in)  :: filter_nolakec(ubc-lbc+1)   ! column filter for 
     real(r8), intent(out) :: xmf(lbc:ubc)                ! total latent heat 
     real(r8), intent(out) :: fact(lbc:ubc, -nlevsno+1:nlevsoi) ! used in comp
CALLED FROM:
   subroutine Biogeophysics2 in module Biogeophysics2Mod
REVISION HISTORY:
   15 September 1999: Yongjiu Dai; Initial code
   15 December 1999:  Paul Houser and Jon Radakovich; F90 Revision
   12/19/01, Peter Thornton
   Changed references for tg to t_grnd, for consistency with the
   rest of the code (tg eliminated as redundant)
   2/14/02, Peter Thornton: Migrated to new data structures. Added pft loop
   in calculation of net ground heat flux.
LOCAL VARIABLES:
   local pointers to original implicit in arguments
     integer , pointer :: pgridcell(:)       !pft's gridcell index
     integer , pointer :: npfts(:)           !column's number of pfts - ADD
     integer , pointer :: pfti(:)            !column's beginning pft index - A
     real(r8), pointer :: forc_lwrad(:)      !downward infrared (longwave) rad
     integer , pointer :: snl(:)             !number of snow layers
     real(r8), pointer :: htvp(:)            !latent heat of vapor of water (o
     real(r8), pointer :: emg(:)             !ground emissivity
     real(r8), pointer :: cgrnd(:)           !deriv. of soil energy flux wrt t
     real(r8), pointer :: dlrad(:)           !downward longwave radiation blow
     real(r8), pointer :: sabg(:)            !solar radiation absorbed by grou
     integer , pointer :: frac_veg_nosno(:)  !fraction of vegetation not cover
     real(r8), pointer :: eflx_sh_grnd(:)    !sensible heat flux from ground (
     real(r8), pointer :: qflx_evap_soi(:)   !soil evaporation (mm H2O/s) (+ =
     real(r8), pointer :: wtcol(:)           !weight of pft relative to column
   local pointers to  original implicit inout arguments
     real(r8), pointer :: t_grnd(:)          !ground surface temperature [K]
 
   local pointers to original implicit out arguments
   these two are new variables added to clmtype at the pft level
     real(r8), pointer :: eflx_gnet(:)       !net ground heat flux into the su
     real(r8), pointer :: dgnetdT(:)         !temperature derivative of ground
   local pointers to original implicit in arrays
     real(r8), pointer:: zi(:,:)             !interface level below a "z" leve
     real(r8), pointer:: dz(:,:)             !layer depth (m)
     real(r8), pointer:: z(:,:)              !layer thickness (m)
     real(r8), pointer:: t_soisno(:,:)       !soil temperature (Kelvin)



Mariana Vertenstein 2004-06-21