-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathdirect_mixer.py
More file actions
25 lines (18 loc) · 1.01 KB
/
direct_mixer.py
File metadata and controls
25 lines (18 loc) · 1.01 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
from typing import Final
from libecalc.common.units import UnitConstants
from libecalc.common.utils.ecalc_uuid import ecalc_id_generator
from libecalc.domain.process.process_pipeline.process_unit import ProcessUnitId
from libecalc.domain.process.value_objects.stream_protocol import MixableStream
class DirectMixer:
def __init__(self, mix_rate: float = 0, process_unit_id: ProcessUnitId | None = None):
self._id: Final[ProcessUnitId] = process_unit_id or ProcessUnitId(ecalc_id_generator())
self._mix_rate = mix_rate
def get_id(self) -> ProcessUnitId:
return self._id
def propagate_stream(self, inlet_stream: MixableStream) -> MixableStream:
added_mass_kg_per_h = self._mix_rate * inlet_stream.standard_density / UnitConstants.HOURS_PER_DAY
return inlet_stream.with_mass_rate(inlet_stream.mass_rate_kg_per_h + added_mass_kg_per_h)
def get_mix_rate(self) -> float:
return self._mix_rate
def set_mix_rate(self, mix_rate: float):
self._mix_rate = mix_rate