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

Biogeophysics1


INTERFACE:

   subroutine Biogeophysics1 (c)
DESCRIPTION:

   This is the main subroutine to execute the calculation of leaf temperature
   and surface fluxes. Biogeophysics2.F90 then determines soil/snow and ground
   temperatures and updates the surface fluxes for the new ground
   temperature.
   Calling sequence is:
    Biogeophysics1:                   surface biogeophysics driver
      -> QSat:                        saturated vapor pressure, specific humidity,
                                       and derivatives at ground surface
      -> SurfaceRadiation:            surface solar radiation
      -> BareGroundFluxes:            surface fluxes for bare soil or
                                       snow-covered vegetation patches
            -> MoninObukIni:          first-guess Monin-Obukhov length and
                                       wind speed
            -> FrictionVelocity:      friction velocity and potential 
                                       temperature and humidity profiles
      -> CanopyFluxes:                leaf temperature and surface fluxes
                                       for vegetated patches 
            -> QSat                   saturated vapor pressure, specific humidity,
                                       and derivatives at leaf surface
            -> MoninObukIni           first-guess Monin-Obukhov length and 
                                       wind speed
            -> FrictionVelocity       friction velocity and potential
                                       temperature and humidity profiles
            -> Stomata                stomatal resistance and photosynthesis
                                       for sunlit leaves
            -> Stomata                stomatal resistance and photosynthesis
                                       for shaded leaves
            -> QSat                   recalculation of saturated vapor pressure,
                                       specific humidity, and derivatives at
                                       leaf surface using updated leaf temperature
    Leaf temperature
    Foliage energy conservation is given by the foliage energy budget 
    equation:
                   Rnet - Hf - LEf = 0 
    The equation is solved by Newton-Raphson iteration, in which this 
    iteration includes the calculation of the photosynthesis and 
    stomatal resistance, and the integration of turbulent flux profiles. 
    The sensible and latent heat transfer between foliage and atmosphere 
    and ground is linked by the equations:  
                   Ha = Hf + Hg and Ea = Ef + Eg
USES:
     use shr_kind_mod, only: r8 => shr_kind_r8
     use clmtype
     use clm_varcon, only : denh2o, denice, roverg, hvap, hsub, istice, istwet, &
          zlnd, zsno
     use clm_varpar, only : nlevsoi
     use QSatMod, only : QSat
     use SurfaceRadiationMod, only : SurfaceRadiation
     use BareGroundFluxesMod, only : BareGroundFluxes
     use CanopyFluxesMod, only : CanopyFluxes
ARGUMENTS:
     implicit none
     type (column_type),target,intent(inout):: c		!column derived type
CALLED FROM:
   subroutine driver
REVISION HISTORY:
   15 September 1999: Yongjiu Dai; Initial code
   15 December 1999:  Paul Houser and Jon Radakovich; F90 Revision 
   Migrated to clm2.0 by Keith Oleson and Mariana Vertenstein
   Migrated to clm2.1 new data structures by Peter Thornton and M. Vertenstein
LOCAL VARIABLES:
   local pointers to implicit in scalars
     real(r8),pointer:: forc_pbot    !atmospheric pressure (Pa)
     real(r8),pointer:: forc_q       !atmospheric specific humidity (kg/kg)
     real(r8),pointer:: forc_t       !atmospheric temperature (Kelvin)
     real(r8),pointer:: forc_hgt_t   !observational height of temperature [m]
     real(r8),pointer:: forc_th      !atmospheric potential temperature (Kelvin)
     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)
     integer,pointer:: itypwat       !water type
     real(r8),pointer:: smpmin       !restriction for min of soil potential (mm)
     integer,pointer :: snl          !number of snow layers
     real(r8),pointer:: frac_sno     !fraction of ground covered by snow (0 to 1)
     real(r8),pointer:: h2osno       !snow water (mm H2O)
     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:: z0mr         !ratio of momentum roughness length to canopy top height (-)
     real(r8),pointer:: htop         !canopy top (m)
     real(r8),pointer:: displar      !ratio of displacement height to canopy top height (-)
     integer,pointer :: frac_veg_nosno  !fraction of vegetation not covered by snow (0 OR 1 now) [-]
   local pointers to implicit out scalars
     real(r8),pointer:: t_grnd       !ground temperature (Kelvin)
     real(r8),pointer:: qg           !ground specific humidity [kg/kg]
     real(r8),pointer:: dqgdT        !d(qg)/dT
     real(r8),pointer:: emg          !ground emissivity
     real(r8),pointer:: htvp         !latent heat of vapor of water (or sublimation) [j/kg]
     real(r8),pointer:: beta         !coefficient of convective velocity [-]
     real(r8),pointer:: zii          !convective boundary height [m]
     real(r8),pointer:: thm          !intermediate variable (forc_t+0.0098*forc_hgt_t)
     real(r8),pointer:: thv          !virtual potential temperature (kelvin)
     real(r8),pointer:: z0mg         !roughness length over ground, momentum [m]
     real(r8),pointer:: z0hg         !roughness length over ground, sensible heat [m]
     real(r8),pointer:: z0qg         !roughness length over ground, latent heat [m]
     real(r8),pointer:: emv          !vegetation emissivity
     real(r8),pointer:: z0m          !momentum roughness length (m)
     real(r8),pointer:: displa       !displacement height (m)
     real(r8),pointer:: z0mv         !roughness length over vegetation, momentum [m]
     real(r8),pointer:: z0hv         !roughness length over vegetation, sensible heat [m]
     real(r8),pointer:: z0qv         !roughness length over vegetation, latent heat [m]
     real(r8),pointer:: ur           !wind speed at reference height [m/s]
     real(r8),pointer:: psnsun       !sunlit leaf photosynthesis (umol CO2 /m**2/ s)
     real(r8),pointer:: psnsha       !shaded leaf photosynthesis (umol CO2 /m**2/ s)
   local pointers to implicit in arrays
     real(r8),dimension(:),pointer:: dz           !layer depth (m)
     real(r8),dimension(:),pointer:: t_soisno     !soil temperature (Kelvin)
     real(r8),dimension(:),pointer:: h2osoi_liq   !liquid water (kg/m2)
     real(r8),dimension(:),pointer:: h2osoi_ice   !ice lens (kg/m2)
     real(r8),dimension(:),pointer:: watsat       !volumetric soil water at saturation (porosity)
     real(r8),dimension(:),pointer:: sucsat       !minimum soil suction (mm)
     real(r8),dimension(:),pointer:: bsw          !Clapp and Hornberger "b"
   local pointers to implicit out arrays
     real(r8),dimension(:),pointer:: tssbef       !soil/snow temperature before update



Mariana Vertenstein 2003-01-14