forked from 1b-agent/fieldcraft-upstream
oracle: 2D cases (Kirsch plane stress, Lamé plane strain and axisymmetric, rotating disc and cylinder, NAFEMS LE1 with quad8) and J2 uniaxial explicit
The pending 2D LE1 case becomes a real one; the plasticity cases stay pending with what they still need (static J2 for the collapse pressure, the transcribed measurements for the Taylor bar). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
This commit is contained in:
1 parent
84e81acf3a
commit
96c9992c92
31 files changed
+686
-13
No files matched your search
@@ -0,0 +1,7 @@
|
||||
# Rotating disc with a central hole, plane stress
|
||||
|
||||
A thin disc, inner radius 20, outer 100 (E = 210000, ν = 0.3, ρ = 7.85e-9: mm, t, s, MPa),
|
||||
spinning at 1000 rad/s about z: a quarter, one quad8 patch (16 × 32, graded 4 : 1 towards the
|
||||
bore, where the hoop stress is steepest) with mid-side nodes on the arcs, symmetry on x = 0 and y = 0, a centrifugal load. Timoshenko and Goodier:
|
||||
σ_r = (3 + ν)/8 ρω² (b² + a² − a²b²/r² − r²),
|
||||
σ_θ = (3 + ν)/8 ρω² (b² + a² + a²b²/r² − (1 + 3ν)/(3 + ν) r²).
|
||||
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"title": "Rotating disc with a central hole, plane stress",
|
||||
"kind": "theory",
|
||||
"source": "Timoshenko and Goodier, Theory of Elasticity, 3rd ed., McGraw-Hill 1970, §32 (rotating disc of uniform thickness with a hole)",
|
||||
"quantities": [
|
||||
{
|
||||
"id": "hoop_bore",
|
||||
"quantity": "hoop stress σ_θ = σ_yy at the bore (20, 0)",
|
||||
"measure": {
|
||||
"command": "solve.probe",
|
||||
"params": {
|
||||
"step": "Spin",
|
||||
"at": [
|
||||
[
|
||||
20.0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
},
|
||||
"pointer": "/nodes/0/stress/1"
|
||||
},
|
||||
"value": 65.312,
|
||||
"tolerance": {
|
||||
"relative": 0.01
|
||||
},
|
||||
"reason": "stress extrapolated to the bore surface, where the a²b²/r² term is steepest: 16 radial quadratic elements graded towards the bore leave about 0.2% (8 uniform: −2.4%; 32 graded: −0.05%)"
|
||||
},
|
||||
{
|
||||
"id": "radial_max",
|
||||
"quantity": "radial stress σ_r = σ_xx at r = √(ab), its maximum",
|
||||
"measure": {
|
||||
"command": "solve.probe",
|
||||
"params": {
|
||||
"step": "Spin",
|
||||
"at": [
|
||||
[
|
||||
44.721359549995796,
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
},
|
||||
"pointer": "/nodes/0/stress/0"
|
||||
},
|
||||
"value": 20.724,
|
||||
"tolerance": {
|
||||
"relative": 0.01
|
||||
},
|
||||
"reason": "the nearest node to √(ab) is within half an element of it, where σ_r is stationary (an error of order (h/r)², under 0.5%), and nodal averaging adds a few tenths of a percent"
|
||||
},
|
||||
{
|
||||
"id": "hoop_rim",
|
||||
"quantity": "hoop stress σ_θ = σ_yy at the rim (100, 0)",
|
||||
"measure": {
|
||||
"command": "solve.probe",
|
||||
"params": {
|
||||
"step": "Spin",
|
||||
"at": [
|
||||
[
|
||||
100.0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
},
|
||||
"pointer": "/nodes/0/stress/1"
|
||||
},
|
||||
"value": 16.328,
|
||||
"tolerance": {
|
||||
"relative": 0.01
|
||||
},
|
||||
"reason": "as at the bore"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"note": "ModelCraft's accepted results for this case, written by `cargo xtask oracle --bless`. A result outside its band fails CI.",
|
||||
"values": {
|
||||
"hoop_bore": {
|
||||
"band": 6.5312e-8,
|
||||
"value": 65.18766671256753
|
||||
},
|
||||
"hoop_rim": {
|
||||
"band": 1.6352371809556562e-8,
|
||||
"value": 16.352371809556562
|
||||
},
|
||||
"radial_max": {
|
||||
"band": 2.0724e-8,
|
||||
"value": 20.682642297503843
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
[
|
||||
{"command": "mesh.block", "params": {"body": "Disc", "kind": "quad8", "corners": [[20.0, 0, 0], [100.0, 0, 0], [0, 100.0, 0], [0, 20.0, 0]], "divisions": [16, 32], "bias": [4, 1], "edges": [{"corners": [2, 3], "arc": {"center": [0, 0, 0]}}, {"corners": [1, 4], "arc": {"center": [0, 0, 0]}}, {"corners": [1, 2], "name": "y0"}, {"corners": [3, 4], "name": "x0"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "all", "geometry": [{"body": "Disc", "face": "area"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "x0", "geometry": [{"body": "Disc", "edge": "x0"}]}},
|
||||
{"command": "model.set.create", "params": {"name": "y0", "geometry": [{"body": "Disc", "edge": "y0"}]}},
|
||||
{"command": "model.material.create", "params": {"name": "Steel", "elastic": {"type": "isotropic", "young": 210000.0, "poisson": 0.3}, "density": 7.85e-09}},
|
||||
{"command": "model.section.create", "params": {"name": "disc", "set": "all", "material": "Steel", "kind": {"type": "plane_stress", "thickness": 5.0}}},
|
||||
{"command": "model.boundary_condition.create", "params": {"name": "sx", "type": "symmetry", "target": {"set": "x0"}, "plane": "x"}},
|
||||
{"command": "model.boundary_condition.create", "params": {"name": "sy", "type": "symmetry", "target": {"set": "y0"}, "plane": "y"}},
|
||||
{"command": "model.load.create", "params": {"name": "spin", "type": "centrifugal", "angular_velocity": 1000.0, "point": [0, 0, 0], "axis": [0, 0, 1]}},
|
||||
{"command": "model.step.create", "params": {"name": "Spin", "procedure": {"type": "static"}, "boundary_conditions": ["sx", "sy"], "loads": ["spin"]}},
|
||||
{"command": "solve.static", "params": {}, "id": "solve"}
|
||||
]
|
||||
Reference in new issue
Block a user