modelPartialEffectiveness

Partial model to implement heat exchangers based on effectiveness model

Extends from Fluid.Interfaces.StaticFourPortHeatMassExchanger (Partial model transporting two fluid streams between four ports without storing mass or energy).

Information

Partial model to implement heat exchanger models.

Classes that extend this model need to implement heat and mass balance equations in a form like

  // transferred heat
  Q1_flow = eps * QMax_flow;
  // no heat loss to ambient
  0 = Q1_flow + Q2_flow;
  // no mass exchange
  mXi1_flow = zeros(Medium1.nXi);
  mXi2_flow = zeros(Medium2.nXi);

Thus, if medium 1 is heated in this device, then Q1_flow > 0 and QMax_flow > 0.

Parameters

TypeNameDefaultDescription
BooleanprescribedHeatFlowRate1 (from StaticFourPortHeatMassExchanger)falseSet to true if the heat flow rate into fluid 1 is not a function of the component temperature
BooleanprescribedHeatFlowRate2 (from StaticFourPortHeatMassExchanger)falseSet to true if the heat flow rate into fluid 2 is not a function of the component temperature
BooleanhomotopyInitialization (from StaticFourPortHeatMassExchanger)true= true, use homotopy method
BooleansensibleOnly1 (from StaticFourPortHeatMassExchanger)Set to true if sensible exchange only for medium 1
BooleansensibleOnly2 (from StaticFourPortHeatMassExchanger)Set to true if sensible exchange only for medium 2
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.PressureDifferencedp1_nominal (from FourPortFlowResistanceParameters)Pressure difference
Modelica.Units.SI.PressureDifferencedp2_nominal (from FourPortFlowResistanceParameters)Pressure difference
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
Flow resistance › Medium 1
BooleancomputeFlowResistance1 (from FourPortFlowResistanceParameters)true=true, compute flow resistance. Set to false to assume no friction
Booleanfrom_dp1 (from FourPortFlowResistanceParameters)false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance1 (from FourPortFlowResistanceParameters)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM1 (from FourPortFlowResistanceParameters)0.1Fraction of nominal flow rate where flow transitions to laminar
Flow resistance › Medium 2
BooleancomputeFlowResistance2 (from FourPortFlowResistanceParameters)true=true, compute flow resistance. Set to false to assume no friction
Booleanfrom_dp2 (from FourPortFlowResistanceParameters)false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance2 (from FourPortFlowResistanceParameters)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM2 (from FourPortFlowResistanceParameters)0.1Fraction of nominal flow rate where flow transitions to laminar

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)

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
Modelica.Units.SI.HeatFlowRateQ1_flow (from StaticFourPortHeatMassExchanger)Heat transferred into the medium 1
Medium1.MassFlowRatemWat1_flow (from StaticFourPortHeatMassExchanger)Moisture mass flow rate added to the medium 1
Modelica.Units.SI.HeatFlowRateQ2_flow (from StaticFourPortHeatMassExchanger)Heat transferred into the medium 2
Medium2.MassFlowRatemWat2_flow (from StaticFourPortHeatMassExchanger)Moisture mass flow rate added to the medium 2
Medium1.TemperatureT_in1if allowFlowReversal1 then fra_a1*Medium1.temperature(state_a1_inflow) + fra_b1*Medium1.temperature(state_b1_inflow) else Medium1.temperature(state_a1_inflow)Inlet temperature medium 1
Medium2.TemperatureT_in2if allowFlowReversal2 then fra_a2*Medium2.temperature(state_a2_inflow) + fra_b2*Medium2.temperature(state_b2_inflow) else Medium2.temperature(state_a2_inflow)Inlet temperature medium 2
Modelica.Units.SI.ThermalConductanceC1_flowabs(m1_flow)*(if allowFlowReversal1 then fra_a1*Medium1.specificHeatCapacityCp(state_a1_inflow) + fra_b1*Medium1.specificHeatCapacityCp(state_b1_inflow) else Medium1.specificHeatCapacityCp(state_a1_inflow))Heat capacity flow rate medium 1
Modelica.Units.SI.ThermalConductanceC2_flowabs(m2_flow)*(if allowFlowReversal2 then fra_a2*Medium2.specificHeatCapacityCp(state_a2_inflow) + fra_b2*Medium2.specificHeatCapacityCp(state_b2_inflow) else Medium2.specificHeatCapacityCp(state_a2_inflow))Heat capacity flow rate medium 2
Modelica.Units.SI.ThermalConductanceCMin_flowmin(C1_flow, C2_flow)Minimum heat capacity flow rate
Modelica.Units.SI.HeatFlowRateQMax_flowCMin_flow*(T_in2 - T_in1)Maximum heat flow rate into medium 1

Revisions

  • February 21, 2019, by Filip Jorissen:
    Revised implementation of all equations such that a binding equation is used. I.e. we set the variable value at the variable definition instead of using the equation section. This allows overwriting the equation when extending the model.
    See #1102.
  • April 30, 2018, by Filip Jorissen:
    Set prescribedHeatFlowRate1=true and prescribedHeatFlowRate2=true.
    See #907.
  • June 9, 2015 by Michael Wetter:
    Changed type of T_in1 and T_in2 to Medium1.Temperature and Medium2.Temperature to avoid an error because of conflicting start values if Buildings.Examples.ChillerPlant.BaseClasses.Controls.Examples.ChillerSetPointControl is translated using pedantic mode in Dymola 2016. This is for #426.
  • October 8, 2011, by Michael Wetter:
    Set show_T=false to avoid state events near zero flow.
  • August 31, 2011, by Michael Wetter:
    Removed unused variables gai1 and gai2.
  • February 12, 2010, by Michael Wetter:
    Changed model structure to implement effectiveness-NTU model.
  • January 28, 2010, by Michael Wetter:
    Added regularization near zero flow.
  • October 2, 2009, by Michael Wetter:
    Changed computation of inlet temperatures to use state_*_inflow which is already known in base class.
  • April 28, 2008, by Michael Wetter:
    First implementation.