modelTableData2DLoadDep
Extends from Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.PartialReversibleRefrigerantMachine (Model for reversible heat pumps and chillers with a refrigerant cycle).
Information
This is a model for cooling-only or heat recovery chillers where the capacity and power are interpolated from manufacturer data along three variables.
- Evaporator entering or leaving temperature: the choice
between the entering or leaving temperature depends on the
value of the parameter
use_TEvaOutForTabspecified in the parameter record ( Buildings.Fluid.Chillers.ModularReversible.Data.TableData2DLoadDep.Generic). - Condenser entering or leaving temperature: the choice
between the entering or leaving temperature depends on the
value of the parameter
use_TConOutForTabspecified in the parameter record. - Compressor part load ratio (PLR): 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.
The model includes ideal controls that solve for the CHW or HW 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.
-
Chiller on/off command signal:
on(Boolean, scalar) - For heat recovery chillers only (
have_switchover=true), chiller switchover signal:coo(Boolean, scalar)
Setcoo=truefor cooling mode,coo=falsefor heating mode. -
CHW temperature setpoint:
TChwSet(real, scalar)
This is either the supply or return temperature setpoint depending on the value ofuse_TLoaLvgForCtl. - For heat recovery chillers only (
have_switchover=true), HW temperature setpoint:THwSet(real, scalar)
This is either the supply or return temperature setpoint depending on the value ofuse_TLoaLvgForCtl.
Implementation details
This model introduces structural changes compared to other models within Buildings.Fluid.Chillers.ModularReversible.
First, there is no replaceable heating cycle component.
Instead, the Boolean parameter have_switchover is used
for toggling between cooling-only and heat recovery chillers.
A major implication is that a single performance data file is used
to represent heating and cooling modes in the case of heat recovery
chillers. This data file only provides the maximum cooling heat flow
rate and input power.
Second, the model includes new input variables that match the control points found in chiller onboard controllers (see the previous section for their description).
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 |
| Boolean | have_switchover | false | Set to true for heat recovery chiller with built-in switchover |
| Boolean | use_TLoaLvgForCtl | true | Set to true for leaving temperature control, false for entering temperature control |
| Real | scaFacCoo | refCyc.refCycChiCoo.scaFac | Scaling factor of power and heat flow rate |
| Buildings.Fluid.Chillers.ModularReversible.Data.TableData2DLoadDep.Generic | datCoo | ||
| Modelica.Units.SI.Power | P_min | 0 | Minimum power when system is enabled with compressor cycled off |
| 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 | QCoo_flow_nominal | Nominal cooling capacity | |
| Modelica.Units.SI.Temperature | TEvaCoo_nominal | CHW temperature: leaving if datCoo.use_TEvaOutForTab=true, entering otherwise | |
| Modelica.Units.SI.Temperature | TConCoo_nominal | Condenser cooling fluid temperature: leaving if datCoo.use_TConOutForTab=true, entering otherwise | |
| 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 |
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 | |
| Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.CalculateCommandSignal | calYSet | Calculate command signal from required PLR | |
| Buildings.Controls.OBC.CDL.Logical.Sources.Constant | conCoo | Locks the device in cooling mode if have_switchover=false | |
| Modelica.Blocks.Logical.Not | notCoo | Not cooling is heat recovery | |
| Buildings.Controls.OBC.CDL.Reals.Switch | QUse_flow | Select useful heat flow rate depending on operating mode | |
| Buildings.Templates.Plants.Controls.Utilities.PlaceholderReal | phTHwSet | Placeholder value |
Contents
| Name | Description |
|---|---|
| Refrigerant cycle module for the cooling mode |
Revisions
-
March 23, 2026, by Antoine Gautier:
Refactored with two separate connectors for CHW and HW temperature setpoints.
This is for #4507. -
March 21, 2025, by Antoine Gautier:
First implementation.