modelPartialReversibleRefrigerantMachine
Model for reversible heat pumps and chillers with a refrigerant cycle
Extends from Buildings.Fluid.Interfaces.PartialFourPortInterface (Partial model with four ports and declaration of quantities that are used by many models).
Information
This partial model defines all components which are equally required for heat pump and chillers. This encompasses
- the heat exchangers (evaporator and condenser),
- sensors for temperature and mass flow rates,
- the replaceable model for refrigerant inertia,
- safety controls,
- connectors and parameters,
- and the replaceable refrigerant cycle model
refCyc
The model refCyc is replaced in the ModularReversible
model for heat pumps and chillers, e.g. by
Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.RefrigerantCycle
in
Buildings.Fluid.HeatPumps.ModularReversible.Modular.
For more information on the approach, please read the UsersGuide.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | use_rev | true | =true if the chiller or heat pump is reversible |
| Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 | safCtrPar | ||
| Modelica.Units.SI.Density | rhoCon | MediumCon.density(staCon_nominal) | Condenser medium density |
| Modelica.Units.SI.SpecificHeatCapacity | cpCon | MediumCon.specificHeatCapacityCp(staCon_nominal) | Condenser medium specific heat capacity |
| Modelica.Units.SI.Density | rhoEva | MediumEva.density(staEva_nominal) | Evaporator medium density |
| Modelica.Units.SI.SpecificHeatCapacity | cpEva | MediumEva.specificHeatCapacityCp(staEva_nominal) | Evaporator medium specific heat capacity |
| Assumptions | |||
| Boolean | allowFlowReversal1 (from PartialFourPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
| Boolean | allowFlowReversal2 (from PartialFourPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m1_flow_nominal (from PartialFourPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.MassFlowRate | m2_flow_nominal (from PartialFourPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.HeatFlowRate | PEle_nominal | Nominal electrical power consumption | |
| Advanced | |||
| Medium1.MassFlowRate | m1_flow_small (from PartialFourPortInterface) | 1E-4*abs(m1_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Medium2.MassFlowRate | m2_flow_small (from PartialFourPortInterface) | 1E-4*abs(m2_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Boolean | allowDifferentDeviceIdentifiers | false | if use_rev=true, device data for cooling and heating need to entered. Set allowDifferentDeviceIdentifiers=true to allow different device identifiers devIde |
| Boolean | calEff | true | =false to disable efficiency calculation, may speed up the simulation |
| Real | limWarSca | 0.05 | Allowed difference in scaling '|scaFacHea - scaFacCoo| / scaFacHea', if exceeded, a warning will be issued |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialFourPortInterface) | false | = true, if actual temperature at port is computed |
| Real | ySet_small | 0.01 | Threshold for relative speed for the device to be considered on |
| Safety control | |||
| Boolean | use_intSafCtr | true | =true to enable internal safety control |
| Condenser › Dynamics | |||
| Modelica.Units.SI.Time | tauCon | 30 | Condenser heat transfer time constant at nominal flow |
| Nominal condition - Pressure losses | |||
| Modelica.Units.SI.TemperatureDifference | dTCon_nominal | Nominal temperature difference in condenser medium, used to calculate mass flow rate | |
| Modelica.Units.SI.MassFlowRate | mCon_flow_nominal | Nominal mass flow rate of the condenser medium | |
| Modelica.Units.SI.PressureDifference | dpCon_nominal | Pressure drop at nominal mass flow rate | |
| Modelica.Units.SI.TemperatureDifference | dTEva_nominal | Nominal temperature difference in evaporator medium, used to calculate mass flow rate | |
| Modelica.Units.SI.MassFlowRate | mEva_flow_nominal | Nominal mass flow rate of the evaporator medium | |
| Modelica.Units.SI.PressureDifference | dpEva_nominal | Pressure drop at nominal mass flow rate | |
| Condenser › Flow resistance | |||
| Real | deltaMCon | 0.1 | Fraction of nominal mass flow rate where transition to turbulent occurs |
| Real | nCon | 2 | Flow exponent, n=1 for laminar, n=2 for turbulent |
| Condenser › Heat Losses | |||
| Boolean | use_conCap | true | =true if using capacitor model for condenser heat loss estimation |
| Modelica.Units.SI.HeatCapacity | CCon | 0 | Heat capacity of the condenser |
| Modelica.Units.SI.ThermalConductance | GConOut | 0 | Outer thermal conductance for condenser heat loss calculations |
| Modelica.Units.SI.ThermalConductance | GConIns | 0 | Inner thermal conductance for condenser heat loss calculations |
| Evaporator › Dynamics | |||
| Modelica.Units.SI.Time | tauEva | 30 | Evaporator heat transfer time constant at nominal flow |
| Evaporator › Flow resistance | |||
| Real | deltaMEva | 0.1 | Fraction of nominal mass flow rate where transition to turbulent occurs |
| Real | nEva | 2 | Flow exponent, n=1 for laminar, n=2 for turbulent |
| Evaporator › Heat Losses | |||
| Boolean | use_evaCap | true | =true if using capacitor model for evaporator heat loss estimation |
| Modelica.Units.SI.HeatCapacity | CEva | 0 | Heat capacity of the evaporator |
| Modelica.Units.SI.ThermalConductance | GEvaOut | 0 | Outer thermal conductance for evaporator heat loss calculations |
| Modelica.Units.SI.ThermalConductance | GEvaIns | 0 | Inner thermal conductance for evaporator heat loss calculations |
| Assumptions › Evaporator | |||
| Boolean | allowFlowReversalEva | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Assumptions › Condenser | |||
| Boolean | allowFlowReversalCon | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Initialization › Parameters | |||
| Modelica.Blocks.Types.Init | initType | Modelica.Blocks.Types.Init.InitialState | Type of initialization for refrigerant cycle dynamics (InitialState and InitialOutput are identical) |
| Initialization › Condenser | |||
| Modelica.Media.Interfaces.Types.AbsolutePressure | pCon_start | MediumCon.p_default | Start value of pressure |
| Modelica.Media.Interfaces.Types.Temperature | TCon_start | MediumCon.T_default | Start value of temperature |
| Modelica.Units.SI.Temperature | TConCap_start | MediumCon.T_default | Initial temperature of heat capacity of condenser |
| Modelica.Media.Interfaces.Types.MassFraction[MediumCon.nX] | XCon_start | MediumCon.X_default | Start value of mass fractions m_i/m |
| Initialization › Evaporator | |||
| Modelica.Media.Interfaces.Types.AbsolutePressure | pEva_start | MediumEva.p_default | Start value of pressure |
| Modelica.Media.Interfaces.Types.Temperature | TEva_start | MediumEva.T_default | Start value of temperature |
| Modelica.Units.SI.Temperature | TEvaCap_start | MediumEva.T_default | Initial temperature of heat capacity at evaporator |
| Modelica.Media.Interfaces.Types.MassFraction[MediumEva.nX] | XEva_start | MediumEva.X_default | Start value of mass fractions m_i/m |
| Dynamics › Equation | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state (only affects fluid-models) |
| Advanced › Flow resistance | |||
| Boolean | from_dp | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Boolean | linearized | false | = true, use linear relation between m_flow and dp for any flow rate |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a1 (from PartialFourPort) | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b1 (from PartialFourPort) | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) | |
| Modelica.Fluid.Interfaces.FluidPort_a | port_a2 (from PartialFourPort) | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b2 (from PartialFourPort) | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) | |
| Modelica.Blocks.Interfaces.RealInput | ySet | Relative compressor speed between 0 and 1 | |
| Modelica.Blocks.Interfaces.RealInput | TEvaAmb | Ambient temperature on the evaporator side | |
| Modelica.Blocks.Interfaces.RealInput | TConAmb | Ambient temperature on the condenser side | |
| Modelica.Blocks.Interfaces.RealOutput | QCon_flow | Actual heating heat flow rate added to fluid 1 | |
| Modelica.Blocks.Interfaces.RealOutput | P | Electric power consumed by compressor | |
| Modelica.Blocks.Interfaces.RealOutput | QEva_flow | Actual cooling heat flow rate removed from fluid 2 | |
| Modelica.Blocks.Interfaces.RealOutput | EER | Energy efficieny ratio | |
| Modelica.Blocks.Interfaces.RealOutput | COP | Coefficient of performance |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Medium1.MassFlowRate | m1_flow (from PartialFourPortInterface) | port_a1.m_flow | Mass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp1 (from PartialFourPortInterface) | port_a1.p - port_b1.p | Pressure difference between port_a1 and port_b1 |
| Medium2.MassFlowRate | m2_flow (from PartialFourPortInterface) | port_a2.m_flow | Mass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp2 (from PartialFourPortInterface) | port_a2.p - port_b2.p | Pressure difference between port_a2 and port_b2 |
| Medium1.ThermodynamicState | sta_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.ThermodynamicState | sta_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.ThermodynamicState | sta_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.ThermodynamicState | sta_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 |
| PartialModularRefrigerantCycle | refCyc | ||
| Modelica.Units.SI.HeatFlowRate | Q1_flow | QCon_flow | Heat transferred into the medium 1 |
| Modelica.Units.SI.HeatFlowRate | Q2_flow | QEva_flow | Heat transferred into the medium 2 |
| Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.EvaporatorCondenserWithCapacity | con | Heat exchanger model for the condenser | |
| Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.EvaporatorCondenserWithCapacity | eva | Heat exchanger model for the evaporator | |
| Buildings.HeatTransfer.Sources.PrescribedTemperature | varTOutEva | Forces heat losses according to ambient temperature | |
| Buildings.HeatTransfer.Sources.PrescribedTemperature | varTOutCon | Forces heat losses according to ambient temperature | |
| Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Safety | safCtr | Safety control models | |
| Buildings.Fluid.Sensors.MassFlowRate | mEva_flow | Mass flow sensor at the evaporator | |
| Buildings.Fluid.Sensors.MassFlowRate | mCon_flow | Mass flow sensor at the condenser | |
| RefrigerantCycleInertia | refCycIneCon | Inertia model for condenser side | |
| RefrigerantCycleInertia | refCycIneEva | Inertia model for evaporator side | |
| Modelica.Blocks.Sources.RealExpression | senTConIn | Real expression for condenser inlet temperature | |
| Modelica.Blocks.Sources.RealExpression | senTEvaIn | Real expression for evaporator inlet temperature | |
| Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.CalculateEfficiency | eff | Calculate efficiencies of device |
Contents
| Name | Description |
|---|---|
| Medium on condenser side | |
| Medium on evaporator side | |
Revisions
-
June 17, 2026, by Michael Wetter:
Updated implementation to allow a flow coefficientnthat is different from2. This allows use of the model for not fully turbulent flow.
This is for Buildings, #4620. -
August 11, 2026 by Antoine Gautier:
Corrected flow reversal parameter in condenser mass flow sensor.
This is for IBPSA #2162. -
February 27, 2025 by Jianjun Hu:
Corrected conditions for removing COP and EER output connector.
This is for IBPSA #1979. -
February 25, 2025 by Antoine Gautier:
Removed hysteresis.
This is for IBPSA #1977. -
August 19, 2024 by Michael Wetter:
Changed markup commands for code merge.
This is for IBPSA #1919. -
July 15, 2024 by Fabian Wuellhorst:
Adjust hysteresis bandwidth (see issue IBPSA #1908) -
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 #715) -
November 26, 2018 by Fabian Wuellhorst:
First implementation (see issue #577)