modelDoorOpen
Extends from Buildings.Airflow.Multizone.BaseClasses.Door (Partial door model for bi-directional flow).
Information
Model for bi-directional air flow through a large opening such as a door.
In this model, the air flow is composed of two components, a one-directional bulk air flow due to static pressure difference in the adjoining two thermal zones, and a two-directional airflow due to temperature-induced differences in density of the air in the two thermal zones. Although turbulent air flow is a nonlinear phenomenon, the model is based on the simplifying assumption that these two air flow rates can be superposed. (Superposition is only exact for laminar flow.) This assumption is made because it leads to a simple model and because there is significant uncertainty and assumptions anyway in such simplified a model for bidirectional flow through a door.
Main equations
The air flow rate due to static pressure difference is
V̇ab,p = CD w h (2/ρ0)0.5 Δpm,
where V̇ is the volumetric air flow rate, CD is the discharge coefficient, w and h are the width and height of the opening, ρ0 is the mass density at the medium default pressure, temperature and humidity, m is the flow exponent and Δp = pa - pb is the static pressure difference between the thermal zones. For this model explanation, we will assume pa > pb. For turbulent flow, m=1/2 and for laminar flow m=1.
The air flow rate due to temperature difference in the thermal zones is V̇ab,t for flow from thermal zone a to b, and V̇ba,t for air flow rate from thermal zone b to a. The model has two air flow paths to allow bi-directional air flow. The mass flow rates at these two air flow paths are
ṁa1 = ρ0 (+V̇ab,p/2 + V̇ab,t),
and, similarly,
V̇ba = ρ0 (-V̇ab,p/2 + V̇ba,t),
where we simplified the calculation by using the density ρ0. To calculate V̇ba,t, we again use the density ρ0 and because of this simplification, we can write
ṁab,t = -ṁba,t = ρ0 V̇ab,t = -ρ0 V̇ba,t,
from which follows that the neutral height, e.g., the height where the air flow rate due to flow induced by temperature difference is zero, is at h/2. Hence,
V̇ab,t = CD ∫0h/2 w v(z) dz,
where v(z) is the velocity at height z. From the Bernoulli equation, we obtain
v(z) = (2 g z Δρ ⁄ ρ0)1/2.
The density difference can be written as
Δρ = ρa-ρb ≈ ρ0 (Tb - Ta) ⁄ T0,
where we used ρa = p0 /(R Ta) and Ta Tb ≈ T02. Substituting this expression into the integral and integrating from 0 to z yields
V̇ab,t = 1⁄3 CD w h (g h ⁄ (R T0 ρ0))1/2 Δp1/2.
The above equation is equivalent to (6) in Brown and Solvason (1962).
Main assumptions
The main assumptions are as follows:
-
The air flow rates due to static pressure difference and due to temperature-difference can be superposed.
-
For buoyancy-driven air flow, a constant density can be used to convert air volume flow rate to air mass flow rate.
From these assumptions follows that the neutral height for buoyancy-driven air flow is at half of the height of the opening.
Notes
For a more detailed model, use Buildings.Airflow.Multizone.DoorDiscretizedOpen.
References
-
Brown, W.G. and K. R. Solvason.
Natural Convection through rectangular openings in partitions - 1.
Int. Journal of Heat and Mass Transfer.
Vol. 5, p. 859-868. 1962.
doi:10.1016/0017-9310(62)90184-9.
Also available at https://nrc-publications.canada.ca/eng/view/ft/?id=081c0ace-7c31-449c-9b3b-e6c14864b196.
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 | |
| 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 |
| Modelica.Units.SI.PressureDifference | dp_turbulent (from Door) | 0.01 | Pressure difference where laminar and turbulent flow relation coincide |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialFourPortInterface) | false | = true, if actual temperature at port is computed |
| Geometry | |||
| Modelica.Units.SI.Length | wOpe (from Door) | 0.9 | Width of opening |
| Modelica.Units.SI.Length | hOpe (from Door) | 2.1 | Height of opening |
| Orifice characteristics | |||
| Real | CD | 0.65 | Discharge coefficient |
| Real | m | 0.5 | Flow coefficient |
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.VolumeFlowRate | VAB_flow (from Door) | Volume flow rate from A to B if positive | |
| Modelica.Units.SI.VolumeFlowRate | VBA_flow (from Door) | Volume flow rate from B to A if positive | |
| Modelica.Units.SI.Velocity | vAB (from Door) | Average velocity from A to B | |
| Modelica.Units.SI.Velocity | vBA (from Door) | Average velocity from B to A |
Revisions
-
September 19, 2025, by Michael Wetter:
Revised implementation to improve computing efficiency if flow exponent is 0.5.
This is for IBPSA, #2043. -
January 22, 2020, by Michael Wetter:
Revised buoyancy-driven flow based on Brown and Solvason (1962). -
January 19, 2020, by Klaas De Jonge:
Revised influence of stack effect. -
October 6, 2020, by Michael Wetter:
First implementation for #1353.