2. Diagnose Negative Volume Error in Solid
What the negative volume termination actually reports
In an explicit solid-element run, LS-DYNA integrates the element volume from the current nodal coordinates at every cycle. When a hexahedral or tetrahedral solid element is compressed or sheared past the point where its Jacobian determinant becomes non-positive, the solver cannot compute a valid internal force and aborts with a message of the form:
*** Error 10045 (SOL+1002)
Negative volume in solid element # 18432
on processor # 1
cycle 21734, time 3.8421E-03
The element number is the single most valuable piece of information in the message: it tells you exactly where to look. The cycle and time tell you when the collapse occurred, which lets you correlate the failure with a loading event, a contact engagement, or a mass-scaling ramp. The message does not tell you why the element inverted, and that is the diagnostic work this case covers.
Reproducing the failure on a controlled model
To make the diagnosis repeatable, work with a small block-compression model rather than the full assembly. A 20 × 20 × 4 mesh of ELFORM=1 (constant-stress one-point hex) solids, 1 mm edge length, compressed between two rigid plates, reproduces the same failure mode in seconds and lets you iterate on the fix without waiting for a production run.
*KEYWORD
*CONTROL_TERMINATION
$# endtim endcyc dtmin endeng endmas
5.0E-3 0 0.0 0.0 0.0
*CONTROL_TIMESTEP
$# dtinit tssfac isdo tslimt dt2ms lctm erode ms1st
0.0 0.9 0 0.0 0.0 0 0 0
*MAT_PLASTIC_KINEMATIC
$# mid ro e pr sigy etan beta
1 7.850E-9 210000.0 0.3 350.0 800.0 0.0
*SECTION_SOLID
$# secid elform aet
1 1 0
*PART
$# title
Compressible block
$# pid secid mid eosid hgid grav adpopt tmid
1 1 1 0 0 0 0 0
*ELEMENT_SOLID
$# eid pid n1 n2 n3 n4 n5 n6 n7 n8
1 1 1 2 22 21 841 842 862 861
$# ... remaining elements generated by the mesher ...
*DEFINE_CURVE
$# lcid sidr sfa sfa offa offb
1 0 1.0 1.0 0.0 0.0
$# a1 o1
0.0 0.0
5.0E-3 -0.45
*BOUNDARY_PRESCRIBED_MOTION_RIGID
$# pid dof vad lcid sf vid death birth
2 3 0 1 1.0 0 0.0 0.0
*CONTACT_AUTOMATIC_SURFACE_TO_SURFACE
$# ssid msid sstyp mstyp sboxid mboxid spr mpr
1 2 3 3 0 0 0 0
$# fs fd dc vc vdcp pench bt dt
0.2 0.2 0.0 0.0 0.0 0.0 0.0 0.0
Run this deck and the solver terminates with a negative-volume error on one of the elements near the loaded face. The element ID in the message is the entry point for the diagnosis below.
Locating the triggering element and its deformation mode
Do not guess from the element number alone — confirm the geometry. Two reliable routes exist:
- d3plot inspection. Open the last written state in LS-PrePost, select Fringe → Solid → Volume, and step to the final frame. The inverted element appears with a negative or near-zero volume fringe. Use Identify → Element to confirm the ID matches the termination message.
- Nodal coordinate check. For the reported element, extract the eight corner coordinates from the last d3plot state and compute the signed volume. A hex with nodes ordered n1–n4 on the bottom face and n5–n8 on the top face has volume V = (1/6)·Σ over the six tetrahedral decompositions; a negative result confirms inversion rather than a solver bookkeeping error.
Once the element is located, classify the deformation mode. Three patterns dominate in compression problems:
| Deformation mode | Visual signature in d3plot | Typical root cause |
|---|---|---|
| Axial crush / barrelling | Element flattened along the load axis, side faces bulging outward | Excessive plastic strain without erosion; material too ductile for the applied stroke |
| Shear inversion | Top face displaced laterally relative to bottom face; element rhomboid | Contact friction or asymmetric loading driving shear past the Jacobian limit |
| Hourglass collapse | Alternating element pattern, zero-energy mode visible in the hourglass energy plot | Under-integrated ELFORM=1 with insufficient hourglass control |
In the block model above, the failure is axial crush: the prescribed −0.45 mm stroke on a 1 mm element exceeds the 45% engineering strain at which a one-point hex with this hardening curve loses positive Jacobian under the given contact stiffness. The hourglass energy curve stays below 2% of internal energy, which rules out hourglassing as the primary cause.
Applying a targeted fix and verifying recovery
For the axial-crush case in the block model, the most direct fix is to add an erosion criterion so the element is deleted before its Jacobian reaches zero. Add the following to the material definition:
*MAT_ADD_EROSION
$# mid excl mxpres mneps effeps voleps numfip ncs
1 0 0.0 0.0 0.35 0.0 1.0 1
$# mnpres sigp1 sigvm sigmx epsp1 epsm1 eps2 eps3
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
The effeps = 0.35 threshold deletes elements once effective plastic strain reaches 35%, which is below the 45% strain at which the one-point hex inverts. The voleps field is left at zero because the erosion is strain-driven, not volume-driven. Re-run the deck: the termination message disappears, the stroke completes to 5.0E-3 s, and the hourglass energy remains under 3% of internal energy.
If the deformation mode had been shear inversion instead, the same erosion criterion would mask the symptom without fixing the cause. In that case, reduce the contact friction coefficient from 0.2 to 0.1 and switch the section to ELFORM=2 (fully integrated hex), which resists shear locking better than the one-point formulation. The trade-off is roughly 2–3× the CPU cost per element, so apply it only to the region identified by the d3plot fringe, not the whole mesh.
dtmin or disable the negative-volume check to "get past" the error. The check exists because a non-positive Jacobian produces non-physical internal forces; suppressing it lets the solution diverge silently and corrupts every subsequent result.Recovery checklist
| Check | Pass criterion | If it fails |
|---|---|---|
| Termination message absent | Run reaches endtim without Error 10045 | Re-inspect d3plot for a new inverted element; the fix may have shifted the failure location |
| Hourglass energy | < 5% of internal energy throughout | Increase QM in *HOURGLASS or switch to ELFORM=2 |
| Energy ratio | Total energy / initial energy within 1.0 ± 0.05 | Check for unphysical contact energy or mass scaling |
| Stroke completion | Prescribed displacement reached at endtim | Verify the *DEFINE_CURVE abscissa matches endtim |
The same diagnostic sequence — read the message, locate the element, classify the mode, apply the mode-specific fix, verify against the checklist — transfers directly to production models. The only change is scale: on a full assembly, use LS-PrePost's History → Solid to plot the volume of the reported element over time, which shows whether the collapse was gradual (material-driven) or sudden (contact-driven).