Skip to content

Commit e3cfdd7

Browse files
authored
chore: use list of periods instead of cumbersome periods class (#1573)
Refs: equinor/ecalc-internal#1833
1 parent 71746ba commit e3cfdd7

4 files changed

Lines changed: 22 additions & 7 deletions

File tree

src/libecalc/ecalc_model/process_simulation.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from libecalc.common.ddd import value_object
66
from libecalc.common.ddd.entity import Entity
7-
from libecalc.common.time_utils import Periods
7+
from libecalc.common.time_utils import Period
88
from libecalc.common.utils.ecalc_uuid import ecalc_id_generator
99
from libecalc.ecalc_model.time_series_configuration import (
1010
TimeSeriesPressureDropperConfiguration,
@@ -105,7 +105,7 @@ def __init__(
105105
name: str,
106106
stream_distribution: CommonStreamDistributionConfig | IndividualStreamDistributionConfig,
107107
process_problems: list[ProcessProblem],
108-
process_periods: Periods,
108+
process_periods: list[Period],
109109
process_simulation_id: ProcessSimulationId | None = None,
110110
process_configurations: dict[
111111
ProcessPipelineId,
@@ -123,7 +123,12 @@ def __init__(
123123
def get_id(self) -> ProcessSimulationId:
124124
return self._id
125125

126-
def get_process_periods(self) -> Periods:
126+
def get_process_periods(self) -> list[Period]:
127+
"""
128+
Get the global period vector - where START, END is taken into account, all temporal events (in legacy YAML) and relevant timeseries.
129+
Returns:
130+
131+
"""
127132
return self.process_periods
128133

129134
def get_name(self) -> str:

src/libecalc/presentation/yaml/domain/time_series_expression.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import numpy as np
22

3+
from libecalc.common.time_utils import Period
34
from libecalc.common.variables import ExpressionEvaluator
45
from libecalc.dto.utils.validators import convert_expression
56
from libecalc.expression.expression import Expression, ExpressionType
@@ -68,3 +69,12 @@ def get_masked_values(self) -> list[float]:
6869
def get_condition_mask(self) -> TimeSeriesMask:
6970
mask = self.expression_evaluator.evaluate(expression=self._condition) if self._condition is not None else None
7071
return TimeSeriesMask.from_array(mask)
72+
73+
def get_periods(self) -> list[Period]:
74+
"""
75+
Returns the periods where this expression is evaluated for
76+
77+
Returns:
78+
79+
"""
80+
return self.expression_evaluator.get_periods().periods

src/libecalc/presentation/yaml/mappers/process_simulation_mapper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from libecalc.common.errors.ecalc_validation_error import EcalcValidationException
55
from libecalc.common.errors.exceptions import InvalidResourceException
6-
from libecalc.common.time_utils import Period, Periods
6+
from libecalc.common.time_utils import Period
77
from libecalc.common.units import Unit
88
from libecalc.common.variables import ExpressionEvaluator
99
from libecalc.domain.process.value_objects.chart.chart import ChartData
@@ -300,7 +300,7 @@ def map_anti_surge_strategy(
300300
assert_never(recirculation_type)
301301

302302
def map_process_simulation(
303-
self, yaml_process_simulation: YamlProcessSimulation, process_periods: Periods
303+
self, yaml_process_simulation: YamlProcessSimulation, process_periods: list[Period]
304304
) -> tuple[list[ProcessPipeline], ProcessSimulation]:
305305
process_pipelines: list[ProcessPipeline] = []
306306
constraints: dict[ProcessPipelineId, Constraint] = {}

src/libecalc/presentation/yaml/model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ def get_process_simulations(self) -> tuple[list[ProcessPipeline], list[ProcessSi
163163

164164
return process_pipelines, process_simulations
165165

166-
def get_periods(self) -> Periods:
166+
def get_periods(self) -> list[Period]:
167167
"""
168168
Get the global timevector for this model
169169
"""
@@ -272,7 +272,7 @@ def _get_periods(self, time_series_time_vector: Iterable[datetime]) -> Periods:
272272
additional_dates=set(self._configuration.dates),
273273
)
274274
periods = Periods.create_periods(time_vector, include_before=False, include_after=False)
275-
self._global_periods = periods
275+
self._global_periods = periods.periods
276276
return periods
277277
except InvalidEndDate as e:
278278
location_keys = ("END",)

0 commit comments

Comments
 (0)