Skip to main content

Summary

Terrain-aware is an algorithm introduced in PlantPredict Version 12 that calculates backtracking angles on a per-tracker basis, accounting for the actual elevation differences between neighboring , derived from the pile height input data. This algorithm is an adaptation of the method presented by Anderson and Jensen (2024), which generalizes backtracking to rolling terrain where each row may have different elevation relationships with its neighbors. Unlike standard backtracking, which assumes uniform cross-axis slope across an entire DC field, terrain-aware backtracking uses the local cross-axis slope angles derived from elevation data for each bay. For computational efficiency, the algorithm assumes neighboring bays remain at their standard backtracking angles rather than iteratively updating based on neighbors’ corrected angles as in Anderson and Jensen (2024). Each tracker then adopts the most backtracked angle among its bays, minimizing shading. The algorithm assumes N–S oriented trackers. The terrain-aware backtracking algorithm is not compatible with the irradiance optimization and wind stow algorithms.

Inputs

NameSymbolUnitsDescription
Standard Backtracking AngleαB\alpha_BdegreesTracker rotation angle from standard backtracking (positive to the west)
Ground Coverage RatioGCRGCRRatio of collector width to row pitch
Row-to-Row PitchppmHorizontal distance between tracker rotation axes
sun Zenith Angleθz\theta_zdegreesSolar zenith angle
sun Azimuth Angleγs\gamma_sdegreesSolar azimuth, measured clockwise from north
Bay Pile HeightshS,ih_{S,i}, hN,ih_{N,i}mSouth and north pile heights for bay ii
East Neighbor Pile HeightshE,S,ih'_{E,S,i}, hE,N,ih'_{E,N,i}mSouth and north pile heights of bay ii‘s east neighbor
West Neighbor Pile HeightshW,S,ih'_{W,S,i}, hW,N,ih'_{W,N,i}mSouth and north pile heights of bay ii‘s west neighbor

Outputs

NameSymbolUnitsDescription
Terrain-Corrected AngleαTABT,i\alpha_{TABT,i}degreesBacktracking angle for bay ii accounting for terrain

Detailed Description

Sun Projected Angle

The sun projected angle γp\gamma_p represents the sun’s position projected onto the E–W vertical plane perpendicular to the tracker axis. For a N–S oriented tracker: γp=atan2(cosαssinγs,sinαs)\gamma_p = \text{atan2}(-\cos\alpha_s \sin\gamma_s, \, \sin\alpha_s) where αs=90°θz\alpha_s = 90° - \theta_z is the solar elevation. γp>0\gamma_p > 0 indicates the sun is to the west, and γp<0\gamma_p < 0 indicates the sun is to the east. The full derivation can be found in Anderson and Jensen (2024).

Local Cross-Axis Slope Angle

The local cross-axis slope angles βE,i\beta_{E,i} and βW,i\beta_{W,i} are derived from the pile height data for each bay and its adjacent neighbors. For bay ii with south and north pile heights hS,ih_{S,i} and hN,ih_{N,i}, the height differences to the east and west neighbors are calculated using average pile heights: ΔhE,i=hE,S,i+hE,N,i2hS,i+hN,i2\Delta h_{E,i} = \frac{h'_{E,S,i} + h'_{E,N,i}}{2} - \frac{h_{S,i} + h_{N,i}}{2} ΔhW,i=hW,S,i+hW,N,i2hS,i+hN,i2\Delta h_{W,i} = \frac{h'_{W,S,i} + h'_{W,N,i}}{2} - \frac{h_{S,i} + h_{N,i}}{2} The local cross-axis slope angles are then: βE,i=max(0,arctan(ΔhE,ip))\beta_{E,i} = \max\left(0, \arctan\left(\frac{\Delta h_{E,i}}{p}\right)\right) βW,i=min(0,arctan(ΔhW,ip))\beta_{W,i} = \min\left(0, \arctan\left(\frac{\Delta h_{W,i}}{p}\right)\right) where pp is the row-to-row pitch. The sign convention is: βE,i0\beta_{E,i} \geq 0 (positive when east neighbor is higher) and βW,i0\beta_{W,i} \leq 0 (negative when west neighbor is higher). Using the average pile heights represents a deliberate trade-off. A worst-case approach—using the maximum height difference between any pair of piles—would eliminate shading entirely but causes excessive backtracking, resulting in significant transposition losses. Conversely, the average approach may leave small amounts of residual shading in some configurations, but empirical testing has shown it provides the best balance between shade mitigation and energy capture.

Neighbor Selection

At each timestep, the algorithm selects the relevant local cross-axis slope based on the sun’s position. When the sun is in the eastern sky (γp0\gamma_p \leq 0), the slope to the east neighbor applies. When the sun is in the western sky (γp>0\gamma_p > 0), the slope to the west neighbor applies. βneighbor,i={βE,iif γp0βW,iif γp>0\beta_{neighbor,i} = \begin{cases} \beta_{E,i} & \text{if } \gamma_p \leq 0 \\ \beta_{W,i} & \text{if } \gamma_p > 0 \end{cases}

Shade Fraction Calculation

The shaded fraction fshade,if_{shade,i} quantifies how much of bay ii‘s collector surface is shaded by the adjacent row. Following Anderson and Jensen (2024), the shade fraction is calculated as: fshade,i=1cos(γpβneighbor,i)GCRcos(αBγp)cosβneighbor,if_{shade,i} = 1 - \frac{\cos(\gamma_p - \beta_{neighbor,i})}{GCR \cdot |\cos(\alpha_B - \gamma_p)| \cdot \cos\beta_{neighbor,i}} This simplified form results from two assumptions: (1) neighboring rows remain at the standard backtracking angle αB\alpha_B, and (2) the distance between the rotation axis and the front of the PV module is negligible compared to the collector width. If fshade,i0f_{shade,i} \leq 0, no shading occurs and the bay does not require extra backtracking.

Backtracking Correction

When shading is detected (fshade,i>0f_{shade,i} > 0), the algorithm calculates a corrected angle that eliminates shading. Setting fshade,i=0f_{shade,i} = 0 and solving for the corrected angle yields: αTABT,i=γpsign(γp)arccos(2cos(γpβneighbor,i)GCRcosβneighbor,icos(αBγp))\alpha_{TABT,i} = \gamma_p - \text{sign}(\gamma_p) \cdot \arccos\left(\frac{2\cos(\gamma_p - \beta_{neighbor,i})}{GCR \cdot \cos\beta_{neighbor,i}} - \cos(\alpha_B - \gamma_p)\right) The tracker adopts the most backtracked angle among all its bays to minimize shading on all the bays: αtracker={mini(αTABT,i)if γp>0 (sun in west)maxi(αTABT,i)if γp<0 (sun in east)\alpha_{tracker} = \begin{cases} \displaystyle\min_i(\alpha_{TABT,i}) & \text{if } \gamma_p > 0 \text{ (sun in west)} \\[1em] \displaystyle\max_i(\alpha_{TABT,i}) & \text{if } \gamma_p < 0 \text{ (sun in east)} \end{cases} If the argument of arccos\arccos has magnitude greater than 1 for any bay, no valid solution exists for the bay in question (shade cannot be avoided by rotating the bay) and the tracker moves to stow position (αtracker=0°\alpha_{tracker} = 0°) to maximize diffuse irradiance. Similarly, if the computed angle would require the tracker to face away from the sun (αTABT,iγp>90°|\alpha_{TABT,i} - \gamma_p| > 90°), the tracker stows instead.

References

  • Anderson, K. S., & Jensen, A. R. (2024). Shaded fraction and backtracking in single-axis trackers on rolling terrain. Journal of Renewable and Sustainable Energy, 16, 023504. DOI: 10.1063/5.0202220