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_atmlnd , only : clm_a2l use clm_varcon , only : tfrz, istice, istwet, istsoil, istice_mec, isturb, & icol_roof, icol_sunwall, icol_shadewall use clm_varcon , only : istcrop use FracWetMod , only : FracWet use clm_time_manager , only : get_step_size use subgridAveMod, only : p2c use SNICARMod , only : snw_rds_minARGUMENTS:
implicit none integer, intent(in) :: lbp, ubp ! pft bounds 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 integer, intent(in) :: num_nolakep ! number of pft non-lake points in pft filter integer, intent(in) :: filter_nolakep(ubp-lbp+1) ! pft filter for non-lake pointsCALLED FROM:
subroutine clm_driver1REVISION 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. 4/26/05, Peter Thornton: Made the canopy interception factor fpi max=0.25 the default behaviorLOCAL 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 :: ltype(:) ! landunit type integer , pointer :: ctype(:) ! column 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) 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 snow (0/1 now) [-] real(r8), pointer :: elai(:) ! one-sided leaf area index with burying by snow real(r8), pointer :: esai(:) ! one-sided stem area index with burying by snow real(r8), pointer :: h2ocan_loss(:) ! canopy water mass balance term (column) real(r8), pointer :: irrig_rate(:) ! current irrigation rate (applied if n_irrig_steps_left > 0) [mm/s] local pointers to original implicit inout arrays integer , pointer :: snl(:) ! number of snow layers real(r8), pointer :: snowdp(:) ! snow height (m) real(r8), pointer :: h2osno(:) ! snow water (mm H2O) real(r8), pointer :: h2ocan(:) ! total canopy water (mm H2O) real(r8), pointer :: qflx_irrig(:) ! irrigation amount (mm/s) integer, pointer :: n_irrig_steps_left(:) ! number of time steps for which we still need to irrigate today local pointers to original implicit out arrays real(r8), pointer :: qflx_prec_intr(:) ! interception of precipitation [mm/s] real(r8), pointer :: qflx_prec_grnd(:) ! water onto ground including canopy runoff [kg/(m2 s)] real(r8), pointer :: qflx_snwcp_liq(:) ! excess rainfall due to snow capping (mm H2O /s) [+] real(r8), pointer :: qflx_snwcp_ice(:) ! excess snowfall due to snow capping (mm H2O /s) [+] real(r8), pointer :: qflx_snow_grnd_pft(:) ! snow on ground after interception (mm H2O/s) [+] real(r8), pointer :: qflx_snow_grnd_col(:) ! snow on ground after interception (mm H2O/s) [+] real(r8), pointer :: qflx_rain_grnd(:) ! rain on ground after interception (mm H2O/s) [+] real(r8), pointer :: fwet(:) ! fraction of canopy that is wet (0 to 1) real(r8), pointer :: fdry(:) ! fraction of foliage that is green and dry [-] (new) real(r8), pointer :: zi(:,:) ! interface level below a "z" level (m) 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 the tot water real(r8), pointer :: snw_rds(:,:) ! effective snow grain radius (col,lyr) [microns, m^-6] real(r8), pointer :: mss_bcpho(:,:) ! mass of hydrophobic BC in snow (col,lyr) [kg] real(r8), pointer :: mss_bcphi(:,:) ! mass of hydrophilic BC in snow (col,lyr) [kg] real(r8), pointer :: mss_bctot(:,:) ! total mass of BC in snow (col,lyr) [kg] real(r8), pointer :: mss_bc_col(:) ! total column mass of BC in snow (col,lyr) [kg] real(r8), pointer :: mss_bc_top(:) ! total top-layer mass of BC (col,lyr) [kg] real(r8), pointer :: mss_ocpho(:,:) ! mass of hydrophobic OC in snow (col,lyr) [kg] real(r8), pointer :: mss_ocphi(:,:) ! mass of hydrophilic OC in snow (col,lyr) [kg] real(r8), pointer :: mss_octot(:,:) ! total mass of OC in snow (col,lyr) [kg] real(r8), pointer :: mss_oc_col(:) ! total column mass of OC in snow (col,lyr) [kg] real(r8), pointer :: mss_oc_top(:) ! total top-layer mass of OC (col,lyr) [kg] real(r8), pointer :: mss_dst1(:,:) ! mass of dust species 1 in snow (col,lyr) [kg] real(r8), pointer :: mss_dst2(:,:) ! mass of dust species 2 in snow (col,lyr) [kg] real(r8), pointer :: mss_dst3(:,:) ! mass of dust species 3 in snow (col,lyr) [kg] real(r8), pointer :: mss_dst4(:,:) ! mass of dust species 4 in snow (col,lyr) [kg] real(r8), pointer :: mss_dsttot(:,:) ! total mass of dust in snow (col,lyr) [kg] real(r8), pointer :: mss_dst_col(:) ! total column mass of dust in snow (col,lyr) [kg] real(r8), pointer :: mss_dst_top(:) ! total top-layer mass of dust in snow (col,lyr) [kg] !OTHER LOCAL VARIABLES: