Skip to main content

Summary

Linear shading calculates row-to-row beam shading using two-dimensional geometric relationships. Also known as IRIS shading, this algorithm uses trigonometric formulas to compute the shaded height, length, and area fractions of array modules based on sun position and array geometry. The method assumes straight, parallel rows on flat or uniformly sloped terrain and provides fast, analytical calculations suitable for regular array layouts. Linear shading is accurate within 2-5% of detailed 3D models for typical utility-scale geometries.

Inputs

NameSymbolUnitsDescription
Row WidthWWmCollector bandwidth (active module width)
Row LengthLLmLength of array row parallel to axis
Row Tilt Angleβ\betadegreesModule tilt from horizontal
Row Azimuth Angleγ\gammadegreesModule orientation (0° = north)
Solar Zenith Angleθz\theta_zdegreesAngle between sun and vertical
Solar Azimuth Angleγs\gamma_sdegreesSun’s compass direction (0° = north)
Post-to-Post SpacingDDmDistance between tracker posts (pitch)
Number of RowsNNTotal rows in array block
Shading AlgorithmFinite rows or infinite rows option

Outputs

NameSymbolUnitsDescription
Shaded Height Fractionhsh_sFraction of module height shaded (0-1)
Shaded Length Fractionlsl_sFraction of module length shaded (0-1)
Area Shading Factorasa_sUnshaded area fraction (0-1)

Detailed Description

Geometric Setup

The linear shading algorithm establishes geometric relationships between sun position, array orientation, and shadow dimensions. Relative Sun-Array Angle: Γ=γsγ\Gamma = \gamma_s - \gamma where Γ\Gamma represents the azimuthal difference between sun and array orientation. Solar Elevation Angle: α=π2θz\alpha = \frac{\pi}{2} - \theta_z Effective Row Spacing: The ground clearance between rows accounting for module projection: Dclear=DWcos(β)D_{clear} = D - W \cos(\beta) Normalized Spacing: d=DclearWsin(β)d = \frac{D_{clear}}{W \sin(\beta)} Normalized Length: Λ=LWsin(β)\Lambda = \frac{L}{W \sin(\beta)}

Shaded Height Fraction

The fraction of module height that is shaded by the adjacent row: hs=1dsin(β)+cos(β)cos(β)+sin(β)cos(Γ)tan(α)h_s = 1 - \frac{d \sin(\beta) + \cos(\beta)}{\cos(\beta) + \sin(\beta) \frac{\cos(\Gamma)}{\tan(\alpha)}} This formulation accounts for:
  • Row spacing and tilt geometry
  • Sun elevation angle α\alpha
  • Relative sun-array azimuth Γ\Gamma
Validity Constraints: If hs<0h_s < 0 or hs>1h_s > 1, then hs=0h_s = 0 (invalid geometry, no shading).

Shaded Length Fraction

The fraction of module length affected by shadows at the row edges: ls=1(dsin(β)+cos(β))Λ×sin(Γ)cos(β)tan(α)+sin(β)cos(Γ)l_s = 1 - \frac{(d \sin(\beta) + \cos(\beta))}{\Lambda} \times \frac{|\sin(\Gamma)|}{\cos(\beta) \tan(\alpha) + \sin(\beta) \cos(\Gamma)} This captures the horizontal shadow extent along the row length, accounting for end effects in finite-length arrays. Infinite Rows Option: For very long arrays where end effects are negligible, the shading algorithm can be set to “Infinite Rows” mode, which sets ls=1l_s = 1 (no length-dependent shading reduction). Validity Constraints: If ls<0l_s < 0 or ls>1l_s > 1, then ls=0l_s = 0 (invalid geometry, no shading).

Area Shading Factor

The total unshaded area fraction accounting for multiple rows: as=1hs×ls×N1Na_s = 1 - h_s \times l_s \times \frac{N - 1}{N} where the factor (N1)/N(N - 1) / N accounts for the first row being unshaded (no row in front to cast shadows). The beam shading factor applied to irradiance is: Ushd,B=asU_{shd,B} = a_s Angle of Incidence Check: The beam shading factor is only applied when the angle of incidence θ<90°\theta < 90° (sun in front of modules). If θ90°\theta \geq 90°, the shading factor is set to -1 (indicating back-side illumination).

Physical Interpretation

Shaded Height Fraction hsh_s: Represents the vertical extent of the shadow projected onto the module face. When hs=0h_s = 0, no shadow reaches the module. When hs=1h_s = 1, the entire module height is shaded. Shaded Length Fraction lsl_s: Represents the portion of the row length affected by edge effects. For infinite rows or when sin(Γ)0\sin(\Gamma) \approx 0 (sun aligned with rows), ls1l_s \approx 1 and length effects are minimal. Area Shading Factor asa_s: Combined geometric shading loss. The product hs×lsh_s \times l_s gives the shaded area per row, and the factor (N1)/N(N-1)/N accounts for the first unshaded row.

Computational Characteristics

  • Fast computation: Analytical formulas with no iteration
  • 2D approximation: Assumes flat, parallel rows
  • Finite array: Accounts for end effects via lsl_s
  • Limitations: Does not handle complex terrain, curved rows, or non-rectangular layouts

References

  • 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.
  • Stein, J. S., Hansen, C. W., & Reno, M. J. (2012). The Sandia Array Performance Model (SAPM). SAND2012-2389, Sandia National Laboratories.