pvlib.tracking.singleaxis#

pvlib.tracking.singleaxis(apparent_zenith, solar_azimuth, axis_tilt=0, axis_azimuth=0, max_angle=90, backtrack=True, gcr=0.2857142857142857, cross_axis_tilt=0)[source]#

Determine the rotation angle of a single-axis tracker when given particular solar zenith and azimuth angles.

The rotation angle is chosen to minimize the angle of incidence (AOI) of the sun’s beam onto the panel, thereby maximizing the use of direct normal irradiance (DNI). Backtracking may be specified, in which case a ground coverage ratio is required. When backtracking, the rotation is adjusted away from the AOI-minimizing angle to avoid row-to-row shading.

See [1] and [2] for details about the equations.

Rotation angle is determined in a right-handed coordinate system. The tracker axis_azimuth defines the positive y-axis, the positive x-axis is 90 degrees clockwise from the y-axis and parallel to the Earth’s surface, and the positive z-axis is normal to both x and y-axes and oriented skyward. Rotation angle tracker_theta is a right-handed rotation around the y-axis in the x, y, z coordinate system and indicates tracker position relative to horizontal. For example, if tracker axis_azimuth is 180 (oriented south) and axis_tilt is zero, then a tracker_theta of zero is horizontal, a tracker_theta of 30 degrees is a rotation of 30 degrees towards the west, and a tracker_theta of -90 degrees is a rotation to the vertical plane facing east.

apparent_zenithfloat, 1d array, or Series

Solar apparent zenith angles in decimal degrees.

solar_azimuthfloat, 1d array, or Series

Solar apparent azimuth angles in decimal degrees.

axis_tiltfloat, default 0

The tilt of the axis of rotation (i.e, the y-axis defined by axis_azimuth) with respect to horizontal (degrees). Positive axis_tilt is downward in the direction of axis_azimuth. For example, for a tracker with axis_azimuth=180 and axis_tilt=10, the north end is higher than the south end of the axis.

axis_azimuthfloat, default 0

A value denoting the compass direction along which the axis of rotation lies. Measured in decimal degrees east of north.

max_anglefloat or tuple, default 90

A value denoting the maximum rotation angle, in decimal degrees, of the one-axis tracker from its horizontal position (horizontal if axis_tilt = 0). If a float is provided, it represents the maximum rotation angle, and the minimum rotation angle is assumed to be the opposite of the maximum angle. If a tuple of (min_angle, max_angle) is provided, it represents both the minimum and maximum rotation angles.

A rotation to max_angle is a counter-clockwise rotation about the y-axis of the tracker coordinate system. For example, for a tracker with axis_azimuth oriented to the south, a rotation to max_angle is towards the west, and a rotation toward -max_angle is in the opposite direction, toward the east.

backtrackbool, default True

Controls whether the tracker has the capability to “backtrack” to avoid row-to-row shading. False denotes no backtrack capability. True denotes backtrack capability.

gcrfloat, default 2.0/7.0

A value denoting the ground coverage ratio of a tracker system that utilizes backtracking; i.e. the ratio between the PV array surface area to the total ground area. A tracker system with modules 2 meters wide, centered on the tracking axis, with 6 meters between the tracking axes has a gcr of 2/6=0.333. If gcr is not provided, a gcr of 2/7 is default. gcr must be <=1.

cross_axis_tiltfloat, default 0.0

The angle, relative to horizontal, of the line formed by the intersection between the slope containing the tracker axes and a plane perpendicular to the tracker axes. The cross-axis tilt should be specified using a right-handed convention. For example, trackers with axis_azimuth of 180 degrees (heading south) will have a negative cross-axis tilt if the tracker axes plane slopes down to the east and positive cross-axis tilt if the tracker axes plane slopes down to the west. Use calc_cross_axis_tilt() to calculate cross_axis_tilt. [degrees]

dict or DataFrame with the following columns:
  • tracker_theta: The rotation angle of the tracker is a right-handed rotation defined by axis_azimuth. tracker_theta = 0 is horizontal. [degrees]

  • aoi: The angle-of-incidence of direct irradiance onto the rotated panel surface. [degrees]

  • surface_tilt: The angle between the panel surface and the earth surface, accounting for panel rotation. [degrees]

  • surface_azimuth: The azimuth of the rotated panel (degrees), determined by projecting the vector normal to the panel’s surface to the earth’s surface. Where surface_tilt``=0, ``surface_azimuth is set equal to axis_azimuth - 90.

pvlib.tracking.calc_axis_tilt pvlib.tracking.calc_cross_axis_tilt pvlib.tracking.calc_surface_orientation

Examples using pvlib.tracking.singleaxis#

Agrivoltaic system modeling

Agrivoltaic system modeling

Bifacial Modeling - procedural

Bifacial Modeling - procedural

Modeling Transposition Gain

Modeling Transposition Gain

Shaded fraction of a horizontal single-axis tracker

Shaded fraction of a horizontal single-axis tracker

Modelling shading losses in modules with bypass diodes

Modelling shading losses in modules with bypass diodes

Single-axis tracking

Single-axis tracking

Backtracking on sloped terrain

Backtracking on sloped terrain

Discontinuous Tracking

Discontinuous Tracking