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

SurfaceAlbedo


INTERFACE:

   subroutine SurfaceAlbedo(lbg, ubg, lbc, ubc, lbp, ubp, &
                            num_nourbanc, filter_nourbanc, &
                            num_nourbanp, filter_nourbanp, &
                            nextsw_cday, declinp1)
DESCRIPTION:

Surface albedo and two-stream fluxes Surface albedos. Also fluxes (per unit incoming direct and diffuse radiation) reflected, transmitted, and absorbed by vegetation. Also sunlit fraction of the canopy. The calling sequence is: -> SurfaceAlbedo: albedos for next time step -> SoilAlbedo: soil/lake/glacier/wetland albedos -> SNICAR_RT: snow albedos: direct beam (SNICAR) -> SNICAR_RT: snow albedos: diffuse (SNICAR) -> TwoStream: absorbed, reflected, transmitted solar fluxes (vis dir,vis dif, nir dir, nir dif)


USES:

     use clmtype
     use shr_orb_mod
     use clm_time_manager, only : get_nstep
ARGUMENTS:
     implicit none
     integer , intent(in) :: lbg, ubg                   ! gridcell bounds
     integer , intent(in) :: lbc, ubc                   ! column bounds
     integer , intent(in) :: lbp, ubp                   ! pft bounds
     integer , intent(in) :: num_nourbanc               ! number of columns in non-urban filter
     integer , intent(in) :: filter_nourbanc(ubc-lbc+1) ! column filter for non-urban points
     integer , intent(in) :: num_nourbanp               ! number of pfts in non-urban filter
     integer , intent(in) :: filter_nourbanp(ubp-lbp+1) ! pft filter for non-urban points
     real(r8), intent(in) :: nextsw_cday                   ! calendar day at Greenwich (1.00, ..., days/year)
     real(r8), intent(in) :: declinp1                   ! declination angle (radians) for next time step
CALLED FROM:
   subroutine clm_driver1
   subroutine iniTimeVar
REVISION HISTORY:
   Author: Gordon Bonan
   2/1/02, Peter Thornton: Migrate to new data structures
   8/20/03, Mariana Vertenstein: Vectorized routine
   11/3/03, Peter Thornton: added decl(c) output for use in CN code.
   03/28/08, Mark Flanner: added SNICAR, which required reversing the
    order of calls to SNICAR_RT and SoilAlbedo and the location where
    ground albedo is calculated
LOCAL VARIABLES:
   local pointers to implicit in arguments
     integer , pointer :: pgridcell(:) ! gridcell of corresponding pft
     integer , pointer :: plandunit(:) ! index into landunit level quantities
     integer , pointer :: itypelun(:)  ! landunit type
     integer , pointer :: pcolumn(:)   ! column of corresponding pft
     integer , pointer :: cgridcell(:) ! gridcell of corresponding column
     real(r8), pointer :: pwtgcell(:)  ! weight of pft wrt corresponding gridcell
     real(r8), pointer :: lat(:)       ! gridcell latitude (radians)
     real(r8), pointer :: lon(:)       ! gridcell longitude (radians)
     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 :: h2osno(:)    ! snow water (mm H2O)
     real(r8), pointer :: rhol(:,:)    ! leaf reflectance: 1=vis, 2=nir
     real(r8), pointer :: rhos(:,:)    ! stem reflectance: 1=vis, 2=nir
     real(r8), pointer :: taul(:,:)    ! leaf transmittance: 1=vis, 2=nir
     real(r8), pointer :: taus(:,:)    ! stem transmittance: 1=vis, 2=nir
     integer , pointer :: ivt(:)       ! pft vegetation type
   local pointers toimplicit out arguments
     real(r8), pointer :: coszen(:)	    ! cosine of solar zenith angle
     real(r8), pointer :: fsun(:)            ! sunlit fraction of canopy
     real(r8), pointer :: albgrd(:,:)        ! ground albedo (direct)
     real(r8), pointer :: albgri(:,:)        ! ground albedo (diffuse)
     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 :: decl(:)            ! solar declination angle (radians)
     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)
     real(r8), pointer :: frac_sno(:)        ! fraction of ground covered by snow (0 to 1)
     real(r8), pointer :: h2osoi_liq(:,:)    ! liquid water content (col,lyr) [kg/m2]
     real(r8), pointer :: h2osoi_ice(:,:)    ! ice lens content (col,lyr) [kg/m2]
     real(r8), pointer :: mss_cnc_bcphi(:,:) ! mass concentration of hydrophilic BC (col,lyr) [kg/kg]
     real(r8), pointer :: mss_cnc_bcpho(:,:) ! mass concentration of hydrophobic BC (col,lyr) [kg/kg]
     real(r8), pointer :: mss_cnc_ocphi(:,:) ! mass concentration of hydrophilic OC (col,lyr) [kg/kg]
     real(r8), pointer :: mss_cnc_ocpho(:,:) ! mass concentration of hydrophobic OC (col,lyr) [kg/kg]
     real(r8), pointer :: mss_cnc_dst1(:,:)  ! mass concentration of dust aerosol species 1 (col,lyr) [kg/kg]
     real(r8), pointer :: mss_cnc_dst2(:,:)  ! mass concentration of dust aerosol species 2 (col,lyr) [kg/kg]
     real(r8), pointer :: mss_cnc_dst3(:,:)  ! mass concentration of dust aerosol species 3 (col,lyr) [kg/kg]
     real(r8), pointer :: mss_cnc_dst4(:,:)  ! mass concentration of dust aerosol species 4 (col,lyr) [kg/kg]
     real(r8), pointer :: albsod(:,:)        ! direct-beam soil albedo (col,bnd) [frc]
     real(r8), pointer :: albsoi(:,:)        ! diffuse soil albedo (col,bnd) [frc]
     real(r8), pointer :: flx_absdv(:,:)     ! direct flux absorption factor (col,lyr): VIS [frc]
     real(r8), pointer :: flx_absdn(:,:)     ! direct flux absorption factor (col,lyr): NIR [frc]
     real(r8), pointer :: flx_absiv(:,:)     ! diffuse flux absorption factor (col,lyr): VIS [frc]
     real(r8), pointer :: flx_absin(:,:)     ! diffuse flux absorption factor (col,lyr): NIR [frc]
     real(r8), pointer :: snw_rds(:,:)       ! snow grain radius (col,lyr) [microns]
     real(r8), pointer :: albgrd_pur(:,:)    ! pure snow ground albedo (direct)
     real(r8), pointer :: albgri_pur(:,:)    ! pure snow ground albedo (diffuse)
     real(r8), pointer :: albgrd_bc(:,:)     ! ground albedo without BC (direct)
     real(r8), pointer :: albgri_bc(:,:)     ! ground albedo without BC (diffuse)
     real(r8), pointer :: albgrd_oc(:,:)     ! ground albedo without OC (direct)
     real(r8), pointer :: albgri_oc(:,:)     ! ground albedo without OC (diffuse)
     real(r8), pointer :: albgrd_dst(:,:)    ! ground albedo without dust (direct)
     real(r8), pointer :: albgri_dst(:,:)    ! ground albedo without dust (diffuse)
     real(r8), pointer :: albsnd_hst(:,:)    ! snow albedo, direct, for history files (col,bnd) [frc]
     real(r8), pointer :: albsni_hst(:,:)    ! snow ground albedo, diffuse, for history files (col,bnd) [frc]
   !OTHER LOCAL VARIABLES:



Erik Kluzek 2011-06-15