modelConstantEffectiveness

Heat and moisture exchanger with constant effectiveness

Extends from Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectiveness (Partial model to implement heat exchangers based on effectiveness model).

Information

Model for a heat and moisture exchanger with constant effectiveness.

This model transfers heat and moisture in the amount of

  QSen = epsS * Q_max,
  m    = epsL * mWat_max,

where epsS and epsL are constant effectiveness for the sensible and latent heat transfer, Q_max is the maximum sensible heat that can be transferred and mWat_max is the maximum moisture that can be transferred.

For a sensible heat exchanger, use Buildings.Fluid.HeatExchangers.ConstantEffectiveness instead of this model.

This model can only be used with medium models that define the integer constant Water which needs to be equal to the index of the water mass fraction in the species vector.

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
Modelica.Units.SI.EfficiencyepsS0.8Sensible heat exchanger effectiveness
Modelica.Units.SI.EfficiencyepsL0.8Latent heat exchanger effectiveness
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)
Realn1 (from FourPortFlowResistanceParameters)2Flow exponent for side 1, n=1 for laminar, n=2 for turbulent
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)
Realn2 (from FourPortFlowResistanceParameters)2Flow exponent for side 2, n=1 for laminar, n=2 for turbulent
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_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.TemperatureT_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.ThermalConductanceC1_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.ThermalConductanceC2_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.ThermalConductanceCMin_flow (from PartialEffectiveness)min(C1_flow, C2_flow)Minimum heat capacity flow rate
Modelica.Units.SI.HeatFlowRateQMax_flow (from PartialEffectiveness)CMin_flow*(T_in2 - T_in1)Maximum heat flow rate into medium 1
Modelica.Units.SI.HeatFlowRateQLat_flowLatent heat exchange from medium 2 to medium 1
Medium1.MassFractionX_w_in1Inlet water mass fraction of medium 1
Medium2.MassFractionX_w_in2Inlet water mass fraction of medium 2
Modelica.Units.SI.MassFlowRatemWat_flowWater flow rate from medium 2 to medium 1
Modelica.Units.SI.MassFlowRatemMax_flowMaximum water flow rate from medium 2 to medium 1

Revisions

  • April 30, 2018, by Filip Jorissen:
    Set final prescribedHeatFlowRate1=true and final prescribedHeatFlowRate2=true.
    See #907.
  • April 11, 2017, by Michael Wetter:
    Corrected bug as Q1_flow did not include latent heat flow rate.
    This is for issue Buildings #704.
  • October 14, 2013 by Michael Wetter:
    Replaced access to constant Medium1.Water by introducing the parameter i1_w, and used a similar construct for Medium2. This avoids an error during model check as these constants are not known in the partial medium model.
  • August 13, 2013 by Michael Wetter:
    Corrected error in the documentation.
  • July 30, 2013 by Michael Wetter:
    Updated model to use new variable mWat_flow in the base class.
  • January 28, 2010, by Michael Wetter:
    Added regularization near zero flow.
  • October 21, 2008, by Michael Wetter:
    First implementation, based on Buildings.Fluid.HeatExchangers.ConstantEffectiveness.