Files
OneCAD-Simulation/docs/meshing/corpus.md
T
jyvikoandClaude Opus 5.5 357de3f7a5 demo video: a horizontal cantilever, checked against beam theory
The demo used the corpus I-beam, which is extruded along z and so stood
upright. A new corpus part, cantilever-i-beam, is the same section on the
YZ plane extruded along x, web upright: a sweep along a horizontal axis
for the meshers, and a cantilever that bends downward on screen. The
i-beam part is unchanged (its corpus row and the meshing tests keep it).

The demo clamps it at x = 0 and loads the free end with 1000 N in -z
through a kinematic coupling, and now checks the solution against beam
theory and stops when it is off: tip deflection (bending plus shear)
within 3 %, root bending stress (stress_xx along the top flange,
extrapolated to the root, nodes from the Abaqus deck) within 2 %.

docs/meshing/corpus.md regenerated with the new part.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
2026-10-14 00:15:50 -04:00

11 KiB
Raw Blame History

Meshing test corpus

Generated by cargo xtask corpus; do not edit. The parts are our own: SolidCraft recipes in tests/corpus/<name>/recipe.json and analytic shapes generated in code (crates/testkit/src/corpus.rs). Each run rebuilds every part, tessellates it at a chordal tolerance of 1e-3 of its bounding-box diagonal and runs every stage on it. Times are wall clock on the machine that ran it; every other column is deterministic.

Results

part categories bodies faces triangles tol. mm build ms enclosed mm³ SolidCraft mm³ rel. diff exact mm³ boundary genus feature edges check ms CDT tets Steiner cavities tet gate CDT ms hex hex elements hex8 min SJ hex20 min SJ hex ms
bent-tube sweepable, thin-wall, genus 1 18 4296 0.121 2726 4213.1 4159.4 1.3e-2 4159.8 ok, 2148 vertices 1 268 19.8 15550 2338 0 pass 4070 sweep 192 0.859 0.997 535
bolted-assembly assembly, blocky 3 22 284 0.117 1141 33004.7 32999.0 1.7e-4 32998.9 ok, 144 vertices 0, 1, 1 104 1.6 690 181 0 pass 211 extrude 357 0.398 0.222 139
cantilever-i-beam sweepable, thin-wall 1 14 44 0.208 483 61600.0 61600.0 0.0e0 61600.0 ok, 24 vertices 0 36 0.2 90 24 0 pass 5 extrude 336 0.707 0.707 47
cross-cylinders boolean, sharp 1 10 1395 0.087 59348 32197.4 32357.8 -5.0e-3 32365.8 error: Cross: invalid boundary surface: 28 defects; triangles 142 and 184 are oriented inconsistently across edge 0–396 at (-15.488656021315903, 4.577998041166734, 7.853092194999726); triangles 184 and 239 are oriented inconsistently across edge 0–554 at (-18.75000000000002, 5.634596901641276, 7.632255089815496); edge 103–108 at (-0.16007784063084018, 0.03984236936862052, 9.998639270596865) is shared by 3 triangles; … error: Cross: invalid boundary surface: 28 defects; triangles 142 and 184 are oriented inconsistently across edge 0–396 at (-15.488656021315903, 4.577998041166734, 7.853092194999726); triangles 184 and 239 are oriented inconsistently across edge 0–554 at (-18.75000000000002, 5.634596901641276, 7.632255089815496); edge 103–108 at (-0.16007784063084018, 0.03984236936862052, 9.998639270596865) is shared by 3 triangles; … error: Cross: invalid boundary surface: 28 defects; triangles 142 and 184 are oriented inconsistently across edge 0–396 at (-15.488656021315903, 4.577998041166734, 7.853092194999726); triangles 184 and 239 are oriented inconsistently across edge 0–554 at (-18.75000000000002, 5.634596901641276, 7.632255089815496); edge 103–108 at (-0.16007784063084018, 0.03984236936862052, 9.998639270596865) is shared by 3 triangles; …
filleted-bracket fillet, genus, sweepable 1 13 540 0.088 3706 32162.3 32145.0 5.4e-4 32144.8 ok, 268 vertices 2 135 2.1 5582 1613 0 pass 1769 no: Bracket: not supported yet: no structured hex method fits this body (extrude: cylindrical face 8 is not parallel to the direction; sweep: from face 1: linking face 6 has 2 boundary loops (periodic or holed linking faces are not swept); from face 6: 10
i-beam sweepable, thin-wall 1 14 44 0.208 280 61600.0 61600.0 0.0e0 61600.0 ok, 24 vertices 0 36 0.3 94 24 0 pass 7 extrude 336 0.707 0.707 52
loft-transition organic 1 6 292 0.075 397 56390.2 56450.6 -1.1e-3 – ok, 148 vertices 0 40 1.0 1329 256 1 pass 172 sweep 2873 0.189 0.189 2056
perforated-plate genus, thin-wall, sweepable 1 54 1644 0.144 2864 26822.2 26764.6 2.2e-3 26764.2 ok, 776 vertices 24 828 10.6 33611 9798 0 pass 6513 extrude 467 0.304 0.033 480
pinhole-block small-feature, genus 1 38 4044 0.073 2053 49919.4 49909.6 2.0e-4 49909.5 ok, 1992 vertices 16 1548 41.8 96411 30221 0 pass 28180 extrude 5236 0.408 0.392 3838
rounded-box fillet 1 26 2540 0.054 1069 23325.7 23340.5 -6.3e-4 23340.8 ok, 1272 vertices 0 216 11.5 11653 1914 0 pass 2265 no: Box: not supported yet: no structured hex method fits this body (extrude: cylindrical face 8 is not parallel to the direction; sweep: from face 0: 12 faces are not on the sweep path; from face 5: 12 faces are not on the sweep path; revolve: plan 67
shallow-groove near-tangent, boolean 1 8 62 0.075 218 47795.2 47782.3 2.7e-4 47781.5 ok, 33 vertices 0 24 0.2 267 87 0 pass 24 extrude 1960 0.991 0.986 1078
sharp-wedge sharp, thin-wall, sweepable 1 5 8 0.083 72 3200.0 3200.0 0.0e0 3200.0 ok, 6 vertices 0 9 0.0 11 3 0 pass 1 extrude 294 0.050 0.050 87
sphere-on-plate near-tangent, boolean 1 12 2826 0.098 3775 69353.3 69509.0 -2.2e-3 69509.7 ok, 1415 vertices 0 124 8.3 4898 309 9 pass 1265 no: Plate: not supported yet: no structured hex method fits this body (extrude: face 6 is curved across the direction; sweep: from face 0: 6 faces are not on the sweep path; from face 5: linking face 11 has 2 boundary loops (periodic or holed linking 75
spline-vase organic 1 11 3890 0.106 1097 94891.2 94948.5 -6.0e-4 – ok, 1947 vertices 0 243 23.5 12461 1512 0 pass 2487 sweep 4554 0.649 0.649 3030
stepped-block blocky, sharp 1 14 96 0.078 438 47000.0 47000.0 0.0e0 47000.0 ok, 48 vertices 1 60 0.6 223 41 0 pass 11 extrude 1416 0.999 0.999 906
thin-ribs thin-wall, blocky 1 26 92 0.119 1085 32000.0 32000.0 -4.5e-16 32000.0 ok, 48 vertices 0 72 0.7 171 33 0 pass 10 extrude 777 0.844 0.844 236
thin-wall-enclosure thin-wall, blocky 1 11 36 0.108 189 15564.0 15564.0 0.0e0 15564.0 ok, 20 vertices 0 28 0.2 191 47 2 pass 8 extrude 894 0.297 0.297 349
analytic-sphere analytic 1 6 2784 0.069 1340 33353.4 33507.9 -4.6e-3 33510.3 ok, 1394 vertices 0 96 8.9 4211 58 0 pass 1430 no: Sphere: not supported yet: no structured hex method fits this body (extrude: no direction to try; sweep: no planar face to sweep from; revolve: no axis to try; mapped: meshing failed: meshing failed: mesh validity gate: 8 inverted or degenerate ele 159
analytic-torus analytic, genus 1 6 7230 0.109 1725 37644.1 37893.7 -6.6e-3 37899.3 ok, 3615 vertices 1 180 31.7 19790 466 0 pass 4946 revolve 1134 0.706 0.706 1155
analytic-cylinder analytic, sweepable 1 4 1004 0.049 368 12533.1 12564.7 -2.5e-3 12566.4 ok, 504 vertices 0 106 9.3 7437 1568 0 pass 1797 extrude 3200 0.707 0.707 2316
analytic-pipe analytic, genus, sweepable 1 6 1448 0.104 506 94150.9 94238.0 -9.3e-4 94247.8 ok, 724 vertices 1 220 9.5 6238 1340 0 pass 1734 extrude 1288 0.998 0.998 1059
analytic-plate-hole analytic, genus, sweepable 1 8 112 0.224 524 98449.1 98429.5 2.0e-4 98429.2 ok, 56 vertices 1 62 0.6 1868 543 0 pass 78 extrude 321 0.320 0.142 248

Categories

category stresses parts
thin-wall walls thin against the part's size 7
small-feature features much smaller than the part 1
fillet blends between faces 2
genus through holes (genus > 0) 7
sharp sharp edges and acute dihedral angles 3
near-tangent faces meeting at a shallow angle 2
boolean intersection curves from booleans 3
sweepable extrusions and sweeps (one-to-one sweep meshing) 9
blocky axis-aligned blocks (polycube-friendly) 4
organic free-form, lofted or revolved spline surfaces 2
assembly several bodies placed by component transforms 1
analytic closed-form geometry for solver verification 5

Parts

  • bent-tube: A 10 mm tube with a 1 mm wall, bent through R30: a thin-walled sweep along a line-arc-line path.
  • bolted-assembly: A base plate with a clamp block component placed twice, once turned 90 degrees: bodies placed by component transforms.
  • cantilever-i-beam: The 200 mm I-beam of i-beam lying along X with its web upright (Z up): a sweep along a horizontal axis, and the cantilever of the README demo.
  • cross-cylinders: Two orthogonal R10 cylinders joined: equal radii, so the intersection curves cross at two singular points.
  • filleted-bracket: An 8 mm L-bracket with an R6 inside fillet and a hole through each leg: a blend beside holes.
  • i-beam: A 200 mm I-beam with 3 mm flanges and a 2 mm web: a long sweepable prism with thin walls.
  • loft-transition: A 40 mm square lofted to an R15 circle 50 mm above: a ruled free-form surface between unlike sections.
  • perforated-plate: A 3 mm plate perforated by a 6 x 4 grid of 6 mm holes: genus 24 in a thin sheet.
  • pinhole-block: A 50 mm block drilled through by sixteen 0.6 mm pinholes: features 80 times smaller than the part, genus 16.
  • rounded-box: A 40 x 30 x 20 box with every edge rounded R3: cylinder and sphere blends meeting at the corners.
  • shallow-groove: A block with a 0.5 mm deep groove cut by an R30 cylinder: groove walls 10 degrees off the top face.
  • sharp-wedge: A wedge whose faces meet at under 3 degrees: a sharp edge with a needle-thin cross-section.
  • sphere-on-plate: A sphere sunk 0.1 mm into a plate: the faces meet at under 6 degrees around a 2 mm circle.
  • spline-vase: A vase revolved from a spline profile: doubly curved faces of varying curvature around a closed axis.
  • stepped-block: Three stacked blocks with a slot cut through the base: axis-aligned steps for polycube and octree meshers.
  • thin-ribs: A 4 mm plate carrying five 0.8 mm ribs 20 mm tall: thin walls standing on a thicker base.
  • thin-wall-enclosure: An 80 x 60 x 40 box shelled to 1 mm walls, open on top: thin walls over a large span.
  • analytic-sphere: Sphere r 20: curvature everywhere, no edges.
  • analytic-torus: Torus 30/8: genus 1 with doubly curved faces and no edges.
  • analytic-cylinder: Cylinder r 10, h 40: the round bar of beam and torsion checks.
  • analytic-pipe: Thick-walled pipe 20/30, length 60: the Lamé cylinder.
  • analytic-plate-hole: Plate 200 x 100 x 5 with a 20 mm hole: the Kirsch plate.