-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathprocess_runner.py
More file actions
30 lines (23 loc) · 1.15 KB
/
process_runner.py
File metadata and controls
30 lines (23 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import abc
from collections.abc import Sequence
from libecalc.domain.process.process_solver.configuration import Configuration, OperatingConfiguration, SimulationUnitId
from libecalc.domain.process.value_objects.fluid_stream import FluidStream
class ProcessRunner(abc.ABC):
@abc.abstractmethod
def apply_configuration(self, configuration: Configuration[OperatingConfiguration]):
"""Apply the given configuration to the process system."""
...
def apply_configurations(self, configurations: Sequence[Configuration[OperatingConfiguration]]):
"""Apply the given configurations to the process system."""
for configuration in configurations:
self.apply_configuration(configuration)
@abc.abstractmethod
def run(self, inlet_stream: FluidStream, to_id: SimulationUnitId | None = None) -> FluidStream:
"""
Simulate the process
Args:
inlet_stream: inlet stream to the process.
to_id: If provided, simulates the process up to, not including, the specified simulation unit id. If None, simulates the entire process.
Returns: The outlet stream
"""
...