The demo used the corpus I-beam, which is extruded along z and so stood upright. A new corpus part, cantilever-i-beam, is the same section on the YZ plane extruded along x, web upright: a sweep along a horizontal axis for the meshers, and a cantilever that bends downward on screen. The i-beam part is unchanged (its corpus row and the meshing tests keep it). The demo clamps it at x = 0 and loads the free end with 1000 N in -z through a kinematic coupling, and now checks the solution against beam theory and stops when it is off: tip deflection (bending plus shear) within 3 %, root bending stress (stress_xx along the top flange, extrapolated to the root, nodes from the Abaqus deck) within 2 %. docs/meshing/corpus.md regenerated with the new part. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
Demo video
make.py regenerates the README's demo, docs/media/ibeam-analysis.mp4 and
docs/media/ibeam-analysis.gif: an agent analyses an I-beam cantilever over MCP while the
desktop app shows each step.
python3 tools/demo-video/make.py # build, run, encode into docs/media
python3 tools/demo-video/make.py --no-build # with the release binaries already built
python3 tools/demo-video/make.py --frames /tmp/f # also keep the captured pictures
Needs Python 3 (standard library only), a display for the app window (the pictures are drawn
offscreen, so a locked screen is fine) and ffmpeg with libx264 on the PATH (or FFMPEG).
It honours CARGO_TARGET_DIR.
What it does:
- Builds
fieldcraft,fieldcraft-cliand the testkit'scorpustool (release). - Writes the corpus cantilever I-beam (
tests/corpus/cantilever-i-beam: 40 x 40 mm, 3 mm flanges, a 2 mm web upright, 200 mm long along x) as a.solidcraftdesign to a temporary folder withcorpus --part cantilever-i-beam --design. - Starts the app with
--control PORTandfieldcraft-cli mcp --connect 127.0.0.1:PORT, and speaks MCP (JSON-RPC over stdio) to it. Every step is an MCP tool call:openthe design,mesh(hex_sweep, 4 mm),batch(steel, a solid section, the root clamp, a kinematic coupling of the free end at x = 200 mm to a reference point loaded with 1000 N down, −z),check_model,solve(static), andshow_resultsfor the von Mises contours and the deformed shape, itsscalestepped from 1 to 150 and back. Every picture is the MCPscreenshottool withsource: window(the whole window drawn offscreen,ui.capture), turned to theisoorfrontview by itsviewargument. - Encodes the pictures at 10 frames per second, each held for its stage, into the MP4 (H.264, 1280 px) and the GIF (960 px, its own palette), and prints the tip deflection and the peak von Mises stress.
The theme is the app's default (dark).
The script checks the solution against beam theory and stops when it is off. Tip deflection: P L³ / 3 E I = 0.1429 mm in bending plus P L / G A_web = 0.0335 mm in shear, 0.1763 mm; the solution gives 0.1764 mm (within 3 %). Root bending stress: P L c / I = 45.0 MPa (I = 88 871 mm⁴); the solution's stress_xx on the top flange, fitted along the beam between one depth from either end and extrapolated to the root, gives 44.8 MPa (within 2 %). At the root itself the clamp, which stops the section's Poisson contraction, adds a local peak (62 MPa stress_xx, 56 MPa von Mises) that beam theory does not have.