modelDoorOpen

Door model for bi-directional air flow between rooms

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

ab,p = CD w h (2/ρ0)0.5 Δpm,

where 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 ab,t for flow from thermal zone a to b, and 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,

ba = ρ0   (-V̇ab,p/2 +   V̇ba,t),

where we simplified the calculation by using the density ρ0. To calculate 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,

ab,t = CD0h/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

Δρ = ρab ≈ ρ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

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

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
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
Modelica.Units.SI.PressureDifferencedp_turbulent (from Door)0.01Pressure difference where laminar and turbulent flow relation coincide
Advanced › Diagnostics
Booleanshow_T (from PartialFourPortInterface)false= true, if actual temperature at port is computed
Geometry
Modelica.Units.SI.LengthwOpe (from Door)0.9Width of opening
Modelica.Units.SI.LengthhOpe (from Door)2.1Height of opening
Orifice characteristics
RealCD0.65Discharge coefficient
Realm0.5Flow coefficient

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.VolumeFlowRateVAB_flow (from Door)Volume flow rate from A to B if positive
Modelica.Units.SI.VolumeFlowRateVBA_flow (from Door)Volume flow rate from B to A if positive
Modelica.Units.SI.VelocityvAB (from Door)Average velocity from A to B
Modelica.Units.SI.VelocityvBA (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.