Skip to content

Independent MSL GaLS elasticity comparison

MSL_MHM + MSL_CG (GaLS) and pyMHM were run with the same local spaces, macrotriangles, linear traction traces, material, forcing and boundary data. Seven archived comparisons cover five P1/P1 mesh levels and additional P2/P2 and P3/P3 local spaces. The largest absolute field differences across these cases are \(2.59\times10^{-13}\) in displacement, \(8.60\times10^{-12}\) in Herrmann pressure, \(1.68\times10^{-11}\) in displacement gradient and \(3.10\times10^{-11}\) in full Cauchy stress, measured in \(L^2\).

These are direct comparisons with an independently assembled reference operator. They validate the stated discrete configurations; they do not identify the data that generated every table in the Gomes, Pereira and Valentin (2024, preprint v1). The separate elasticity gallery studies material limits and skeletal refinement against exact fields.

Matched problem and spaces

The domain is the unit square, with \(\mu=1\), \(\lambda=4999\) and \(\nu=0.4999\). The displacement vanishes on the entire boundary. The consistent trigonometric analytical family uses amplitude one, as in the MSL manufactured input:

\[ u=u_0+(1-2\nu)\sin(\pi x)\sin(\pi y)(1,1)^T, \qquad p=-2\pi\nu\sin(\pi(x+y)), \]

with \(p=-\lambda\operatorname{div}u\) and \(\sigma=2\mu\varepsilon(u)-pI\). The source is derived from \(-\operatorname{div}\sigma=f\); the exact pressure mean is zero.

The macro mesh is a uniform crisscross grid: each Cartesian square is split into four triangles through its center. With \(n\) squares along each axis, there are \(4n^2\) macrotriangles and their diameter is \(H=1/n\). Every macroface carries one discontinuous linear vector traction segment. The skeleton represents \(-\sigma n\) and local problems retain all three rigid displacement modes.

Local displacement/pressure Macro resolutions \(n\) Fine subdivisions per macro edge Stabilization \(\alpha\)
P1/P1 1, 2, 4, 8, 16 4 0.1
P2/P2 4 2 0.001
P3/P3 4 1 0.001

These pairs satisfy the stated linear-trace refinement condition and the computed inverse-inequality bound. Both implementations include all GaLS residual and forcing terms. In particular, the P2/P3 cases include second derivatives of displacement, which vanish only in the P1 case. The coefficients above are explicit experiment inputs, not estimates fitted to the resulting errors.

Convergence and agreement

The P1/P1 series refines the macro mesh and its associated fine meshes. The following errors are from the archived pyMHM fields; MSL values coincide at the displayed precision. The gradient norm is the full broken \(H^1\) seminorm and the stress norm includes every tensor component.

\(n\) Macrotriangles \(\lVert u-u_h\rVert_0\) \(\lVert \nabla(u-u_h)\rVert_0\) \(\lVert p-p_h\rVert_0\) \(\lVert \sigma-\sigma_h\rVert_0\)
1 4 0.24152365 4.18209317 4.36532990 8.38044980
2 16 0.08116602 2.12584063 1.78284264 3.70293418
4 64 0.01981371 1.05754389 0.91628264 1.81555192
8 256 0.00491662 0.51565665 0.43585575 0.86668932
16 1024 0.00122784 0.25546743 0.21368265 0.42634049

Five matched MSL and pyMHM GaLS mesh levels

The finer levels approach second-order displacement convergence and first-order gradient, pressure and stress convergence for this fixed P1/P1 local choice. Agreement between implementations and accuracy relative to the exact solution are separate quantities.

Absolute differences between the reconstructed fields

The difference curves measure the numerical scale of agreement; their slopes are not discretization convergence rates. Both fields retain their computed pressure means and use the same physical quadrature for comparison, with requested order 12. Assembly uses requested order 10; the native integration rule and pyMHM's quadrature need not have the same number of points.

At \(n=4\), the additional local-space checks give:

Local pair \(\lVert u-u_h\rVert_0\) \(\lVert \nabla(u-u_h)\rVert_0\) \(\lVert p-p_h\rVert_0\) \(\lVert \sigma-\sigma_h\rVert_0\)
P2/P2, refinement 2 0.01334115 0.48088736 0.46755687 0.92203326
P3/P3, refinement 1 0.01385936 0.49858893 0.40800194 0.84610484

These two rows change the local mesh as well as the polynomial degree and use the same linear macro trace. They are not a fixed-mesh polynomial-rate study, and a monotone decrease in every norm is not implied.

Spatial reconstructions

The matched P3/P3 case uses \(n=4\). Its original coefficient archives are needed to reproduce spatial displacement, pressure and stress maps; they are external inputs rather than assets included in this report. The figures above display the retained integrated errors and differences from all five matched mesh levels.

GaLS stress reconstructed from displacement and pressure is symmetric. The comparison does not assert that it is globally H(div) conforming. The mixed stress formulation enforces a different set of continuity and equilibrium conditions.

Provenance and retained data

The reference consists of MSL_MHM at 4cb8cf81518284313b680b13fd586ee619f08b99, MSL_CG at afb76d14c1baf50f0b9e69f7bcac675749ef4458 and MSL_CORE at 7f15f455717173d29080d411a7e732c72c1e87f8. These are the recorded upstream origins; public source access is restricted. The supplied MSL_CG module examples/src/problem_cgelasticityGaLS.cpp defines the native strain, displacement–pressure, compressibility and residual blocks. Its GaLS residual assumes shear modulus constant within each fine element. The matched constant-\(\mu\) cases satisfy that restriction; they do not verify the variable-shear derivative terms of the PyMHM implementation. The comparison uses the native GaLS element assembly and numerical libraries with a mixed-field MHM adapter. The adapter applies rigid-mode source projection to displacement rows and reconstructs pressure with the same native skeletal coefficients as displacement. The results record the adapter digests and reference revisions, identifying the complete computational configuration.

examples/results/elasticity-reference.json contains the parameters, norms, reference revisions and archive checksums. The original seven NPZ acquisitions contain macro geometry, connectivity, nodal coordinates and both implementations' displacement/pressure coefficients. Those external coefficient archives and instrumented reference adapters are not distributed with the checkout.

The standalone notebook declares and solves P1/P1 GaLS local equations through the public API for the same trigonometric physical data, including rigid-motion moments and the physical compliance-weighted pressure identity. It reports analytical displacement, pressure and stress errors on a uniform triangle macro mesh. That mesh differs from the original matched crisscross reference:

pixi run --locked -e notebooks notebooks-run 15

With the original coefficient archives available, notebooks-run 15 --historical also checks their recorded hashes and displays the original matched comparisons. The public gallery-elasticity-reference plotter consumes those original fields; it does not acquire new external reference results.

The source paper's tables fix 32 macrotriangles and refine skeletal and local meshes together, while the main series here changes the macro mesh. The stabilization coefficient used to generate the paper's tables is not specified, and the printed exact-data coefficients require the consistency choices documented in the literature catalog. Consequently the present agreement establishes a direct code comparison, not reproduction of those six tables.

References

  • Antônio Tadeu Azevedo Gomes, Weslley da Silva Pereira, and Frédéric Valentin (2024). A low-order locking-free multiscale finite element method for isotropic elasticity, arXiv preprint, version 1, 25 March 2024. arXiv: 2403.16890v1.