forked from 1b-agent/fieldcraft-upstream
The end-to-end demo met a raw-CDT sliver that the validity gate accepted (exactly positive) and the solver refused. Now: - One validity criterion, `fieldcraft_model::admissible_jacobian` (normalized Jacobian above 1e-12), used by the implicit solver (fem `positive_inverse`), the explicit tet4/hex8 kinematics and the mesh gate, which proves it on the whole element (tet4: the solvers' own Jacobian; curved kinds: a Bernstein floor), so whatever passes the gate passes the solvers. - CDT rounding repaired by flips on the rounded mesh (Diazzi et al. 2023 §5.1) instead of the ±2-ulp nudge. - `fieldcraft-mesh::tet`: a mutable tetrahedral complex whose every change is a checked replacement (positive and admissible tetrahedra, faces matched with opposite orientation) with an exact undo log; edge removal (Klincsek), multi-face removal, Delaunay insertion with boundary faces, edge collapse; a curvature- and thickness-graded size field; constrained Delaunay refinement with encroachment splits; ODT smoothing; the Klingner–Shewchuk schedule; boundary vertices moved onto the exact B-rep surfaces at the end; tet10 with mid-edge nodes on the geometry. - `mesh.tet.generate` gains size, order, quality, quality_target, curvature_angle, grading, max_passes, max_points and reports the CDT's and the mesh's quality; `solve.probe` takes a set and reports its largest von Mises stress. - Oracle cases filleted-bracket-fillet-stress(-coarse): the fillet's peak von Mises stress on tet10 meshes of 2k and 13.5k elements, 213.3 MPa (a four-level study stays within 1.8%); the CDT cases keep the raw tetrahedralization. - Corpus quality columns: all 20 valid parts mesh and pass the gate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
39 lines
1.4 KiB
JSON
39 lines
1.4 KiB
JSON
{
|
|
"title": "Filleted L-bracket under a side load: the peak von Mises stress on the R6 fillet, fine tet10 mesh",
|
|
"kind": "theory",
|
|
"source": "mesh convergence of the finite element solution (P. J. Roache, Verification and Validation in Computational Science and Engineering, Hermosa, 1998, ch. 5): the bracket has no closed-form stress; the reference is the mesh-independent peak of a four-level study of quadratic tetrahedral meshes refined by √2 in size and in curvature resolution (README.md); equilibrium",
|
|
"slow": true,
|
|
"quantities": [
|
|
{
|
|
"id": "fillet_peak",
|
|
"quantity": "largest nodal von Mises stress on the fillet face (MPa)",
|
|
"measure": {
|
|
"command": "solve.probe",
|
|
"params": {
|
|
"step": "Load",
|
|
"set": "fillet"
|
|
},
|
|
"pointer": "/max_von_mises/value"
|
|
},
|
|
"value": 213.0,
|
|
"tolerance": {
|
|
"relative": 0.03
|
|
},
|
|
"reason": "the four-level study gives 213.3, 210.6, 214.3, 213.3 MPa (2k to 13.5k elements): the bending stress is converged across the fillet, and the peak nodal value moves only with which of the fillet's tessellation lines (fixed angles, through every level) carries the largest node, by under 2%"
|
|
},
|
|
{
|
|
"id": "reaction",
|
|
"quantity": "total reaction x (N)",
|
|
"measure": {
|
|
"from": "solve",
|
|
"pointer": "/reaction_total/0"
|
|
},
|
|
"value": -2000.0,
|
|
"tolerance": {
|
|
"relative": 1e-09
|
|
},
|
|
"reason": "equilibrium holds to rounding"
|
|
}
|
|
]
|
|
}
|