diff --git a/libsrc/interface/nginterface.cpp b/libsrc/interface/nginterface.cpp index c76a94d4..cf779603 100644 --- a/libsrc/interface/nginterface.cpp +++ b/libsrc/interface/nginterface.cpp @@ -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); } diff --git a/libsrc/interface/writeuser.cpp b/libsrc/interface/writeuser.cpp index 43a89057..637a22ec 100644 --- a/libsrc/interface/writeuser.cpp +++ b/libsrc/interface/writeuser.cpp @@ -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 << " "; diff --git a/libsrc/meshing/curvedelems.cpp b/libsrc/meshing/curvedelems.cpp index 6bc036ef..ddc3fe34 100644 --- a/libsrc/meshing/curvedelems.cpp +++ b/libsrc/meshing/curvedelems.cpp @@ -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++) diff --git a/libsrc/meshing/meshclass.cpp b/libsrc/meshing/meshclass.cpp index 26d6c415..b8b8e604 100644 --- a/libsrc/meshing/meshclass.cpp +++ b/libsrc/meshing/meshclass.cpp @@ -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) diff --git a/libsrc/meshing/parallelmesh.cpp b/libsrc/meshing/parallelmesh.cpp index 185c9eab..05cebf56 100644 --- a/libsrc/meshing/parallelmesh.cpp +++ b/libsrc/meshing/parallelmesh.cpp @@ -1879,10 +1879,11 @@ namespace netgen NgArray 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 elfaces; + // NgArray 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]++; } } } diff --git a/libsrc/meshing/paralleltop.cpp b/libsrc/meshing/paralleltop.cpp index 79e784ec..5694f94b 100644 --- a/libsrc/meshing/paralleltop.cpp +++ b/libsrc/meshing/paralleltop.cpp @@ -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 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); } diff --git a/libsrc/meshing/python_mesh.cpp b/libsrc/meshing/python_mesh.cpp index eea4c3be..35d12877 100644 --- a/libsrc/meshing/python_mesh.cpp +++ b/libsrc/meshing/python_mesh.cpp @@ -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; } }); diff --git a/libsrc/meshing/topology.cpp b/libsrc/meshing/topology.cpp index e7c15dc5..9232b835 100644 --- a/libsrc/meshing/topology.cpp +++ b/libsrc/meshing/topology.cpp @@ -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 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 & 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); diff --git a/libsrc/meshing/topology.hpp b/libsrc/meshing/topology.hpp index c3cc3ed2..c77a49e7 100644 --- a/libsrc/meshing/topology.hpp +++ b/libsrc/meshing/topology.hpp @@ -137,7 +137,9 @@ public: DLL_HEADER void GetFaceVertices (int fnr, NgArray & 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]; } diff --git a/libsrc/visualization/vsmesh.cpp b/libsrc/visualization/vsmesh.cpp index c63a8e0a..715c7ffe 100644 --- a/libsrc/visualization/vsmesh.cpp +++ b/libsrc/visualization/vsmesh.cpp @@ -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);