Summary
This model calculates row-to-row shading using geometric algorithms for arrays on uniform terrain. PlantPredict implements two variants: a simple trigonometric model for flat terrain, and a slope-aware vector-based model that handles uniform slopes and accounts for bay-to-bay shading within rows. Both methods provide fast calculations suitable for regular array layouts.Inputs
| Name | Symbol | Units | Description |
|---|---|---|---|
| Collector Width | m | Tracker bay width perpendicular to rotation axis | |
| Row Pitch | m | Horizontal distance between tracker rotation axes | |
| Row Length | m | Length of array row parallel to axis | |
| Number of Rows | — | Total rows in array block | |
| Bay Length | m | Length of individual bay within row | |
| Bay Spacing | m | Gap between adjacent bays along row | |
| Bays Per Row | — | Number of bays in each row | |
| Row Tilt Angle | degrees | Tilt angle of module from horizontal | |
| Row Azimuth Angle | degrees | Azimuth angle of module surface normal, measured clockwise from North | |
| Solar Zenith Angle | degrees | Angle between sun and vertical | |
| Solar Azimuth Angle | degrees | sun azimuth, measured clockwise from North | |
| Ground Slope | degrees | Terrain slope angle | |
| Ground Slope Azimuth | degrees | Downhill direction of slope, measured clockwise from North |
Outputs
| Name | Symbol | Units | Description |
|---|---|---|---|
| Beam Shading Factor | — | Fraction of beam irradiance reaching modules (0-1) |
Detailed Description
Algorithm Selection
Version 11+:- Tracker systems: Always uses slope-aware model (even on flat terrain)
- Fixed tilt: Row-to-row trigonometric model if flat terrain (both slopes = 0) and “Infinite Length Rows” algorithm selected; slope-aware otherwise
- Row-to-row trigonometric model if: flat terrain (both slopes = 0) and “Infinite Length Rows” algorithm selected
- Slope-aware otherwise (sloped terrain or “Infinite Length Rows” not selected)
- Row-to-row trigonometric model if flat terrain (both slopes = 0)
- Slope-aware if sloped terrain ( or ≠ 0)
Row-to-Row Trigonometric Model
The algorithm calculates the relative height and length of shadows cast by the directly adjacent row to determine the shaded fraction on interior rows, then adjusts for edge effects in finite arrays. This model operates at the row level, treating each row as continuous (omitting spacing between ), and only considers shadows from the row immediately in front. It does not account for diagonal, second-row, or along-axis bay-to-bay shading.Shaded Fractions
Shaded height fraction (relative height of shadow from adjacent row, 0-1): Shaded length fraction (relative length of shadow from adjacent row, 0-1): If or fall outside [0,1], they are set to 0. For “Infinite Length Rows” mode, is set to 1.Beam Shading Factor
The factor accounts for the first row being unshaded. If the is (sun behind modules), shading is not applied.Slope-Aware Linear Shading
This algorithm uses a vector-based approach with that projects shadows from multiple neighboring bays onto each receiver module. The terrain slope is decomposed into cross-axis (perpendicular to rows) and along-axis (parallel to rows) components to determine bay elevations and shadow geometry. Special cases handle array edges where fewer neighbor candidates exist.Step 1: Shading Candidates Identification
For each receiver bay, the algorithm considers shadows from up to 6 neighboring bays. The sun’s azimuth position relative to the row orientation determines which side’s diagonal bays to evaluate, while the along-axis slope determines the elevation differences that affect whether those bays can actually cast shadows:- Adjacent bay along row (same row, 1 position along-axis)
- Row directly in front (1 row cross-axis, centered)
- Diagonal bay (1 row cross-axis, 1 position along-axis)
- Diagonal bay (2 rows cross-axis, 1 position along-axis)
- Diagonal bay (1 row cross-axis, 2 positions along-axis)
- Diagonal bay (1 row cross-axis, 3 positions along-axis)
Step 2: Shadow Projection via Polygon Clipping
For each shadow source:- Project the shading candidate bay’s vertices along the sun’s direction onto the receiver plane
- Compute the intersection polygon between the projected shadow and receiver bay boundaries
- Calculate the intersection polygon area
Step 3: Shadow Overlap Calculation
Multiple shadows can overlap on a single receiver. The total shaded area uses the inclusion-exclusion principle to avoid double-counting: where is the area of shadow , is the overlapping area of shadows and , etc.Step 4: Beam Shading Factor
The unshaded fraction for each bay position is: Edge effects: The list of shadow candidates is reduced for bays at the edges of the array:- Front row bays: Only along-axis shade from adjacent bays within the same row (no shading from rows in front)
- Second row bays: No second-row diagonal shading candidates
- End bays (1st, 2nd, 3rd from edges): Progressively fewer along-axis and diagonal shading candidates