Heat Pump and Refrigeration
The Heat Pump and refrigeration stack is the most specialised part of the OpenPinch codebase. It combines preprocessing of background cascades, thermodynamic cycle models, and black-box optimisation to screen direct and indirect integration opportunities.
Where To Start
Most users should still begin with the higher-level surfaces documented in Core API:
problem.target.direct_heat_pump(...)problem.target.indirect_heat_pump(...)problem.target.direct_refrigeration(...)problem.target.indirect_refrigeration(...)
The modules on this page are the lower-level implementation layers behind those helpers.
Package Overview
Heat Pump and refrigeration targeting services.
Public HPR Entrypoints
Public entrypoint for heat pump and refrigeration targeting.
- OpenPinch.services.heat_pump_integration.heat_pump_and_refrigeration_entry.compute_direct_heat_pump_or_refrigeration_target(zone, is_heat_pumping, args=None)[source]
Solve an explicit direct Heat Pump or refrigeration target for one zone.
- Parameters:
- Return type:
HPR Schemas
- class OpenPinch.lib.schemas.hpr.HeatPumpTargetInputs(*, hpr_type, Q_hpr_target, Q_heat_max, Q_cool_max, z_amb_hot, z_amb_cold, dt_range_max, T_hot, H_hot, T_cold, H_cold, n_cond, n_evap, n_mvr, eta_comp, eta_mvr_comp, eta_motor, eta_exp, dtcont_hp, dt_hp_ihx, dt_cascade_hx, dt_phase_change, heat_to_power_ratio, cold_to_power_ratio, ele_price, annual_op_time, discount_rate, serv_life, hpr_comp_fixed_cost, hpr_comp_variable_cost, hpr_comp_cost_exp, hpr_hx_fixed_cost, hpr_hx_variable_cost, hpr_hx_cost_exp, is_heat_pumping, max_multi_start, T_env, dt_env_cont, eta_ii_hpr_carnot, eta_ii_he_carnot, refrigerant_ls, mvr_fluid_ls, do_refrigerant_sort, initialise_simulated_cycle, allow_integrated_expander, bckgrd_hot_streams, bckgrd_cold_streams, bb_minimiser, eta_penalty, rho_penalty, period_idx=0, debug)[source]
Bases:
BaseModelParameter bundle for heat pump and refrigeration targeting routines.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- Parameters:
hpr_type (str)
Q_hpr_target (float)
Q_heat_max (float)
Q_cool_max (float)
z_amb_hot (ndarray)
z_amb_cold (ndarray)
dt_range_max (float)
T_hot (ndarray)
H_hot (ndarray)
T_cold (ndarray)
H_cold (ndarray)
n_cond (int)
n_evap (int)
n_mvr (int)
eta_comp (float)
eta_mvr_comp (float)
eta_motor (float)
eta_exp (float)
dtcont_hp (float)
dt_hp_ihx (float)
dt_cascade_hx (float)
dt_phase_change (float)
heat_to_power_ratio (float)
cold_to_power_ratio (float)
ele_price (float)
annual_op_time (float)
discount_rate (float)
serv_life (float)
hpr_comp_fixed_cost (float)
hpr_comp_variable_cost (float)
hpr_comp_cost_exp (float)
hpr_hx_fixed_cost (float)
hpr_hx_variable_cost (float)
hpr_hx_cost_exp (float)
is_heat_pumping (bool)
max_multi_start (int)
T_env (float)
dt_env_cont (float)
eta_ii_hpr_carnot (float)
eta_ii_he_carnot (float)
do_refrigerant_sort (bool)
initialise_simulated_cycle (bool)
allow_integrated_expander (bool)
bckgrd_hot_streams (StreamCollection)
bckgrd_cold_streams (StreamCollection)
bb_minimiser (str)
eta_penalty (float)
rho_penalty (float)
period_idx (int)
debug (bool)
- model_config = {'arbitrary_types_allowed': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class OpenPinch.lib.schemas.hpr.HPRBackendResult(*, obj, utility_tot, w_net, Q_ext_heat, Q_ext_cold, hpr_operating_cost=None, hpr_capital_cost=None, hpr_annualized_capital_cost=None, hpr_total_annualized_cost=None, hpr_compressor_capital_cost=None, hpr_heat_exchanger_capital_cost=None, feasibility_penalty=0.0, Q_amb_hot, Q_amb_cold, success=True, w_hpr=None, w_he=None, heat_recovery=None, cop_h=None, eta_he=None, amb_streams=None, T_cond=None, T_evap=None, Q_cond=None, Q_evap=None, Q_cond_he=None, Q_evap_he=None, dT_subcool=None, dT_superheat=None, T_comp_out=None, dT_gc=None, dT_comp=None, Q_heat=None, Q_cool=None, failure_reason=None, artifacts=None, period_outputs=None, weighted_output=None, design_vector=None, period_ids=None, period_weights=None)[source]
Bases:
BaseModelInternal backend result before public schema validation.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- Parameters:
obj (float)
utility_tot (float)
Q_ext_heat (float)
Q_ext_cold (float)
hpr_operating_cost (Any)
hpr_capital_cost (Any)
hpr_annualized_capital_cost (Any)
hpr_total_annualized_cost (Any)
hpr_compressor_capital_cost (Any)
hpr_heat_exchanger_capital_cost (Any)
feasibility_penalty (float)
Q_amb_hot (float)
Q_amb_cold (float)
success (bool)
amb_streams (StreamCollection | None)
T_cond (ndarray | None)
T_evap (ndarray | None)
Q_cond (ndarray | None)
Q_evap (ndarray | None)
Q_cond_he (ndarray | None)
Q_evap_he (ndarray | None)
dT_subcool (ndarray | None)
dT_superheat (ndarray | None)
T_comp_out (ndarray | None)
dT_gc (ndarray | None)
dT_comp (ndarray | None)
Q_heat (ndarray | None)
Q_cool (ndarray | None)
failure_reason (str | None)
artifacts (HPRThermoArtifacts | None)
weighted_output (Any)
design_vector (ndarray | None)
- model_config = {'arbitrary_types_allowed': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class OpenPinch.lib.schemas.hpr.SimulatedHPRAnnualizedCostAccounting(*, hpr_operating_cost, hpr_capital_cost, hpr_annualized_capital_cost, hpr_total_annualized_cost, hpr_compressor_capital_cost, hpr_heat_exchanger_capital_cost, feasibility_penalty)[source]
Bases:
BaseModelUnit-aware annualized cost accounting for simulated HPR candidates.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- Parameters:
- model_config = {'arbitrary_types_allowed': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
Cycle Optimisation Services
These modules place or size Heat Pump and refrigeration cycle models against
prepared cascade data. The detailed cycle physics live in the
unit_models modules documented in Domain Classes.
Only the current public cycle names are routed here, for example
"Cascade Carnot cycles", "Parallel Carnot cycles", and
"Parallel vapour compression cycles".
Cycle-specific heat pump optimisation models.
Brayton HP targeting.
- OpenPinch.services.heat_pump_integration.targeting_services.brayton.optimise_brayton_heat_pump_placement(args)[source]
Optimise a single-stage Brayton Heat Pump placement against the background.
- Parameters:
args (HeatPumpTargetInputs)
- Return type:
None
Cascade vapour-compression HP targeting.
- OpenPinch.services.heat_pump_integration.targeting_services.cascade_vapour_compression.optimise_cascade_heat_pump_placement(args)[source]
Optimise a cascade vapour-compression placement for the prepared HPR case.
- Parameters:
args (HeatPumpTargetInputs)
- Return type:
Parallel Carnot HP targeting.
- OpenPinch.services.heat_pump_integration.targeting_services.parallel_carnot.optimise_parallel_carnot_heat_pump_placement(args)[source]
Optimise parallel simple Carnot stages for a screening-level HPR solve.
- Parameters:
args (HeatPumpTargetInputs)
- Return type:
Parallel vapour-compression HP targeting.
- OpenPinch.services.heat_pump_integration.targeting_services.parallel_vapour_compression.optimise_parallel_heat_pump_placement(args)[source]
Optimise multiple parallel vapour-compression stages for the HPR case.
- Parameters:
args (HeatPumpTargetInputs)
- Return type:
Cascade Carnot HP targeting.
- OpenPinch.services.heat_pump_integration.targeting_services.cascade_carnot.optimise_cascade_carnot_heat_pump_placement(args)[source]
Optimise cascade Carnot stages for the prepared HPR case.
- Parameters:
args (HeatPumpTargetInputs)
- Return type:
Vapour-compression plus MVR cascade HP targeting.
- OpenPinch.services.heat_pump_integration.targeting_services.vapour_compression_mvr.optimise_vapour_compression_mvr_heat_pump_placement(args)[source]
Optimise a VC low-stage plus MVR high-stage placement.
- Parameters:
args (HeatPumpTargetInputs)
- Return type: