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
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | use_rev (from PartialReversibleRefrigerantMachine) | true | =true if the chiller or heat pump is reversible |
| Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Data.Wuellhorst2021 | safCtrPar (from PartialReversibleRefrigerantMachine) | ||
| Modelica.Units.SI.Density | rhoCon (from PartialReversibleRefrigerantMachine) | MediumCon.density(staCon_nominal) | Condenser medium density |
| Modelica.Units.SI.SpecificHeatCapacity | cpCon (from PartialReversibleRefrigerantMachine) | MediumCon.specificHeatCapacityCp(staCon_nominal) | Condenser medium specific heat capacity |
| Modelica.Units.SI.Density | rhoEva (from PartialReversibleRefrigerantMachine) | MediumEva.density(staEva_nominal) | Evaporator medium density |
| Modelica.Units.SI.SpecificHeatCapacity | cpEva (from PartialReversibleRefrigerantMachine) | 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 (from PartialReversibleRefrigerantMachine) | Nominal electrical power consumption | |
| Modelica.Units.SI.HeatFlowRate | QHea_flow_nominal | Nominal heating capacity | |
| Modelica.Units.SI.Temperature | TConHea_nominal | Nominal temperature of the heated fluid during heating mode | |
| Modelica.Units.SI.Temperature | TEvaHea_nominal | Nominal temperature of the cooled fluid during heating mode | |
| 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 (from PartialReversibleRefrigerantMachine) | 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 (from PartialReversibleRefrigerantMachine) | true | =false to disable efficiency calculation, may speed up the simulation |
| Real | limWarSca (from PartialReversibleRefrigerantMachine) | 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 (from PartialReversibleRefrigerantMachine) | 0.01 | Threshold for relative speed for the device to be considered on |
| Safety control | |||
| Boolean | use_intSafCtr (from PartialReversibleRefrigerantMachine) | true | =true to enable internal safety control |
| Condenser › Dynamics | |||
| Modelica.Units.SI.Time | tauCon (from PartialReversibleRefrigerantMachine) | 30 | Condenser heat transfer time constant at nominal flow |
| Nominal condition - Pressure losses | |||
| Modelica.Units.SI.TemperatureDifference | dTCon_nominal (from PartialReversibleRefrigerantMachine) | Nominal temperature difference in condenser medium, used to calculate mass flow rate | |
| Modelica.Units.SI.MassFlowRate | mCon_flow_nominal (from PartialReversibleRefrigerantMachine) | Nominal mass flow rate of the condenser medium | |
| Modelica.Units.SI.PressureDifference | dpCon_nominal (from PartialReversibleRefrigerantMachine) | Pressure drop at nominal mass flow rate | |
| Modelica.Units.SI.TemperatureDifference | dTEva_nominal (from PartialReversibleRefrigerantMachine) | Nominal temperature difference in evaporator medium, used to calculate mass flow rate | |
| Modelica.Units.SI.MassFlowRate | mEva_flow_nominal (from PartialReversibleRefrigerantMachine) | Nominal mass flow rate of the evaporator medium | |
| Modelica.Units.SI.PressureDifference | dpEva_nominal (from PartialReversibleRefrigerantMachine) | Pressure drop at nominal mass flow rate | |
| Condenser › Flow resistance | |||
| Real | deltaMCon (from PartialReversibleRefrigerantMachine) | 0.1 | Fraction of nominal mass flow rate where transition to turbulent occurs |
| Real | nCon (from PartialReversibleRefrigerantMachine) | 2 | Flow exponent, n=1 for laminar, n=2 for turbulent |
| Condenser › Heat Losses | |||
| Boolean | use_conCap (from PartialReversibleRefrigerantMachine) | true | =true if using capacitor model for condenser heat loss estimation |
| Modelica.Units.SI.HeatCapacity | CCon (from PartialReversibleRefrigerantMachine) | 0 | Heat capacity of the condenser |
| Modelica.Units.SI.ThermalConductance | GConOut (from PartialReversibleRefrigerantMachine) | 0 | Outer thermal conductance for condenser heat loss calculations |
| Modelica.Units.SI.ThermalConductance | GConIns (from PartialReversibleRefrigerantMachine) | 0 | Inner thermal conductance for condenser heat loss calculations |
| Evaporator › Dynamics | |||
| Modelica.Units.SI.Time | tauEva (from PartialReversibleRefrigerantMachine) | 30 | Evaporator heat transfer time constant at nominal flow |
| Evaporator › Flow resistance | |||
| Real | deltaMEva (from PartialReversibleRefrigerantMachine) | 0.1 | Fraction of nominal mass flow rate where transition to turbulent occurs |
| Real | nEva (from PartialReversibleRefrigerantMachine) | 2 | Flow exponent, n=1 for laminar, n=2 for turbulent |
| Evaporator › Heat Losses | |||
| Boolean | use_evaCap (from PartialReversibleRefrigerantMachine) | true | =true if using capacitor model for evaporator heat loss estimation |
| Modelica.Units.SI.HeatCapacity | CEva (from PartialReversibleRefrigerantMachine) | 0 | Heat capacity of the evaporator |
| Modelica.Units.SI.ThermalConductance | GEvaOut (from PartialReversibleRefrigerantMachine) | 0 | Outer thermal conductance for evaporator heat loss calculations |
| Modelica.Units.SI.ThermalConductance | GEvaIns (from PartialReversibleRefrigerantMachine) | 0 | Inner thermal conductance for evaporator heat loss calculations |
| Assumptions › Evaporator | |||
| Boolean | allowFlowReversalEva (from PartialReversibleRefrigerantMachine) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Assumptions › Condenser | |||
| Boolean | allowFlowReversalCon (from PartialReversibleRefrigerantMachine) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Initialization › Parameters | |||
| Modelica.Blocks.Types.Init | initType (from PartialReversibleRefrigerantMachine) | 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 (from PartialReversibleRefrigerantMachine) | MediumCon.p_default | Start value of pressure |
| Modelica.Media.Interfaces.Types.Temperature | TCon_start (from PartialReversibleRefrigerantMachine) | MediumCon.T_default | Start value of temperature |
| Modelica.Units.SI.Temperature | TConCap_start (from PartialReversibleRefrigerantMachine) | MediumCon.T_default | Initial temperature of heat capacity of condenser |
| Modelica.Media.Interfaces.Types.MassFraction[MediumCon.nX] | XCon_start (from PartialReversibleRefrigerantMachine) | MediumCon.X_default | Start value of mass fractions m_i/m |
| Initialization › Evaporator | |||
| Modelica.Media.Interfaces.Types.AbsolutePressure | pEva_start (from PartialReversibleRefrigerantMachine) | MediumEva.p_default | Start value of pressure |
| Modelica.Media.Interfaces.Types.Temperature | TEva_start (from PartialReversibleRefrigerantMachine) | MediumEva.T_default | Start value of temperature |
| Modelica.Units.SI.Temperature | TEvaCap_start (from PartialReversibleRefrigerantMachine) | MediumEva.T_default | Initial temperature of heat capacity at evaporator |
| Modelica.Media.Interfaces.Types.MassFraction[MediumEva.nX] | XEva_start (from PartialReversibleRefrigerantMachine) | MediumEva.X_default | Start value of mass fractions m_i/m |
| Dynamics › Equation | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from PartialReversibleRefrigerantMachine) | 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 (from PartialReversibleRefrigerantMachine) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Boolean | linearized (from PartialReversibleRefrigerantMachine) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Nominal condition - Cooling | |||
| Modelica.Units.SI.HeatFlowRate | QCoo_flow_nominal | 0 | Nominal cooling capacity |
| Modelica.Units.SI.Temperature | TConCoo_nominal | Nominal temperature of the cooled fluid during cooling mode | |
| Modelica.Units.SI.Temperature | TEvaCoo_nominal | Nominal temperature of the heated fluid during cooling mode | |
Connectors
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 (from PartialReversibleRefrigerantMachine) | ||
| Modelica.Units.SI.HeatFlowRate | Q1_flow (from PartialReversibleRefrigerantMachine) | QCon_flow | Heat transferred into the medium 1 |
| Modelica.Units.SI.HeatFlowRate | Q2_flow (from PartialReversibleRefrigerantMachine) | QEva_flow | Heat transferred into the medium 2 |
| Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.EvaporatorCondenserWithCapacity | con (from PartialReversibleRefrigerantMachine) | Heat exchanger model for the condenser | |
| Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.EvaporatorCondenserWithCapacity | eva (from PartialReversibleRefrigerantMachine) | Heat exchanger model for the evaporator | |
| Buildings.HeatTransfer.Sources.PrescribedTemperature | varTOutEva (from PartialReversibleRefrigerantMachine) | Forces heat losses according to ambient temperature | |
| Buildings.HeatTransfer.Sources.PrescribedTemperature | varTOutCon (from PartialReversibleRefrigerantMachine) | Forces heat losses according to ambient temperature | |
| Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.Safety | safCtr (from PartialReversibleRefrigerantMachine) | Safety control models | |
| Buildings.Fluid.Sensors.MassFlowRate | mEva_flow (from PartialReversibleRefrigerantMachine) | Mass flow sensor at the evaporator | |
| Buildings.Fluid.Sensors.MassFlowRate | mCon_flow (from PartialReversibleRefrigerantMachine) | Mass flow sensor at the condenser | |
| RefrigerantCycleInertia | refCycIneCon (from PartialReversibleRefrigerantMachine) | Inertia model for condenser side | |
| RefrigerantCycleInertia | refCycIneEva (from PartialReversibleRefrigerantMachine) | Inertia model for evaporator side | |
| Modelica.Blocks.Sources.RealExpression | senTConIn (from PartialReversibleRefrigerantMachine) | Real expression for condenser inlet temperature | |
| Modelica.Blocks.Sources.RealExpression | senTEvaIn (from PartialReversibleRefrigerantMachine) | Real expression for evaporator inlet temperature | |
| Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.CalculateEfficiency | eff (from PartialReversibleRefrigerantMachine) | Calculate efficiencies of device | |
| Modelica.Blocks.Sources.BooleanConstant | conHea | Locks the device in heating mode if designated to be not reversible | |
| Modelica.Blocks.Logical.Hysteresis | hys | Outputs whether the device is on based on the relative speed |
Contents
| Name | Description |
|---|---|
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)