next up previous contents
Next: Fortran: Module Interface SurfaceRadiationMod Up: Fortran: Module Interface SurfaceAlbedoMod Previous: SoilAlbedo   Contents

TwoStream


INTERFACE:

   subroutine TwoStream (lbc, ubc, lbp, ubp, filter_vegsol, num_vegsol, &
                         coszen, vai, rho, tau)
DESCRIPTION:

Two-stream fluxes for canopy radiative transfer Use two-stream approximation of Dickinson (1983) Adv Geophysics 25:305-353 and Sellers (1985) Int J Remote Sensing 6:1335-1372 to calculate fluxes absorbed by vegetation, reflected by vegetation, and transmitted through vegetation for unit incoming direct or diffuse flux given an underlying surface with known albedo.


USES:

     use clmtype
     use clm_varpar, only : numrad
     use clm_varcon, only : omegas, tfrz, betads, betais
ARGUMENTS:
     implicit none
     integer , intent(in)  :: lbc, ubc                 ! column bounds
     integer , intent(in)  :: lbp, ubp                 ! pft bounds
     integer , intent(in)  :: filter_vegsol(ubp-lbp+1) ! filter for vegetated pfts with coszen>0
     integer , intent(in)  :: num_vegsol               ! number of vegetated pfts where coszen>0
     real(r8), intent(in)  :: coszen(lbp:ubp)          ! cosine solar zenith angle for next time step
     real(r8), intent(in)  :: vai(lbp:ubp)             ! elai+esai
     real(r8), intent(in)  :: rho(lbp:ubp,numrad)      ! leaf/stem refl weighted by fraction LAI and SAI
     real(r8), intent(in)  :: tau(lbp:ubp,numrad)      ! leaf/stem tran weighted by fraction LAI and SAI
CALLED FROM:
   subroutine SurfaceAlbedo in this module
REVISION HISTORY:
   Author: Gordon Bonan
   Modified for speedup: Mariana Vertenstein, 8/26/02
   Vectorized routine: Mariana Vertenstein:  8/20/03
LOCAL VARIABLES:
   local pointers to implicit in scalars
     integer , pointer :: pcolumn(:)    ! column of corresponding pft
     real(r8), pointer :: albgrd(:,:)   ! ground albedo (direct) (column-level)
     real(r8), pointer :: albgri(:,:)   ! ground albedo (diffuse)(column-level)
     real(r8), pointer :: t_veg(:)      ! vegetation temperature (Kelvin)
     real(r8), pointer :: fwet(:)       ! fraction of canopy that is wet (0 to 1)
     integer , pointer :: ivt(:)        ! pft vegetation type
     real(r8), pointer :: xl(:)         ! ecophys const - leaf/stem orientation index
   local pointers to implicit out scalars
     real(r8), pointer :: albd(:,:)     ! surface albedo (direct)
     real(r8), pointer :: albi(:,:)     ! surface albedo (diffuse)
     real(r8), pointer :: fabd(:,:)     ! flux absorbed by veg per unit direct flux
     real(r8), pointer :: fabi(:,:)     ! flux absorbed by veg per unit diffuse flux
     real(r8), pointer :: ftdd(:,:)     ! down direct flux below veg per unit dir flx
     real(r8), pointer :: ftid(:,:)     ! down diffuse flux below veg per unit dir flx
     real(r8), pointer :: ftii(:,:)     ! down diffuse flux below veg per unit dif flx
     real(r8), pointer :: gdir(:)		   ! leaf projection in solar direction (0 to 1)
 	 real(r8), pointer :: omega(:,:)    ! fraction of intercepted radiation that is scattered (0 to 1)
   !OTHER LOCAL VARIABLES:



Erik Kluzek 2011-06-15