pvlib / twoaxistracking

twoaxistracking is a python package for simulating two-axis tracking solar collectors, particularly self-shading.
http://twoaxistracking.rtfd.io/
BSD 3-Clause "New" or "Revised" License
7 stars 3 forks source link

Add option of specifying ground tilt to the `generate_field_layout` function #4

Closed AdamRJensen closed 2 years ago

AdamRJensen commented 2 years ago

Currently, it is not possible to take into account a field tilt, which certainly would be a useful feature.

Two things are required to allow for accounting for ground tilt. First, the generate_field_layout function should be updated to include an option for specifying the ground tilt. This can either be done by specifying a field_tilt and tilt_azimuth, or by specifying a tilt angle in both the N-S and E-W directions. In addition to the current output of the X and Y matrices, the function would also return a Z matrix with the relative heights of the neighboring trackers.

Second, the two_axis_shading_fraction function has to be adjusted such that the projection of the neighboring collectors onto the reference plane also takes into account the relative height differences. Specifically, the xoff and yoff arrays should be defined so they also take into account the z-axis.

AdamRJensen commented 2 years ago

It probably makes sense to follow the pvlib convention described here:

Note that, as with fixed-tilt arrays, the axis azimuth is determined as the angle clockwise from north. The azimuth of the terrain’s slope is also determined as an angle clockwise from north, pointing in the direction of the falling slope. So for example, a hillside that slopes down to the east has an azimuth of 90 degrees. The ground slope itself is always positive.

AdamRJensen commented 2 years ago

The parameters would then be:

Parameters
----------
slope_azimuth : float
    direction of normal to slope on horizontal [degrees]
slope_tilt : float
    tilt of normal to slope relative to vertical [degrees]

as defined by pvlib here