From ab0cef20924bce8d21d0637cc832992ff4e726c0 Mon Sep 17 00:00:00 2001 From: Cliff Hansen Date: Fri, 1 Dec 2023 12:20:30 -0700 Subject: [PATCH 1/7] add note about clearsky_model --- pvlib/modelchain.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pvlib/modelchain.py b/pvlib/modelchain.py index c88f8a7641..692686d700 100644 --- a/pvlib/modelchain.py +++ b/pvlib/modelchain.py @@ -460,7 +460,8 @@ class ModelChain: the physical location at which to evaluate the model. clearsky_model : str, default 'ineichen' - Passed to location.get_clearsky. + Passed to location.get_clearsky. Only used when DNI is not found in + the weather inputs. transposition_model : str, default 'haydavies' Passed to system.get_irradiance. From 2916b99b716c53f76f1ce4b936455c85f65f8c88 Mon Sep 17 00:00:00 2001 From: Cliff Hansen Date: Fri, 1 Dec 2023 12:25:18 -0700 Subject: [PATCH 2/7] whatsnew --- docs/sphinx/source/whatsnew/v0.10.3.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/sphinx/source/whatsnew/v0.10.3.rst b/docs/sphinx/source/whatsnew/v0.10.3.rst index 007eb8d34b..6ab233a3ad 100644 --- a/docs/sphinx/source/whatsnew/v0.10.3.rst +++ b/docs/sphinx/source/whatsnew/v0.10.3.rst @@ -28,6 +28,7 @@ Documentation * Create :ref:`weatherdata` User's Guide page. (:pull:`1754`) * Fixed a plotting issue in the IV curve gallery example (:pull:`1895`) * Fixed `detect_clearsky` example in `clearsky.rst` (:issue:`1914`) +* Clarified purpose of `ModelChain.clearsky_model` (:pull:`1924`) Requirements ~~~~~~~~~~~~ @@ -44,3 +45,4 @@ Contributors * Harry Jack (:ghuser:`harry-solcast`) * Adam R. Jensen (:ghuser:`AdamRJensen`) * Kevin Anderson (:ghuser:`kandersolar`) +* Cliff Hansen (:ghuser:`cwhanse`) From ae06f5fb0006523822e973e07383e0cb98ebfb0a Mon Sep 17 00:00:00 2001 From: Cliff Hansen Date: Wed, 13 Dec 2023 16:25:52 -0700 Subject: [PATCH 3/7] pass clearsky_model to get_clearsky --- pvlib/modelchain.py | 3 ++- pvlib/tests/test_modelchain.py | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pvlib/modelchain.py b/pvlib/modelchain.py index 692686d700..04611fe7e1 100644 --- a/pvlib/modelchain.py +++ b/pvlib/modelchain.py @@ -1355,7 +1355,8 @@ def _complete_irradiance(self, weather): "https://github.com/pvlib/pvlib-python \n") if {'ghi', 'dhi'} <= icolumns and 'dni' not in icolumns: clearsky = self.location.get_clearsky( - weather.index, solar_position=self.results.solar_position) + weather.index, model=self.clearsky_model, + solar_position=self.results.solar_position) complete_irrad_df = pvlib.irradiance.complete_irradiance( solar_zenith=self.results.solar_position.zenith, ghi=weather.ghi, diff --git a/pvlib/tests/test_modelchain.py b/pvlib/tests/test_modelchain.py index c59a02e9c4..9ac4498f46 100644 --- a/pvlib/tests/test_modelchain.py +++ b/pvlib/tests/test_modelchain.py @@ -1847,7 +1847,7 @@ def test_complete_irradiance_clean_run(sapm_dc_snl_ac_system, location): pd.Series([9, 5], index=times, name='ghi')) -def test_complete_irradiance(sapm_dc_snl_ac_system, location): +def test_complete_irradiance(sapm_dc_snl_ac_system, location, mocker): """Check calculations""" mc = ModelChain(sapm_dc_snl_ac_system, location) times = pd.date_range('2010-07-05 7:00:00-0700', periods=2, freq='H') @@ -1867,12 +1867,15 @@ def test_complete_irradiance(sapm_dc_snl_ac_system, location): pd.Series([372.103976116, 497.087579068], index=times, name='ghi')) + # check that clearsky_model is used correctly + m_ineichen = mocker.spy(location, 'get_clearsky') mc.complete_irradiance(i[['dhi', 'ghi']]) + assert m_ineichen.call_count == 1 assert_series_equal(mc.results.weather['dni'], pd.Series([49.756966, 62.153947], index=times, name='dni')) - - + + @pytest.mark.filterwarnings("ignore:This function is not safe at the moment") @pytest.mark.parametrize("input_type", [tuple, list]) def test_complete_irradiance_arrays( From 67be62c098276affb7304a88455cc5ece5b95fa2 Mon Sep 17 00:00:00 2001 From: Cliff Hansen Date: Wed, 13 Dec 2023 16:28:28 -0700 Subject: [PATCH 4/7] add bug fix note --- docs/sphinx/source/whatsnew/v0.10.3.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/sphinx/source/whatsnew/v0.10.3.rst b/docs/sphinx/source/whatsnew/v0.10.3.rst index 6ab233a3ad..279aac7daa 100644 --- a/docs/sphinx/source/whatsnew/v0.10.3.rst +++ b/docs/sphinx/source/whatsnew/v0.10.3.rst @@ -17,6 +17,8 @@ Bug fixes ~~~~~~~~~ * Fix mapping of the dew point column to ``temp_dew`` when ``map_variables`` is True in :py:func:`pvlib.iotools.get_psm3`. (:pull:`1920`) +* Fix :py:class:`pvlib.modelchain.ModelChain` to use attribute `clearsky_model` + (:pull:`1924`) Testing ~~~~~~~ From c1effe8a4294cb42093b5b76a637ebc3979c68cb Mon Sep 17 00:00:00 2001 From: Cliff Hansen Date: Thu, 14 Dec 2023 08:09:17 -0700 Subject: [PATCH 5/7] test for correct argument --- pvlib/tests/test_modelchain.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pvlib/tests/test_modelchain.py b/pvlib/tests/test_modelchain.py index 9ac4498f46..5266ffc8d8 100644 --- a/pvlib/tests/test_modelchain.py +++ b/pvlib/tests/test_modelchain.py @@ -11,7 +11,7 @@ from .conftest import assert_series_equal, assert_frame_equal import pytest - +from unittest.mock import ANY from .conftest import fail_on_pvlib_version @@ -1871,6 +1871,7 @@ def test_complete_irradiance(sapm_dc_snl_ac_system, location, mocker): m_ineichen = mocker.spy(location, 'get_clearsky') mc.complete_irradiance(i[['dhi', 'ghi']]) assert m_ineichen.call_count == 1 + assert m_ineichen.call_args[1]['model'] == 'ineichen' assert_series_equal(mc.results.weather['dni'], pd.Series([49.756966, 62.153947], index=times, name='dni')) From a7494616630553d1537946ab794dff657ecdce56 Mon Sep 17 00:00:00 2001 From: Cliff Hansen Date: Thu, 14 Dec 2023 08:09:49 -0700 Subject: [PATCH 6/7] test for correct argument --- pvlib/tests/test_modelchain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvlib/tests/test_modelchain.py b/pvlib/tests/test_modelchain.py index 5266ffc8d8..53ce2b949d 100644 --- a/pvlib/tests/test_modelchain.py +++ b/pvlib/tests/test_modelchain.py @@ -11,7 +11,7 @@ from .conftest import assert_series_equal, assert_frame_equal import pytest -from unittest.mock import ANY + from .conftest import fail_on_pvlib_version From c8b2ea96b7378315db7c8d7a7ccc23a7f171f77f Mon Sep 17 00:00:00 2001 From: Cliff Hansen Date: Thu, 14 Dec 2023 08:25:46 -0700 Subject: [PATCH 7/7] test for correct argument --- pvlib/tests/test_modelchain.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pvlib/tests/test_modelchain.py b/pvlib/tests/test_modelchain.py index 53ce2b949d..0632d34212 100644 --- a/pvlib/tests/test_modelchain.py +++ b/pvlib/tests/test_modelchain.py @@ -1875,8 +1875,8 @@ def test_complete_irradiance(sapm_dc_snl_ac_system, location, mocker): assert_series_equal(mc.results.weather['dni'], pd.Series([49.756966, 62.153947], index=times, name='dni')) - - + + @pytest.mark.filterwarnings("ignore:This function is not safe at the moment") @pytest.mark.parametrize("input_type", [tuple, list]) def test_complete_irradiance_arrays(