# 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 — with a nonlinear implicit solver (large deformation, plasticity, rubber) now in place. Hex meshing is the centre of gravity. Next: buckling and arc-length, contact, then the wider material and multiphysics library. See [ROADMAP.md](ROADMAP.md). **Want to help?** Pick an issue labelled [good first issue](https://github.com/jyviko/fieldcraft/labels/good%20first%20issue) or [help wanted](https://github.com/jyviko/fieldcraft/labels/help%20wanted) and read [CONTRIBUTING.md](CONTRIBUTING.md).  *Claude driving FieldCraft through its [MCP server](docs/mcp.md): one prompt, and it opens the part, meshes it, defines and solves the analysis, then checks the tip deflection against beam theory. Real session, waits shortened. [Full video](docs/media/claude-mcp.mp4).*  An AI agent drives FieldCraft over [MCP](docs/mcp.md), 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](docs/media/ibeam-analysis.mp4) · regenerated by [tools/demo-video](tools/demo-video/README.md). ## Download [](https://github.com/jyviko/fieldcraft/releases/latest) [](https://github.com/jyviko/fieldcraft/releases/latest) [](https://github.com/jyviko/fieldcraft/releases/latest) [](https://jyviko.github.io/fieldcraft/) - **macOS:** open the `.dmg` and drag FieldCraft into Applications (Apple silicon and Intel). - **Windows:** unzip and run `fieldcraft.exe`. - **Linux:** the `.AppImage` (allow it to run as a program), or the `.tar.gz`. - **Browser:** [try it at jyviko.github.io/fieldcraft](https://jyviko.github.io/fieldcraft/), no install. - **Command line:** `fieldcraft-cli` ships in every package; AI agents connect to it over MCP ([docs/mcp.md](docs/mcp.md)). Every release lists its checksums in `SHA256SUMS.txt`. Building from source is in [CONTRIBUTING.md](CONTRIBUTING.md#get-it-running-about-10-minutes-on-a-fast-machine). ## Hex meshing a part that does not sweep A filleted L-bracket with a hole through each leg cannot be swept in one piece. Split into 30 cells in SolidCraft, FieldCraft meshes it all-hex as one conforming mesh — O-grids round the holes, graded through the fillet — and its hex20 tip deflection matches a fine tet10 solution to 0.1 %. The same part also meshes all-hex automatically with the octree mesher (`mesh.hex.octree`). | Cells | Conforming hex mesh | Von Mises (clamp and load drawn) | |---|---|---| |  |  |  | ## 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; Delaunay refinement, smoothing and sliver removal; structured hex by sweeping, revolving and mapping (hex8, hex20), and conforming multi-block hex across a part split into cells (`mesh.hex.blocks`); unstructured octree all-hex for any part (`mesh.hex.octree`); 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 (isotropic and kinematic hardening, Johnson–Cook), Johnson–Cook damage, neo-Hookean, Mooney–Rivlin and Yeoh hyperelasticity, 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 `.fieldcraft` file. - **Solvers:** linear static and frequency (supernodal Cholesky, block Lanczos); nonlinear static by Newton–Raphson with automatic increments — large deformation (total Lagrangian) on every solid element, follower pressure, finite- and small-strain plasticity sharing one return map with the explicit solver, rubber and thermal strain, with measured quadratic convergence; 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 and nonlinear frames, probes and reaction sums; supports, loads, reference points and couplings drawn in the viewport. - **Verification:** every capability is checked against closed forms and published benchmarks (NAFEMS, MacNeal–Harder, Scordelis–Lo, the elastica, Hill's plastic cylinder, Rivlin's tube) in [`tests/oracle`](tests/oracle), with results frozen so they cannot drift: 170 of 176 quantities pass in 50 cases, the 6 others documented known failures ([docs/oracle.md](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](docs/features.md)).  ## Examples Ready-to-solve samples: open one from **File ▸ Samples** (or the start screen), or start the app with `fieldcraft --sample NAME`, and press **Solve**. Each opens and solves within half a minute and is checked against a closed form or a reference solution ([docs/examples.md](docs/examples.md)).
![]() Drop test ( drop-test): an aluminium bracket dropped 2 m onto a tilted floor; explicit dynamics, the strike's stress waves |
![]() Rubber seal ( rubber-seal): a Mooney–Rivlin gasket ring squeezed 25 %; nonlinear static, large strain |
![]() Heated bracket ( heated-bracket): a clamped steel bracket heated at one end; steady heat and thermal stress |
![]() Hex-meshed bracket ( bracket-hex): the bracket split into 30 cells, meshed all-hex (hex20), von Mises |
![]() Bicycle crank arm ( crank-arm): an aluminium crank swept all-hex (hex20), a rider's weight on the pedal; root bending within 0.3 % of M/Z |
No picture yet: the viewport does not draw flow results (M12). Flow past a bracket ( flow-past): air past an L-bracket on the floor; lattice Boltzmann flow, the drag and the force on each face |