diff --git a/libsrc/include/nginterface_v2.hpp b/libsrc/include/nginterface_v2.hpp index f2f9734b..3cf00fc8 100644 --- a/libsrc/include/nginterface_v2.hpp +++ b/libsrc/include/nginterface_v2.hpp @@ -347,7 +347,7 @@ namespace netgen void EnableTable (string name, bool set); - void Refine (NG_REFINEMENT_TYPE reftype, + void Refine (NG_REFINEMENT_TYPE reftype, bool onlyonce, void (*taskmanager)(function) = &DummyTaskManager2, void (*tracer)(string, bool) = &DummyTracer2); diff --git a/libsrc/interface/nginterface_v2.cpp b/libsrc/interface/nginterface_v2.cpp index 0f3f48a9..e417be3c 100644 --- a/libsrc/interface/nginterface_v2.cpp +++ b/libsrc/interface/nginterface_v2.cpp @@ -1156,7 +1156,7 @@ namespace netgen mesh->VolumeElement(elnr+1).SetRefinementFlag(flag); } - void Ngx_Mesh :: Refine (NG_REFINEMENT_TYPE reftype, + void Ngx_Mesh :: Refine (NG_REFINEMENT_TYPE reftype, bool onlyonce, void (*task_manager)(function), NgTracer tracer) { @@ -1166,6 +1166,7 @@ namespace netgen biopt.usemarkedelements = 1; biopt.refine_p = 0; biopt.refine_hp = 0; + biopt.onlyonce = onlyonce; if (reftype == NG_REFINE_P) biopt.refine_p = 1; if (reftype == NG_REFINE_HP) diff --git a/libsrc/meshing/bisect.cpp b/libsrc/meshing/bisect.cpp index 5127c439..0205cc81 100644 --- a/libsrc/meshing/bisect.cpp +++ b/libsrc/meshing/bisect.cpp @@ -3019,7 +3019,7 @@ namespace netgen { cnttet++; mtets.Elem(cnttet).marked = - 3 * mesh.VolumeElement(i).TestRefinementFlag(); + (opt.onlyonce ? 3 : 1) * mesh.VolumeElement(i).TestRefinementFlag(); if (mtets.Elem(cnttet).marked) cntm++; } @@ -3038,7 +3038,7 @@ namespace netgen for (int i = 1; i <= mtets.Size(); i++) { mtets.Elem(i).marked = - 3 * mesh.VolumeElement(i).TestRefinementFlag(); + (opt.onlyonce ? 1 : 3) * mesh.VolumeElement(i).TestRefinementFlag(); if (mtets.Elem(i).marked) cntm++; } @@ -3068,7 +3068,7 @@ namespace netgen { cnttrig++; mtris.Elem(cnttrig).marked = - mesh.SurfaceElement(i).TestRefinementFlag() ? 2 : 0; + mesh.SurfaceElement(i).TestRefinementFlag() ? (opt.onlyonce ? 1 : 2) : 0; // mtris.Elem(cnttrig).marked = 0; if (mtris.Elem(cnttrig).marked) cntm++; diff --git a/libsrc/meshing/bisect.hpp b/libsrc/meshing/bisect.hpp index 16849227..9cab3ef3 100644 --- a/libsrc/meshing/bisect.hpp +++ b/libsrc/meshing/bisect.hpp @@ -12,6 +12,7 @@ public: int usemarkedelements; bool refine_hp; bool refine_p; + bool onlyonce = false; NgTaskManager task_manager = &DummyTaskManager; NgTracer tracer = &DummyTracer; DLL_HEADER BisectionOptions ();