From 4034b96bc3eaddc51dcf7ded05a07046e54cd1ae Mon Sep 17 00:00:00 2001 From: Leo Burke Date: Mon, 14 Sep 2026 15:48:18 +0200 Subject: [PATCH] Introduce argument to replace hardcoded 1% tolerance for power recalculation when converter DC power is not fulfilled --- src/simses/converter/converter.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/simses/converter/converter.py b/src/simses/converter/converter.py index aeafb38..5caa947 100644 --- a/src/simses/converter/converter.py +++ b/src/simses/converter/converter.py @@ -54,7 +54,7 @@ class Converter: storage: Downstream storage receiving the DC power setpoint. """ - def __init__(self, loss_model: ConverterLossModel, max_power: float, storage: Any) -> None: + def __init__(self, loss_model: ConverterLossModel, max_power: float, storage: Any, tolerance: float = 0.01) -> None: """ Args: loss_model: AC/DC loss model satisfying :class:`ConverterLossModel`. @@ -62,11 +62,14 @@ def __init__(self, loss_model: ConverterLossModel, max_power: float, storage: An normalisation base for ``loss_model``). storage: Downstream storage exposing ``step(power, dt)`` and ``state.power``. Typically a :class:`Battery`. + tolerance: Relative difference between requested and + actual DC power above which AC power is re-calculated """ self.max_power = max_power self.state = ConverterState() self.model = loss_model self.storage = storage + self.tolerance = abs(tolerance) def step(self, power_setpoint: float, dt: float) -> None: """Apply an AC power setpoint over one timestep. @@ -95,7 +98,7 @@ def step(self, power_setpoint: float, dt: float) -> None: # check if subsystem fulfilled DC power # if not, re-calculate required AC power - if power_dc != 0 and (abs(power_dc - power_storage) / abs(power_dc)) > 0.01: # 1% difference tolerance + if power_dc != 0 and (abs(power_dc - power_storage) / abs(power_dc)) > self.tolerance: power_dc = power_storage power_ac = self.dc_to_ac(power_dc)