delaunay - stay consistent with code on master

This commit is contained in:
Matthias Hochsteger 2021-06-04 13:31:44 +02:00
parent 6c37ce33b0
commit a2cc102849

View File

@ -737,14 +737,10 @@ namespace netgen
} }
void DelaunayRemoveDegenerated( const Mesh::T_POINTS & points, NgArray<DelaunayTet> & tempels ) void DelaunayRemoveDegenerated( const Mesh::T_POINTS & points, NgArray<DelaunayTet> & tempels, NgBitArray & badnode, int np )
{ {
static Timer tdegenerated("Delaunay - remove degenerated"); RegionTimer rt(tdegenerated); static Timer tdegenerated("Delaunay - remove degenerated"); RegionTimer rt(tdegenerated);
auto np = points.Size();
NgBitArray badnode(np);
badnode.Clear();
int ndeg = 0; int ndeg = 0;
for (int i = 1; i <= tempels.Size(); i++) for (int i = 1; i <= tempels.Size(); i++)
{ {
@ -795,12 +791,10 @@ namespace netgen
} }
// Remove flat tets containing two adjacent surface trigs // Remove flat tets containing two adjacent surface trigs
void DelaunayRemoveTwoTriaTets( const Mesh & mesh, NgArray<DelaunayTet> & tempels, NgArray<int> & openels ) void DelaunayRemoveTwoTriaTets( const Mesh & mesh, NgArray<DelaunayTet> & tempels, NgArray<int> & openels, NgBitArray & badnode, int np )
{ {
static Timer topenel("Delaunay - find openel"); RegionTimer rt(topenel); static Timer topenel("Delaunay - find openel"); RegionTimer rt(topenel);
auto np = mesh.GetNP();
// find surface triangles which are no face of any tet // find surface triangles which are no face of any tet
INDEX_3_HASHTABLE<int> openeltab(mesh.GetNOpenElements()+3); INDEX_3_HASHTABLE<int> openeltab(mesh.GetNOpenElements()+3);
@ -887,9 +881,6 @@ namespace netgen
// cout << "tetedges:"; // cout << "tetedges:";
// tetedges.PrintMemInfo (cout); // tetedges.PrintMemInfo (cout);
NgBitArray badnode(np);
badnode.Clear();
for (INDEX_2_HASHTABLE<INDEX_2>::Iterator it = twotrias.Begin(); for (INDEX_2_HASHTABLE<INDEX_2>::Iterator it = twotrias.Begin();
it != twotrias.End(); it++) it != twotrias.End(); it++)
{ {
@ -1622,11 +1613,13 @@ namespace netgen
tempels.Append (el); tempels.Append (el);
} }
NgBitArray badnode(mesh.GetNP());
badnode.Clear();
DelaunayRemoveDegenerated(mesh.Points(), tempels); DelaunayRemoveDegenerated(mesh.Points(), tempels, badnode, np);
NgArray<int> openels; NgArray<int> openels;
DelaunayRemoveTwoTriaTets(mesh, tempels, openels); DelaunayRemoveTwoTriaTets(mesh, tempels, openels, badnode, np);
DelaunayRemoveIntersecting(mesh, tempels, openels, pmin, pmax); DelaunayRemoveIntersecting(mesh, tempels, openels, pmin, pmax);
DelaunayRemoveOuter(mesh, tempels, adfront); DelaunayRemoveOuter(mesh, tempels, adfront);