@@ -13,20 +13,20 @@ def singleaxis(apparent_zenith, apparent_azimuth,
1313 Determine the rotation angle of a single-axis tracker when given particular
1414 solar zenith and azimuth angles.
1515
16- See [1]_ for details about the equations. Backtracking may be specified,
17- and if so, a ground coverage ratio is required.
16+ See [1]_ and [2]_ for details about the equations. Backtracking may be
17+ specified, in which case a ground coverage ratio is required.
1818
1919 Rotation angle is determined in a right-handed coordinate system. The
20- tracker `axis_azimuth` defines the positive y-axis, the positive x-axis is
21- 90 degrees clockwise from the y-axis and parallel to the Earth's surface,
22- and the positive z-axis is normal to both x & y-axes and oriented skyward.
23- Rotation angle `tracker_theta` is a right-handed rotation around the y-axis
24- in the x, y, z coordinate system and indicates tracker position relative to
25- horizontal. For example, if tracker `axis_azimuth` is 180 (oriented south)
26- and `axis_tilt` is zero, then a `tracker_theta` of zero is horizontal, a
27- `tracker_theta` of 30 degrees is a rotation of 30 degrees towards the west,
28- and a `tracker_theta` of -90 degrees is a rotation to the vertical plane
29- facing east.
20+ tracker `` axis_azimuth`` defines the positive y-axis, the positive x-axis
21+ is 90 degrees clockwise from the y-axis and parallel to the Earth's
22+ surface, and the positive z-axis is normal to both x and y-axes and
23+ oriented skyward. Rotation angle `` tracker_theta`` is a right-handed
24+ rotation around the y-axis in the x, y, z coordinate system and indicates
25+ tracker position relative to horizontal. For example, if tracker
26+ ``axis_azimuth`` is 180 (oriented south) and ``axis_tilt`` is zero, then a
27+ `` tracker_theta`` of zero is horizontal, a ``tracker_theta`` of 30 degrees
28+ is a rotation of 30 degrees towards the west, and a ``tracker_theta`` of
29+ -90 degrees is a rotation to the vertical plane facing east.
3030
3131 Parameters
3232 ----------
@@ -39,7 +39,7 @@ def singleaxis(apparent_zenith, apparent_azimuth,
3939 axis_tilt : float, default 0
4040 The tilt of the axis of rotation (i.e, the y-axis defined by
4141 ``axis_azimuth``) with respect to horizontal.
42- ``axis_tilt`` must be >= 0 and <= 90. [degree ]
42+ ``axis_tilt`` must be >= 0 and <= 90. [degrees ]
4343
4444 axis_azimuth : float, default 0
4545 A value denoting the compass direction along which the axis of
@@ -53,37 +53,37 @@ def singleaxis(apparent_zenith, apparent_azimuth,
5353 opposite of the maximum angle. If a tuple of (min_angle, max_angle) is
5454 provided, it represents both the minimum and maximum rotation angles.
5555
56- A rotation to ' max_angle' is a counter-clockwise rotation about the
56+ A rotation to `` max_angle`` is a counter-clockwise rotation about the
5757 y-axis of the tracker coordinate system. For example, for a tracker
58- with ' axis_azimuth' oriented to the south, a rotation to 'max_angle'
59- is towards the west, and a rotation toward 'min_angle' is in the
60- opposite direction, toward the east. Hence a max_angle of 180 degrees
61- (equivalent to max_angle = (-180, 180)) allows the tracker to achieve
62- its full rotation capability.
58+ with `` axis_azimuth`` oriented to the south, a rotation to
59+ ``max_angle`` is towards the west, and a rotation toward ``-max_angle``
60+ is in the opposite direction, toward the east. Hence, a `` max_angle``
61+ of 180 degrees (equivalent to max_angle = (-180, 180)) allows the
62+ tracker to achieve its full rotation capability.
6363
6464 backtrack : bool, default True
6565 Controls whether the tracker has the capability to "backtrack"
6666 to avoid row-to-row shading. False denotes no backtrack
6767 capability. True denotes backtrack capability.
6868
6969 gcr : float, default 2.0/7.0
70- A value denoting the ground coverage ratio of a tracker system
71- which utilizes backtracking; i.e. the ratio between the PV array
72- surface area to total ground area. A tracker system with modules
73- 2 meters wide, centered on the tracking axis, with 6 meters
74- between the tracking axes has a gcr of 2/6=0.333. If gcr is not
75- provided, a gcr of 2/7 is default. gcr must be <=1.
70+ A value denoting the ground coverage ratio of a tracker system that
71+ utilizes backtracking; i.e. the ratio between the PV array surface area
72+ to the total ground area. A tracker system with modules 2 meters wide,
73+ centered on the tracking axis, with 6 meters between the tracking axes
74+ has a `` gcr`` of 2/6=0.333. If `` gcr`` is not provided, a ``gcr`` of
75+ 2/7 is default. `` gcr`` must be <=1.
7676
7777 cross_axis_tilt : float, default 0.0
7878 The angle, relative to horizontal, of the line formed by the
7979 intersection between the slope containing the tracker axes and a plane
80- perpendicular to the tracker axes. Cross -axis tilt should be specified
81- using a right-handed convention. For example, trackers with axis
82- azimuth of 180 degrees (heading south) will have a negative cross-axis
83- tilt if the tracker axes plane slopes down to the east and positive
84- cross-axis tilt if the tracker axes plane slopes down to the west. Use
85- :func:`~pvlib.tracking.calc_cross_axis_tilt` to calculate
86- `cross_axis_tilt`. [degrees]
80+ perpendicular to the tracker axes. The cross -axis tilt should be
81+ specified using a right-handed convention. For example, trackers with
82+ axis azimuth of 180 degrees (heading south) will have a negative
83+ cross-axis tilt if the tracker axes plane slopes down to the east and
84+ positive cross-axis tilt if the tracker axes plane slopes down to the
85+ west. Use :func:`~pvlib.tracking.calc_cross_axis_tilt` to calculate
86+ `` cross_axis_tilt` `. [degrees]
8787
8888 Returns
8989 -------
@@ -107,9 +107,11 @@ def singleaxis(apparent_zenith, apparent_azimuth,
107107
108108 References
109109 ----------
110- .. [1] Kevin Anderson and Mark Mikofski, "Slope-Aware Backtracking for
110+ .. [1] Anderson, K., and Mikofski, M. , "Slope-Aware Backtracking for
111111 Single-Axis Trackers", Technical Report NREL/TP-5K00-76626, July 2020.
112112 https://www.nrel.gov/docs/fy20osti/76626.pdf
113+ .. [2] Lorenzo, E., Narvarte, L., and Muñoz, J. (2011). Tracking and
114+ back-tracking 19(6), 747–753. :doi:`10.1002/pip.1085`
113115 """
114116
115117 # MATLAB to Python conversion by
@@ -127,9 +129,9 @@ def singleaxis(apparent_zenith, apparent_azimuth,
127129 if apparent_azimuth .ndim > 1 or apparent_zenith .ndim > 1 :
128130 raise ValueError ('Input dimensions must not exceed 1' )
129131
130- # The ideal tracking angle omega_ideal is the rotation to place the sun
132+ # The ideal tracking angle, omega_ideal, is the rotation to place the sun
131133 # position vector (xp, yp, zp) in the (x, z) plane, which is normal to
132- # the panel and contains the axis of rotation. omega_ideal= 0 indicates
134+ # the panel and contains the axis of rotation. omega_ideal=0 indicates
133135 # that the panel is horizontal. Here, our convention is that a clockwise
134136 # rotation is positive, to view rotation angles in the same frame of
135137 # reference as azimuth. For example, for a system with tracking
0 commit comments