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
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | prescribedHeatFlowRate1 (from StaticFourPortHeatMassExchanger) | false | Set to true if the heat flow rate into fluid 1 is not a function of the component temperature |
| Boolean | prescribedHeatFlowRate2 (from StaticFourPortHeatMassExchanger) | false | Set to true if the heat flow rate into fluid 2 is not a function of the component temperature |
| Boolean | homotopyInitialization (from StaticFourPortHeatMassExchanger) | true | = true, use homotopy method |
| Boolean | sensibleOnly1 (from StaticFourPortHeatMassExchanger) | Set to true if sensible exchange only for medium 1 | |
| Boolean | sensibleOnly2 (from StaticFourPortHeatMassExchanger) | Set to true if sensible exchange only for medium 2 | |
| Assumptions | |||
| Boolean | allowFlowReversal1 (from PartialFourPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 1 |
| Boolean | allowFlowReversal2 (from PartialFourPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal for medium 2 |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m1_flow_nominal (from PartialFourPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.MassFlowRate | m2_flow_nominal (from PartialFourPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dp1_nominal (from FourPortFlowResistanceParameters) | Pressure difference | |
| Modelica.Units.SI.PressureDifference | dp2_nominal (from FourPortFlowResistanceParameters) | Pressure difference | |
| Advanced | |||
| Medium1.MassFlowRate | m1_flow_small (from PartialFourPortInterface) | 1E-4*abs(m1_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Medium2.MassFlowRate | m2_flow_small (from PartialFourPortInterface) | 1E-4*abs(m2_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialFourPortInterface) | false | = true, if actual temperature at port is computed |
| Flow resistance › Medium 1 | |||
| Boolean | computeFlowResistance1 (from FourPortFlowResistanceParameters) | true | =true, compute flow resistance. Set to false to assume no friction |
| Boolean | from_dp1 (from FourPortFlowResistanceParameters) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Boolean | linearizeFlowResistance1 (from FourPortFlowResistanceParameters) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM1 (from FourPortFlowResistanceParameters) | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
| Flow resistance › Medium 2 | |||
| Boolean | computeFlowResistance2 (from FourPortFlowResistanceParameters) | true | =true, compute flow resistance. Set to false to assume no friction |
| Boolean | from_dp2 (from FourPortFlowResistanceParameters) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Boolean | linearizeFlowResistance2 (from FourPortFlowResistanceParameters) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM2 (from FourPortFlowResistanceParameters) | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a1 (from PartialFourPort) | Fluid connector a1 (positive design flow direction is from port_a1 to port_b1) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b1 (from PartialFourPort) | Fluid connector b1 (positive design flow direction is from port_a1 to port_b1) | |
| Modelica.Fluid.Interfaces.FluidPort_a | port_a2 (from PartialFourPort) | Fluid connector a2 (positive design flow direction is from port_a2 to port_b2) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b2 (from PartialFourPort) | Fluid connector b2 (positive design flow direction is from port_a2 to port_b2) |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Medium1.MassFlowRate | m1_flow (from PartialFourPortInterface) | port_a1.m_flow | Mass flow rate from port_a1 to port_b1 (m1_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp1 (from PartialFourPortInterface) | port_a1.p - port_b1.p | Pressure difference between port_a1 and port_b1 |
| Medium2.MassFlowRate | m2_flow (from PartialFourPortInterface) | port_a2.m_flow | Mass flow rate from port_a2 to port_b2 (m2_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp2 (from PartialFourPortInterface) | port_a2.p - port_b2.p | Pressure difference between port_a2 and port_b2 |
| Medium1.ThermodynamicState | sta_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.ThermodynamicState | sta_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.ThermodynamicState | sta_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.ThermodynamicState | sta_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.HeatFlowRate | Q1_flow (from StaticFourPortHeatMassExchanger) | Heat transferred into the medium 1 | |
| Medium1.MassFlowRate | mWat1_flow (from StaticFourPortHeatMassExchanger) | Moisture mass flow rate added to the medium 1 | |
| Modelica.Units.SI.HeatFlowRate | Q2_flow (from StaticFourPortHeatMassExchanger) | Heat transferred into the medium 2 | |
| Medium2.MassFlowRate | mWat2_flow (from StaticFourPortHeatMassExchanger) | Moisture mass flow rate added to the medium 2 | |
| Medium1.Temperature | T_in1 | if 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.Temperature | T_in2 | if 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.ThermalConductance | C1_flow | abs(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.ThermalConductance | C2_flow | abs(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.ThermalConductance | CMin_flow | min(C1_flow, C2_flow) | Minimum heat capacity flow rate |
| Modelica.Units.SI.HeatFlowRate | QMax_flow | CMin_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:
SetprescribedHeatFlowRate1=trueandprescribedHeatFlowRate2=true.
See #907. -
June 9, 2015 by Michael Wetter:
Changed type ofT_in1andT_in2toMedium1.TemperatureandMedium2.Temperatureto 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:
Setshow_T=falseto avoid state events near zero flow. -
August 31, 2011, by Michael Wetter:
Removed unused variablesgai1andgai2. -
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 usestate_*_inflowwhich is already known in base class. -
April 28, 2008, by Michael Wetter:
First implementation.