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 <[email protected]> Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
59 lines
13 KiB
JSON
59 lines
13 KiB
JSON
[
|
|
{"command": "mesh.block", "params": {"body": "Cylinder1", "kind": "hex8", "corners": [[3.0, 0, 0.0], [3.5, 0, 0.0], [0, 3.5, 0.0], [0, 3.0, 0.0], [3.0, 0, 1.0], [3.5, 0, 1.0], [0, 3.5, 1.0], [0, 3.0, 1.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 0.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 0.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 1.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 1.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1", "6": "bore"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder1", "kind": "hex8", "corners": [[3.5, 0, 0.0], [4.2, 0, 0.0], [0, 4.2, 0.0], [0, 3.5, 0.0], [3.5, 0, 1.0], [4.2, 0, 1.0], [0, 4.2, 1.0], [0, 3.5, 1.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 0.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 0.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 1.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 1.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder1", "kind": "hex8", "corners": [[4.2, 0, 0.0], [5.2, 0, 0.0], [0, 5.2, 0.0], [0, 4.2, 0.0], [4.2, 0, 1.0], [5.2, 0, 1.0], [0, 5.2, 1.0], [0, 4.2, 1.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 0.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 0.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 1.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 1.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder1", "kind": "hex8", "corners": [[5.2, 0, 0.0], [6.75, 0, 0.0], [0, 6.75, 0.0], [0, 5.2, 0.0], [5.2, 0, 1.0], [6.75, 0, 1.0], [0, 6.75, 1.0], [0, 5.2, 1.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 0.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 0.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 1.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 1.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder1", "kind": "hex8", "corners": [[6.75, 0, 0.0], [9.0, 0, 0.0], [0, 9.0, 0.0], [0, 6.75, 0.0], [6.75, 0, 1.0], [9.0, 0, 1.0], [0, 9.0, 1.0], [0, 6.75, 1.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 0.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 0.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 1.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 1.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "model.set.create", "params": {"name": "all1", "geometry": [{"body": "Cylinder1"}]}},
|
|
{"command": "model.set.create", "params": {"name": "x01", "geometry": [{"body": "Cylinder1", "face": "x0"}]}},
|
|
{"command": "model.set.create", "params": {"name": "y01", "geometry": [{"body": "Cylinder1", "face": "y0"}]}},
|
|
{"command": "model.set.create", "params": {"name": "z01", "geometry": [{"body": "Cylinder1", "face": "z0"}]}},
|
|
{"command": "model.set.create", "params": {"name": "z11", "geometry": [{"body": "Cylinder1", "face": "z1"}]}},
|
|
{"command": "model.set.create", "params": {"name": "bore1", "geometry": [{"body": "Cylinder1", "face": "bore"}]}},
|
|
{"command": "model.material.create", "params": {"name": "Mat1", "elastic": {"type": "isotropic", "young": 1000.0, "poisson": 0.49}}},
|
|
{"command": "model.section.create", "params": {"name": "s1", "set": "all1", "material": "Mat1", "kind": {"type": "solid"}, "formulation": {"incompatible_modes": true}}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "sx1", "type": "symmetry", "target": {"set": "x01"}, "plane": "x"}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "sy1", "type": "symmetry", "target": {"set": "y01"}, "plane": "y"}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "sza1", "type": "symmetry", "target": {"set": "z01"}, "plane": "z"}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "szb1", "type": "symmetry", "target": {"set": "z11"}, "plane": "z"}},
|
|
{"command": "model.load.create", "params": {"name": "p1", "type": "pressure", "set": "bore1", "magnitude": 1.0}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder2", "kind": "hex8", "corners": [[3.0, 0, 2.0], [3.5, 0, 2.0], [0, 3.5, 2.0], [0, 3.0, 2.0], [3.0, 0, 3.0], [3.5, 0, 3.0], [0, 3.5, 3.0], [0, 3.0, 3.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 2.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 2.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 3.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 3.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1", "6": "bore"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder2", "kind": "hex8", "corners": [[3.5, 0, 2.0], [4.2, 0, 2.0], [0, 4.2, 2.0], [0, 3.5, 2.0], [3.5, 0, 3.0], [4.2, 0, 3.0], [0, 4.2, 3.0], [0, 3.5, 3.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 2.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 2.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 3.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 3.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder2", "kind": "hex8", "corners": [[4.2, 0, 2.0], [5.2, 0, 2.0], [0, 5.2, 2.0], [0, 4.2, 2.0], [4.2, 0, 3.0], [5.2, 0, 3.0], [0, 5.2, 3.0], [0, 4.2, 3.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 2.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 2.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 3.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 3.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder2", "kind": "hex8", "corners": [[5.2, 0, 2.0], [6.75, 0, 2.0], [0, 6.75, 2.0], [0, 5.2, 2.0], [5.2, 0, 3.0], [6.75, 0, 3.0], [0, 6.75, 3.0], [0, 5.2, 3.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 2.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 2.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 3.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 3.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder2", "kind": "hex8", "corners": [[6.75, 0, 2.0], [9.0, 0, 2.0], [0, 9.0, 2.0], [0, 6.75, 2.0], [6.75, 0, 3.0], [9.0, 0, 3.0], [0, 9.0, 3.0], [0, 6.75, 3.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 2.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 2.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 3.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 3.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "model.set.create", "params": {"name": "all2", "geometry": [{"body": "Cylinder2"}]}},
|
|
{"command": "model.set.create", "params": {"name": "x02", "geometry": [{"body": "Cylinder2", "face": "x0"}]}},
|
|
{"command": "model.set.create", "params": {"name": "y02", "geometry": [{"body": "Cylinder2", "face": "y0"}]}},
|
|
{"command": "model.set.create", "params": {"name": "z02", "geometry": [{"body": "Cylinder2", "face": "z0"}]}},
|
|
{"command": "model.set.create", "params": {"name": "z12", "geometry": [{"body": "Cylinder2", "face": "z1"}]}},
|
|
{"command": "model.set.create", "params": {"name": "bore2", "geometry": [{"body": "Cylinder2", "face": "bore"}]}},
|
|
{"command": "model.material.create", "params": {"name": "Mat2", "elastic": {"type": "isotropic", "young": 1000.0, "poisson": 0.499}}},
|
|
{"command": "model.section.create", "params": {"name": "s2", "set": "all2", "material": "Mat2", "kind": {"type": "solid"}, "formulation": {"incompatible_modes": true}}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "sx2", "type": "symmetry", "target": {"set": "x02"}, "plane": "x"}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "sy2", "type": "symmetry", "target": {"set": "y02"}, "plane": "y"}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "sza2", "type": "symmetry", "target": {"set": "z02"}, "plane": "z"}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "szb2", "type": "symmetry", "target": {"set": "z12"}, "plane": "z"}},
|
|
{"command": "model.load.create", "params": {"name": "p2", "type": "pressure", "set": "bore2", "magnitude": 1.0}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder3", "kind": "hex8", "corners": [[3.0, 0, 4.0], [3.5, 0, 4.0], [0, 3.5, 4.0], [0, 3.0, 4.0], [3.0, 0, 5.0], [3.5, 0, 5.0], [0, 3.5, 5.0], [0, 3.0, 5.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 4.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 4.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 5.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 5.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1", "6": "bore"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder3", "kind": "hex8", "corners": [[3.5, 0, 4.0], [4.2, 0, 4.0], [0, 4.2, 4.0], [0, 3.5, 4.0], [3.5, 0, 5.0], [4.2, 0, 5.0], [0, 4.2, 5.0], [0, 3.5, 5.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 4.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 4.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 5.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 5.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder3", "kind": "hex8", "corners": [[4.2, 0, 4.0], [5.2, 0, 4.0], [0, 5.2, 4.0], [0, 4.2, 4.0], [4.2, 0, 5.0], [5.2, 0, 5.0], [0, 5.2, 5.0], [0, 4.2, 5.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 4.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 4.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 5.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 5.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder3", "kind": "hex8", "corners": [[5.2, 0, 4.0], [6.75, 0, 4.0], [0, 6.75, 4.0], [0, 5.2, 4.0], [5.2, 0, 5.0], [6.75, 0, 5.0], [0, 6.75, 5.0], [0, 5.2, 5.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 4.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 4.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 5.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 5.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "mesh.block", "params": {"body": "Cylinder3", "kind": "hex8", "corners": [[6.75, 0, 4.0], [9.0, 0, 4.0], [0, 9.0, 4.0], [0, 6.75, 4.0], [6.75, 0, 5.0], [9.0, 0, 5.0], [0, 9.0, 5.0], [0, 6.75, 5.0]], "divisions": [1, 9, 1], "edges": [{"corners": [1, 4], "arc": {"center": [0, 0, 4.0]}}, {"corners": [2, 3], "arc": {"center": [0, 0, 4.0]}}, {"corners": [5, 8], "arc": {"center": [0, 0, 5.0]}}, {"corners": [6, 7], "arc": {"center": [0, 0, 5.0]}}], "faces": {"3": "y0", "5": "x0", "1": "z0", "2": "z1"}}},
|
|
{"command": "model.set.create", "params": {"name": "all3", "geometry": [{"body": "Cylinder3"}]}},
|
|
{"command": "model.set.create", "params": {"name": "x03", "geometry": [{"body": "Cylinder3", "face": "x0"}]}},
|
|
{"command": "model.set.create", "params": {"name": "y03", "geometry": [{"body": "Cylinder3", "face": "y0"}]}},
|
|
{"command": "model.set.create", "params": {"name": "z03", "geometry": [{"body": "Cylinder3", "face": "z0"}]}},
|
|
{"command": "model.set.create", "params": {"name": "z13", "geometry": [{"body": "Cylinder3", "face": "z1"}]}},
|
|
{"command": "model.set.create", "params": {"name": "bore3", "geometry": [{"body": "Cylinder3", "face": "bore"}]}},
|
|
{"command": "model.material.create", "params": {"name": "Mat3", "elastic": {"type": "isotropic", "young": 1000.0, "poisson": 0.4999}}},
|
|
{"command": "model.section.create", "params": {"name": "s3", "set": "all3", "material": "Mat3", "kind": {"type": "solid"}, "formulation": {"incompatible_modes": true}}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "sx3", "type": "symmetry", "target": {"set": "x03"}, "plane": "x"}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "sy3", "type": "symmetry", "target": {"set": "y03"}, "plane": "y"}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "sza3", "type": "symmetry", "target": {"set": "z03"}, "plane": "z"}},
|
|
{"command": "model.boundary_condition.create", "params": {"name": "szb3", "type": "symmetry", "target": {"set": "z13"}, "plane": "z"}},
|
|
{"command": "model.load.create", "params": {"name": "p3", "type": "pressure", "set": "bore3", "magnitude": 1.0}},
|
|
{"command": "model.step.create", "params": {"name": "Pressure", "procedure": {"type": "static"}, "boundary_conditions": ["sx1", "sy1", "sza1", "szb1", "sx2", "sy2", "sza2", "szb2", "sx3", "sy3", "sza3", "szb3"], "loads": ["p1", "p2", "p3"]}},
|
|
{"command": "solve.static", "params": {}, "id": "solve"}
|
|
]
|