Skip to content

Commit 310d191

Browse files
authored
mc.losses to mc.results.losses (#1231)
1 parent 01a0840 commit 310d191

File tree

3 files changed

+12
-10
lines changed

3 files changed

+12
-10
lines changed

docs/sphinx/source/whatsnew/v0.9.0.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Breaking changes
4646
:py:func:`pvlib.modelchain.basic_chain` (:issue:`1028`, :pull:`1181`)
4747

4848
* Removed the ``**kwargs`` parameters from :py:meth:`~pvlib.pvsystem.PVSystem.sapm` and
49-
:py:meth:`~pvlib.pvsystem.PVSystem.calcparams_desoto` and
49+
:py:meth:`~pvlib.pvsystem.PVSystem.calcparams_desoto` and
5050
:py:meth:`~pvlib.pvsystem.PVSystem.calcparams_cec` (:issue:`1118`, :pull:`1222`)
5151

5252

@@ -64,6 +64,7 @@ Deprecations
6464
* ``ModelChain.dc``
6565
* ``ModelChain.diode_params``
6666
* ``ModelChain.effective_irradiance``
67+
* ``ModelChain.losses``
6768
* ``ModelChain.solar_position``
6869
* ``ModelChain.spectral_modifier``
6970
* ``ModelChain.total_irrad``

pvlib/modelchain.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,7 @@ class ModelChainResult:
277277
field(default=None)
278278
diode_params: Optional[PerArray[pd.DataFrame]] = field(default=None)
279279
dc_ohmic_losses: Optional[PerArray[pd.Series]] = field(default=None)
280+
losses: Optional[Union[pd.Series, float]] = field(default=None)
280281

281282
weather: Optional[PerArray[pd.DataFrame]] = None
282283
times: Optional[pd.DatetimeIndex] = None
@@ -379,7 +380,7 @@ class ModelChain:
379380
'aoi', 'aoi_modifier', 'spectral_modifier',
380381
'cell_temperature', 'effective_irradiance',
381382
'dc', 'ac', 'diode_params', 'tracking',
382-
'weather', 'times']
383+
'weather', 'times', 'losses']
383384

384385
def __init__(self, system, location,
385386
clearsky_model='ineichen',
@@ -1094,16 +1095,16 @@ def infer_losses_model(self):
10941095
raise NotImplementedError
10951096

10961097
def pvwatts_losses(self):
1097-
self.losses = (100 - self.system.pvwatts_losses()) / 100.
1098+
self.results.losses = (100 - self.system.pvwatts_losses()) / 100.
10981099
if isinstance(self.results.dc, tuple):
10991100
for dc in self.results.dc:
1100-
dc *= self.losses
1101+
dc *= self.results.losses
11011102
else:
1102-
self.results.dc *= self.losses
1103+
self.results.dc *= self.results.losses
11031104
return self
11041105

11051106
def no_extra_losses(self):
1106-
self.losses = 1
1107+
self.results.losses = 1
11071108
return self
11081109

11091110
def effective_irradiance_model(self):

pvlib/tests/test_modelchain.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1542,8 +1542,8 @@ def test_spectral_models_singleton_weather_single_array(
15421542

15431543

15441544
def constant_losses(mc):
1545-
mc.losses = 0.9
1546-
mc.results.dc *= mc.losses
1545+
mc.results.losses = 0.9
1546+
mc.results.dc *= mc.results.losses
15471547

15481548

15491549
def dc_constant_losses(mc):
@@ -1682,7 +1682,7 @@ def test_losses_models_ext_def(pvwatts_dc_pvwatts_ac_system, location, weather,
16821682
mc.run_model(weather)
16831683
assert m.call_count == 1
16841684
assert isinstance(mc.results.ac, (pd.Series, pd.DataFrame))
1685-
assert mc.losses == 0.9
1685+
assert mc.results.losses == 0.9
16861686
assert not mc.results.ac.empty
16871687

16881688

@@ -1695,7 +1695,7 @@ def test_losses_models_no_loss(pvwatts_dc_pvwatts_ac_system, location, weather,
16951695
assert mc.losses_model == mc.no_extra_losses
16961696
mc.run_model(weather)
16971697
assert m.call_count == 0
1698-
assert mc.losses == 1
1698+
assert mc.results.losses == 1
16991699

17001700

17011701
def test_invalid_dc_model_params(sapm_dc_snl_ac_system, cec_dc_snl_ac_system,

0 commit comments

Comments
 (0)