4. Resolve Mass Scaling-Induced Instability
Why mass scaling can destabilize an explicit run
In an explicit LS-DYNA analysis the stable time step is governed by the smallest element characteristic length and the wave speed of its material: Δt ≈ Lc/c, with c = √(E/ρ). Mass scaling raises ρ in selected elements so that their Δt grows toward a target value. The trade-off is inertia: added mass changes momentum, contact forces, and the kinetic energy of the model. When the scaling is too aggressive, or applied to regions that carry real dynamic load, the result is a physically distorted response that often manifests as a termination — negative volume, excessive nodal velocity, or an energy error that the solver refuses to continue past.
The diagnostic task in this case is therefore not "make the run finish" but "decide whether the added mass is small enough that the answer is still meaningful, and if not, restructure the scaling so it is." The workflow below uses a thin-walled crash box as the working example: a shell mesh with a few very small elements in a fillet region that force an impractically small global time step.
Step 1 — Confirm that mass scaling is the actual cause
Start from the termination message and the energy history, not from the keyword file. Two signals together are strong evidence:
- Added mass is large. In the
d3hspfile, LS-DYNA reports the percentage of mass added by scaling. A value above roughly 1–2 % of total model mass in a region that participates in the impact is a red flag; a few tenths of a percent concentrated in stiff, low-motion detail is usually benign. - Energy is dominated by scaling artifacts. In
glstat, compare internal energy, kinetic energy, and the "added mass" energy contribution. If kinetic energy spikes in the scaled region before the physical impact reaches it, the added inertia is driving the response.
A useful cross-check is to rerun a short segment (a few milliseconds) with mass scaling disabled. If the model is stable but the time step collapses to a value that makes the run impractical, the problem is genuinely a time-step/mesh issue and scaling is the right tool — it just needs to be applied selectively. If the model terminates even without scaling, the root cause is elsewhere (contact, material, or mesh quality) and this case does not apply.
Step 2 — Read the scaling parameters that are actually in effect
Mass scaling is controlled through *CONTROL_TIMESTEP. The relevant fields for this diagnosis are:
| Field | Meaning | Typical diagnostic value |
|---|---|---|
DTINIT | Initial time step (0 = computed) | Leave 0 unless overriding |
TSSFAC | Time-step scale factor (default 0.9) | 0.9 is standard; lowering it does not fix scaling |
DT2MS | Target time step for mass scaling; negative = scale only elements below |DT2MS| | Positive value scales everything; negative is selective |
MS1ST | Scale on first cycle only (1) vs. every cycle (0) | 1 avoids repeated re-scaling drift |
The single most common mistake is a large positive DT2MS, which forces every element up to the target step and adds mass everywhere. A negative DT2MS restricts scaling to elements whose natural step is already below the threshold — the selective mode this case recommends.
Step 3 — Quantify the added mass before changing anything
Do not tune by trial and error alone. Extract the added-mass percentage from d3hsp and the per-part contribution from the matsum output. For the crash box example, suppose the total model mass is 2.4 kg and the fillet region contributes 0.09 kg of added mass — about 3.75 %, concentrated in a zone that sees the initial impact. That is too much: the fillet will behave as if it were heavier and stiffer than the design intends, and the contact force history will be wrong even if the run completes.
A defensible target is to keep added mass below about 1 % of the mass of the parts that carry the dynamic load, and to keep it out of the impact path entirely where possible.
Step 4 — Switch to selective scaling and re-verify
Replace the global target with a negative DT2MS set just below the smallest acceptable step, and enable first-cycle-only scaling so the mass does not drift as elements deform:
*CONTROL_TIMESTEP
$# dtinit tssfac isdo tslimt dt2ms lctm erode ms1st
0 0.9 0 0 -1.2e-6 0 0 1
With DT2MS = -1.2e-6, only elements whose natural step is below 1.2 µs are scaled, and only up to that threshold. The fillet elements are still scaled, but the surrounding shell — which already runs at a larger step — is untouched, so the added mass stays local and small. If the fillet still contributes too much mass, the correct fix is mesh refinement in that region (removing the tiny elements) rather than accepting a larger scaling factor.
d3hsp after each change. Stop increasing when added mass in load-bearing parts approaches 1 %.Step 5 — Judge the recovered solution
A completed run is not proof of a valid one. Accept the result only when all of the following hold:
- Added mass in
d3hspis below the 1 % threshold for load-bearing parts. - Kinetic energy rises only when the physical impactor reaches the structure — no early spike in the scaled region.
- Contact force and internal energy histories are smooth, with no step change at the moment scaling is applied.
- The termination message is gone and the energy error in
glstatstays within the solver's tolerance.
If the run completes but the force history still shows an early artifact, the scaling is still too aggressive in the impact path; reduce the target step further or refine the mesh there.
Common pitfalls when recovering this failure
- Lowering
TSSFACto "stabilize" the run. The scale factor shrinks the step further; it does not reduce added mass and makes the run slower. It is not a fix for scaling-induced instability. - Using a positive
DT2MS"just a little smaller." Any positive value still scales every element up to the target. Switch to negative to get selective behavior. - Ignoring
MS1ST. WithMS1ST = 0, mass is re-evaluated every cycle and can drift as elements deform, producing a slowly growing inertia error that is hard to spot in a short run. - Treating a completed run as validated. Always re-check added mass and the kinetic-energy history; a run that finishes with 5 % added mass in the impact zone is not a recovered solution.