diff --git a/docs/sphinx/source/whatsnew/v0.16.2.rst b/docs/sphinx/source/whatsnew/v0.16.2.rst index 5893d8bf46..32c6991c00 100644 --- a/docs/sphinx/source/whatsnew/v0.16.2.rst +++ b/docs/sphinx/source/whatsnew/v0.16.2.rst @@ -24,6 +24,8 @@ Bug fixes Enhancements ~~~~~~~~~~~~ +* Add the wind-dependent ``freestanding_wind`` PVsyst temperature parameter + set and clarify the wind measurement height. (:issue:`2834`) * Add ``pandas==3.1.0`` support. (:pull:`2924`) * Add ``dataset`` parameter to :py:func:`~pvlib.iotools.get_era5` allowing for choosing between ERA5 and ERA5-Land datasets. @@ -70,6 +72,7 @@ Maintenance Contributors ~~~~~~~~~~~~ +* :ghuser:`sahaja9707` * :ghuser:`anshurajbisoyi98-ctrl` * Adam R. Jensen (:ghuser:`AdamRJensen`) * Cliff Hansen (:ghuser:`cwhanse`) diff --git a/pvlib/temperature.py b/pvlib/temperature.py index 55222c0fb1..ee649c8ab3 100644 --- a/pvlib/temperature.py +++ b/pvlib/temperature.py @@ -20,6 +20,7 @@ 'insulated_back_glass_polymer': {'a': -2.81, 'b': -.0455, 'deltaT': 0}, }, 'pvsyst': {'freestanding': {'u_c': 29.0, 'u_v': 0}, + 'freestanding_wind': {'u_c': 25.0, 'u_v': 1.2}, 'insulated': {'u_c': 15.0, 'u_v': 0}, 'semi_integrated': {'u_c': 20.0, 'u_v': 0}} } @@ -342,8 +343,8 @@ def pvsyst_cell(poa_global, temp_air, wind_speed=1.0, u_c=29.0, u_v=0.0, wind_speed : numeric, default 1.0 Wind speed in m/s measured at the same height for which the wind loss - factor was determined. The default value 1.0 m/s is the wind - speed at module height used to determine NOCT. [m/s] + factor was determined. See Notes for the ``freestanding_wind`` + parameter set. [m/s] u_c : float, default 29.0 Combined heat loss factor coefficient. The default value is @@ -388,15 +389,23 @@ def pvsyst_cell(poa_global, temp_air, wind_speed=1.0, u_c=29.0, u_v=0.0, factors provided represent the combined effect of convection, radiation and conduction, and their values are experimentally determined. - +-----------------+---------------+---------------+ - | Mounting | :math:`U_{c}` | :math:`U_{v}` | - +=================+===============+===============+ - | freestanding | 29.0 | 0.0 | - +-----------------+---------------+---------------+ - | insulated | 15.0 | 0.0 | - +-----------------+---------------+---------------+ - | semi_integrated | 20.0 | 0.0 | - +-----------------+---------------+---------------+ + +-------------------+---------------+---------------+ + | Parameter set | :math:`U_{c}` | :math:`U_{v}` | + +===================+===============+===============+ + | freestanding | 29.0 | 0.0 | + +-------------------+---------------+---------------+ + | freestanding_wind | 25.0 | 1.2 | + +-------------------+---------------+---------------+ + | insulated | 15.0 | 0.0 | + +-------------------+---------------+---------------+ + | semi_integrated | 20.0 | 0.0 | + +-------------------+---------------+---------------+ + + The ``freestanding_wind`` parameters are the PVUSA correlation described + in [3]_ for open-rack systems with wind speed data. Standard meteorological + wind speed is measured at 10 m above ground. The wind loss coefficient + must be appropriate for the measurement height; these coefficients are + not universal. Use coefficients fitted to the installation when available. Mounting cases can be described in terms of air flow across and around the rear-facing surface of the module: @@ -417,6 +426,11 @@ def pvsyst_cell(poa_global, temp_air, wind_speed=1.0, u_c=29.0, u_v=0.0, .. [2] Faiman, D. (2008). "Assessing the outdoor operating temperature of photovoltaic modules." Progress in Photovoltaics 16(4): 307-315. + .. [3] PVsyst SA, "Heat transfer coefficients (U-values)," PVsyst + documentation. [Online]. Available: + https://www.pvsyst.com/help/project-design/array-and-system-losses/array-thermal-losses/u-value-measurement.html. + [Accessed: 8-Nov-2026]. + Examples -------- >>> from pvlib.temperature import pvsyst_cell, TEMPERATURE_MODEL_PARAMETERS diff --git a/tests/test_temperature.py b/tests/test_temperature.py index f7cc242477..8fd7d9dbb6 100644 --- a/tests/test_temperature.py +++ b/tests/test_temperature.py @@ -78,6 +78,14 @@ def test_pvsyst_cell_kwargs(): assert_allclose(result, 33.315, 0.001) +def test_pvsyst_cell_freestanding_wind(): + params = temperature._temperature_model_params( + 'pvsyst', 'freestanding_wind') + result = temperature.pvsyst_cell(1000, 20, wind_speed=np.array([0, 5]), + **params) + assert_allclose(result, [52.4, 46.12903226]) + + def test_pvsyst_cell_ndarray(): temps = np.array([0, 10, 5]) irrads = np.array([0, 500, 0])