Files
OneCAD-Simulation/ROADMAP.md
T
29ae46ff84 Shells and beams: MITC4/MITC3 shells, Timoshenko beams, six-DOF nodes (M4) (#47)
* fem: MITC4/MITC3 flat shells and Timoshenko beams with profile properties (ElementDofs STRUCTURAL)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* solver: shells and beams on the DofLayout beside solids, 2D elements and trusses; analytic verification and tagged benchmarks

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* engine: probe rotations, reaction moments and shell and beam element results; docs for shells and beams

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

---------

Co-authored-by: jyviko <2501648+jyviko@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:00:25 -04:00

11 KiB
Raw Blame History

Roadmap

ModelCraft's goal is CAE modeling on par with Abaqus/CAE, Nastran pre-processors and LS-PrePost, with hexahedral meshing as the centre of gravity, plus its own linear solver. Abaqus/CAE is the reference for scope (its documentation is excellent and its solver strong); its application is where we aim to be clearly better: parametric geometry from SolidCraft, sets that survive remeshing, automatic hex partitioning, undo, a text-diffable model and agent control. The capability checklist is docs/parity.md. Beyond the pre-processor and the linear solver come our own explicit, CFD (lattice Boltzmann) and fluid–structure solvers (M10–M14; methods and papers in docs/solvers/literature.md).

Order (revised 2026-10-13): one end-to-end slice first — SolidCraft part → named faces → sets → mesh → material and section → BCs and loads → static and frequency steps → Abaqus, Nastran and LS-DYNA decks and our own solve → contour plot — on tet meshes, so every hex mesher lands in a pipeline that already produces solvable, verified models. Then hex: structured (sweep and mapped, with partitions proposed automatically) before octree all-hex, because that is how analysts get hex meshes today and it gives the best elements where stresses are read.

Milestone Scope Status
M0 Foundation Workspace, quality gates, FE model, command engine with rollback and panic guard, CLI, geometry boundary on SolidCraft done
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: implicit LNC Steiner points on segments, gift-wrapping facet recovery, inside/outside labelling, B-rep face tags on boundary tet faces, few-ulp rounding repair checked by the validity gate; modelcraft-mesh::cdt and mesh.tet.generate, done: all 20 valid corpus parts); 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 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; 1D elements I: rod2/rod3 trusses, point masses, rotary inertia, springs and dashpots in both solvers and all three decks, verified by the method of joints, the three-bar truss, spring–mass, two-mass chain and torsional pendulum frequencies, and damped decay; 2D elements: plane stress, plane strain and axisymmetric tri3, tri6, quad4 (incompatible modes QM6), quad8 with two degrees of freedom per node, centrifugal loads, mesh.planar 2D meshes of polygons and planar faces, verified by patch tests, Kirsch, Lamé (plane strain and axisymmetric), rotating discs and cylinders, and a plane stress cantilever; deck mapping to Abaqus CPS/CPE/CAX, Nastran membranes, LS-DYNA ELFORM 12/13); shells and beams (done: quad4 MITC4 and tri3 MITC3 flat shells with a Hughes–Brezzi drilling rotation, two-node Timoshenko beams with profile properties and orientations, six degrees of freedom at shell and beam nodes shared with solids and trusses, section forces and surface stresses, verified by shell patch tests, Navier's plate, cantilever and portal-frame beams, and the Scordelis–Lo and pinched-cylinder benchmarks); results display (done: results.* commands, deformed shape to scale, banded contours of displacement, von Mises, principal and component stresses with a legend, mode shapes with their frequencies and animation, probing a node by clicking it, reaction force and moment sums per set, stale results marked after an edit; explicit steps: field frames by slider or animation with contours per frame, energy histories plotted) 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, connectors; amplitudes, multiple steps; nonlinear static steps in decks planned
M8 Materials, explicit, shells, composites Plasticity, hyperelasticity, damage data per solver; explicit dynamics decks (Abaqus/Explicit, LS-DYNA); midsurface shells; composite layups and material orientations, continuum shells on swept hex; heat transfer planned
M9 Post-processing and deck readers Results readers for public formats (Nastran OP2, LS-DYNA d3plot, Abaqus .fil); XY and path plots, cuts, display groups, free-body forces; deck readers that keep unknown keywords; mesh convergence studies planned
M10 Explicit dynamics Shared element and material kernels with the implicit solver (fem); central-difference solver with lumped mass, stable time step, one-point hex8 with hourglass control and nodal-pressure tet4, bulk viscosity, energy accounting (X1 core: done — modelcraft-explicit, explicit_dynamic steps with initial velocities, prescribed motion and planar rigid walls, solve.explicit/solve.history, small-strain linear elastic; bar wave, rigid-wall impact, energy balance and cantilever-period tests); large-deformation materials (X2: done — updated Lagrangian elements, Jaumann/Hughes–Winget and Green–Naghdi/Flanagan–Taylor rates, J2 bilinear/table plasticity, Johnson–Cook strength with heating and damage, erosion; materials gain plastic, damage, erosion with model.material.plasticity/damage; Dienes shear, rigid rotation, J2 uniaxial and Taylor-bar tests); contact (global search, penalty with friction, rigid walls); runs on hex and tet meshes started
M11 Equations of state and shells Polynomial, ideal-gas, Mie–Grüneisen, JWL with programmed burn, tabulated; energy coupling; shock verification (Rankine–Hugoniot, Sod, Noh, Sedov); Belytschko–Lin–Tsay shells with self-contact on quad meshes planned
M12 CFD: lattice Boltzmann D3Q19/D3Q27 on grids voxelised from the face-tagged surface; TRT, regularised and cumulant collision; interpolated walls, inlets and outlets; LES; octree refinement shared with the hex mesher; wgpu backend (deterministic per device, checked against the CPU) (CPU core: done — modelcraft-lbm with D3Q19 TRT and Guo forcing, halfway bounce-back and moving walls, slip and periodic faces, Zou–He velocity and pressure faces, exact voxelisation of obstacle bodies, momentum-exchange forces per face; fluid materials, fluid domains and fluid steps in the model; model.fluid_domain.*, solve.fluid; verified by Poiseuille channel and pipe, Couette, Taylor–Green decay, sphere-array Stokes drag and mass conservation; Schäfer–Turek 2D-1 as a benchmark) started
M13 Fluid–structure interaction Immersed-boundary coupling of the lattice Boltzmann fluid with the explicit or implicit structure; interface force transfer; sub-cycling; Aitken then interface quasi-Newton coupling; free-surface flow planned
M14 Blast and impact fluids EOS-driven fluids in the explicit solver: ALE multi-material or SPH, with fluid–structure contact planned
Continuous: verification and validation Every capability checked against theory (closed forms), experiments (published measurements) and published benchmarks (NAFEMS, vendor benchmark and verification manuals such as Abaqus's), each case our own model in tests/oracle/ with its cited reference and tolerance; cargo xtask oracle runs them and writes docs/oracle.md; once a case matches, our result is frozen as a fixture so fidelity cannot regress (docs/verification.md). Runner, fixtures and CI job: done; 26 theory cases (patch tests of every solid element, cantilevers, Lamé in 3D, plane strain and axisymmetric, Kirsch in 3D and plane stress, rotating disc and cylinder, beam frequencies, couplings, explicit waves, impact and J2 plasticity, CDT invariants), 9 published benchmarks (MacNeal–Harder solid tests, Scordelis–Lo with solids, NAFEMS LE1 in 3D and 2D, LE10, FV32) and 9 pending cases with citations (shells, thermal, static plasticity, Taylor bar, CFD); mesh.block mapped blocks and 2D patches build their meshes started
Continuous: desktop and agents Desktop app (viewport, model tree, commands, control channel, the open design drawn, ui.capture of the whole window offscreen: done; toolbar of every capability from the catalogue, ready or coming soon with its milestone, icons drawn with VectorCraft, docs/features.md: done), MCP server, browser build, command schema as the public API started