MMS for 2-D Elasticity — Troubleshooting Guide
By Sitemap
My Mms Elasticity 2d simulation is giving me unexpected results — convergence issues, maybe. How do I diagnose this systematically?
Mms Elasticity 2d troubleshooting follows patterns once you know what to look for. Most issues fall into three buckets: convergence failures, accuracy problems, and result misinterpretation. Let me give you a systematic diagnostic framework rather than a list of random fixes.
That framing helps. Before we dive in — what's the single most common mistake engineers make with Mms Elasticity 2d?
Honestly, it's skipping the sanity checks. Engineers set up a Mms Elasticity 2d model, it converges, and they trust the result without verifying it against a hand calculation or a known benchmark. The solver gives you an answer regardless of whether your model is physically correct. Always run a simplified version first.
An elasticity MMS starts by choosing a manufactured displacement field \( \mathbf{u}_m(x,y) \) and substituting it into the equilibrium equation to derive the body-force source term.
$$ \mathbf{b} = -\nabla\cdot\boldsymbol{\sigma}(\mathbf{u}_m), \qquad \boldsymbol{\sigma} = \mathbb{C} : \boldsymbol{\varepsilon}(\mathbf{u}_m) $$
The boundary conditions come from the manufactured solution too: \( \mathbf{u}_m \) on displacement boundaries, \( \mathbf{t} = \boldsymbol{\sigma}(\mathbf{u}_m)\cdot\mathbf{n} \) on traction boundaries. Error norms are evaluated separately for displacement (\( L^2 \): order \( k+1 \)) and for stress or the energy norm (order \( k \)). Three things set this apart from a heat-conduction MMS: ① it is a vector field, so components get swapped; ② the elastic formulation itself offers choices (plane stress vs. plane strain); ③ locking, a pathology peculiar to elasticity. The trouble concentrates on exactly those three.
The convergence order comes out cleanly at two, but the absolute error never gets small — it feels like the run is converging to a different solution.
"Converges beautifully to the wrong answer" is the classic signature of a mismatch between the formulation used to derive the source term and the one the solver actually solves. In 2-D elasticity the leading offender is confusing plane stress with plane strain — the constitutive tensor \( \mathbb{C} \) differs, so if SymPy derives σ for plane strain while the solver runs plane stress, the code solves a mutually consistent but different problem, and solves it exactly. The definition of the elastic constants (Young's modulus and Poisson's ratio, or Lamé's λ and μ) hides the same trap. The only reliable prevention is to transcribe the constitutive equations verbatim from the solver's manual into the derivation script.
The standard way to isolate this is to get the order right with displacement boundaries all the way around first. If that passes, the interior discretization and the source term are exonerated, and the traction-boundary implementation can be studied in isolation — the boundary-isolation technique shared by every MMS.
Push Poisson's ratio to 0.49, then 0.499, and the displacement solution of linear (and standard low-order) elements turns abruptly stiff and inaccurate. This is not a bug but volumetric locking at the incompressible limit, a limitation of the formulation — and MMS is the best tool there is for exposing it quantitatively. The response has two stages.
By the same route, a slender bending-dominated manufactured solution (a thin beam-like domain plus a bending deformation) exposes shear locking. MMS is not only a test of "can it solve this correctly" but also a systematic probe of the conditions under which an element's pathologies appear.
The usual cause is insufficient accuracy on the implementation side of the body force \( \mathbf{b} \). ① Quadrature order for the element load — converting a rapidly varying body force into equivalent nodal forces with the default number of integration points lets the quadrature error exceed the discretization error (fix: raise the quadrature order and check the sensitivity, or lower the wavenumber of the manufactured solution). ② Lumped nodal approximation — implementations that apply the body force as "nodal value × nodal volume" are only first-order accurate and pollute the order of quadratic elements. ③ Occasionally there is a setup slip: a purely elastic, time-independent problem run in a dynamic solver, so inertia contaminates the result. If the random-point cross-check of the source term passes and the order still refuses to appear, suspect the accuracy of this injection path.
A verification with traction boundaries all the way around leaves the rigid-body modes (two translations plus one rotation) unconstrained, so the system is singular. The remedies: ① apply a minimal displacement constraint using values from the manufactured solution (\( u_x, u_y \) at one point, plus one component at a second point to suppress rotation — all of them set to the exact manufactured values); ② beware that fixing them to zero contradicts the manufactured solution and injects a boundary error. "Accuracy dropped once I added constraints" almost always traces to ②: make it a rule to feed the constrained points the value of \( \mathbf{u}_m \) as well.
The heat-conduction MMS came together quickly, but elasticity has so much more to check…
Everything extra comes from "vector fields plus formulation freedom" — which means that once you get an elasticity MMS working, you own the checkpoints for components, constitutive laws, boundaries, and element pathologies all at once. I recommend climbing in stages: heat conduction, then elasticity, then (if you need it) incompressibility and large deformation. And the hidden value of the elasticity MMS is the hard evidence it gives you for element selection — being able to say "our standard element does / does not lock at ν=0.499" with numbers from your own environment is far stronger than the textbook generality. Verification infrastructure is an asset once built, and that holds here as well.
Related: MMS for 2-D heat conduction — troubleshooting, source-term derivation troubleshooting, convergence-order troubleshooting.