From 8e94de7a732fc6f055f01e8c9f0f9772a08ea5c9 Mon Sep 17 00:00:00 2001 From: Christopher Lackner Date: Tue, 13 Feb 2024 13:01:42 +0100 Subject: [PATCH] fix isendpoint check in boundarylayer code --- libsrc/meshing/boundarylayer.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/libsrc/meshing/boundarylayer.cpp b/libsrc/meshing/boundarylayer.cpp index e5a927e9..9db4601a 100644 --- a/libsrc/meshing/boundarylayer.cpp +++ b/libsrc/meshing/boundarylayer.cpp @@ -985,22 +985,23 @@ namespace netgen Array points; // find first vertex on edge double edge_len = 0.; - auto is_end_point = [&] (PointIndex pi, const Segment& testseg) + auto is_end_point = [&] (PointIndex pi) { // if(mesh[pi].Type() == FIXEDPOINT) // return true; // return false; auto segs = topo.GetVertexSegments(pi); + if(segs.Size() == 1) + return true; auto first_edgenr = mesh[segs[0]].edgenr; for(auto segi : segs) - if(auto& seg = mesh[segi]; seg.edgenr != first_edgenr || (testseg[0] == seg[1] && testseg[1] == seg[0])) + if(mesh[segi].edgenr != first_edgenr) return true; return false; }; bool any_grows = false; - const Segment* last_seg = nullptr; for(const auto& seg : segments) { if(seg.edgenr-1 == edgenr) @@ -1008,9 +1009,8 @@ namespace netgen if(growthvectors[seg[0]].Length2() != 0 || growthvectors[seg[1]].Length2() != 0) any_grows = true; - if(points.Size() == 0 && is_end_point(seg[0], seg)) + if(points.Size() == 0 && is_end_point(seg[0])) { - last_seg = &seg; points.Append(seg[0]); points.Append(seg[1]); edge_len += (mesh[seg[1]] - mesh[seg[0]]).Length(); @@ -1037,7 +1037,6 @@ namespace netgen edge_len += (mesh[points.Last()] - mesh[seg[1]]).Length(); points.Append(seg[1]); point_found = true; - last_seg = &seg; break; } else if(seg[1] == points.Last() && @@ -1046,11 +1045,10 @@ namespace netgen edge_len += (mesh[points.Last()] - mesh[seg[0]]).Length(); points.Append(seg[0]); point_found = true; - last_seg = &seg; break; } } - if(last_seg && is_end_point(points.Last(), *last_seg)) + if(is_end_point(points.Last())) break; if(!point_found) {