next up previous contents
Next: PhaseChange Up: Fortran: Module Interface SoilTemperatureMod Previous: SoilTemperature   Contents



   subroutine SoilThermProp (lbc, ubc,  num_nolakec, filter_nolakec, tk, cv)

Calculation of thermal conductivities and heat capacities of snow/soil layers (1) The volumetric heat capacity is calculated as a linear combination in terms of the volumetric fraction of the constituent phases.

(2) The thermal conductivity of soil is computed from the algorithm of Johansen (as reported by Farouki 1981), and of snow is from the formulation used in SNTHERM (Jordan 1991). 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.


     use shr_kind_mod, only : r8 => shr_kind_r8
     use clmtype
     use clm_varcon  , only : denh2o, denice, tfrz, tkwat, tkice, tkair, &
                              cpice,  cpliq,  istice, istice_mec, istwet, &
                              icol_roof, icol_sunwall, icol_shadewall, &
                              icol_road_perv, icol_road_imperv
     use clm_varpar  , only : nlevsno, nlevgrnd, nlevurb, nlevsoi
     implicit none
     integer , intent(in)  :: lbc, ubc                       ! column bounds
     integer , intent(in)  :: num_nolakec                    ! number of column non-lake points in column filter
     integer , intent(in)  :: filter_nolakec(ubc-lbc+1)      ! column filter for non-lake points
     real(r8), intent(out) :: cv(lbc:ubc,-nlevsno+1:nlevgrnd)! heat capacity [J/(m2 K)]
     real(r8), intent(out) :: tk(lbc:ubc,-nlevsno+1:nlevgrnd)! thermal conductivity [W/(m K)]
   subroutine SoilTemperature in this module
   15 September 1999: Yongjiu Dai; Initial code
   15 December 1999:  Paul Houser and Jon Radakovich; F90 Revision
   2/13/02, Peter Thornton: migrated to new data structures
   7/01/03, Mariana Vertenstein: migrated to vector code
   local pointers to original implicit in scalars
     integer , pointer :: ctype(:)         ! column type
     integer , pointer :: clandunit(:)     ! column's landunit
     integer , pointer :: ltype(:)       ! landunit type
     integer , pointer :: snl(:)           ! number of snow layers
     real(r8), pointer :: h2osno(:)        ! snow water (mm H2O)
   local pointers to original implicit in arrays
     real(r8), pointer :: watsat(:,:)      ! volumetric soil water at saturation (porosity)
     real(r8), pointer :: tksatu(:,:)      ! thermal conductivity, saturated soil [W/m-K]
     real(r8), pointer :: tkmg(:,:)        ! thermal conductivity, soil minerals  [W/m-K]
     real(r8), pointer :: tkdry(:,:)       ! thermal conductivity, dry soil (W/m/Kelvin)
     real(r8), pointer :: csol(:,:)        ! heat capacity, soil solids (J/m**3/Kelvin)
     real(r8), pointer :: dz(:,:)          ! layer depth (m)
     real(r8), pointer :: zi(:,:)          ! interface level below a "z" level (m)
     real(r8), pointer :: z(:,:)           ! layer thickness (m)
     real(r8), pointer :: t_soisno(:,:)    ! soil temperature (Kelvin)
     real(r8), pointer :: h2osoi_liq(:,:)  ! liquid water (kg/m2)
     real(r8), pointer :: h2osoi_ice(:,:)  ! ice lens (kg/m2)
     real(r8), pointer :: tk_wall(:,:)     ! thermal conductivity of urban wall
     real(r8), pointer :: tk_roof(:,:)     ! thermal conductivity of urban roof
     real(r8), pointer :: tk_improad(:,:)  ! thermal conductivity of urban impervious road
     real(r8), pointer :: cv_wall(:,:)     ! thermal conductivity of urban wall
     real(r8), pointer :: cv_roof(:,:)     ! thermal conductivity of urban roof
     real(r8), pointer :: cv_improad(:,:)  ! thermal conductivity of urban impervious road
     integer,  pointer :: nlev_improad(:)  ! number of impervious road layers

Erik Kluzek 2011-06-15