Verification oracle: tests/oracle cases, cargo xtask oracle, fixtures, docs/oracle.md, CI job

The oracle binary (modelcraft-testkit) runs each case's recipe through the
command engine, measures its quantities by JSON pointers into step outputs
or commands, compares them with the cited references and the frozen
fixtures, and writes docs/oracle.md. 20 theory cases (patch tests of every
solid element, Timoshenko cantilevers, Lame, Kirsch, beam frequencies,
torsion and bending through couplings, explicit waves and impact, CDT
invariants), 8 published benchmarks (MacNeal-Harder patch, straight and
curved cantilevers, thick cylinder, Scordelis-Lo with solids, NAFEMS LE1,
LE10, FV32) and 10 pending cases with citations.

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-13 21:42:19 -04:00
1 parent a3cb6d749b
commit 6d9452ad84
144 files changed
+5162 -74

No files matched your search

+53
View File
@@ -0,0 +1,53 @@
{
"title": "Plate with a circular hole in tension (Kirsch)",
"kind": "theory",
"source": "Kirsch, Zeitschrift des VDI 42 (1898) 797–807; Timoshenko and Goodier, Theory of Elasticity, 3rd ed., 1970, §35",
"quantities": [
{
"id": "kt",
"quantity": "σ_xx at the top of the hole (0, 1, 0) over the remote stress",
"measure": {
"command": "solve.probe",
"params": {
"step": "Tension",
"at": [
[
0,
1.0,
0
]
]
},
"pointer": "/nodes/0/stress/0"
},
"value": 3.0,
"tolerance": {
"relative": 0.02
},
"reason": "the reference is the infinite plate; the finite plate (W = 60a, Heywood's width correction about +0.1%, and the loaded ends 30a away) raises the peak by a few tenths of a percent, and the stress extrapolated to the hole surface adds up to about 1%"
},
{
"id": "side",
"quantity": "σ_yy at the side of the hole (1, 0, 0) over the remote stress",
"measure": {
"command": "solve.probe",
"params": {
"step": "Tension",
"at": [
[
1.0,
0,
0
]
]
},
"pointer": "/nodes/0/stress/1"
},
"value": -1.0,
"tolerance": {
"relative": 0.03
},
"reason": "infinite-plate value −S; finite width and extrapolation as for Kt, on a smaller value"
}
]
}