Temperatures now strain the material in nonlinear steps instead of being refused. At finite strain the deformation gradient splits multiplicatively, F = F_m F_theta with F_theta = diag(1 + alpha_i dT) at each point: the material sees F_m and the loops run on the thermally expanded volume J_theta dV0 (mixed elements project det F_m), so the tangent stays consistent. At small strain the split is additive, and elements on their linear stiffness take the equivalent nodal forces as a dead load. The step's temperatures are its temperature loads, or the steady conduction of its temperature conditions and heat loads (one-way coupling, as the linear coupled step); both at once are refused. They ramp with the load factor from each material's reference temperature. Johnson-Cook plasticity softens at the point's temperature. Verified: free expansion and a fully constrained neo-Hookean block at 20 % thermal stretch, full and hybrid (exact); a bar held at its ends heated past yield (exact); the linear limit and the conducted temperatures against the linear solvers; tangents by central differences with a temperature field. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
FieldCraft
An open-source, clean-room CAE application in pure Rust: from a parametric SolidCraft part to a verified finite element analysis, with tetrahedral and hexahedral meshing, its own implicit, explicit, thermal and lattice Boltzmann solvers, and decks for Abaqus, Nastran and LS-DYNA. The desktop app, the command line and AI agents (over MCP) drive the same commands.
Status: early but working end to end — open a part, mesh it, define the analysis, solve, see the results. Hex meshing is the centre of gravity; the next large step is the nonlinear implicit solver that contact, elastomers and composites need. See ROADMAP.md.
An AI agent drives FieldCraft over MCP, each stage captioned with the tool it calls: it opens an I-beam, hex meshes it, defines the material, the clamp and a 1000 N tip load, solves, and shows the von Mises stress and the deformed shape (tip deflection 0.176 mm; beam theory with shear 0.177 mm). MP4 · regenerated by tools/demo-video.
What it does today
- Geometry in: SolidCraft designs (
.solidcraft) with persistent face, edge and body names, and face-tagged 3MF meshes; surface checks (weld, manifold, orientation, self-intersection). - Meshing: constrained Delaunay tetrahedra (tet4, tet10) with exact predicates and a certified validity gate; structured hex by sweeping, revolving and mapping (hex8, hex20; 16 of the 21 corpus parts mesh all-hex); 2D quad and tri meshes; quality metrics per element and set.
- Elements: solids (tet4, tet10, wedge6, hex8 with incompatible modes, hex20 full and reduced, hybrid u–p for near-incompressible materials), plane stress, plane strain and axisymmetric, trusses, Timoshenko beams, MITC3/MITC4 shells, springs, dashpots and point masses.
- Model: sets bound to geometry names, so they survive remeshing; isotropic and orthotropic
elasticity, J2 plasticity, Johnson–Cook damage, thermal properties; fixed, displacement,
symmetry and temperature conditions; forces, moments, pressure, gravity, centrifugal and heat
loads; reference points with kinematic and distributing couplings; undo, redo and a
text-diffable
.fieldcraftfile. - Solvers: linear static and frequency (supernodal Cholesky, block Lanczos); steady and transient heat transfer and coupled thermal stress; explicit dynamics with plasticity, damage, erosion and rigid walls; D3Q19 lattice Boltzmann flow with forces on the part's faces. Results never depend on the thread count.
- Decks: Abaqus, Nastran and LS-DYNA writers, each refusing by name what it cannot express.
- Results: contours of stress, strain and displacement with a legend, deformed shapes, mode shapes, explicit frames, probes and reaction sums; the analysis setup drawn in the viewport.
- Verification: every capability is checked against closed forms and published benchmarks
(NAFEMS, MacNeal–Harder, Scordelis–Lo) in
tests/oracle, with results frozen so they cannot drift: docs/oracle.md. - Driving it: a desktop app in the Craft family's layout, a CLI, a JSON control channel and an MCP server; every capability is a command (docs/features.md).
Build
cargo xtask ci # fmt, assets, licences, layers, clippy, tests, wasm
cargo xtask test --heavy # the heavy (ignored) tests and the doc tests
cargo run -p fieldcraft-cli -- commands # every command and its parameters
cargo run -p fieldcraft-cli -- run script.json # run a command script
cargo run -p fieldcraft-cli -- mcp # MCP server on stdio for AI agents (docs/mcp.md)
Rust 1.95 or later, with the wasm32-unknown-unknown target for cargo xtask ci.
Documentation
- Architecture: crates, layers and the meshing pipeline
- Element library and verification and validation
- Capability checklist and roadmap
- Libraries and licences
- AI agents (MCP):
claude mcp add fieldcraft -- /path/to/fieldcraft-cli mcp - Control protocol: driving the desktop app
- Contributing and agent instructions
License
Dual-licensed under MIT or Apache-2.0, at your option. Notices are in NOTICE; third-party licences in THIRD-PARTY-LICENSES.txt.
FieldCraft is an independent project, not affiliated with, sponsored or endorsed by Dassault Systèmes, MSC Software, Siemens or Ansys. Abaqus, Nastran, MSC Nastran, Simcenter Nastran and LS-DYNA are trademarks of their owners and are named only to describe file compatibility.
