modelCarnot_TCon

Heat pump with prescribed condenser leaving temperature and performance curve adjusted based on Carnot efficiency

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

Information

This is a model of a heat pump 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 condenser leaving temperature, which is met exactly at steady state if the heat pump 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 ⁄ (Tcon,0 ⁄ (Tcon,0-Teva,0)).

The heat pump COP is computed as the product

COP = ηCarnot,0 COPCarnot ηPL,

where COPCarnot is the Carnot efficiency and ηPL is a polynomial in heating 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 heat pump 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 removed by to the evaporator. If the mass flow rate is too small, very low outlet temperatures can result, possibly below freezing.

The condenser heat flow rate QCon_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 QCon_flow_nominal is set to a reasonable value.

The maximum heating capacity is set by the parameter QCon_flow_max, which is by default set to 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 chiller, see Annex60.Fluid.Chillers.Examples.Carnot_TEva.

Parameters

TypeNameDefaultDescription
Modelica.SIunits.HeatFlowRateQCon_flow_maxModelica.Constants.infMaximum heat flow rate for heating (positive)
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.SIunits.MassFlowRatem1_flow_nominal (from PartialFourPortInterface)Nominal mass flow rate
Modelica.SIunits.MassFlowRatem2_flow_nominal (from PartialFourPortInterface)Nominal mass flow rate
Modelica.SIunits.HeatFlowRateQEva_flow_nominal (from Carnot)Nominal cooling heat flow rate (QEva_flow_nominal < 0)
Modelica.SIunits.HeatFlowRateQCon_flow_nominal (from Carnot)Nominal heating flow rate
Modelica.SIunits.TemperatureDifferencedTEva_nominal (from Carnot)-10Temperature difference evaporator outlet-inlet
Modelica.SIunits.TemperatureDifferencedTCon_nominal (from Carnot)10Temperature difference condenser outlet-inlet
Modelica.SIunits.Pressuredp1_nominal (from Carnot)Pressure difference over condenser
Modelica.SIunits.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
BooleanhomotopyInitialization (from Carnot)true= true, use homotopy method
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)COP_nominal/(TUse_nominal/(TCon_nominal - TEva_nominal))Carnot effectiveness (=COP/COP_Carnot) used if use_eta_Carnot_nominal = true
RealCOP_nominal (from Carnot)etaCarnot_nominal*TUse_nominal/(TCon_nominal - TEva_nominal)Coefficient of performance at TEva_nominal and TCon_nominal, used if use_eta_Carnot_nominal = false
Modelica.SIunits.TemperatureTCon_nominal (from Carnot)303.15Condenser temperature used to compute COP_nominal if use_eta_Carnot_nominal=false
Modelica.SIunits.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)
Flow resistance › Condenser
Booleanfrom_dp1 (from Carnot)false= true, use m_flow = f(dp) else dp = f(m_flow)
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)
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.SIunits.Timetau1 (from Carnot)60Time constant at nominal flow rate (used if energyDynamics1 <> Modelica.Fluid.Types.Dynamics.SteadyState)
Modelica.SIunits.TemperatureT1_start (from Carnot)Medium1.T_defaultInitial or guess value of set point
Dynamics › Evaporator
Modelica.SIunits.Timetau2 (from Carnot)60Time constant at nominal flow rate (used if energyDynamics2 <> Modelica.Fluid.Types.Dynamics.SteadyState)
Modelica.SIunits.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.RealInputTSetCondenser 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.SIunits.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.SIunits.PressureDifferencedp2 (from PartialFourPortInterface)port_a2.p - port_b2.pPressure difference between port_a2 and port_b2
Medium1.ThermodynamicStatesta_a1 (from PartialFourPortInterface)Medium1.setState_phX(port_a1.p, noEvent(actualStream(port_a1.h_outflow)), noEvent(actualStream(port_a1.Xi_outflow)))Medium properties in port_a1
Medium1.ThermodynamicStatesta_b1 (from PartialFourPortInterface)Medium1.setState_phX(port_b1.p, noEvent(actualStream(port_b1.h_outflow)), noEvent(actualStream(port_b1.Xi_outflow)))Medium properties in port_b1
Medium2.ThermodynamicStatesta_a2 (from PartialFourPortInterface)Medium2.setState_phX(port_a2.p, noEvent(actualStream(port_a2.h_outflow)), noEvent(actualStream(port_a2.Xi_outflow)))Medium properties in port_a2
Medium2.ThermodynamicStatesta_b2 (from PartialFourPortInterface)Medium2.setState_phX(port_b2.p, noEvent(actualStream(port_b2.h_outflow)), noEvent(actualStream(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 1 else Annex60.Utilities.Math.Functions.polynomial(a = a, x = yPL)Efficiency due to part load (etaPL(yPL=1)=1)
RealCOP (from Carnot)etaCarnot_nominal_internal*COPCar*etaPLCoefficient of performance
RealCOPCar (from Carnot)TUse/Annex60.Utilities.Math.Functions.smoothMax(x1 = 1, x2 = TCon - TEva, deltaX = 0.25)Carnot efficiency
Modelica.SIunits.TemperatureTCon (from Carnot)Medium1.temperature(staB1)Condenser temperature used to compute efficiency
Modelica.SIunits.TemperatureTEva (from Carnot)Medium2.temperature(staB2)Evaporator temperature used to compute efficiency

Revisions

  • January 3, 2017, by Michael Wetter:
    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.