next up previous contents
Next: Fortran: Module Interface Biogeophysics1Mod Up: Fortran: Module Interface BareGroundFluxesMod Previous: Fortran: Module Interface BareGroundFluxesMod   Contents



   subroutine BareGroundFluxes(lbp, ubp, num_nolakep, filter_nolakep)

Compute sensible and latent fluxes and their derivatives with respect to ground temperature using ground temperatures from previous time step.


     use clmtype
     use clm_atmlnd         , only : clm_a2l
     use clm_varpar         , only : nlevgrnd
     use clm_varcon         , only : cpair, vkc, grav, denice, denh2o, istsoil
     use clm_varcon         , only : istcrop
     use shr_const_mod      , only : SHR_CONST_RGAS
     use FrictionVelocityMod, only : FrictionVelocity, MoninObukIni
     use QSatMod            , only : QSat
     implicit none
     integer, intent(in) :: lbp, ubp                     ! pft bounds
     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
   subroutine Biogeophysics1 in module Biogeophysics1Mod
   15 September 1999: Yongjiu Dai; Initial code
   15 December 1999:  Paul Houser and Jon Radakovich; F90 Revision
   12/19/01, Peter Thornton
   This routine originally had a long list of parameters, and also a reference to
   the entire clm derived type.  For consistency, only the derived type reference
   is passed (now pointing to the current column and pft), and the other original
   parameters are initialized locally. Using t_grnd instead of tg (tg eliminated
   as redundant).
   1/23/02, PET: Added pft reference as parameter. All outputs will be written
   to the pft data structures, and averaged to the column level outside of
   this routine.
   local pointers to implicit in arguments
     integer , pointer :: pcolumn(:)        ! pft's column index
     integer , pointer :: pgridcell(:)      ! pft's gridcell index
     integer , pointer :: plandunit(:)      ! pft's landunit index
     integer , pointer :: ltype(:)          ! landunit type
     integer , pointer :: frac_veg_nosno(:) ! fraction of vegetation not covered by snow (0 OR 1) [-]
     real(r8), pointer :: t_grnd(:)         ! ground surface temperature [K]
     real(r8), pointer :: thm(:)            ! intermediate variable (forc_t+0.0098*forc_hgt_t_pft)
     real(r8), pointer :: qg(:)             ! specific humidity at ground surface [kg/kg]
     real(r8), pointer :: thv(:)            ! virtual potential temperature (kelvin)
     real(r8), pointer :: dqgdT(:)          ! temperature derivative of "qg"
     real(r8), pointer :: htvp(:)           ! latent heat of evaporation (/sublimation) [J/kg]
     real(r8), pointer :: beta(:)           ! coefficient of conective velocity [-]
     real(r8), pointer :: zii(:)            ! convective boundary height [m]
     real(r8), pointer :: forc_u(:)         ! atmospheric wind speed in east direction (m/s)
     real(r8), pointer :: forc_v(:)         ! atmospheric wind speed in north direction (m/s)
     real(r8), pointer :: forc_t(:)         ! atmospheric temperature (Kelvin)
     real(r8), pointer :: forc_th(:)        ! atmospheric potential temperature (Kelvin)
     real(r8), pointer :: forc_q(:)         ! atmospheric specific humidity (kg/kg)
     real(r8), pointer :: forc_rho(:)       ! density (kg/m**3)
     real(r8), pointer :: forc_pbot(:)      ! atmospheric pressure (Pa)
     real(r8), pointer :: forc_hgt_u_pft(:) ! observational height of wind at pft level [m]
     real(r8), pointer :: psnsun(:)         ! sunlit leaf photosynthesis (umol CO2 /m**2/ s)
     real(r8), pointer :: psnsha(:)         ! shaded leaf photosynthesis (umol CO2 /m**2/ s)
     real(r8), pointer :: z0mg_col(:)       ! roughness length, momentum [m]
     real(r8), pointer :: h2osoi_ice(:,:)   ! ice lens (kg/m2)
     real(r8), pointer :: h2osoi_liq(:,:)   ! liquid water (kg/m2)
     real(r8), pointer :: dz(:,:)           ! layer depth (m)
     real(r8), pointer :: watsat(:,:)       ! volumetric soil water at saturation (porosity)
     real(r8), pointer :: frac_sno(:)       ! fraction of ground covered by snow (0 to 1)
     real(r8), pointer :: soilbeta(:)       ! soil wetness relative to field capacity
   local pointers to implicit inout arguments
     real(r8), pointer :: z0hg_col(:)       ! roughness length, sensible heat [m]
     real(r8), pointer :: z0qg_col(:)       ! roughness length, latent heat [m]
   local pointers to implicit out arguments
     real(r8), pointer :: dlrad(:)         ! downward longwave radiation below the canopy [W/m2]
     real(r8), pointer :: ulrad(:)         ! upward longwave radiation above the canopy [W/m2]
     real(r8), pointer :: cgrnds(:)        ! deriv, of soil sensible heat flux wrt soil temp [w/m2/k]
     real(r8), pointer :: cgrndl(:)        ! deriv of soil latent heat flux wrt soil temp [w/m**2/k]
     real(r8), pointer :: cgrnd(:)         ! deriv. of soil energy flux wrt to soil temp [w/m2/k]
     real(r8), pointer :: taux(:)          ! wind (shear) stress: e-w (kg/m/s**2)
     real(r8), pointer :: tauy(:)          ! wind (shear) stress: n-s (kg/m/s**2)
     real(r8), pointer :: eflx_sh_grnd(:)  ! sensible heat flux from ground (W/m**2) [+ to atm]
     real(r8), pointer :: eflx_sh_tot(:)   ! total sensible heat flux (W/m**2) [+ to atm]
     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
     real(r8), pointer :: t_ref2m(:)       ! 2 m height surface air temperature (Kelvin)
     real(r8), pointer :: q_ref2m(:)       ! 2 m height surface specific humidity (kg/kg)
     real(r8), pointer :: t_ref2m_r(:)     ! Rural 2 m height surface air temperature (Kelvin)
     real(r8), pointer :: rh_ref2m_r(:)    ! Rural 2 m height surface relative humidity (%)
     real(r8), pointer :: rh_ref2m(:)      ! 2 m height surface relative humidity (%)
     real(r8), pointer :: t_veg(:)         ! vegetation temperature (Kelvin)
     real(r8), pointer :: btran(:)         ! transpiration wetness factor (0 to 1)
     real(r8), pointer :: rssun(:)         ! sunlit stomatal resistance (s/m)
     real(r8), pointer :: rssha(:)         ! shaded stomatal resistance (s/m)
     real(r8), pointer :: ram1(:)          ! aerodynamical resistance (s/m)
     real(r8), pointer :: fpsn(:)          ! photosynthesis (umol CO2 /m**2 /s)
     real(r8), pointer :: rootr(:,:)       ! effective fraction of roots in each soil layer
     real(r8), pointer :: rresis(:,:)      ! root resistance by layer (0-1)  (nlevgrnd)	

Erik Kluzek 2011-06-15