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

SurfaceRadiation


INTERFACE:

   subroutine SurfaceRadiation (c)
DESCRIPTION:

   Solar fluxes absorbed by vegetation and ground surface
   Note possible problem when land is on different grid than atmosphere.
   Land may have sun above the horizon (coszen > 0) but atmosphere may
   have sun below the horizon (forc_solad = 0 and forc_solai = 0). This is okay
   because all fluxes (absorbed, reflected, transmitted) are multiplied
   by the incoming flux and all will equal zero.
   Atmosphere may have sun above horizon (forc_solad > 0 and forc_solai > 0) but
   land may have sun below horizon. This is okay because fabd, fabi,
   ftdd, ftid, and ftii all equal zero so that sabv=sabg=fsa=0. Also,
   albd and albi equal one so that fsr=forc_solad+forc_solai. In other words, all
   the radiation is reflected. NDVI should equal zero in this case.
   However, the way the code is currently implemented this is only true
   if (forc_solad+forc_solai)|vis = (forc_solad+forc_solai)|nir.
   Output variables are parsun,parsha,sabv,sabg,fsa,fsr,ndvi
USES:
     use clmtype
ARGUMENTS:
     implicit none
     type (column_type),target,intent(inout):: c		!column derived type
CALLED FROM:
   subroutine Biogeophysics1 in module Biogeophysics1Mod
   subroutine BiogeophysicsLake in module BiogeophysicsLakeMod
REVISION HISTORY:
   Author: Gordon Bonan
   2/18/02, Peter Thornton: Migrated to new data structures. Added a pft loop.
LOCAL VARIABLES:
   local pointers to original implicit in scalars
     real(r8),pointer:: fsun   !sunlit fraction of canopy
     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
   local pointers to original implicit out scalars
     real(r8),pointer:: laisun !sunlit leaf area
     real(r8),pointer:: laisha !shaded leaf area
     real(r8),pointer:: sabg   !solar radiation absorbed by ground (W/m**2)
     real(r8),pointer:: sabv   !solar radiation absorbed by vegetation (W/m**2)
     real(r8),pointer:: fsa    !solar radiation absorbed (total) (W/m**2)
     real(r8),pointer:: parsun !average absorbed PAR for sunlit leaves (W/m**2)
     real(r8),pointer:: parsha !average absorbed PAR for shaded leaves (W/m**2)
     real(r8),pointer:: fsr    !solar radiation reflected (W/m**2)
     real(r8),pointer:: ndvi   !Normalized Difference Vegetation Index
   local pointers to original implicit in arrays
     real(r8),dimension(:),pointer:: forc_solad   !direct beam radiation (W/m**2)
     real(r8),dimension(:),pointer:: forc_solai   !diffuse radiation (W/m**2)
     real(r8),dimension(:),pointer:: fabd         !flux absorbed by veg per unit direct flux
     real(r8),dimension(:),pointer:: fabi         !flux absorbed by veg per unit diffuse flux
     real(r8),dimension(:),pointer:: ftdd         !down direct flux below veg per unit dir flx
     real(r8),dimension(:),pointer:: ftid         !down diffuse flux below veg per unit dir flx
     real(r8),dimension(:),pointer:: ftii         !down diffuse flux below veg per unit dif flx
     real(r8),dimension(:),pointer:: albgrd       !ground albedo (direct)
     real(r8),dimension(:),pointer:: albgri       !ground albedo (diffuse)
     real(r8),dimension(:),pointer:: albd         !surface albedo (direct)
     real(r8),dimension(:),pointer:: albi         !surface albedo (diffuse)



Mariana Vertenstein 2003-01-14