modelWetCoilDiscretized

Coil with discretization along the flow paths and humidity condensation

Extends from DryCoilDiscretized (Coil with discretization along the flow paths and no humidity condensation).

Information

Model of a discretized coil with humidity condensation. This model is identical to Buildings.Fluid.HeatExchangers.DryCoilDiscretized but in addition, the mass transfer from fluid 2 to the metal is computed. The mass transfer is computed using a similarity law between heat and mass transfer, as implemented by the model Buildings.Fluid.HeatExchangers.BaseClasses.MassExchange. See this model for details.

This model can only be used with medium models that implement the function enthalpyOfLiquid and that contain an integer variable Water whose value is the element number where the water vapor is stored in the species concentration vector. Examples for such media are Buildings.Media.Air and Modelica.Media.Air.MoistAir.

Parameters

TypeNameDefaultDescription
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
Booleanuse_dh1 (from DryCoilDiscretized)falseSet to true to specify hydraulic diameter for pipe pressure drop
Booleanuse_dh2 (from DryCoilDiscretized)falseSet to true to specify hydraulic diameter for duct pressure drop)
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
Booleaninitialize_p1 (from DryCoilDiscretized)not Medium1.singleStateSet to true to initialize the pressure of volume 1
Booleaninitialize_p2 (from DryCoilDiscretized)not Medium2.singleStateSet to true to initialize the pressure of volume 2
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
RealReC_1 (from DryCoilDiscretized)4000Reynolds number where transition to turbulence starts inside pipes
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
RealReC_2 (from DryCoilDiscretized)4000Reynolds number where transition to turbulence starts inside ducts
Heat transfer
BooleanairSideTemperatureDependent (from DryCoilDiscretized)falseSet to false to make air-side hA independent of temperature
BooleanwaterSideFlowDependent (from DryCoilDiscretized)falseSet to false to make water-side hA independent of mass flow rate
BooleanairSideFlowDependent (from DryCoilDiscretized)falseSet to false to make air-side hA independent of mass flow rate
BooleanwaterSideTemperatureDependent (from DryCoilDiscretized)falseSet to false to make water-side hA independent of temperature
Realn_w (from DryCoilDiscretized)0.85Water-side exponent for convective heat transfer coefficient, h~m_flow^n_w
Realn_a (from DryCoilDiscretized)0.8Air-side exponent for convective heat transfer coefficient, h~m_flow^n_a
General › Nominal condition
Modelica.Units.SI.ThermalConductanceUA_nominal (from DryCoilDiscretized)Thermal conductance at nominal flow, used to compute heat capacity
Geometry
IntegernReg (from DryCoilDiscretized)2Number of registers
IntegernPipPar (from DryCoilDiscretized)3Number of parallel pipes in each register
IntegernPipSeg (from DryCoilDiscretized)4Number of pipe segments per register used for discretization
Modelica.Units.SI.Lengthdh1 (from DryCoilDiscretized)0.025Hydraulic diameter for a single pipe
Modelica.Units.SI.Lengthdh2 (from DryCoilDiscretized)1Hydraulic diameter for duct
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from DryCoilDiscretized)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialFormulation of energy balance
Modelica.Units.SI.Timetau1 (from DryCoilDiscretized)20Time constant at nominal flow for medium 1
Modelica.Units.SI.Timetau2 (from DryCoilDiscretized)10Time constant at nominal flow for medium 2
Modelica.Units.SI.Timetau_m (from DryCoilDiscretized)20Time constant of metal at nominal UA value
Heat transfer › Nominal condition
Realr_nominal (from DryCoilDiscretized)0.5Ratio between air-side and water-side convective heat transfer coefficient
General › Initialization
Modelica.Units.SI.MassFlowRatemStart_flow_a1 (from DryCoilDiscretized)m1_flow_nominalGuess value for mass flow rate at port_a1
Modelica.Units.SI.MassFlowRatemStart_flow_a2 (from DryCoilDiscretized)m2_flow_nominalGuess value for mass flow rate at port_a2

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 DryCoilDiscretized)sum(hexReg[i].Q1_flow for i in 1:nReg)Heat transferred from solid into medium 1
Modelica.Units.SI.HeatFlowRateQ2_flow (from DryCoilDiscretized)sum(hexReg[i].Q2_flow for i in 1:nReg)Heat transferred from solid into medium 2
Buildings.Fluid.HeatExchangers.BaseClasses.CoilRegister[nReg]hexReg (from DryCoilDiscretized)Heat exchanger register
Buildings.Fluid.HeatExchangers.BaseClasses.PipeManifoldFixedResistancepipMan_a (from DryCoilDiscretized)Pipe manifold at port a
Buildings.Fluid.HeatExchangers.BaseClasses.PipeManifoldNoResistancepipMan_b (from DryCoilDiscretized)Pipe manifold at port b
Buildings.Fluid.HeatExchangers.BaseClasses.DuctManifoldNoResistanceducMan_b (from DryCoilDiscretized)Duct manifold at port b
Buildings.Fluid.HeatExchangers.BaseClasses.DuctManifoldFixedResistanceducMan_a (from DryCoilDiscretized)Duct manifold at port a
BaseClasses.HADryCoilhA (from DryCoilDiscretized)Model for convective heat transfer coefficient
Modelica.Units.SI.HeatFlowRateQSen2_flowQ2_flow - QLat2_flowSensible heat input into air stream (negative if air is cooled)
Modelica.Units.SI.HeatFlowRateQLat2_flowBuildings.Utilities.Psychrometrics.Constants.h_fg*mWat_flowLatent heat input into air (negative if air is dehumidified)
RealSHRQSen2_flow/noEvent(if (Q2_flow > 1E-6 or Q2_flow < -1E-6) then Q2_flow else 1)Sensible to total heat ratio
Modelica.Units.SI.MassFlowRatemWat_flowsum(hexReg[:].ele[:, :].vol2.mWat_flow)Water flow rate

Revisions

  • June 22, 2026, by Michael Wetter:
    Updated Dialog annotations, and revised heat exchanger models to consistently expose parameters r_nominal, n_w and n_a.
    This is for #4620.
  • July 5, 2022, by Antoine Gautier:
    Restored the addition of heat to mas.T in Buildings.Fluid.HeatExchangers.BaseClasses.HexElementLatent.
    This is for #3065.
  • May 26, 2022, by Michael Wetter:
    Removed addition of heat to mas.T in Buildings.Fluid.HeatExchangers.BaseClasses.HexElementLatent to correct latent heat exchange calculation.
    This is for #3027.
  • January 12, 2019, by Michael Wetter:
    Corrected wrong use of each.
  • April 14, 2017, by David Blum:
    Added heat of condensation to coil surface heat balance and removed it from the air stream. This gives higher coil surface temperature and avoids overestimating the latent heat ratio that was observed in the previous implementation. The code change was in Buildings.Fluid.HeatExchangers.BaseClasses.HexElementLatent.
    This is for #711.
  • April 12, 2017, by Michael Wetter:
    Added new variables QSen2_flow, QLat2_flow and SHR.
  • July 29, 2016, by Michael Wetter:
    Redeclared Medium2 to be Modelica.Media.Interfaces.PartialCondensingGases because it is used in vol2, which requires the medium to extend from this subclass.
    See also issue 547.
  • June 29, 2014, by Michael Wetter:
    Removed parameter dl which is no longer needed.
  • December 13, 2013, by Michael Wetter:
    Corrected wrong connection connect(hexReg[nReg].port_b1, pipMan_b.port_b) to connect(hexReg[nReg].port_a1, pipMan_b.port_b) in the base class Buildings.Fluid.HeatExchangers.DryCoilDiscretized. This closes issue https://github.com/lbl-srg/modelica-buildings/issues/194, which caused the last register to have no liquid flow.
  • September 10, 2008 by Michael Wetter:
    Added values for stateSelect attributes.
  • August 13, 2008 by Michael Wetter:
    First implementation.