mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 21:10:33 +05:00
fixing face refinement (by Guosheng)
This commit is contained in:
parent
28c4b78410
commit
5cc42f040d
@ -890,6 +890,17 @@ namespace netgen
|
||||
}
|
||||
|
||||
|
||||
// edge hashtable:: needed for getting parent faces
|
||||
ngcore::ClosedHashTable<INT<2>, int> v2e(nv);
|
||||
if (build_parent_faces)
|
||||
for (auto i : Range(edge2vert))
|
||||
{
|
||||
auto edge = edge2vert[i];
|
||||
INT<2> e2(edge[0], edge[1]);
|
||||
e2.Sort();
|
||||
v2e[e2] = i;
|
||||
}
|
||||
|
||||
|
||||
// generate faces
|
||||
if (buildfaces)
|
||||
@ -942,6 +953,11 @@ namespace netgen
|
||||
PointIndex v0 = pa[k]; // also in face
|
||||
PointIndex v1 = pa[1-k];
|
||||
PointIndex v2 = f3[0]+f3[1]+f3[2] - v - v0;
|
||||
// if there is an edge connecting v1 and v2, accept
|
||||
// the new face
|
||||
INT<2> parentedge(v1, v2);
|
||||
parentedge.Sort();
|
||||
if (v2e.Used(parentedge)){
|
||||
INT<3> cf3 = { v0, v1, v2 };
|
||||
cf3.Sort();
|
||||
// cout << "intermediate: " << cf3 << " of " << f3 << endl;
|
||||
@ -950,6 +966,7 @@ namespace netgen
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
cnt = 0;
|
||||
for (int i = 0; i < intermediate_faces.Size(); i++)
|
||||
cnt[intermediate_faces[i][0]]++;
|
||||
@ -1548,20 +1565,6 @@ namespace netgen
|
||||
|
||||
// cout << "v2f:" << endl << v2f << endl;
|
||||
|
||||
// build edge2vert hashtable
|
||||
// cout << "e2v = " << edge2vert << endl;
|
||||
|
||||
ngcore::ClosedHashTable<INT<2>, int> v2e(nv);
|
||||
for (auto i : Range(edge2vert))
|
||||
{
|
||||
auto edge = edge2vert[i];
|
||||
INT<3> e2(edge[0], edge[1]);
|
||||
e2.Sort();
|
||||
v2e[e2] = i;
|
||||
}
|
||||
|
||||
// cout << "v2e:" << endl << v2e << endl;
|
||||
|
||||
parent_faces.SetSize (nfa);
|
||||
parent_faces = { -1, { -1, -1, -1, -1 } };
|
||||
|
||||
@ -1605,6 +1608,11 @@ namespace netgen
|
||||
// the third one, on the tip
|
||||
PointIndex v2 = f3[0]+f3[1]+f3[2] - v0 - vb;
|
||||
|
||||
// if there is an edge connecting v1 and v2, accept
|
||||
// the new face
|
||||
INT<2> parentedge(v1, v2);
|
||||
parentedge.Sort();
|
||||
if (v2e.Used(parentedge)){
|
||||
INT<3> parentverts(v0, v1, v2);
|
||||
parentverts.Sort();
|
||||
|
||||
@ -1629,6 +1637,7 @@ namespace netgen
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// is face a new face (bisect-face) ?
|
||||
|
Loading…
Reference in New Issue
Block a user