3. Screening Design for Airbag Vent Size and Inflator Mass Flow
Why Screen Before You Optimize
Airbag vent size and inflator mass flow are two of the strongest levers on occupant loading in a frontal impact restraint model, but they are also expensive to explore. A full factorial over five levels of each factor would require 25 LS-DYNA runs before any interaction with belt or seat parameters is even considered. A fractional factorial screening design answers a narrower but more urgent question: which of these two factors actually drives HIC and chest deflection, and does their interaction matter enough to keep in the later optimization? This case builds a two-factor, two-level screening matrix with a center point, runs it against the baseline occupant model, and interprets the main effects and interaction from the response data.
Factor Definition and Level Selection
The screening design uses two continuous factors, each at a low (−1) and high (+1) coded level, plus a center point (0) to detect curvature and provide a variance check. Levels must be physically defensible for the restraint system, not arbitrary percentages.
| Factor | LS-DYNA object / keyword | Low (−1) | Center (0) | High (+1) |
|---|---|---|---|---|
| Vent size (A) | *AIRBAG_REFERENCE_GEOMETRY vent hole area, or *DEFINE_HEX_ALE vent patch |
2 000 mm² | 3 000 mm² | 4 000 mm² |
| Inflator mass flow (B) | *AIRBAG_INFLATOR mass flow rate curve scale factor |
0.85 | 1.00 | 1.15 |
Vent area is applied by scaling the effective venting area in the airbag definition; mass flow is applied as a multiplier on the inflator mass-flow-versus-time curve so the total gas mass and fill timing shift together. Keep every other restraint parameter — belt force limiter, pretensioner timing, seat position, dummy model — frozen at the baseline values from the verified model. If those drift between runs, the screening effects become uninterpretable.
The Screening Matrix
A two-factor design with a center point needs five runs: four factorial corners plus one center replicate. The coded matrix and the corresponding physical settings are shown below. Run order should be randomized in execution to avoid confounding with solver or machine drift, even though the table lists them in standard order.
| Run | A: Vent (coded) | B: Mass flow (coded) | Vent area (mm²) | Flow scale | Purpose |
|---|---|---|---|---|---|
| 1 | −1 | −1 | 2 000 | 0.85 | Factorial corner |
| 2 | +1 | −1 | 4 000 | 0.85 | Factorial corner |
| 3 | −1 | +1 | 2 000 | 1.15 | Factorial corner |
| 4 | +1 | +1 | 4 000 | 1.15 | Factorial corner |
| 5 | 0 | 0 | 3 000 | 1.00 | Center point |
Response Extraction from LS-DYNA Output
Each run produces the same set of occupant responses, extracted from the dummy's nodout and the airbag's glstat/matsum output at a fixed 1 ms interval. The screening responses are:
- HIC36 — head injury criterion over a 36 ms window, from the head CG accelerometer.
- Chest deflection — peak chest compression in mm from the chest deflection transducer.
- Peak head acceleration — resultant head CG acceleration in g, used as a secondary check on HIC.
Extract each response with a short post-processing script so the numbers are reproducible rather than read off plots by eye. A minimal Python extraction using lasso-python or a plain nodout parser is sufficient:
import numpy as np
def hic36(a_g, dt=1e-3, window=0.036):
"""a_g: resultant head accel in g, uniform dt. Returns HIC36."""
a = np.asarray(a_g, dtype=float)
n = int(round(window / dt))
best = 0.0
for i in range(len(a) - n):
seg = a[i:i + n]
integral = np.trapz(seg, dx=dt)
hic = (integral ** 2.5) * window
best = max(best, hic)
return best
# responses per run, filled from nodout parsing
runs = {
1: {"hic": 612.0, "chest_mm": 41.2, "head_g": 78.5},
2: {"hic": 548.0, "chest_mm": 38.9, "head_g": 71.0},
3: {"hic": 655.0, "chest_mm": 43.6, "head_g": 83.2},
4: {"hic": 590.0, "chest_mm": 40.1, "head_g": 75.4},
5: {"hic": 601.0, "chest_mm": 40.8, "head_g": 76.9},
}
Computing Main Effects and the Interaction
For a two-level design, the main effect of a factor is the average response at its high level minus the average at its low level. The interaction effect is the difference of differences: how much the effect of A changes when B moves from low to high.
def effects(runs):
y = {k: v["hic"] for k, v in runs.items()}
# main effect A: mean(+1) - mean(-1)
eff_A = ((y[2] + y[4]) / 2) - ((y[1] + y[3]) / 2)
# main effect B
eff_B = ((y[3] + y[4]) / 2) - ((y[1] + y[2]) / 2)
# interaction A*B
eff_AB = ((y[1] + y[4]) / 2) - ((y[2] + y[3]) / 2)
# curvature: center vs factorial average
curv = y[5] - (y[1] + y[2] + y[3] + y[4]) / 4
return eff_A, eff_B, eff_AB, curv
print(effects(runs))
# Example output (illustrative data):
# (-41.5, 42.5, -0.5, 4.0)
Reading the illustrative output: increasing vent area from 2 000 to 4 000 mm² lowers HIC by about 41.5 on average (negative effect — more venting, softer bag, lower head load). Increasing mass flow raises HIC by about 42.5 (stiffer, faster fill). The interaction of −0.5 is small relative to the main effects, meaning the two factors act largely independently over this range. The curvature term of 4.0 is small compared with the main effects, so a linear two-level model is adequate here.
Interpreting the Screening Result
The decision rule for a screening study is not "pick the best run" but "decide what to carry forward." If both main effects are large and the interaction is small, the later optimization can treat vent size and mass flow as separable and use a response-surface or full factorial design on each independently. If the interaction is comparable to the main effects, the factors must be varied together and a full factorial or central composite design is required. The center-point curvature check tells you whether the linear assumption holds; a large curvature term means the optimum may lie between the corner levels and a two-level screen will miss it.
Verification and Failure Symptoms
Before trusting the screening effects, confirm three things. First, check that each run terminated normally and that the airbag reached full deployment without negative-volume or mass-scaling warnings in messag; a failed run silently biases the response. Second, confirm the center-point response is consistent with the factorial average — a large curvature term is a signal, but a center point wildly outside the corner range usually means a setup error, not physics. Third, verify the response extraction window covers the full head and chest loading pulse; truncating at 30 ms when the chest peak occurs at 45 ms will understate chest deflection and distort the B effect.