IEA EBC Annex 60 EBC logo

Annex60.Fluid.Chillers.BaseClasses

Package with base classes for Annex60.Fluid.Chillers

Information

This package contains base classes that are used to construct the models in Annex60.Fluid.Chillers.

Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).

Package Content

Name Description
Annex60.Fluid.Chillers.BaseClasses.Carnot Carnot  
Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_T PartialCarnot_T Partial model for chiller with performance curve adjusted based on Carnot efficiency
Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_y PartialCarnot_y Partial chiller model with performance curve adjusted based on Carnot efficiency

Annex60.Fluid.Chillers.BaseClasses.Carnot Annex60.Fluid.Chillers.BaseClasses.Carnot


Annex60.Fluid.Chillers.BaseClasses.Carnot

Information

This is the base class for the Carnot chiller and the Carnot heat pump whose coefficient of performance COP changes with temperatures in the same way as the Carnot efficiency changes.

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 ⁄ (Tuse,0 ⁄ (Tcon,0-Teva,0)),

where Tuse is the temperature of the the useful heat, e.g., the evaporator temperature for a chiller or the condenser temperature for a heat pump.

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 either the part load for cooling in case of a chiller, or the part load of heating in case of a heat pump, and the coefficients ai are declared by the parameter a.

Implementation

To make this base class applicable to chiller or heat pumps, it uses the boolean constant COP_is_for_cooling. Depending on its value, the equations for the coefficient of performance and the part load ratio are set up.

Extends from Annex60.Fluid.Interfaces.PartialFourPortInterface (Partial model transporting fluid between two ports without storing mass or energy).

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]
HeatFlowRateQEva_flow_nominal Nominal cooling heat flow rate (QEva_flow_nominal < 0) [W]
HeatFlowRateQCon_flow_nominal 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]

Modelica definition

partial model Carnot extends Annex60.Fluid.Interfaces.PartialFourPortInterface( m1_flow_nominal = QCon_flow_nominal/cp1_default/dTCon_nominal, m2_flow_nominal = QEva_flow_nominal/cp2_default/dTEva_nominal); parameter Modelica.SIunits.HeatFlowRate QEva_flow_nominal(max=0) "Nominal cooling heat flow rate (QEva_flow_nominal < 0)"; parameter Modelica.SIunits.HeatFlowRate QCon_flow_nominal(min=0) "Nominal heating flow rate"; parameter Modelica.SIunits.TemperatureDifference dTEva_nominal( final max=0) = -10 "Temperature difference evaporator outlet-inlet"; parameter Modelica.SIunits.TemperatureDifference dTCon_nominal( final min=0) = 10 "Temperature difference condenser outlet-inlet"; // Efficiency parameter Boolean use_eta_Carnot_nominal = true "Set to true to use Carnot effectiveness etaCarnot_nominal rather than COP_nominal"; parameter Real etaCarnot_nominal( unit="1") = COP_nominal / (TUse_nominal/(TCon_nominal-TEva_nominal)) "Carnot effectiveness (=COP/COP_Carnot) used if use_eta_Carnot_nominal = true"; parameter Real COP_nominal( unit="1") = etaCarnot_nominal * TUse_nominal/(TCon_nominal-TEva_nominal) "Coefficient of performance at TEva_nominal and TCon_nominal, used if use_eta_Carnot_nominal = false"; parameter Modelica.SIunits.Temperature TCon_nominal = 303.15 "Condenser temperature used to compute COP_nominal if use_eta_Carnot_nominal=false"; parameter Modelica.SIunits.Temperature TEva_nominal = 278.15 "Evaporator temperature used to compute COP_nominal if use_eta_Carnot_nominal=false"; parameter Real a[:] = {1} "Coefficients for efficiency curve (need p(a=a, yPL=1)=1)"; parameter Modelica.SIunits.Pressure dp1_nominal(displayUnit="Pa") "Pressure difference over condenser"; parameter Modelica.SIunits.Pressure dp2_nominal(displayUnit="Pa") "Pressure difference over evaporator"; parameter Boolean homotopyInitialization=true "= true, use homotopy method"; parameter Boolean from_dp1=false "= true, use m_flow = f(dp) else dp = f(m_flow)"; parameter Boolean from_dp2=false "= true, use m_flow = f(dp) else dp = f(m_flow)"; parameter Boolean linearizeFlowResistance1=false "= true, use linear relation between m_flow and dp for any flow rate"; parameter Boolean linearizeFlowResistance2=false "= true, use linear relation between m_flow and dp for any flow rate"; parameter Real deltaM1(final unit="1")=0.1 "Fraction of nominal flow rate where flow transitions to laminar"; parameter Real deltaM2(final unit="1")=0.1 "Fraction of nominal flow rate where flow transitions to laminar"; parameter Modelica.SIunits.Time tau1=60 "Time constant at nominal flow rate (used if energyDynamics1 <> Modelica.Fluid.Types.Dynamics.SteadyState)"; parameter Modelica.SIunits.Time tau2=60 "Time constant at nominal flow rate (used if energyDynamics2 <> Modelica.Fluid.Types.Dynamics.SteadyState)"; parameter Modelica.SIunits.Temperature T1_start=Medium1.T_default "Initial or guess value of set point"; parameter Modelica.SIunits.Temperature T2_start=Medium2.T_default "Initial or guess value of set point"; parameter Modelica.Fluid.Types.Dynamics energyDynamics= Modelica.Fluid.Types.Dynamics.SteadyState "Type of energy balance: dynamic (3 initialization options) or steady state"; Modelica.Blocks.Interfaces.RealOutput QCon_flow( final quantity="HeatFlowRate", final unit="W") "Actual heating heat flow rate added to fluid 1"; Modelica.Blocks.Interfaces.RealOutput P( final quantity="Power", final unit="W") "Electric power consumed by compressor"; Modelica.Blocks.Interfaces.RealOutput QEva_flow( final quantity="HeatFlowRate", final unit="W") "Actual cooling heat flow rate removed from fluid 2"; Real yPL(final unit="1", min=0) = if COP_is_for_cooling then QEva_flow/QEva_flow_nominal else QCon_flow/QCon_flow_nominal "Part load ratio"; Real etaPL(final unit = "1")= if evaluate_etaPL then 1 else Annex60.Utilities.Math.Functions.polynomial(a=a, x=yPL) "Efficiency due to part load (etaPL(yPL=1)=1)"; Real COP(min=0, final unit="1") = etaCarnot_nominal_internal * COPCar * etaPL "Coefficient of performance"; Real COPCar(min=0) = TUse / Annex60.Utilities.Math.Functions.smoothMax( x1=1, x2=TCon-TEva, deltaX=0.25) "Carnot efficiency"; Modelica.SIunits.Temperature TCon(start=TCon_nominal) = Medium1.temperature(staB1) "Condenser temperature used to compute efficiency"; Modelica.SIunits.Temperature TEva(start=TEva_nominal) = Medium2.temperature(staB2) "Evaporator temperature used to compute efficiency"; protected constant Boolean COP_is_for_cooling "Set to true if the specified COP is for cooling"; parameter Real etaCarnot_nominal_internal( unit="1") = if use_eta_Carnot_nominal then etaCarnot_nominal else COP_nominal / (TUse_nominal/(TCon_nominal-TEva_nominal)) "Carnot effectiveness (=COP/COP_Carnot) used to compute COP"; // For Carnot_y, computing etaPL = f(yPL) introduces a nonlinear equation. // The parameter below avoids this if a = {1}. final parameter Boolean evaluate_etaPL= (size(a, 1) == 1 and abs(a[1] - 1) < Modelica.Constants.eps) "Flag, true if etaPL should be computed as it depends on yPL"; final parameter Modelica.SIunits.Temperature TUse_nominal= if COP_is_for_cooling then TEva_nominal else TCon_nominal "Nominal evaporator temperature for chiller or condenser temperature for heat pump"; Modelica.SIunits.Temperature TUse = if COP_is_for_cooling then TEva else TCon "Temperature of useful heat (evaporator for chiller, condenser for heat pump"; final parameter Modelica.SIunits.SpecificHeatCapacity cp1_default= Medium1.specificHeatCapacityCp(Medium1.setState_pTX( p = Medium1.p_default, T = Medium1.T_default, X = Medium1.X_default)) "Specific heat capacity of medium 1 at default medium state"; final parameter Modelica.SIunits.SpecificHeatCapacity cp2_default= Medium2.specificHeatCapacityCp(Medium2.setState_pTX( p = Medium2.p_default, T = Medium2.T_default, X = Medium2.X_default)) "Specific heat capacity of medium 2 at default medium state"; Medium1.ThermodynamicState staA1 = Medium1.setState_phX( port_a1.p, inStream(port_a1.h_outflow), inStream(port_a1.Xi_outflow)) "Medium properties in port_a1"; Medium1.ThermodynamicState staB1 = Medium1.setState_phX( port_b1.p, port_b1.h_outflow, port_b1.Xi_outflow) "Medium properties in port_b1"; Medium2.ThermodynamicState staA2 = Medium2.setState_phX( port_a2.p, inStream(port_a2.h_outflow), inStream(port_a2.Xi_outflow)) "Medium properties in port_a2"; Medium2.ThermodynamicState staB2 = Medium2.setState_phX( port_b2.p, port_b2.h_outflow, port_b2.Xi_outflow) "Medium properties in port_b2"; replaceable Interfaces.PartialTwoPortInterface con constrainedby Interfaces.PartialTwoPortInterface( redeclare final package Medium = Medium1, final allowFlowReversal=allowFlowReversal1, final m_flow_nominal=m1_flow_nominal, final m_flow_small=m1_flow_small, final show_T=false) "Condenser"; replaceable Interfaces.PartialTwoPortInterface eva constrainedby Interfaces.PartialTwoPortInterface( redeclare final package Medium = Medium2, final allowFlowReversal=allowFlowReversal2, final m_flow_nominal=m2_flow_nominal, final m_flow_small=m2_flow_small, final show_T=false) "Evaporator"; initial equation assert(dTEva_nominal < 0, "Parameter dTEva_nominal must be negative."); assert(dTCon_nominal > 0, "Parameter dTCon_nominal must be positive."); assert(abs(Annex60.Utilities.Math.Functions.polynomial( a=a, x=1)-1) < 0.01, "Efficiency curve is wrong. Need etaPL(y=1)=1."); assert(etaCarnot_nominal_internal < 1, "Parameters lead to etaCarnot_nominal > 1. Check parameters."); equation connect(port_a2, eva.port_a); connect(eva.port_b, port_b2); connect(port_a1, con.port_a); connect(con.port_b, port_b1); end Carnot;

Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_T Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_T

Partial model for chiller with performance curve adjusted based on Carnot efficiency

Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_T

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 compressor part load ratio as the control signal.

Extends from Carnot.

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]
HeatFlowRateQEva_flow_nominal Nominal cooling heat flow rate (QEva_flow_nominal < 0) [W]
HeatFlowRateQCon_flow_nominal 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]

Modelica definition

partial model PartialCarnot_T "Partial model for chiller with performance curve adjusted based on Carnot efficiency" extends Carnot; protected Modelica.Blocks.Sources.RealExpression PEle "Electrical power consumption"; equation connect(PEle.y, P); end PartialCarnot_T;

Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_y Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_y

Partial chiller model with performance curve adjusted based on Carnot efficiency

Annex60.Fluid.Chillers.BaseClasses.PartialCarnot_y

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.

Extends from Carnot.

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]
HeatFlowRateQEva_flow_nominalif COP_is_for_cooling then -...Nominal cooling heat flow rate (QEva_flow_nominal < 0) [W]
HeatFlowRateQCon_flow_nominalP_nominal - QEva_flow_nominalNominal 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]
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

partial model PartialCarnot_y "Partial chiller model with performance curve adjusted based on Carnot efficiency" extends Carnot( final QCon_flow_nominal= P_nominal - QEva_flow_nominal, final QEva_flow_nominal = if COP_is_for_cooling then -P_nominal * COP_nominal else -P_nominal * (COP_nominal-1), 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 massDynamics=energyDynamics, final homotopyInitialization=homotopyInitialization, final Q_flow_nominal=QCon_flow_nominal), redeclare HeatExchangers.HeaterCooler_u eva( final from_dp=from_dp2, final dp_nominal=dp2_nominal, final linearizeFlowResistance=linearizeFlowResistance2, final deltaM=deltaM2, final tau=tau2, final T_start=T2_start, final energyDynamics=energyDynamics, final massDynamics=energyDynamics, final homotopyInitialization=homotopyInitialization, final Q_flow_nominal=QEva_flow_nominal)); parameter Modelica.SIunits.Power P_nominal "Nominal compressor power (at y=1)"; Modelica.Blocks.Interfaces.RealInput y(min=0, max=1, unit="1") "Part load ratio of compressor"; protected Modelica.SIunits.HeatFlowRate QCon_flow_internal(start=QCon_flow_nominal)= P - QEva_flow_internal "Condenser heat input"; Modelica.SIunits.HeatFlowRate QEva_flow_internal(start=QEva_flow_nominal)= if COP_is_for_cooling then -COP * P else (1-COP)*P "Evaporator heat input"; Modelica.Blocks.Sources.RealExpression yEva_flow_in( y=QEva_flow_internal/QEva_flow_nominal) "Normalized evaporator heat flow rate"; Modelica.Blocks.Sources.RealExpression yCon_flow_in( y=QCon_flow_internal/QCon_flow_nominal) "Normalized condenser heat flow rate"; Modelica.Blocks.Math.Gain PEle(final k=P_nominal) "Electrical power consumption"; equation connect(PEle.y, P); connect(PEle.u, y); connect(yEva_flow_in.y, eva.u); connect(yCon_flow_in.y, con.u); connect(con.Q_flow, QCon_flow); connect(eva.Q_flow, QEva_flow); end PartialCarnot_y;

http://iea-annex60.org