docs: element library plan, family by family (#30)

Owner 2026-10-13: cover the element families a full CAE code offers, simple ones first (1D and
2D). docs/elements.md lists point/discrete, 1D, 2D, shell/membrane, 3D and special-purpose
families with status and the task that brings each.


Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

Co-authored-by: jyviko <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
This commit is contained in:
authored and GitHub committed 2026-10-13 18:36:44 -04:00
1 parent d45a2da5b5
commit e688f6f934
2 files changed
+83 -1

No files matched your search

+1 -1
View File
@@ -22,7 +22,7 @@ hex meshes today and it gives the best elements where stresses are read.
| M1 Geometry in and surface preparation | Open `.solidcraft` designs with persistent face names, assemblies placed (done); face-tagged 3MF (done); test corpus, `cargo xtask corpus` (done); exact predicates (done); quality metrics and certified validity gate (done); weld, closed/manifold/orientation and self-intersection checks, feature edges (`modelcraft-mesh::surface`, `mesh.surface.check`, done) | in progress |
| M2 Tet meshing and size field | Size field (global, per face and edge seeds, curvature and proximity; the `modelcraft_mesh::size::SizeField` trait and edge-division helpers are in); Bowyer–Watson Delaunay (exact, symbolic perturbation, verified; `modelcraft-mesh::delaunay`, done); robust CDT boundary recovery (Diazzi et al. 2023); Delaunay refinement, ODT smoothing, sliver removal; tet4 and tet10 with mid-side nodes on the B-rep; mesh verify per set | in progress |
| M3 First deck | Sets and surfaces bound to SolidCraft face, edge, vertex and body names, resolved after meshing; materials (isotropic and orthotropic elastic, density) with a unit-system label and consistency check; sections (solid, shell, beam profiles) assigned by set; element formulation per region mapped to each solver; BCs (fixed, displacement, symmetry); loads (force and moment on reference points, pressure, gravity); reference points with kinematic and distributing coupling; steps (linear static, frequency) with explicit per-step load and BC tables and output presets; `model.check` naming every missing or bad item; `model.*` and `mesh.tag` commands (model definition: done); writers for Abaqus input (done: `deck.write`), Nastran SOL 101/103 (done: `deck.write`) and LS-DYNA implicit (done); the `.modelcraft` file (text definition, binary mesh, geometry references reopened on load, journal; atomic saves, autosave and recovery; undo/redo on the journal: done) | in progress |
| M4 Own solver and first results | Linear static and modal solver (tet4/10, wedge6, hex8, hex20; sparse direct, Lanczos), verified against analytic solutions (solver: done — `modelcraft-fem` kernels, `modelcraft-solver` with nested dissection, sparse Cholesky and block Lanczos, `solve.static`/`solve.frequency`/`solve.probe`, patch, cantilever, Lamé, Kirsch and beam-frequency tests; reference points with kinematic and distributing couplings and moments by master–slave constraint elimination, verified by rigid motion, clamping, Saint-Venant tension, bending and tube torsion); deformed shape, contours, mode shapes, probes, reaction sums | started |
| M4 Own solver and first results | Element library per docs/elements.md (1D and 2D first); Linear static and modal solver (tet4/10, wedge6, hex8, hex20; sparse direct, Lanczos), verified against analytic solutions (solver: done — `modelcraft-fem` kernels, `modelcraft-solver` with nested dissection, sparse Cholesky and block Lanczos, `solve.static`/`solve.frequency`/`solve.probe`, patch, cantilever, Lamé, Kirsch and beam-frequency tests; reference points with kinematic and distributing couplings and moments by master–slave constraint elimination, verified by rigid motion, clamping, Saint-Venant tension, bending and tube torsion); deformed shape, contours, mode shapes, probes, reaction sums | started |
| M5 Structured hex | 2D quad meshing of faces (`modelcraft-mesh::quad`: transfinite mapped meshes, free all-quad meshes of polygons with holes on prescribed boundary nodes, exact planar quad validity, shared `SizeField` and even edge divisions; done for planar faces); mapped hex of six-sided regions; sweep meshing; conforming interfaces and tet–hex transition; automatic decomposition into sweepable and mappable regions, proposed as SolidCraft splits | started |
| M6 Automatic hex | Octree/grid-dual all-hex for any part; hex-dominant by tet recombination; polycube for blocky parts; smoothing, untangling, boundary padding, layers through thin walls; mesh editing and orphan-mesh import | planned |
| M7 Assemblies and contact | Part instances from SolidCraft occurrences; tie between non-matching meshes; general and pairwise contact with automatic pair detection, friction; bolt pretension, springs, point masses; amplitudes, multiple steps; nonlinear static steps in decks | planned |
+82
View File
@@ -0,0 +1,82 @@
# Element library
ModelCraft's finite element library (`crates/fem`), family by family, with status. The scope is
modelled on what a full CAE code offers (Abaqus's element library is the reference for breadth);
names, formulations and tests are our own, written from the published literature. Deck writers map
each of our elements to each solver's name (see `crates/decks`). Simple elements first: 1D and 2D,
then shells, special-purpose and multiphysics elements.
Status: **done** (on main, verified against analytic solutions), **in progress** (an agent task is
open), **planned**.
## Point and discrete elements
| Element | Use | Status |
|---|---|---|
| Point mass | Lumped mass at a node or reference point (isotropic or per direction) | in progress (1D elements I) |
| Rotary inertia | Inertia tensor at a 6-DOF node | in progress (1D elements I) |
| Spring to ground / two-point spring | Linear spring in a fixed direction or along the line of nodes | in progress (1D elements I) |
| Dashpot to ground / two-point | Linear viscous damper (dynamic steps; ignored in static) | in progress (1D elements I) |
| Nonstructural mass | Mass spread over a region without stiffness | planned |
| Connectors | Kinematic joints (hinge, slot, universal…) with elasticity, damping, stops | planned (M7) |
## 1D elements
| Element | Use | Status |
|---|---|---|
| Truss, 2-node (2D and 3D) | Axial members, cables (compression allowed) | in progress (1D elements I) |
| Truss, 3-node (2D and 3D) | Curved axial members | in progress (1D elements I) |
| Beam, 2-node Timoshenko, 3D | Frames, stiffeners; shear deformable | in progress (shells and beams) |
| Beam, 2-node Euler–Bernoulli (cubic), 2D and 3D | Slender frames; exact for end-loaded prismatic members | planned (1D elements II) |
| Beam, 3-node Timoshenko (quadratic), 2D and 3D | Curved and stocky beams | planned (1D elements II) |
| Beam, 2D (planar frames) | In-plane frames with 3 DOFs per node | planned (1D elements II) |
| Pipe / elbow | Pipes with internal pressure, ovalisation | planned (1D elements II) |
| Open-section beams with warping | Thin-walled sections in torsion | planned |
| Rebar / stringers | Reinforcement along edges or embedded | planned |
## 2D elements
| Element | Use | Status |
|---|---|---|
| Plane stress tri3, tri6, quad4, quad8 | Thin plates loaded in their plane | in progress (2D elements) |
| Plane strain tri3, tri6, quad4, quad8 | Long sections (dams, tunnels, extrusions) | in progress (2D elements) |
| Axisymmetric tri3, tri6, quad4, quad8 | Revolved solids (shafts, vessels, discs) | in progress (2D elements) |
| Incompatible-mode and reduced-integration quads | Bending-accurate and cheap variants | in progress (2D elements) |
| Generalized plane strain | Plane strain with a free out-of-plane strain | planned |
| Axisymmetric with twist | Revolved parts under torsion | planned |
| Axisymmetric shells (2-node, 3-node) | Thin revolved shells (tanks, domes) | planned |
| Hybrid (mixed u–p) variants | Nearly incompressible materials | planned |
## Shells and membranes
| Element | Use | Status |
|---|---|---|
| Shell quad4 (MITC4), triangle (locking-free) | Thin and thick shells | in progress (shells and beams) |
| Shell quad8 / tri6 | Curved thick shells | planned |
| Continuum shells (8-node, on swept hex) | Thick-to-thin shells, composites through thickness | planned (M8) |
| Membranes (tri3, quad4, quad8) | Fabrics, inflatables, skins without bending | planned |
| Surface elements | Massless surfaces for loads and contact | planned |
| Composite layups on shells | Ply tables, orientations | planned (M8) |
## 3D solids
| Element | Use | Status |
|---|---|---|
| tet4, tet10 | Free meshes of any part | done |
| hex8 (full, incompatible modes), hex20 (full, reduced) | Structured and swept meshes | done |
| wedge6 | Swept meshes from triangles, transitions | done |
| hex8 one-point with hourglass control, nodal-pressure tet4 (explicit) | Explicit dynamics | done |
| wedge15, pyramid5/13 | Quadratic transitions, tet–hex transition | planned (M5) |
| Hybrid (mixed u–p) solids | Nearly incompressible materials (rubber) | planned (M8) |
| Modified quadratic tet (tet10 for contact/plasticity) | Robust quadratic tets | planned |
## Special-purpose and multiphysics
| Element | Use | Status |
|---|---|---|
| Cohesive (2D, 3D) | Adhesive layers, delamination | planned |
| Gasket | Through-thickness gasket behaviour | planned |
| Infinite elements | Unbounded domains | planned |
| Heat transfer (all shapes), coupled temperature–displacement | Thermal and thermal-stress analyses | planned (M8) |
| Acoustic | Fluid acoustics, structural–acoustic coupling | planned |
| Rigid elements | Rigid bodies from meshes | planned (M7) |