modelTableData2DLoadDep

Grey-box model for reversible and non-reversible heat pumps

Extends from Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.PartialReversibleRefrigerantMachine (Model for reversible heat pumps and chillers with a refrigerant cycle).

Information

This is a model for reversible or non-reversible heat pumps where the capacity and power are interpolated from manufacturer data along three variables.

  • Condenser entering or leaving temperature: the choice between the entering or leaving temperature depends on the value of the parameter use_TConOutForTab specified in the parameter record ( Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2DLoadDep.GenericHeatPump or Buildings.Fluid.Chillers.ModularReversible.Data.TableData2DLoadDep.Generic).
  • Evaporator entering or leaving temperature: the choice between the entering or leaving temperature depends on the value of the parameter use_TEvaOutForTab specified in the parameter record.
  • Part load ratio (PLR): the part load ratio is used as a proxy variable for the actual capacity modulation observable. A discrete observable such as the number of operating compressors for systems with multiple on/off compressors is converted into a continuous PLR value and the model only approximates the system performance on a time average.

The model includes ideal controls that solve for the HW or CHW supply or return temperature setpoint within the capacity limit. The Boolean parameter use_TLoaLvgForCtl is used for toggling between supply or return temperature control. The default setting use_TLoaLvgForCtl=true corresponds to supply temperature control.

For a comprehensive description of the algorithm and the calculations for capacity and power, please refer to the documentation of Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.TableData2DLoadDep. This documentation also details the required format for the performance data file.

Control points

The following input points are available.

  • Heat pump on/off command signal: on (Boolean, scalar)
  • For reversible heat pumps only (use_rev=true), heat pump switchover signal: hea (Boolean, scalar)
    Set hea=true for heating mode, hea=false for cooling mode.
  • HW temperature setpoint: THwSet (real, scalar)
    This is either the supply or return temperature setpoint depending on the value of use_TLoaLvgForCtl.
  • For reversible heat pumps only (use_rev=true), CHW temperature setpoint: TChwSet (real, scalar)
    This is either the supply or return temperature setpoint depending on the value of use_TLoaLvgForCtl.

Implementation details

This model introduces structural changes compared to other models within Buildings.Fluid.HeatPumps.ModularReversible.

First, the Boolean parameter use_rev is used for toggling between reversible and non-reversible systems. This differs from other models which require redeclaring the component modeling the reversed cycle.

Second, the model includes new input variables that match the control points found in heat pump onboard controllers (see the previous section for their description).

Parameters

TypeNameDefaultDescription
Booleanuse_rev (from PartialReversibleRefrigerantMachine)true=true if the chiller or heat pump is reversible
Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021safCtrPar (from PartialReversibleRefrigerantMachine)
Modelica.Units.SI.DensityrhoCon (from PartialReversibleRefrigerantMachine)MediumCon.density(staCon_nominal)Condenser medium density
Modelica.Units.SI.SpecificHeatCapacitycpCon (from PartialReversibleRefrigerantMachine)MediumCon.specificHeatCapacityCp(staCon_nominal)Condenser medium specific heat capacity
Modelica.Units.SI.DensityrhoEva (from PartialReversibleRefrigerantMachine)MediumEva.density(staEva_nominal)Evaporator medium density
Modelica.Units.SI.SpecificHeatCapacitycpEva (from PartialReversibleRefrigerantMachine)MediumEva.specificHeatCapacityCp(staEva_nominal)Evaporator medium specific heat capacity
Booleanuse_TLoaLvgForCtltrueSet to true for leaving temperature control, false for entering temperature control
RealscaFacHearefCyc.refCycHeaPumHea.scaFacScaling factor of heat pump
Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2DLoadDep.GenericHeatPumpdatHea
Buildings.Fluid.Chillers.ModularReversible.Data.TableData2DLoadDep.GenericdatCoo
Modelica.Units.SI.PowerP_min0Minimum power when system is enabled with compressor cycled off
Assumptions
BooleanallowFlowReversal1 (from PartialFourPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1
BooleanallowFlowReversal2 (from PartialFourPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2
Nominal condition
Modelica.Units.SI.MassFlowRatem1_flow_nominal (from PartialFourPortInterface)Nominal mass flow rate
Modelica.Units.SI.MassFlowRatem2_flow_nominal (from PartialFourPortInterface)Nominal mass flow rate
Modelica.Units.SI.HeatFlowRatePEle_nominal (from PartialReversibleRefrigerantMachine)Nominal electrical power consumption
Modelica.Units.SI.HeatFlowRateQHea_flow_nominalNominal heating capacity
Modelica.Units.SI.TemperatureTConHea_nominalHW temperature: leaving if datHea.use_TConOutForTab=true, entering otherwise
Modelica.Units.SI.TemperatureTEvaHea_nominalEvaporator heating fluid temperature: leaving if datHea.use_TEvaOutForTab=true, entering otherwise
Advanced
Medium1.MassFlowRatem1_flow_small (from PartialFourPortInterface)1E-4*abs(m1_flow_nominal)Small mass flow rate for regularization of zero flow
Medium2.MassFlowRatem2_flow_small (from PartialFourPortInterface)1E-4*abs(m2_flow_nominal)Small mass flow rate for regularization of zero flow
BooleanallowDifferentDeviceIdentifiers (from PartialReversibleRefrigerantMachine)falseif use_rev=true, device data for cooling and heating need to entered. Set allowDifferentDeviceIdentifiers=true to allow different device identifiers devIde
BooleancalEff (from PartialReversibleRefrigerantMachine)true=false to disable efficiency calculation, may speed up the simulation
ReallimWarSca (from PartialReversibleRefrigerantMachine)0.05Allowed difference in scaling '|scaFacHea - scaFacCoo| / scaFacHea', if exceeded, a warning will be issued
Advanced › Diagnostics
Booleanshow_T (from PartialFourPortInterface)false= true, if actual temperature at port is computed
RealySet_small (from PartialReversibleRefrigerantMachine)0.01Threshold for relative speed for the device to be considered on
Safety control
Booleanuse_intSafCtr (from PartialReversibleRefrigerantMachine)true=true to enable internal safety control
Condenser › Dynamics
Modelica.Units.SI.TimetauCon (from PartialReversibleRefrigerantMachine)30Condenser heat transfer time constant at nominal flow
Nominal condition - Pressure losses
Modelica.Units.SI.TemperatureDifferencedTCon_nominal (from PartialReversibleRefrigerantMachine)Nominal temperature difference in condenser medium, used to calculate mass flow rate
Modelica.Units.SI.MassFlowRatemCon_flow_nominal (from PartialReversibleRefrigerantMachine)Nominal mass flow rate of the condenser medium
Modelica.Units.SI.PressureDifferencedpCon_nominal (from PartialReversibleRefrigerantMachine)Pressure drop at nominal mass flow rate
Modelica.Units.SI.TemperatureDifferencedTEva_nominal (from PartialReversibleRefrigerantMachine)Nominal temperature difference in evaporator medium, used to calculate mass flow rate
Modelica.Units.SI.MassFlowRatemEva_flow_nominal (from PartialReversibleRefrigerantMachine)Nominal mass flow rate of the evaporator medium
Modelica.Units.SI.PressureDifferencedpEva_nominal (from PartialReversibleRefrigerantMachine)Pressure drop at nominal mass flow rate
Condenser › Flow resistance
RealdeltaMCon (from PartialReversibleRefrigerantMachine)0.1Fraction of nominal mass flow rate where transition to turbulent occurs
RealnCon (from PartialReversibleRefrigerantMachine)2Flow exponent, n=1 for laminar, n=2 for turbulent
Condenser › Heat Losses
Booleanuse_conCap (from PartialReversibleRefrigerantMachine)true=true if using capacitor model for condenser heat loss estimation
Modelica.Units.SI.HeatCapacityCCon (from PartialReversibleRefrigerantMachine)0Heat capacity of the condenser
Modelica.Units.SI.ThermalConductanceGConOut (from PartialReversibleRefrigerantMachine)0Outer thermal conductance for condenser heat loss calculations
Modelica.Units.SI.ThermalConductanceGConIns (from PartialReversibleRefrigerantMachine)0Inner thermal conductance for condenser heat loss calculations
Evaporator › Dynamics
Modelica.Units.SI.TimetauEva (from PartialReversibleRefrigerantMachine)30Evaporator heat transfer time constant at nominal flow
Evaporator › Flow resistance
RealdeltaMEva (from PartialReversibleRefrigerantMachine)0.1Fraction of nominal mass flow rate where transition to turbulent occurs
RealnEva (from PartialReversibleRefrigerantMachine)2Flow exponent, n=1 for laminar, n=2 for turbulent
Evaporator › Heat Losses
Booleanuse_evaCap (from PartialReversibleRefrigerantMachine)true=true if using capacitor model for evaporator heat loss estimation
Modelica.Units.SI.HeatCapacityCEva (from PartialReversibleRefrigerantMachine)0Heat capacity of the evaporator
Modelica.Units.SI.ThermalConductanceGEvaOut (from PartialReversibleRefrigerantMachine)0Outer thermal conductance for evaporator heat loss calculations
Modelica.Units.SI.ThermalConductanceGEvaIns (from PartialReversibleRefrigerantMachine)0Inner thermal conductance for evaporator heat loss calculations
Assumptions › Evaporator
BooleanallowFlowReversalEva (from PartialReversibleRefrigerantMachine)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Assumptions › Condenser
BooleanallowFlowReversalCon (from PartialReversibleRefrigerantMachine)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Initialization › Parameters
Modelica.Blocks.Types.InitinitType (from PartialReversibleRefrigerantMachine)Modelica.Blocks.Types.Init.InitialStateType of initialization for refrigerant cycle dynamics (InitialState and InitialOutput are identical)
Initialization › Condenser
Modelica.Media.Interfaces.Types.AbsolutePressurepCon_start (from PartialReversibleRefrigerantMachine)MediumCon.p_defaultStart value of pressure
Modelica.Media.Interfaces.Types.TemperatureTCon_start (from PartialReversibleRefrigerantMachine)MediumCon.T_defaultStart value of temperature
Modelica.Units.SI.TemperatureTConCap_start (from PartialReversibleRefrigerantMachine)MediumCon.T_defaultInitial temperature of heat capacity of condenser
Modelica.Media.Interfaces.Types.MassFraction[MediumCon.nX]XCon_start (from PartialReversibleRefrigerantMachine)MediumCon.X_defaultStart value of mass fractions m_i/m
Initialization › Evaporator
Modelica.Media.Interfaces.Types.AbsolutePressurepEva_start (from PartialReversibleRefrigerantMachine)MediumEva.p_defaultStart value of pressure
Modelica.Media.Interfaces.Types.TemperatureTEva_start (from PartialReversibleRefrigerantMachine)MediumEva.T_defaultStart value of temperature
Modelica.Units.SI.TemperatureTEvaCap_start (from PartialReversibleRefrigerantMachine)MediumEva.T_defaultInitial temperature of heat capacity at evaporator
Modelica.Media.Interfaces.Types.MassFraction[MediumEva.nX]XEva_start (from PartialReversibleRefrigerantMachine)MediumEva.X_defaultStart value of mass fractions m_i/m
Dynamics › Equation
Modelica.Fluid.Types.DynamicsenergyDynamics (from PartialReversibleRefrigerantMachine)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state (only affects fluid-models)
Advanced › Flow resistance
Booleanfrom_dp (from PartialReversibleRefrigerantMachine)false= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearized (from PartialReversibleRefrigerantMachine)false= true, use linear relation between m_flow and dp for any flow rate
Nominal condition - Cooling
Modelica.Units.SI.HeatFlowRateQCoo_flow_nominalNominal cooling capacity
Modelica.Units.SI.TemperatureTConCoo_nominalCHW temperature: leaving if datCoo.use_TEvaOutForTab=true, entering otherwise
Modelica.Units.SI.TemperatureTEvaCoo_nominalCondenser cooling fluid temperature: leaving if datCoo.use_TConOutForTab=true, entering otherwise

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a1 (from PartialFourPort)Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_bport_b1 (from PartialFourPort)Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_aport_a2 (from PartialFourPort)Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Fluid.Interfaces.FluidPort_bport_b2 (from PartialFourPort)Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Blocks.Interfaces.RealInputySet (from PartialReversibleRefrigerantMachine)Relative compressor speed between 0 and 1
Modelica.Blocks.Interfaces.RealInputTEvaAmb (from PartialReversibleRefrigerantMachine)Ambient temperature on the evaporator side
Modelica.Blocks.Interfaces.RealInputTConAmb (from PartialReversibleRefrigerantMachine)Ambient temperature on the condenser side
Modelica.Blocks.Interfaces.RealOutputQCon_flow (from PartialReversibleRefrigerantMachine)Actual heating heat flow rate added to fluid 1
Modelica.Blocks.Interfaces.RealOutputP (from PartialReversibleRefrigerantMachine)Electric power consumed by compressor
Modelica.Blocks.Interfaces.RealOutputQEva_flow (from PartialReversibleRefrigerantMachine)Actual cooling heat flow rate removed from fluid 2
Modelica.Blocks.Interfaces.RealOutputEER (from PartialReversibleRefrigerantMachine)Energy efficieny ratio
Modelica.Blocks.Interfaces.RealOutputCOP (from PartialReversibleRefrigerantMachine)Coefficient of performance
Buildings.Controls.OBC.CDL.Interfaces.BooleanInputonOn/off command: true to enable heat pump, false to disable heat pump
Buildings.Controls.OBC.CDL.Interfaces.RealInputTHwSetHW temperature setpoint - Supply or return depending on use_TLoaLvgForCtl
Buildings.Controls.OBC.CDL.Interfaces.RealInputTChwSetCHW temperature setpoint - Supply or return depending on use_TLoaLvgForCtl
Buildings.Controls.OBC.CDL.Interfaces.BooleanInputheaSwitchover signal: true for heating, false for cooling
Modelica.Blocks.Interfaces.RealOutputPLRCompressor part load ratio

Components

TypeNameDefaultDescription
Medium1.MassFlowRatem1_flow (from PartialFourPortInterface)port_a1.m_flowMass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp1 (from PartialFourPortInterface)port_a1.p - port_b1.pPressure difference between port_a1 and port_b1
Medium2.MassFlowRatem2_flow (from PartialFourPortInterface)port_a2.m_flowMass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp2 (from PartialFourPortInterface)port_a2.p - port_b2.pPressure difference between port_a2 and port_b2
Medium1.ThermodynamicStatesta_a1 (from PartialFourPortInterface)if allowFlowReversal1 then Medium1.setState_phX(port_a1.p, noEvent(actualStream(port_a1.h_outflow)), noEvent(actualStream(port_a1.Xi_outflow))) else Medium1.setState_phX(port_a1.p, inStream(port_a1.h_outflow), inStream(port_a1.Xi_outflow))Medium properties in port_a1
Medium1.ThermodynamicStatesta_b1 (from PartialFourPortInterface)if allowFlowReversal1 then Medium1.setState_phX(port_b1.p, noEvent(actualStream(port_b1.h_outflow)), noEvent(actualStream(port_b1.Xi_outflow))) else Medium1.setState_phX(port_b1.p, port_b1.h_outflow, port_b1.Xi_outflow)Medium properties in port_b1
Medium2.ThermodynamicStatesta_a2 (from PartialFourPortInterface)if allowFlowReversal2 then Medium2.setState_phX(port_a2.p, noEvent(actualStream(port_a2.h_outflow)), noEvent(actualStream(port_a2.Xi_outflow))) else Medium2.setState_phX(port_a2.p, inStream(port_a2.h_outflow), inStream(port_a2.Xi_outflow))Medium properties in port_a2
Medium2.ThermodynamicStatesta_b2 (from PartialFourPortInterface)if allowFlowReversal2 then Medium2.setState_phX(port_b2.p, noEvent(actualStream(port_b2.h_outflow)), noEvent(actualStream(port_b2.Xi_outflow))) else Medium2.setState_phX(port_b2.p, port_b2.h_outflow, port_b2.Xi_outflow)Medium properties in port_b2
PartialModularRefrigerantCyclerefCyc (from PartialReversibleRefrigerantMachine)
Modelica.Units.SI.HeatFlowRateQ1_flow (from PartialReversibleRefrigerantMachine)QCon_flowHeat transferred into the medium 1
Modelica.Units.SI.HeatFlowRateQ2_flow (from PartialReversibleRefrigerantMachine)QEva_flowHeat transferred into the medium 2
Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.EvaporatorCondenserWithCapacitycon (from PartialReversibleRefrigerantMachine)Heat exchanger model for the condenser
Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.EvaporatorCondenserWithCapacityeva (from PartialReversibleRefrigerantMachine)Heat exchanger model for the evaporator
Buildings.HeatTransfer.Sources.PrescribedTemperaturevarTOutEva (from PartialReversibleRefrigerantMachine)Forces heat losses according to ambient temperature
Buildings.HeatTransfer.Sources.PrescribedTemperaturevarTOutCon (from PartialReversibleRefrigerantMachine)Forces heat losses according to ambient temperature
Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.SafetysafCtr (from PartialReversibleRefrigerantMachine)Safety control models
Buildings.Fluid.Sensors.MassFlowRatemEva_flow (from PartialReversibleRefrigerantMachine)Mass flow sensor at the evaporator
Buildings.Fluid.Sensors.MassFlowRatemCon_flow (from PartialReversibleRefrigerantMachine)Mass flow sensor at the condenser
RefrigerantCycleInertiarefCycIneCon (from PartialReversibleRefrigerantMachine)Inertia model for condenser side
RefrigerantCycleInertiarefCycIneEva (from PartialReversibleRefrigerantMachine)Inertia model for evaporator side
Modelica.Blocks.Sources.RealExpressionsenTConIn (from PartialReversibleRefrigerantMachine)Real expression for condenser inlet temperature
Modelica.Blocks.Sources.RealExpressionsenTEvaIn (from PartialReversibleRefrigerantMachine)Real expression for evaporator inlet temperature
Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.CalculateEfficiencyeff (from PartialReversibleRefrigerantMachine)Calculate efficiencies of device
Modelica.Blocks.Sources.BooleanConstantconHeaLocks the device in heating mode if designated to be not reversible
Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.CalculateCommandSignalcalYSetCalculate command signal from required PLR
Modelica.Blocks.Sources.BooleanConstantconHeaBusLocks the device in heating mode if not reversible - Case with use_busConOnl=true
Buildings.Templates.Plants.Controls.Utilities.PlaceholderRealphTChwSetPlaceholder value

Contents

NameDescription
RefrigerantCycleHeatPumpHeatingRefrigerant cycle module for the heating mode
RefrigerantCycleHeatPumpCoolingRefrigerant cycle module for the cooling mode

Revisions

  • March 23, 2026, by Antoine Gautier:
    Refactored with two separate connectors for HW and CHW temperature setpoints.
    This is for #4507.
  • March 21, 2025, by Antoine Gautier:
    First implementation.