modelPartialCarnot_y

Partial chiller model with performance curve adjusted based on Carnot efficiency

Extends from Carnot.

Information

This is a partial model of a chiller whose coefficient of performance (COP) changes with temperatures in the same way as the Carnot efficiency changes. This base class is used for the Carnot chiller and Carnot heat pump that uses the leaving fluid temperature as the control signal.

Parameters

TypeNameDefaultDescription
BooleanhomotopyInitialization (from Carnot)true= true, use homotopy method
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
Modelica.Units.SI.PowerP_nominalNominal compressor power (at y=1)
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.RealInputyPart load ratio of compressor

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

  • June 15, 2017, by Michael Wetter:
    Added min attribute to parameter P_nominal.
  • January 26, 2016, by Michael Wetter:
    Implemented in the Annex 60 library the models Buildings.Fluid.Chillers.Carnot_y and Buildings.Fluid.HeatPumps.Carnot_y and refactored these models to use the same base class.
    Implemented the removal of the flow direction dependency of staA1, staB1, staA2 and staB2 as the efficiency of the Carnot machine should only be computed in the design flow direction, as corrected by Damien Picard.
  • December 18, 2015, by Michael Wetter:
    Corrected wrong computation of staB1 and staB2 which mistakenly used the inStream operator for the configuration without flow reversal. This is for issue 476.
  • November 25, 2015 by Michael Wetter:
    Changed sign convention for dTEva_nominal to be consistent with other models. The model will still work with the old values for dTEva_nominal, but it will write a warning so that users can transition their models.
    Corrected assert statement for the efficiency curve. This is for issue 468.
  • September 3, 2015 by Michael Wetter:
    Expanded documentation.
  • May 6, 2015 by Michael Wetter:
    Added prescribedHeatFlowRate=true for vol2.
  • October 9, 2013 by Michael Wetter:
    Reimplemented the computation of the port states to avoid using the conditionally removed variables sta_a1, sta_a2, sta_b1 and sta_b2.
  • May 10, 2013 by Michael Wetter:
    Added electric power P as an output signal.
  • October 11, 2010 by Michael Wetter:
    Fixed bug in energy balance.
  • March 3, 2009 by Michael Wetter:
    First implementation.