next up previous contents
Next: Fortran: Module Interface QSatMod Up: Fortran: Module Interface HydrologyLakeMod Previous: Fortran: Module Interface HydrologyLakeMod   Contents



   subroutine HydrologyLake(lbp, ubp, num_lakep, filter_lakep)

Calculate lake hydrology

WARNING: This subroutine assumes lake columns have one and only one pft.


     use shr_kind_mod, only: r8 => shr_kind_r8
     use clmtype
     use clm_atmlnd  , only : clm_a2l
     use clm_time_manager, only : get_step_size
     use clm_varcon  , only : hfus, tfrz, spval
     implicit none
     integer, intent(in) :: lbp, ubp                ! pft-index bounds
     integer, intent(in) :: num_lakep               ! number of pft non-lake points in pft filter
     integer, intent(in) :: filter_lakep(ubp-lbp+1) ! pft filter for non-lake points
   subroutine clm_driver1
   Author: Gordon Bonan
   15 September 1999: Yongjiu Dai; Initial code
   15 December 1999:  Paul Houser and Jon Radakovich; F90 Revision
   3/4/02: Peter Thornton; Migrated to new data structures.
   local pointers to implicit in arrays
     integer , pointer :: pcolumn(:)         !pft's column index
     integer , pointer :: pgridcell(:)       !pft's gridcell index
     real(r8), pointer :: begwb(:)         !water mass begining of the time step
     real(r8), pointer :: forc_snow(:)     !snow rate [mm/s]
     real(r8), pointer :: forc_rain(:)     !rain rate [mm/s]
     logical , pointer :: do_capsnow(:)    !true => do snow capping
     real(r8), pointer :: t_grnd(:)        !ground temperature (Kelvin)
     real(r8), pointer :: qmelt(:)         !snow melt [mm/s]
     real(r8), pointer :: qflx_evap_soi(:) !soil evaporation (mm H2O/s) (+ = to atm)
     real(r8), pointer :: qflx_evap_tot(:) !qflx_evap_soi + qflx_evap_can + qflx_tran_veg
   local pointers to implicit inout arrays
     real(r8), pointer :: h2osno(:)        !snow water (mm H2O)
   local pointers to implicit out arrays
     real(r8), pointer :: endwb(:)         !water mass end of the time step
     real(r8), pointer :: snowdp(:)        !snow height (m)
     real(r8), pointer :: snowice(:)       !average snow ice lens
     real(r8), pointer :: snowliq(:)       !average snow liquid water
     real(r8), pointer :: eflx_snomelt(:)  !snow melt heat flux (W/m**2)
     real(r8), pointer :: qflx_infl(:)     !infiltration (mm H2O /s)
     real(r8), pointer :: qflx_snomelt(:)  !snow melt (mm H2O /s)
     real(r8), pointer :: qflx_surf(:)     !surface runoff (mm H2O /s)
     real(r8), pointer :: qflx_drain(:)    !sub-surface runoff (mm H2O /s)
     real(r8), pointer :: qflx_irrig(:)    !irrigation flux (mm H2O /s)
     real(r8), pointer :: qflx_qrgwl(:)    !qflx_surf at glaciers, wetlands, lakes
     real(r8), pointer :: qflx_runoff(:)   !total runoff (qflx_drain+qflx_surf+qflx_qrgwl) (mm H2O /s)
     real(r8), pointer :: qflx_snwcp_ice(:)!excess snowfall due to snow capping (mm H2O /s) [+]`
     real(r8), pointer :: qflx_evap_tot_col(:) !pft quantity averaged to the column (assuming one pft)
     real(r8) ,pointer :: soilalpha(:)     !factor that reduces ground saturated specific humidity (-)
     real(r8), pointer :: zwt(:)           !water table depth
     real(r8), pointer :: fcov(:)          !fractional impermeable area
     real(r8), pointer :: fsat(:)          !fractional area with water table at surface
     real(r8), pointer :: qcharge(:)       !aquifer recharge rate (mm/s)
   local pointers to implicit out multi-level arrays
     real(r8), pointer :: rootr_column(:,:) !effective fraction of roots in each soil layer
     real(r8), pointer :: h2osoi_vol(:,:)   !volumetric soil water (0<=h2osoi_vol<=watsat) [m3/m3]
     real(r8), pointer :: h2osoi_ice(:,:)   !ice lens (kg/m2)
     real(r8), pointer :: h2osoi_liq(:,:)   !liquid water (kg/m2)

Erik Kluzek 2011-06-15