modelAbsorptionIndirectSteam
Extends from Buildings.Fluid.Interfaces.FourPortHeatMassExchanger (Model transporting two fluid streams between four ports with storing mass or energy).
Information
Model for an indirect steam heated absorption chiller based on performance curves.
The model uses performance curves similar to the EnergyPlus model Chiller:Absorption:Indirect.
The model uses six functions to predict the chiller cooling capacity, power consumption for
the chiller pump and the generator heat flow rate and the condenser heat flow.
These functions use the performance data stored in the record per.
The computations are as follows:
The capacity function of the evaporator is
capFuneva = A1 + A2 Teva,lvg + A3 T2eva,lvg + A4 T3eva,lvg.
The capacity function of the condenser is
capFuncon = B1 + B2 Tcon,ent + B3 T2con,ent + B4 T3con,ent.
These capacity functions are used to compute the available cooling capacity of the evaporator as
Q̇eva,ava = capFuneva capFuncon Q̇eva,0,
where Q̇eva,0 is obtained from the performance data per.QEva_flow_nominal.
Let Q̇eva,set denote the heat required to meet the set point TSet.
Then, the model computes the part load ratio as
PLR =min(Q̇eva,set/Q̇eva,ava, PLRmax).
Hence, the model ensures that the chiller capacity does not exceed the chiller capacity specified
by the parameter per.PLRMax.
The cycling ratio is computed as
CR = min(PLR/PLRmin, 1.0),
where PRLmin is obtained from the performance record per.PLRMin.
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 when the compressor is off and on.
Using the part load ratio, the energy input ratio of the chiller pump is
EIRP = C1 + C2PLR+C3PLR2.
The generator heat input ratio is
genHIR = D1 + D2PLR+D3PLR2+D4PLR3.
Two additional curves modify the heat input requirement based on the condenser inlet water temperature and the evaporator outlet water temperature. Specifically, the generator heat modifier based on the condenser inlet water temperature is
genTcon = E1 + E2 Tcon,ent + E3 T2con,ent + E4 T3con,ent,
and the generator heat modifier based on the evaporator inlet water temperature is
genTeva= F1 + F2 Teva,lvg + F3 T2eva,lvg + F4 T3eva,lvg.
The main outputs of the model that are to be used in energy analysis
are the required generator heat QGen_flow and
the electric power consumption of the chiller pump P.
For example, if the chiller were to be regenerated with steam, then
QGen_flow is the heat that must be provided by a steam loop.
This model computes the required generator heat as
Q̇gen = -Q̇eva,ava genHIR genTcon genTeva CR.
The pump power consumption is
P = EIRP CR P0,
where P0 is the pump nominal power obtained from the performance data per.P_nominal.
The heat balance of the chiller is
Q̇con = -Q̇eva + Q̇gen + P.
Performance data
The equipment performance data is obtained from the record per,
which is an instance of
Buildings.Fluid.Chillers.Data.AbsorptionIndirectSteam.
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).
References
- Hydeman, M. and K.L. Gillespie. 2002. Tools and Techniques to Calibrate Electric Chiller Component Models. ASHRAE Transactions, AC-02-9-1.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | homotopyInitialization (from FourPortHeatMassExchanger) | true | = true, use homotopy method |
| Buildings.Fluid.Chillers.Data.AbsorptionIndirectSteam.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 |
| Modelica.Units.SI.HeatFlowRate | Q_flow_small | -per.QEva_flow_nominal*1E-6 | Small value for heat flow rate or power, used to avoid division by zero |
| 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 | Set to true to enable the absorption chiller | |
| Modelica.Blocks.Interfaces.RealInput | TSet | Evaporator setpoint leaving water temperature | |
| Modelica.Blocks.Interfaces.RealOutput | P | Chiller pump power | |
| Modelica.Blocks.Interfaces.RealOutput | QGen_flow | Required generator heat flow rate in the form of steam | |
| Modelica.Blocks.Interfaces.RealOutput | QEva_flow | Evaporator heat flow rate | |
| Modelica.Blocks.Interfaces.RealOutput | QCon_flow | Condenser heat flow rate |
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 | |
| Real | PLR | perMod.PLR | Part load ratio |
| Real | CR | perMod.CR | Cycling ratio |
Revisions
-
November 26, 2019, by Michael Wetter:
Revised implementation and documentation. -
July 3, 2019, by Hagar Elarga:
First implementation.