Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions src/simses/converter/converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,22 @@ 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`.
max_power: Rated maximum AC power of the converter in W (the
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.
Expand Down Expand Up @@ -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)

Expand Down
Loading