> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plantpredict.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Standard Backtracking

## Summary

Standard Backtracking adjusts single-axis tracker angles to prevent row-to-row shading during low-sun-angle periods (early morning and late afternoon). PlantPredict implements a slope-aware backtracking algorithm based on Anderson & Mikofski (2020), which handles uniformly-sloped terrain. The classical Lorenzo et al. (2011) approach is a special case when the terrain is horizontal.

## Inputs

| Name                     | Symbol          | Units   | Description                                                          |
| ------------------------ | --------------- | ------- | -------------------------------------------------------------------- |
| **True-Tracking Angle**  | $\alpha$        | degrees | Rotation angle from [True Tracking](/models/tracking/true_tracking)  |
| **Collector Width**      | $\ell_m$        | m       | Tracker bay width perpendicular to rotation axis                     |
| **Row-to-Row Pitch**     | $p$             | m       | Horizontal distance between tracker rotation axes                    |
| **Ground Slope**         | $\beta_g$       | degrees | Terrain slope angle (0° for horizontal)                              |
| **Ground Slope Azimuth** | $\gamma_g$      | degrees | Direction the slope faces (downhill direction, clockwise from north) |
| **Tracker Axis Azimuth** | $\gamma_{axis}$ | degrees | Tracker axis orientation (clockwise from north)                      |

***

## Outputs

| Name                   | Symbol     | Units   | Description                                               |
| ---------------------- | ---------- | ------- | --------------------------------------------------------- |
| **Backtracking Angle** | $\alpha_B$ | degrees | Adjusted tracker rotation angle with backtracking applied |

***

## Detailed Description

The algorithm first decomposes the ground slope into two components relative to the tracker orientation: the axis tilt (along the rotation axis) and the cross-axis slope (perpendicular to the axis). The cross-axis slope determines the elevation difference between adjacent rows, which drives the backtracking geometry. The algorithm then checks whether inter-row shading would occur at the true-tracking angle, and if so, calculates the corrected rotation angle that eliminates shading.

### Axis Tilt

The axis tilt ($\beta_a$) is the component of ground slope **along** the tracker rotation axis. When a tracker is installed on sloped terrain, the rotation axis itself may be tilted relative to horizontal.

First, calculate the azimuth difference between the tracker axis and the slope direction:

$$
\Delta\gamma = \gamma_{axis} - \gamma_g
$$

The axis tilt is:

$$
\beta_a = \arctan(\tan\beta_g \cos\Delta\gamma)
$$

When the tracker axis is aligned with the slope direction ($\Delta\gamma = 0°$), the axis tilt equals the ground slope. When the tracker axis is perpendicular to the slope direction ($\Delta\gamma = 90°$), the axis tilt is zero.

### Cross-Axis Slope

The cross-axis slope ($\beta_c$) is the component of ground slope **perpendicular** to the tracker rotation axis. This is a key parameter for backtracking because it determines the elevation difference between adjacent tracker rows.

The cross-axis slope is:

$$
\beta_c = -\arcsin(\sin\Delta\gamma \sin\beta_g)
$$

The sign of $\beta_c$ indicates which adjacent row is higher: for a N-S oriented tracker, $\beta_c > 0$ means the east row is higher, while $\beta_c < 0$ means the west row is higher. For flat terrain ($\beta_g = 0°$), $\beta_c = 0°$. When the direction of the slope is parallel to the tracker axis ($\Delta\gamma = 0°$), $\beta_c = 0°$ because all rows are at the same elevation. When the direction of the slope is perpendicular to the tracker axis ($\Delta\gamma = 90°$), $|\beta_c| = \beta_g$.

### Backtracking Correction

The ground coverage ratio (GCR) is the other key parameter for backtracking as it characterizes the array density:

$$
GCR = \frac{\ell_m}{p}
$$

**Shading condition**

Inter-row shading occurs when the projected width of a tilted tracker row exceeds the "available" spacing between rows. Accounting for the cross-axis slope, shading occurs when:

$$
|\cos(\alpha - \beta_c)| < GCR \cdot \cos\beta_c
$$

**Corrected angle**

When shading would occur, the tracker rotates away from the true-tracking position to eliminate the shade. The corrected angle that just eliminates shading is:

$$
\alpha_B = \alpha - \text{sign}(\alpha) \cdot \arccos\left(\frac{|\cos(\alpha - \beta_c)|}{GCR \cdot \cos\beta_c}\right)
$$

When the shading condition is not met, no correction is needed and the tracker follows the sun: $\alpha_B = \alpha$.

### Special Case: Flat Terrain (Lorenzo)

For horizontal terrain ($\beta_g = 0°$), both axis tilt and cross-axis slope are zero ($\beta_a = \beta_c = 0°$). The backtracking condition becomes $|\alpha| > \arccos(GCR)$ and the backtracking equation simplifies to:

$$
\alpha_B = \alpha - \text{sign}(\alpha) \cdot \arccos\left(\frac{|\cos\alpha|}{GCR}\right)
$$

This is the classical formula from Lorenzo et al. (2011).

***

## References

* Anderson, K. & Mikofski, M. (2020). *Slope-Aware Backtracking for Single-Axis Trackers.* NREL Technical Report NREL/TP-5K00-76626. DOI: [10.2172/1660126](https://doi.org/10.2172/1660126)
* Lorenzo, E., Narvarte, L., & Muñoz, J. (2011). *Tracking and back-tracking.* Progress in Photovoltaics, 19(6), 747-753. DOI: [10.1002/pip.1085](https://doi.org/10.1002/pip.1085)
