IEA EBC Annex 60 EBC logo

Annex60.Fluid.Chillers

Package with chiller models

Information

This package contains components models for chillers.

Extends from Modelica.Icons.VariantsPackage (Icon for package containing variants).

Package Content

Name Description
Annex60.Fluid.Chillers.Carnot_TEva Carnot_TEva Chiller with prescribed evaporator leaving temperature and performance curve adjusted based on Carnot efficiency
Annex60.Fluid.Chillers.Carnot_y Carnot_y Chiller with performance curve adjusted based on Carnot efficiency
Annex60.Fluid.Chillers.Examples Examples Collection of models that illustrate model use and test models
Annex60.Fluid.Chillers.Validation Validation Collection of models that validate the chiller models
Annex60.Fluid.Chillers.BaseClasses BaseClasses Package with base classes for Annex60.Fluid.Chillers

Annex60.Fluid.Chillers.Carnot_TEva Annex60.Fluid.Chillers.Carnot_TEva

Chiller with prescribed evaporator leaving temperature and performance curve adjusted based on Carnot efficiency

Annex60.Fluid.Chillers.Carnot_TEva

Information

This is a model of a chiller whose coefficient of performance COP changes with temperatures in the same way as the Carnot efficiency changes. The control input is the setpoint of the evaporator leaving temperature, which is met exactly at steady state if the chiller has sufficient capacity.

The model allows to either specify the Carnot effectivness ηCarnot,0, or a COP0 at the nominal conditions, together with the evaporator temperature Teva,0 and the condenser temperature Tcon,0, in which case the model computes the Carnot effectivness as

ηCarnot,0 = COP0 ⁄ (Teva,0 ⁄ (Tcon,0-Teva,0)).

On the Advanced tab, a user can specify the temperatures that will be used as the evaporator and condenser temperature.

During the simulation, the chiller COP is computed as the product

COP = ηCarnot,0 COPCarnot ηPL,

where COPCarnot is the Carnot efficiency and ηPL is a polynomial in the cooling part load ratio yPL that can be used to take into account a change in COP at part load conditions. This polynomial has the form

ηPL = a1 + a2 yPL + a3 yPL2 + ...

where the coefficients ai are declared by the parameter a.

On the Dynamics tag, the model can be parametrized to compute a transient or steady-state response. The transient response of the model 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.

Typical use and important parameters

When using this component, make sure that the condenser has sufficient mass flow rate. Based on the evaporator mass flow rate, temperature difference and the efficiencies, the model computes how much heat will be added to the condenser. If the mass flow rate is too small, very high outlet temperatures can result.

The evaporator heat flow rate QEva_flow_nominal is used to assign the default value for the mass flow rates, which are used for the pressure drop calculations. It is also used to compute the part load efficiency. Hence, make sure that QEva_flow_nominal is set to a reasonable value.

The maximum cooling capacity is set by the parameter QEva_flow_min, which is by default set to negative infinity.

The coefficient of performance depends on the evaporator and condenser leaving temperature since otherwise the second law of thermodynamics may be violated.

Notes

For a similar model that can be used as a heat pump, see Annex60.Fluid.HeatPumps.Examples.Carnot_TCon.

Extends from Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_T (Partial model for chiller with performance curve adjusted based on Carnot efficiency).

Parameters

TypeNameDefaultDescription
replaceable package Medium1PartialMediumMedium 1 in the component
replaceable package Medium2PartialMediumMedium 2 in the component
HeatFlowRateQEva_flow_min-Modelica.Constants.infMaximum heat flow rate for cooling (negative) [W]
Nominal condition
MassFlowRatem1_flow_nominalQCon_flow_nominal/cp1_defaul...Nominal mass flow rate [kg/s]
MassFlowRatem2_flow_nominalQEva_flow_nominal/cp2_defaul...Nominal mass flow rate [kg/s]
HeatFlowRateQEva_flow_nominal Nominal cooling heat flow rate (QEva_flow_nominal < 0) [W]
HeatFlowRateQCon_flow_nominal-QEva_flow_nominal*(1 + COP_...Nominal heating flow rate [W]
TemperatureDifferencedTEva_nominal-10Temperature difference evaporator outlet-inlet [K]
TemperatureDifferencedTCon_nominal10Temperature difference condenser outlet-inlet [K]
Pressuredp1_nominal Pressure difference over condenser [Pa]
Pressuredp2_nominal Pressure difference over evaporator [Pa]
Efficiency
Booleanuse_eta_Carnot_nominaltrueSet to true to use Carnot effectiveness etaCarnot_nominal rather than COP_nominal
RealetaCarnot_nominalCOP_nominal/(TUse_nominal/(T...Carnot effectiveness (=COP/COP_Carnot) used if use_eta_Carnot_nominal = true [1]
RealCOP_nominaletaCarnot_nominal*TUse_nomin...Coefficient of performance at TEva_nominal and TCon_nominal, used if use_eta_Carnot_nominal = false [1]
TemperatureTCon_nominal303.15Condenser temperature used to compute COP_nominal if use_eta_Carnot_nominal=false [K]
TemperatureTEva_nominal278.15Evaporator temperature used to compute COP_nominal if use_eta_Carnot_nominal=false [K]
Reala[:]{1}Coefficients for efficiency curve (need p(a=a, yPL=1)=1)
Assumptions
BooleanallowFlowReversal1true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1
BooleanallowFlowReversal2true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2
Advanced
MassFlowRatem1_flow_small1E-4*abs(m1_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
MassFlowRatem2_flow_small1E-4*abs(m2_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
BooleanhomotopyInitializationtrue= true, use homotopy method
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Flow resistance
Condenser
Booleanfrom_dp1false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance1false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM10.1Fraction of nominal flow rate where flow transitions to laminar [1]
Evaporator
Booleanfrom_dp2false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance2false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM20.1Fraction of nominal flow rate where flow transitions to laminar [1]
Dynamics
Condenser
Timetau160Time constant at nominal flow rate (used if energyDynamics1 <> Modelica.Fluid.Types.Dynamics.SteadyState) [s]
TemperatureT1_startMedium1.T_defaultInitial or guess value of set point [K]
Evaporator
Timetau260Time constant at nominal flow rate (used if energyDynamics2 <> Modelica.Fluid.Types.Dynamics.SteadyState) [s]
TemperatureT2_startMedium2.T_defaultInitial or guess value of set point [K]
Evaporator and condenser
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state

Connectors

TypeNameDescription
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
output RealOutputQCon_flowActual heating heat flow rate added to fluid 1 [W]
output RealOutputPElectric power consumed by compressor [W]
output RealOutputQEva_flowActual cooling heat flow rate removed from fluid 2 [W]
input RealInputTSetEvaporator leaving water temperature [K]

Modelica definition

model Carnot_TEva "Chiller with prescribed evaporator leaving temperature and performance curve adjusted based on Carnot efficiency" extends Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_T( final COP_is_for_cooling = true, final QCon_flow_nominal = -QEva_flow_nominal*(1 + COP_nominal)/COP_nominal, PEle(y=-QEva_flow/COP), redeclare HeatExchangers.HeaterCooler_u con( final from_dp=from_dp1, final dp_nominal=dp1_nominal, final linearizeFlowResistance=linearizeFlowResistance1, final deltaM=deltaM1, final tau=tau1, final T_start=T1_start, final energyDynamics=energyDynamics, final homotopyInitialization=homotopyInitialization, final Q_flow_nominal=QCon_flow_nominal), redeclare HeatExchangers.HeaterCooler_T eva( final from_dp=from_dp2, final dp_nominal=dp2_nominal, final linearizeFlowResistance=linearizeFlowResistance2, final deltaM=deltaM2, final Q_flow_maxHeat=0, final Q_flow_maxCool=QEva_flow_min, final tau=tau2, final T_start=T2_start, final energyDynamics=energyDynamics, final homotopyInitialization=homotopyInitialization)); parameter Modelica.SIunits.HeatFlowRate QEva_flow_min( max=0) = -Modelica.Constants.inf "Maximum heat flow rate for cooling (negative)"; Modelica.Blocks.Interfaces.RealInput TSet(unit="K") "Evaporator leaving water temperature"; protected Modelica.Blocks.Math.Gain yCon(final k=1/QCon_flow_nominal) "Normalized condenser heat flow rate"; Modelica.Blocks.Math.Add QCon_flow_internal(final k1=-1) "Heat added to condenser"; initial equation assert(QEva_flow_nominal < 0, "Parameter QEva_flow_nominal must be negative."); equation connect(TSet, eva.TSet); connect(eva.Q_flow, QEva_flow); connect(QCon_flow_internal.y, yCon.u); connect(yCon.y, con.u); connect(QCon_flow_internal.y, QCon_flow); connect(QCon_flow_internal.u1, eva.Q_flow); connect(QCon_flow_internal.u2, PEle.y); end Carnot_TEva;

Annex60.Fluid.Chillers.Carnot_y Annex60.Fluid.Chillers.Carnot_y

Chiller with performance curve adjusted based on Carnot efficiency

Annex60.Fluid.Chillers.Carnot_y

Information

This is model of a chiller whose coefficient of performance COP changes with temperatures in the same way as the Carnot efficiency changes. The input signal y is the control signal for the compressor.

The model allows to either specify the Carnot effectivness ηCarnot,0, or a COP0 at the nominal conditions, together with the evaporator temperature Teva,0 and the condenser temperature Tcon,0, in which case the model computes the Carnot effectivness as

ηCarnot,0 = COP0 ⁄ (Teva,0 ⁄ (Tcon,0-Teva,0)).

The chiller COP is computed as the product

COP = ηCarnot,0 COPCarnot ηPL,

where COPCarnot is the Carnot efficiency and ηPL is a polynomial in the cooling part load ratio yPL that can be used to take into account a change in COP at part load conditions. This polynomial has the form

ηPL = a1 + a2 yPL + a3 yPL2 + ...

where the coefficients ai are declared by the parameter a.

On the Dynamics tag, the model can be parametrized to compute a transient or steady-state response. The transient response of the model 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.

Typical use and important parameters

When using this component, make sure that the evaporator and the condenser have sufficient mass flow rate. Based on the mass flow rates, the compressor power, temperature difference and the efficiencies, the model computes how much heat will be added to the condenser and removed at the evaporator. If the mass flow rates are too small, very high temperature differences can result.

The evaporator heat flow rate QEva_flow_nominal is used to assign the default value for the mass flow rates, which are used for the pressure drop calculations. It is also used to compute the part load efficiency. Hence, make sure that QEva_flow_nominal is set to a reasonable value.

The maximum cooling capacity is set by the parameter QEva_flow_min, which is by default set to negative infinity.

The coefficient of performance depends on the evaporator and condenser leaving temperature since otherwise the second law of thermodynamics may be violated.

Notes

For a similar model that can be used as a heat pump, see Annex60.Fluid.HeatPumps.Carnot_y.

Extends from Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_y (Partial chiller model with performance curve adjusted based on Carnot efficiency).

Parameters

TypeNameDefaultDescription
replaceable package Medium1PartialMediumMedium 1 in the component
replaceable package Medium2PartialMediumMedium 2 in the component
Nominal condition
MassFlowRatem1_flow_nominalQCon_flow_nominal/cp1_defaul...Nominal mass flow rate [kg/s]
MassFlowRatem2_flow_nominalQEva_flow_nominal/cp2_defaul...Nominal mass flow rate [kg/s]
TemperatureDifferencedTEva_nominal-10Temperature difference evaporator outlet-inlet [K]
TemperatureDifferencedTCon_nominal10Temperature difference condenser outlet-inlet [K]
Pressuredp1_nominal Pressure difference over condenser [Pa]
Pressuredp2_nominal Pressure difference over evaporator [Pa]
PowerP_nominal Nominal compressor power (at y=1) [W]
Efficiency
Booleanuse_eta_Carnot_nominaltrueSet to true to use Carnot effectiveness etaCarnot_nominal rather than COP_nominal
RealetaCarnot_nominalCOP_nominal/(TUse_nominal/(T...Carnot effectiveness (=COP/COP_Carnot) used if use_eta_Carnot_nominal = true [1]
RealCOP_nominaletaCarnot_nominal*TUse_nomin...Coefficient of performance at TEva_nominal and TCon_nominal, used if use_eta_Carnot_nominal = false [1]
TemperatureTCon_nominal303.15Condenser temperature used to compute COP_nominal if use_eta_Carnot_nominal=false [K]
TemperatureTEva_nominal278.15Evaporator temperature used to compute COP_nominal if use_eta_Carnot_nominal=false [K]
Reala[:]{1}Coefficients for efficiency curve (need p(a=a, yPL=1)=1)
Assumptions
BooleanallowFlowReversal1true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1
BooleanallowFlowReversal2true= false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2
Advanced
MassFlowRatem1_flow_small1E-4*abs(m1_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
MassFlowRatem2_flow_small1E-4*abs(m2_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
BooleanhomotopyInitializationtrue= true, use homotopy method
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Flow resistance
Condenser
Booleanfrom_dp1false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance1false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM10.1Fraction of nominal flow rate where flow transitions to laminar [1]
Evaporator
Booleanfrom_dp2false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance2false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM20.1Fraction of nominal flow rate where flow transitions to laminar [1]
Dynamics
Condenser
Timetau160Time constant at nominal flow rate (used if energyDynamics1 <> Modelica.Fluid.Types.Dynamics.SteadyState) [s]
TemperatureT1_startMedium1.T_defaultInitial or guess value of set point [K]
Evaporator
Timetau260Time constant at nominal flow rate (used if energyDynamics2 <> Modelica.Fluid.Types.Dynamics.SteadyState) [s]
TemperatureT2_startMedium2.T_defaultInitial or guess value of set point [K]
Evaporator and condenser
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state

Connectors

TypeNameDescription
FluidPort_aport_a1Fluid connector a1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_bport_b1Fluid connector b1 (positive design flow direction is from port_a1 to port_b1)
FluidPort_aport_a2Fluid connector a2 (positive design flow direction is from port_a2 to port_b2)
FluidPort_bport_b2Fluid connector b2 (positive design flow direction is from port_a2 to port_b2)
output RealOutputQCon_flowActual heating heat flow rate added to fluid 1 [W]
output RealOutputPElectric power consumed by compressor [W]
output RealOutputQEva_flowActual cooling heat flow rate removed from fluid 2 [W]
input RealInputyPart load ratio of compressor [1]

Modelica definition

model Carnot_y "Chiller with performance curve adjusted based on Carnot efficiency" extends Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_y( final COP_is_for_cooling = true); end Carnot_y;

http://iea-annex60.org