next up previous contents
Next: Fortran: Module Interface Hydrology2Mod Up: Fortran: Module Interface Hydrology1Mod Previous: Fortran: Module Interface Hydrology1Mod   Contents

Hydrology1


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_min
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 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 points
CALLED FROM:
   subroutine clm_driver1
REVISION 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 behavior
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 :: 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:



Erik Kluzek 2011-06-15