modelDryCoilDiscretized

Coil with discretization along the flow paths and no humidity condensation

Extends from Buildings.Fluid.Interfaces.PartialFourPortInterface (Partial model with four ports and declaration of quantities that are used by many models), Buildings.Fluid.Interfaces.FourPortFlowResistanceParameters (Parameters for flow resistance for models with four ports).

Information

Model of a discretized coil with no water vapor condensation. The coil consists of nReg registers that are perpendicular to the air flow path. Each register consists of nPipPar parallel pipes, and each pipe can be divided into nPipSeg pipe segments along the pipe length. Thus, the smallest element of the coil consists of a pipe segment. Each pipe segment is modeled by an instance of Buildings.Fluid.HeatExchangers.BaseClasses.HexElementSensible. Each element has a state variable for the metal.

If the parameter energyDynamics is different from Modelica.Fluid.Types.Dynamics.SteadyState, then a mixing volume of length dl is added to the duct connection. This can help reducing the dimension of the nonlinear system of equations.

The convective heat transfer coefficients can, for each fluid individually, be computed as a function of the flow rate and/or the temperature, or assigned to a constant. This computation is done using an instance of Buildings.Fluid.HeatExchangers.BaseClasses.HADryCoil.

In this model, the water (or liquid) flow path needs to be connected to port_a1 and port_b1, and the air flow path need to be connected to the other two ports.

To model humidity condensation, use the model Buildings.Fluid.HeatExchangers.WetCoilDiscretized instead of this model, as this model computes only sensible heat transfer.

Implementation

At very small flow rates, which may be caused when the fan is off but there is wind pressure on the building that entrains outside air through the HVAC system, large temperature differences could occur if diffusion were neglected. This model therefore approximates a small diffusion between the elements to have more uniform medium temperatures if the flow is near zero. The approximation is done using the heat conductors heaCon1 and heaCon2. As this is a rough approximation, neighboring elements are connected through these heat conduction elements, ignoring the actual geometrical configuration. Also, radiation between the coil surfaces on the air side is not modelled explicitly, but rather may be considered as approximated by these heat conductors.

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
Modelica.Units.SI.Timetau120Time constant at nominal flow for medium 1
Modelica.Units.SI.Timetau210Time constant at nominal flow for medium 2
Modelica.Units.SI.Timetau_m20Time constant of metal at nominal UA value
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_p1not Medium1.singleStateSet to true to initialize the pressure of volume 1
Booleaninitialize_p2not Medium2.singleStateSet to true to initialize the pressure of volume 2
Booleanuse_dh1falseSet to true to specify hydraulic diameter for pipe pressure drop
Booleanuse_dh2falseSet to true to specify hydraulic diameter for duct pressure drop)
RealReC_14000Reynolds number where transition to turbulence starts inside pipes
RealReC_24000Reynolds number where transition to turbulence starts inside ducts
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
Heat transfer
BooleanairSideTemperatureDependentfalseSet to false to make air-side hA independent of temperature
BooleanwaterSideFlowDependentfalseSet to false to make water-side hA independent of mass flow rate
BooleanairSideFlowDependentfalseSet to false to make air-side hA independent of mass flow rate
BooleanwaterSideTemperatureDependentfalseSet to false to make water-side hA independent of temperature
General › Nominal condition
Modelica.Units.SI.ThermalConductanceUA_nominalThermal conductance at nominal flow, used to compute heat capacity
Geometry
IntegernReg2Number of registers
IntegernPipPar3Number of parallel pipes in each register
IntegernPipSeg4Number of pipe segments per register used for discretization
Modelica.Units.SI.Lengthdh10.025Hydraulic diameter for a single pipe
Modelica.Units.SI.Lengthdh21Hydraulic diameter for duct
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamicsModelica.Fluid.Types.Dynamics.DynamicFreeInitialFormulation of energy balance
General › Initialization
Modelica.Units.SI.MassFlowRatemStart_flow_a1m1_flow_nominalGuess value for mass flow rate at port_a1
Modelica.Units.SI.MassFlowRatemStart_flow_a2m2_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_flowsum(hexReg[i].Q1_flow for i in 1:nReg)Heat transferred from solid into medium 1
Modelica.Units.SI.HeatFlowRateQ2_flowsum(hexReg[i].Q2_flow for i in 1:nReg)Heat transferred from solid into medium 2
Buildings.Fluid.HeatExchangers.BaseClasses.CoilRegister[nReg]hexRegHeat exchanger register
Buildings.Fluid.HeatExchangers.BaseClasses.PipeManifoldFixedResistancepipMan_aPipe manifold at port a
Buildings.Fluid.HeatExchangers.BaseClasses.PipeManifoldNoResistancepipMan_bPipe manifold at port b
Buildings.Fluid.HeatExchangers.BaseClasses.DuctManifoldNoResistanceducMan_bDuct manifold at port b
Buildings.Fluid.HeatExchangers.BaseClasses.DuctManifoldFixedResistanceducMan_aDuct manifold at port a
BaseClasses.HADryCoilhAModel for convective heat transfer coefficient

Revisions

  • June 22, 2023 by Hongxiang Fu:
    Corrected the modification of hexReg[nReg].m2_flow_nominal.
    This is for #3441.
  • November 4, 2017, by Michael wetter:
    Added approximation of diffusion.
    This is for Buildings, #1038.
  • October 19, 2017, by Michael Wetter:
    Changed initialization of pressure from a constant to a parameter.
    This is for Buildings, issue 1013.
  • September 8, 2017, by Michael Wetter:
    Changed computation of temperature used for hA calculation to avoid a state variable with small time constant for some model parameterizations.
    This is for Buildings, #678.
  • September 17, 2016, by Michael Wetter:
    Corrected wrong annotation.
    This is for issue 557.
  • February 5, 2015, by Michael Wetter:
    Changed initalize_p from a parameter to a constant. This is only required in finite volume models of heat exchangers (to avoid consistent but redundant initial conditions) and hence it should be set as a constant.
  • August 10, 2014, by Michael Wetter:
    Removed parameter m1_flow_nominal, as this parameter is already declared in its base class Buildings.Fluid.Interfaces.PartialFourPortInterface. This change avoids an error in OpenModelica as the two declarations had a different value for the min attribute, which is not valid in Modelica.
    This change also reorganizes the order of the declaration of constants, parameters and models.
  • July 3, 2014, by Michael Wetter:
    Added parameters initialize_p1 and initialize_p2. This is required to enable the coil models to initialize the pressure in the first volume, but not in the downstream volumes. Otherwise, the initial equations will be overdetermined, but consistent. This change was done to avoid a long information message that appears when translating models.
  • June 29, 2014, by Michael Wetter:
    Removed parameter dl which is no longer needed.
  • June 26, 2014, by Michael Wetter:
    Removed parameters energyDynamics1, energyDynamics2 and ductConnectionDynamics, and used instead of these parameters the new parameter energyDynamics. This was done as this complexity is not required.
  • 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). This closes issue https://github.com/lbl-srg/modelica-buildings/issues/194, which caused the last register to have no liquid flow.
  • October 8, 2010, by Michael Wetter:
    Set show_T=false to avoid state events near zero flow.
  • March 24, 2011, by Michael Wetter:
    Replaced integer division nReg/2 by div(nReg,2) when instantiating an array of models as the former leads to a syntax error in Dymola 7.4 FD01.
  • May 28, 2010, by Michael Wetter:
    Fixed bug in assigning pressure drops that led to too high a resistances.
  • September 10, 2008, by Michael Wetter:
    Added additional parameters.
  • September 9, 2008 by Michael Wetter:
    Propagated more parameters.
  • August 12, 2008 by Michael Wetter:
    Introduced option to compute each medium using a steady state model or a dynamic model.
  • March 25, 2008, by Michael Wetter:
    First implementation.