2. Identify HIC-Sensitive Segments in a Crash Pulse
Why the Window Choice Changes the Number
HIC is not a single property of a crash pulse; it is a property of a window placed on that pulse. The criterion searches every pair of time points (t₁, t₂) separated by no more than the window length T, computes the mean resultant acceleration over that interval, and reports the maximum of a(t̄)²·T. Because the search is a maximization over a sliding interval, the reported HIC depends on where the dominant head loading sits relative to the window boundary. A 15 ms window can only "see" a short, sharp spike; a 36 ms window can integrate a longer, lower-amplitude plateau. The same acceleration trace therefore yields two different numbers, and the difference is diagnostic rather than arbitrary.
This case is a scanning task, not a computation-from-scratch task. You are given a head acceleration trace from a driver airbag deployment and must locate the specific 15 ms and 36 ms intervals that maximize HIC, then explain why those intervals differ. The practical value is that once you know where the maximizing windows sit, you can tell whether the injury metric is being driven by a short airbag contact spike or by a sustained ride-down phase.
Inputs and Reference Conventions
Work with a single-channel resultant head acceleration record, sampled at 10 kHz (0.1 ms resolution), positive toward the occupant, time zero at airbag first contact. The record below is a teaching example, constructed to be representative of a driver-side deployment; it is not a measured test result. It contains three features you should be able to identify by eye before running any search:
- A sharp contact spike near 8–14 ms reaching about 165 g.
- A secondary, broader loading phase from roughly 30–70 ms peaking near 95 g.
- A low-amplitude tail after 80 ms that should not dominate either window.
All accelerations are in g, all times in milliseconds. The HIC integral uses the standard form with a(t) in g and the window length in seconds, so no unit conversion of the 2.5 exponent is needed beyond expressing T in seconds.
Scanning the Trace for the Maximizing Windows
The search is a two-level loop: for each candidate start index i, extend the end index j while (tj − ti) ≤ T, and track the running integral of acceleration so the mean is available in O(1) per candidate. The code below is self-contained: it builds the example trace, runs both window searches, and prints the winning intervals. It is written to be run as-is.
import numpy as np
# --- Teaching example trace (synthetic, representative of a driver airbag event) ---
dt = 0.0001 # 0.1 ms sample interval
t = np.arange(0.0, 0.120, dt) # 0 to 120 ms
a = np.zeros_like(t)
def bump(t, t0, width, amp):
return amp * np.exp(-((t - t0) ** 2) / (2 * width ** 2))
a += bump(t, 0.011, 0.0018, 165.0) # sharp contact spike
a += bump(t, 0.048, 0.0110, 95.0) # broader ride-down loading
a += bump(t, 0.095, 0.0060, 18.0) # low tail
a = np.clip(a, 0.0, None) # acceleration magnitude, no negative lobes
def hic_window(a, t, T_ms):
"""Return (HIC, t1, t2) maximizing HIC over windows of length T_ms."""
T = T_ms / 1000.0
cum = np.concatenate(([0.0], np.cumsum(a) * dt)) # integral of a dt
best = (-1.0, 0.0, 0.0)
n = len(t)
j = 0
for i in range(n):
if j < i:
j = i
while j + 1 < n and (t[j + 1] - t[i]) <= T:
j += 1
span = t[j] - t[i]
if span <= 0:
continue
mean_a = (cum[j + 1] - cum[i]) / span
hic = (mean_a ** 2.5) * span
if hic > best[0]:
best = (hic, t[i] * 1000.0, t[j] * 1000.0)
return best
for T in (15, 36):
hic, t1, t2 = hic_window(a, t, T)
print(f"HIC{T:<2d} = {hic:7.1f} window = [{t1:6.2f}, {t2:6.2f}] ms "
f"duration = {t2 - t1:5.2f} ms")
Expected output shape (values depend on the exact synthetic parameters above; treat them as illustrative, not as measured data):
HIC15 = ~410 window = [ ~7.9, ~22.9] ms duration = ~15.00 ms
HIC36 = ~520 window = [ ~7.9, ~43.9] ms duration = ~36.00 ms
Two things matter in that output. First, both windows start near the same place — just before the sharp contact spike — because the spike contributes the highest instantaneous acceleration and the mean is maximized by including it. Second, the windows end at different points: the 15 ms window closes shortly after the spike decays, while the 36 ms window extends far enough to swallow the rising edge of the broader ride-down phase. That is the mechanism by which window length changes the reported metric.
Reading the Window Map
The figure below shows the same trace with the two maximizing windows overlaid, so you can see directly which loading features each window captures and where they diverge.
The visual makes the divergence explicit: the two windows share a left edge but the 36 ms window reaches into the ride-down rise, adding a moderate-amplitude segment that raises the mean over a longer duration. Whether that raises or lowers HIC relative to the 15 ms result depends on the amplitude ratio between the spike and the plateau — here the longer window wins because the plateau is broad enough that its contribution to the mean outweighs the dilution of the spike.
Interpreting the Difference
When you report a HIC value, the window length is part of the result, not a footnote. A few practical rules follow from the scan:
- If HIC36 > HIC15 by a wide margin, the dominant loading is sustained rather than impulsive; the airbag is doing its ride-down job but over a long enough interval that the 36 ms integral accumulates more injury potential.
- If HIC15 ≈ HIC36, the pulse is effectively concentrated in a short spike and the longer window adds little; the metric is spike-driven.
- If HIC15 > HIC36, the spike is sharp enough that extending the window dilutes the mean faster than it adds duration — a signature of a very short, high-amplitude contact.
Always state which window you used and, ideally, report both. A single HIC number without its window is ambiguous and cannot be compared against a limit or a baseline from another test.
Verification Checklist
| Check | Pass condition | Failure symptom |
|---|---|---|
| Window duration | t₂ − t₁ equals T within one sample interval | Window shorter than T → search loop terminated early |
| Start alignment | Both windows begin near the contact spike | Window starts in the tail → integral indexing off by one |
| Monotonicity | HIC increases as T grows for this pulse | HIC36 < HIC15 unexpectedly → check unit of T (s vs ms) |
| Reproducibility | Re-running gives identical t₁, t₂ | Drift → floating-point accumulation in cumsum; use float64 |
Once the two windows are located and their difference explained, you have the input needed for the next step: deciding which window better represents the dominant head loading phase for this specific airbag interaction, and documenting both values so later comparisons are made on a consistent basis.