Replaces Triangle library with Gmsh as the default triangulation engine for adaptive isogrid generation. Gmsh's Frontal-Delaunay algorithm provides: - Better adaptive density response (concentric rings around holes) - Superior triangle quality (min angles 30-35° vs 25-30°) - Single-pass meshing with background size fields (vs iterative refinement) - More equilateral triangles → uniform rib widths, better manufacturability - Natural boundary conformance → cleaner frame edges Comparison results (mixed hole weights plate): - Min angle improvement: +5.1° (25.7° → 30.8°) - Density field accuracy: Excellent vs Poor - Visual quality: Concentric hole refinement vs random patterns Changes: - Updated src/brain/__main__.py to import triangulation_gmsh - Added gmsh>=4.11 to requirements.txt (Triangle kept as fallback) - Updated README and technical-spec.md - Added comparison script and test results Triangle library remains available as fallback option. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
529 lines
8.0 KiB
JSON
529 lines
8.0 KiB
JSON
{
|
|
"valid": true,
|
|
"outer_boundary": [
|
|
[
|
|
0,
|
|
0
|
|
],
|
|
[
|
|
200,
|
|
0
|
|
],
|
|
[
|
|
200,
|
|
150
|
|
],
|
|
[
|
|
0,
|
|
150
|
|
]
|
|
],
|
|
"pockets": [],
|
|
"holes": [
|
|
{
|
|
"center": [
|
|
30,
|
|
30
|
|
],
|
|
"radius": 5.0,
|
|
"is_circular": true
|
|
},
|
|
{
|
|
"center": [
|
|
170,
|
|
30
|
|
],
|
|
"radius": 5.0,
|
|
"is_circular": true
|
|
},
|
|
{
|
|
"center": [
|
|
170,
|
|
120
|
|
],
|
|
"radius": 5.0,
|
|
"is_circular": true
|
|
},
|
|
{
|
|
"center": [
|
|
30,
|
|
120
|
|
],
|
|
"radius": 5.0,
|
|
"is_circular": true
|
|
}
|
|
],
|
|
"rib_web": [
|
|
{
|
|
"exterior": [
|
|
[
|
|
0.0,
|
|
0.0
|
|
],
|
|
[
|
|
0.0,
|
|
150.0
|
|
],
|
|
[
|
|
200.0,
|
|
150.0
|
|
],
|
|
[
|
|
200.0,
|
|
0.0
|
|
],
|
|
[
|
|
0.0,
|
|
0.0
|
|
]
|
|
],
|
|
"interiors": [
|
|
[
|
|
[
|
|
32.5,
|
|
34.33
|
|
],
|
|
[
|
|
31.294,
|
|
34.83
|
|
],
|
|
[
|
|
30.0,
|
|
35.0
|
|
],
|
|
[
|
|
28.706,
|
|
34.83
|
|
],
|
|
[
|
|
27.5,
|
|
34.33
|
|
],
|
|
[
|
|
26.464,
|
|
33.536
|
|
],
|
|
[
|
|
25.67,
|
|
32.5
|
|
],
|
|
[
|
|
25.17,
|
|
31.294
|
|
],
|
|
[
|
|
25.0,
|
|
30.0
|
|
],
|
|
[
|
|
25.17,
|
|
28.706
|
|
],
|
|
[
|
|
25.67,
|
|
27.5
|
|
],
|
|
[
|
|
26.464,
|
|
26.464
|
|
],
|
|
[
|
|
27.5,
|
|
25.67
|
|
],
|
|
[
|
|
28.706,
|
|
25.17
|
|
],
|
|
[
|
|
30.0,
|
|
25.0
|
|
],
|
|
[
|
|
31.294,
|
|
25.17
|
|
],
|
|
[
|
|
32.5,
|
|
25.67
|
|
],
|
|
[
|
|
33.536,
|
|
26.464
|
|
],
|
|
[
|
|
34.33,
|
|
27.5
|
|
],
|
|
[
|
|
34.83,
|
|
28.706
|
|
],
|
|
[
|
|
35.0,
|
|
30.0
|
|
],
|
|
[
|
|
34.83,
|
|
31.294
|
|
],
|
|
[
|
|
34.33,
|
|
32.5
|
|
],
|
|
[
|
|
33.536,
|
|
33.536
|
|
],
|
|
[
|
|
32.5,
|
|
34.33
|
|
]
|
|
],
|
|
[
|
|
[
|
|
173.536,
|
|
33.536
|
|
],
|
|
[
|
|
172.5,
|
|
34.33
|
|
],
|
|
[
|
|
171.294,
|
|
34.83
|
|
],
|
|
[
|
|
170.0,
|
|
35.0
|
|
],
|
|
[
|
|
168.706,
|
|
34.83
|
|
],
|
|
[
|
|
167.5,
|
|
34.33
|
|
],
|
|
[
|
|
166.464,
|
|
33.536
|
|
],
|
|
[
|
|
165.67,
|
|
32.5
|
|
],
|
|
[
|
|
165.17,
|
|
31.294
|
|
],
|
|
[
|
|
165.0,
|
|
30.0
|
|
],
|
|
[
|
|
165.17,
|
|
28.706
|
|
],
|
|
[
|
|
165.67,
|
|
27.5
|
|
],
|
|
[
|
|
166.464,
|
|
26.464
|
|
],
|
|
[
|
|
167.5,
|
|
25.67
|
|
],
|
|
[
|
|
168.706,
|
|
25.17
|
|
],
|
|
[
|
|
170.0,
|
|
25.0
|
|
],
|
|
[
|
|
171.294,
|
|
25.17
|
|
],
|
|
[
|
|
172.5,
|
|
25.67
|
|
],
|
|
[
|
|
173.536,
|
|
26.464
|
|
],
|
|
[
|
|
174.33,
|
|
27.5
|
|
],
|
|
[
|
|
174.83,
|
|
28.706
|
|
],
|
|
[
|
|
175.0,
|
|
30.0
|
|
],
|
|
[
|
|
174.83,
|
|
31.294
|
|
],
|
|
[
|
|
174.33,
|
|
32.5
|
|
],
|
|
[
|
|
173.536,
|
|
33.536
|
|
]
|
|
],
|
|
[
|
|
[
|
|
174.33,
|
|
122.5
|
|
],
|
|
[
|
|
173.536,
|
|
123.536
|
|
],
|
|
[
|
|
172.5,
|
|
124.33
|
|
],
|
|
[
|
|
171.294,
|
|
124.83
|
|
],
|
|
[
|
|
170.0,
|
|
125.0
|
|
],
|
|
[
|
|
168.706,
|
|
124.83
|
|
],
|
|
[
|
|
167.5,
|
|
124.33
|
|
],
|
|
[
|
|
166.464,
|
|
123.536
|
|
],
|
|
[
|
|
165.67,
|
|
122.5
|
|
],
|
|
[
|
|
165.17,
|
|
121.294
|
|
],
|
|
[
|
|
165.0,
|
|
120.0
|
|
],
|
|
[
|
|
165.17,
|
|
118.706
|
|
],
|
|
[
|
|
165.67,
|
|
117.5
|
|
],
|
|
[
|
|
166.464,
|
|
116.464
|
|
],
|
|
[
|
|
167.5,
|
|
115.67
|
|
],
|
|
[
|
|
168.706,
|
|
115.17
|
|
],
|
|
[
|
|
170.0,
|
|
115.0
|
|
],
|
|
[
|
|
171.294,
|
|
115.17
|
|
],
|
|
[
|
|
172.5,
|
|
115.67
|
|
],
|
|
[
|
|
173.536,
|
|
116.464
|
|
],
|
|
[
|
|
174.33,
|
|
117.5
|
|
],
|
|
[
|
|
174.83,
|
|
118.706
|
|
],
|
|
[
|
|
175.0,
|
|
120.0
|
|
],
|
|
[
|
|
174.83,
|
|
121.294
|
|
],
|
|
[
|
|
174.33,
|
|
122.5
|
|
]
|
|
],
|
|
[
|
|
[
|
|
34.83,
|
|
121.294
|
|
],
|
|
[
|
|
34.33,
|
|
122.5
|
|
],
|
|
[
|
|
33.536,
|
|
123.536
|
|
],
|
|
[
|
|
32.5,
|
|
124.33
|
|
],
|
|
[
|
|
31.294,
|
|
124.83
|
|
],
|
|
[
|
|
30.0,
|
|
125.0
|
|
],
|
|
[
|
|
28.706,
|
|
124.83
|
|
],
|
|
[
|
|
27.5,
|
|
124.33
|
|
],
|
|
[
|
|
26.464,
|
|
123.536
|
|
],
|
|
[
|
|
25.67,
|
|
122.5
|
|
],
|
|
[
|
|
25.17,
|
|
121.294
|
|
],
|
|
[
|
|
25.0,
|
|
120.0
|
|
],
|
|
[
|
|
25.17,
|
|
118.706
|
|
],
|
|
[
|
|
25.67,
|
|
117.5
|
|
],
|
|
[
|
|
26.464,
|
|
116.464
|
|
],
|
|
[
|
|
27.5,
|
|
115.67
|
|
],
|
|
[
|
|
28.706,
|
|
115.17
|
|
],
|
|
[
|
|
30.0,
|
|
115.0
|
|
],
|
|
[
|
|
31.294,
|
|
115.17
|
|
],
|
|
[
|
|
32.5,
|
|
115.67
|
|
],
|
|
[
|
|
33.536,
|
|
116.464
|
|
],
|
|
[
|
|
34.33,
|
|
117.5
|
|
],
|
|
[
|
|
34.83,
|
|
118.706
|
|
],
|
|
[
|
|
35.0,
|
|
120.0
|
|
],
|
|
[
|
|
34.83,
|
|
121.294
|
|
]
|
|
]
|
|
]
|
|
}
|
|
],
|
|
"parameters_used": {
|
|
"eta_0": 0.1,
|
|
"alpha": 0.8,
|
|
"R_0": 40.0,
|
|
"kappa": 1.5,
|
|
"p": 2.0,
|
|
"beta": 0.3,
|
|
"R_edge": 15.0,
|
|
"s_min": 12.0,
|
|
"s_max": 35.0,
|
|
"t_min": 2.5,
|
|
"t_0": 3.5,
|
|
"gamma": 1.2,
|
|
"w_frame": 8.0,
|
|
"r_f": 1.5,
|
|
"d_keep": 1.5,
|
|
"min_pocket_radius": 6.0,
|
|
"min_triangle_area": 20.0,
|
|
"lloyd_iterations": 5,
|
|
"thickness": 8.0
|
|
},
|
|
"checks": {
|
|
"is_valid_geometry": true,
|
|
"min_web_width": true,
|
|
"no_islands": true,
|
|
"no_self_intersections": true,
|
|
"mass_estimate_g": 641.290915584,
|
|
"area_mm2": 29689.394239999994,
|
|
"num_interiors": 4
|
|
},
|
|
"pipeline": {
|
|
"geometry_file": "tests\\test_geometries\\small_plate_200x150.json",
|
|
"num_vertices": 101,
|
|
"num_triangles": 139,
|
|
"num_pockets": 0,
|
|
"validation_ok": true
|
|
}
|
|
} |