forked from 1b-agent/fieldcraft-upstream
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
67 lines
1.6 KiB
JSON
67 lines
1.6 KiB
JSON
{
|
||
"title": "Elastic wave in a bar from a pressure step (explicit)",
|
||
"kind": "theory",
|
||
"source": "d'Alembert's solution of the one-dimensional wave equation: c = √(E/ρ), particle velocity v = p/(ρc); Graff, Wave Motion in Elastic Solids, Dover 1991, §2.1",
|
||
"quantities": [
|
||
{
|
||
"id": "u_end",
|
||
"quantity": "displacement of the loaded end at t = 0.06",
|
||
"measure": {
|
||
"command": "solve.probe",
|
||
"params": {
|
||
"step": "Wave",
|
||
"at": [
|
||
[
|
||
10.0,
|
||
0,
|
||
0
|
||
]
|
||
]
|
||
},
|
||
"pointer": "/nodes/0/displacement/0"
|
||
},
|
||
"value": -0.0006,
|
||
"tolerance": {
|
||
"relative": 0.01
|
||
},
|
||
"reason": "the end moves at the particle velocity p/(ρc) from the start; the discrete wave's ringing behind the front changes the end's displacement by well under 1%"
|
||
},
|
||
{
|
||
"id": "v_mid",
|
||
"quantity": "particle velocity at x = 5, 20 elements behind the front, at t = 0.06",
|
||
"measure": {
|
||
"command": "solve.probe",
|
||
"params": {
|
||
"step": "Wave",
|
||
"at": [
|
||
[
|
||
5.0,
|
||
0,
|
||
0
|
||
]
|
||
]
|
||
},
|
||
"pointer": "/nodes/0/velocity/0"
|
||
},
|
||
"value": -0.01,
|
||
"tolerance": {
|
||
"relative": 0.02
|
||
},
|
||
"reason": "central differences ring behind a step front (dispersion); bulk viscosity damps it within a few elements, leaving about 1% twenty elements behind"
|
||
},
|
||
{
|
||
"id": "balance",
|
||
"quantity": "energy balance error",
|
||
"measure": {
|
||
"from": "solve",
|
||
"pointer": "/energy_balance"
|
||
},
|
||
"value": 0.0,
|
||
"tolerance": {
|
||
"absolute": 0.01
|
||
},
|
||
"reason": "external work = kinetic + internal + dissipated energy; the solver warns above 1%"
|
||
}
|
||
]
|
||
}
|