Files
OneCAD-Simulation/docs/meshing/corpus.md
T

15 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 quality tets min dihedral ° max dihedral ° min radius ratio slivers CDT → mesh quality gate quality ms hex hex elements hex8 min SJ hex20 min SJ hex ms octree hexes min SJ mean SJ hex vol. diff octree ms
bent-tube sweepable, thin-wall, genus 1 18 4296 0.121 458 4213.1 4159.4 1.3e-2 4159.8 ok, 2148 vertices 1 268 14.5 15300 2338 0 20 flat 600 25100 27.4 149.0 0.091 3208 → 0 pass 3687 sweep 192 0.859 0.997 65 no: Tube: meshing failed: octree hex meshing failed after 2 builds: the core's boundary has components of genus [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2565
bolted-assembly assembly, blocky 3 22 284 0.117 57 33004.7 32999.0 1.7e-4 32998.9 ok, 144 vertices 0, 1, 1 104 0.7 687 181 0 pass 34 14750 33.0 143.2 0.236 189 → 0 pass 1270 extrude 377 0.446 0.446 2462 41344 0.323 0.961 2.0e-4 11596
cantilever-i-beam sweepable, thin-wall 1 14 44 0.208 4 61600.0 61600.0 0.0e0 61600.0 ok, 24 vertices 0 36 0.2 90 24 0 pass 3 6357 29.9 149.4 0.070 70 → 0 pass 1373 extrude 480 0.308 0.308 55 351220 0.308 0.977 -9.1e-14 208396
cross-cylinders boolean, sharp 1 10 1539 0.087 6789 32196.4 32357.4 -5.0e-3 32365.8 error: Cross: invalid boundary surface: 28 defects; triangles 142 and 254 are oriented inconsistently across edge 0–396 at (-15.488656021315903, 4.577998041166734, 7.853092194999726); triangles 251 and 254 are oriented inconsistently across edge 0–553 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 254 are oriented inconsistently across edge 0–396 at (-15.488656021315903, 4.577998041166734, 7.853092194999726); triangles 251 and 254 are oriented inconsistently across edge 0–553 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 254 are oriented inconsistently across edge 0–396 at (-15.488656021315903, 4.577998041166734, 7.853092194999726); triangles 251 and 254 are oriented inconsistently across edge 0–553 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 254 are oriented inconsistently across edge 0–396 at (-15.488656021315903, 4.577998041166734, 7.853092194999726); triangles 251 and 254 are oriented inconsistently across edge 0–553 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 254 are oriented inconsistently across edge 0–396 at (-15.488656021315903, 4.577998041166734, 7.853092194999726); triangles 251 and 254 are oriented inconsistently across edge 0–553 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 544 0.088 453 32162.3 32145.0 5.4e-4 32144.8 ok, 270 vertices 2 135 1.9 5576 1613 0 pass 206 15665 28.4 149.2 0.097 2158 → 0 pass 2757 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: 5 30676 0.305 0.963 8.3e-4 16975
filleted-bracket-blocks fillet, genus, partitioned 30 190 712 0.088 2081 32169.8 32145.1 7.7e-4 32144.8 ok, 416 vertices 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 474 3.9 1414 349 0 2 flat 93 176280 33.6 142.7 0.190 282 → 0 pass 15596 blocks (30 cells, 45 shared faces) 4986 0.705 0.705 836 149898 0.157 0.935 9.7e-4 44280
i-beam sweepable, thin-wall 1 14 44 0.208 3 61600.0 61600.0 0.0e0 61600.0 ok, 24 vertices 0 36 0.1 91 24 0 1 flat 4 6154 26.4 153.6 0.053 71 → 0 pass 1514 extrude 480 0.308 0.308 59 351220 0.308 0.977 2.3e-13 116641
loft-transition organic 1 6 292 0.075 60 56390.2 56450.6 -1.1e-3 – ok, 148 vertices 0 40 0.8 1328 256 1 pass 37 9691 31.2 140.6 0.133 591 → 0 pass 1116 sweep 2873 0.189 0.189 339 67188 0.210 0.959 -1.2e-3 16530
perforated-plate genus, thin-wall, sweepable 1 54 1644 0.144 236 26822.2 26764.6 2.2e-3 26764.2 ok, 776 vertices 24 828 5.2 33560 9798 0 1 flat 1293 44028 27.8 148.7 0.126 11707 → 0 pass 8434 extrude 768 0.496 0.496 224 185128 0.300 0.958 2.5e-3 72087
pinhole-block small-feature, genus 1 38 4044 0.073 903 49919.4 49909.6 2.0e-4 49909.5 ok, 1992 vertices 16 1548 14.4 96203 30221 0 17 flat 6474 843460 14.0 166.0 0.000 65489 → 0 pass 124949 extrude 5236 0.408 0.392 1368 no: Block: limit reached: the grid has 675798 elements; the limit is 500000 2246
rounded-box fillet 1 26 2540 0.054 157 23325.7 23340.5 -6.3e-4 23340.8 ok, 1272 vertices 0 216 7.2 11348 1906 0 18 flat 385 62949 24.8 160.2 0.001 8780 → 0 pass 24516 no: Box: not supported yet: no structured hex method fits this body (extrude: cylindrical face 7 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 21 76430 0.561 0.985 -1.3e-3 39852
shallow-groove near-tangent, boolean 1 8 62 0.075 41 47795.2 47782.3 2.7e-4 47781.5 ok, 33 vertices 0 24 0.2 266 87 0 pass 14 6318 37.8 136.6 0.297 85 → 0 pass 811 extrude 1960 0.991 0.986 295 2926 0.301 0.920 3.4e-4 1525
sharp-wedge sharp, thin-wall, sweepable 1 5 8 0.083 10 3200.0 3200.0 0.0e0 3200.0 ok, 6 vertices 0 9 0.1 11 3 0 pass 1 1273 2.9 176.6 0.003 3 → 24 pass 544 extrude 1674 0.014 0.014 415 84952 0.003 0.980 -3.5e-2 35349
sphere-on-plate near-tangent, boolean 1 12 2826 0.098 1306 69353.3 69509.0 -2.2e-3 69509.7 ok, 1415 vertices 0 124 7.9 4370 309 9 pass 298 11792 32.7 141.3 0.235 3001 → 0 pass 2893 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 17 25194 0.065 0.945 4.3e-2 31594
spline-vase organic 1 11 3890 0.106 214 94891.2 94948.5 -6.0e-4 – ok, 1947 vertices 0 243 10.3 11859 1512 0 72 flat 468 38225 29.1 150.8 0.033 7206 → 0 pass 15955 sweep 4536 0.665 0.665 555 43579 0.387 0.927 -1.5e-3 18037
stepped-block blocky, sharp 1 14 52 0.078 556 47000.0 47000.0 0.0e0 47000.0 ok, 26 vertices 1 36 0.3 143 32 0 pass 7 5063 38.3 139.2 0.225 15 → 0 pass 677 extrude 1416 1.000 1.000 342 no: Steps: meshing failed: octree hex meshing failed after 2 builds: 4 elements fail the certified validity check; refining for another build needs more than 250000 grid cells (the grid needs more than 250000 cells) 15666
thin-ribs thin-wall, blocky 1 26 92 0.119 619 32000.0 32000.0 -4.5e-16 32000.0 ok, 48 vertices 0 72 0.7 171 33 0 pass 13 23922 24.2 155.7 0.058 141 → 0 pass 9970 extrude 1659 0.124 0.124 351 no: Plate: limit reached: the part has walls 0.8000 thick, which 3 cells across need cells of 0.2667: 3 levels below a size of 4.7625, more than 2588948 grid cells by level 3; or 2 levels below a size of 2.4000, more than 1284890 grid cells by level 2 234
thin-wall-enclosure thin-wall, blocky 1 11 28 0.108 54 15564.0 15564.0 0.0e0 15564.0 ok, 16 vertices 0 24 0.1 80 18 4 pass 3 19237 23.8 153.6 0.037 78 → 0 pass 6188 extrude 926 0.707 0.707 118 no: Enclosure: limit reached: the part has walls 1.0000 thick, which 3 cells across need cells of 0.3333: 3 levels below a size of 4.3081, more than 3945836 grid cells by level 3; or 2 levels below a size of 3.0000, more than 1023496 grid cells by level 2 183
analytic-sphere analytic 1 6 2784 0.069 309 33353.4 33507.9 -4.6e-3 33510.3 ok, 1394 vertices 0 96 7.7 3671 58 0 pass 334 10074 37.0 140.1 0.230 2448 → 0 pass 1958 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 28 2400 0.538 0.866 -1.3e-2 1033
analytic-torus analytic, genus 1 6 7230 0.109 317 37644.1 37893.7 -6.6e-3 37899.3 ok, 3615 vertices 1 180 18.5 18528 466 0 9 flat 812 22988 33.4 145.0 0.154 12988 → 0 pass 4503 revolve 1080 0.834 0.834 165 18814 0.460 0.881 -1.2e-2 5674
analytic-cylinder analytic, sweepable 1 4 1004 0.049 26 12533.1 12564.7 -2.5e-3 12566.4 ok, 504 vertices 0 106 3.0 7382 1568 0 pass 269 20056 26.2 152.2 0.089 4373 → 0 pass 6907 extrude 3200 0.850 0.850 346 2424 0.532 0.919 -9.1e-3 701
analytic-pipe analytic, genus, sweepable 1 6 1448 0.104 44 94150.9 94238.0 -9.3e-4 94247.8 ok, 724 vertices 1 220 4.3 6193 1340 0 pass 280 16627 31.4 145.5 0.150 1445 → 0 pass 2490 extrude 1288 0.998 0.998 149 53680 0.520 0.944 -7.8e-4 21679
analytic-plate-hole analytic, genus, sweepable 1 8 112 0.224 65 98449.1 98429.5 2.0e-4 98429.2 ok, 56 vertices 1 62 0.9 1848 543 0 pass 87 2394 31.4 145.3 0.230 342 → 0 pass 904 extrude 488 0.642 0.655 403 163664 0.309 0.989 2.2e-4 112185

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 3
genus through holes (genus > 0) 8
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
partitioned split into cells that each mesh as a mapped block (conforming multi-block hex) 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.
  • filleted-bracket-blocks: The filleted bracket split into 30 cells with SolidCraft's Split Body (three slabs across its width, the corner halved along its diagonal, an O-grid of four cells round each hole) so that every cell is a mapped block: conforming multi-block hex meshing.
  • 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.