Source code for OpenPinch.analysis.heat_pumps.direct_mvr.models

"""Public data models returned by direct gas MVR solves."""

from __future__ import annotations

from dataclasses import dataclass, field

import numpy as np

from ....domain.stream_collection import StreamCollection

DEFAULT_MVR_COMP_EFFICIENCY = 0.7
DEFAULT_MOTOR_EFFICIENCY = 0.95
DEFAULT_DIRECT_MVR_STAGES = 1
DEFAULT_TEMPERATURE_UNIT = "degC"
DEFAULT_PRESSURE_UNIT = "kPa"
DEFAULT_ENTHALPY_UNIT = "kJ/kg"
DEFAULT_HEAT_FLOW_UNIT = "kW"


[docs] @dataclass(frozen=True) class DirectGasMVROutputUnits: """Units used for public direct-MVR outputs.""" temperature: str = DEFAULT_TEMPERATURE_UNIT pressure: str = DEFAULT_PRESSURE_UNIT enthalpy: str = DEFAULT_ENTHALPY_UNIT heat_flow: str = DEFAULT_HEAT_FLOW_UNIT
[docs] @dataclass class DirectGasMVRSettings: """User-facing settings for one direct gas MVR solve.""" n_stages: int = DEFAULT_DIRECT_MVR_STAGES mvr_stage_t_lift: float | None = None mvr_stage_pressure_ratio: float | None = None liquid_injection: bool = False eta_mvr_comp: float = DEFAULT_MVR_COMP_EFFICIENCY eta_motor: float = DEFAULT_MOTOR_EFFICIENCY dt_diff_max: float = 0.1
[docs] @dataclass class DirectGasMVRStageResult: """Solved accounting for one direct gas MVR stage.""" source_stream: str stage_index: int p_in: float p_out: float t_in: float t_discharge: float t_hot_supply: float t_target: float heat_flow: float work: float h_hot_supply: float h_target: float th_curve: np.ndarray = field(repr=False) linearised_profile: np.ndarray = field(repr=False) q_liquid_injection: float = 0.0 liquid_injection_applied: bool = False temperature_unit: str = DEFAULT_TEMPERATURE_UNIT pressure_unit: str = DEFAULT_PRESSURE_UNIT enthalpy_unit: str = DEFAULT_ENTHALPY_UNIT heat_flow_unit: str = DEFAULT_HEAT_FLOW_UNIT source_mass_flow: float = 0.0 hot_mass_flow: float = 0.0 liquid_injection_ratio: float = 0.0
[docs] @dataclass class DirectGasMVRStreamSolveResult: """Solved direct gas MVR streams for one source stream at one period index.""" replacement_streams: StreamCollection stage_results: list[DirectGasMVRStageResult] = field(default_factory=list)