Skip to content

Commit e294a97

Browse files
committed
refactor: replace FluidStream with FluidModel in FluidStreamObjectForMultipleStreams
Replace fluid property with fluid_model property to better represent fluid specifications rather than actual streams with flow rates.
1 parent 949e423 commit e294a97

5 files changed

Lines changed: 27 additions & 39 deletions

File tree

src/libecalc/domain/process/compressor/core/factory.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from libecalc.domain.infrastructure.energy_components.turbine import Turbine
88
from libecalc.domain.process.compressor.core.base import CompressorModel, CompressorWithTurbineModel
99
from libecalc.domain.process.compressor.core.sampled import CompressorModelSampled
10-
from libecalc.domain.process.compressor.core.train.fluid import FluidStream
1110
from libecalc.domain.process.compressor.core.train.simplified_train import (
1211
CompressorTrainSimplifiedKnownStages,
1312
CompressorTrainSimplifiedUnknownStages,
@@ -41,7 +40,7 @@ def _create_variable_speed_compressor_train_multiple_streams_and_pressures_strea
4140
is_inlet_stream = stream_data.typ == FluidStreamType.INGOING
4241
return FluidStreamObjectForMultipleStreams(
4342
name=stream_data.name,
44-
fluid=FluidStream(fluid_model=stream_data.fluid_model) if stream_data.fluid_model else None,
43+
fluid_model=stream_data.fluid_model,
4544
is_inlet_stream=is_inlet_stream,
4645
connected_to_stage_no=stream_references[stream_data.name],
4746
)

src/libecalc/domain/process/compressor/core/train/types.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from __future__ import annotations
22

3+
from libecalc.common.fluid import FluidModel
34
from libecalc.common.logger import logger
45
from libecalc.domain.component_validation_error import ModelValidationError, ProcessFluidModelValidationException
5-
from libecalc.domain.process.compressor.core.train.fluid import FluidStream
66
from libecalc.presentation.yaml.validation_errors import Location
77

88

@@ -15,17 +15,17 @@ def __init__(
1515
self,
1616
is_inlet_stream: bool,
1717
name: str | None = None,
18-
fluid: FluidStream | None = None,
18+
fluid_model: FluidModel | None = None,
1919
connected_to_stage_no: int = 0,
2020
):
2121
self.name = name
22-
self.fluid = fluid
22+
self.fluid_model = fluid_model
2323
self.is_inlet_stream = is_inlet_stream
2424
self.connected_to_stage_no = connected_to_stage_no
2525
self.check_valid_input()
2626

2727
def check_valid_input(self):
28-
if not self.is_inlet_stream and self.fluid:
28+
if not self.is_inlet_stream and self.fluid_model:
2929
msg = "Outgoing stream should not have a fluid model defined"
3030
logger.error(msg)
3131

@@ -37,7 +37,7 @@ def check_valid_input(self):
3737
],
3838
)
3939

40-
if self.is_inlet_stream and not self.fluid:
40+
if self.is_inlet_stream and not self.fluid_model:
4141
msg = "Ingoing stream needs a fluid model to be defined"
4242
logger.error(msg)
4343
raise ProcessFluidModelValidationException(

src/libecalc/domain/process/compressor/core/train/variable_speed_compressor_train_common_shaft_multiple_streams_and_pressures.py

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from libecalc.common.logger import logger
77
from libecalc.domain.process.compressor.core.results import CompressorTrainResultSingleTimeStep
88
from libecalc.domain.process.compressor.core.train.base import CompressorTrainModel
9-
from libecalc.domain.process.compressor.core.train.fluid import FluidStream as TrainFluidStream
109
from libecalc.domain.process.compressor.core.train.train_evaluation_input import CompressorTrainEvaluationInput
1110
from libecalc.domain.process.compressor.core.train.types import FluidStreamObjectForMultipleStreams
1211
from libecalc.domain.process.compressor.core.train.utils.common import EPSILON
@@ -396,8 +395,8 @@ def calculate_compressor_train(
396395
fluid_streams.append(
397396
FluidStream.from_standard_rate(
398397
thermo_system=NeqSimThermoSystem(
399-
composition=self.streams[i].fluid.fluid_model.composition,
400-
eos_model=self.streams[i].fluid.fluid_model.eos_model,
398+
composition=self.streams[i].fluid_model.composition,
399+
eos_model=self.streams[i].fluid_model.eos_model,
401400
conditions=ProcessConditions(
402401
pressure_bara=constraints.suction_pressure,
403402
temperature_kelvin=self.stages[0].inlet_temperature_kelvin,
@@ -569,17 +568,13 @@ def find_and_calculate_for_compressor_train_with_two_pressure_requirements(
569568
max_standard_rate_per_stream = [float("nan")] * len(std_rates_first_part) # type: ignore[list-item]
570569

571570
# set self.inlet_fluid based on outlet_stream_first_part
572-
compressor_train_last_part.streams[
573-
0
574-
].fluid = TrainFluidStream( # filling the placeholder with the correct fluid
575-
fluid_model=FluidModel(
576-
composition=compressor_train_results_first_part_with_optimal_speed_result.stage_results[
577-
-1
578-
].outlet_stream.thermo_system.composition,
579-
eos_model=compressor_train_results_first_part_with_optimal_speed_result.stage_results[
580-
-1
581-
].outlet_stream.thermo_system.eos_model,
582-
)
571+
compressor_train_last_part.streams[0].fluid_model = FluidModel(
572+
composition=compressor_train_results_first_part_with_optimal_speed_result.stage_results[
573+
-1
574+
].outlet_stream.thermo_system.composition,
575+
eos_model=compressor_train_results_first_part_with_optimal_speed_result.stage_results[
576+
-1
577+
].outlet_stream.thermo_system.eos_model,
583578
)
584579

585580
compressor_train_last_part_optimal_speed = compressor_train_last_part.find_shaft_speed_given_constraints(
@@ -801,7 +796,7 @@ def split_train_on_stage_number(
801796
streams_last_part.extend(
802797
[
803798
FluidStreamObjectForMultipleStreams(
804-
fluid=stream.fluid,
799+
fluid_model=stream.fluid_model,
805800
is_inlet_stream=stream.is_inlet_stream,
806801
connected_to_stage_no=stream.connected_to_stage_no - stage_number,
807802
)

tests/libecalc/core/models/compressor_modelling/conftest.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from libecalc.common.fluid import FluidModel, MultipleStreamsAndPressureStream
1313
from libecalc.common.units import Unit
1414
from libecalc.domain.process.compressor import dto
15-
from libecalc.domain.process.compressor.core.train.fluid import FluidStream
1615
from libecalc.domain.process.compressor.core.train.single_speed_compressor_train_common_shaft import (
1716
SingleSpeedCompressorTrainCommonShaft,
1817
)
@@ -299,7 +298,7 @@ def variable_speed_compressor_train_two_compressors_one_stream(
299298
"""Train with only two compressors, and standard medium fluid, one stream in per stage, no liquid off take."""
300299
fluid_streams = [
301300
FluidStreamObjectForMultipleStreams(
302-
fluid=FluidStream(medium_fluid),
301+
fluid_model=medium_fluid,
303302
is_inlet_stream=True,
304303
connected_to_stage_no=0,
305304
),

tests/libecalc/core/models/compressor_modelling/test_variable_speed_compressor_train_multiple_streams.py

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from libecalc.common.fluid import MultipleStreamsAndPressureStream
1010
from libecalc.common.fluid_stream_type import FluidStreamType
1111
from libecalc.domain.process.compressor import dto
12-
from libecalc.domain.process.compressor.core.train.fluid import FluidStream
1312
from libecalc.domain.process.compressor.core.train.types import FluidStreamObjectForMultipleStreams
1413
from libecalc.domain.process.compressor.core.train.variable_speed_compressor_train_common_shaft import (
1514
VariableSpeedCompressorTrainCommonShaft,
@@ -117,9 +116,7 @@ def variable_speed_compressor_train_one_compressor_one_stream(
117116
dto_copy.maximum_power = 7
118117
return VariableSpeedCompressorTrainCommonShaftMultipleStreamsAndPressures(
119118
streams=[
120-
FluidStreamObjectForMultipleStreams(
121-
fluid=FluidStream(medium_fluid), is_inlet_stream=True, connected_to_stage_no=0
122-
)
119+
FluidStreamObjectForMultipleStreams(fluid_model=medium_fluid, is_inlet_stream=True, connected_to_stage_no=0)
123120
],
124121
data_transfer_object=dto_copy,
125122
)
@@ -141,9 +138,7 @@ def variable_speed_compressor_train_one_compressor_one_stream_downstream_choke(
141138

142139
return VariableSpeedCompressorTrainCommonShaftMultipleStreamsAndPressures(
143140
streams=[
144-
FluidStreamObjectForMultipleStreams(
145-
fluid=FluidStream(medium_fluid), is_inlet_stream=True, connected_to_stage_no=0
146-
)
141+
FluidStreamObjectForMultipleStreams(fluid_model=medium_fluid, is_inlet_stream=True, connected_to_stage_no=0)
147142
],
148143
data_transfer_object=dto_copy,
149144
)
@@ -158,7 +153,7 @@ def variable_speed_compressor_train_two_compressors_one_stream_downstream_choke(
158153
"""Train with only two compressors, and standard medium fluid, one stream in per stage, no liquid off take."""
159154
fluid_streams = [
160155
FluidStreamObjectForMultipleStreams(
161-
fluid=FluidStream(medium_fluid),
156+
fluid_model=medium_fluid,
162157
is_inlet_stream=True,
163158
connected_to_stage_no=0,
164159
),
@@ -184,7 +179,7 @@ def variable_speed_compressor_train_two_compressors_one_stream_individual_asv_pr
184179
"""Train with only two compressors, and standard medium fluid, one stream in per stage, no liquid off take."""
185180
fluid_streams = [
186181
FluidStreamObjectForMultipleStreams(
187-
fluid=FluidStream(medium_fluid),
182+
fluid_model=medium_fluid,
188183
is_inlet_stream=True,
189184
connected_to_stage_no=0,
190185
),
@@ -210,12 +205,12 @@ def variable_speed_compressor_train_two_compressors_two_streams(
210205
"""Train with only two compressors, and standard medium fluid, on stream in per stage, no liquid off take."""
211206
fluid_streams = [
212207
FluidStreamObjectForMultipleStreams(
213-
fluid=FluidStream(medium_fluid),
208+
fluid_model=medium_fluid,
214209
is_inlet_stream=True,
215210
connected_to_stage_no=0,
216211
),
217212
FluidStreamObjectForMultipleStreams(
218-
fluid=FluidStream(medium_fluid),
213+
fluid_model=medium_fluid,
219214
is_inlet_stream=True,
220215
connected_to_stage_no=1,
221216
),
@@ -239,7 +234,7 @@ def variable_speed_compressor_train_two_compressors_ingoning_and_outgoing_stream
239234
"""Train with only two compressors, and standard medium fluid, on stream in per stage, no liquid off take."""
240235
fluid_streams = [
241236
FluidStreamObjectForMultipleStreams(
242-
fluid=FluidStream(rich_fluid),
237+
fluid_model=rich_fluid,
243238
is_inlet_stream=True,
244239
connected_to_stage_no=0,
245240
),
@@ -248,7 +243,7 @@ def variable_speed_compressor_train_two_compressors_ingoning_and_outgoing_stream
248243
connected_to_stage_no=1,
249244
),
250245
FluidStreamObjectForMultipleStreams(
251-
fluid=FluidStream(dry_fluid),
246+
fluid_model=dry_fluid,
252247
is_inlet_stream=True,
253248
connected_to_stage_no=1,
254249
),
@@ -303,13 +298,13 @@ def variable_speed_compressor_train_two_compressors_one_ingoing_and_one_outgoing
303298
]
304299
fluid_streams = [
305300
FluidStreamObjectForMultipleStreams(
306-
fluid=FluidStream(medium_fluid),
301+
fluid_model=medium_fluid,
307302
is_inlet_stream=True,
308303
connected_to_stage_no=0,
309304
),
310305
FluidStreamObjectForMultipleStreams(
311306
is_inlet_stream=False,
312-
fluid=None,
307+
fluid_model=None,
313308
connected_to_stage_no=1,
314309
),
315310
]

0 commit comments

Comments
 (0)