mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-26 04:40:34 +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
|
// generate faces
|
||||||
if (buildfaces)
|
if (buildfaces)
|
||||||
@ -942,6 +953,11 @@ namespace netgen
|
|||||||
PointIndex v0 = pa[k]; // also in face
|
PointIndex v0 = pa[k]; // also in face
|
||||||
PointIndex v1 = pa[1-k];
|
PointIndex v1 = pa[1-k];
|
||||||
PointIndex v2 = f3[0]+f3[1]+f3[2] - v - v0;
|
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 };
|
INT<3> cf3 = { v0, v1, v2 };
|
||||||
cf3.Sort();
|
cf3.Sort();
|
||||||
// cout << "intermediate: " << cf3 << " of " << f3 << endl;
|
// cout << "intermediate: " << cf3 << " of " << f3 << endl;
|
||||||
@ -950,6 +966,7 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
cnt = 0;
|
cnt = 0;
|
||||||
for (int i = 0; i < intermediate_faces.Size(); i++)
|
for (int i = 0; i < intermediate_faces.Size(); i++)
|
||||||
cnt[intermediate_faces[i][0]]++;
|
cnt[intermediate_faces[i][0]]++;
|
||||||
@ -1548,20 +1565,6 @@ namespace netgen
|
|||||||
|
|
||||||
// cout << "v2f:" << endl << v2f << endl;
|
// 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.SetSize (nfa);
|
||||||
parent_faces = { -1, { -1, -1, -1, -1 } };
|
parent_faces = { -1, { -1, -1, -1, -1 } };
|
||||||
|
|
||||||
@ -1605,6 +1608,11 @@ namespace netgen
|
|||||||
// the third one, on the tip
|
// the third one, on the tip
|
||||||
PointIndex v2 = f3[0]+f3[1]+f3[2] - v0 - vb;
|
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);
|
INT<3> parentverts(v0, v1, v2);
|
||||||
parentverts.Sort();
|
parentverts.Sort();
|
||||||
|
|
||||||
@ -1629,6 +1637,7 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// is face a new face (bisect-face) ?
|
// is face a new face (bisect-face) ?
|
||||||
|
Loading…
Reference in New Issue
Block a user