November 15, 2024 · 4 min read
Mesh convergence is not a checkbox
Refining until the number stops moving is necessary, not sufficient. Singularities, stress recovery, the right quantity to converge, and knowing where to stop.
November 15, 2024 · 4 min read
Refining until the number stops moving is necessary, not sufficient. Singularities, stress recovery, the right quantity to converge, and knowing where to stop.
“I refined the mesh and the stress converged.” Sometimes true. Often it means the stress converged to the wrong thing — to a quantity that has no business converging, or to a number that depends entirely on element size because there is a singularity hiding in the model. Convergence of a number is not convergence of the number you should be using.
A re-entrant corner (a notch with zero fillet radius), a point load, a single-node constraint, a rigid element terminating into a shell, the corner of a bonded interface: in the idealised math the stress at that point is infinite. The FE solution can’t show infinity, so instead the peak stress climbs every time you halve the element — slowly, monotonically, forever. If you “converge” there you have converged to your last element size, not to physics. The energy converges (which is why displacements and reactions look fine); the local stress does not.
The fix is never a finer mesh. It is one of:
For cracks the same idea is formalised: you don’t chase the (infinite) crack-tip stress, you extract K or G by a J-integral / VCCT method that is designed to be mesh-objective. Refining the crack-tip stress itself is meaningless.
The thing to refine and watch is the quantity that goes into the margin, not the raw peak element value:
A useful instrument is Richardson extrapolation: run three systematically refined meshes, and if the result is converging at the expected rate, you can extrapolate to the zero-element-size limit and see how far your finest mesh still is from it. If the sequence isn’t settling toward a limit, you are probably sitting on a singularity — that’s the diagnosis, not a reason to mesh finer.
Check averaged vs unaveraged nodal stresses. The solver computes stress at integration points and extrapolates to nodes; averaged stresses blend the contributions from elements sharing a node, unaveraged keep them separate. A large gap between the two — a noticeable jump from element to element across a shared node — means the mesh is too coarse to resolve the gradient there, and the averaging is papering over it. A small gap means the field is well-resolved and you can trust the recovered stress. This is a faster, more local convergence diagnostic than re-meshing the whole model, and it points you straight at the under-resolved region.
A few related habits:
Converging to the wrong order of magnitude is still wrong. Before believing a refined result, put a hand calc or a closed-form estimate next to it — a Roark case, a net-section stress times a Kt, a beam-theory bending stress. The hand calc won’t be exact, but it tells you whether the FE is in the right postcode. A model that converges beautifully to a number twice what beam theory says is not converged; it is confidently wrong.
“Converged” should mean: the quantity I am using in substantiation is insensitive to mesh over the refinement range I actually tested, it is not sitting on a singularity, the stress recovery is clean there, and it agrees in magnitude with an independent estimate. Anything short of that is a screenshot of a number that stopped moving — not an analysis.