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



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

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.


     use clmtype
     use clm_varpar, only : numrad
     use clm_varcon, only : omegas, tfrz, betads, betais
     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
   subroutine SurfaceAlbedo in this module
   Author: Gordon Bonan
   Modified for speedup: Mariana Vertenstein, 8/26/02
   Vectorized routine: Mariana Vertenstein:  8/20/03
   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)

Erik Kluzek 2011-06-15