2. Vent Hole Diameter Sweep for Peak Pressure Control

Why a Diameter Sweep Beats a Single Guess

In the baseline model from the previous case, the airbag inflates from a single gas generator through one vent hole. Peak bag pressure and fill time are both strong functions of the vent hole diameter d_vent, but they move in opposite directions: enlarging the hole bleeds gas faster and lowers peak pressure, yet it also removes energy that would otherwise inflate the bag, so the fill time grows. The design task is therefore a constrained trade-off, not a single-objective minimization. A diameter sweep makes that trade-off visible across the whole feasible range and lets you pick the smallest hole that satisfies the pressure limit while still meeting the fill-time requirement.

This case assumes the baseline model is already built and validated. The sweep reuses the same gas generator mass flow profile, bag volume curve, and ambient conditions; only d_vent changes between runs. That isolation is what makes the result interpretable — any change in peak pressure or fill time is attributable to the vent area alone.

Defining the Sweep Range and Acceptance Criteria

Choose the sweep bounds so that the range brackets the expected answer. A practical starting point is to run the baseline diameter once, then extend the range roughly ±50% around it in equal steps. For a baseline d_vent = 40 mm, a 9-point sweep from 30 mm to 50 mm in 2.5 mm steps is a reasonable first pass. The acceptance criteria must be stated numerically before running anything, otherwise the sweep becomes a fishing expedition:

  • Peak pressure limit: P_peak ≤ 240 kPa (absolute), measured at the bag center node.
  • Fill time requirement: t_fill ≤ 45 ms, defined as the time to reach 90% of the steady-state bag volume.
  • Monotonic sanity check: peak pressure should decrease and fill time should increase as diameter grows; a violation signals a modeling or post-processing error, not a physical result.

These numbers are teaching values for a passenger-side bag of roughly 60 L; substitute your own program targets. The important discipline is that the limits are fixed before the sweep and applied identically to every run.

Automating the Sweep

The sweep is a parameter study, so it should be scripted rather than run by hand. The snippet below assumes a Python model function simulate_inflation(d_vent_mm) that returns a time history of bag pressure and volume — the same function used for the baseline. It writes one CSV row per diameter and applies the acceptance criteria directly, so the pass/fail decision is reproducible.

import csv

P_LIMIT_KPA = 240.0      # peak bag pressure ceiling
T_FILL_LIMIT_MS = 45.0   # 90% volume fill time ceiling
V_FRACTION = 0.90

diameters_mm = [30.0 + 2.5 * i for i in range(9)]  # 30.0 ... 50.0 mm

def evaluate(d_mm):
    t_ms, p_kpa, v_l = simulate_inflation(d_mm)   # baseline model, one parameter changed
    p_peak = max(p_kpa)
    v_final = v_l[-1]
    v_target = V_FRACTION * v_final
    t_fill = next(t for t, v in zip(t_ms, v_l) if v >= v_target)
    ok = (p_peak <= P_LIMIT_KPA) and (t_fill <= T_FILL_LIMIT_MS)
    return p_peak, t_fill, ok

rows = []
for d in diameters_mm:
    p_peak, t_fill, ok = evaluate(d)
    rows.append([d, round(p_peak, 1), round(t_fill, 2), "PASS" if ok else "FAIL"])

with open("vent_sweep.csv", "w", newline="") as f:
    w = csv.writer(f)
    w.writerow(["d_vent_mm", "p_peak_kpa", "t_fill_ms", "status"])
    w.writerows(rows)

feasible = [r for r in rows if r[3] == "PASS"]
if feasible:
    best = min(feasible, key=lambda r: r[0])   # smallest hole that passes
    print(f"Selected d_vent = {best[0]} mm, P_peak = {best[1]} kPa, t_fill = {best[2]} ms")
else:
    print("No diameter in range satisfies both criteria; widen the sweep.")

Two details matter for correctness. First, t_fill is found by scanning the volume trace for the first sample at or above 90% of the final volume of that same run — not a fixed absolute volume — because the final volume itself shifts slightly with vent area. Second, the selection rule picks the smallest passing diameter, since a smaller hole preserves more inflation energy and leaves margin on fill time for later calibration work.

Reading the Sweep Result

A representative outcome for the teaching parameters is shown below. The values are illustrative of the expected trend, not measured data from a specific solver run.

d_vent (mm)P_peak (kPa)t_fill (ms)Status
30.0268.438.1FAIL — pressure
32.5259.739.0FAIL — pressure
35.0251.240.2FAIL — pressure
37.5243.641.5FAIL — pressure
40.0236.942.8PASS
42.5230.144.3PASS
45.0223.846.0FAIL — fill time
47.5217.947.9FAIL — fill time
50.0212.350.1FAIL — fill time

The feasible window is narrow: 40.0 mm and 42.5 mm both pass, and the smallest passing diameter is 40.0 mm. Note that the baseline diameter happens to sit exactly on the pressure boundary — a useful reminder that the baseline is not automatically compliant. The fill-time limit becomes active above roughly 43 mm, so the two constraints pinch the design from both sides.

If the feasible window is empty, do not simply widen the diameter range. First check whether the gas generator mass flow profile is over-delivering; a vent hole large enough to fix an over-strong inflator will usually blow the fill-time budget. The correct fix may belong to the mass flow calibration task, not the vent geometry.

Interpreting the Pressure–Fill-Time Trade-off

The figure below plots the sweep as a constraint map rather than a table: each diameter is a point in pressure–fill-time space, the two limit lines divide the plane into feasible and infeasible regions, and the selected diameter is marked. This view makes the pinch obvious and shows how much margin remains on each constraint at the chosen point.

Vent Diameter Sweep — Constraint Map Fill time t_fill (ms) Peak pressure P_peak (kPa) 36 40 44 48 52 200 220 240 260 280 P_peak limit 240 kPa t_fill limit 45 ms FEASIBLE 30.0 32.5 35.0 37.5 40.0 ★ 42.5 45.0 47.5 50.0 increasing d_vent → pressure violation both criteria met fill-time violation

The map shows the sweep marching from upper-left (small hole, high pressure, fast fill) to lower-right (large hole, low pressure, slow fill). The feasible rectangle is bounded above by the pressure limit and on the right by the fill-time limit. The selected 40.0 mm point sits just inside the pressure boundary with about 3 kPa of margin and roughly 2 ms of fill-time margin — a deliberately conservative choice, because the next case will recalibrate the mass flow profile and may shift both quantities.

Verification and Common Failure Symptoms

Before accepting the sweep, confirm three things. First, re-run the selected diameter as a standalone case and check that its peak pressure and fill time match the sweep row to within the solver's output precision; a mismatch means the sweep loop mutated state between runs (for example, a reused solver object retaining the previous diameter). Second, verify monotonicity of both columns — a non-monotonic peak pressure almost always indicates that the pressure probe is sampling a different location or that the time step changed with geometry. Third, confirm that t_fill is computed against each run's own final volume, not a global constant.

A frequent error is reporting peak pressure from the gas generator inlet rather than the bag center. The inlet pressure is dominated by the source and barely responds to vent diameter, which makes the sweep look flat and can lead to an oversized hole being selected. Always state the probe location alongside the limit.

With the diameter fixed at 40.0 mm, the model now has a compliant vent geometry. The remaining pressure-trace mismatch against measured data is a mass flow profile problem, which is the subject of the next calibration step.