Skip to main content

Solver Not Converging

The solver is "not converging" when the compliance curve does not stabilize within the configured number of iterations, or when the solver fails entirely with an error. This page covers the most common causes and their fixes.

Symptoms

  • Compliance values oscillate without settling
  • Compliance increases instead of decreasing
  • The solver stops early with an error
  • The material layout looks noisy or random after all iterations complete
  • Volume fraction does not reach the target value

Common causes and fixes

1. Missing fixed preserve

Symptom: Solver fails immediately or produces an all-gray result.

Cause: Without at least one fixed preserve (boundary condition), the design problem is unsolvable. The solver cannot find a solution because the structure is free to translate and rotate as a rigid body.

Fix: Add a fixed preserve or boundary condition. Every mechanism needs at least one anchor point.

2. Missing preserve pair

Symptom: The solver runs but the design does not form a mechanism (no connection between input and output).

Cause: The solver does not know how to couple the input and output preserves. Without a pair, the solver optimizes only for stiffness, not mechanism behavior.

Fix: Create a preserve pair linking your input and output preserves.

3. Volume fraction too low

Symptom: Compliance oscillates or the design has disconnected islands of material.

Cause: The solver does not have enough material budget to form continuous load paths between preserves. It keeps trying to redistribute material but cannot find a stable configuration.

Fix: Increase the volume fraction from 0.10--0.15 to 0.25--0.35. See Configure Volume Fraction.

4. Too few iterations

Symptom: The compliance curve is still trending downward at the last iteration. The design looks reasonable but not fully resolved.

Cause: The solver simply has not had enough steps to converge. This is especially common with fine meshes or complex preserve configurations.

Fix: Increase the iteration count in Design Settings. Try 100--150 iterations for complex problems. The default of 60 works for most simple cases but may not be enough for fine meshes or multi-pair setups.

5. Conflicting preserves

Symptom: The solver converges but the design is unexpected -- material concentrates in strange places or avoids the preserve regions.

Cause: Preserves may overlap, have contradictory directions, or be placed outside the design domain. The solver tries to satisfy all constraints simultaneously and produces a compromise.

Fix:

  • Verify no two preserves overlap
  • Check that all preserves are within the design domain boundary
  • Confirm input and output directions are physically consistent (input pushes one way, output moves the other way for inverters)

6. Extreme parameter values

Symptom: Solver fails or produces degenerate results.

Cause: Parameter values outside practical ranges can cause numerical instability:

  • Volume fraction below 0.05 or above 0.95
  • Element size below 0.1 mm (creates enormous meshes)
  • Penalization above 10 (too aggressive design sharpness)
  • Filter radius below 0.5 (no regularization)
  • K_p_max set to very small values (e.g., 0.01) in nuanced mode

Fix: Return to default values (volume fraction: 0.30, element size: 2.0 mm, penalization: 3, filter radius: 1.5) and adjust one parameter at a time.

7. Mesh too coarse for the geometry

Symptom: Solver converges but the result has checkerboard artifacts or the design does not respect preserve boundaries.

Cause: When the element size is close to or larger than the preserve dimensions, the solver cannot properly represent the boundary conditions. A bolt pad covered by only 1--2 elements behaves differently than one covered by 10+ elements.

Fix: Decrease the element size until each preserve spans at least 4--5 elements in each direction. See Choose Mesh Resolution.

Diagnosing the problem

Check the convergence plot

The convergence plot (compliance vs. iteration) is the single most informative diagnostic:

  • Smooth decrease then plateau: Normal convergence. No action needed.
  • Decrease then slow oscillation: Near convergence. Add more iterations.
  • Wild oscillation: Numerical instability. Check parameters and preserve setup.
  • Flat line from iteration 1: The solver is stuck. Check boundary conditions and pairs.
  • Compliance = 0 or infinity: Degenerate result. Missing preserves or invalid configuration.

Check the volume fraction curve

The volume fraction should converge to your target value:

  • Reaches target quickly then stays: Normal.
  • Never reaches target: Volume fraction may be set too extreme, or the domain is too small for the constraints.
  • Oscillates around target: Normal solver behavior in later iterations.

When to seek help

If you have verified all of the above and the solver still does not converge:

  • Try the Robust formulation mode in Analysis Settings (it uses a different, sometimes more stable, formulation)
  • Try Legacy optimizer in Advanced settings as an alternative optimizer
  • Simplify the problem: use a single input-output pair, a coarser mesh, and default parameters to isolate the issue