@@ -29,10 +29,10 @@ class CompressorEvaluationInput:
2929 def __init__ (
3030 self ,
3131 rate_expression : TimeSeriesFlowRate | list [TimeSeriesFlowRate ],
32- fluid_factory : FluidFactoryInterface | list [FluidFactoryInterface ] | None ,
32+ fluid_factory : FluidFactoryInterface | list [FluidFactoryInterface ],
33+ suction_pressure_expression : TimeSeriesPressure ,
34+ discharge_pressure_expression : TimeSeriesPressure ,
3335 power_loss_factor : TimeSeriesPowerLossFactor | None = None ,
34- suction_pressure_expression : TimeSeriesPressure | None = None ,
35- discharge_pressure_expression : TimeSeriesPressure | None = None ,
3636 intermediate_pressure_expression : TimeSeriesPressure | None = None ,
3737 ):
3838 self ._rate_expression = rate_expression
@@ -43,15 +43,15 @@ def __init__(
4343 self ._intermediate_pressure_expression = intermediate_pressure_expression
4444
4545 @property
46- def suction_pressure_expression (self ) -> TimeSeriesPressure | None :
46+ def suction_pressure_expression (self ) -> TimeSeriesPressure :
4747 return self ._suction_pressure_expression
4848
4949 @property
50- def discharge_pressure_expression (self ) -> TimeSeriesPressure | None :
50+ def discharge_pressure_expression (self ) -> TimeSeriesPressure :
5151 return self ._discharge_pressure_expression
5252
5353 @property
54- def power_loss_factor (self ) -> TimeSeriesPowerLossFactor :
54+ def power_loss_factor (self ) -> TimeSeriesPowerLossFactor | None :
5555 return self ._power_loss_factor
5656
5757 @property
@@ -74,6 +74,68 @@ def apply_to_model(self, compressor_model: CompressorModel):
7474 if self ._intermediate_pressure_expression is not None
7575 else None
7676 )
77+ suction_pressure = np .asarray (self ._suction_pressure_expression .get_values (), dtype = np .float64 )
78+ discharge_pressure = np .asarray (self ._discharge_pressure_expression .get_values (), dtype = np .float64 )
79+
80+ compressor_model .set_evaluation_input (
81+ rate = stream_day_rate ,
82+ fluid_factory = self ._fluid_factory ,
83+ suction_pressure = suction_pressure ,
84+ discharge_pressure = discharge_pressure ,
85+ intermediate_pressure = intermediate_pressure ,
86+ )
87+
88+
89+ class CompressorSampledEvaluationInput :
90+ """
91+ Encapsulates all input data required to configure and apply evaluation parameters to a sampled compressor model.
92+
93+ Attributes:
94+ rate_expression (TimeSeriesFlowRate | list[TimeSeriesFlowRate]): the flow rate expression(s).
95+ power_loss_factor (TimeSeriesPowerLossFactor | None): expression for power loss factor.
96+ suction_pressure_expression (TimeSeriesPressure | None): expression for the inlet (suction) pressure.
97+ discharge_pressure_expression (TimeSeriesPressure | None): expression for the outlet (discharge) pressure.
98+ """
99+
100+ def __init__ (
101+ self ,
102+ rate_expression : TimeSeriesFlowRate | list [TimeSeriesFlowRate ],
103+ power_loss_factor : TimeSeriesPowerLossFactor | None = None ,
104+ suction_pressure_expression : TimeSeriesPressure | None = None ,
105+ discharge_pressure_expression : TimeSeriesPressure | None = None ,
106+ ):
107+ self ._rate_expression = rate_expression
108+ self ._power_loss_factor = power_loss_factor
109+ self ._suction_pressure_expression = suction_pressure_expression
110+ self ._discharge_pressure_expression = discharge_pressure_expression
111+
112+ @property
113+ def suction_pressure_expression (self ) -> TimeSeriesPressure | None :
114+ return self ._suction_pressure_expression
115+
116+ @property
117+ def discharge_pressure_expression (self ) -> TimeSeriesPressure | None :
118+ return self ._discharge_pressure_expression
119+
120+ @property
121+ def power_loss_factor (self ) -> TimeSeriesPowerLossFactor | None :
122+ return self ._power_loss_factor
123+
124+ @property
125+ def periods (self ) -> Periods :
126+ if isinstance (self ._rate_expression , list ):
127+ return self ._rate_expression [0 ].get_periods ()
128+ return self ._rate_expression .get_periods ()
129+
130+ def apply_to_model (self , compressor_model : CompressorModel ):
131+ rate_expr = self ._rate_expression if isinstance (self ._rate_expression , list ) else [self ._rate_expression ]
132+
133+ if not isinstance (compressor_model , CompressorTrainCommonShaftMultipleStreamsAndPressures ):
134+ assert len (rate_expr ) == 1
135+ stream_day_rate = np .asarray (rate_expr [0 ].get_stream_day_values (), dtype = np .float64 )
136+ else :
137+ stream_day_rate = np .array ([rate .get_stream_day_values () for rate in rate_expr ], dtype = np .float64 )
138+
77139 suction_pressure = (
78140 np .asarray (self ._suction_pressure_expression .get_values (), dtype = np .float64 )
79141 if self ._suction_pressure_expression is not None
@@ -87,10 +149,10 @@ def apply_to_model(self, compressor_model: CompressorModel):
87149
88150 compressor_model .set_evaluation_input (
89151 rate = stream_day_rate ,
90- fluid_factory = self . _fluid_factory ,
152+ fluid_factory = None ,
91153 suction_pressure = suction_pressure ,
92154 discharge_pressure = discharge_pressure ,
93- intermediate_pressure = intermediate_pressure ,
155+ intermediate_pressure = None ,
94156 )
95157
96158
@@ -110,7 +172,7 @@ def __init__(
110172 self ._power_loss_factor = power_loss_factor
111173
112174 @property
113- def power_loss_factor (self ) -> TimeSeriesPowerLossFactor :
175+ def power_loss_factor (self ) -> TimeSeriesPowerLossFactor | None :
114176 return self ._power_loss_factor
115177
116178 @property
0 commit comments