GetEdgeVertices -> tuple

This commit is contained in:
Joachim Schoeberl 2023-07-30 22:29:54 +02:00
parent 35660c2ef7
commit 227b269b5c
10 changed files with 62 additions and 41 deletions

View File

@ -1614,7 +1614,8 @@ int Ng_GetFace_Edges (int fnr, int * edge)
void Ng_GetEdge_Vertices (int ednr, int * vert)
{
const MeshTopology & topology = mesh->GetTopology();
topology.GetEdgeVertices (ednr, vert[0], vert[1]);
// topology.GetEdgeVertices (ednr, vert[0], vert[1]);
tie(vert[0], vert[1]) = topology.GetEdgeVertices(ednr-1);
}

View File

@ -826,7 +826,8 @@ void WriteEdgeElementFormat (const Mesh & mesh,
outfile << el.PNum(j);
}
top->GetElementEdges(i,edges);
// top->GetElementEdges(i,edges);
auto eledges = top->GetEdges(ElementIndex(i-1));
outfile << endl << " ";
outfile.width(8);
outfile << edges.Size();
@ -834,7 +835,7 @@ void WriteEdgeElementFormat (const Mesh & mesh,
{
outfile << " ";
outfile.width(8);
outfile << edges[j-1];
outfile << edges[j-1]+1;
}
outfile << "\n";
@ -882,12 +883,13 @@ void WriteEdgeElementFormat (const Mesh & mesh,
}
int v1, v2;
// int v1, v2;
// edge - vertex - list
outfile << nedges << "\n";
for (i=1; i <= nedges; i++)
{
top->GetEdgeVertices(i,v1,v2);
// top->GetEdgeVertices(i,v1,v2);
auto [v1,v2] = top->GetEdgeVertices(i-1);
outfile.width(4);
outfile << v1;
outfile << " ";

View File

@ -801,8 +801,9 @@ namespace netgen
if (surfnr[e] == -1) continue;
SetThreadPercent(double(e)/surfnr.Size()*100.);
PointIndex pi1, pi2;
top.GetEdgeVertices (e+1, pi1, pi2);
// PointIndex pi1, pi2;
// top.GetEdgeVertices (e+1, pi1, pi2);
auto [pi1,pi2] = top.GetEdgeVertices(e);
bool swap = (pi1 > pi2);
Point<3> p1 = mesh[pi1];
@ -1014,8 +1015,9 @@ namespace netgen
SetThreadPercent(double(edgenr)/edge_surfnr1.Size()*100.);
PointIndex pi1, pi2;
top.GetEdgeVertices (edgenr+1, pi1, pi2);
// PointIndex pi1, pi2;
// top.GetEdgeVertices (edgenr+1, pi1, pi2);
auto [pi1,pi2] = top.GetEdgeVertices(edgenr);
bool swap = swap_edge[edgenr]; // (pi1 > pi2);
if (swap) Swap (pi1, pi2);
@ -1239,8 +1241,9 @@ namespace netgen
int first = edgecoeffsindex[edgenrs[k]];
Vector eshape(eorder-1);
int vi1, vi2;
top.GetEdgeVertices (edgenrs[k]+1, vi1, vi2);
// int vi1, vi2;
// top.GetEdgeVertices (edgenrs[k]+1, vi1, vi2);
auto [vi1,vi2] = top.GetEdgeVertices(edgenrs[k]);
if (vi1 > vi2) swap (vi1, vi2);
int v1 = -1, v2 = -1;
for (int j = 0; j < 3; j++)

View File

@ -6441,8 +6441,9 @@ namespace netgen
// for(auto edgei : eledges)
for(auto edgei : topology.GetEdges(ElementIndex(ei)))
{
int p1, p2;
topology.GetEdgeVertices(edgei+1, p1, p2);
// int p1, p2;
// topology.GetEdgeVertices(edgei+1, p1, p2);
auto [p1, p2] = topology.GetEdgeVertices(edgei);
auto c1 = inserted_points.count({p1, p2});
auto c2 = inserted_points.count({p2, p1});
if(c1 == 0 && c2 == 0)

View File

@ -1879,10 +1879,11 @@ namespace netgen
NgArray<int> cnt(nn+1);
cnt = 0;
for ( int edge = 1; edge <= nedges; edge++ )
for ( int edge = 0; edge < nedges; edge++ )
{
int v1, v2;
topology.GetEdgeVertices ( edge, v1, v2);
// int v1, v2;
// topology.GetEdgeVertices ( edge, v1, v2);
auto [v1,v2] = topology.GetEdgeVertices(edge);
cnt[v1-1] ++;
cnt[v2-1] ++;
}
@ -1896,10 +1897,11 @@ namespace netgen
adjacency = new idxtype[xadj[nn]];
cnt = 0;
for ( int edge = 1; edge <= nedges; edge++ )
for ( int edge = 0; edge < nedges; edge++ )
{
int v1, v2;
topology.GetEdgeVertices ( edge, v1, v2);
// int v1, v2;
// topology.GetEdgeVertices ( edge, v1, v2);
auto [v1,v2] = topology.GetEdgeVertices(edge);
adjacency[ xadj[v1-1] + cnt[v1-1] ] = v2-1;
adjacency[ xadj[v2-1] + cnt[v2-1] ] = v1-1;
cnt[v1-1]++;
@ -1973,7 +1975,7 @@ namespace netgen
facevolels1 = -1;
facevolels2 = -1;
NgArray<int, 0> elfaces;
// NgArray<int, 0> elfaces;
xadj = new idxtype[ne+1];
part = new idxtype[ne];
@ -1983,16 +1985,17 @@ namespace netgen
for ( int el=1; el <= ne; el++ )
{
Element volel = VolumeElement(el);
topology.GetElementFaces(el, elfaces);
// topology.GetElementFaces(el, elfaces);
auto elfaces = topology.GetFaces (ElementIndex(el-1));
for ( int i = 0; i < elfaces.Size(); i++ )
{
if ( facevolels1[elfaces[i]-1] == -1 )
facevolels1[elfaces[i]-1] = el;
if ( facevolels1[elfaces[i]] == -1 )
facevolels1[elfaces[i]] = el;
else
{
facevolels2[elfaces[i]-1] = el;
cnt[facevolels1[elfaces[i]-1]-1]++;
cnt[facevolels2[elfaces[i]-1]-1]++;
facevolels2[elfaces[i]] = el;
cnt[facevolels1[elfaces[i]]-1]++;
cnt[facevolels2[elfaces[i]]-1]++;
}
}
}

View File

@ -639,10 +639,11 @@ namespace netgen
// exchange edges
cnt_send = 0;
int v1, v2;
// int v1, v2;
for (int edge = 1; edge <= ned; edge++)
{
topology.GetEdgeVertices (edge, v1, v2);
// topology.GetEdgeVertices (edge, v1, v2);
auto [v1,v2] = topology.GetEdgeVertices(edge-1);
/*
for (int dest = 1; dest < ntasks; dest++)
// if (IsExchangeVert (dest, v1) && IsExchangeVert (dest, v2))
@ -662,7 +663,8 @@ namespace netgen
for (int edge = 1; edge <= ned; edge++)
{
topology.GetEdgeVertices (edge, v1, v2);
// topology.GetEdgeVertices (edge, v1, v2);
auto [v1,v2] = topology.GetEdgeVertices(edge-1);
for (int dest = 0; dest < ntasks; dest++)
// if (IsExchangeVert (dest, v1) && IsExchangeVert (dest, v2))
if (GetDistantProcs(v1).Contains(dest) && GetDistantProcs(v2).Contains(dest))
@ -680,7 +682,8 @@ namespace netgen
for (int edge : dest2edge[dest])
{
topology.GetEdgeVertices (edge, v1, v2);
// topology.GetEdgeVertices (edge, v1, v2);
auto [v1,v2] = topology.GetEdgeVertices(edge-1);
// if (IsExchangeVert (dest, v1) && IsExchangeVert (dest, v2))
if (GetDistantProcs(v1).Contains(dest) && GetDistantProcs(v2).Contains(dest))
{
@ -705,7 +708,8 @@ namespace netgen
INDEX_2_CLOSED_HASHTABLE<int> vert2edge(2*dest2edge[dest].Size()+10);
for (int edge : dest2edge[dest])
{
topology.GetEdgeVertices (edge, v1, v2);
// topology.GetEdgeVertices (edge, v1, v2);
auto [v1,v2] = topology.GetEdgeVertices(edge-1);
vert2edge.Set(INDEX_2(v1,v2), edge);
}

View File

@ -1616,8 +1616,9 @@ project_boundaries : Optional[str] = None
ParallelForRange( n, [&](auto myrange) {
for(auto i : myrange)
{
PointIndex p0,p1;
topo.GetEdgeVertices(i+1, p0, p1);
// PointIndex p0,p1;
// topo.GetEdgeVertices(i+1, p0, p1);
auto [p0,p1] = topo.GetEdgeVertices(i);
output[2*i] = p0-PointIndex::BASE;
output[2*i+1] = p1-PointIndex::BASE;
} });

View File

@ -2284,8 +2284,9 @@ namespace netgen
for (int j = 0; j < eledges.Size(); j++)
{
int vi1, vi2;
GetEdgeVertices (eledges[j]+1, vi1, vi2);
// int vi1, vi2;
// GetEdgeVertices (eledges[j]+1, vi1, vi2);
auto [vi1, vi2] = GetEdgeVertices(eledges[j]);
bool has1 = 0;
bool has2 = 0;
@ -2354,7 +2355,7 @@ namespace netgen
// Array<ElementIndex> elements_v1;
// GetVertexElements ( v1, elements_v1);
auto elements_v1 = GetVertexElements ( v1 );
int edv1, edv2;
// int edv1, edv2;
for ( int i = 0; i < elements_v1.Size(); i++ )
{
@ -2362,7 +2363,8 @@ namespace netgen
auto elementedges = GetEdges(ElementIndex(elements_v1[i]));
for ( int ed = 0; ed < elementedges.Size(); ed ++)
{
GetEdgeVertices( elementedges[ed]+1, edv1, edv2 );
// GetEdgeVertices( elementedges[ed]+1, edv1, edv2 );
auto [edv1,edv2] = GetEdgeVertices (elementedges[ed]);
if ( ( edv1 == v1 && edv2 == v2 ) || ( edv1 == v2 && edv2 == v1 ) )
return elementedges[ed];
}
@ -2394,9 +2396,10 @@ namespace netgen
void MeshTopology ::
GetSegmentSurfaceElements (int segnr, NgArray<SurfaceElementIndex> & els) const
{
int v1, v2;
// int v1, v2;
// GetEdgeVertices ( GetSegmentEdge (segnr), v1, v2 );
GetEdgeVertices ( GetEdge (segnr-1)+1, v1, v2 );
// GetEdgeVertices ( GetEdge (segnr-1)+1, v1, v2 );
auto [v1,v2] = GetEdgeVertices ( GetEdge (segnr-1) );
auto els1 = GetVertexSurfaceElements ( v1 );
auto els2 = GetVertexSurfaceElements ( v2 );
els.SetSize(0);

View File

@ -137,7 +137,9 @@ public:
DLL_HEADER void GetFaceVertices (int fnr, NgArray<int> & vertices) const;
DLL_HEADER void GetFaceVertices (int fnr, int * vertices) const;
[[deprecated("use GetEdgeVertices -> tupe(v0,v1) instead")]]
DLL_HEADER void GetEdgeVertices (int enr, int & v1, int & v2) const;
[[deprecated("use GetEdgeVertices -> tupe(v0,v1) instead")]]
DLL_HEADER void GetEdgeVertices (int enr, PointIndex & v1, PointIndex & v2) const;
auto GetEdgeVertices (int enr) const { return tuple(edge2vert[enr][0], edge2vert[enr][1]); }
auto GetEdgeVerticesPtr (int enr) const { return &edge2vert[enr][0]; }

View File

@ -411,8 +411,9 @@ namespace netgen
const MeshTopology & top = mesh->GetTopology();
for (int i = 1; i <= top.GetNEdges(); i++)
{
int v1, v2;
top.GetEdgeVertices (i, v1, v2);
// int v1, v2;
// top.GetEdgeVertices (i, v1, v2);
auto [v1,v2] = top.GetEdgeVertices(i-1);
const Point3d & p1 = mesh->Point(v1);
const Point3d & p2 = mesh->Point(v2);
const Point3d p = Center (p1, p2);