Skip to content

Commit a81012d

Browse files
authored
Merge branch 'main' into merra2
2 parents 6835fde + 9f9a374 commit a81012d

21 files changed

Lines changed: 2021 additions & 210 deletions

File tree

docs/examples/agrivoltaics/plot_agrivoltaics_ground_irradiance.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,15 @@
1313
# is referred to :doi:`10.69766/XAEU5008`.
1414
#
1515
# This gallery example is based on an actual AgriPV plant, namely
16-
# European Energy's `Flakkebjerg AgriPV site
17-
# <https://europeanenergy.com/2023/12/20/using-the-same-land-twice-at-european-\
18-
# energys-flakkebjerg-solar-park/>`_.
16+
# European Energy's Flakkebjerg AgriPV site.
1917
#
2018
# The first steps are to define the plant location and to calculate solar
2119
# position and clearsky irradiance for a single day as an example.
2220
#
2321
# .. figure:: ../../_images/agrivoltaics_system.jpg
2422
# :align: center
2523
# :width: 75%
26-
# :alt: Photo of an agriPV system
24+
# :alt: Photo of the Flakkebjerg agriPV system
2725
#
2826
# Photo of an agriPV system.
2927
# *Source: Adam R. Jensen*
@@ -136,17 +134,21 @@
136134
# (i.e., receives DNI).
137135

138136
vf_ground_sky = pvlib.bifacial.utils.vf_ground_sky_2d_integ(
139-
surface_tilt=tracking_orientations['surface_tilt'],
137+
tracker_rotation=tracking_orientations['tracker_theta'],
140138
gcr=gcr,
141139
height=height,
142140
pitch=pitch,
143141
)
144142

145-
unshaded_ground_fraction = pvlib.bifacial.utils._unshaded_ground_fraction(
146-
surface_tilt=tracking_orientations['surface_tilt'],
147-
surface_azimuth=tracking_orientations['surface_azimuth'],
143+
phi = pvlib.shading.projected_solar_zenith_angle(
148144
solar_zenith=solpos['apparent_zenith'],
149145
solar_azimuth=solpos['azimuth'],
146+
axis_tilt=0,
147+
axis_azimuth=axis_azimuth,
148+
)
149+
unshaded_ground_fraction = pvlib.bifacial.utils._unshaded_ground_fraction(
150+
tracker_rotation=tracking_orientations['tracker_theta'],
151+
phi=phi,
150152
gcr=gcr,
151153
)
152154

docs/sphinx/source/reference/bifacial.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Functions for calculating front and back surface irradiance
1111
bifacial.pvfactors.pvfactors_timeseries
1212
bifacial.infinite_sheds.get_irradiance
1313
bifacial.infinite_sheds.get_irradiance_poa
14+
bifacial.ants2d.get_irradiance
1415

1516
Loss models that are specific to bifacial PV systems
1617

docs/sphinx/source/user_guide/getting_started/installation.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ Follow these steps to obtain the library using git/GitHub:
138138
Please see GitHub's
139139
`Forking Projects <https://guides.github.com/activities/forking/>`_,
140140
`Fork A Repo <https://help.github.com/articles/fork-a-repo/>`_,
141-
and the `git-scm <https://git-scm.com/documentation>`_ for
141+
and the `git-scm <https://git-scm.com/docs>`_ for
142142
more details.
143143

144144
.. _setupenvironment:

docs/sphinx/source/user_guide/modeling_topics/bifacial.rst

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ the primary source of light. The primary challenge in modeling a PV system
1212
with bifacial modules is estimating the irradiance on the front and back
1313
surfaces.
1414

15-
pvlib-python provides two groups of functions for estimating front and back
15+
pvlib-python provides three groups of functions for estimating front and back
1616
irradiance:
1717

1818
1. a wrapper for convenient use of the pvfactors model:
@@ -22,6 +22,7 @@ irradiance:
2222
:py:func:`~pvlib.bifacial.infinite_sheds.get_irradiance`
2323
:py:func:`~pvlib.bifacial.infinite_sheds.get_irradiance_poa`
2424

25+
3. the ANTS-2D bifacial model: :py:func:`~pvlib.bifacial.ants2d.get_irradiance`
2526

2627
pvfactors
2728
---------
@@ -50,7 +51,7 @@ after installation, Python code still accesses it as "pvfactors"
5051
Infinite Sheds
5152
--------------
5253

53-
The "infinite sheds" model [1] is a 2-dimensional model of irradiance on the
54+
The "infinite sheds" model [1]_ is a 2-dimensional model of irradiance on the
5455
front and rear surfaces of a PV array. The model assumes that the array
5556
comprises parallel, equally spaced rows (sheds) and calculates irradiance in
5657
the middle of a shed which is far from the front and back rows of the array.
@@ -101,7 +102,7 @@ View factors from the ground to the sky are calculated at points spaced along
101102
a one-dimensional axis on the ground, with the origin under the center of a
102103
row and the positive direction toward the right. The positive direction is
103104
considered to be towards the "front" of the array. Array height differs in this
104-
code from the description in [1], where array height is described at the row's
105+
code from the description in [1]_, where array height is described at the row's
105106
lower edge.
106107

107108
If ``model='isotropic'`` (the default), ``dhi`` is assumed to be isotropically
@@ -111,9 +112,23 @@ the input ``dhi`` is decomposed into circumsolar and isotropic components using
111112
:py:func:`~pvlib.irradiance.haydavies`, with the circumsolar component treated
112113
as additional ``dni`` for transposition and shading purposes.
113114

114-
This model is influenced by the 2D model published by Marion, *et al.* in [2].
115+
This model is influenced by the 2D model published by Marion, *et al.* in [2]_.
115116

116117

118+
ANTS-2D
119+
-------
120+
121+
The ANTS-2D model is a 2-D model similar to the Infinite Sheds and pvfactors
122+
models. However, it has additional inputs to allow modeling of arrays on
123+
sloped terrain and ground surfaces with nonuniform albedo. It partitions the
124+
module and ground surfaces into a user-specified number of segments to better
125+
capture irradiance nonuniformity effects. It is also computationally efficient
126+
relative to models of comparable capability like pvfactors. Finally, it can
127+
compute and return irradiance components at the ground level, which may be
128+
useful for agriPV modeling.
129+
130+
For details, see :py:func:`~pvlib.bifacial.ants2d.get_irradiance` and Ref. [3]_.
131+
117132
References
118133
----------
119134
.. [1] Mikofski, M., Darawali, R., Hamer, M., Neubert, A., and Newmiller,
@@ -124,4 +139,7 @@ References
124139
Riley, D., Stein, J. and Hansen, C. "A Practical Irradiance Model for
125140
Bifacial PV Modules".2017 IEEE 44th Photovoltaic Specialists Conference
126141
(PVSC), 2017, pp. 1537-1543. doi: 10.1109/PVSC.2017.8366263
142+
.. [3] K. S. Anderson, A. R. Jensen, and C. W. Hansen, "A Bifacial View
143+
Factor Model Considering Terrain Slope and Nonuniform Albedo,"
144+
IEEE JPV, 2026. :doi:`10.1109/JPHOTOV.2026.3677506`
127145

docs/sphinx/source/whatsnew/v0.15.3.rst

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,23 @@ Breaking Changes
1010

1111
Deprecations
1212
~~~~~~~~~~~~
13+
* Parameters ``npoints`` and ``vectorize`` in the following functions
14+
are now unnecessary and are deprecated (:pull:`2740`):
15+
16+
- :py:func:`pvlib.bifacial.infinite_sheds.get_irradiance`
17+
- :py:func:`pvlib.bifacial.infinite_sheds.get_irradiance_poa`
18+
- :py:func:`pvlib.bifacial.utils.vf_ground_sky_2d_integ`
19+
20+
* Parameter ``surface_tilt`` is deprecated and renamed to ``tracker_rotation``
21+
in :py:func:`pvlib.bifacial.utils.vf_ground_sky_2d_integ` (:pull:`2740`).
1322
* Deprecate non-polynomial interpolation options in :py:func:`pvlib.iam.interp` (:issue:`2394`, :pull:`2741`)
1423

24+
1525
Bug fixes
1626
~~~~~~~~~
27+
* Fix asymmetry in how ``max_rows`` is interpreted in
28+
:py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d`. The difference
29+
should be negligible for typical simulations. (:issue:`1867`, :pull:`2740`)
1730
* :py:func:`~pvlib.solarposition.sun_rise_set_transit_spa` now returns
1831
sunrise, sunset, and transit for the *local* calendar day of each input
1932
timestamp, restoring the behavior from before v0.11.1. Evening-local
@@ -34,13 +47,24 @@ Enhancements
3447
:py:func:`~pvlib.iotools.get_nsrdb_psm4_polar_tmy`.
3548
(:issue:`2639`, :pull:`2807`)
3649
* Ensure all timezones are available in all OSs. (:issue:`2795`, :pull:`2809`)
50+
* Implement the ANTS-2D bifacial irradiance model in
51+
:py:func:`pvlib.bifacial.ants2d.get_irradiance`. (:pull:`2740`)
52+
* Add parameters ``g0`` and ``g1`` to allow segmented ground surfaces in
53+
:py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d_integ` and
54+
:py:func:`~pvlib.bifacial.utils.vf_row_ground_2d_integ`. (:pull:`2740`)
55+
* Accelerate :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d_integ` by one or
56+
two orders of magnitude. This also makes :py:mod:`pvlib.bifacial.infinite_sheds` faster.
57+
(:pull:`2740`)
3758

3859

3960
Documentation
4061
~~~~~~~~~~~~~
4162
* Fix broken link in GitHub Contributing tab. (:issue:`2628`, :pull:`2806`)
4263
* Fixed broken ``interval`` keyword argument in the ``oedi_9068`` gallery
4364
example; the correct parameter name is ``time_step``. (:issue:`2791`)
65+
* Fixed several broken/outdated links: NREL clear-sky and spectral data
66+
pages, EnergyPlus documentation, git-scm.com, and a malformed Wikipedia
67+
URL. (:issue:`2489`, :pull:`2818`)
4468
* Standardized diffuse component names and descriptions in the docstrings of
4569
multiple functions in :py:mod:`pvlib.irradiance`. (:pull:`2827`)
4670

docs/sphinx/source/whatsnew/v0.16.0.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ Breaking Changes
1717

1818
Deprecations
1919
~~~~~~~~~~~~
20-
20+
* Deprecate :py:func:`pvlib.irradiance.king`.
21+
Use other diffuse transposition models in :py:mod:`pvlib.irradiance` instead.
22+
(:issue:`2636`, :pull:`2783`)
2123

2224
Bug fixes
2325
~~~~~~~~~
@@ -28,6 +30,9 @@ Bug fixes
2830

2931
Enhancements
3032
~~~~~~~~~~~~
33+
* Map beam horizontal irradiance to ``bhi`` when
34+
:py:func:`~pvlib.iotools.get_era5` is called with ``map_variables=True``.
35+
(:pull:`2819`)
3136
* Allow variables from multiple datasets to be requested at once in
3237
:py:func:`~pvlib.iotools.get_merra2`. (:pull:`2839`)
3338

pvlib/bifacial/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
"""
44

55
from pvlib._deprecation import deprecated
6-
from pvlib.bifacial import pvfactors, infinite_sheds, utils # noqa: F401
6+
from pvlib.bifacial import ( # noqa: F401
7+
ants2d, infinite_sheds, pvfactors, utils
8+
)
79
from .loss_models import power_mismatch_deline # noqa: F401
810

911
pvfactors_timeseries = deprecated(

0 commit comments

Comments
 (0)