mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-13 22:50:33 +05:00
0-dim elements in topology
This commit is contained in:
parent
982fee589e
commit
f5a9991d24
@ -55,6 +55,7 @@ namespace netgen
|
|||||||
delete vert2element;
|
delete vert2element;
|
||||||
delete vert2surfelement;
|
delete vert2surfelement;
|
||||||
delete vert2segment;
|
delete vert2segment;
|
||||||
|
delete vert2pointelement;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MeshTopology :: Update()
|
void MeshTopology :: Update()
|
||||||
@ -90,6 +91,7 @@ namespace netgen
|
|||||||
delete vert2element;
|
delete vert2element;
|
||||||
delete vert2surfelement;
|
delete vert2surfelement;
|
||||||
delete vert2segment;
|
delete vert2segment;
|
||||||
|
delete vert2pointelement;
|
||||||
|
|
||||||
Array<int,PointIndex::BASE> cnt(nv);
|
Array<int,PointIndex::BASE> cnt(nv);
|
||||||
Array<int> vnums;
|
Array<int> vnums;
|
||||||
@ -150,6 +152,22 @@ namespace netgen
|
|||||||
vert2segment->AddSave (seg[1], si);
|
vert2segment->AddSave (seg[1], si);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
cnt = 0;
|
||||||
|
for (int pi = 0; pi < mesh.pointelements.Size(); pi++)
|
||||||
|
{
|
||||||
|
const Element0d & pointel = mesh.pointelements[pi];
|
||||||
|
cnt[pointel.pnum]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
vert2pointelement = new TABLE<int,PointIndex::BASE> (cnt);
|
||||||
|
for (int pi = 0; pi < mesh.pointelements.Size(); pi++)
|
||||||
|
{
|
||||||
|
const Element0d & pointel = mesh.pointelements[pi];
|
||||||
|
vert2pointelement->AddSave (pointel.pnum, pi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (buildedges)
|
if (buildedges)
|
||||||
{
|
{
|
||||||
static int timer1 = NgProfiler::CreateTimer ("topology::buildedges");
|
static int timer1 = NgProfiler::CreateTimer ("topology::buildedges");
|
||||||
@ -734,11 +752,12 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
nfa = oldnfa;
|
nfa = oldnfa;
|
||||||
|
INDEX_3_CLOSED_HASHTABLE<int> vert2face(2*max_face_on_vertex+10);
|
||||||
for (int v = PointIndex::BASE; v < nv+PointIndex::BASE; v++)
|
for (int v = PointIndex::BASE; v < nv+PointIndex::BASE; v++)
|
||||||
{
|
{
|
||||||
int first_fa = nfa;
|
int first_fa = nfa;
|
||||||
|
|
||||||
INDEX_3_CLOSED_HASHTABLE<int> vert2face(2*max_face_on_vertex+10);
|
vert2face.DeleteData();
|
||||||
|
|
||||||
for (int j = 0; j < vert2oldface[v].Size(); j++)
|
for (int j = 0; j < vert2oldface[v].Size(); j++)
|
||||||
{
|
{
|
||||||
@ -770,12 +789,8 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (ElementIndex elnr : (*vert2element)[v])
|
||||||
for (int j = 0; j < (*vert2element)[v].Size(); j++)
|
|
||||||
{
|
{
|
||||||
// NgProfiler::RegionTimer reg3 (timer2d);
|
|
||||||
|
|
||||||
ElementIndex elnr = (*vert2element)[v][j];
|
|
||||||
const Element & el = mesh[elnr];
|
const Element & el = mesh[elnr];
|
||||||
|
|
||||||
int nelfaces = GetNFaces (el.GetType());
|
int nelfaces = GetNFaces (el.GetType());
|
||||||
|
@ -46,6 +46,7 @@ class MeshTopology
|
|||||||
TABLE<ElementIndex,PointIndex::BASE> *vert2element;
|
TABLE<ElementIndex,PointIndex::BASE> *vert2element;
|
||||||
TABLE<SurfaceElementIndex,PointIndex::BASE> *vert2surfelement;
|
TABLE<SurfaceElementIndex,PointIndex::BASE> *vert2surfelement;
|
||||||
TABLE<SegmentIndex,PointIndex::BASE> *vert2segment;
|
TABLE<SegmentIndex,PointIndex::BASE> *vert2segment;
|
||||||
|
TABLE<int,PointIndex::BASE> *vert2pointelement = nullptr;
|
||||||
int timestamp;
|
int timestamp;
|
||||||
public:
|
public:
|
||||||
int GetNSurfedges() const {return surfedges.Size();}
|
int GetNSurfedges() const {return surfedges.Size();}
|
||||||
@ -143,6 +144,9 @@ public:
|
|||||||
FlatArray<SegmentIndex> GetVertexSegments (int vnr) const
|
FlatArray<SegmentIndex> GetVertexSegments (int vnr) const
|
||||||
{ return (*vert2segment)[vnr]; }
|
{ return (*vert2segment)[vnr]; }
|
||||||
|
|
||||||
|
FlatArray<int> GetVertexPointElements (int vnr) const
|
||||||
|
{ return (*vert2pointelement)[vnr]; }
|
||||||
|
|
||||||
int GetVerticesEdge ( int v1, int v2) const;
|
int GetVerticesEdge ( int v1, int v2) const;
|
||||||
void GetSegmentVolumeElements ( int segnr, Array<ElementIndex> & els ) const;
|
void GetSegmentVolumeElements ( int segnr, Array<ElementIndex> & els ) const;
|
||||||
void GetSegmentSurfaceElements ( int segnr, Array<SurfaceElementIndex> & els ) const;
|
void GetSegmentSurfaceElements ( int segnr, Array<SurfaceElementIndex> & els ) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user