modelElectricEIR
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 DOE-2.1 chiller model and
the EnergyPlus chiller model Chiller:Electric:EIR.
This model uses three functions to predict capacity and power consumption:
| Function | Description | Formulation | |
|---|---|---|---|
ElectricEIR (this model) |
ElectricReformulatedEIR |
||
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 functions take the same form as documented in
EnergyPlus v22.1.0 Engineering Reference
section 14.3.9.2 (equations 14.231 through 14.233).
These curves are stored in the data record per and are available from
Buildings.Fluid.Chillers.Data.ElectricEIR.
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:
-
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 parameterper.PLRMax. -
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. -
The test
PLR2 = max(per.PLRMinUnl, PLR1);
computes the part load ratio of the compressor. The assumption is that for a part load ratio belowper.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. and K.L. Gillespie. 2002. Tools and Techniques to Calibrate Electric Chiller Component Models. ASHRAE Transactions, AC-02-9-1.
- EnergyPlus v22.1.0 Engineering Reference
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | homotopyInitialization (from FourPortHeatMassExchanger) | true | = true, use homotopy method |
| Boolean | have_switchover (from PartialElectric) | false | Set to true for heat recovery chiller with built-in switchover |
| Buildings.Fluid.Chillers.Data.ElectricEIR.Generic | per | Performance data | |
| 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.PressureDifference | dp1_nominal (from FourPortFlowResistanceParameters) | Pressure difference | |
| Modelica.Units.SI.PressureDifference | dp2_nominal (from FourPortFlowResistanceParameters) | Pressure difference | |
| 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 |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialFourPortInterface) | false | = true, if actual temperature at port is computed |
| Flow resistance › Medium 1 | |||
| Boolean | computeFlowResistance1 (from FourPortFlowResistanceParameters) | true | =true, compute flow resistance. Set to false to assume no friction |
| Boolean | from_dp1 (from FourPortFlowResistanceParameters) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Real | n1 (from FourPortFlowResistanceParameters) | 2 | Flow exponent for side 1, n=1 for laminar, n=2 for turbulent |
| Boolean | linearizeFlowResistance1 (from FourPortFlowResistanceParameters) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM1 (from FourPortFlowResistanceParameters) | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
| Flow resistance › Medium 2 | |||
| Boolean | computeFlowResistance2 (from FourPortFlowResistanceParameters) | true | =true, compute flow resistance. Set to false to assume no friction |
| Boolean | from_dp2 (from FourPortFlowResistanceParameters) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Real | n2 (from FourPortFlowResistanceParameters) | 2 | Flow exponent for side 2, n=1 for laminar, n=2 for turbulent |
| Boolean | linearizeFlowResistance2 (from FourPortFlowResistanceParameters) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM2 (from FourPortFlowResistanceParameters) | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
| Dynamics › Nominal condition | |||
| Modelica.Units.SI.Time | tau1 (from FourPortHeatMassExchanger) | 30 | Time constant at nominal flow |
| Modelica.Units.SI.Time | tau2 (from FourPortHeatMassExchanger) | 30 | Time constant at nominal flow |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from FourPortHeatMassExchanger) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Initialization › Medium 1 | |||
| Medium1.AbsolutePressure | p1_start (from FourPortHeatMassExchanger) | Medium1.p_default | Start value of pressure |
| Medium1.Temperature | T1_start (from FourPortHeatMassExchanger) | Medium1.T_default | Start value of temperature |
| Medium1.MassFraction[Medium1.nX] | X1_start (from FourPortHeatMassExchanger) | Medium1.X_default | Start 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.AbsolutePressure | p2_start (from FourPortHeatMassExchanger) | Medium2.p_default | Start value of pressure |
| Medium2.Temperature | T2_start (from FourPortHeatMassExchanger) | Medium2.T_default | Start value of temperature |
| Medium2.MassFraction[Medium2.nX] | X2_start (from FourPortHeatMassExchanger) | Medium2.X_default | Start 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
| 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.BooleanInput | on (from PartialElectric) | Set to true to enable compressor, or false to disable compressor | |
| Modelica.Blocks.Interfaces.RealInput | TSet (from PartialElectric) | Set point for leaving chilled water temperature (condenser water if have_switchover=true and coo=false) | |
| Modelica.Blocks.Interfaces.RealOutput | P (from PartialElectric) | Electric power consumed by compressor | |
| Modelica.Blocks.Interfaces.RealOutput | COP_h (from PartialElectric) | Coefficient of performance of heating | |
| Controls.OBC.CDL.Interfaces.BooleanInput | coo (from PartialElectric) | Switchover signal: true for cooling, false for heating |
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 |
| Modelica.Units.SI.HeatFlowRate | Q1_flow (from FourPortHeatMassExchanger) | vol1.heatPort.Q_flow | Heat flow rate into medium 1 |
| Modelica.Units.SI.HeatFlowRate | Q2_flow (from FourPortHeatMassExchanger) | vol2.heatPort.Q_flow | Heat flow rate into medium 2 |
| Buildings.Fluid.MixingVolumes.BaseClasses.MixingVolumeHeatPort | vol1 (from FourPortHeatMassExchanger) | ||
| Buildings.Fluid.MixingVolumes.MixingVolume | vol2 (from FourPortHeatMassExchanger) | ||
| Buildings.Fluid.FixedResistances.PressureDrop | preDro1 (from FourPortHeatMassExchanger) | Flow resistance of fluid 1 | |
| Buildings.Fluid.FixedResistances.PressureDrop | preDro2 (from FourPortHeatMassExchanger) | Flow resistance of fluid 2 | |
| Modelica.Units.SI.Temperature | TEvaEnt (from PartialElectric) | Evaporator entering temperature | |
| Modelica.Units.SI.Temperature | TEvaLvg (from PartialElectric) | Evaporator leaving temperature | |
| Modelica.Units.SI.Temperature | TConEnt (from PartialElectric) | Condenser entering temperature | |
| Modelica.Units.SI.Temperature | TConLvg (from PartialElectric) | Condenser leaving temperature | |
| Modelica.Units.SI.Efficiency | COP (from PartialElectric) | Coefficient of performance | |
| Modelica.Units.SI.HeatFlowRate | QCon_flow (from PartialElectric) | Condenser heat input | |
| Modelica.Units.SI.HeatFlowRate | QEva_flow (from PartialElectric) | Evaporator heat input | |
| Real | capFunT (from PartialElectric) | Cooling capacity factor function of temperature curve | |
| Modelica.Units.SI.Efficiency | EIRFunT (from PartialElectric) | Power input to cooling capacity ratio function of temperature curve | |
| Modelica.Units.SI.Efficiency | EIRFunPLR (from PartialElectric) | Power input to cooling capacity ratio function of part load ratio | |
| Real | PLR1 (from PartialElectric) | Part load ratio | |
| Real | PLR2 (from PartialElectric) | Part load ratio | |
| Real | CR (from PartialElectric) | Cycling ratio | |
| Controls.OBC.CDL.Logical.Sources.Constant | tru (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. -
Sep. 8, 2010, by Michael Wetter:
Revised model and included it in the Buildings library. -
October 13, 2008, by Brandon Hencey:
First implementation.