Research / Shells and buckling

MacNeal–Harder (1985): engine benchmarks

After Richard H. Macneal, Robert L. Harder, “A proposed standard set of problems to test finite element accuracy”, Finite Elements in Analysis and Design (1985), doi:10.1016/0168-874x(85)90003-4.

Against the author’s code
No separate reference solver: this page runs the production engine.
Against the paper’s figures
Numerical table provenance pending. The live table separates paper-reference cases from analytical frame adaptations.

Research, not a design tool. Nothing here is an engineering result.

The production Stabileo engine, tested live against stated references. Every result below is computed in this browser; failures stay visible.

What is tested

MacNeal and Harder proposed accuracy problems for finite elements. This first selection runs straight cantilevers with regular, trapezoidal and parallelogram meshes using MITC4 shells, plus the existing Euler–Bernoulli frame adaptations. It is not a claim to pass the entire published problem set.

The shell strip has length 6, width 0.2, thickness 0.1, Young’s modulus 10⁷ and Poisson’s ratio 0.3, with six elements and a unit end force. The engine takes modulus divided by 1000. The frame adaptations retain their own material, section and meshes; their analytical values are not the paper’s tabulated shell values.

One benchmark definition

The engine-owned case file contains the inputs, measurement locations, references, sources and tolerances. Native tests and this page read it. No research solver supplies these results.

Accuracy and regression bounds

The live table uses a strict relative error below 2%. Existing native tests also check convergence, rigid modes and regression floors. A permissive regression floor is not an accuracy pass. The Research workflow compares native and WASM values and classifications.

Known limitations and registry

Distorted low-order elements can lock. Failing rows link here and remain in the denominator. The engine known-issues registry currently contains no open shell entry. The engine test ledger records the four live failures. A solver-owner decision is needed to add runtime diagnostics; this track does not edit production engine code.

Reference values retain the existing tests’ provenance. The original paper’s exact numerical table/page locators still require verification. Native shell suites also cover roof, cylinder, hemisphere and twisted-beam configurations; they are not included in this first live selection.

Covered in native CI only

  • SHB8 · regular · out-of-plane: Solid-shell inputs are not exposed by the production web wrapper. solid_shell_locking::macneal_harder_straight_cantilever
  • SHB8 · regular · in-of-plane: Solid-shell inputs are not exposed by the production web wrapper. solid_shell_locking::macneal_harder_straight_cantilever
  • SHB8 · trapezoidal · out-of-plane: Solid-shell inputs are not exposed by the production web wrapper. solid_shell_locking::macneal_harder_straight_cantilever
  • SHB8 · trapezoidal · in-of-plane: Solid-shell inputs are not exposed by the production web wrapper. solid_shell_locking::macneal_harder_straight_cantilever
  • SHB8 · parallelogram · out-of-plane: Solid-shell inputs are not exposed by the production web wrapper. solid_shell_locking::macneal_harder_straight_cantilever
  • SHB8 · parallelogram · in-of-plane: Solid-shell inputs are not exposed by the production web wrapper. solid_shell_locking::macneal_harder_straight_cantilever
  • Rigid-body modes and kernel: Element stiffness/eigenvalue API is native-only; seeded property checks, not a paper displacement. element_rigid_body_modes
  • MITC9 convergence: MITC9 inputs are not exposed by the production web wrapper. discretization_error::mitc9_curved_benchmarks_at_16x16
  • MITC4 distorted patch: Element-level stiffness API is native-only; normalized interior residual < 1e-10. shell_patch_tests::mitc4_patch_test_distorted
  • MITC9 distorted patch: Element-level stiffness API is native-only; normalized interior residual < 1e-10. shell_patch_tests::mitc9_patch_test_distorted
  • DKT+CST distorted patch: Element-level stiffness API is native-only; normalized interior residual < 1e-10. shell_patch_tests::dkt_cst_patch_test_distorted
  • Curved shell distorted patch: Element-level stiffness API is native-only; normalized interior residual < 1e-10. shell_patch_tests::curved_shell_flat_patch_test_distorted
  • Solid shell distorted patch: Element-level stiffness API is native-only; normalized interior residual < 1e-10. shell_patch_tests::solid_shell_patch_test_distorted
  • SHB8 Scordelis–Lo roof: Solid-shell inputs are not exposed by the production web wrapper. solid_shell_locking::scordelis_lo_roof
  • SHB8 Pinched cylinder: Solid-shell inputs are not exposed by the production web wrapper. solid_shell_locking::pinched_cylinder_with_diaphragms
  • SHB8 Hemisphere with hole: Solid-shell inputs are not exposed by the production web wrapper. solid_shell_locking::hemisphere_with_hole

Cite this

Stabileo Research, “MacNeal–Harder (1985): engine benchmarks”, reproduction of Richard H. Macneal, Robert L. Harder (1985), doi:10.1016/0168-874x(85)90003-4. Implementation: engine/tests/benchmarks at commit 8068cd16ea2c. Engine: the Stabileo engine at the same commit. Permanent links to this exact build are planned.