modelElectricReformulatedEIR

Electric chiller based on the DOE-2.1 model, but with performance as a function of condenser leaving instead of entering temperature

Extends from Buildings.Fluid.Chillers.BaseClasses.PartialElectric (Partial model for electric chiller based on the model in DOE-2, CoolTools and EnergyPlus).

Information

Model of an electric chiller, based on the model by Hydeman et al. (2002) that has been developed in the CoolTools project and that is implemented in EnergyPlus as the model Chiller:Electric:ReformulatedEIR. This empirical model is similar to Buildings.Fluid.Chillers.ElectricEIR. The difference is that to compute the performance, this model uses the condenser leaving temperature instead of the entering temperature, and it uses a bicubic polynomial to compute the part load performance.

This model uses three functions to predict capacity and power consumption:

Function Description Formulation
ElectricEIR (this model) ElectricReformulatedEIR (this model)
capFunT Adjusts cooling capacity for current fluid temperatures Biquadratic on TConEnt and TEvaLvg Biquadratic on TConLvg and TEvaLvg
EIRFunPLR Adjusts EIR for the current PLR Quadratic on PLR Bicubic on TConLvg and PLR
EIRFunT Adjusts EIR for current fluid temperatures Biquadratic on TConEnt and TEvaLvg Biquadratic on TConLvg and TEvaLvg

These curves are stored in the data record per and are available from Buildings.Fluid.Chillers.Data.ElectricReformulatedEIR. How they are used to compute the adjusted capacity and compressor power can be found in the documentation of Buildings.Fluid.Chillers.BaseClasses.PartialElectric. Additional performance curves can be developed using two available techniques (Hydeman and Gillespie, 2002). The first technique is called the Least-squares Linear Regression method and is used when sufficient performance data exist to employ standard least-square linear regression techniques. The second technique is called Reference Curve Method and is used when insufficient performance data exist to apply linear regression techniques. A detailed description of both techniques can be found in Hydeman and Gillespie (2002).

The model takes as an input the set point for the leaving chilled water temperature, which is met if the chiller has sufficient capacity. Thus, the model has a built-in, ideal temperature control. The model has three tests on the part load ratio and the cycling ratio:

  1. The test
      PLR1 =min(QEva_flow_set/QEva_flow_ava, per.PLRMax);
    
    ensures that the chiller capacity does not exceed the chiller capacity specified by the parameter per.PLRMax.
  2. The test
      CR = min(PLR1/per.PRLMin, 1.0);
    
    computes a cycling ratio. This ratio expresses the fraction of time that a chiller would run if it were to cycle because its load is smaller than the minimal load at which it can operate. Note that this model continuously operates even if the part load ratio is below the minimum part load ratio. Its leaving evaporator and condenser temperature can therefore be considered as an average temperature between the modes where the compressor is off and on.
  3. The test
      PLR2 = max(per.PLRMinUnl, PLR1);
    
    computes the part load ratio of the compressor. The assumption is that for a part load ratio below per.PLRMinUnl, the chiller uses hot gas bypass to reduce the capacity, while the compressor power draw does not change.

The electric power only contains the power for the compressor, but not any power for pumps or fans.

The model can be parametrized to compute a transient or steady-state response. The transient response of the chiller is computed using a first order differential equation for the evaporator and condenser fluid volumes. The chiller outlet temperatures are equal to the temperatures of these lumped volumes.

Optionally, the model can be configured to represent heat recovery chillers with a switchover option by setting the parameter have_switchover to true. In that case an additional Boolean input connector coo is used. The chiller is tracking a chilled water supply temperature setpoint at the outlet of the evaporator barrel if coo is true. Otherwise, if coo is false, the chiller is tracking a hot water supply temperature setpoint at the outlet of the condenser barrel. See Buildings.Fluid.Chillers.Examples.ElectricEIR_HeatRecovery for an example with a chiller operating in heating mode.

References

  • Hydeman, M., N. Webb, P. Sreedharan, and S. Blanc. 2002. Development and Testing of a Reformulated Regression-Based Electric Chiller Model. ASHRAE Transactions, HI-02-18-2.
  • Hydeman, M. and K.L. Gillespie. 2002. Tools and Techniques to Calibrate Electric Chiller Component Models. ASHRAE Transactions, AC-02-9-1.

Parameters

TypeNameDefaultDescription
BooleanhomotopyInitialization (from FourPortHeatMassExchanger)true= true, use homotopy method
Booleanhave_switchover (from PartialElectric)falseSet to true for heat recovery chiller with built-in switchover
Buildings.Fluid.Chillers.Data.ElectricReformulatedEIR.GenericperPerformance data
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.PressureDifferencedp1_nominal (from FourPortFlowResistanceParameters)Pressure difference
Modelica.Units.SI.PressureDifferencedp2_nominal (from FourPortFlowResistanceParameters)Pressure difference
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
Advanced › Diagnostics
Booleanshow_T (from PartialFourPortInterface)false= true, if actual temperature at port is computed
Flow resistance › Medium 1
BooleancomputeFlowResistance1 (from FourPortFlowResistanceParameters)true=true, compute flow resistance. Set to false to assume no friction
Booleanfrom_dp1 (from FourPortFlowResistanceParameters)false= true, use m_flow = f(dp) else dp = f(m_flow)
Realn1 (from FourPortFlowResistanceParameters)2Flow exponent for side 1, n=1 for laminar, n=2 for turbulent
BooleanlinearizeFlowResistance1 (from FourPortFlowResistanceParameters)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM1 (from FourPortFlowResistanceParameters)0.1Fraction of nominal flow rate where flow transitions to laminar
Flow resistance › Medium 2
BooleancomputeFlowResistance2 (from FourPortFlowResistanceParameters)true=true, compute flow resistance. Set to false to assume no friction
Booleanfrom_dp2 (from FourPortFlowResistanceParameters)false= true, use m_flow = f(dp) else dp = f(m_flow)
Realn2 (from FourPortFlowResistanceParameters)2Flow exponent for side 2, n=1 for laminar, n=2 for turbulent
BooleanlinearizeFlowResistance2 (from FourPortFlowResistanceParameters)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM2 (from FourPortFlowResistanceParameters)0.1Fraction of nominal flow rate where flow transitions to laminar
Dynamics › Nominal condition
Modelica.Units.SI.Timetau1 (from FourPortHeatMassExchanger)30Time constant at nominal flow
Modelica.Units.SI.Timetau2 (from FourPortHeatMassExchanger)30Time constant at nominal flow
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from FourPortHeatMassExchanger)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Initialization › Medium 1
Medium1.AbsolutePressurep1_start (from FourPortHeatMassExchanger)Medium1.p_defaultStart value of pressure
Medium1.TemperatureT1_start (from FourPortHeatMassExchanger)Medium1.T_defaultStart value of temperature
Medium1.MassFraction[Medium1.nX]X1_start (from FourPortHeatMassExchanger)Medium1.X_defaultStart value of mass fractions m_i/m
Medium1.ExtraProperty[Medium1.nC]C1_start (from FourPortHeatMassExchanger)fill(0, Medium1.nC)Start value of trace substances
Medium1.ExtraProperty[Medium1.nC]C1_nominal (from FourPortHeatMassExchanger)fill(1E-2, Medium1.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Initialization › Medium 2
Medium2.AbsolutePressurep2_start (from FourPortHeatMassExchanger)Medium2.p_defaultStart value of pressure
Medium2.TemperatureT2_start (from FourPortHeatMassExchanger)Medium2.T_defaultStart value of temperature
Medium2.MassFraction[Medium2.nX]X2_start (from FourPortHeatMassExchanger)Medium2.X_defaultStart value of mass fractions m_i/m
Medium2.ExtraProperty[Medium2.nC]C2_start (from FourPortHeatMassExchanger)fill(0, Medium2.nC)Start value of trace substances
Medium2.ExtraProperty[Medium2.nC]C2_nominal (from FourPortHeatMassExchanger)fill(1E-2, Medium2.nC)Nominal value of trace substances. (Set to typical order of magnitude.)

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.BooleanInputon (from PartialElectric)Set to true to enable compressor, or false to disable compressor
Modelica.Blocks.Interfaces.RealInputTSet (from PartialElectric)Set point for leaving chilled water temperature (condenser water if have_switchover=true and coo=false)
Modelica.Blocks.Interfaces.RealOutputP (from PartialElectric)Electric power consumed by compressor
Modelica.Blocks.Interfaces.RealOutputCOP_h (from PartialElectric)Coefficient of performance of heating
Controls.OBC.CDL.Interfaces.BooleanInputcoo (from PartialElectric)Switchover signal: true for cooling, false for heating

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
Modelica.Units.SI.HeatFlowRateQ1_flow (from FourPortHeatMassExchanger)vol1.heatPort.Q_flowHeat flow rate into medium 1
Modelica.Units.SI.HeatFlowRateQ2_flow (from FourPortHeatMassExchanger)vol2.heatPort.Q_flowHeat flow rate into medium 2
Buildings.Fluid.MixingVolumes.BaseClasses.MixingVolumeHeatPortvol1 (from FourPortHeatMassExchanger)
Buildings.Fluid.MixingVolumes.MixingVolumevol2 (from FourPortHeatMassExchanger)
Buildings.Fluid.FixedResistances.PressureDroppreDro1 (from FourPortHeatMassExchanger)Flow resistance of fluid 1
Buildings.Fluid.FixedResistances.PressureDroppreDro2 (from FourPortHeatMassExchanger)Flow resistance of fluid 2
Modelica.Units.SI.TemperatureTEvaEnt (from PartialElectric)Evaporator entering temperature
Modelica.Units.SI.TemperatureTEvaLvg (from PartialElectric)Evaporator leaving temperature
Modelica.Units.SI.TemperatureTConEnt (from PartialElectric)Condenser entering temperature
Modelica.Units.SI.TemperatureTConLvg (from PartialElectric)Condenser leaving temperature
Modelica.Units.SI.EfficiencyCOP (from PartialElectric)Coefficient of performance
Modelica.Units.SI.HeatFlowRateQCon_flow (from PartialElectric)Condenser heat input
Modelica.Units.SI.HeatFlowRateQEva_flow (from PartialElectric)Evaporator heat input
RealcapFunT (from PartialElectric)Cooling capacity factor function of temperature curve
Modelica.Units.SI.EfficiencyEIRFunT (from PartialElectric)Power input to cooling capacity ratio function of temperature curve
Modelica.Units.SI.EfficiencyEIRFunPLR (from PartialElectric)Power input to cooling capacity ratio function of part load ratio
RealPLR1 (from PartialElectric)Part load ratio
RealPLR2 (from PartialElectric)Part load ratio
RealCR (from PartialElectric)Cycling ratio
Controls.OBC.CDL.Logical.Sources.Constanttru (from PartialElectric)Constant true signal

Revisions

  • March 12, 2015, by Michael Wetter:
    Refactored model to make it once continuously differentiable. This is for issue 373.
  • Jan. 9, 2011, by Michael Wetter:
    Added input signal to switch chiller off.
  • September 17, 2010, by Michael Wetter:
    First implementation.