Buildings.Fluid.HeatPumps.ModularReversible

Package for reversible and non-reversible heat pumps using a modular model approach

Information

Package with models and packages for the modular reversible heat pump approach. See the Buildings.Fluid.HeatPumps.ModularReversible.UsersGuide for more information.

Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).

Package Content

Name Description
Buildings.Fluid.HeatPumps.ModularReversible.UsersGuide UsersGuide User's Guide for modular reversible heat pump and chiller models
Buildings.Fluid.HeatPumps.ModularReversible.AirToWaterTableData2D AirToWaterTableData2D Reversible air to water heat pump based on 2D manufacturer data in Europe
Buildings.Fluid.HeatPumps.ModularReversible.CarnotWithLosses CarnotWithLosses Heat pump using the Carnot approach, but with added reversibility and losses (heat, frost, inertia)
Buildings.Fluid.HeatPumps.ModularReversible.LargeScaleWaterToWater LargeScaleWaterToWater Model with automatic parameter estimation for large scale water-to-water heat pumps
Buildings.Fluid.HeatPumps.ModularReversible.Modular Modular Grey-box model for reversible and non-reversible heat pumps
Buildings.Fluid.HeatPumps.ModularReversible.TableData2D TableData2D Reversible heat pump based on 2D manufacturer data
Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDep TableData2DLoadDep Grey-box model for reversible and non-reversible heat pumps
Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDepSHC TableData2DLoadDepSHC Grey-box model for multipipe heat pumps
Buildings.Fluid.HeatPumps.ModularReversible.Controls Controls Package of control sequences
Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle RefrigerantCycle Package for heat pupmp refrigerant cycle modules
Buildings.Fluid.HeatPumps.ModularReversible.Data Data Package with data for modular reversible heat pump models
Buildings.Fluid.HeatPumps.ModularReversible.Types Types Package with type definitions
Buildings.Fluid.HeatPumps.ModularReversible.Examples Examples Collection of models that illustrate model use and test models
Buildings.Fluid.HeatPumps.ModularReversible.Validation Validation Collection of validation models
Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses BaseClasses Package with base classes for Buildings.Fluid.HeatPumps.ModularReversible

Buildings.Fluid.HeatPumps.ModularReversible.AirToWaterTableData2D Buildings.Fluid.HeatPumps.ModularReversible.AirToWaterTableData2D

Reversible air to water heat pump based on 2D manufacturer data in Europe

Buildings.Fluid.HeatPumps.ModularReversible.AirToWaterTableData2D

Information

Reversible air-to-water heat pump based on two-dimensional data from manufacturer data, (e.g. based on EN 14511), using the Buildings.Fluid.HeatPumps.ModularReversible.Modular approach.

For more information on the approach, see Buildings.Fluid.HeatPumps.ModularReversible.UsersGuide.

Internal inertias and heat losses are neglected, as these are implicitly obtained in measured data from manufacturers. Also, icing is disabled as the performance degradation is already contained in the data.

Please read the documentation of the model for heating at Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.TableData2D.

For cooling, the assumptions are similar, and described at Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.TableData2D

References

EN 14511-2018: Air conditioners, liquid chilling packages and heat pumps for space heating and cooling and process chillers, with electrically driven compressors https://www.beuth.de/de/norm/din-en-14511-1/298537524

Extends from Buildings.Fluid.HeatPumps.ModularReversible.TableData2D (Reversible heat pump based on 2D manufacturer data).

Parameters

TypeNameDefaultDescription
replaceable package MediumConPartialMediumMedium on condenser side
replaceable package MediumEvaPartialMediumMedium on evaporator side
Nominal condition
HeatFlowRateQHea_flow_nominal Nominal heating capacity [W]
TemperatureTConHea_nominal Nominal temperature of the heated fluid during heating mode [K]
TemperatureTEvaHea_nominal Nominal temperature of the cooled fluid during heating mode [K]
Safety control
Booleanuse_intSafCtrtrue=true to enable internal safety control
Wuellhorst2021safCtrParredeclare replaceable Buildi...Safety control parameters
Nominal condition - Pressure losses
TemperatureDifferencedTCon_nominalQHea_flow_nominal/cpCon/mCon...Nominal temperature difference in condenser medium, used to calculate mass flow rate [K]
MassFlowRatemCon_flow_nominaldatTabHea.mCon_flow_nominal*...Nominal mass flow rate of the condenser medium [kg/s]
PressureDifferencedpCon_nominaldatTabHea.dpCon_nominal*scaF...Pressure drop at nominal mass flow rate [Pa]
TemperatureDifferencedTEva_nominal(QHea_flow_nominal - PEle_no...Nominal temperature difference in evaporator medium, used to calculate mass flow rate [K]
MassFlowRatemEva_flow_nominaldatTabHea.mEva_flow_nominal*...Nominal mass flow rate of the evaporator medium [kg/s]
PressureDifferencedpEva_nominaldatTabHea.dpEva_nominal*scaF...Pressure drop at nominal mass flow rate [Pa]
Nominal condition - Cooling
HeatFlowRateQCoo_flow_nominalrefCyc.refCycHeaPumCoo.QCooN...Nominal cooling capacity [W]
TemperatureTConCoo_nominal Nominal temperature of the cooled fluid during cooling mode [K]
TemperatureTEvaCoo_nominal Nominal temperature of the heated fluid during cooling mode [K]
Assumptions
Evaporator
BooleanallowFlowReversalEvatrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Condenser
BooleanallowFlowReversalContrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
BooleanallowDifferentDeviceIdentifiersfalseif use_rev=true, device data for cooling and heating need to entered. Set allowDifferentDeviceIdentifiers=true to allow different device identifiers devIde
BooleancalEfftrue=false to disable efficiency calculation, may speed up the simulation
ReallimWarSca0.05Allowed difference in scaling '|scaFacHea - scaFacCoo| / scaFacHea', if exceeded, a warning will be issued [1]
SmoothnesssmoothnessModelica.Blocks.Types.Smooth...Smoothness of table interpolation
ExtrapolationextrapolationModelica.Blocks.Types.Extrap...Extrapolation of data outside the definition range
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
RealySet_small0.01Threshold for relative speed for the device to be considered on
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearizedfalse= true, use linear relation between m_flow and dp for any flow rate
Condenser
Dynamics
TimetauCon30Condenser heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMCon0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_conCapfalse=true if using capacitor model for condenser heat loss estimation
HeatCapacityCCon0Heat capacity of the condenser [J/K]
ThermalConductanceGConOut0Outer thermal conductance for condenser heat loss calculations [W/K]
ThermalConductanceGConIns0Inner thermal conductance for condenser heat loss calculations [W/K]
Evaporator
Dynamics
TimetauEva30Evaporator heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMEva0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_evaCapfalse=true if using capacitor model for evaporator heat loss estimation
HeatCapacityCEva0Heat capacity of the evaporator [J/K]
ThermalConductanceGEvaOut0Outer thermal conductance for evaporator heat loss calculations [W/K]
ThermalConductanceGEvaIns0Inner thermal conductance for evaporator heat loss calculations [W/K]
Initialization
Parameters
InitinitTypeModelica.Blocks.Types.Init.I...Type of initialization for refrigerant cycle dynamics (InitialState and InitialOutput are identical)
Condenser
AbsolutePressurepCon_startMediumCon.p_defaultStart value of pressure [Pa]
TemperatureTCon_startMediumCon.T_defaultStart value of temperature [K]
TemperatureTConCap_startMediumCon.T_defaultInitial temperature of heat capacity of condenser [K]
MassFractionXCon_start[MediumCon.nX]MediumCon.X_defaultStart value of mass fractions m_i/m [kg/kg]
Evaporator
AbsolutePressurepEva_startMediumEva.p_defaultStart value of pressure [Pa]
TemperatureTEva_startMediumEva.T_defaultStart value of temperature [K]
TemperatureTEvaCap_startMediumEva.T_defaultInitial temperature of heat capacity at evaporator [K]
MassFractionXEva_start[MediumEva.nX]MediumEva.X_defaultStart value of mass fractions m_i/m [kg/kg]
Dynamics
Equation
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state (only affects fluid-models)

Connectors

TypeNameDescription
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
replaceable package MediumConMedium on condenser side
replaceable package MediumEvaMedium on evaporator side
input RealInputySetRelative compressor speed between 0 and 1
input RealInputTEvaAmbAmbient temperature on the evaporator side [K]
input RealInputTConAmbAmbient temperature on the condenser side [K]
output RealOutputQCon_flowActual heating heat flow rate added to fluid 1 [W]
output RealOutputPElectric power consumed by compressor [W]
output RealOutputQEva_flowActual cooling heat flow rate removed from fluid 2 [W]
output RealOutputEEREnergy efficieny ratio [1]
output RealOutputCOPCoefficient of performance [1]
input BooleanInputhea=true for heating, =false for cooling

Modelica definition

model AirToWaterTableData2D "Reversible air to water heat pump based on 2D manufacturer data in Europe" extends Buildings.Fluid.HeatPumps.ModularReversible.TableData2D( redeclare replaceable package MediumEva = Buildings.Media.Air, redeclare replaceable package MediumCon = Buildings.Media.Water, redeclare replaceable Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2D.GenericAirToWater datTabHea constrainedby Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2D.GenericAirToWater, redeclare replaceable Buildings.Fluid.Chillers.ModularReversible.Data.TableData2D.Generic datTabCoo constrainedby Buildings.Fluid.Chillers.ModularReversible.Data.TableData2D.Generic); end AirToWaterTableData2D;

Buildings.Fluid.HeatPumps.ModularReversible.CarnotWithLosses Buildings.Fluid.HeatPumps.ModularReversible.CarnotWithLosses

Heat pump using the Carnot approach, but with added reversibility and losses (heat, frost, inertia)

Buildings.Fluid.HeatPumps.ModularReversible.CarnotWithLosses

Information

Model of a reversible heat pump.

This model extends Buildings.Fluid.HeatPumps.ModularReversible.Modular and selects the constant Carnot effectiveness module for heat pumps ( Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.ConstantCarnotEffectiveness) and chillers ( Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.ConstantCarnotEffectiveness) to model a reversible heat pump. For the heating operation, the approach temperatures are fixed at nominal values to avoid nonlinear system of equations.

Furthermore, losses are enabled to model the heat pump with a more realistic behaviour:

For more information on the approach, see Buildings.Fluid.HeatPumps.ModularReversible.UsersGuide.

Extends from Buildings.Fluid.HeatPumps.ModularReversible.Modular (Grey-box model for reversible and non-reversible heat pumps).

Parameters

TypeNameDefaultDescription
replaceable package MediumConPartialMediumMedium on condenser side
replaceable package MediumEvaPartialMediumMedium on evaporator side
Booleanuse_revfalse=true if the chiller or heat pump is reversible
replaceable model RefrigerantCycleHeatPumpHeatingBuildings.Fluid.HeatPumps.Mo...Refrigerant cycle module for the heating mode
replaceable model RefrigerantCycleHeatPumpCoolingNoCoolingRefrigerant cycle module for the cooling mode
RealetaCarnot_nominal0.3Constant Carnot effectiveness
Nominal condition
HeatFlowRateQHea_flow_nominal Nominal heating capacity [W]
TemperatureTConHea_nominal Nominal temperature of the heated fluid during heating mode [K]
TemperatureTEvaHea_nominal Nominal temperature of the cooled fluid during heating mode [K]
TemperatureDifferenceTAppCon_nominalif cpCon < 1500 then 5 else 2Temperature difference between refrigerant and working fluid outlet in condenser [K]
TemperatureDifferenceTAppEva_nominalif cpEva < 1500 then 5 else 2Temperature difference between refrigerant and working fluid outlet in evaporator [K]
Inertia
replaceable model RefrigerantCycleInertiaNoInertiaInertia between the refrigerant cycle outputs and the heat exchangers.
Safety control
Booleanuse_intSafCtrtrue=true to enable internal safety control
Wuellhorst2021safCtrParredeclare parameter Building...Safety control parameters
Nominal condition - Pressure losses
TemperatureDifferencedTCon_nominal Nominal temperature difference in condenser medium, used to calculate mass flow rate [K]
MassFlowRatemCon_flow_nominalQHea_flow_nominal/(dTCon_nom...Nominal mass flow rate of the condenser medium [kg/s]
PressureDifferencedpCon_nominal Pressure drop at nominal mass flow rate [Pa]
TemperatureDifferencedTEva_nominal Nominal temperature difference in evaporator medium, used to calculate mass flow rate [K]
MassFlowRatemEva_flow_nominal(QHea_flow_nominal - PEle_no...Nominal mass flow rate of the evaporator medium [kg/s]
PressureDifferencedpEva_nominal Pressure drop at nominal mass flow rate [Pa]
Nominal condition - Cooling
HeatFlowRateQCoo_flow_nominal-PEle_nominal*refCyc.refCycH...Nominal cooling capacity [W]
TemperatureTConCoo_nominal Nominal temperature of the cooled fluid during cooling mode [K]
TemperatureTEvaCoo_nominal Nominal temperature of the heated fluid during cooling mode [K]
Refrigerant cycle inertia
TimerefIneTimCon300Refrigerant cycle inertia time constant for first order delay [s]
IntegernthOrd1Order of refrigerant cycle interia
Assumptions
Evaporator
BooleanallowFlowReversalEvatrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Condenser
BooleanallowFlowReversalContrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
BooleanallowDifferentDeviceIdentifiersfalseif use_rev=true, device data for cooling and heating need to entered. Set allowDifferentDeviceIdentifiers=true to allow different device identifiers devIde
BooleancalEfftrue=false to disable efficiency calculation, may speed up the simulation
ReallimWarSca0.05Allowed difference in scaling '|scaFacHea - scaFacCoo| / scaFacHea', if exceeded, a warning will be issued [1]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
RealySet_small0.01Threshold for relative speed for the device to be considered on
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearizedfalse= true, use linear relation between m_flow and dp for any flow rate
Condenser
Dynamics
TimetauCon30Condenser heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMCon0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_conCaptrue=true if using capacitor model for condenser heat loss estimation
HeatCapacityCCon0Heat capacity of the condenser [J/K]
ThermalConductanceGConOut0Outer thermal conductance for condenser heat loss calculations [W/K]
ThermalConductanceGConIns0Inner thermal conductance for condenser heat loss calculations [W/K]
Evaporator
Dynamics
TimetauEva30Evaporator heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMEva0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_evaCaptrue=true if using capacitor model for evaporator heat loss estimation
HeatCapacityCEva0Heat capacity of the evaporator [J/K]
ThermalConductanceGEvaOut0Outer thermal conductance for evaporator heat loss calculations [W/K]
ThermalConductanceGEvaIns0Inner thermal conductance for evaporator heat loss calculations [W/K]
Initialization
Parameters
InitinitTypeModelica.Blocks.Types.Init.I...Type of initialization for refrigerant cycle dynamics (InitialState and InitialOutput are identical)
Condenser
AbsolutePressurepCon_startMediumCon.p_defaultStart value of pressure [Pa]
TemperatureTCon_startMediumCon.T_defaultStart value of temperature [K]
TemperatureTConCap_startMediumCon.T_defaultInitial temperature of heat capacity of condenser [K]
MassFractionXCon_start[MediumCon.nX]MediumCon.X_defaultStart value of mass fractions m_i/m [kg/kg]
Evaporator
AbsolutePressurepEva_startMediumEva.p_defaultStart value of pressure [Pa]
TemperatureTEva_startMediumEva.T_defaultStart value of temperature [K]
TemperatureTEvaCap_startMediumEva.T_defaultInitial temperature of heat capacity at evaporator [K]
MassFractionXEva_start[MediumEva.nX]MediumEva.X_defaultStart value of mass fractions m_i/m [kg/kg]
Dynamics
Equation
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state (only affects fluid-models)

Connectors

TypeNameDescription
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
input RealInputySetRelative compressor speed between 0 and 1
input RealInputTEvaAmbAmbient temperature on the evaporator side [K]
input RealInputTConAmbAmbient temperature on the condenser side [K]
output RealOutputQCon_flowActual heating heat flow rate added to fluid 1 [W]
output RealOutputPElectric power consumed by compressor [W]
output RealOutputQEva_flowActual cooling heat flow rate removed from fluid 2 [W]
output RealOutputEEREnergy efficieny ratio [1]
output RealOutputCOPCoefficient of performance [1]
replaceable model RefrigerantCycleHeatPumpHeatingRefrigerant cycle module for the heating mode
replaceable model RefrigerantCycleHeatPumpCoolingRefrigerant cycle module for the cooling mode
input BooleanInputhea=true for heating, =false for cooling
Inertia
replaceable model RefrigerantCycleInertiaInertia between the refrigerant cycle outputs and the heat exchangers.

Modelica definition

model CarnotWithLosses "Heat pump using the Carnot approach, but with added reversibility and losses (heat, frost, inertia)" extends Buildings.Fluid.HeatPumps.ModularReversible.Modular( QCoo_flow_nominal=-PEle_nominal*refCyc.refCycHeaPumCoo.EER_nominal, redeclare model RefrigerantCycleHeatPumpCooling = Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.ConstantCarnotEffectiveness ( PEle_nominal=PEle_nominal, redeclare Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, etaCarnot_nominal=etaCarnot_nominal, use_constAppTem=true, TAppCon_nominal=TAppCon_nominal, TAppEva_nominal=TAppEva_nominal), redeclare model RefrigerantCycleHeatPumpHeating = Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.ConstantCarnotEffectiveness ( redeclare Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.FunctionalIcingFactor iceFacCal(redeclare function icingFactor = Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.Functions.wetterAfjei1997), etaCarnot_nominal=etaCarnot_nominal, TAppCon_nominal=TAppCon_nominal, TAppEva_nominal=TAppEva_nominal), final allowDifferentDeviceIdentifiers=false, final use_evaCap, final use_conCap, redeclare model RefrigerantCycleInertia = Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Inertias.VariableOrder ( final refIneFreConst=1/refIneTimCon, final nthOrd=nthOrd, initType=Modelica.Blocks.Types.Init.InitialOutput)); parameter Real etaCarnot_nominal=0.3 "Constant Carnot effectiveness"; parameter Modelica.Units.SI.TemperatureDifference TAppCon_nominal= if cpCon < 1500 then 5 else 2 "Temperature difference between refrigerant and working fluid outlet in condenser"; parameter Modelica.Units.SI.TemperatureDifference TAppEva_nominal= if cpEva < 1500 then 5 else 2 "Temperature difference between refrigerant and working fluid outlet in evaporator"; parameter Modelica.Units.SI.Time refIneTimCon = 300 "Refrigerant cycle inertia time constant for first order delay"; parameter Integer nthOrd(min=1)=1 "Order of refrigerant cycle interia"; initial algorithm assert(use_rev and (abs(refCyc.refCycHeaPumCoo.PEle_nominal - PEle_nominal) / PEle_nominal < limWarSca), "In " + getInstanceName() + ": Nominal electrical powers for heating and cooling operation differ by " + String((refCyc.refCycHeaPumCoo.PEle_nominal - PEle_nominal) / PEle_nominal * 100) + " %. The simulated nominal heating and cooling capacities may not be realistic for a single device.", AssertionLevel.warning); end CarnotWithLosses;

Buildings.Fluid.HeatPumps.ModularReversible.LargeScaleWaterToWater Buildings.Fluid.HeatPumps.ModularReversible.LargeScaleWaterToWater

Model with automatic parameter estimation for large scale water-to-water heat pumps

Buildings.Fluid.HeatPumps.ModularReversible.LargeScaleWaterToWater

Information

Model using parameters for a large scale water-to-water heat pump, using the ModularReversible model approach.

Contrary to the standard sizing approach for the Buildings.Fluid.HeatPumps.ModularReversible.Modular models, the parameters are based on an automatic estimation as described in Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.LargeScaleWaterToWaterDeclarations.

For more information on the approach, please read the UsersGuide.

Please read the documentation of the model for heating here: Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.TableData2D.

Assumptions

Extends from Buildings.Fluid.HeatPumps.ModularReversible.TableData2D (Reversible heat pump based on 2D manufacturer data), Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.LargeScaleWaterToWaterDeclarations (Model with parameters for large scale water-to-water heat pump).

Parameters

TypeNameDefaultDescription
replaceable package MediumConPartialMediumMedium on condenser side
replaceable package MediumEvaPartialMediumMedium on evaporator side
GenericHeatPumpdatTabHearedeclare parameter Building...Data table of heat pump
GenericdatTabCooredeclare parameter Building...Data table of chiller
Nominal condition
HeatFlowRateQHea_flow_nominal Nominal heating capacity [W]
TemperatureTConHea_nominal Nominal temperature of the heated fluid during heating mode [K]
TemperatureTEvaHea_nominal Nominal temperature of the cooled fluid during heating mode [K]
Safety control
Booleanuse_intSafCtrtrue=true to enable internal safety control
Wuellhorst2021safCtrParredeclare replaceable Buildi...Safety control parameters
Nominal condition - Pressure losses
TemperatureDifferencedTCon_nominalQHea_flow_nominal/cpCon/mCon...Nominal temperature difference in condenser medium, used to calculate mass flow rate [K]
MassFlowRatemCon_flow_nominalautCalMasCon_flowNominal mass flow rate of the condenser medium [kg/s]
PressureDifferencedpCon_nominaldatTabHea.dpCon_nominal*scaF...Pressure drop at nominal mass flow rate [Pa]
TemperatureDifferencedTEva_nominal(QHea_flow_nominal - PEle_no...Nominal temperature difference in evaporator medium, used to calculate mass flow rate [K]
MassFlowRatemEva_flow_nominalautCalMasEva_flowNominal mass flow rate of the evaporator medium [kg/s]
PressureDifferencedpEva_nominaldatTabHea.dpEva_nominal*scaF...Pressure drop at nominal mass flow rate [Pa]
Nominal condition - Cooling
HeatFlowRateQCoo_flow_nominalrefCyc.refCycHeaPumCoo.QCooN...Nominal cooling capacity [W]
TemperatureTConCoo_nominal Nominal temperature of the cooled fluid during cooling mode [K]
TemperatureTEvaCoo_nominal Nominal temperature of the heated fluid during cooling mode [K]
Assumptions
Evaporator
BooleanallowFlowReversalEvatrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Condenser
BooleanallowFlowReversalContrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
BooleanallowDifferentDeviceIdentifiersfalseif use_rev=true, device data for cooling and heating need to entered. Set allowDifferentDeviceIdentifiers=true to allow different device identifiers devIde
BooleancalEfftrue=false to disable efficiency calculation, may speed up the simulation
ReallimWarSca0.05Allowed difference in scaling '|scaFacHea - scaFacCoo| / scaFacHea', if exceeded, a warning will be issued [1]
SmoothnesssmoothnessModelica.Blocks.Types.Smooth...Smoothness of table interpolation
ExtrapolationextrapolationModelica.Blocks.Types.Extrap...Extrapolation of data outside the definition range
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
RealySet_small0.01Threshold for relative speed for the device to be considered on
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearizedfalse= true, use linear relation between m_flow and dp for any flow rate
Condenser
Dynamics
TimetauConautCalVCon*rhoCon/autCalMasC...Condenser heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMCon0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_conCapfalse=true if using capacitor model for condenser heat loss estimation
HeatCapacityCCon0Heat capacity of the condenser [J/K]
ThermalConductanceGConOut0Outer thermal conductance for condenser heat loss calculations [W/K]
ThermalConductanceGConIns0Inner thermal conductance for condenser heat loss calculations [W/K]
Evaporator
Dynamics
TimetauEvaautCalVEva*rhoEva/autCalMasE...Evaporator heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMEva0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_evaCapfalse=true if using capacitor model for evaporator heat loss estimation
HeatCapacityCEva0Heat capacity of the evaporator [J/K]
ThermalConductanceGEvaOut0Outer thermal conductance for evaporator heat loss calculations [W/K]
ThermalConductanceGEvaIns0Inner thermal conductance for evaporator heat loss calculations [W/K]
Initialization
Parameters
InitinitTypeModelica.Blocks.Types.Init.I...Type of initialization for refrigerant cycle dynamics (InitialState and InitialOutput are identical)
Condenser
AbsolutePressurepCon_startMediumCon.p_defaultStart value of pressure [Pa]
TemperatureTCon_startMediumCon.T_defaultStart value of temperature [K]
TemperatureTConCap_startMediumCon.T_defaultInitial temperature of heat capacity of condenser [K]
MassFractionXCon_start[MediumCon.nX]MediumCon.X_defaultStart value of mass fractions m_i/m [kg/kg]
Evaporator
AbsolutePressurepEva_startMediumEva.p_defaultStart value of pressure [Pa]
TemperatureTEva_startMediumEva.T_defaultStart value of temperature [K]
TemperatureTEvaCap_startMediumEva.T_defaultInitial temperature of heat capacity at evaporator [K]
MassFractionXEva_start[MediumEva.nX]MediumEva.X_defaultStart value of mass fractions m_i/m [kg/kg]
Dynamics
Equation
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state (only affects fluid-models)

Connectors

TypeNameDescription
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
replaceable package MediumConMedium on condenser side
replaceable package MediumEvaMedium on evaporator side
input RealInputySetRelative compressor speed between 0 and 1
input RealInputTEvaAmbAmbient temperature on the evaporator side [K]
input RealInputTConAmbAmbient temperature on the condenser side [K]
output RealOutputQCon_flowActual heating heat flow rate added to fluid 1 [W]
output RealOutputPElectric power consumed by compressor [W]
output RealOutputQEva_flowActual cooling heat flow rate removed from fluid 2 [W]
output RealOutputEEREnergy efficieny ratio [1]
output RealOutputCOPCoefficient of performance [1]
input BooleanInputhea=true for heating, =false for cooling

Modelica definition

model LargeScaleWaterToWater "Model with automatic parameter estimation for large scale water-to-water heat pumps" extends Buildings.Fluid.HeatPumps.ModularReversible.TableData2D( redeclare replaceable package MediumCon = Buildings.Media.Water, redeclare replaceable package MediumEva = Buildings.Media.Water, final mCon_flow_nominal=autCalMasCon_flow, final mEva_flow_nominal=autCalMasEva_flow, final tauCon=autCalVCon*rhoCon/autCalMasCon_flow, final tauEva=autCalVEva*rhoEva/autCalMasEva_flow); extends Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.LargeScaleWaterToWaterDeclarations( final autCalMasCon_flow=max(4E-5*QHea_flow_nominal - 0.6162, autCalMMin_flow), final autCalMasEva_flow=max(4E-5*QHea_flow_nominal - 0.3177, autCalMMin_flow), final autCalVCon=max(1E-7*QHea_flow_nominal - 94E-4, autCalVMin), final autCalVEva=max(1E-7*QHea_flow_nominal - 75E-4, autCalVMin)); end LargeScaleWaterToWater;

Buildings.Fluid.HeatPumps.ModularReversible.Modular Buildings.Fluid.HeatPumps.ModularReversible.Modular

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

Buildings.Fluid.HeatPumps.ModularReversible.Modular

Information

Model of a reversible, modular heat pump. This models allows combining any of the available modules for refrigerant heating or cooling cycles, inertias, heat losses, and safety controls. All features are optional.

Adding to the partial model ( Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.PartialReversibleRefrigerantMachine), this model has the hea signal to choose the operation mode of the heat pump.

For more information on the approach, see Buildings.Fluid.HeatPumps.ModularReversible.UsersGuide.

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

Parameters

TypeNameDefaultDescription
replaceable package MediumConPartialMediumMedium on condenser side
replaceable package MediumEvaPartialMediumMedium on evaporator side
Booleanuse_revfalse=true if the chiller or heat pump is reversible
replaceable model RefrigerantCycleHeatPumpHeatingBuildings.Fluid.HeatPumps.Mo...Refrigerant cycle module for the heating mode
replaceable model RefrigerantCycleHeatPumpCoolingBuildings.Fluid.Chillers.Mod...Refrigerant cycle module for the cooling mode
Nominal condition
HeatFlowRatePEle_nominalrefCyc.refCycHeaPumHea.PEle_...Nominal electrical power consumption [W]
HeatFlowRateQHea_flow_nominal Nominal heating capacity [W]
TemperatureTConHea_nominal Nominal temperature of the heated fluid during heating mode [K]
TemperatureTEvaHea_nominal Nominal temperature of the cooled fluid during heating mode [K]
Inertia
replaceable model RefrigerantCycleInertiaNoInertiaInertia between the refrigerant cycle outputs and the heat exchangers.
Safety control
Booleanuse_intSafCtrtrue=true to enable internal safety control
Wuellhorst2021safCtrParredeclare parameter Building...Safety control parameters
Nominal condition - Pressure losses
TemperatureDifferencedTCon_nominal Nominal temperature difference in condenser medium, used to calculate mass flow rate [K]
MassFlowRatemCon_flow_nominalQHea_flow_nominal/(dTCon_nom...Nominal mass flow rate of the condenser medium [kg/s]
PressureDifferencedpCon_nominal Pressure drop at nominal mass flow rate [Pa]
TemperatureDifferencedTEva_nominal Nominal temperature difference in evaporator medium, used to calculate mass flow rate [K]
MassFlowRatemEva_flow_nominal(QHea_flow_nominal - PEle_no...Nominal mass flow rate of the evaporator medium [kg/s]
PressureDifferencedpEva_nominal Pressure drop at nominal mass flow rate [Pa]
Nominal condition - Cooling
HeatFlowRateQCoo_flow_nominal0Nominal cooling capacity [W]
TemperatureTConCoo_nominal Nominal temperature of the cooled fluid during cooling mode [K]
TemperatureTEvaCoo_nominal Nominal temperature of the heated fluid during cooling mode [K]
Assumptions
Evaporator
BooleanallowFlowReversalEvatrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Condenser
BooleanallowFlowReversalContrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
BooleanallowDifferentDeviceIdentifiersfalseif use_rev=true, device data for cooling and heating need to entered. Set allowDifferentDeviceIdentifiers=true to allow different device identifiers devIde
BooleancalEfftrue=false to disable efficiency calculation, may speed up the simulation
ReallimWarSca0.05Allowed difference in scaling '|scaFacHea - scaFacCoo| / scaFacHea', if exceeded, a warning will be issued [1]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
RealySet_small0.01Threshold for relative speed for the device to be considered on
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearizedfalse= true, use linear relation between m_flow and dp for any flow rate
Condenser
Dynamics
TimetauCon30Condenser heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMCon0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_conCaptrue=true if using capacitor model for condenser heat loss estimation
HeatCapacityCCon0Heat capacity of the condenser [J/K]
ThermalConductanceGConOut0Outer thermal conductance for condenser heat loss calculations [W/K]
ThermalConductanceGConIns0Inner thermal conductance for condenser heat loss calculations [W/K]
Evaporator
Dynamics
TimetauEva30Evaporator heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMEva0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_evaCaptrue=true if using capacitor model for evaporator heat loss estimation
HeatCapacityCEva0Heat capacity of the evaporator [J/K]
ThermalConductanceGEvaOut0Outer thermal conductance for evaporator heat loss calculations [W/K]
ThermalConductanceGEvaIns0Inner thermal conductance for evaporator heat loss calculations [W/K]
Initialization
Parameters
InitinitTypeModelica.Blocks.Types.Init.I...Type of initialization for refrigerant cycle dynamics (InitialState and InitialOutput are identical)
Condenser
AbsolutePressurepCon_startMediumCon.p_defaultStart value of pressure [Pa]
TemperatureTCon_startMediumCon.T_defaultStart value of temperature [K]
TemperatureTConCap_startMediumCon.T_defaultInitial temperature of heat capacity of condenser [K]
MassFractionXCon_start[MediumCon.nX]MediumCon.X_defaultStart value of mass fractions m_i/m [kg/kg]
Evaporator
AbsolutePressurepEva_startMediumEva.p_defaultStart value of pressure [Pa]
TemperatureTEva_startMediumEva.T_defaultStart value of temperature [K]
TemperatureTEvaCap_startMediumEva.T_defaultInitial temperature of heat capacity at evaporator [K]
MassFractionXEva_start[MediumEva.nX]MediumEva.X_defaultStart value of mass fractions m_i/m [kg/kg]
Dynamics
Equation
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state (only affects fluid-models)

Connectors

TypeNameDescription
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
input RealInputySetRelative compressor speed between 0 and 1
input RealInputTEvaAmbAmbient temperature on the evaporator side [K]
input RealInputTConAmbAmbient temperature on the condenser side [K]
output RealOutputQCon_flowActual heating heat flow rate added to fluid 1 [W]
output RealOutputPElectric power consumed by compressor [W]
output RealOutputQEva_flowActual cooling heat flow rate removed from fluid 2 [W]
output RealOutputEEREnergy efficieny ratio [1]
output RealOutputCOPCoefficient of performance [1]
replaceable model RefrigerantCycleHeatPumpHeatingRefrigerant cycle module for the heating mode
replaceable model RefrigerantCycleHeatPumpCoolingRefrigerant cycle module for the cooling mode
input BooleanInputhea=true for heating, =false for cooling

Modelica definition

model Modular "Grey-box model for reversible and non-reversible heat pumps" extends Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.PartialReversibleRefrigerantMachine ( final use_COP=true, final use_EER=use_rev, con(preDro(m_flow(nominal=QHea_flow_nominal/1000/10))), eva(preDro(m_flow(nominal=QHea_flow_nominal/1000/10))), final PEle_nominal=refCyc.refCycHeaPumHea.PEle_nominal, mCon_flow_nominal=QHea_flow_nominal/(dTCon_nominal*cpCon), mEva_flow_nominal=(QHea_flow_nominal - PEle_nominal)/(dTEva_nominal*cpEva), use_rev=false, redeclare final Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.RefrigerantCycle refCyc( redeclare model RefrigerantCycleHeatPumpHeating = RefrigerantCycleHeatPumpHeating, redeclare model RefrigerantCycleHeatPumpCooling = RefrigerantCycleHeatPumpCooling, final allowDifferentDeviceIdentifiers=allowDifferentDeviceIdentifiers)); parameter Modelica.Units.SI.HeatFlowRate QHea_flow_nominal(min=Modelica.Constants.eps) "Nominal heating capacity"; parameter Modelica.Units.SI.HeatFlowRate QCoo_flow_nominal(max=0)=0 "Nominal cooling capacity"; replaceable model RefrigerantCycleHeatPumpHeating = Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialHeatPumpCycle (PEle_nominal=0) constrainedby Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialHeatPumpCycle ( final useInHeaPum=true, final QHea_flow_nominal=QHea_flow_nominal, final TCon_nominal=TConHea_nominal, final TEva_nominal=TEvaHea_nominal, final cpCon=cpCon, final cpEva=cpEva) "Refrigerant cycle module for the heating mode"; replaceable model RefrigerantCycleHeatPumpCooling = Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.NoCooling constrainedby Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.PartialChillerCycle ( final useInChi=false, final cpCon=cpCon, final cpEva=cpEva, final TCon_nominal=TEvaCoo_nominal, final TEva_nominal=TConCoo_nominal, QCoo_flow_nominal=QCoo_flow_nominal) "Refrigerant cycle module for the cooling mode"; parameter Modelica.Units.SI.Temperature TConHea_nominal "Nominal temperature of the heated fluid during heating mode"; parameter Modelica.Units.SI.Temperature TEvaHea_nominal "Nominal temperature of the cooled fluid during heating mode"; parameter Modelica.Units.SI.Temperature TConCoo_nominal "Nominal temperature of the cooled fluid during cooling mode"; parameter Modelica.Units.SI.Temperature TEvaCoo_nominal "Nominal temperature of the heated fluid during cooling mode"; Modelica.Blocks.Sources.BooleanConstant conHea(final k=true) if not use_busConOnl and not use_rev "Locks the device in heating mode if designated to be not reversible"; Modelica.Blocks.Interfaces.BooleanInput hea if not use_busConOnl and use_rev "=true for heating, =false for cooling"; Modelica.Blocks.Logical.Hysteresis hys( final uLow=0.001, final uHigh=ySet_small, final pre_y_start=false) "Outputs whether the device is on based on the relative speed"; initial equation assert(TEvaHea_nominal < TConHea_nominal, "In " + getInstanceName() +": Wrong parameterization. Require TEvaHea_nominal < TConHea_nominal. Received TEvaHea_nominal = " + String(TEvaHea_nominal) + " TConHea_nominal = " + String(TConHea_nominal) + "."); // If the heat pump is also used for cooling, then QCoo_flow_nominal << 0. // Hence the first test is false and we require the correct entry of the temperatures. // If it is not used for cooling, then QCoo_flow_nominal = 0, and the temperature entry // won't be checked for correctness. assert(QCoo_flow_nominal > -1E-6 or TConCoo_nominal < TEvaCoo_nominal, "In " + getInstanceName() +": Wrong parameterization. Require TConCoo_nominal < TEvaCoo_nominal. Received TConCoo_nominal = " + String(TConCoo_nominal) + " TEvaCoo_nominal = " + String(TEvaCoo_nominal) + "."); equation connect(conHea.y, sigBus.hea); connect(hea, sigBus.hea); connect(eff.QUse_flow, refCycIneCon.y); connect(eff.hea, sigBus.hea); connect(hys.y, sigBus.onOffMea); connect(hys.u, sigBus.yMea); end Modular;

Buildings.Fluid.HeatPumps.ModularReversible.TableData2D Buildings.Fluid.HeatPumps.ModularReversible.TableData2D

Reversible heat pump based on 2D manufacturer data

Buildings.Fluid.HeatPumps.ModularReversible.TableData2D

Information

Heat pump based on two-dimensional data from manufacturer data, (e.g. based on EN 14511), using the Buildings.Fluid.HeatPumps.ModularReversible.Modular approach.

For more information on the approach, see Buildings.Fluid.HeatPumps.ModularReversible.UsersGuide.

Internal inertias and heat losses are typically neglected, as these are implicitly obtained in measured data from manufacturers. Also, icing is disabled as the performance degradation is already contained in the data.

Sizing

At the nominal conditions, the refrigerant cycle model will calculate the unscaled nominal heat flow rate, which is named QHeaNoSca_flow_nominal for heat pumps and QCooNoSca_flow_nominal for chillers. This value is probably different from QHea_flow_nominal and QCoo_flow_nominal which is for sizing. For example, suppose you need a 7.6 kW heat pump, but the datasheets only provides 5 kW and 10 kW options. In such cases, the performance data and relevant parameters are scaled using a scaling factor scaFac. Resulting, the refrigerant machine can supply more or less heat with the COP staying constant. However, one has to make sure that the movers in use also scale with this factor. Note that most parameters are scaled linearly. Only the pressure differences are scaled quadratically due to the linear scaling of the mass flow rates and the basic assumption:

k = ṁ ⁄ √ Δp  

Both QHeaNoSca_flow_nominal or QCooNoSca_flow_nominal and scaFac are calculated in the refrigerant cycle models.

Please read the documentation of the model for heating at Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.TableData2D.

For cooling, the assumptions are similar, and described at Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.TableData2D

References

EN 14511-2018: Air conditioners, liquid chilling packages and heat pumps for space heating and cooling and process chillers, with electrically driven compressors https://www.beuth.de/de/norm/din-en-14511-1/298537524

Extends from Buildings.Fluid.HeatPumps.ModularReversible.Modular (Grey-box model for reversible and non-reversible heat pumps).

Parameters

TypeNameDefaultDescription
replaceable package MediumConPartialMediumMedium on condenser side
replaceable package MediumEvaPartialMediumMedium on evaporator side
Booleanuse_revtrue=true if the chiller or heat pump is reversible
replaceable model RefrigerantCycleHeatPumpHeatingBuildings.Fluid.HeatPumps.Mo...Refrigerant cycle module for the heating mode
replaceable model RefrigerantCycleHeatPumpCoolingNoCoolingRefrigerant cycle module for the cooling mode
GenericHeatPumpdatTabHearedeclare parameter Building...Data table of heat pump
GenericdatTabCoodatTabCoo(use_TEvaOutForTab=...Data table of chiller
Nominal condition
HeatFlowRateQHea_flow_nominal Nominal heating capacity [W]
TemperatureTConHea_nominal Nominal temperature of the heated fluid during heating mode [K]
TemperatureTEvaHea_nominal Nominal temperature of the cooled fluid during heating mode [K]
Inertia
replaceable model RefrigerantCycleInertiaNoInertiaInertia between the refrigerant cycle outputs and the heat exchangers.
Safety control
Booleanuse_intSafCtrtrue=true to enable internal safety control
Nominal condition - Pressure losses
TemperatureDifferencedTCon_nominalQHea_flow_nominal/cpCon/mCon...Nominal temperature difference in condenser medium, used to calculate mass flow rate [K]
MassFlowRatemCon_flow_nominaldatTabHea.mCon_flow_nominal*...Nominal mass flow rate of the condenser medium [kg/s]
PressureDifferencedpCon_nominaldatTabHea.dpCon_nominal*scaF...Pressure drop at nominal mass flow rate [Pa]
TemperatureDifferencedTEva_nominal(QHea_flow_nominal - PEle_no...Nominal temperature difference in evaporator medium, used to calculate mass flow rate [K]
MassFlowRatemEva_flow_nominaldatTabHea.mEva_flow_nominal*...Nominal mass flow rate of the evaporator medium [kg/s]
PressureDifferencedpEva_nominaldatTabHea.dpEva_nominal*scaF...Pressure drop at nominal mass flow rate [Pa]
Nominal condition - Cooling
HeatFlowRateQCoo_flow_nominalrefCyc.refCycHeaPumCoo.QCooN...Nominal cooling capacity [W]
TemperatureTConCoo_nominal Nominal temperature of the cooled fluid during cooling mode [K]
TemperatureTEvaCoo_nominal Nominal temperature of the heated fluid during cooling mode [K]
Assumptions
Evaporator
BooleanallowFlowReversalEvatrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Condenser
BooleanallowFlowReversalContrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
BooleanallowDifferentDeviceIdentifiersfalseif use_rev=true, device data for cooling and heating need to entered. Set allowDifferentDeviceIdentifiers=true to allow different device identifiers devIde
BooleancalEfftrue=false to disable efficiency calculation, may speed up the simulation
ReallimWarSca0.05Allowed difference in scaling '|scaFacHea - scaFacCoo| / scaFacHea', if exceeded, a warning will be issued [1]
SmoothnesssmoothnessModelica.Blocks.Types.Smooth...Smoothness of table interpolation
ExtrapolationextrapolationModelica.Blocks.Types.Extrap...Extrapolation of data outside the definition range
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
RealySet_small0.01Threshold for relative speed for the device to be considered on
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearizedfalse= true, use linear relation between m_flow and dp for any flow rate
Condenser
Dynamics
TimetauCon30Condenser heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMCon0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_conCapfalse=true if using capacitor model for condenser heat loss estimation
HeatCapacityCCon0Heat capacity of the condenser [J/K]
ThermalConductanceGConOut0Outer thermal conductance for condenser heat loss calculations [W/K]
ThermalConductanceGConIns0Inner thermal conductance for condenser heat loss calculations [W/K]
Evaporator
Dynamics
TimetauEva30Evaporator heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMEva0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_evaCapfalse=true if using capacitor model for evaporator heat loss estimation
HeatCapacityCEva0Heat capacity of the evaporator [J/K]
ThermalConductanceGEvaOut0Outer thermal conductance for evaporator heat loss calculations [W/K]
ThermalConductanceGEvaIns0Inner thermal conductance for evaporator heat loss calculations [W/K]
Initialization
Parameters
InitinitTypeModelica.Blocks.Types.Init.I...Type of initialization for refrigerant cycle dynamics (InitialState and InitialOutput are identical)
Condenser
AbsolutePressurepCon_startMediumCon.p_defaultStart value of pressure [Pa]
TemperatureTCon_startMediumCon.T_defaultStart value of temperature [K]
TemperatureTConCap_startMediumCon.T_defaultInitial temperature of heat capacity of condenser [K]
MassFractionXCon_start[MediumCon.nX]MediumCon.X_defaultStart value of mass fractions m_i/m [kg/kg]
Evaporator
AbsolutePressurepEva_startMediumEva.p_defaultStart value of pressure [Pa]
TemperatureTEva_startMediumEva.T_defaultStart value of temperature [K]
TemperatureTEvaCap_startMediumEva.T_defaultInitial temperature of heat capacity at evaporator [K]
MassFractionXEva_start[MediumEva.nX]MediumEva.X_defaultStart value of mass fractions m_i/m [kg/kg]
Dynamics
Equation
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state (only affects fluid-models)

Connectors

TypeNameDescription
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
input RealInputySetRelative compressor speed between 0 and 1
input RealInputTEvaAmbAmbient temperature on the evaporator side [K]
input RealInputTConAmbAmbient temperature on the condenser side [K]
output RealOutputQCon_flowActual heating heat flow rate added to fluid 1 [W]
output RealOutputPElectric power consumed by compressor [W]
output RealOutputQEva_flowActual cooling heat flow rate removed from fluid 2 [W]
output RealOutputEEREnergy efficieny ratio [1]
output RealOutputCOPCoefficient of performance [1]
replaceable model RefrigerantCycleHeatPumpHeatingRefrigerant cycle module for the heating mode
replaceable model RefrigerantCycleHeatPumpCoolingRefrigerant cycle module for the cooling mode
input BooleanInputhea=true for heating, =false for cooling
Inertia
replaceable model RefrigerantCycleInertiaInertia between the refrigerant cycle outputs and the heat exchangers.

Modelica definition

model TableData2D "Reversible heat pump based on 2D manufacturer data" extends Buildings.Fluid.HeatPumps.ModularReversible.Modular( final use_rev=true, QCoo_flow_nominal=refCyc.refCycHeaPumCoo.QCooNoSca_flow_nominal*scaFacHea, dpEva_nominal=datTabHea.dpEva_nominal*scaFacHea^2, dpCon_nominal=datTabHea.dpCon_nominal*scaFacHea^2, redeclare replaceable Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 safCtrPar constrainedby Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Generic ( final tabUppHea=datTabHea.tabUppBou, final tabLowCoo=datTabCoo.tabLowBou, final use_TConOutHea=datTabHea.use_TConOutForOpeEnv, final use_TEvaOutHea=datTabHea.use_TEvaOutForOpeEnv, final use_TConOutCoo=datTabCoo.use_TConOutForOpeEnv, final use_TEvaOutCoo=datTabCoo.use_TEvaOutForOpeEnv), dTEva_nominal=(QHea_flow_nominal - PEle_nominal)/cpEva/mEva_flow_nominal, mEva_flow_nominal=datTabHea.mEva_flow_nominal*scaFacHea, mCon_flow_nominal=datTabHea.mCon_flow_nominal*scaFacHea, dTCon_nominal=QHea_flow_nominal/cpCon/mCon_flow_nominal, GEvaIns=0, GEvaOut=0, CEva=0, use_evaCap=false, GConIns=0, GConOut=0, CCon=0, use_conCap=false, redeclare model RefrigerantCycleHeatPumpCooling = Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.TableData2D ( redeclare Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, final mCon_flow_nominal=mCon_flow_nominal, final mEva_flow_nominal=mEva_flow_nominal, final smoothness=smoothness, final extrapolation=extrapolation, final datTab=datTabCoo), redeclare model RefrigerantCycleHeatPumpHeating = Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.TableData2D ( redeclare Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, final mCon_flow_nominal=mCon_flow_nominal, final mEva_flow_nominal=mEva_flow_nominal, final smoothness=smoothness, final extrapolation=extrapolation, final datTab=datTabHea), redeclare model RefrigerantCycleInertia = Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Inertias.NoInertia); final parameter Real scaFacHea=refCyc.refCycHeaPumHea.scaFac "Scaling factor of heat pump"; final parameter Real scaFacCoo=refCyc.refCycHeaPumCoo.scaFac "Scaling factor for cooling mode"; replaceable parameter Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2D.GenericHeatPump datTabHea constrainedby Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2D.GenericHeatPump "Data table of heat pump"; replaceable parameter Buildings.Fluid.Chillers.ModularReversible.Data.TableData2D.Generic datTabCoo( use_TEvaOutForTab=true, use_TConOutForTab=true) constrainedby Buildings.Fluid.Chillers.ModularReversible.Data.TableData2D.Generic "Data table of chiller"; parameter Modelica.Blocks.Types.Smoothness smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments "Smoothness of table interpolation"; parameter Modelica.Blocks.Types.Extrapolation extrapolation=Modelica.Blocks.Types.Extrapolation.LastTwoPoints "Extrapolation of data outside the definition range"; initial algorithm assert(use_rev and (abs(scaFacHea - scaFacCoo) / scaFacHea < limWarSca), "In " + getInstanceName() + ": Scaling factors for heating and cooling operation differ by " + String((scaFacHea - scaFacCoo) / scaFacHea * 100) + " %. The simulated nominal heating and cooling capacities may not be realistic for a single device", AssertionLevel.warning); end TableData2D;

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDep Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDep

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

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDep

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.

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.

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

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

Parameters

TypeNameDefaultDescription
replaceable package MediumConPartialMediumMedium on condenser side
replaceable package MediumEvaPartialMediumMedium on evaporator side
Booleanuse_revfalse=true if the chiller or heat pump is reversible
Booleanuse_TLoaLvgForCtltrueSet to true for leaving temperature control, false for entering temperature control
GenericHeatPumpdatHearedeclare parameter Building...Heating performance data
GenericdatCoodatCoo(devIde="", dpCon_nomi...Cooling performance data
PowerP_min0Minimum power when system is enabled with compressor cycled off [W]
Nominal condition
HeatFlowRatePEle_nominalrefCyc.refCycHeaPumHea.PEle_...Nominal electrical power consumption [W]
HeatFlowRateQHea_flow_nominal Nominal heating capacity [W]
TemperatureTConHea_nominal HW temperature: leaving if datHea.use_TConOutForTab=true, entering otherwise [K]
TemperatureTEvaHea_nominal Evaporator heating fluid temperature: leaving if datHea.use_TEvaOutForTab=true, entering otherwise [K]
Inertia
replaceable model RefrigerantCycleInertiaNoInertiaInertia between the refrigerant cycle outputs and the heat exchangers.
Safety control
Booleanuse_intSafCtrtrue=true to enable internal safety control
Nominal condition - Pressure losses
TemperatureDifferencedTCon_nominalQHea_flow_nominal/cpCon/mCon...Nominal temperature difference in condenser medium, used to calculate mass flow rate [K]
MassFlowRatemCon_flow_nominaldatHea.mCon_flow_nominal*sca...Nominal mass flow rate of the condenser medium [kg/s]
PressureDifferencedpCon_nominaldatHea.dpCon_nominal*scaFacH...Pressure drop at nominal mass flow rate [Pa]
TemperatureDifferencedTEva_nominal(QHea_flow_nominal - PEle_no...Nominal temperature difference in evaporator medium, used to calculate mass flow rate [K]
MassFlowRatemEva_flow_nominaldatHea.mEva_flow_nominal*sca...Nominal mass flow rate of the evaporator medium [kg/s]
PressureDifferencedpEva_nominaldatHea.dpEva_nominal*scaFacH...Pressure drop at nominal mass flow rate [Pa]
Nominal condition - Cooling
HeatFlowRateQCoo_flow_nominal Nominal cooling capacity [W]
TemperatureTConCoo_nominal CHW temperature: leaving if datCoo.use_TEvaOutForTab=true, entering otherwise [K]
TemperatureTEvaCoo_nominal Condenser cooling fluid temperature: leaving if datCoo.use_TConOutForTab=true, entering otherwise [K]
Assumptions
Evaporator
BooleanallowFlowReversalEvatrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Condenser
BooleanallowFlowReversalContrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
BooleanallowDifferentDeviceIdentifiersfalseif use_rev=true, device data for cooling and heating need to entered. Set allowDifferentDeviceIdentifiers=true to allow different device identifiers devIde
BooleancalEfftrue=false to disable efficiency calculation, may speed up the simulation
ReallimWarSca0.05Allowed difference in scaling '|scaFacHea - scaFacCoo| / scaFacHea', if exceeded, a warning will be issued [1]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
RealySet_small0.01Threshold for relative speed for the device to be considered on
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearizedfalse= true, use linear relation between m_flow and dp for any flow rate
Condenser
Dynamics
TimetauCon30Condenser heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMCon0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_conCapfalse=true if using capacitor model for condenser heat loss estimation
HeatCapacityCCon0Heat capacity of the condenser [J/K]
ThermalConductanceGConOut0Outer thermal conductance for condenser heat loss calculations [W/K]
ThermalConductanceGConIns0Inner thermal conductance for condenser heat loss calculations [W/K]
Evaporator
Dynamics
TimetauEva30Evaporator heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMEva0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_evaCapfalse=true if using capacitor model for evaporator heat loss estimation
HeatCapacityCEva0Heat capacity of the evaporator [J/K]
ThermalConductanceGEvaOut0Outer thermal conductance for evaporator heat loss calculations [W/K]
ThermalConductanceGEvaIns0Inner thermal conductance for evaporator heat loss calculations [W/K]
Initialization
Parameters
InitinitTypeModelica.Blocks.Types.Init.I...Type of initialization for refrigerant cycle dynamics (InitialState and InitialOutput are identical)
Condenser
AbsolutePressurepCon_startMediumCon.p_defaultStart value of pressure [Pa]
TemperatureTCon_startMediumCon.T_defaultStart value of temperature [K]
TemperatureTConCap_startMediumCon.T_defaultInitial temperature of heat capacity of condenser [K]
MassFractionXCon_start[MediumCon.nX]MediumCon.X_defaultStart value of mass fractions m_i/m [kg/kg]
Evaporator
AbsolutePressurepEva_startMediumEva.p_defaultStart value of pressure [Pa]
TemperatureTEva_startMediumEva.T_defaultStart value of temperature [K]
TemperatureTEvaCap_startMediumEva.T_defaultInitial temperature of heat capacity at evaporator [K]
MassFractionXEva_start[MediumEva.nX]MediumEva.X_defaultStart value of mass fractions m_i/m [kg/kg]
Dynamics
Equation
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state (only affects fluid-models)

Connectors

TypeNameDescription
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
input RealInputySetRelative compressor speed between 0 and 1
input RealInputTEvaAmbAmbient temperature on the evaporator side [K]
input RealInputTConAmbAmbient temperature on the condenser side [K]
output RealOutputQCon_flowActual heating heat flow rate added to fluid 1 [W]
output RealOutputPElectric power consumed by compressor [W]
output RealOutputQEva_flowActual cooling heat flow rate removed from fluid 2 [W]
output RealOutputEEREnergy efficieny ratio [1]
output RealOutputCOPCoefficient of performance [1]
input BooleanInputonOn/off command: true to enable heat pump, false to disable heat pump
input RealInputTHwSetHW temperature setpoint - Supply or return depending on use_TLoaLvgForCtl [K]
input RealInputTChwSetCHW temperature setpoint - Supply or return depending on use_TLoaLvgForCtl [K]
input BooleanInputheaSwitchover signal: true for heating, false for cooling
output RealOutputPLRCompressor part load ratio [1]

Modelica definition

model TableData2DLoadDep "Grey-box model for reversible and non-reversible heat pumps" extends Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.PartialReversibleRefrigerantMachine( final use_busConOnl=true, final use_COP=true, final use_EER=use_rev, final PEle_nominal=refCyc.refCycHeaPumHea.PEle_nominal, dpEva_nominal=datHea.dpEva_nominal * scaFacHea ^ 2, dpCon_nominal=datHea.dpCon_nominal * scaFacHea ^ 2, redeclare replaceable Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.TableData2DLoadDep safCtrPar constrainedby Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Generic( final use_maxCycRat=false, final tabUppHea=datHea.tabUppBou, final tabLowCoo=datCoo.tabLowBou, final use_TConOutHea=datHea.use_TConOutForOpeEnv, final use_TEvaOutHea=datHea.use_TEvaOutForOpeEnv, final use_TConOutCoo=datCoo.use_TConOutForOpeEnv, final use_TEvaOutCoo=datCoo.use_TEvaOutForOpeEnv), dTEva_nominal=(QHea_flow_nominal - PEle_nominal) / cpEva / mEva_flow_nominal, dTCon_nominal=QHea_flow_nominal / cpCon / mCon_flow_nominal, GEvaIns=0, GEvaOut=0, CEva=0, use_evaCap=false, GConIns=0, GConOut=0, CCon=0, use_conCap=false, mEva_flow_nominal=datHea.mEva_flow_nominal * scaFacHea, mCon_flow_nominal=datHea.mCon_flow_nominal * scaFacHea, use_rev=false, redeclare final Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.RefrigerantCycleConditional refCyc( redeclare final model RefrigerantCycleHeatPumpHeating= RefrigerantCycleHeatPumpHeating, redeclare final model RefrigerantCycleHeatPumpCooling= RefrigerantCycleHeatPumpCooling, final allowDifferentDeviceIdentifiers=allowDifferentDeviceIdentifiers)); final model RefrigerantCycleHeatPumpHeating=Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.TableData2DLoadDep( final use_TLoaLvgForCtl=use_TLoaLvgForCtl, final useInHeaPum=true, final use_rev=use_rev, final QHea_flow_nominal=QHea_flow_nominal, final TCon_nominal=TConHea_nominal, final TEva_nominal=TEvaHea_nominal, final cpCon=cpCon, final cpEva=cpEva, redeclare Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, final dat=datHea, final P_min=P_min) "Refrigerant cycle module for the heating mode"; final model RefrigerantCycleHeatPumpCooling=Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.TableData2DLoadDep( final use_TLoaLvgForCtl=use_TLoaLvgForCtl, final useInChi=false, final have_switchover=false, final QCoo_flow_nominal=QCoo_flow_nominal, final TCon_nominal=TEvaCoo_nominal, final TEva_nominal=TConCoo_nominal, final cpCon=cpCon, final cpEva=cpEva, redeclare final Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, final dat=datCoo, final P_min=P_min) "Refrigerant cycle module for the cooling mode"; parameter Boolean use_TLoaLvgForCtl=true "Set to true for leaving temperature control, false for entering temperature control"; parameter Modelica.Units.SI.HeatFlowRate QHea_flow_nominal(min=Modelica.Constants.eps) "Nominal heating capacity"; parameter Modelica.Units.SI.HeatFlowRate QCoo_flow_nominal(max=0, start=0) "Nominal cooling capacity"; final parameter Real scaFacHea=refCyc.refCycHeaPumHea.scaFac "Scaling factor of heat pump"; replaceable parameter Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2DLoadDep.GenericHeatPump datHea constrainedby Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2DLoadDep.GenericHeatPump "Heating performance data"; replaceable parameter Buildings.Fluid.Chillers.ModularReversible.Data.TableData2DLoadDep.Generic datCoo( devIde="", dpCon_nominal=0, dpEva_nominal=0, fileName="", mCon_flow_nominal=0, mEva_flow_nominal=0, PLRSup={1.0}, tabLowBou=fill(0.0, 0, 2), use_TConOutForTab=datHea.use_TConOutForTab, use_TEvaOutForTab=datHea.use_TEvaOutForTab) constrainedby Buildings.Fluid.Chillers.ModularReversible.Data.TableData2DLoadDep.Generic "Cooling performance data"; parameter Modelica.Units.SI.Power P_min(min=0)=0 "Minimum power when system is enabled with compressor cycled off"; parameter Modelica.Units.SI.Temperature TConHea_nominal "HW temperature: leaving if datHea.use_TConOutForTab=true, entering otherwise"; parameter Modelica.Units.SI.Temperature TEvaHea_nominal "Evaporator heating fluid temperature: leaving if datHea.use_TEvaOutForTab=true, entering otherwise"; parameter Modelica.Units.SI.Temperature TConCoo_nominal "CHW temperature: leaving if datCoo.use_TEvaOutForTab=true, entering otherwise"; parameter Modelica.Units.SI.Temperature TEvaCoo_nominal "Condenser cooling fluid temperature: leaving if datCoo.use_TConOutForTab=true, entering otherwise"; Modelica.Blocks.Sources.BooleanConstant conHea( final k=true) if not use_busConOnl and not use_rev "Locks the device in heating mode if designated to be not reversible"; Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.CalculateCommandSignal calYSet( final use_rev=use_rev, final useInHeaPum=true) "Calculate command signal from required PLR"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput on "On/off command: true to enable heat pump, false to disable heat pump"; Buildings.Controls.OBC.CDL.Interfaces.RealInput THwSet( final unit="K", displayUnit="degC") "HW temperature setpoint - Supply or return depending on use_TLoaLvgForCtl"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TChwSet( final unit="K", displayUnit="degC") if use_rev "CHW temperature setpoint - Supply or return depending on use_TLoaLvgForCtl"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput hea if use_rev "Switchover signal: true for heating, false for cooling"; Modelica.Blocks.Interfaces.RealOutput PLR( final unit="1") "Compressor part load ratio"; Modelica.Blocks.Sources.BooleanConstant conHeaBus(final k=true) if use_busConOnl and not use_rev "Locks the device in heating mode if not reversible - Case with use_busConOnl=true"; Buildings.Templates.Plants.Controls.Utilities.PlaceholderReal phTChwSet( final have_inp=use_rev, u_internal=273.15) "Placeholder value"; equation if not use_intSafCtr then connect(calYSet.ySet, sigBus.yMea); end if; connect(conHea.y, sigBus.hea); connect(hea, sigBus.hea); connect(eff.QUse_flow, refCycIneCon.y); connect(eff.hea, sigBus.hea); connect(sigBus.PLRHea, calYSet.PLRHea); connect(calYSet.ySet, sigBus.ySet); connect(calYSet.ySet, safCtr.ySet); connect(sigBus.PLRCoo, calYSet.PLRCoo); connect(on, sigBus.onOffMea); connect(conHeaBus.y, sigBus.hea); connect(PLR, sigBus.yMea); connect(THwSet, sigBus.THwSet); connect(TChwSet, phTChwSet.u); connect(phTChwSet.y, sigBus.TChwSet); end TableData2DLoadDep;

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDepSHC Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDepSHC

Grey-box model for multipipe heat pumps

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDepSHC

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.

The following output signals are available.

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

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

Parameters

TypeNameDefaultDescription
replaceable package MediumConPartialMediumMedium on condenser side
replaceable package MediumEvaPartialMediumMedium on evaporator side
Booleanuse_revfalse=true if the chiller or heat pump is reversible
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
Genericdatredeclare parameter Building...Performance data
PowerP_min0Remaining power when system is enabled with all compressors cycled off [W]
Nominal condition
HeatFlowRatePEle_nominalrefCyc.refCycHeaPumHea.PEle_...Nominal electrical power consumption [W]
PressureDifferencedpHw_nominaldat.dpCon_nominal*scaFacHea^2HW pressure drop - Only modeled in component if use_preDro=true [Pa]
PressureDifferencedpChw_nominaldat.dpEva_nominal*scaFacCoo^2CHW pressure drop - Only modeled in component if use_preDro=true [Pa]
HeatFlowRateQHea_flow_nominal Heating heat flow rate - All modules [W]
TemperatureTConHea_nominal HW temperature: leaving if dat.use_TConOutForTab=true, entering otherwise [K]
TemperatureTEvaHea_nominal Evaporator heating fluid temperature: leaving if dat.use_TAmbOutForTab=true, entering otherwise [K]
Inertia
replaceable model RefrigerantCycleInertiaNoInertiaInertia between the refrigerant cycle outputs and the heat exchangers.
Safety control
Booleanuse_intSafCtrfalse=true to enable internal safety control
Nominal condition - Pressure losses
TemperatureDifferencedTCon_nominalQHea_flow_nominal/cpCon/mCon...Nominal temperature difference in condenser medium, used to calculate mass flow rate [K]
MassFlowRatemCon_flow_nominaldat.mCon_flow_nominal*scaFac...Nominal mass flow rate of the condenser medium [kg/s]
PressureDifferencedpCon_nominalif use_preDro then dpHw_nomi...Pressure drop at nominal mass flow rate [Pa]
TemperatureDifferencedTEva_nominalabs(QCoo_flow_nominal)/cpEva...Nominal temperature difference in evaporator medium, used to calculate mass flow rate [K]
MassFlowRatemEva_flow_nominaldat.mEva_flow_nominal*scaFac...Nominal mass flow rate of the evaporator medium [kg/s]
PressureDifferencedpEva_nominalif use_preDro then dpChw_nom...Pressure drop at nominal mass flow rate [Pa]
Nominal condition - Cooling
HeatFlowRateQCoo_flow_nominal Cooling heat flow rate - All modules [W]
TemperatureTConCoo_nominal CHW temperature: leaving if dat.use_TEvaOutForTab=true, entering otherwise [K]
TemperatureTEvaCoo_nominal Condenser cooling fluid temperature: leaving if dat.use_TAmbOutForTab=true, entering otherwise [K]
Nominal condition - SHC
HeatFlowRateQHeaShc_flow_nominal Heating heat flow rate - All modules [W]
HeatFlowRateQCooShc_flow_nominal Cooling heat flow rate - All modules [W]
Assumptions
BooleanallowFlowReversalAmbtrue= false to simplify equations, assuming, but not enforcing, no flow reversal for ambient-side medium
Evaporator
BooleanallowFlowReversalEvatrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Condenser
BooleanallowFlowReversalContrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
BooleanallowDifferentDeviceIdentifiersfalseif use_rev=true, device data for cooling and heating need to entered. Set allowDifferentDeviceIdentifiers=true to allow different device identifiers devIde
BooleancalEfffalse=false to disable efficiency calculation, may speed up the simulation
ReallimWarSca0.05Allowed difference in scaling '|scaFacHea - scaFacCoo| / scaFacHea', if exceeded, a warning will be issued [1]
RealdpValIso_nominalBuildings.Templates.Data.Def...HW/CHW isolation valve pressure drop at nominal flow rate
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
RealySet_small0.01Threshold for relative speed for the device to be considered on
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearizedfalse= true, use linear relation between m_flow and dp for any flow rate
Staging logic
RealdtRun300Minimum stage runtime [s]
RealdtMea120Load averaging time window [s]
RealSPLR0.9Staging part load ratio
Safeties
TemperatureDifferencedTSaf2Maximum temperature deviation from setpoint before limiting demand for safety (>0) [K]
Condenser
Dynamics
TimetauCon30Condenser heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMCon0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_conCapfalse=true if using capacitor model for condenser heat loss estimation
HeatCapacityCCon0Heat capacity of the condenser [J/K]
ThermalConductanceGConOut0Outer thermal conductance for condenser heat loss calculations [W/K]
ThermalConductanceGConIns0Inner thermal conductance for condenser heat loss calculations [W/K]
Evaporator
Dynamics
TimetauEva30Evaporator heat transfer time constant at nominal flow [s]
Flow resistance
RealdeltaMEva0.1Fraction of nominal mass flow rate where transition to turbulent occurs
Heat Losses
Booleanuse_evaCapfalse=true if using capacitor model for evaporator heat loss estimation
HeatCapacityCEva0Heat capacity of the evaporator [J/K]
ThermalConductanceGEvaOut0Outer thermal conductance for evaporator heat loss calculations [W/K]
ThermalConductanceGEvaIns0Inner thermal conductance for evaporator heat loss calculations [W/K]
Initialization
Parameters
InitinitTypeModelica.Blocks.Types.Init.I...Type of initialization for refrigerant cycle dynamics (InitialState and InitialOutput are identical)
Condenser
AbsolutePressurepCon_startMediumCon.p_defaultStart value of pressure [Pa]
TemperatureTCon_startMediumCon.T_defaultStart value of temperature [K]
TemperatureTConCap_startMediumCon.T_defaultInitial temperature of heat capacity of condenser [K]
MassFractionXCon_start[MediumCon.nX]MediumCon.X_defaultStart value of mass fractions m_i/m [kg/kg]
Evaporator
AbsolutePressurepEva_startMediumEva.p_defaultStart value of pressure [Pa]
TemperatureTEva_startMediumEva.T_defaultStart value of temperature [K]
TemperatureTEvaCap_startMediumEva.T_defaultInitial temperature of heat capacity at evaporator [K]
MassFractionXEva_start[MediumEva.nX]MediumEva.X_defaultStart value of mass fractions m_i/m [kg/kg]
Dynamics
Equation
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state (only affects fluid-models)

Connectors

TypeNameDescription
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
input RealInputySetRelative compressor speed between 0 and 1
input RealInputTEvaAmbAmbient temperature on the evaporator side [K]
input RealInputTConAmbAmbient temperature on the condenser side [K]
output RealOutputQCon_flowActual heating heat flow rate added to fluid 1 [W]
output RealOutputPElectric power consumed by compressor [W]
output RealOutputQEva_flowActual cooling heat flow rate removed from fluid 2 [W]
output RealOutputEEREnergy efficieny ratio [1]
output RealOutputCOPCoefficient of performance [1]
input BooleanInputonHeaHeating on/off command
input RealInputTHwSetHW temperature setpoint - Supply or return depending on use_TLoaLvgForCtl [K]
input RealInputTChwSetCHW temperature setpoint - Supply or return depending on use_TLoaLvgForCtl [K]
input BooleanInputonCooCooling on/off command
output IntegerOutputnUniHeaNumber of modules in heating mode
output IntegerOutputnUniCooNumber of modules in cooling mode
output IntegerOutputnUniShcNumber of modules in SHC mode (may be cycling into single mode)
output RealOutputyValHwIsoEquivalent HW isolation valve command [1]
output RealOutputyValChwIsoEquivalent CHW isolation valve command [1]
output BooleanOutputy1HwValIsoPumPri[nUni]HW isolation valve or primary pump command
output BooleanOutputy1ChwValIsoPumPri[nUni]CHW isolation valve or primary pump command
BusweaBusWeather bus

Modelica definition

model TableData2DLoadDepSHC "Grey-box model for multipipe heat pumps" extends Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.PartialReversibleRefrigerantMachine( final use_busConOnl=true, final use_COP=true, final use_EER=true, final PEle_nominal=refCyc.refCycHeaPumHea.PEle_nominal, final dpEva_nominal=if use_preDro then dpChw_nominal else 0, final dpCon_nominal=if use_preDro then dpHw_nominal else 0, redeclare Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.TableData2DLoadDep safCtrPar( final use_maxCycRat=false, use_opeEnv=false, use_antFre=false, use_minFlowCtr=false, tabUppHea=[273.15, 273.15], tabLowCoo=[273.15, 273.15]), dTEva_nominal=abs(QCoo_flow_nominal) / cpEva / mEva_flow_nominal, dTCon_nominal=QHea_flow_nominal / cpCon / mCon_flow_nominal, GEvaIns=0, GEvaOut=0, CEva=0, use_evaCap=false, GConIns=0, GConOut=0, CCon=0, use_conCap=false, mEva_flow_nominal=dat.mEva_flow_nominal * scaFacCoo, mCon_flow_nominal=dat.mCon_flow_nominal * scaFacHea, final use_rev=false, final use_intSafCtr=false, final calEff=false, redeclare final Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.RefrigerantCycleConditional refCyc( redeclare model RefrigerantCycleHeatPumpHeating= RefrigerantCycleHeatPumpHeating, redeclare model RefrigerantCycleHeatPumpCooling= RefrigerantCycleHeatPumpCooling, final allowDifferentDeviceIdentifiers=allowDifferentDeviceIdentifiers)); final model RefrigerantCycleHeatPumpHeating= Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.TableData2DLoadDepSHC( final nUni=nUni, final use_TLoaLvgForCtl=use_TLoaLvgForCtl, final TCon_nominal=TConHea_nominal, final TEva_nominal=TEvaHea_nominal, final TConCoo_nominal=TConCoo_nominal, final TEvaCoo_nominal=TEvaCoo_nominal, final QCoo_flow_nominal=QCoo_flow_nominal, final QHea_flow_nominal=QHea_flow_nominal, final QCooShc_flow_nominal=QCooShc_flow_nominal, final QHeaShc_flow_nominal=QHeaShc_flow_nominal, final cpCon=cpCon, final cpEva=cpEva, final dat=dat, final P_min=P_min, final dtRun=dtRun, final dtMea=dtMea, final SPLR=SPLR, final dTSaf=dTSaf) "Refrigerant cycle module for the heating mode"; final model RefrigerantCycleHeatPumpCooling= Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.NoCooling( final useInChi=false, final cpCon=cpCon, final cpEva=cpEva, final TCon_nominal=TEvaCoo_nominal, final TEva_nominal=TConCoo_nominal, final QCoo_flow_nominal=QCoo_flow_nominal) "Refrigerant cycle module for the cooling mode"; // The following parameter is for future support of 6-pipe systems. // Currently only 4-pipe systems are implemented. final parameter Buildings.Fluid.HeatPumps.ModularReversible.Types.HeatPump typ=Buildings.Fluid.HeatPumps.ModularReversible.Types.HeatPump.AirToWater "System type"; parameter Integer nUni(min=1)=1 "Number of modules"; parameter Boolean use_TLoaLvgForCtl=true "Set to true for leaving temperature control, false for entering temperature control"; parameter Boolean use_preDro=true "Set to true to model HW/CHW pressure drop, false for external calculation by valve component"; parameter Modelica.Units.SI.PressureDifference dpHw_nominal = dat.dpCon_nominal * scaFacHea ^ 2 "HW pressure drop - Only modeled in component if use_preDro=true"; parameter Modelica.Units.SI.PressureDifference dpChw_nominal = dat.dpEva_nominal * scaFacCoo ^ 2 "CHW pressure drop - Only modeled in component if use_preDro=true"; parameter Modelica.Units.SI.HeatFlowRate QHea_flow_nominal "Heating heat flow rate - All modules"; parameter Modelica.Units.SI.HeatFlowRate QCoo_flow_nominal "Cooling heat flow rate - All modules"; parameter Modelica.Units.SI.HeatFlowRate QHeaShc_flow_nominal "Heating heat flow rate - All modules"; parameter Modelica.Units.SI.HeatFlowRate QCooShc_flow_nominal "Cooling heat flow rate - All modules"; replaceable parameter Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2DLoadDepSHC.Generic dat constrainedby Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2DLoadDepSHC.Generic "Performance data"; parameter Modelica.Units.SI.Power P_min(final min=0)=0 "Remaining power when system is enabled with all compressors cycled off"; parameter Modelica.Units.SI.Temperature TConHea_nominal "HW temperature: leaving if dat.use_TConOutForTab=true, entering otherwise"; parameter Modelica.Units.SI.Temperature TEvaHea_nominal "Evaporator heating fluid temperature: leaving if dat.use_TAmbOutForTab=true, entering otherwise"; parameter Modelica.Units.SI.Temperature TConCoo_nominal "CHW temperature: leaving if dat.use_TEvaOutForTab=true, entering otherwise"; parameter Modelica.Units.SI.Temperature TEvaCoo_nominal "Condenser cooling fluid temperature: leaving if dat.use_TAmbOutForTab=true, entering otherwise"; parameter Boolean allowFlowReversalAmb = true "= false to simplify equations, assuming, but not enforcing, no flow reversal for ambient-side medium"; final parameter Real scaFacHea( unit="1")=refCyc.refCycHeaPumHea.calQUseP.scaFacHea "Scaling factor for interpolated heat flow rate and power - Heating mode"; final parameter Real scaFacCoo( unit="1")=refCyc.refCycHeaPumHea.calQUseP.scaFacCoo "Scaling factor for interpolated heat flow rate and power - Cooling mode"; parameter Real dpValIso_nominal = Buildings.Templates.Data.Defaults.dpValIso "HW/CHW isolation valve pressure drop at nominal flow rate"; final parameter Buildings.Fluid.Actuators.Valves.Data.Generic chaValHwIso = Buildings.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"; final parameter Buildings.Fluid.Actuators.Valves.Data.Generic chaValChwIso = Buildings.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"; parameter Real dtRun( final min=0, final unit="s") = 300 "Minimum stage runtime"; parameter Real dtMea( final min=0, final unit="s") = 120 "Load averaging time window"; parameter Real SPLR( max=1, min=0) = 0.9 "Staging part load ratio"; parameter Modelica.Units.SI.TemperatureDifference dTSaf( final min=0) = 2 "Maximum temperature deviation from setpoint before limiting demand for safety (>0)"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput onHea "Heating on/off command"; Buildings.Controls.OBC.CDL.Interfaces.RealInput THwSet( final unit="K", displayUnit="degC") "HW temperature setpoint - Supply or return depending on use_TLoaLvgForCtl"; Buildings.Controls.OBC.CDL.Interfaces.RealInput TChwSet( final unit="K", displayUnit="degC") "CHW temperature setpoint - Supply or return depending on use_TLoaLvgForCtl"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput onCoo "Cooling on/off command"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput nUniHea(start=0) "Number of modules in heating mode"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput nUniCoo(start=0) "Number of modules in cooling mode"; Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput nUniShc(start=0) "Number of modules in SHC mode (may be cycling into single mode)"; Modelica.Blocks.Interfaces.RealOutput yValHwIso(final unit="1") "Equivalent HW isolation valve command"; Modelica.Blocks.Interfaces.RealOutput yValChwIso(final unit="1") "Equivalent CHW isolation valve command"; Modelica.Blocks.Interfaces.BooleanOutput y1HwValIsoPumPri[nUni] "HW isolation valve or primary pump command"; Modelica.Blocks.Interfaces.BooleanOutput y1ChwValIsoPumPri[nUni] "CHW isolation valve or primary pump command"; BoundaryConditions.WeatherData.Bus weaBus if typ == Buildings.Fluid.HeatPumps.ModularReversible.Types.HeatPump.AirToWater "Weather bus"; // The following block is to prepare future support of six-pipe systems. Templates.Plants.Controls.Utilities.PlaceholderReal TAmbIn(final have_inp=typ == Buildings.Fluid.HeatPumps.ModularReversible.Types.HeatPump.AirToWater, have_inpPh=true) "Ambient-side fluid inlet temperature"; Modelica.Blocks.Sources.BooleanConstant conHea(final k=true) "Placeholder signal"; Modelica.Blocks.Sources.RealExpression calYValHwIso( y=if onHea then max(1, nUniShc + nUniHea)/nUni else 0) "Calculate equivalent HW isolation valve command"; Modelica.Blocks.Sources.RealExpression calYValChwIso( y=if onCoo then max(1, nUniShc + nUniCoo)/nUni else 0) "Calculate equivalent CHW isolation valve command"; Modelica.Blocks.Sources.BooleanExpression calY1ValHwIso[nUni]( y={onHea and (i == 1 or nUniShc + nUniHea >= i) for i in 1:nUni}) "Calculate HW isolation valve command"; Modelica.Blocks.Sources.BooleanExpression calY1ValChwIso[nUni]( y={onCoo and (i == 1 or nUniShc + nUniCoo >= i) for i in 1:nUni}) "Calculate CHW isolation valve command"; equation connect(eff.QUse_flow, refCycIneCon.y); connect(eff.hea, sigBus.hea); connect(onHea, sigBus.onHea); connect(onCoo, sigBus.onCoo); connect(THwSet, sigBus.THwSet); connect(TChwSet, sigBus.TChwSet); connect(weaBus.TDryBul, TAmbIn.u); connect(TAmbIn.y, sigBus.TAmbInMea); connect(conHea.y, sigBus.hea); connect(nUniHea, sigBus.nUniHea); connect(nUniCoo, sigBus.nUniCoo); connect(nUniShc, sigBus.nUniShc); connect(calYValChwIso.y, yValChwIso); connect(calYValHwIso.y, yValHwIso); connect(calY1ValHwIso.y, y1HwValIsoPumPri); connect(calY1ValChwIso.y, y1ChwValIsoPumPri); end TableData2DLoadDepSHC;

Buildings.Fluid.HeatPumps.ModularReversible.Modular.RefrigerantCycleHeatPumpHeating Buildings.Fluid.HeatPumps.ModularReversible.Modular.RefrigerantCycleHeatPumpHeating

Refrigerant cycle module for the heating mode

Buildings.Fluid.HeatPumps.ModularReversible.Modular.RefrigerantCycleHeatPumpHeating

Parameters

TypeNameDefaultDescription
StringdevIde""Indicates the data source, used to warn users about different vapor compression devices in reversible models
BooleanuseInHeaPum =false to indicate that this model is used in a chiller
Nominal condition
PowerPEle_nominal0Nominal electrical power consumption [W]
TemperatureTCon_nominal Nominal temperature at secondary condenser side [K]
TemperatureTEva_nominal Nominal temperature at secondary evaporator side [K]
HeatFlowRateQHea_flow_nominal Nominal heating capacity [W]
Frosting supression
NoFrostingiceFacCalredeclare Buildings.Fluid.He...Replaceable model to calculate the icing factor
Advanced
Medium properties
SpecificHeatCapacitycpCon Evaporator medium specific heat capacity [J/(kg.K)]
SpecificHeatCapacitycpEva Evaporator medium specific heat capacity [J/(kg.K)]

Connectors

TypeNameDescription
output RealOutputPEleElectrical Power consumed by the device [W]
output RealOutputQCon_flowHeat flow rate through condenser [W]
RefrigerantMachineControlBussigBusBus-connector
output RealOutputQEva_flowHeat flow rate through evaporator [W]

Modelica definition

replaceable model RefrigerantCycleHeatPumpHeating = Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialHeatPumpCycle (PEle_nominal=0) constrainedby Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.PartialHeatPumpCycle ( final useInHeaPum=true, final QHea_flow_nominal=QHea_flow_nominal, final TCon_nominal=TConHea_nominal, final TEva_nominal=TEvaHea_nominal, final cpCon=cpCon, final cpEva=cpEva) "Refrigerant cycle module for the heating mode";

Buildings.Fluid.HeatPumps.ModularReversible.Modular.RefrigerantCycleHeatPumpCooling Buildings.Fluid.HeatPumps.ModularReversible.Modular.RefrigerantCycleHeatPumpCooling

Refrigerant cycle module for the cooling mode

Buildings.Fluid.HeatPumps.ModularReversible.Modular.RefrigerantCycleHeatPumpCooling

Parameters

TypeNameDefaultDescription
StringdevIde"NoCooling"Indicates the data source, used to warn users about different vapor compression devices in reversible models
BooleanuseInChi =false to indicate that this model is used as a heat pump
Nominal condition
PowerPEle_nominal0Nominal electrical power consumption [W]
TemperatureTCon_nominal273.15Nominal temperature at secondary condenser side [K]
TemperatureTEva_nominal273.15Nominal temperature at secondary evaporator side [K]
HeatFlowRateQCoo_flow_nominal0Nominal cooling capacity [W]
Advanced
Medium properties
SpecificHeatCapacitycpCon4184Evaporator medium specific heat capacity [J/(kg.K)]
SpecificHeatCapacitycpEva4184Evaporator medium specific heat capacity [J/(kg.K)]

Connectors

TypeNameDescription
output RealOutputPEleElectrical Power consumed by the device [W]
output RealOutputQCon_flowHeat flow rate through condenser [W]
RefrigerantMachineControlBussigBusBus-connector
output RealOutputQEva_flowHeat flow rate through evaporator [W]

Modelica definition

replaceable model RefrigerantCycleHeatPumpCooling = Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.NoCooling constrainedby Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.PartialChillerCycle ( final useInChi=false, final cpCon=cpCon, final cpEva=cpEva, final TCon_nominal=TEvaCoo_nominal, final TEva_nominal=TConCoo_nominal, QCoo_flow_nominal=QCoo_flow_nominal) "Refrigerant cycle module for the cooling mode";

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDep.RefrigerantCycleHeatPumpHeating Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDep.RefrigerantCycleHeatPumpHeating

Refrigerant cycle module for the heating mode

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDep.RefrigerantCycleHeatPumpHeating

Parameters

TypeNameDefaultDescription
BooleanuseInHeaPumtrue=false to indicate that this model is used in a chiller
Booleanuse_revuse_revTrue if the refrigerant machine is reversible
Booleanuse_TLoaLvgForCtluse_TLoaLvgForCtlSet to true for leaving temperature control, false for entering temperature control
GenericHeatPumpdatdatHeaTable with performance data
PowerP_minP_minMinimum power when system is enabled with compressor cycled off [W]
Nominal condition
PowerPEle_nominalcalQUseP.P_nominal*scaFacNominal electrical power consumption [W]
TemperatureTCon_nominalTConHea_nominalNominal temperature at secondary condenser side [K]
TemperatureTEva_nominalTEvaHea_nominalNominal temperature at secondary evaporator side [K]
HeatFlowRateQHea_flow_nominalQHea_flow_nominalNominal heating capacity [W]
Advanced
Medium properties
SpecificHeatCapacitycpConcpConEvaporator medium specific heat capacity [J/(kg.K)]
SpecificHeatCapacitycpEvacpEvaEvaporator medium specific heat capacity [J/(kg.K)]

Connectors

TypeNameDescription
output RealOutputPEleElectrical Power consumed by the device [W]
output RealOutputQCon_flowHeat flow rate through condenser [W]
RefrigerantMachineControlBussigBusBus-connector
output RealOutputQEva_flowHeat flow rate through evaporator [W]

Modelica definition

final model RefrigerantCycleHeatPumpHeating=Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.TableData2DLoadDep( final use_TLoaLvgForCtl=use_TLoaLvgForCtl, final useInHeaPum=true, final use_rev=use_rev, final QHea_flow_nominal=QHea_flow_nominal, final TCon_nominal=TConHea_nominal, final TEva_nominal=TEvaHea_nominal, final cpCon=cpCon, final cpEva=cpEva, redeclare Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, final dat=datHea, final P_min=P_min) "Refrigerant cycle module for the heating mode";

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDep.RefrigerantCycleHeatPumpCooling Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDep.RefrigerantCycleHeatPumpCooling

Refrigerant cycle module for the cooling mode

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDep.RefrigerantCycleHeatPumpCooling

Parameters

TypeNameDefaultDescription
BooleanuseInChifalse=false to indicate that this model is used as a heat pump
Booleanhave_switchoverfalseSet to true for heat recovery chiller with built-in switchover
Booleanuse_TLoaLvgForCtluse_TLoaLvgForCtlSet to true for leaving temperature control, false for entering temperature control
GenericdatdatCooTable with performance data
PowerP_minP_minMinimum power when system is enabled with compressor cycled off [W]
Nominal condition
PowerPEle_nominalcalQUseP.P_nominal*scaFacNominal electrical power consumption [W]
TemperatureTCon_nominalTEvaCoo_nominalNominal temperature at secondary condenser side [K]
TemperatureTEva_nominalTConCoo_nominalNominal temperature at secondary evaporator side [K]
HeatFlowRateQCoo_flow_nominalQCoo_flow_nominalNominal cooling capacity [W]
Advanced
Medium properties
SpecificHeatCapacitycpConcpConEvaporator medium specific heat capacity [J/(kg.K)]
SpecificHeatCapacitycpEvacpEvaEvaporator medium specific heat capacity [J/(kg.K)]

Connectors

TypeNameDescription
output RealOutputPEleElectrical Power consumed by the device [W]
output RealOutputQCon_flowHeat flow rate through condenser [W]
RefrigerantMachineControlBussigBusBus-connector
output RealOutputQEva_flowHeat flow rate through evaporator [W]

Modelica definition

final model RefrigerantCycleHeatPumpCooling=Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.TableData2DLoadDep( final use_TLoaLvgForCtl=use_TLoaLvgForCtl, final useInChi=false, final have_switchover=false, final QCoo_flow_nominal=QCoo_flow_nominal, final TCon_nominal=TEvaCoo_nominal, final TEva_nominal=TConCoo_nominal, final cpCon=cpCon, final cpEva=cpEva, redeclare final Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.Frosting.NoFrosting iceFacCal, final dat=datCoo, final P_min=P_min) "Refrigerant cycle module for the cooling mode";

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDepSHC.RefrigerantCycleHeatPumpHeating Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDepSHC.RefrigerantCycleHeatPumpHeating

Refrigerant cycle module for the heating mode

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDepSHC.RefrigerantCycleHeatPumpHeating

Parameters

TypeNameDefaultDescription
IntegernUninUniNumber of modules
Booleanuse_TLoaLvgForCtluse_TLoaLvgForCtlSet to true for leaving temperature control, false for entering temperature control
GenericdatdatRecord with performance data
PowerP_minP_minRemaining power when system is enabled with all compressors cycled off [W]
Nominal condition
PowerPEle_nominalcalQUseP.P_nominalNominal electrical power consumption [W]
TemperatureTCon_nominalTConHea_nominalNominal temperature at secondary condenser side [K]
TemperatureTEva_nominalTEvaHea_nominalNominal temperature at secondary evaporator side [K]
HeatFlowRateQHea_flow_nominalQHea_flow_nominalNominal heating capacity [W]
Nominal condition - Cooling
HeatFlowRateQCoo_flow_nominalQCoo_flow_nominalCooling heat flow rate - All modules [W]
TemperatureTConCoo_nominalTConCoo_nominalCHW temperature: leaving if dat.use_TEvaOutForTab=true, entering otherwise [K]
TemperatureTEvaCoo_nominalTEvaCoo_nominalCondenser cooling fluid temperature: leaving if dat.use_TAmbOutForTab=true, entering otherwise [K]
Nominal condition - SHC
HeatFlowRateQHeaShc_flow_nominalQHeaShc_flow_nominalHeating heat flow rate - All modules [W]
HeatFlowRateQCooShc_flow_nominalQCooShc_flow_nominalCooling heat flow rate - All modules [W]
Advanced
Medium properties
SpecificHeatCapacitycpConcpConEvaporator medium specific heat capacity [J/(kg.K)]
SpecificHeatCapacitycpEvacpEvaEvaporator medium specific heat capacity [J/(kg.K)]
Staging logic
RealdtRundtRunMinimum stage runtime [s]
RealdtMeadtMeaLoad averaging time window [s]
RealSPLRSPLRStaging part load ratio
Safeties
TemperatureDifferencedTSafdTSafMaximum temperature deviation from setpoint before limiting demand for safety (>0) [K]

Connectors

TypeNameDescription
output RealOutputPEleElectrical Power consumed by the device [W]
output RealOutputQCon_flowHeat flow rate through condenser [W]
RefrigerantMachineControlBussigBusBus-connector
output RealOutputQEva_flowHeat flow rate through evaporator [W]

Modelica definition

final model RefrigerantCycleHeatPumpHeating= Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.TableData2DLoadDepSHC( final nUni=nUni, final use_TLoaLvgForCtl=use_TLoaLvgForCtl, final TCon_nominal=TConHea_nominal, final TEva_nominal=TEvaHea_nominal, final TConCoo_nominal=TConCoo_nominal, final TEvaCoo_nominal=TEvaCoo_nominal, final QCoo_flow_nominal=QCoo_flow_nominal, final QHea_flow_nominal=QHea_flow_nominal, final QCooShc_flow_nominal=QCooShc_flow_nominal, final QHeaShc_flow_nominal=QHeaShc_flow_nominal, final cpCon=cpCon, final cpEva=cpEva, final dat=dat, final P_min=P_min, final dtRun=dtRun, final dtMea=dtMea, final SPLR=SPLR, final dTSaf=dTSaf) "Refrigerant cycle module for the heating mode";

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDepSHC.RefrigerantCycleHeatPumpCooling Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDepSHC.RefrigerantCycleHeatPumpCooling

Refrigerant cycle module for the cooling mode

Buildings.Fluid.HeatPumps.ModularReversible.TableData2DLoadDepSHC.RefrigerantCycleHeatPumpCooling

Parameters

TypeNameDefaultDescription
StringdevIde"NoCooling"Indicates the data source, used to warn users about different vapor compression devices in reversible models
BooleanuseInChifalse=false to indicate that this model is used as a heat pump
Nominal condition
PowerPEle_nominal0Nominal electrical power consumption [W]
TemperatureTCon_nominalTEvaCoo_nominalNominal temperature at secondary condenser side [K]
TemperatureTEva_nominalTConCoo_nominalNominal temperature at secondary evaporator side [K]
HeatFlowRateQCoo_flow_nominalQCoo_flow_nominalNominal cooling capacity [W]
Advanced
Medium properties
SpecificHeatCapacitycpConcpConEvaporator medium specific heat capacity [J/(kg.K)]
SpecificHeatCapacitycpEvacpEvaEvaporator medium specific heat capacity [J/(kg.K)]

Connectors

TypeNameDescription
output RealOutputPEleElectrical Power consumed by the device [W]
output RealOutputQCon_flowHeat flow rate through condenser [W]
RefrigerantMachineControlBussigBusBus-connector
output RealOutputQEva_flowHeat flow rate through evaporator [W]

Modelica definition

final model RefrigerantCycleHeatPumpCooling= Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.NoCooling( final useInChi=false, final cpCon=cpCon, final cpEva=cpEva, final TCon_nominal=TEvaCoo_nominal, final TEva_nominal=TConCoo_nominal, final QCoo_flow_nominal=QCoo_flow_nominal) "Refrigerant cycle module for the cooling mode";