77 ConsumerFunction ,
88 ConsumerFunctionResult ,
99)
10- from libecalc .domain .infrastructure .energy_components .legacy_consumer .consumer_function .utils import (
11- apply_power_loss_factor ,
12- get_power_loss_factor_from_expression ,
13- )
1410from libecalc .domain .process .core .results import EnergyFunctionGenericResult
1511from libecalc .domain .time_series_flow_rate import TimeSeriesFlowRate
1612from libecalc .domain .time_series_power import TimeSeriesPower
17- from libecalc .expression import Expression
13+ from libecalc .domain . time_series_power_loss_factor import TimeSeriesPowerLossFactor
1814
1915
2016class DirectConsumerFunction (ConsumerFunction ):
@@ -23,12 +19,11 @@ def __init__(
2319 energy_usage_type : EnergyUsageType ,
2420 fuel_rate : TimeSeriesFlowRate | None = None ,
2521 load : TimeSeriesPower | None = None ,
26- power_loss_factor : Expression | None = None ,
22+ power_loss_factor : TimeSeriesPowerLossFactor | None = None ,
2723 ):
2824 self ._energy_usage = fuel_rate if energy_usage_type == EnergyUsageType .FUEL .value else load
29- power_loss_factor_expression = power_loss_factor
3025 self ._energy_usage_type = energy_usage_type
31- self ._power_loss_factor_expression = power_loss_factor_expression
26+ self ._power_loss_factor = power_loss_factor
3227
3328 @property
3429 def is_electrical_consumer (self ) -> bool :
@@ -67,10 +62,14 @@ def evaluate(
6762 power_unit = self .power_unit if self .is_electrical_consumer else None ,
6863 )
6964
70- power_loss_factor = get_power_loss_factor_from_expression (
71- expression_evaluator = expression_evaluator ,
72- power_loss_factor_expression = self ._power_loss_factor_expression ,
73- )
65+ if self ._power_loss_factor is not None :
66+ energy_usage = self ._power_loss_factor .apply (
67+ energy_usage = np .asarray (energy_function_result .energy_usage , dtype = np .float64 )
68+ )
69+ power_loss_factor = self ._power_loss_factor .get_values (length = len (energy_usage ))
70+ else :
71+ energy_usage = energy_function_result .energy_usage
72+ power_loss_factor = None
7473
7574 is_valid = np .asarray (energy_function_result .is_valid )
7675
@@ -83,15 +82,12 @@ def evaluate(
8382 is_valid [np .asarray (energy_usage ) < 0 ] = False
8483
8584 consumer_function_result = ConsumerFunctionResult (
86- periods = expression_evaluator .get_periods (),
85+ periods = self . _energy_usage .get_periods (),
8786 is_valid = is_valid ,
8887 energy_function_result = energy_function_result ,
89- energy_usage_before_power_loss_factor = np .asarray (energy_function_result .energy_usage ),
90- power_loss_factor = power_loss_factor ,
91- energy_usage = apply_power_loss_factor (
92- energy_usage = np .asarray (energy_function_result .energy_usage ),
93- power_loss_factor = power_loss_factor ,
94- ),
88+ energy_usage_before_power_loss_factor = np .asarray (energy_function_result .energy_usage , dtype = np .float64 ),
89+ power_loss_factor = np .asarray (power_loss_factor , dtype = np .float64 ),
90+ energy_usage = np .asarray (energy_usage , dtype = np .float64 ),
9591 )
9692
9793 return consumer_function_result
0 commit comments