Skip to content

Change g_poa_effective to effective_irradiance #2235

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
6 changes: 3 additions & 3 deletions docs/sphinx/source/user_guide/pvsystem.rst
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ data irradiance and temperature.

.. ipython:: python

pdc = system.pvwatts_dc(g_poa_effective=1000, temp_cell=30)
pdc = system.pvwatts_dc(effective_irradiance=1000, temp_cell=30)
print(pdc)

Methods attached to a PVSystem object wrap the corresponding functions in
Expand All @@ -84,8 +84,8 @@ using data stored in the PVSystem attributes. Compare the
:py:meth:`~pvlib.pvsystem.PVSystem.pvwatts_dc` method signature to the
:py:func:`~pvlib.pvsystem.pvwatts_dc` function signature:

* :py:meth:`PVSystem.pvwatts_dc(g_poa_effective, temp_cell) <pvlib.pvsystem.PVSystem.pvwatts_dc>`
* :py:func:`pvwatts_dc(g_poa_effective, temp_cell, pdc0, gamma_pdc, temp_ref=25.) <pvlib.pvsystem.pvwatts_dc>`
* :py:meth:`PVSystem.pvwatts_dc(effective_irradiance, temp_cell) <pvlib.pvsystem.PVSystem.pvwatts_dc>`
* :py:func:`pvwatts_dc(effective_irradiance, temp_cell, pdc0, gamma_pdc, temp_ref=25.) <pvlib.pvsystem.pvwatts_dc>`

How does this work? The :py:meth:`~pvlib.pvsystem.PVSystem.pvwatts_dc`
method looks in `PVSystem.module_parameters` for the `pdc0`, and
Expand Down
35 changes: 35 additions & 0 deletions docs/sphinx/source/whatsnew/v0.13.0.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
.. _whatsnew_01300:


v0.13.0 (September XX, 2025)
------------------------

Breaking Changes
~~~~~~~~~~~~~~~~
* Rename parameter name ``g_poa_effective`` to ``effective_irradiance`` in
:py:func:`~pvlib.pvsystem.PVSystem.pvwatts_dc` and :py:func:`~pvlib.pvsystem.pvwatts_dc`.
(:issue:`1253`, :pull:`2235`)

Bug fixes
~~~~~~~~~


Enhancements
~~~~~~~~~~~~


Documentation
~~~~~~~~~~~~~


Testing
~~~~~~~


Maintenance
~~~~~~~~~~~


Contributors
~~~~~~~~~~~~
* Adam R. Jensen (:ghuser:`AdamRJensen`)
22 changes: 13 additions & 9 deletions pvlib/pvsystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from abc import ABC, abstractmethod
from typing import Optional, Union

from pvlib._deprecation import deprecated
from pvlib._deprecation import renamed_kwarg_warning

import pvlib # used to avoid albedo name collision in the Array class
from pvlib import (atmosphere, iam, inverter, irradiance,
Expand Down Expand Up @@ -845,24 +845,26 @@ def scale_voltage_current_power(self, data):
for array, data in zip(self.arrays, data)
)

@renamed_kwarg_warning(
"0.13.0", "g_poa_effective", "effective_irradiance", "0.14.0")
@_unwrap_single_value
def pvwatts_dc(self, g_poa_effective, temp_cell):
def pvwatts_dc(self, effective_irradiance, temp_cell):
Comment on lines 850 to +851
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@renamed_kwarg_warning("0.12.0", "g_poa_effective", "effective_irradiance", "0.13.0")
@_unwrap_single_value
def pvwatts_dc(self, effective_irradiance, temp_cell):

"""
Calculates DC power according to the PVWatts model using
:py:func:`pvlib.pvsystem.pvwatts_dc`, `self.module_parameters['pdc0']`,
and `self.module_parameters['gamma_pdc']`.

See :py:func:`pvlib.pvsystem.pvwatts_dc` for details.
"""
g_poa_effective = self._validate_per_array(g_poa_effective)
effective_irradiance = self._validate_per_array(effective_irradiance)
temp_cell = self._validate_per_array(temp_cell)
return tuple(
pvwatts_dc(g_poa_effective, temp_cell,
pvwatts_dc(effective_irradiance, temp_cell,
array.module_parameters['pdc0'],
array.module_parameters['gamma_pdc'],
**_build_kwargs(['temp_ref'], array.module_parameters))
for array, g_poa_effective, temp_cell
in zip(self.arrays, g_poa_effective, temp_cell)
for array, effective_irradiance, temp_cell
in zip(self.arrays, effective_irradiance, temp_cell)
)

def pvwatts_losses(self):
Expand Down Expand Up @@ -2799,7 +2801,9 @@ def scale_voltage_current_power(data, voltage=1, current=1):
return df_sorted


def pvwatts_dc(g_poa_effective, temp_cell, pdc0, gamma_pdc, temp_ref=25.):
@renamed_kwarg_warning(
"0.12.0", "g_poa_effective", "effective_irradiance", "0.13.0")
def pvwatts_dc(effective_irradiance, temp_cell, pdc0, gamma_pdc, temp_ref=25.):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
def pvwatts_dc(effective_irradiance, temp_cell, pdc0, gamma_pdc, temp_ref=25.):
from pvlib._deprecation import renamed_kwarg_warning
@renamed_kwarg_warning("0.12.0", "g_poa_effective", "effective_irradiance", "0.13.0")
def pvwatts_dc(effective_irradiance, temp_cell, pdc0, gamma_pdc, temp_ref=25.):

What do you think about deprecating the parameter names with the decorator introduced in #2237?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's obviously a very good idea :)

r"""
Implements NREL's PVWatts DC power model. The PVWatts DC model [1]_ is:

Expand All @@ -2815,7 +2819,7 @@ def pvwatts_dc(g_poa_effective, temp_cell, pdc0, gamma_pdc, temp_ref=25.):

Parameters
----------
g_poa_effective: numeric
effective_irradiance: numeric
Irradiance transmitted to the PV cells. To be
fully consistent with PVWatts, the user must have already
applied angle of incidence losses, but not soiling, spectral,
Expand Down Expand Up @@ -2843,7 +2847,7 @@ def pvwatts_dc(g_poa_effective, temp_cell, pdc0, gamma_pdc, temp_ref=25.):
(2014).
""" # noqa: E501

pdc = (g_poa_effective * 0.001 * pdc0 *
pdc = (effective_irradiance * 0.001 * pdc0 *
(1 + gamma_pdc * (temp_cell - temp_ref)))

return pdc
Expand Down