INTERFACE:
subroutine SoilThermProp (lbc, ubc, num_nolakec, filter_nolakec, tk, cv)DESCRIPTION:
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.
USES:
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, nlevsoiARGUMENTS:
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)]CALLED FROM:
subroutine SoilTemperature in this moduleREVISION HISTORY:
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 codeLOCAL VARIABLES:
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 !OTHER LOCAL VARIABLES: