modelModular

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

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

Information

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.

Parameters

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

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a1 (from PartialFourPort)Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_bport_b1 (from PartialFourPort)Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
Modelica.Fluid.Interfaces.FluidPort_aport_a2 (from PartialFourPort)Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Fluid.Interfaces.FluidPort_bport_b2 (from PartialFourPort)Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
Modelica.Blocks.Interfaces.RealInputySet (from PartialReversibleRefrigerantMachine)Relative compressor speed between 0 and 1
Modelica.Blocks.Interfaces.RealInputTEvaAmb (from PartialReversibleRefrigerantMachine)Ambient temperature on the evaporator side
Modelica.Blocks.Interfaces.RealInputTConAmb (from PartialReversibleRefrigerantMachine)Ambient temperature on the condenser side
Modelica.Blocks.Interfaces.RealOutputQCon_flow (from PartialReversibleRefrigerantMachine)Actual heating heat flow rate added to fluid 1
Modelica.Blocks.Interfaces.RealOutputP (from PartialReversibleRefrigerantMachine)Electric power consumed by compressor
Modelica.Blocks.Interfaces.RealOutputQEva_flow (from PartialReversibleRefrigerantMachine)Actual cooling heat flow rate removed from fluid 2
Modelica.Blocks.Interfaces.RealOutputEER (from PartialReversibleRefrigerantMachine)Energy efficieny ratio
Modelica.Blocks.Interfaces.RealOutputCOP (from PartialReversibleRefrigerantMachine)Coefficient of performance
Modelica.Blocks.Interfaces.BooleanInputhea=true for heating, =false for cooling

Components

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

Contents

NameDescription
RefrigerantCycleHeatPumpHeating
RefrigerantCycleHeatPumpCooling

Revisions

  • May 23, 2025, by Michael Wetter:
    Added assertion against wrong parameterization.
    This is for IBPSA #2013.
  • February 25, 2025, by Antoine Gautier:
    Added hysteresis that was removed from base class.
    This is for IBPSA #1977.
  • May 2, 2024, by Michael Wetter:
    Refactored check for device identifiers.
    This is for IBPSA, #1576.
  • October 2, 2022 by Fabian Wuellhorst:
    Adjusted based on the discussion in this issue #1576)
  • May 22, 2019 by Julian Matthes:
    Rebuild due to the introducion of the thermal machine partial model (see issue AixLib #715)
  • November 26, 2018, by Fabian Wuellhorst:
    First implementation (see issue AixLib #577)