Files
OneCAD-Simulation/tests/oracle/explicit-neo-hookean-implicit/recipe.json
T
jyvikoandClaude Opus 5.5 ce8e23d05b explicit: hyperelastic materials on the shared finite-strain material point
Neo-Hookean, Mooney–Rivlin and Yeoh materials in explicit dynamics, in
total form from the deformation gradient (objective by construction):
the one-point hex8 takes its mean F over the undeformed element and the
stress τ/J; tet4 takes the isochoric stress of its own F with the
average nodal pressure of the decoupled volumetric energy (Bonet–Burton
at finite strain). Each element's frequency bound follows the tangent's
largest normal stiffness. Small-displacement steps and thermal strain of
hyperelastic elements are refused by name.

Verified by uniaxial strain to λ = 1.5 of all three laws on hex8 and
tet4 against the material point (to rounding), and the oracle case
explicit-neo-hookean-implicit: a quasi-static explicit pull against the
implicit nonlinear solver (lateral contraction to 0.09%, stress to 0.03%).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
2026-10-14 14:29:43 -04:00

245 lines
3.0 KiB
JSON

[
{
"command": "mesh.block",
"params": {
"body": "Cube",
"kind": "tet4",
"corners": [
[
0,
0,
0
],
[
1,
0,
0
],
[
1,
1,
0
],
[
0,
1,
0
],
[
0,
0,
1
],
[
1,
0,
1
],
[
1,
1,
1
],
[
0,
1,
1
]
],
"divisions": [
2,
2,
2
],
"faces": {
"6": "x0",
"3": "y0",
"1": "z0",
"4": "x1"
}
}
},
{
"command": "model.set.create",
"params": {
"name": "all",
"geometry": [
{
"body": "Cube"
}
]
}
},
{
"command": "model.set.create",
"params": {
"name": "x0",
"geometry": [
{
"body": "Cube",
"face": "x0"
}
]
}
},
{
"command": "model.set.create",
"params": {
"name": "y0",
"geometry": [
{
"body": "Cube",
"face": "y0"
}
]
}
},
{
"command": "model.set.create",
"params": {
"name": "z0",
"geometry": [
{
"body": "Cube",
"face": "z0"
}
]
}
},
{
"command": "model.set.create",
"params": {
"name": "x1",
"geometry": [
{
"body": "Cube",
"face": "x1"
}
]
}
},
{
"command": "model.material.create",
"params": {
"name": "Rubber",
"elastic": {
"type": "isotropic",
"young": 10.0,
"poisson": 0.3
},
"density": 1.0,
"hyperelastic": {
"type": "neo_hookean"
}
}
},
{
"command": "model.section.create",
"params": {
"name": "cube",
"set": "all",
"material": "Rubber",
"kind": {
"type": "solid"
}
}
},
{
"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.boundary_condition.create",
"params": {
"name": "sz",
"type": "symmetry",
"target": {
"set": "z0"
},
"plane": "z"
}
},
{
"command": "model.boundary_condition.create",
"params": {
"name": "pull",
"type": "displacement",
"target": {
"set": "x1"
},
"values": [
0.5,
null,
null,
null,
null,
null
]
}
},
{
"command": "model.step.create",
"params": {
"name": "Static",
"procedure": {
"type": "nonlinear_static"
},
"boundary_conditions": [
"sx",
"sy",
"sz",
"pull"
],
"loads": []
}
},
{
"command": "model.step.create",
"params": {
"name": "Dynamic",
"procedure": {
"type": "explicit_dynamic",
"end_time": 100.0
},
"boundary_conditions": [
"sx",
"sy",
"sz",
"pull"
],
"loads": []
}
},
{
"command": "solve.nonlinear",
"params": {
"step": "Static"
},
"id": "implicit"
},
{
"command": "solve.explicit",
"params": {
"step": "Dynamic"
},
"id": "explicit"
}
]