modelDryCoilDiscretized
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
| Type | Name | Default | Description |
|---|---|---|---|
| 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 | |
| Modelica.Units.SI.Time | tau1 | 20 | Time constant at nominal flow for medium 1 |
| Modelica.Units.SI.Time | tau2 | 10 | Time constant at nominal flow for medium 2 |
| Modelica.Units.SI.Time | tau_m | 20 | Time constant of metal at nominal UA value |
| 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 |
| Boolean | initialize_p1 | not Medium1.singleState | Set to true to initialize the pressure of volume 1 |
| Boolean | initialize_p2 | not Medium2.singleState | Set to true to initialize the pressure of volume 2 |
| Boolean | use_dh1 | false | Set to true to specify hydraulic diameter for pipe pressure drop |
| Boolean | use_dh2 | false | Set to true to specify hydraulic diameter for duct pressure drop) |
| Real | ReC_1 | 4000 | Reynolds number where transition to turbulence starts inside pipes |
| Real | ReC_2 | 4000 | Reynolds number where transition to turbulence starts inside ducts |
| 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 |
| Heat transfer | |||
| Boolean | airSideTemperatureDependent | false | Set to false to make air-side hA independent of temperature |
| Boolean | waterSideFlowDependent | false | Set to false to make water-side hA independent of mass flow rate |
| Boolean | airSideFlowDependent | false | Set to false to make air-side hA independent of mass flow rate |
| Boolean | waterSideTemperatureDependent | false | Set to false to make water-side hA independent of temperature |
| General › Nominal condition | |||
| Modelica.Units.SI.ThermalConductance | UA_nominal | Thermal conductance at nominal flow, used to compute heat capacity | |
| Geometry | |||
| Integer | nReg | 2 | Number of registers |
| Integer | nPipPar | 3 | Number of parallel pipes in each register |
| Integer | nPipSeg | 4 | Number of pipe segments per register used for discretization |
| Modelica.Units.SI.Length | dh1 | 0.025 | Hydraulic diameter for a single pipe |
| Modelica.Units.SI.Length | dh2 | 1 | Hydraulic diameter for duct |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Formulation of energy balance |
| General › Initialization | |||
| Modelica.Units.SI.MassFlowRate | mStart_flow_a1 | m1_flow_nominal | Guess value for mass flow rate at port_a1 |
| Modelica.Units.SI.MassFlowRate | mStart_flow_a2 | m2_flow_nominal | Guess value for mass flow rate at port_a2 |
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 | sum(hexReg[i].Q1_flow for i in 1:nReg) | Heat transferred from solid into medium 1 |
| Modelica.Units.SI.HeatFlowRate | Q2_flow | sum(hexReg[i].Q2_flow for i in 1:nReg) | Heat transferred from solid into medium 2 |
| Buildings.Fluid.HeatExchangers.BaseClasses.CoilRegister[nReg] | hexReg | Heat exchanger register | |
| Buildings.Fluid.HeatExchangers.BaseClasses.PipeManifoldFixedResistance | pipMan_a | Pipe manifold at port a | |
| Buildings.Fluid.HeatExchangers.BaseClasses.PipeManifoldNoResistance | pipMan_b | Pipe manifold at port b | |
| Buildings.Fluid.HeatExchangers.BaseClasses.DuctManifoldNoResistance | ducMan_b | Duct manifold at port b | |
| Buildings.Fluid.HeatExchangers.BaseClasses.DuctManifoldFixedResistance | ducMan_a | Duct manifold at port a | |
| BaseClasses.HADryCoil | hA | Model for convective heat transfer coefficient |
Revisions
-
June 22, 2023 by Hongxiang Fu:
Corrected the modification ofhexReg[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 aconstantto aparameter.
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:
Changedinitalize_pfrom aparameterto aconstant. 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 aconstant. -
August 10, 2014, by Michael Wetter:
Removed parameterm1_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 theminattribute, 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 parametersinitialize_p1andinitialize_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 parameterdlwhich is no longer needed. -
June 26, 2014, by Michael Wetter:
Removed parametersenergyDynamics1,energyDynamics2andductConnectionDynamics, and used instead of these parameters the new parameterenergyDynamics. This was done as this complexity is not required. -
December 13, 2013, by Michael Wetter:
Corrected wrong connectionconnect(hexReg[nReg].port_b1, pipMan_b.port_b)toconnect(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:
Setshow_T=falseto avoid state events near zero flow. -
March 24, 2011, by Michael Wetter:
Replaced integer divisionnReg/2bydiv(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.