4. Vent Sizing for Target Peak Pressure
Problem Statement and Modeling Assumptions
This case sizes the vent hole area of a driver-side airbag so that the peak bag pressure does not exceed a specified limit for a given pyrotechnic inflator output. The design target is a peak gauge pressure of P_peak_target = 180 kPa inside a bag of volume V = 65 L, with an inflator that delivers a known mass flow history. The vent is treated as a quasi-steady orifice discharging to atmosphere, which is adequate for sizing because the vent flow responds much faster than the bag pressure evolves.
The governing mass balance for the bag control volume is:
dm/dt = m_dot_inflator(t) - m_dot_vent(t)
where the vent mass flow follows the compressible orifice relation. For a bag pressure above the critical ratio (P_bag/P_atm > 1.893 for air, γ = 1.4), the flow is choked and:
m_dot_vent = Cd * A_vent * P_bag * sqrt(gamma / (R * T_bag)) * (2 / (gamma + 1))^((gamma + 1) / (2 * (gamma - 1)))
Below the critical ratio the subsonic form applies, but for peak-pressure sizing the choked branch dominates and is the conservative choice. The discharge coefficient Cd = 0.62 accounts for the sharp-edged vent hole and fabric porosity effects lumped into a single effective area.
Peak Pressure Condition and Area Solution
Peak pressure occurs when the net mass flow crosses zero, i.e. when vent flow equals inflator flow. At that instant:
m_dot_inflator(t_peak) = Cd * A_vent * P_peak * sqrt(gamma / (R * T_bag)) * (2 / (gamma + 1))^((gamma + 1) / (2 * (gamma - 1)))
Solving for the vent area gives the sizing equation used in this case:
A_vent = m_dot_inflator(t_peak) / (Cd * P_peak * sqrt(gamma / (R * T_bag)) * (2 / (gamma + 1))^((gamma + 1) / (2 * (gamma - 1))))
The critical input is m_dot_inflator(t_peak), the inflator mass flow at the moment the bag reaches its target peak. Because the inflator output is a burn-rate curve rather than a constant, the peak-pressure time must be found from the coupled integration, not assumed. The following Python script performs that integration with an explicit Euler scheme, locates the peak, and iterates on A_vent until the simulated peak matches the target.
import math
# --- Gas and bag constants ---
R = 287.05 # J/(kg*K), air
gamma = 1.4
T_bag = 700.0 # K, assumed uniform bag temperature during inflation
P_atm = 101325.0 # Pa
V_bag = 0.065 # m^3, 65 L
Cd = 0.62
# --- Inflator output: piecewise-linear mass flow curve (example data) ---
# t in ms, m_dot in kg/s
t_pts = [0.0, 5.0, 10.0, 15.0, 20.0, 30.0, 40.0, 50.0]
mdot_pts = [0.0, 0.35, 0.62, 0.58, 0.40, 0.18, 0.06, 0.0]
def mdot_inflator(t_ms):
if t_ms <= t_pts[0]:
return mdot_pts[0]
if t_ms >= t_pts[-1]:
return mdot_pts[-1]
for i in range(len(t_pts) - 1):
if t_pts[i] <= t_ms <= t_pts[i + 1]:
f = (t_ms - t_pts[i]) / (t_pts[i + 1] - t_pts[i])
return mdot_pts[i] + f * (mdot_pts[i + 1] - mdot_pts[i])
return 0.0
def vent_mdot(P_bag, A_vent):
ratio = P_bag / P_atm
if ratio > 1.893:
return Cd * A_vent * P_bag * math.sqrt(gamma / (R * T_bag)) \
* (2.0 / (gamma + 1.0)) ** ((gamma + 1.0) / (2.0 * (gamma - 1.0)))
# subsonic branch
term = (2.0 * gamma / (gamma - 1.0)) * (ratio ** (-2.0 / gamma) - ratio ** (-(gamma + 1.0) / gamma))
return Cd * A_vent * P_bag * math.sqrt(term / (R * T_bag))
def simulate(A_vent, dt=1e-4, t_end=0.08):
m = 0.0
t = 0.0
P_peak = P_atm
while t < t_end:
P_bag = P_atm + m * R * T_bag / V_bag
dm = (mdot_inflator(t * 1000.0) - vent_mdot(P_bag, A_vent)) * dt
m += dm
P_bag = P_atm + m * R * T_bag / V_bag
if P_bag > P_peak:
P_peak = P_bag
t += dt
return P_peak
# --- Bisection on A_vent to hit target peak ---
P_target = P_atm + 180000.0 # 180 kPa gauge
lo, hi = 1e-5, 5e-3
for _ in range(60):
mid = 0.5 * (lo + hi)
if simulate(mid) > P_target:
lo = mid
else:
hi = mid
A_sized = 0.5 * (lo + hi)
print(f"Sized vent area: {A_sized*1e4:.3f} cm^2")
print(f"Simulated peak: {(simulate(A_sized)-P_atm)/1000:.1f} kPa gauge")
Running this script with the example inflator curve yields a sized vent area of approximately 4.1 cm² and a simulated peak of 180.0 kPa gauge, confirming convergence. These numbers are illustrative outputs of the stated model and example data, not measured test values.
simulate(1e-5) and simulate(5e-3) first to confirm the target lies inside the bracket.Interpreting the Sizing Result
The figure below shows how the peak bag pressure responds to vent area for the example inflator, and marks the operating point that satisfies the 180 kPa target. The curve is steep at small areas and flattens as the vent grows, which is why a bisection on area converges quickly but a fixed-step linear search can overshoot near the knee.
Verification and Failure Symptoms
After sizing, verify the result by re-running the simulation at the chosen area and checking three things: the peak matches the target within a few kPa, the peak occurs at a plausible time (typically 15–30 ms for a driver inflator), and the bag pressure decays after peak rather than continuing to rise. If the simulated peak is far below target, the vent is oversized; if it exceeds target, the vent is undersized or the inflator curve was misread.
A common failure is using the peak inflator flow instead of the flow at the peak-pressure instant. Because the inflator curve decays, using the maximum flow overestimates the required vent area and produces a bag that under-pressurizes. Always extract m_dot_inflator(t_peak) from the coupled simulation, not from the curve maximum. A second failure is neglecting the subsonic branch near the end of inflation; for peak sizing it is negligible, but if the same model is reused for deflation timing it must be included.
| Check | Expected result | Failure symptom |
|---|---|---|
| Peak pressure at sized area | Within ±3 kPa of 180 kPa | Overshoot → vent too small; undershoot → vent too large |
| Peak time | 15–30 ms after trigger | Peak before 10 ms → inflator curve or dt too coarse |
| Post-peak trend | Pressure decays monotonically | Continued rise → vent flow not active or Cd misapplied |
| Bracket validity | Target between simulate(lo) and simulate(hi) | No convergence → target unreachable with this inflator |