Skip to content

Commit

Permalink
feat: implement adjustment factors for genset (#555)
Browse files Browse the repository at this point in the history
* feat: implement adjustment factors for genset

ECALC-1369
  • Loading branch information
frodehk committed Jul 31, 2024
1 parent c04c6bf commit 4c84931
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/libecalc/core/models/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,24 @@
from scipy.interpolate import interp1d

from libecalc import dto
from libecalc.common.list.adjustment import transform_linear


class GeneratorModelSampled:
def __init__(
self,
data_transfer_object: dto.GeneratorSetSampled,
):
fuel_values = transform_linear(
np.array(data_transfer_object.fuel_values),
constant=data_transfer_object.energy_usage_adjustment_constant,
factor=data_transfer_object.energy_usage_adjustment_factor,
)

self._func = interp1d(
data_transfer_object.power_values,
data_transfer_object.fuel_values,
fill_value=(min(data_transfer_object.fuel_values), max(data_transfer_object.fuel_values)),
fuel_values.tolist(),
fill_value=(min(fuel_values), max(fuel_values)),
bounds_error=False,
)

Expand Down
21 changes: 21 additions & 0 deletions src/tests/libecalc/core/models/test_generator_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,24 @@ def test_capacity_margin(self):
)
capacity_margin = el2fuel_function.evaluate_power_capacity_margin(np.array([0, 1, 2, 3, 4, 5]))
np.testing.assert_allclose(capacity_margin, np.asarray([3, 2, 1, 0, -1, -2]))

def test_energy_adjustment(self):
# Testing adjustment of energy usage according to factor and constant specified in facility input.

fuel_values = [1, 2, 3]
power_values = [1, 2, 3]
adjustment_factor = 1.5
adjustment_constant = 0.5

el2fuel = GeneratorModelSampled(
data_transfer_object=dto.GeneratorSetSampled(
data=[fuel_values, power_values],
headers=["FUEL", "POWER"],
energy_usage_adjustment_factor=adjustment_factor,
energy_usage_adjustment_constant=adjustment_constant,
)
)

expected_adjusted_fuel = list(np.array(fuel_values) * adjustment_factor + adjustment_constant)

assert el2fuel.evaluate(np.asarray(power_values)).tolist() == expected_adjusted_fuel

0 comments on commit 4c84931

Please sign in to comment.