Skip to content

Commit

Permalink
refactor: move pump models from dto and core into same module (#808)
Browse files Browse the repository at this point in the history
* refactor: move pump models from dto and core to same module
  • Loading branch information
frodehk authored Feb 26, 2025
1 parent 548b59f commit 0879cec
Show file tree
Hide file tree
Showing 58 changed files with 266 additions and 278 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
from libecalc.domain.infrastructure.energy_components.pump.component_dto import PumpComponent
from libecalc.domain.infrastructure.energy_components.utils import _convert_keys_in_dictionary_from_str_to_periods
from libecalc.domain.process.core.compressor import create_compressor_model
from libecalc.domain.process.core.pump import create_pump_model
from libecalc.domain.process.pump.factory import create_pump_model
from libecalc.dto import FuelType
from libecalc.dto.component_graph import ComponentGraph
from libecalc.dto.types import ConsumerUserDefinedCategoryType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
get_condition_from_expression,
get_power_loss_factor_from_expression,
)
from libecalc.domain.process.core.pump import PumpModel
from libecalc.domain.process.pump.pump import PumpModel
from libecalc.expression import Expression


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from libecalc.common.consumer_type import ConsumerType
from libecalc.common.logger import logger
from libecalc.domain.infrastructure.energy_components.legacy_consumer.consumer_function import ConsumerFunction
from libecalc.dto import (
from libecalc.domain.process.dto import (
CompressorConsumerFunction,
CompressorSystemConsumerFunction,
DirectConsumerFunction,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
CompressorConsumerFunction,
)
from libecalc.domain.process.core.compressor import create_compressor_model
from libecalc.dto import CompressorConsumerFunction as CompressorConsumerFunctionDTO
from libecalc.domain.process.dto import CompressorConsumerFunction as CompressorConsumerFunctionDTO


def create_compressor_consumer_function(model_dto: CompressorConsumerFunctionDTO) -> CompressorConsumerFunction:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
)
from libecalc.domain.infrastructure.energy_components.legacy_consumer.system.types import ConsumerSystemComponent
from libecalc.domain.process.core.compressor import create_compressor_model
from libecalc.dto import CompressorSystemConsumerFunction as CompressorSystemConsumerFunctionDTO
from libecalc.dto import CompressorSystemOperationalSetting, SystemOperationalSetting
from libecalc.domain.process.dto import CompressorSystemConsumerFunction as CompressorSystemConsumerFunctionDTO
from libecalc.domain.process.dto import CompressorSystemOperationalSetting, SystemOperationalSetting
from libecalc.expression import Expression


Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from libecalc.domain.infrastructure.energy_components.legacy_consumer.consumer_function.direct_expression_consumer_function import (
DirectExpressionConsumerFunction,
)
from libecalc.dto import DirectConsumerFunction
from libecalc.domain.process.dto import DirectConsumerFunction


def create_direct_consumer_function(model_dto: DirectConsumerFunction) -> DirectExpressionConsumerFunction:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from libecalc.domain.infrastructure.energy_components.legacy_consumer.consumer_function.pump_consumer_function import (
PumpConsumerFunction,
)
from libecalc.domain.process.core.pump import create_pump_model
from libecalc.dto import PumpConsumerFunction as PumpConsumerFunctionDTO
from libecalc.domain.process.pump.factory import create_pump_model
from libecalc.domain.process.pump.pump_consumer_function import PumpConsumerFunction as PumpConsumerFunctionDTO


def create_pump_consumer_function(model_dto: PumpConsumerFunctionDTO) -> PumpConsumerFunction:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
PumpSystemOperationalSettingExpressions,
)
from libecalc.domain.infrastructure.energy_components.legacy_consumer.system.types import ConsumerSystemComponent
from libecalc.domain.process.core.pump import create_pump_model
from libecalc.dto import PumpSystemConsumerFunction as PumpSystemConsumerFunctionDTO
from libecalc.dto import PumpSystemOperationalSetting
from libecalc.domain.process.dto import PumpSystemConsumerFunction as PumpSystemConsumerFunctionDTO
from libecalc.domain.process.dto import PumpSystemOperationalSetting
from libecalc.domain.process.pump.factory import create_pump_model
from libecalc.expression import Expression

from .compressor_system_consumer_function import (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
Variable,
VariableExpression,
)
from libecalc.dto import TabulatedConsumerFunction as TabulatedConsumerFunctionDTO
from libecalc.domain.process.dto import TabulatedConsumerFunction as TabulatedConsumerFunctionDTO


def _get_column(data: list[list], headers: list[str], header: str) -> list:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
get_operational_settings_number_used_from_model_results,
)
from libecalc.domain.process.core.compressor.base import CompressorModel
from libecalc.domain.process.core.pump import PumpModel
from libecalc.domain.process.pump.pump import PumpModel
from libecalc.expression import Expression


Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Union

from libecalc.domain.process.core.compressor.base import CompressorModel
from libecalc.domain.process.core.pump import PumpModel
from libecalc.domain.process.pump.pump import PumpModel


class ConsumerSystemComponent:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from libecalc.core.result import EcalcModelResult
from libecalc.core.result import results as core_results
from libecalc.domain.infrastructure.energy_components.base import BaseConsumerWithoutOperationalSettings
from libecalc.domain.process.core.pump import PumpModel
from libecalc.domain.process.pump.pump import PumpModel
from libecalc.domain.stream_conditions import Pressure, StreamConditions


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
ModelValidationError,
)
from libecalc.domain.infrastructure.energy_components.utils import _convert_keys_in_dictionary_from_str_to_periods
from libecalc.domain.process.dto.pump import PumpModel
from libecalc.domain.process.pump.pump import PumpModelDTO
from libecalc.dto import FuelType
from libecalc.dto.types import ConsumerUserDefinedCategoryType
from libecalc.dto.utils.validators import validate_temporal_model
Expand All @@ -19,15 +19,15 @@

class PumpComponent(EnergyComponent):
component_type: Literal[ComponentType.PUMP] = ComponentType.PUMP
energy_usage_model: dict[Period, PumpModel]
energy_usage_model: dict[Period, PumpModelDTO]

def __init__(
self,
name: str,
regularity: dict[Period, Expression],
user_defined_category: dict[Period, ConsumerUserDefinedCategoryType],
component_type: ComponentType,
energy_usage_model: dict[Period, PumpModel],
energy_usage_model: dict[Period, PumpModelDTO],
consumes: Literal[ConsumptionType.FUEL, ConsumptionType.ELECTRICITY],
fuel: Optional[dict[Period, FuelType]] = None,
):
Expand All @@ -51,7 +51,7 @@ def check_regularity(regularity: dict[Period, Expression]):
return regularity

@staticmethod
def check_energy_usage_model(energy_usage_model: dict[Period, PumpModel]):
def check_energy_usage_model(energy_usage_model: dict[Period, PumpModelDTO]):
if isinstance(energy_usage_model, dict) and len(energy_usage_model.values()) > 0:
energy_usage_model = _convert_keys_in_dictionary_from_str_to_periods(energy_usage_model)
return energy_usage_model
Expand Down
4 changes: 2 additions & 2 deletions src/libecalc/domain/process/core/compressor/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
VariableSpeedCompressorTrainCommonShaftMultipleStreamsAndPressures,
)
from libecalc.domain.process.core.turbine import TurbineModel
from libecalc.dto import CompressorModel as CompressorModelDTO
from libecalc.dto import (
from libecalc.domain.process.dto import CompressorModel as CompressorModelDTO
from libecalc.domain.process.dto import (
CompressorSampled,
CompressorTrainSimplifiedWithKnownStages,
CompressorTrainSimplifiedWithUnknownStages,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@
calculate_polytropic_head_campbell,
)
from libecalc.domain.process.core.compressor.utils import map_compressor_train_stage_to_domain
from libecalc.dto import CompressorTrainSimplifiedWithKnownStages, CompressorTrainSimplifiedWithUnknownStages
from libecalc.domain.process.dto import (
CompressorTrainSimplifiedWithKnownStages,
CompressorTrainSimplifiedWithUnknownStages,
)


class CompressorTrainSimplified(CompressorTrainModel):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
maximize_x_given_boolean_condition_function,
)
from libecalc.domain.process.core.results.compressor import TargetPressureStatus
from libecalc.dto import SingleSpeedCompressorTrain
from libecalc.domain.process.dto import SingleSpeedCompressorTrain

EPSILON = 1e-5

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
get_single_speed_equivalent,
)
from libecalc.domain.process.core.results.compressor import TargetPressureStatus
from libecalc.dto import CompressorStage, SingleSpeedCompressorTrain, VariableSpeedCompressorTrain
from libecalc.domain.process.dto import CompressorStage, SingleSpeedCompressorTrain, VariableSpeedCompressorTrain

EPSILON = 1e-5

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@
from libecalc.domain.process.core.results.compressor import (
TargetPressureStatus,
)
from libecalc.domain.stream_conditions import StreamConditions
from libecalc.dto import (
from libecalc.domain.process.dto import (
CompressorStage,
SingleSpeedCompressorTrain,
VariableSpeedCompressorTrainMultipleStreamsAndPressures,
)
from libecalc.domain.stream_conditions import StreamConditions

EPSILON = 1e-5

Expand Down
9 changes: 7 additions & 2 deletions src/libecalc/domain/process/core/compressor/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,13 @@
CompressorTrainStage,
UndefinedCompressorStage,
)
from libecalc.dto import CompressorChart, CompressorStage, GenericChartFromDesignPoint, GenericChartFromInput
from libecalc.dto import GenericChartFromInput as GenericChartFromInputDTO
from libecalc.domain.process.dto import (
CompressorChart,
CompressorStage,
GenericChartFromDesignPoint,
GenericChartFromInput,
)
from libecalc.domain.process.dto import GenericChartFromInput as GenericChartFromInputDTO


def _create_compressor_chart(
Expand Down
2 changes: 0 additions & 2 deletions src/libecalc/domain/process/core/pump/__init__.py

This file was deleted.

2 changes: 1 addition & 1 deletion src/libecalc/domain/process/dto/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
VariableSpeedCompressorTrain,
VariableSpeedCompressorTrainMultipleStreamsAndPressures,
)
from libecalc.domain.process.pump.pump_consumer_function import PumpConsumerFunction

from .base import ConsumerFunction, EnergyModel
from .chart import (
Expand All @@ -34,7 +35,6 @@
)
from .direct import DirectConsumerFunction
from .generator_set import GeneratorSetSampled
from .pump import PumpConsumerFunction, PumpModel
from .sampled import EnergyModelSampled
from .tabulated import TabulatedConsumerFunction, TabulatedData, Variables
from .turbine import Turbine
Expand Down
4 changes: 2 additions & 2 deletions src/libecalc/domain/process/dto/consumer_system.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
CompressorTrainSimplifiedWithKnownStages,
CompressorTrainSimplifiedWithUnknownStages,
)
from libecalc.domain.process.dto.pump import PumpModel
from libecalc.domain.process.pump.pump import PumpModelDTO
from libecalc.dto.base import EcalcBaseModel
from libecalc.dto.utils.validators import convert_expression, convert_expressions
from libecalc.expression import Expression
Expand Down Expand Up @@ -53,7 +53,7 @@ class PumpSystemOperationalSetting(SystemOperationalSetting):

class PumpSystemPump(EcalcBaseModel):
name: str
pump_model: PumpModel
pump_model: PumpModelDTO


class PumpSystemConsumerFunction(ConsumerFunction):
Expand Down
1 change: 1 addition & 0 deletions src/libecalc/domain/process/pump/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -1,11 +1,36 @@
from __future__ import annotations

from typing import Any

from libecalc.common.chart_type import ChartType
from libecalc.common.logger import logger
from libecalc.common.serializable_chart import ChartCurveDTO, SingleSpeedChartDTO, VariableSpeedChartDTO
from libecalc.domain.process.core.chart import SingleSpeedChart, VariableSpeedChart
from libecalc.domain.process.core.pump.pump import PumpModel, PumpSingleSpeed, PumpVariableSpeed
from libecalc.dto import PumpModel as PumpModelDTO
from libecalc.domain.process.pump.pump import PumpModel, PumpModelDTO, PumpSingleSpeed, PumpVariableSpeed

# def evaluate_streams(
# self,
# inlet_streams: list[StreamConditions],
# outlet_stream: StreamConditions,
# ) -> PumpModelResult:
# total_requested_stream = StreamConditions.mix_all(inlet_streams)
# return self.evaluate_rate_ps_pd_density(
# rate=np.asarray([total_requested_stream.rate.value]),
# suction_pressures=np.asarray([total_requested_stream.pressure.value]),
# discharge_pressures=np.asarray([outlet_stream.pressure.value]),
# fluid_density=np.asarray([total_requested_stream.density.value]),
# )


def _invalid_pump_model_type(pump_model_dto: Any):
try:
msg = f"Unsupported energy model type: {pump_model_dto.typ}."
logger.error(msg)
raise TypeError(msg)
except AttributeError as e:
msg = "Unsupported energy model type."
logger.exception(msg)
raise TypeError(msg) from e


def create_pump_single_speed(pump_model: PumpModelDTO) -> PumpSingleSpeed:
Expand Down Expand Up @@ -45,17 +70,6 @@ def create_pump_variable_speed(pump_model: PumpModelDTO) -> PumpVariableSpeed:
)


def _invalid_pump_model_type(pump_model_dto: Any):
try:
msg = f"Unsupported energy model type: {pump_model_dto.typ}."
logger.error(msg)
raise TypeError(msg)
except AttributeError as e:
msg = "Unsupported energy model type."
logger.exception(msg)
raise TypeError(msg) from e


pump_model_map = {
ChartType.SINGLE_SPEED: create_pump_single_speed,
ChartType.VARIABLE_SPEED: create_pump_variable_speed,
Expand Down
Loading

0 comments on commit 0879cec

Please sign in to comment.