modelTableData2DLoadDepSHC

Grey-box model for multipipe heat pumps

Extends from Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.PartialReversibleRefrigerantMachine.

Information

This is a model for simultaneous heating and cooling (SHC) air-to-water heat pumps (also referred to as 4-pipe polyvalent units or "Type A" in Eurovent, 2025), where the capacity and power are interpolated from manufacturer data along the source and sink temperature and the part load ratio (PLR).1

All kinds of capacity-modulation processes are supported, such as VFD-driven compressors, multiple on-off compressors, and single compressor cycling.

The model supports modeling both modular (nUni > 1) and single-unit (nUni = 1) systems. When modeling modular systems, the staging logic for multiple modules is included, but the HW and CHW isolation valves are not. However, the model includes the calculation of the flow characteristic of an equivalent actuator model to simplify the modeling of isolation valves. The model also provides control variables for these valves, or for primary pumps that are not controlled based on Δp. See Section "Implementation details" for further explanations.

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 underlying assumptions, please refer to the documentation of Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.TableData2DLoadDepSHC. This documentation also explains the required format for the performance data file.

Footnotes

1 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.

Control signals

The following input signals are available.

  • Heating on/off command: onHea (Boolean, scalar)
  • Cooling on/off command: onCoo (Boolean, scalar)
  • HW temperature setpoint: THwSet (real, scalar)
    This is either the supply or return temperature setpoint depending on the value of use_TLoaLvgForCtl.
  • CHW temperature setpoint: TChwSet (real, scalar)
    This is either the supply or return temperature setpoint depending on the value of use_TLoaLvgForCtl.

The following output signals are available.

  • HW isolation valve commanded position: yValHwIso (real, scalar)
    This is a real scalar signal (not a Boolean vector) that is provided to control a single instance of Buildings.Fluid.Actuators.Valves.TwoWayPolynomial as an equivalent for the modules' HW isolation valves, see Section "Implementation details".
  • CHW isolation valve commanded position: yValChwIso (real, scalar)
    This is a real scalar signal (not a Boolean vector) that is provided to control a single instance of Buildings.Fluid.Actuators.Valves.TwoWayPolynomial as an equivalent for the modules' CHW isolation valves, see Section "Implementation details".
  • HW isolation valve or primary pump command: y1HwValIsoPumPri (Boolean, 1D-array of dimension nUni)
    This variable is provided to control a parallel arrangement of either HW isolation valves (two-position) or primary pumps, see Section "Implementation details".
  • CHW isolation valve or primary pump command: y1ChwValIsoPumPri (Boolean, 1D-array of dimension nUni)
    This variable is provided to control a parallel arrangement of either CHW isolation valves (two-position) or primary pumps, see Section "Implementation details".

Implementation details

Modular systems are typically installed with HW and CHW isolation valves for each module. The model does not include these valves. Furthermore, the model aggregates all modules into an equivalent heating or cooling system. For integration into a plant model, the recommended approach consists of using a single instance of Buildings.Fluid.Actuators.Valves.TwoWayPolynomial to represent the parallel network of HW isolation valves in series with the modules' condenser barrels, and another instance to represent the parallel network of CHW isolation valves in series with the modules' evaporator barrels. The heat pump model must then be configured with use_preDro = false to inhibit the heat exchanger pressure drop calculation.

The actuator model can be parameterized with the flow characteristic chaValHwIso (resp. chaValChwIso) which is calculated by the current model to ensure that a fractional opening of 1 / i results in a mass flow rate of mCon_flow_nominal / i (resp. mEva_flow_nominal / i) when the model is subjected to a differential pressure of dpHw_nominal on the HW side (resp. dpChw_nominal on the CHW side). The flow characteristic is calculated under the assumption that the heat pump heat exchanger flow resistance is lumped with the actuator flow resistance, which yields the following expression for the characteristic:

φ(y) = (y2 * dpValIso_nominal / (dpValIso_nominal + dp<Hw|Chw>_nominal * (1 - y2)))1/2,

where y = 1 / i is the fractional opening of the equivalent actuator when a number of i modules are enabled on the HW or CHW side, and dpValIso_nominal is the isolation valve pressure drop at design flow.

Note that at least one HW isolation valve (resp. CHW isolation valve) must be open when the heat pump is in SHC or heating-only mode (resp. SHC or cooling-only mode), irrespective of any modules being staged on. This is a requirement for proper load calculation in the staging logic. This requirement is taken into account in the calculation of the control variables for the equivalent actuator yValHwIso and yValChwIso.

This approach is illustrated in the example models Buildings.Fluid.HeatPumps.ModularReversible.Examples.TableData2DLoadDepSHC1Only and Buildings.Fluid.HeatPumps.ModularReversible.Examples.TableData2DLoadDepSHC1And2 that showcase the use of this heat pump model in conjunction with equivalent actuator models in a primary-only and constant primary-secondary plant model.

Alternatively, the model also provides the Boolean array connectors y1HwValIsoPumPri[nUni] and y1ChwValIsoPumPri[nUni] that can be used to control an explicit parallel arrangement of isolation valves or primary pumps. These variables use the same requirement as above and their first element is true based on the system operating mode command, irrespective of any modules being staged on.

References

Parameters

TypeNameDefaultDescription
Buildings.Fluid.HeatPumps.ModularReversible.Types.HeatPumptypBuildings.Fluid.HeatPumps.ModularReversible.Types.HeatPump.AirToWaterSystem type
IntegernUni1Number of modules
Booleanuse_TLoaLvgForCtltrueSet to true for leaving temperature control, false for entering temperature control
Booleanuse_preDrotrueSet to true to model HW/CHW pressure drop, false for external calculation by valve component
Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2DLoadDepSHC.Genericdat
Modelica.Units.SI.PowerP_min0Remaining power when system is enabled with all compressors cycled off
RealscaFacHearefCyc.refCycHeaPumHea.calQUseP.scaFacHeaScaling factor for interpolated heat flow rate and power - Heating mode
RealscaFacCoorefCyc.refCycHeaPumHea.calQUseP.scaFacCooScaling factor for interpolated heat flow rate and power - Cooling mode
Nominal condition
Modelica.Units.SI.PressureDifferencedpHw_nominaldat.dpCon_nominal*scaFacHea^2HW pressure drop - Only modeled in component if use_preDro=true
Modelica.Units.SI.PressureDifferencedpChw_nominaldat.dpEva_nominal*scaFacCoo^2CHW pressure drop - Only modeled in component if use_preDro=true
Modelica.Units.SI.HeatFlowRateQHea_flow_nominalHeating heat flow rate - All modules
Modelica.Units.SI.TemperatureTConHea_nominalHW temperature: leaving if dat.use_TConOutForTab=true, entering otherwise
Modelica.Units.SI.TemperatureTEvaHea_nominalEvaporator heating fluid temperature: leaving if dat.use_TAmbOutForTab=true, entering otherwise
Nominal condition - Cooling
Modelica.Units.SI.HeatFlowRateQCoo_flow_nominalCooling heat flow rate - All modules
Modelica.Units.SI.TemperatureTConCoo_nominalCHW temperature: leaving if dat.use_TEvaOutForTab=true, entering otherwise
Modelica.Units.SI.TemperatureTEvaCoo_nominalCondenser cooling fluid temperature: leaving if dat.use_TAmbOutForTab=true, entering otherwise
Nominal condition - SHC
Modelica.Units.SI.HeatFlowRateQHeaShc_flow_nominalHeating heat flow rate - All modules
Modelica.Units.SI.HeatFlowRateQCooShc_flow_nominalCooling heat flow rate - All modules
Assumptions
BooleanallowFlowReversalAmbtrue= false to simplify equations, assuming, but not enforcing, no flow reversal for ambient-side medium
Advanced
RealdpValIso_nominalBuildings.Templates.Data.Defaults.dpValIsoHW/CHW isolation valve pressure drop at nominal flow rate
Buildings.Fluid.Actuators.Valves.Data.GenericchaValHwIsoBuildings.Fluid.Actuators.Valves.Data.Generic(y = {i/nUni for i in 0:nUni}, phi = {sqrt((i/nUni)^2*dpValIso_nominal/(dpValIso_nominal + dpHw_nominal*(1 - (i/nUni)^2))) for i in 0:nUni})Equivalent HW isolation valve flow characteristic
Buildings.Fluid.Actuators.Valves.Data.GenericchaValChwIsoBuildings.Fluid.Actuators.Valves.Data.Generic(y = {i/nUni for i in 0:nUni}, phi = {sqrt((i/nUni)^2*dpValIso_nominal/(dpValIso_nominal + dpChw_nominal*(1 - (i/nUni)^2))) for i in 0:nUni})Equivalent CHW isolation valve flow characteristic
Advanced › Staging logic
RealdtRun300Minimum stage runtime
RealdtMea120Load averaging time window
RealSPLR0.9Staging part load ratio
Advanced › Safeties
Modelica.Units.SI.TemperatureDifferencedTSaf2Maximum temperature deviation from setpoint before limiting demand for safety (>0)

Components

TypeNameDefaultDescription
Buildings.Controls.OBC.CDL.Interfaces.BooleanInputonHeaHeating on/off command
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.BooleanInputonCooCooling on/off command
Buildings.Controls.OBC.CDL.Interfaces.IntegerOutputnUniHeaNumber of modules in heating mode
Buildings.Controls.OBC.CDL.Interfaces.IntegerOutputnUniCooNumber of modules in cooling mode
Buildings.Controls.OBC.CDL.Interfaces.IntegerOutputnUniShcNumber of modules in SHC mode (may be cycling into single mode)
Modelica.Blocks.Interfaces.RealOutputyValHwIsoEquivalent HW isolation valve command
Modelica.Blocks.Interfaces.RealOutputyValChwIsoEquivalent CHW isolation valve command
Modelica.Blocks.Interfaces.BooleanOutput[nUni]y1HwValIsoPumPriHW isolation valve or primary pump command
Modelica.Blocks.Interfaces.BooleanOutput[nUni]y1ChwValIsoPumPriCHW isolation valve or primary pump command
BoundaryConditions.WeatherData.BusweaBusWeather bus
Templates.Plants.Controls.Utilities.PlaceholderRealTAmbInAmbient-side fluid inlet temperature
Modelica.Blocks.Sources.BooleanConstantconHeaPlaceholder signal
Modelica.Blocks.Sources.RealExpressioncalYValHwIsoCalculate equivalent HW isolation valve command
Modelica.Blocks.Sources.RealExpressioncalYValChwIsoCalculate equivalent CHW isolation valve command
Modelica.Blocks.Sources.BooleanExpression[nUni]calY1ValHwIsoCalculate HW isolation valve command
Modelica.Blocks.Sources.BooleanExpression[nUni]calY1ValChwIsoCalculate CHW isolation valve command

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 heating and cooling on/off commands.
    This is for #4507.
  • July 1, 2025, by Antoine Gautier:
    First implementation.