1919 ProcessProblem ,
2020 ProcessSimulation ,
2121)
22+ from libecalc .ecalc_model .time_series_configuration import (
23+ TimeSeriesChokeConfiguration ,
24+ TimeSeriesTemperatureSetterConfiguration ,
25+ )
2226from libecalc .ecalc_model .time_series_stream import TimeSeriesStream
2327from libecalc .expression .expression import ExpressionType
2428from libecalc .presentation .yaml .domain .expression_time_series_flow_rate import ExpressionTimeSeriesFlowRate
6367from libecalc .process .process_solver .process_runner import ProcessRunner
6468from libecalc .process .process_solver .recirculation_loop import RecirculationLoop
6569from libecalc .process .process_solver .search_strategies import ScipyRootFindingStrategy
70+ from libecalc .process .process_solver .temperature_setter_configuration_handler import (
71+ TemperatureSetterConfigurationHandler ,
72+ )
6673from libecalc .process .process_units .choke import Choke
6774from libecalc .process .process_units .compressor import Compressor
6875from libecalc .process .process_units .direct_mixer import DirectMixer
@@ -286,6 +293,11 @@ def map_process_simulation(
286293 constraints : dict [ProcessPipelineId , Constraint ] = {}
287294 pressure_control_configs : dict [ProcessPipelineId , PressureControlConfig ] = {}
288295 anti_surge_configs : dict [ProcessPipelineId , AntiSurgeConfig ] = {}
296+ configuration_handlers : dict [ProcessPipelineId , Sequence [ConfigurationHandler ]] = {}
297+ configurations : dict [
298+ ProcessPipelineId ,
299+ dict [ConfigurationHandlerId , TimeSeriesChokeConfiguration | TimeSeriesTemperatureSetterConfiguration ],
300+ ] = {}
289301
290302 process_pipeline_reference_to_id_map : dict [str , ProcessPipelineId ] = {}
291303 for yaml_compressor_train_item in yaml_process_simulation .targets :
@@ -294,15 +306,34 @@ def map_process_simulation(
294306 process_unit_map : dict [ProcessUnitId , ProcessUnit ] = {}
295307 compressor_stages : list [list [ProcessUnitId ]] = []
296308 compressor_ids : list [ProcessUnitId ] = []
309+ problem_configuration_handlers = []
310+ problem_time_series_configurations : dict [
311+ ConfigurationHandlerId , TimeSeriesChokeConfiguration | TimeSeriesTemperatureSetterConfiguration
312+ ] = {}
297313 for yaml_serial_item in item .items :
298314 yaml_compressor_stage = self ._resolve_compressor_stage_reference (yaml_serial_item .target )
299315 compressor = self ._get_compressor (yaml_compressor_stage = yaml_compressor_stage )
300316 compressor_ids .append (compressor .get_id ())
317+
301318 temperature_setter = TemperatureSetter (
302- required_temperature_kelvin = 0 ,
303319 fluid_service = self ._fluid_service ,
304320 )
305- choke = Choke (fluid_service = self ._fluid_service , pressure_change = 0 )
321+ temperature_setter_configuration_handler = TemperatureSetterConfigurationHandler (
322+ temperature_setter = temperature_setter
323+ )
324+ problem_time_series_configurations [temperature_setter_configuration_handler .get_id ()] = (
325+ TimeSeriesTemperatureSetterConfiguration (
326+ temperature = self ._map_temperature (yaml_compressor_stage .inlet_temperature )
327+ )
328+ )
329+ problem_configuration_handlers .append (temperature_setter_configuration_handler )
330+
331+ choke , choke_configuration_handler = choke_factory (fluid_service = self ._fluid_service )
332+ problem_time_series_configurations [choke_configuration_handler .get_id ()] = TimeSeriesChokeConfiguration (
333+ delta_pressure = self ._map_pressure (yaml_compressor_stage .pressure_drop_ahead_of_stage )
334+ )
335+ problem_configuration_handlers .append (choke_configuration_handler )
336+
306337 liquid_remover = LiquidRemover (fluid_service = self ._fluid_service )
307338 process_unit_map [temperature_setter .get_id ()] = temperature_setter
308339 process_unit_map [choke .get_id ()] = choke
@@ -323,32 +354,34 @@ def map_process_simulation(
323354 except KeyError as e :
324355 raise EcalcValidationException (f"Missing pressure control for process system '{ item .name } '" ) from e
325356
326- configuration_handlers = []
327-
328357 if pressure_control == "COMMON_ASV" :
329358 recirculation_loop , process_units = with_asv (units = list (process_unit_map .values ()))
330- configuration_handlers .append (recirculation_loop )
359+ problem_configuration_handlers .append (recirculation_loop )
331360 else :
332361 process_units = []
333- configuration_handlers = []
362+ problem_configuration_handlers = []
334363 for compressor_stage_ids in compressor_stages :
335364 stage_units = [process_unit_map [stage_unit_id ] for stage_unit_id in compressor_stage_ids ]
336365 recirculation_loop , stage_process_units = with_asv (units = stage_units )
337- configuration_handlers .append (recirculation_loop )
366+ problem_configuration_handlers .append (recirculation_loop )
338367 process_units .extend (stage_process_units )
339368
340369 if pressure_control == "DOWNSTREAM_CHOKE" :
341370 choke , choke_configuration_handler = choke_factory (fluid_service = self ._fluid_service )
342- configuration_handlers .append (choke_configuration_handler )
371+ problem_configuration_handlers .append (choke_configuration_handler )
343372 process_units .append (choke )
344373 elif pressure_control == "UPSTREAM_CHOKE" :
345374 choke , choke_configuration_handler = choke_factory (fluid_service = self ._fluid_service )
346- configuration_handlers .append (choke_configuration_handler )
375+ problem_configuration_handlers .append (choke_configuration_handler )
347376 process_units = [choke , * process_units ]
377+
348378 process_pipeline = ProcessPipeline (
349379 stream_propagators = process_units ,
350380 )
351381
382+ configuration_handlers [process_pipeline .get_id ()] = problem_configuration_handlers
383+ configurations [process_pipeline .get_id ()] = problem_time_series_configurations
384+
352385 pressure_control_configs [process_pipeline .get_id ()] = PressureControlConfig (
353386 type = pressure_control ,
354387 )
@@ -452,6 +485,8 @@ def map_process_simulation(
452485 constraint = constraints [process_pipeline .get_id ()],
453486 anti_surge_strategy = anti_surge_configs [process_pipeline .get_id ()],
454487 pressure_control_strategy = pressure_control_configs [process_pipeline .get_id ()],
488+ configuration_handlers = configuration_handlers [process_pipeline .get_id ()],
489+ configurations = configurations [process_pipeline .get_id ()],
455490 )
456491 for process_pipeline in process_pipelines
457492 ]
0 commit comments