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 moduleREVISION HISTORY:
Author: Gordon Bonan Modified for speedup: Mariana Vertenstein, 8/26/02 Vectorized routine: Mariana Vertenstein: 8/20/03LOCAL 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: