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.0 | 268.4 | 38.1 | FAIL — pressure |
| 32.5 | 259.7 | 39.0 | FAIL — pressure |
| 35.0 | 251.2 | 40.2 | FAIL — pressure |
| 37.5 | 243.6 | 41.5 | FAIL — pressure |
| 40.0 | 236.9 | 42.8 | PASS |
| 42.5 | 230.1 | 44.3 | PASS |
| 45.0 | 223.8 | 46.0 | FAIL — fill time |
| 47.5 | 217.9 | 47.9 | FAIL — fill time |
| 50.0 | 212.3 | 50.1 | FAIL — 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.
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.
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.
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.