modelCarnot_TEva

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

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

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.

Set use_eta_Carnot_nominal=true to specify directly the Carnot effectiveness ηCarnot,0, in which case the value of the parameter COP_nominal will not affect the simulation. If use_eta_Carnot_nominal=false, the model will use the value of the parameter COP_nominal together with the specified nominal temperatures to compute the Carnot effectiveness as

ηCarnot,0 = COP0 ⁄ (Teva,0 ⁄ (Tcon,0 + Tapp,con,0 - (Teva,0-Tapp,eva,0))),

where Teva,0 is the evaporator temperature, Tcon,0 is the condenser temperature, Tapp,eva,0 is the evaporator approach temperature and Tapp,con,0 is the condenser approach temperature.

The COP is computed as the product

COP = ηCarnot,0 COPCarnot ηPL,

where COPCarnot is the Carnot efficiency and ηPL is the part load efficiency, expressed using a polynomial. This polynomial has the form

ηPL = a1 + a2 y + a3 y2 + ...,

where y ∈ [0, 1] is the part load for cooling and 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 Buildings.Fluid.HeatPumps.Examples.Carnot_TCon.

Parameters

TypeNameDefaultDescription
BooleanhomotopyInitialization (from Carnot)true= true, use homotopy method
Modelica.Units.SI.HeatFlowRateQEva_flow_min-Modelica.Constants.infMaximum heat flow rate for cooling (negative)
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.HeatFlowRateQEva_flow_nominal (from Carnot)Nominal cooling heat flow rate (QEva_flow_nominal < 0)
Modelica.Units.SI.HeatFlowRateQCon_flow_nominal (from Carnot)Nominal heating flow rate
Modelica.Units.SI.TemperatureDifferencedTEva_nominal (from Carnot)-10Temperature difference evaporator outlet-inlet
Modelica.Units.SI.TemperatureDifferencedTCon_nominal (from Carnot)10Temperature difference condenser outlet-inlet
Modelica.Units.SI.Pressuredp1_nominal (from Carnot)Pressure difference over condenser
Modelica.Units.SI.Pressuredp2_nominal (from Carnot)Pressure difference over evaporator
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
Efficiency
Booleanuse_eta_Carnot_nominal (from Carnot)trueSet to true to use Carnot effectiveness etaCarnot_nominal rather than COP_nominal
RealetaCarnot_nominal (from Carnot)0.3Carnot effectiveness (=COP/COP_Carnot) used during simulation if use_eta_Carnot_nominal = true
RealCOP_nominal (from Carnot)etaCarnot_nominal*TUseAct_nominal/(TCon_nominal + TAppCon_nominal - (TEva_nominal - TAppEva_nominal))Coefficient of performance at TEva_nominal and TCon_nominal, used during simulation if use_eta_Carnot_nominal = false
Modelica.Units.SI.TemperatureTCon_nominal (from Carnot)303.15Condenser temperature used to compute COP_nominal if use_eta_Carnot_nominal=false
Modelica.Units.SI.TemperatureTEva_nominal (from Carnot)278.15Evaporator temperature used to compute COP_nominal if use_eta_Carnot_nominal=false
Real[:]a (from Carnot){1}Coefficients for efficiency curve (need p(a=a, yPL=1)=1)
Modelica.Units.SI.TemperatureDifferenceTAppCon_nominal (from Carnot)if cp1_default < 1500 then 5 else 2Temperature difference between refrigerant and working fluid outlet in condenser
Modelica.Units.SI.TemperatureDifferenceTAppEva_nominal (from Carnot)if cp2_default < 1500 then 5 else 2Temperature difference between refrigerant and working fluid outlet in evaporator
Flow resistance › Condenser
Booleanfrom_dp1 (from Carnot)false= true, use m_flow = f(dp) else dp = f(m_flow)
Realn1 (from Carnot)2Flow exponent, n1=1 for laminar, n1=2 for turbulent
BooleanlinearizeFlowResistance1 (from Carnot)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM1 (from Carnot)0.1Fraction of nominal flow rate where flow transitions to laminar
Flow resistance › Evaporator
Booleanfrom_dp2 (from Carnot)false= true, use m_flow = f(dp) else dp = f(m_flow)
Realn2 (from Carnot)2Flow exponent, n2=1 for laminar, n2=2 for turbulent
BooleanlinearizeFlowResistance2 (from Carnot)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM2 (from Carnot)0.1Fraction of nominal flow rate where flow transitions to laminar
Dynamics › Condenser
Modelica.Units.SI.Timetau1 (from Carnot)60Time constant at nominal flow rate (used if energyDynamics1 <> Modelica.Fluid.Types.Dynamics.SteadyState)
Modelica.Units.SI.TemperatureT1_start (from Carnot)Medium1.T_defaultInitial or guess value of set point
Dynamics › Evaporator
Modelica.Units.SI.Timetau2 (from Carnot)60Time constant at nominal flow rate (used if energyDynamics2 <> Modelica.Fluid.Types.Dynamics.SteadyState)
Modelica.Units.SI.TemperatureT2_start (from Carnot)Medium2.T_defaultInitial or guess value of set point
Dynamics › Evaporator and condenser
Modelica.Fluid.Types.DynamicsenergyDynamics (from Carnot)Modelica.Fluid.Types.Dynamics.SteadyStateType of energy balance: dynamic (3 initialization options) or steady state

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.RealOutputQCon_flow (from Carnot)Actual heating heat flow rate added to fluid 1
Modelica.Blocks.Interfaces.RealOutputP (from Carnot)Electric power consumed by compressor
Modelica.Blocks.Interfaces.RealOutputQEva_flow (from Carnot)Actual cooling heat flow rate removed from fluid 2
Modelica.Blocks.Interfaces.RealInputTSetEvaporator leaving water temperature

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
RealyPL (from Carnot)if COP_is_for_cooling then QEva_flow/QEva_flow_nominal else QCon_flow/QCon_flow_nominalPart load ratio
RealetaPL (from Carnot)if evaluate_etaPL then Buildings.Utilities.Math.Functions.polynomial(a = a, x = yPL) else 1Efficiency due to part load (etaPL(yPL=1)=1)
RealCOP (from Carnot)etaCarnot_nominal_internal*COPCar*etaPLCoefficient of performance
RealCOPCar (from Carnot)TUseAct/Buildings.Utilities.Math.Functions.smoothMax(x1 = 1, x2 = TConAct - TEvaAct, deltaX = 0.25)Carnot efficiency
Modelica.Units.SI.TemperatureTConAct (from Carnot)Medium1.temperature(staB1) + QCon_flow/QCon_flow_nominal*TAppCon_nominalCondenser temperature used to compute efficiency, taking into account pinch temperature between fluid and refrigerant
Modelica.Units.SI.TemperatureTEvaAct (from Carnot)Medium2.temperature(staB2) - QEva_flow/QEva_flow_nominal*TAppEva_nominalEvaporator temperature used to compute efficiency, taking into account pinch temperature between fluid and refrigerant

Revisions

  • February 3, 2023, by Michael Wetter:
    Changed in base class the parameter binding etaCarnot_nominal(unit="1") = COP_nominal/(TUseAct_nominal/(TCon_nominal+TAppCon_nominal - (TEva_nominal-TAppEva_nominal))) to etaCarnot_nominal(unit="1") = 0.3 to avoid a circular assignment.
    Improved documentation.
    This is for Buildings, #3226.
  • May 8, 2017, by Michael Wetter:
    Replaced model that interfaces with fluid stream.
    This is for Buildings, #763.
  • January 2, 2017, by Filip Jorissen:
    Removed parameters effInpEva and effInpCon and updated documentation. This is for issue 497.
  • August 8, 2016, by Michael Wetter:
    Changed default temperature to compute COP to be the leaving temperature as use of the entering temperature can violate the 2nd law if the temperature lift is small.
    This is for Annex 60, issue 497.
  • November 25, 2015 by Michael Wetter:
    First implementation.