From 99e463146f5ae3edbea4e3e6a5e955ae179cd81e Mon Sep 17 00:00:00 2001 From: Matthias Hochsteger Date: Tue, 5 Jul 2022 12:12:13 +0200 Subject: [PATCH] Fix meshing bug (close surface on boundary) --- libsrc/meshing/netrule3.cpp | 1 + rules/pyramidrules2.rls | 63 +++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/libsrc/meshing/netrule3.cpp b/libsrc/meshing/netrule3.cpp index b45de522..956b6309 100644 --- a/libsrc/meshing/netrule3.cpp +++ b/libsrc/meshing/netrule3.cpp @@ -77,6 +77,7 @@ void vnetrule :: SetFreeZoneTransformation (const Vector & allp, int tolclass) fzbox.SetPoint (transfreezone.Elem(1)); for (i = 2; i <= freezone.Size(); i++) fzbox.AddPoint (transfreezone.Elem(i)); + fzbox.IncreaseRel(1e-8); // MARK(setfz3); diff --git a/rules/pyramidrules2.rls b/rules/pyramidrules2.rls index df905c19..bdce3340 100644 --- a/rules/pyramidrules2.rls +++ b/rules/pyramidrules2.rls @@ -163,6 +163,69 @@ freeset endrule +rule "pyramid with one trig, left" + +quality 20 + +mappoints +(0, 0, 0); +(1, 0, 0); +(1, 1, 0); +(0, 1, 0); +(0.5, 0.5, -0.5); + +mapfaces +(1, 2, 3, 4) del; +(3, 2, 5) del; + +newpoints + +newfaces +(1, 2, 5); +(3, 4, 5); +(4, 1, 5); + +elements +(1, 2, 3, 4, 5); + +freezone2 +{ 1 P1 }; +{ 1 P2 }; +{ 1 P3 }; +{ 1 P4 }; +{ 1 P5 }; +{ 0.34 P1, 0.34 P2, 0.34 P5, -0.01 P3 }; +{ 0.34 P3, 0.34 P4, 0.34 P5, -0.02 P1 }; +{ 0.34 P1, 0.34 P4, 0.34 P5, -0.02 P2 }; + +freezonelimit +{ 1 P1 }; +{ 1 P2 }; +{ 1 P3 }; +{ 1 P4 }; +{ 1 P5 }; +{ 0.333 P1, 0.333 P2, 0.334 P5, 0 P3 }; +{ 0.333 P3, 0.333 P4, 0.334 P5, 0 P1 }; +{ 0.333 P1, 0.333 P4, 0.334 P5, 0 P2 }; + +orientations +(1, 2, 3, 5); +(1, 3, 4, 5); + + +freeset +1 2 3 5; +freeset +1 3 4 5; +freeset +1 2 5 6; +freeset +3 4 5 7; +freeset +1 4 5 8; +endrule + +