Keystone v15: plate & shell bending — the MITC4 Reissner–Mindlin element#676
Merged
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
wand 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), theD_b/D_sconstitutive 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 sparseAssembler/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 modesK φ = ω² 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 orMx / 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:
w_c = 0.004062 q a⁴/Dw_c = 0.00126 q a⁴/Dw_c = 0.01160 P a²/Df₁ = π²(2/a²)√(D/ρt)/2π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-b3k9passes: scope + conformance + lint + build.🤖 Generated with Claude Code
https://claude.ai/code/session_01HyixyGQHuUL7EFNkXM94Ud
Generated by Claude Code