Skip to content

Commit e1dd9ff

Browse files
[Hotfix Main]: [SNAPPY] Adds an option to ignore region edges in edge refinement (#1814)
Co-authored-by: piotrkluba <piotr.kluba@flexcompute.com>
1 parent 13c0976 commit e1dd9ff

File tree

6 files changed

+23
-8
lines changed

6 files changed

+23
-8
lines changed

flow360/component/simulation/meshing_param/snappy/snappy_mesh_refinements.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ class SurfaceEdgeRefinement(Flow360BaseModel):
113113
retain_on_smoothing: bool = pd.Field(
114114
True, description="Maintain the edge when smoothing is applied."
115115
)
116+
geometric_test_only: bool = pd.Field(
117+
False,
118+
description="If enabled, only geometric tests are performed on the edge (region edge will be ignored).",
119+
)
116120

117121
@pd.model_validator(mode="after")
118122
def _check_spacing_format(self) -> Self:

flow360/component/simulation/translator/surface_meshing_translator.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ def apply_SnappySurfaceEdgeRefinement(
165165
edges["minLen"] = refinement.min_len.value.item()
166166
if refinement.retain_on_smoothing is not None:
167167
edges["retainOnSmoothing"] = refinement.retain_on_smoothing
168+
edges["geometricTestOnly"] = refinement.geometric_test_only
168169
if refinement.spacing is None:
169170
edges["edgeSpacing"] = defaults.min_spacing.value.item()
170171
elif isinstance(refinement.spacing, unyt_array) and isinstance(

tests/simulation/translator/ref/surface_meshing/snappy_basic_refinements.json

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"edgeSpacing": [[5, 4]],
2121
"minElem": 3,
2222
"includedAngle": 120,
23-
"retainOnSmoothing": true
23+
"retainOnSmoothing": true,
24+
"geometricTestOnly": false
2425
}
2526
},
2627
{
@@ -38,7 +39,8 @@
3839
],
3940
"minLen": 6,
4041
"includedAngle": 150,
41-
"retainOnSmoothing": false
42+
"retainOnSmoothing": false,
43+
"geometricTestOnly": false
4244
}
4345
}
4446
]
@@ -54,7 +56,8 @@
5456
"edgeSpacing": 4,
5557
"minElem": 3,
5658
"includedAngle": 120,
57-
"retainOnSmoothing": true
59+
"retainOnSmoothing": true,
60+
"geometricTestOnly": true
5861
},
5962
"regions": [
6063
{
@@ -80,7 +83,8 @@
8083
],
8184
"minLen": 6,
8285
"includedAngle": 150,
83-
"retainOnSmoothing": false
86+
"retainOnSmoothing": false,
87+
"geometricTestOnly": false
8488
}
8589
},
8690
{
@@ -122,7 +126,8 @@
122126
],
123127
"minLen": 6,
124128
"includedAngle": 150,
125-
"retainOnSmoothing": false
129+
"retainOnSmoothing": false,
130+
"geometricTestOnly": false
126131
},
127132
"regions": [
128133
{

tests/simulation/translator/ref/surface_meshing/snappy_no_regions.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
"edgeSpacing": 4,
3232
"minElem": 3,
3333
"includedAngle": 120,
34-
"retainOnSmoothing": true
34+
"retainOnSmoothing": true,
35+
"geometricTestOnly": false
3536
},
3637
"regions": []
3738
}

tests/simulation/translator/ref/surface_meshing/snappy_refinements_multiple_regions.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
"edgeSpacing": 4,
2020
"minElem": 3,
2121
"includedAngle": 120,
22-
"retainOnSmoothing": false
22+
"retainOnSmoothing": false,
23+
"geometricTestOnly": true
2324
}
2425
},
2526
{
@@ -32,7 +33,8 @@
3233
"edgeSpacing": 4,
3334
"minElem": 3,
3435
"includedAngle": 120,
35-
"retainOnSmoothing": false
36+
"retainOnSmoothing": false,
37+
"geometricTestOnly": true
3638
}
3739
}
3840
]

tests/simulation/translator/test_surface_meshing_translator.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,7 @@ def snappy_basic_refinements():
638638
min_elem=3,
639639
included_angle=120 * u.deg,
640640
entities=test_geometry.snappy_bodies["body1"],
641+
geometric_test_only=True,
641642
),
642643
snappy.SurfaceEdgeRefinement(
643644
spacing=[4 * u.mm],
@@ -796,6 +797,7 @@ def snappy_refinements_multiple_regions():
796797
included_angle=120 * u.deg,
797798
entities=[test_geometry["body0::patch0"], test_geometry["body0::patch1"]],
798799
retain_on_smoothing=False,
800+
geometric_test_only=True,
799801
),
800802
],
801803
smooth_controls=snappy.SmoothControls(),

0 commit comments

Comments
 (0)