Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
d6d6f31
ants2d and new VF code
kandersolar Sep 29, 2025
99a7a81
remove some cruft
kandersolar Sep 29, 2025
a6f22bb
add tests for ants2d._shaded_fraction
kandersolar Oct 7, 2025
02686aa
refactoring and more tests
kandersolar Oct 7, 2025
034efd9
tests for _apply_ground_slope
kandersolar Oct 8, 2025
4748915
tests for _apply_sky_diffuse_model
kandersolar Oct 8, 2025
d2bf3ad
fix return shape and tests for vf_row_ground_2d_integ
kandersolar Oct 8, 2025
405649b
fix return shape and tests for vf_row_sky_2d_integ
kandersolar Oct 8, 2025
7dd6853
major docstring cleanup
kandersolar Oct 8, 2025
505d8d4
standardize to "back" instead of "rear"
kandersolar Oct 8, 2025
8811daa
shape fixes, pandas out
kandersolar Oct 9, 2025
0907682
bugfix in unshaded ground fraction
kandersolar Oct 9, 2025
8c792ec
add several tests for main function
kandersolar Oct 9, 2025
9d28b75
test updates
kandersolar Oct 9, 2025
2331023
better return type logic; more get_irradiance tests
kandersolar Oct 9, 2025
56fe82b
expose max_rows, more get_irradiance tests
kandersolar Oct 10, 2025
920ec30
fix issue with horizontal array and large max_rows
kandersolar Oct 13, 2025
403c0a4
fix unshaded_ground_fraction for horizontal special case
kandersolar Oct 13, 2025
24c8f32
fix row->ground VF edge case
kandersolar Oct 13, 2025
06f2a97
switch default model from isotropic to perez
kandersolar Oct 13, 2025
69105fd
add hardcoded regression test
kandersolar Oct 13, 2025
eaa8fd1
alphabetize module imports
kandersolar Oct 13, 2025
98d1664
docstring work
kandersolar Oct 13, 2025
784877f
utils functions: make height and pitch optional
kandersolar Oct 13, 2025
2cbfb0d
get infinite_sheds working again
kandersolar Oct 13, 2025
7927422
polishing
kandersolar Oct 13, 2025
52d4fc2
fix output when surface angle is scalar but irrad is array
kandersolar Dec 1, 2025
39663ea
simplify numpy import
kandersolar Dec 1, 2025
5a650e4
add option to return irradiance incident on ground surface
kandersolar Dec 1, 2025
28480f7
more tests for ground irradiance
kandersolar Dec 1, 2025
0fa4bc9
one more test
kandersolar Dec 1, 2025
258d5a6
use `assert_allclose`, not `assert np.isclose`
kandersolar Dec 4, 2025
015500d
allow specifying custom row/ground subsets
kandersolar Dec 4, 2025
2b5750a
lint
kandersolar Dec 4, 2025
6e23585
Merge remote-tracking branch 'upstream/main' into ants2d
kandersolar Apr 21, 2026
cf1ce33
use `poa_` for `return_components=True` after #2627
kandersolar Apr 21, 2026
92a95b2
misc cleanup
kandersolar Apr 24, 2026
e651baf
fix squeeze bug
kandersolar Apr 30, 2026
c8be126
deprecate `npoints`, `vectorize`
kandersolar Apr 30, 2026
69eaf67
fix deprecation version
kandersolar Apr 30, 2026
485eb0c
lint
kandersolar Apr 30, 2026
e4c0c51
docstring cleanup
kandersolar Apr 30, 2026
30257a7
whatsnew entries
kandersolar Apr 30, 2026
a36841d
fix broken gallery example
kandersolar Apr 30, 2026
611f9da
add `reference` docs entry and user guide description
kandersolar Apr 30, 2026
e81e250
add test to cover untested branch
kandersolar Apr 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -136,17 +136,21 @@
# (i.e., receives DNI).

vf_ground_sky = pvlib.bifacial.utils.vf_ground_sky_2d_integ(
surface_tilt=tracking_orientations['surface_tilt'],
tracker_rotation=tracking_orientations['tracker_theta'],
gcr=gcr,
height=height,
pitch=pitch,
)

unshaded_ground_fraction = pvlib.bifacial.utils._unshaded_ground_fraction(
surface_tilt=tracking_orientations['surface_tilt'],
surface_azimuth=tracking_orientations['surface_azimuth'],
phi = pvlib.shading.projected_solar_zenith_angle(
solar_zenith=solpos['apparent_zenith'],
solar_azimuth=solpos['azimuth'],
axis_tilt=0,
axis_azimuth=axis_azimuth,
)
unshaded_ground_fraction = pvlib.bifacial.utils._unshaded_ground_fraction(
tracker_rotation=tracking_orientations['tracker_theta'],
phi=phi,
gcr=gcr,
)

Expand Down
1 change: 1 addition & 0 deletions docs/sphinx/source/reference/bifacial.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Functions for calculating front and back surface irradiance
bifacial.pvfactors.pvfactors_timeseries
bifacial.infinite_sheds.get_irradiance
bifacial.infinite_sheds.get_irradiance_poa
bifacial.ants2d.get_irradiance

Loss models that are specific to bifacial PV systems

Expand Down
13 changes: 13 additions & 0 deletions docs/sphinx/source/user_guide/modeling_topics/bifacial.rst
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,19 @@ as additional ``dni`` for transposition and shading purposes.
This model is influenced by the 2D model published by Marion, *et al.* in [2].


ANTS-2D
-------

The ANTS-2D model is a 2-D model similar to the Infinite Sheds and pvfactors
models. However, it has additional inputs to allow modeling of arrays on
sloped terrain and ground surfaces with nonuniform albedo. It partitions the
module and ground surfaces into a user-specified number of segments to better
capture irradiance nonuniformity effects. It is also computationally efficient
relative to models of comparable capability like pvfactors. Finally, it can
compute and return irradiance components at the ground level, which may be
useful for agriPV modeling.


References
----------
.. [1] Mikofski, M., Darawali, R., Hamer, M., Neubert, A., and Newmiller,
Expand Down
16 changes: 16 additions & 0 deletions docs/sphinx/source/whatsnew/v0.15.2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@ Breaking Changes

Deprecations
~~~~~~~~~~~~
* Parameters ``npoints`` and ``vectorize`` in the following functions
are now unnecessary and are deprecated (:pull:`2740`):

- :py:func:`pvlib.bifacial.infinite_sheds.get_irradiance`
- :py:func:`pvlib.bifacial.infinite_sheds.get_irradiance_poa`
- :py:func:`pvlib.bifacial.utils.vf_ground_sky_2d_integ`

* Parameter ``surface_tilt`` is deprecated and renamed to ``tracker_rotation``
in :py:func:`pvlib.bifacial.utils.vf_ground_sky_2d_integ` (:pull:`2740`).


Bug fixes
Expand All @@ -18,6 +27,13 @@ Bug fixes

Enhancements
~~~~~~~~~~~~
* Implement the ANTS-2D bifacial irradiance model in
:py:func:`pvlib.bifacial.ants2d.get_irradiance`. (:pull:`2740`)
* Add parameters ``g0`` and ``g1`` to allow segmented ground surfaces in
:py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d_integ` and
:py:func:`~pvlib.bifacial.utils.vf_row_ground_2d_integ`. (:pull:`2740`)
* Accelerate :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d_integ` by one or
two orders of magnitude. (:pull:`2740`)


Documentation
Expand Down
4 changes: 3 additions & 1 deletion pvlib/bifacial/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
"""

from pvlib._deprecation import deprecated
from pvlib.bifacial import pvfactors, infinite_sheds, utils # noqa: F401
from pvlib.bifacial import ( # noqa: F401
ants2d, infinite_sheds, pvfactors, utils
)
from .loss_models import power_mismatch_deline # noqa: F401

pvfactors_timeseries = deprecated(
Expand Down
Loading
Loading