pvlib.shading.projected_solar_zenith_angle(solar_zenith, solar_azimuth, axis_tilt, axis_azimuth)[source]#

Calculate projected solar zenith angle in degrees.

This solar zenith angle is projected onto the plane whose normal vector is defined by axis_tilt and axis_azimuth. The normal vector is in the direction of axis_azimuth (clockwise from north) and tilted from horizontal by axis_tilt. See Figure 5 in 1:

Wire diagram of coordinates systems to obtain the projected angle.

Fig. 5, 1: Solar coordinates projection onto tracker rotation plane.#

  • solar_zenith (numeric) – Sun’s apparent zenith in degrees.

  • solar_azimuth (numeric) – Sun’s azimuth in degrees.

  • axis_tilt (numeric) – Axis tilt angle in degrees. From horizontal plane to array plane.

  • axis_azimuth (numeric) – Axis azimuth angle in degrees. North = 0°; East = 90°; South = 180°; West = 270°


Projected_solar_zenith (numeric) – In degrees.


This projection has a variety of applications in PV. For example:

  • Projecting the sun’s position onto the plane perpendicular to the axis of a single-axis tracker (i.e. the plane whose normal vector coincides with the tracker torque tube) yields the tracker rotation angle that maximizes direct irradiance capture. This tracking strategy is called true-tracking. Learn more about tracking in Single-axis tracking.

  • Self-shading in large PV arrays is often modeled by assuming a simplified 2-D array geometry where the sun’s position is projected onto the plane perpendicular to the PV rows. The projected zenith angle is then used for calculations regarding row-to-row shading.


Calculate the ideal true-tracking angle for a horizontal north-south single-axis tracker:

>>> rotation = projected_solar_zenith_angle(solar_zenith, solar_azimuth,
>>>                                         axis_tilt=0, axis_azimuth=180)

Calculate the projected zenith angle in a south-facing fixed tilt array (note: the axis_azimuth of a fixed-tilt row points along the length of the row):

>>> psza = projected_solar_zenith_angle(solar_zenith, solar_azimuth,
>>>                                     axis_tilt=0, axis_azimuth=90)



K. Anderson and M. Mikofski, ‘Slope-Aware Backtracking for Single-Axis Trackers’, National Renewable Energy Lab. (NREL), Golden, CO (United States); NREL/TP-5K00-76626, Jul. 2020. DOI: 10.2172/1660126.

Examples using pvlib.shading.projected_solar_zenith_angle#

Shaded fraction of a horizontal single-axis tracker

Shaded fraction of a horizontal single-axis tracker