From 6238e512008773f41439add9741f40f493fc8a91 Mon Sep 17 00:00:00 2001 From: Roma Koulikov Date: Thu, 11 Jan 2024 17:59:51 -0500 Subject: [PATCH 1/6] Remove or clause from if clause in infer_temperature_model in ModelChain --- pvlib/modelchain.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pvlib/modelchain.py b/pvlib/modelchain.py index 296356971b..0a63a9997b 100644 --- a/pvlib/modelchain.py +++ b/pvlib/modelchain.py @@ -1118,9 +1118,7 @@ def infer_temperature_model(self): array.temperature_model_parameters for array in self.system.arrays) params = _common_keys(temperature_model_parameters) # remove or statement in v0.9 - if {'a', 'b', 'deltaT'} <= params or ( - not params and self.system.racking_model is None - and self.system.module_type is None): + if {'a', 'b', 'deltaT'} <= params: return self.sapm_temp elif {'u_c', 'u_v'} <= params: return self.pvsyst_temp From 821d1fc72d0a57a9969c501d4566d2ef29131355 Mon Sep 17 00:00:00 2001 From: Roma Koulikov Date: Thu, 11 Jan 2024 18:05:44 -0500 Subject: [PATCH 2/6] Updated what's new --- docs/sphinx/source/whatsnew/v0.10.4.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/sphinx/source/whatsnew/v0.10.4.rst b/docs/sphinx/source/whatsnew/v0.10.4.rst index 83b04cc01e..e7e0bdfbaf 100644 --- a/docs/sphinx/source/whatsnew/v0.10.4.rst +++ b/docs/sphinx/source/whatsnew/v0.10.4.rst @@ -11,7 +11,8 @@ Enhancements Bug fixes ~~~~~~~~~ - +* Removed `or` clause from `if` statement in `infer_temperature_model` in +`ModelChain` (:issue:`1759`). Testing ~~~~~~~ @@ -27,4 +28,4 @@ Requirements Contributors ~~~~~~~~~~~~ - +* :ghuser:`matsuobasho` From 17e6ee2e87759e7a2899e71659bb3f09248d19c6 Mon Sep 17 00:00:00 2001 From: Roma Koulikov Date: Fri, 19 Jan 2024 15:52:33 -0500 Subject: [PATCH 3/6] Remove comment about removing or statement in infer_temperature_model in modelchain.py --- pvlib/modelchain.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pvlib/modelchain.py b/pvlib/modelchain.py index 0a63a9997b..d65f262c23 100644 --- a/pvlib/modelchain.py +++ b/pvlib/modelchain.py @@ -1117,7 +1117,6 @@ def infer_temperature_model(self): temperature_model_parameters = tuple( array.temperature_model_parameters for array in self.system.arrays) params = _common_keys(temperature_model_parameters) - # remove or statement in v0.9 if {'a', 'b', 'deltaT'} <= params: return self.sapm_temp elif {'u_c', 'u_v'} <= params: From 5cde61f057c51a977f87d814910e90d77abcab08 Mon Sep 17 00:00:00 2001 From: Roma Koulikov Date: Fri, 19 Jan 2024 15:56:58 -0500 Subject: [PATCH 4/6] Added test to verify that error indicating inability to infer temperature model is raised when not providing temperature model to arrays --- pvlib/tests/test_modelchain.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pvlib/tests/test_modelchain.py b/pvlib/tests/test_modelchain.py index 0632d34212..5678470f10 100644 --- a/pvlib/tests/test_modelchain.py +++ b/pvlib/tests/test_modelchain.py @@ -1305,6 +1305,21 @@ def test_temperature_model_inconsistent(location, sapm_dc_snl_ac_system): spectral_model='no_loss', temperature_model='pvsyst') +def test_temperature_model_not_specified(): + # GH 1759 -- ensure correct error is raised when temperature model params + # are specified on the PVSystem instead of the Arrays + location = Location(latitude=32.2, longitude=-110.9) + arrays = [pvsystem.Array(pvsystem.FixedMount(), + module_parameters={'pdc0': 1, 'gamma_pdc': 0})] + system = pvsystem.PVSystem(arrays, + temperature_model_parameters={'u0': 1, 'u1': 1}, + inverter_parameters={'pdc0': 1}) + with pytest.raises(ValueError, + match='could not infer temperature model ' + 'from system.temperature_model_parameters'): + _ = ModelChain(system, location, + aoi_model='no_loss', spectral_model='no_loss') + def test_dc_model_user_func(pvwatts_dc_pvwatts_ac_system, location, weather, mocker): m = mocker.spy(sys.modules[__name__], 'poadc') From 00c0b8b9e5b680c4d58706a1e3b31e2903af6fa4 Mon Sep 17 00:00:00 2001 From: matsuobasho Date: Fri, 19 Jan 2024 15:59:36 -0500 Subject: [PATCH 5/6] Update docs/sphinx/source/whatsnew/v0.10.4.rst Co-authored-by: Kevin Anderson --- docs/sphinx/source/whatsnew/v0.10.4.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sphinx/source/whatsnew/v0.10.4.rst b/docs/sphinx/source/whatsnew/v0.10.4.rst index e7e0bdfbaf..df73d68e98 100644 --- a/docs/sphinx/source/whatsnew/v0.10.4.rst +++ b/docs/sphinx/source/whatsnew/v0.10.4.rst @@ -11,8 +11,8 @@ Enhancements Bug fixes ~~~~~~~~~ -* Removed `or` clause from `if` statement in `infer_temperature_model` in -`ModelChain` (:issue:`1759`). +* :py:class:`~pvlib.modelchain.ModelChain` now raises a more useful error when + ``temperature_model_parameters`` are specified on the passed ``system`` instead of on its ``arrays``. (:issue:`1759`). Testing ~~~~~~~ From 022eabedd454f1ad0c91cc215e4a4ca397e544d2 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Tue, 23 Jan 2024 10:23:24 -0500 Subject: [PATCH 6/6] Update pvlib/tests/test_modelchain.py --- pvlib/tests/test_modelchain.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pvlib/tests/test_modelchain.py b/pvlib/tests/test_modelchain.py index 5678470f10..72c349c8e6 100644 --- a/pvlib/tests/test_modelchain.py +++ b/pvlib/tests/test_modelchain.py @@ -1320,6 +1320,7 @@ def test_temperature_model_not_specified(): _ = ModelChain(system, location, aoi_model='no_loss', spectral_model='no_loss') + def test_dc_model_user_func(pvwatts_dc_pvwatts_ac_system, location, weather, mocker): m = mocker.spy(sys.modules[__name__], 'poadc')