@@ -13,20 +13,20 @@ def singleaxis(apparent_zenith, apparent_azimuth,
13
13
Determine the rotation angle of a single-axis tracker when given particular
14
14
solar zenith and azimuth angles.
15
15
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.
18
18
19
19
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.
30
30
31
31
Parameters
32
32
----------
@@ -39,7 +39,7 @@ def singleaxis(apparent_zenith, apparent_azimuth,
39
39
axis_tilt : float, default 0
40
40
The tilt of the axis of rotation (i.e, the y-axis defined by
41
41
``axis_azimuth``) with respect to horizontal.
42
- ``axis_tilt`` must be >= 0 and <= 90. [degree ]
42
+ ``axis_tilt`` must be >= 0 and <= 90. [degrees ]
43
43
44
44
axis_azimuth : float, default 0
45
45
A value denoting the compass direction along which the axis of
@@ -53,37 +53,37 @@ def singleaxis(apparent_zenith, apparent_azimuth,
53
53
opposite of the maximum angle. If a tuple of (min_angle, max_angle) is
54
54
provided, it represents both the minimum and maximum rotation angles.
55
55
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
57
57
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.
63
63
64
64
backtrack : bool, default True
65
65
Controls whether the tracker has the capability to "backtrack"
66
66
to avoid row-to-row shading. False denotes no backtrack
67
67
capability. True denotes backtrack capability.
68
68
69
69
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.
76
76
77
77
cross_axis_tilt : float, default 0.0
78
78
The angle, relative to horizontal, of the line formed by the
79
79
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]
87
87
88
88
Returns
89
89
-------
@@ -107,9 +107,11 @@ def singleaxis(apparent_zenith, apparent_azimuth,
107
107
108
108
References
109
109
----------
110
- .. [1] Kevin Anderson and Mark Mikofski, "Slope-Aware Backtracking for
110
+ .. [1] Anderson, K., and Mikofski, M. , "Slope-Aware Backtracking for
111
111
Single-Axis Trackers", Technical Report NREL/TP-5K00-76626, July 2020.
112
112
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`
113
115
"""
114
116
115
117
# MATLAB to Python conversion by
@@ -127,9 +129,9 @@ def singleaxis(apparent_zenith, apparent_azimuth,
127
129
if apparent_azimuth .ndim > 1 or apparent_zenith .ndim > 1 :
128
130
raise ValueError ('Input dimensions must not exceed 1' )
129
131
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
131
133
# 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
133
135
# that the panel is horizontal. Here, our convention is that a clockwise
134
136
# rotation is positive, to view rotation angles in the same frame of
135
137
# reference as azimuth. For example, for a system with tracking
0 commit comments