Skip to content

Keystone v15: plate & shell bending — the MITC4 Reissner–Mindlin element#676

Merged
github-actions[bot] merged 1 commit into
mainfrom
claude/hopeful-keller-0q7uyg
Jul 24, 2026
Merged

Keystone v15: plate & shell bending — the MITC4 Reissner–Mindlin element#676
github-actions[bot] merged 1 commit into
mainfrom
claude/hopeful-keller-0q7uyg

Conversation

@kkd16

@kkd16 kkd16 commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Keystone v15 — Plate & Shell Bending (out-of-plane FEM)

Everything in Keystone so far bends in its own plane (trusses, frames, plane-stress membranes). A floor slab, a bridge deck, a pressure-vessel wall, a manhole cover, a silicon die all bend out of plane — a different element family (3 DOF/node: a transverse deflection w and two rotations θx, θy) and a whole new chapter. This PR adds it, built from scratch.

Why MITC4

A naive 4-node Reissner–Mindlin plate shear-locks: as the plate thins, spurious transverse-shear stiffness makes it come out orders of magnitude too stiff. The MITC4 element (Dvorkin & Bathe, 1984) replaces the directly-differentiated shear with an assumed covariant shear field tied at the four edge midpoints, mapped back through the Jacobian — locking-free in the thin limit, still valid for thick plates. It's the workhorse plate/shell element in real FE codes.

What's here

  • engine/plate.ts — the MITC4 element: Q4 shape functions & Jacobian, the bending B-matrix, the assumed-natural-strain shear B-matrix (the anti-locking heart), the D_b/D_s constitutive matrices, 12×12 stiffness + consistent mass (translational + rotary inertia), pressure load, and Gauss-point moment / principal-moment recovery. Pure & deterministic.
  • engine/platemesh.ts — structured rectangular plate mesher (3 DOF/node) + edge-node sets.
  • engine/platesolve.ts — global assembly on the existing sparse Assembler/CSR + PCG; free / simply-supported / clamped edges + corner supports; static solve under uniform / point / hydrostatic load; smooth nodal moment field (Gauss→node extrapolation, matching the app's Q4/Q8 recovery); free-vibration modes K φ = ω² M φ by subspace (Bathe) iteration.
  • engine/platepresets.ts — 8 scenarios (SS slab, clamped cover, 2:1 panel, point-loaded SS/clamped squares, corner-supported flat slab, cantilever plate, hydrostatic tank wall) × 5 materials, with the classical Timoshenko coefficients.
  • ui/PlateStudio.tsx — a new Plate Bending tab: an orbitable 3-D deflected surface (flat-shaded on the true deflected normal, painter-sorted, drag to orbit / scroll to zoom) draped with deflection or Mx / My / Mxy / M₁, a top-down contour view, animated mode shapes, and a live FE-vs-Timoshenko read-out.

Validation (the same "trust the numbers" contract as the rest of Keystone)

Four new closed-form benchmarks wired into the live badge — now 88/88, all green — each matched against Timoshenko & Woinowsky-Krieger:

Case Closed form Rel. error
SS square, UDL w_c = 0.004062 q a⁴/D 0.27%
Clamped square, UDL w_c = 0.00126 q a⁴/D 0.53%
SS square, central point load w_c = 0.01160 P a²/D 0.31%
SS square, fundamental frequency f₁ = π²(2/a²)√(D/ρt)/2π 0.09%

Verified end-to-end in headless Chromium: the simply-supported slab renders as a clean 3-D sag, the numbers match theory, badge green, zero runtime errors.

Scope

Every changed file is inside projects/keystone-fea-b3k9/ (Golden Rule). node scripts/verify-project.mjs keystone-fea-b3k9 passes: scope + conformance + lint + build.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HyixyGQHuUL7EFNkXM94Ud


Generated by Claude Code

Keystone's first out-of-plane analysis. Adds a from-scratch MITC4 plate
element (assumed-natural-strain transverse shear, tied at the edge midpoints,
so it does not shear-lock in the thin limit), a rectangular plate mesher, a
solver (static under uniform/point/hydrostatic load with free/SS/clamped edges
and corner supports, smooth recovered Mx/My/Mxy/principal-moment fields, and
free-vibration modes by subspace iteration), eight canonical scenarios across
five materials, and a new Plate Bending studio with an orbitable flat-shaded
3-D deflected surface, a contour view, animated mode shapes and a live
FE-vs-Timoshenko check.

Four new closed-form benchmarks (SS & clamped square under UDL, SS square
point load, SS fundamental frequency) all pass — badge now 88/88 — each matched
to a fraction of a percent against Timoshenko & Woinowsky-Krieger. Verified
rendering end-to-end in headless Chromium.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HyixyGQHuUL7EFNkXM94Ud

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Scope + lint + build passed.

@github-actions
github-actions Bot merged commit 3abc914 into main Jul 24, 2026
2 checks passed
@github-actions
github-actions Bot deleted the claude/hopeful-keller-0q7uyg branch July 24, 2026 08:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants