Skip to main content

Summary

Diffuse shading accounts for the reduction in sky diffuse and ground-reflected irradiance due to limited view of the sky hemisphere and ground plane caused by neighboring array rows. PlantPredict implements the Schaar-Panchula view-factor model, which calculates the visible fraction of the sky dome and ground surface from a module’s perspective. Unlike beam shading, diffuse shading losses are relatively stable throughout the day and depend primarily on array geometry (row spacing, module tilt) rather than sun position. The model can account for terrain slope effects on view factors for arrays on non-flat ground.

Inputs

NameSymbolUnitsDescription
Module Tilt Angleβ\betadegreesTilt angle of module from horizontal
Post-to-Post SpacingDDmDistance between tracker posts (pitch)
Collector BandwidthWWmActive module width (row width)
Table View HeightggObservation point fraction on table width (default: 0.5)
IAM Parameterb0b_0ASHRAE IAM parameter for module
Transverse SlopeαT\alpha_TdegreesCross-row terrain slope (optional)

Outputs

NameSymbolUnitsDescription
Diffuse Sky Shading FactorUshd,DU_{shd,D}Fraction of unshaded sky diffuse irradiance (0-1)
Ground Diffuse Shading FactorUshd,GdU_{shd,Gd}Fraction of unshaded ground-reflected diffuse (0-1)
Ground Direct Shading FactorUshd,GbU_{shd,Gb}Fraction of unshaded ground-reflected direct (0-1)

Detailed Description

Sky-View Factor Methodology

The diffuse sky shading factor represents the fraction of the sky hemisphere visible from the tilted module surface, accounting for blockage by adjacent rows. Normalized Sky View Factor: Ushd,D=Asky(D,W,β)Asky(,W,β)U_{shd,D} = \frac{A_{sky}(D, W, \beta)}{A_{sky}(\infty, W, \beta)} where:
  • Asky(D,W,β)A_{sky}(D, W, \beta) is the sky view factor with finite row spacing DD
  • Asky(,W,β)A_{sky}(\infty, W, \beta) is the sky view factor with infinite spacing (isolated module)
The normalization accounts for the module’s intrinsic view-factor limitations due to tilt angle.

Flat Terrain Sky View Factor

For arrays on flat ground (transverse slope = 0), the sky view factor is calculated using the Bodo-Schaar formulation. The IAM parameter b0b_0 is set to 0 for pure geometric shading calculations (no optical effects). The view factor integrates the visible sky hemisphere, accounting for:
  • Module tilt angle β\beta
  • Row spacing DD
  • Collector bandwidth WW
  • Observation point location gg (typically 0.5, representing the center of the module)
The calculation evaluates: Asky=θminπ/2ππcos(θ)×V(θ,ϕ)dϕdθA_{sky} = \int_{\theta_{min}}^{\pi/2} \int_{-\pi}^{\pi} \cos(\theta) \times V(\theta, \phi) \, d\phi \, d\theta where V(θ,ϕ)V(\theta, \phi) is a binary visibility function (1 if sky is visible at that angle, 0 if blocked by adjacent row). The diffuse shading factor is constrained: Ushd,D0U_{shd,D} \geq 0.

Sloped Terrain Sky View Factor

For arrays on sloped terrain, the effective view factor is modified to account for terrain-induced tilt variations. The transverse slope αT\alpha_T (cross-row slope) affects the geometric relationship between adjacent rows. Modified View Angle: γeff=acot(D+(1g)Wcos(β)Dtan(αT)+Wsin(β)(1g))\gamma_{eff} = -\text{acot}\left(\frac{-D + (1-g) W \cos(\beta)}{D \tan(\alpha_T) + W \sin(\beta) (1-g)}\right) where:
  • γeff\gamma_{eff} is the effective view angle to the blocking row
  • gg is the observation point location (0 = bottom, 1 = top)
  • Negative values are set to 0
Horizon Angles: The model calculates three horizon angles for different viewing directions: γtop=acot(D+Wcos(β)Dtan(αT)+Wsin(β))\gamma_{top} = -\text{acot}\left(\frac{-D + W \cos(\beta)}{D \tan(\alpha_T) + W \sin(\beta)}\right) γback=atan(Dtan(αT)Wsin(β)gD+Wcos(β)g)\gamma_{back} = \text{atan}\left(\frac{D \tan(-\alpha_T) - W \sin(\beta) g}{D + W \cos(\beta) g}\right) Sky View Integrals: For each horizon angle, the model computes sky view integrals: Asky,i=π+(1+b02b01+tan2(γi))π21+tan2(γi)+2b0atan(tan(γi))A_{sky,i} = \pi + \frac{(1 + b_0 - 2 b_0 \sqrt{1 + \tan^2(\gamma_i)}) \pi}{2 \sqrt{1 + \tan^2(\gamma_i)}} + 2 b_0 \text{atan}(\tan(\gamma_i)) Corrected Sky View: Asky,corrected=π(1+b0)+2Asky,iA_{sky,corrected} = -\pi (1 + b_0) + 2 A_{sky,i} The final diffuse shading factor accounts for both forward and backward view obstructions: Ushd,D=1(Asky,GHAsky,top)(Asky,GHAsky,back)Asky,GH2U_{shd,D} = 1 - \frac{(A_{sky,GH} - A_{sky,top}) (A_{sky,GH} - A_{sky,back})}{A_{sky,GH}^2} where Asky,GHA_{sky,GH} is the ground-horizontal reference sky view.

Ground-Reflected Irradiance Shading

Ground-reflected irradiance is reduced because rear rows partially block the front row’s view of the illuminated ground. The Panchula diffuse ground loss model separates direct and diffuse components: Inputs to Ground Loss Model:
  • Solar zenith angle θz\theta_z
  • Solar azimuth angle γs\gamma_s
  • Module azimuth angle γ\gamma
  • Module tilt angle β\beta
  • Post-to-post spacing DD
  • Row width WW
  • IAM parameter b0b_0
Outputs:
  • Ushd,GdU_{shd,Gd}: Direct ground-reflected shading factor
  • Ushd,GbU_{shd,Gb}: Diffuse ground-reflected shading factor
The model tracks:
  • Sunlit ground patches: Direct beam illumination between rows
  • Shaded ground patches: Diffuse illumination only
The ground shading factors are applied separately to the beam and diffuse portions of ground-reflected irradiance.

Application to Irradiance Components

Diffuse shading factors are applied to plane-of-array irradiance: Idiffuse,shaded=Idiffuse,POA×Ushd,DI_{diffuse,shaded} = I_{diffuse,POA} \times U_{shd,D} Iground,shaded=Iground,beam×Ushd,Gd+Iground,diffuse×Ushd,GbI_{ground,shaded} = I_{ground,beam} \times U_{shd,Gd} + I_{ground,diffuse} \times U_{shd,Gb} where ground-reflected irradiance is split into its beam and diffuse components based on the transposition model.

References

  • Schaar, M. J., & Panchula, A. (2018). View factor model for diffuse irradiance on solar arrays. IEEE Journal of Photovoltaics, 8(4), 1018–1023.
  • Marion, B. (2021). Numerical verification of pvlib single-axis tracking shading algorithms. IEEE Journal of Photovoltaics, 11(1), 184–190.
  • Anderson, K., & Mikofski, M. (2020). Slope-aware backtracking for single-axis trackers. National Renewable Energy Laboratory, NREL/TP-5K00-76626.