3. Seat Back Angle Sweep for Reclined Occupant Response
Why Sweep the Seat Back Angle
In a reclined occupant assessment, the seat back angle is not a cosmetic posture parameter — it is the primary lever that controls how the restraint system couples to the occupant. As the back angle increases from an upright 30° toward a near-flat 60°, three things change simultaneously: the torso's center of mass moves rearward and downward relative to the belt anchor points, the lap belt's path over the pelvis rotates, and the shoulder belt's engagement with the chest wall shifts from a frontal load path toward a more lateral, sliding one. The result is that a restraint package tuned for one angle can degrade sharply at another. A parametric sweep is the standard way to map that degradation and to locate the angle band where coupling is weakest.
This case runs a controlled sweep of seat back angles from 30° to 60° in 5° increments (seven configurations) against the validated baseline model, holding all other inputs fixed, and compares occupant kinematics and injury metrics across the range. The deliverable is a ranked table of angles by coupling quality plus a clear identification of the degradation band.
Defining the Sweep and Holding Everything Else Constant
The sweep is only meaningful if the seat back angle is the sole independent variable. Before launching any run, lock the following so that differences between runs are attributable to angle alone:
- Geometry: the same validated occupant FE model and seat cushion; only the seat back rotation about the H-point pivot changes.
- Restraint: identical belt anchor coordinates in seat-fixed space, identical belt pretensioner and load-limiter settings, identical retractor locking behavior.
- Contact: the same friction coefficients (seat-to-occupant, belt-to-occupant, belt-to-seat) and the same contact thickness offsets.
- Boundary conditions: the same OOP initial kinematic state (pelvis rotation, torso lean, limb placement) applied at t = 0, and the same pulse.
- Output requests: the same set of kinematics and injury channels, sampled at the same rate.
A common failure is to let the belt anchor points ride with the seat back rotation. If the anchors are defined in seat-fixed coordinates and the seat back rotates, the anchors rotate too — which is physically correct for a seat-integrated belt but wrong for a B-pillar-mounted belt. Decide which architecture you are modeling and state it explicitly; mixing the two silently invalidates the sweep.
Running the Parametric Sweep
The sweep is driven by a small script that rotates the seat back about the H-point pivot, re-applies the OOP initial state, and submits each run. The key is that the rotation is applied to the seat back part set only, and the initial kinematic state is re-derived from the rotated geometry rather than copied verbatim — otherwise the occupant starts the run already penetrating or floating relative to the seat.
# seat_back_sweep.py — parametric seat back angle sweep
# Angle convention: measured from vertical, positive rearward (degrees)
import subprocess, csv, os
ANGLES = [30, 35, 40, 45, 50, 55, 60] # sweep range, 5-degree increments
H_POINT = (0.0, 0.0, 0.0) # pivot in model coordinates
BASE_DECK = "baseline_reclined_45deg.key"
OUT_DIR = "sweep_runs"
def write_angle_deck(angle, path):
"""Emit a run deck that rotates the seat back about the H-point pivot
and re-applies the OOP initial state for that angle."""
with open(BASE_DECK) as f:
deck = f.read()
# Rotate seat back part set about H-point; positive = rearward
rot = (f"*DEFINE_TRANSFORMATION\n"
f"SEAT_BACK_ROT\n"
f"ROTATE, {H_POINT[0]}, {H_POINT[1]}, {H_POINT[2]}, "
f"0.0, 1.0, 0.0, {angle - 45.0}\n")
# Re-derive OOP initial state from rotated geometry
oop = (f"*INITIAL_VELOCITY_GENERATION\n"
f"OOP_STATE_{angle}\n"
f" {angle}\n") # placeholder: angle-indexed OOP preset
with open(path, "w") as f:
f.write(deck + "\n" + rot + "\n" + oop)
def run(angle):
deck = os.path.join(OUT_DIR, f"run_{angle}deg.key")
write_angle_deck(angle, deck)
subprocess.run(["lsdyna", "i=" + deck, "ncpu=8"], check=True)
return os.path.join(OUT_DIR, f"run_{angle}deg")
if __name__ == "__main__":
os.makedirs(OUT_DIR, exist_ok=True)
for a in ANGLES:
run(a)
The OOP_STATE_{angle} block is where the angle-specific initial posture is injected. In practice this is a small lookup that maps each angle to a pre-validated pelvis rotation and torso lean, so the occupant begins each run in a physically consistent pre-impact posture rather than a copied one. If you skip this step, the 30° and 60° runs will show spurious early contact that contaminates the comparison.
What to Extract From Each Run
For each angle, pull the same channels so the comparison is apples-to-apples. The metrics that most directly expose restraint coupling degradation are:
| Metric | Channel / definition | What degradation looks like |
|---|---|---|
| Peak chest deflection | Max sternal deflection, mm | Rises as shoulder belt slides off the chest wall |
| Chest deflection rate | d(deflection)/dt, mm/ms | Sharper rise indicates poor load spreading |
| Lap belt–pelvis engagement | Belt-pelvis contact force, N | Drops as belt rides up toward abdomen |
| Pelvis rearward excursion | H-point displacement, mm | Increases as lap belt loses purchase |
| Head rearward excursion | Head CG displacement, mm | Grows with torso rotation and belt slip |
| Submarining indicator | Lap belt slip past iliac crest, mm | Positive slip signals coupling loss |
Normalize each metric against the 45° baseline so the sweep reads as a relative degradation curve rather than seven unrelated numbers. A coupling index can be formed as a weighted sum of normalized lap-belt engagement (inverted), chest deflection, and pelvis excursion; the exact weights are a modeling choice, but the ranking is usually robust to reasonable weighting.
Reading the Sweep: Where Coupling Degrades
The figure below summarizes the expected shape of the response across the sweep. It is a schematic of the parameter relationship, not a plot of executed results — the actual curves must come from your runs. The key structural feature to look for is the knee: coupling is roughly stable through the mid-range and then degrades nonlinearly as the angle passes a threshold.
Two features of this relationship matter for the assessment. First, the coupling index is nearly flat from 30° to 45° — the restraint package tolerates moderate recline without meaningful loss of coupling. Second, past roughly 50° the curves diverge sharply: lap belt engagement falls while the coupling index climbs, and the two trends reinforce each other. That divergence is the signature of the degradation band. The exact knee location is model-specific and must be read from your own sweep, but the qualitative shape — stable mid-range, nonlinear collapse at high recline — is the expected outcome and the thing to verify.
Interpreting and Reporting the Result
Rank the seven angles by coupling index and report the band where the index exceeds a defined threshold (for example, 1.5× the 45° baseline). In the schematic above that band begins near 50° and widens through 60°. The practical conclusion is that the restraint package is well-coupled through the 30°–45° range, begins to lose coupling around 50°, and is significantly degraded at 55°–60° — which is exactly the range where submarining screening and lap belt routing sensitivity become critical follow-on assessments.
Record for each run: the applied angle, the re-derived OOP state, the six extracted metrics, and the normalized coupling index. That table is the reusable artifact from this case and feeds directly into the downstream submarining and belt-routing studies.