forked from 1b-agent/fieldcraft-upstream
verification: Euler columns and Bryan's plate in buckling steps
buckle-euler-pinned and buckle-euler-cantilever (hex20 columns, −0.18 % from Euler with Engesser's shear correction) and buckle-plate-square (a simply supported square plate, b/t = 100, −0.39 % from k = 4; the support and thickness choices in its README). ROADMAP and parity updated, docs/oracle.md regenerated. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
1b57e2e672
commit
788edbbddd
15 files changed
+161
-3
No files matched your search
@@ -0,0 +1,5 @@
|
||||
# Euler buckling of a clamped–free column of solids
|
||||
|
||||
A square column, length 10, side 1, E = 1000, ν = 0 (2 × 2 × 10 hex20), clamped at its base and
|
||||
pressed by a unit dead pressure on its free top: effective length 20. Reference: Euler with
|
||||
Engesser's shear correction.
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"title": "Euler buckling of a clamped–free column of solids",
|
||||
"kind": "theory",
|
||||
"source": "Euler's column with Engesser's shear correction P = P_e/(1 + P_e/(κ G A)), κ = 5/6 (S. P. Timoshenko, J. M. Gere, Theory of Elastic Stability, 2nd ed., McGraw-Hill 1961, §2.1, §2.17): square section 1 × 1, E = 1000, ν = 0, length 10 clamped–free, effective length 20, P_e = π² E I/20², so σ_cr = P/A = 2.046071",
|
||||
"quantities": [
|
||||
{
|
||||
"id": "lambda",
|
||||
"quantity": "first buckling stress (load factor of a unit end pressure)",
|
||||
"measure": {
|
||||
"from": "solve",
|
||||
"pointer": "/modes/0/load_factor"
|
||||
},
|
||||
"value": 2.046070629714299,
|
||||
"tolerance": {
|
||||
"relative": 0.005
|
||||
},
|
||||
"reason": "hex20, 2 × 2 across and 10 along: the 3D solid's bending and shear against beam theory, and the preload concentrated at the held face"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"note": "FieldCraft's accepted results for this case, written by `cargo xtask oracle --bless`. A result outside its band fails CI.",
|
||||
"values": {
|
||||
"lambda": {
|
||||
"band": 2.0460706297142995e-9,
|
||||
"value": 2.042374584299829
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
[
|
||||
{"command": "mesh.block", "params": {"body": "Column", "kind": "hex20", "corners": [[0, 0, 0], [10.0, 0, 0], [10.0, 1.0, 0], [0, 1.0, 0], [0, 0, 1.0], [10.0, 0, 1.0], [10.0, 1.0, 1.0], [0, 1.0, 1.0]], "divisions": [10, 2, 2], "faces": {"6": "x0", "4": "x1"}}},
|
||||
{"command": "model.set.create", "params": {"name": "all", "geometry": [{"body": "Column"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "x0", "geometry": [{"body": "Column", "face": "x0"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "x1", "geometry": [{"body": "Column", "face": "x1"}]}},
|
||||
{"command": "model.material.create", "params": {"name": "Mat", "elastic": {"type": "isotropic", "young": 1000.0, "poisson": 0.0}}},
|
||||
{"command": "model.section.create", "params": {"name": "col", "set": "all", "material": "Mat", "kind": {"type": "solid"}}},
|
||||
{"command": "model.boundary_condition.create", "params": {"name": "base", "type": "fixed", "target": {"set": "x0"}}},
|
||||
{"command": "model.load.create", "params": {"name": "press", "type": "pressure", "set": "x1", "magnitude": 1.0}},
|
||||
{"command": "model.step.create", "params": {"name": "Buckle", "procedure": {"type": "buckle", "modes": 2}, "boundary_conditions": ["base"], "loads": ["press"]}},
|
||||
{"command": "solve.buckle", "params": {"step": "Buckle"}, "id": "solve"}
|
||||
]
|
||||
@@ -0,0 +1,6 @@
|
||||
# Euler buckling of a pinned column of solids
|
||||
|
||||
A pinned–pinned square column, length 20, side 1, E = 1000, ν = 0, modelled as its half with a
|
||||
symmetry plane at midspan (2 × 2 × 10 hex20). The pinned end is held laterally over its face,
|
||||
which leaves its rotation free, and pressed by a unit pressure; the first load factor is the
|
||||
buckling stress. Reference: Euler with Engesser's shear correction.
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"title": "Euler buckling of a pinned column of solids",
|
||||
"kind": "theory",
|
||||
"source": "Euler's column with Engesser's shear correction P = P_e/(1 + P_e/(κ G A)), κ = 5/6 (S. P. Timoshenko, J. M. Gere, Theory of Elastic Stability, 2nd ed., McGraw-Hill 1961, §2.1, §2.17): square section 1 × 1, E = 1000, ν = 0, effective length 20, P_e = π² E I/20², so σ_cr = P/A = 2.046071",
|
||||
"quantities": [
|
||||
{
|
||||
"id": "lambda",
|
||||
"quantity": "first buckling stress (load factor of a unit end pressure)",
|
||||
"measure": {
|
||||
"from": "solve",
|
||||
"pointer": "/modes/0/load_factor"
|
||||
},
|
||||
"value": 2.046070629714299,
|
||||
"tolerance": {
|
||||
"relative": 0.005
|
||||
},
|
||||
"reason": "hex20, 2 × 2 across and 10 along: the 3D solid's bending and shear against beam theory, and the preload concentrated at the held face"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"note": "FieldCraft's accepted results for this case, written by `cargo xtask oracle --bless`. A result outside its band fails CI.",
|
||||
"values": {
|
||||
"lambda": {
|
||||
"band": 2.0460706297142995e-9,
|
||||
"value": 2.042400056453741
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
[
|
||||
{"command": "mesh.block", "params": {"body": "Column", "kind": "hex20", "corners": [[0, 0, 0], [10.0, 0, 0], [10.0, 1.0, 0], [0, 1.0, 0], [0, 0, 1.0], [10.0, 0, 1.0], [10.0, 1.0, 1.0], [0, 1.0, 1.0]], "divisions": [10, 2, 2], "faces": {"6": "x0", "4": "x1"}}},
|
||||
{"command": "model.set.create", "params": {"name": "all", "geometry": [{"body": "Column"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "x0", "geometry": [{"body": "Column", "face": "x0"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "x1", "geometry": [{"body": "Column", "face": "x1"}]}},
|
||||
{"command": "model.material.create", "params": {"name": "Mat", "elastic": {"type": "isotropic", "young": 1000.0, "poisson": 0.0}}},
|
||||
{"command": "model.section.create", "params": {"name": "col", "set": "all", "material": "Mat", "kind": {"type": "solid"}}},
|
||||
{"command": "model.boundary_condition.create", "params": {"name": "pin", "type": "displacement", "target": {"set": "x0"}, "values": [null, 0.0, 0.0, null, null, null]}},
|
||||
{"command": "model.boundary_condition.create", "params": {"name": "mid", "type": "symmetry", "target": {"set": "x1"}, "plane": "x"}},
|
||||
{"command": "model.load.create", "params": {"name": "press", "type": "pressure", "set": "x0", "magnitude": 1.0}},
|
||||
{"command": "model.step.create", "params": {"name": "Buckle", "procedure": {"type": "buckle", "modes": 2}, "boundary_conditions": ["pin", "mid"], "loads": ["press"]}},
|
||||
{"command": "solve.buckle", "params": {"step": "Buckle"}, "id": "solve"}
|
||||
]
|
||||
@@ -0,0 +1,10 @@
|
||||
# Buckling of a simply supported square plate in uniaxial compression
|
||||
|
||||
A 50 × 50 × 0.5 plate (b/t = 100), E = 1000, ν = 0.3, modelled as its quarter (10 × 10 × 2 hex20)
|
||||
with symmetry planes. The outer edges are held out of plane along their bottom edge lines, which
|
||||
leaves their rotation and the plate's Poisson thickening free (simply supported), and they are
|
||||
free in plane; one is pressed by a unit pressure. Reference: Bryan's k = 4.
|
||||
|
||||
Choices: holding the whole edge faces instead blocks the thickening there and lowers the load by
|
||||
2 % at ν = 0.3; at b/t = 50 the solid stays 1.5 % below thin-plate theory with either support,
|
||||
the difference falling as the plate thins.
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"title": "Buckling of a simply supported square plate in uniaxial compression",
|
||||
"kind": "theory",
|
||||
"source": "Bryan's plate buckling stress σ_cr = k π² E/(12 (1 − ν²)) (t/b)² with k = 4 for a square plate simply supported on four edges (G. H. Bryan, Proc. London Math. Soc. 22:54–67, 1891; Timoshenko & Gere 1961, §9.2): b = 50, t = 0.5, E = 1000, ν = 0.3, σ_cr = 0.361524",
|
||||
"quantities": [
|
||||
{
|
||||
"id": "lambda",
|
||||
"quantity": "buckling stress of a unit edge pressure",
|
||||
"measure": {
|
||||
"from": "solve",
|
||||
"pointer": "/modes/0/load_factor"
|
||||
},
|
||||
"value": 0.36152397073587395,
|
||||
"tolerance": {
|
||||
"relative": 0.01
|
||||
},
|
||||
"reason": "a quarter plate of 10 × 10 × 2 hex20 (b/t = 100) supported on its bottom edge lines: the solid against thin-plate theory (−1.5 % at b/t = 50, falling with t/b) and the discretisation"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"note": "FieldCraft's accepted results for this case, written by `cargo xtask oracle --bless`. A result outside its band fails CI.",
|
||||
"values": {
|
||||
"lambda": {
|
||||
"band": 3.6152397073587395e-10,
|
||||
"value": 0.3601281681211783
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
[
|
||||
{"command": "mesh.block", "params": {"body": "Plate", "kind": "hex20", "corners": [[0, 0, 0], [25.0, 0, 0], [25.0, 25.0, 0], [0, 25.0, 0], [0, 0, 0.5], [25.0, 0, 0.5], [25.0, 25.0, 0.5], [0, 25.0, 0.5]], "divisions": [10, 10, 2], "faces": {"6": "x0", "3": "y0", "4": "x1", "5": "y1"}, "edges": [{"corners": [1, 4], "name": "sx"}, {"corners": [1, 2], "name": "sy"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "all", "geometry": [{"body": "Plate"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "x0", "geometry": [{"body": "Plate", "face": "x0"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "y0", "geometry": [{"body": "Plate", "face": "y0"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "x1", "geometry": [{"body": "Plate", "face": "x1"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "y1", "geometry": [{"body": "Plate", "face": "y1"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "sx", "geometry": [{"body": "Plate", "edge": "sx"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "sy", "geometry": [{"body": "Plate", "edge": "sy"}]}},
|
||||
{"command": "model.material.create", "params": {"name": "Mat", "elastic": {"type": "isotropic", "young": 1000.0, "poisson": 0.3}}},
|
||||
{"command": "model.section.create", "params": {"name": "plate", "set": "all", "material": "Mat", "kind": {"type": "solid"}}},
|
||||
{"command": "model.boundary_condition.create", "params": {"name": "ssx", "type": "displacement", "target": {"set": "sx"}, "values": [null, null, 0.0, null, null, null]}},
|
||||
{"command": "model.boundary_condition.create", "params": {"name": "ssy", "type": "displacement", "target": {"set": "sy"}, "values": [null, null, 0.0, null, null, null]}},
|
||||
{"command": "model.boundary_condition.create", "params": {"name": "symx", "type": "symmetry", "target": {"set": "x1"}, "plane": "x"}},
|
||||
{"command": "model.boundary_condition.create", "params": {"name": "symy", "type": "symmetry", "target": {"set": "y1"}, "plane": "y"}},
|
||||
{"command": "model.load.create", "params": {"name": "press", "type": "pressure", "set": "x0", "magnitude": 1.0}},
|
||||
{"command": "model.step.create", "params": {"name": "Buckle", "procedure": {"type": "buckle", "modes": 1}, "boundary_conditions": ["ssx", "ssy", "symx", "symy"], "loads": ["press"]}},
|
||||
{"command": "solve.buckle", "params": {"step": "Buckle"}, "id": "solve"}
|
||||
]
|
||||
Reference in new issue
Block a user