demo video: a horizontal cantilever, checked against beam theory

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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
This commit is contained in:
jyvikoandClaude Opus 5.5 authored and Irakli Kourtis committed 2026-10-14 00:15:50 -04:00
1 parent 025c826dd4
commit 357de3f7a5
5 files changed
+121 -40

No files matched your search

+14 -7
View File
@@ -17,20 +17,27 @@ It honours `CARGO_TARGET_DIR`.
What it does:
1. Builds `fieldcraft`, `fieldcraft-cli` and the testkit's `corpus` tool (release).
2. Writes the corpus I-beam (`tests/corpus/i-beam`) as a `.solidcraft` design to a temporary
folder with `corpus --part i-beam --design`.
2. 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 `.solidcraft` design to a temporary
folder with `corpus --part cantilever-i-beam --design`.
3. Starts the app with `--control PORT` and `fieldcraft-cli mcp --connect 127.0.0.1:PORT`, and
speaks MCP (JSON-RPC over stdio) to it. Every step is an MCP tool call: `open` the design,
`mesh` (`hex_sweep`, 4 mm), `batch` (steel, a solid section, the root clamp, a kinematic
coupling of the free end to a reference point loaded with 1000 N), `check_model`, `solve`
coupling of the free end at x = 200 mm to a reference point loaded with 1000 N down, −z), `check_model`, `solve`
(`static`), and `show_results` for the von Mises contours and the deformed shape, its `scale`
stepped from 1 to 150 and back. Every picture is the MCP `screenshot` tool with
`source: window` (the whole window drawn offscreen, `ui.capture`), turned to the `iso` or
`right` view by its `view` argument.
`front` view by its `view` argument.
4. 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). Beam theory for the same beam gives a tip deflection of
0.143 mm in bending plus about 0.034 mm in shear (0.177 mm) and a root bending stress of 45 MPa;
the clamped root adds a local peak above that.
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.