modelPlateHeatExchangerEffectivenessNTU
Extends from Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectivenessNTU (Partial model for heat exchanger with effectiveness - NTU relation and no moisture condensation).
Information
Model of a plate heat exchanger without humidity condensation. This model transfers heat in the amount of
Q̇ = Q̇max ε
ε = f(NTU, Z, flowRegime),
where Q̇max is the maximum heat that can be transferred, ε is the heat transfer effectiveness, NTU is the Number of Transfer Units, Z is the ratio of minimum to maximum capacity flow rate and flowRegime is the heat exchanger flow regime. such as parallel flow, cross flow or counter flow.
The flow regimes depend on the heat exchanger configuration. All configurations defined in Buildings.Fluid.Types.HeatExchangerConfiguration are supported.
Convective heat transfer coefficients
The convective heat transfer coefficients scale proportional to (ṁ/ṁ0)nCon, where ṁ is the mass flow rate and ṁ0 is the nominal mass flow rate. By default, the exponents are nCon=0.8 for both streams. The convective heat transfer coefficients are computed based on the UA-value, neglecting the thermal conductance of the heat exchanger material. The ratio of the convection coefficients at design conditions can be adjusted using the parameter r0=(hA)0,1 ⁄ (hA)0,2 where (hA)0,1 and (hA)0,2 are the respective products of the heat transfer coefficient times surface area. By default, the ratio r0 is computed based on the similarity law for turbulent flow, which states that the convective heat transfer coefficient h follows the proportionality law
h ∝ k (ρ v x / η)nCon1 Pr1/3,
where k is the heat conductivity of the fluid, ρ is the density, v is the flow velocity, x is the characteristic length, η is the dynamic viscosity and Pr is the Prandtl number. Under the assumption that both sides of the heat exchanger are identical, and considering that the velocity is proportional to the mass flow rate divided by the density, the ratio r0 is
r0 = (k1 (ṁ0,1 / η0,1)nCon1 Pr0,11/3) ⁄ (k2 (ṁ0,2 / η0,2)nCon2 Pr0,21/3).
This is the default setting for the parameter r_nominal.
Thus, if both sides of the heat exchanger have the same temperature difference, and the same medium, then
r0=1. However, if medium 1 is air and medium 2 is water, and the heat exchanger is designed
to have the same temperature drop for both media, then r0=0.5.
Related model
For a heat and moisture exchanger, use Buildings.Fluid.MassExchangers.ConstantEffectiveness.
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 | |
| Buildings.Fluid.Types.HeatExchangerConfiguration | configuration (from PartialEffectivenessNTU) | Heat exchanger configuration | |
| Boolean | use_dynamicFlowRegime (from PartialEffectivenessNTU) | false | If true, flow regime is determined using actual flow rates |
| Modelica.Units.SI.ThermalConductance | UA_nominal (from PartialEffectivenessNTU) | Nominal UA value | |
| Real | NTU_nominal (from PartialEffectivenessNTU) | Nominal number of transfer units | |
| Modelica.Units.SI.ThermalConductance | hA1_nominal | (1 + r_nominal)*UA_nominal | Nominal convective heat transfer coefficient for medium 1 |
| Modelica.Units.SI.ThermalConductance | hA2_nominal | hA1_nominal/r_nominal | Nominal convective heat transfer coefficient for medium 2 |
| Medium1.DynamicViscosity | eta1_default | Medium1.dynamicViscosity(sta1_default) | Dynamic viscosity |
| Medium1.ThermalConductivity | k1_default | Medium1.thermalConductivity(sta1_default) | Thermal conductivity |
| Medium1.PrandtlNumber | Pr1_default | Medium1.prandtlNumber(sta1_default) | Prandtl number |
| Medium2.DynamicViscosity | eta2_default | Medium2.dynamicViscosity(sta2_default) | Dynamic viscosity |
| Medium2.ThermalConductivity | k2_default | Medium2.thermalConductivity(sta2_default) | Thermal conductivity |
| Medium2.PrandtlNumber | Pr2_default | Medium2.prandtlNumber(sta2_default) | Prandtl number |
| 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) |
| Real | n1 (from FourPortFlowResistanceParameters) | 2 | Flow exponent for side 1, n=1 for laminar, n=2 for turbulent |
| 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) |
| Real | n2 (from FourPortFlowResistanceParameters) | 2 | Flow exponent for side 2, n=1 for laminar, n=2 for turbulent |
| 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 |
| Nominal thermal performance | |||
| Boolean | use_Q_flow_nominal (from PartialEffectivenessNTU) | true | Set to true to specify Q_flow_nominal and temperatures, or to false to specify effectiveness |
| Modelica.Units.SI.HeatFlowRate | Q_flow_nominal (from PartialEffectivenessNTU) | Nominal heat flow rate (positive for heat transfer from 1 to 2) | |
| Modelica.Units.SI.Temperature | T_a1_nominal (from PartialEffectivenessNTU) | Nominal temperature at port a1 | |
| Modelica.Units.SI.Temperature | T_a2_nominal (from PartialEffectivenessNTU) | Nominal temperature at port a2 | |
| Real | eps_nominal (from PartialEffectivenessNTU) | Nominal heat transfer effectiveness | |
| Advanced › Heat transfer coefficients | |||
| Real | r_nominal | (k1_default*(m1_flow_nominal/eta1_default)^nCon1*Pr1_default^(1/3))/(k2_default*(m2_flow_nominal/eta2_default)^nCon2*Pr2_default^(1/3)) | Ratio between convective heat transfer coefficients at nominal conditions, r_nominal = hA1_nominal/hA2_nominal |
| Real | nCon1 | 0.8 | Exponent for convective heat transfer coefficient, h1~m1_flow^n1 |
| Real | nCon2 | nCon1 | Exponent for convective heat transfer coefficient, h2~m2_flow^n2 |
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 (from PartialEffectiveness) | 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 (from PartialEffectiveness) | 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 (from PartialEffectiveness) | 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 (from PartialEffectiveness) | 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 (from PartialEffectiveness) | min(C1_flow, C2_flow) | Minimum heat capacity flow rate |
| Modelica.Units.SI.HeatFlowRate | QMax_flow (from PartialEffectiveness) | CMin_flow*(T_in2 - T_in1) | Maximum heat flow rate into medium 1 |
| Modelica.Units.SI.ThermalConductance | UA (from PartialEffectivenessNTU) | UA value | |
| Real | eps (from PartialEffectivenessNTU) | Heat exchanger effectiveness | |
| Modelica.Units.SI.ThermalConductance | hA1 | Convective heat transfer coefficient for medium 1 | |
| Modelica.Units.SI.ThermalConductance | hA2 | Convective heat transfer coefficient for medium 2 |
Revisions
-
June 19, 2026, by Michael Wetter:
Renamed exponents for convective heat transfer coefficients fromn1andn2tonCon1andnCon2.
This is for issue 4620. -
March 15, 2022, by Michael Wetter:
Introduced parameterr_nominaland exposed exponents of convective heat transfer coefficients.
This is for issue 2918. -
September 25, 2018, by Michael Wetter:
First implementation.