3. LS-DYNA explicit dynamics solver essentials for crash simulation
Crash simulation with LS-DYNA is built on three tightly coupled pillars: explicit time integration, contact algorithms, and hourglass control. A model can have perfect geometry and material data and still produce meaningless results if any one of these is mishandled. This section explains what each pillar does, how to configure it, and how to recognize when it is going wrong.
Explicit Time Integration and the Stable Time Step
LS-DYNA advances the solution with the central difference method. Nodal accelerations are computed from the assembled force balance, then velocities and displacements are updated explicitly:
a_n = M^-1 (F_ext - F_int)
v_(n+1/2) = v_(n-1/2) + a_n * dt
d_(n+1) = d_n + v_(n+1/2) * dt
Because the method is conditionally stable, the time step must satisfy the Courant–Friedrichs–Lewy condition. For a solid element the critical step is approximately dt_crit = L_e / c, where L_e is the characteristic element length and c is the dilatational wave speed c = sqrt(E / (rho (1 - nu^2))). In practice LS-DYNA computes a per-element step and applies a scale factor, controlled by *CONTROL_TIMESTEP:
*CONTROL_TIMESTEP
$# dtinit tssfac isdo tslimt dt2ms lctm erode ms1st
0.0 0.9 0 0.0 -1.2e-6 0 0 0
A negative DT2MS activates mass scaling: elements whose step falls below 1.2 µs receive added mass rather than forcing the whole model to run at that step. This is the standard remedy for a handful of small elements in a large body-in-white model. The trade-off is inertia error, so always check the added-mass percentage in the d3hsp file and keep it below roughly 1–2 % of total mass for crash work. Positive DT2MS adds mass to all elements and is rarely appropriate for vehicle models.
Two practical diagnostics matter here. First, the actual initial step is reported in d3hsp; if it is far below your expectation, search for degenerate or sliver elements. Second, monitor the energy ratio in glstat: the sum of kinetic, internal, and contact energy should track the initial kinetic energy within a few percent. A rising "energy ratio" or a large negative "total energy" usually indicates hourglassing or contact problems rather than a time-step issue.
Contact Algorithms
Crash models rely on penalty-based contact. The penetration between a slave node and a master segment generates a restoring force F = k * delta, where the penalty stiffness k is derived from the segment bulk modulus and area. The two workhorses are *CONTACT_AUTOMATIC_SINGLE_SURFACE and *CONTACT_AUTOMATIC_SURFACE_TO_SURFACE.
Single-surface contact is the default choice for self-contact within a vehicle — a folding rail touching itself, or a door skin contacting the B-pillar. It requires only a part set and no master/slave designation, which makes it robust when the deformation pattern is unknown. Surface-to-surface contact is preferred when two distinct bodies interact and you want control over both sides, for example a barrier impacting a bumper beam. A typical barrier setup looks like this:
*CONTACT_AUTOMATIC_SURFACE_TO_SURFACE
$# ssid msid sstyp mstyp sboxid mboxid spr mpr
2 1 2 2 0 0 0 0
$# fs fd dc vc vdc penchk bt dt
0.1 0.1 0.0 0.0 0.0 0 0.0 0.0
$# sfs sfm sst mst sfst sfmt fsf vsf
1.0 1.0 0.0 0.0 1.0 1.0 1.0 1.0
Key parameters: FS and FD are static and dynamic friction coefficients (0.1 is a reasonable starting point for painted steel on steel); SOFT should be set to 1 or 2 for crash because it scales penalty stiffness with the segment's own stiffness and prevents excessive penetration in thin-walled sections. DEPTH controls the search depth for single-surface contact and should be increased when shells are expected to fold through themselves.
Contact problems announce themselves clearly. Excessive penetration appears as a negative "sliding interface energy" in glstat or as visible interpenetration in the animation. If contact forces spike and the model terminates with a negative volume, the penalty stiffness is likely too high; reduce SFS/SFM or switch to a soft constraint formulation. If parts pass through each other, the search depth or segment thickness is insufficient.
Hourglass Control
Reduced-integration solid and shell elements are computationally efficient but suffer from zero-energy deformation modes called hourglass modes. These are non-physical, sawtooth-shaped distortions that consume no strain energy and can grow until the mesh is destroyed. LS-DYNA offers several control options through *HOURGLASS and the IHQ flag on *CONTROL_HOURGLASS.
For crash simulation, type 4 (Flanagan–Belytschko stiffness form) is the most common choice for solids, and type 6 is often used for shells. The stiffness form adds a small artificial stiffness proportional to the element's own stiffness, which is more stable than the viscous form for large deformations. The coefficient QM defaults to 0.1; increasing it to 0.05–0.1 is typical, but values above 0.15 can over-stiffen the response and corrupt the force–displacement curve.
*CONTROL_HOURGLASS
$# ihq qh
4 0.10
The definitive diagnostic is the hourglass energy reported in glstat and matsum. As a rule of thumb, hourglass energy should stay below 5 % of peak internal energy; above 10 % the results are suspect. If hourglassing is excessive, first refine the mesh in the affected region — hourglass modes are a mesh-quality symptom, not just a control-parameter problem. Adding a small amount of stiffness-based hourglass control and ensuring at least two elements through the thickness of a shell section will usually resolve it.
Putting the Three Together: A Worked Check
Consider a 40 % offset deformable barrier (ODB) model of a sedan at 64 km/h. The initial kinetic energy is roughly 250 kJ. After running 120 ms of simulated time, inspect glstat:
- Time step: initial step reported as 0.85 µs; added mass 0.6 % — acceptable.
- Energy ratio: total energy / initial kinetic energy = 0.98 — good.
- Hourglass energy: peak 3.2 % of internal energy — acceptable.
- Contact energy: positive and stable; no negative sliding energy spikes.
If the hourglass energy had reached 12 %, the first action would be to refine the rail mesh from 8 mm to 5 mm, not simply to raise QM. If the energy ratio had dropped to 0.85, the likely culprit is a contact definition that allows penetration, and the fix is to set SOFT = 1 and verify the segment thickness on the barrier face.
d3hsp, glstat, and matsum before committing to a full 120 ms run. Catching a time-step or contact error early saves hours of compute time.
SOFT = 0 for crash contact. This works for simple metal forming but frequently causes penetration in crash models with thin shells and high-velocity impacts. Set SOFT = 1 or 2 on every *CONTACT_AUTOMATIC card.
Mastering these three essentials — a stable time step, a correctly tuned penalty contact, and adequate hourglass control — is what separates a model that runs from a model that correlates. The next section builds on this foundation by examining material models and failure criteria that govern how the structure absorbs energy.