INTERFACE:
subroutine Hydrology1(lbc, ubc, lbp, ubp, num_nolakec, filter_nolakec, &
num_nolakep, filter_nolakep)
DESCRIPTION:
Calculation of
(1) water storage of intercepted precipitation
(2) direct throughfall and canopy drainage of precipitation
(3) the fraction of foliage covered by water and the fraction
of foliage that is dry and transpiring.
(4) snow layer initialization if the snow accumulation exceeds 10 mm.
Note: The evaporation loss is taken off after the calculation of leaf
temperature in the subroutine clm\_leaftem.f90, not in this subroutine.
USES:
use shr_kind_mod , only : r8 => shr_kind_r8
use clmtype
use clm_varcon , only : tfrz, istice, istwet, istsoil
use FracWetMod , only : FracWet
use time_manager , only : get_step_size
use subgridAveMod, only : p2c
ARGUMENTS:
implicit none
integer, intent(in) :: lbp, ubp ! pft bounds
integer, intent(in) :: lbc, ubc ! column bounds
integer, intent(in) :: num_nolakec ! number of column no
integer, intent(in) :: filter_nolakec(ubc-lbc+1) ! column filter for n
integer, intent(in) :: num_nolakep ! number of pft non-l
integer, intent(in) :: filter_nolakep(ubp-lbp+1) ! pft filter for non-
CALLED FROM:
subroutine driverREVISION HISTORY:
15 September 1999: Yongjiu Dai; Initial code 15 December 1999: Paul Houser and Jon Radakovich; F90 Revision 2/15/02, Peter Thornton: Migrated to new data structures. Required adding a PFT loop.LOCAL VARIABLES:
local pointers to original implicit in arrays
integer , pointer :: cgridcell(:) ! columns's gridcell
integer , pointer :: clandunit(:) ! columns's landunit
integer , pointer :: pgridcell(:) ! pft's gridcell
integer , pointer :: plandunit(:) ! pft's landunit
integer , pointer :: pcolumn(:) ! pft's column
integer , pointer :: npfts(:) ! number of pfts in column
integer , pointer :: pfti(:) ! column's beginning pft index
integer , pointer :: itype(:) ! landunit type
real(r8), pointer :: forc_rain(:) ! rain rate [mm/s]
real(r8), pointer :: forc_snow(:) ! snow rate [mm/s]
real(r8), pointer :: forc_t(:) ! atmospheric temperature (Kelvin)
#if (defined OFFLINE)
real(r8), pointer :: flfall(:) ! fraction of liquid water within
#endif
logical , pointer :: do_capsnow(:) ! true => do snow capping
real(r8), pointer :: t_grnd(:) ! ground temperature (Kelvin)
real(r8), pointer :: dewmx(:) ! Maximum allowed dew [mm]
integer , pointer :: frac_veg_nosno(:) ! fraction of veg not covered by s
real(r8), pointer :: elai(:) ! one-sided leaf area index with b
real(r8), pointer :: esai(:) ! one-sided stem area index with b
local pointers to original implicit inout arrays
integer , pointer :: snl(:) ! number of snow layers
real(r8), pointer :: snowage(:) ! non dimensional snow age [-]
real(r8), pointer :: snowdp(:) ! snow height (m)
real(r8), pointer :: h2osno(:) ! snow water (mm H2O)
real(r8), pointer :: h2ocan(:) ! total canopy water (mm H2O)
local pointers to original implicit out arrays
real(r8), pointer :: qflx_prec_intr(:) ! interception of precipitatio
real(r8), pointer :: qflx_prec_grnd(:) ! water onto ground including
real(r8), pointer :: qflx_snowcap(:) ! excess precipitation due to
real(r8), pointer :: qflx_snow_grnd_pft(:) !snow on ground after intercep
real(r8), pointer :: qflx_snow_grnd_col(:) !snow on ground after intercep
real(r8), pointer :: qflx_rain_grnd(:) ! rain on ground after interce
real(r8), pointer :: fwet(:) ! fraction of canopy that is w
real(r8), pointer :: fdry(:) ! fraction of foliage that is
real(r8), pointer :: zi(:,:) ! interface level below a "z"
real(r8), pointer :: dz(:,:) ! layer depth (m)
real(r8), pointer :: z(:,:) ! layer thickness (m)
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 :: frac_iceold(:,:) ! fraction of ice relative to