From 084473cc0c6953442051a245d9ef73f682c5dd43 Mon Sep 17 00:00:00 2001 From: mattijs <mattijs@hunt.opencfd.co.uk> Date: Wed, 27 Aug 2008 18:00:02 +0100 Subject: [PATCH] delayed faceEdges construction to save memory --- .../meshes/primitiveMesh/primitiveMeshEdges.C | 52 ++++++++++++++++--- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshEdges.C b/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshEdges.C index 8b5fa7bb03b..6b3039ff308 100644 --- a/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshEdges.C +++ b/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshEdges.C @@ -467,7 +467,8 @@ const edgeList& primitiveMesh::edges() const { if (!edgesPtr_) { - calcEdges(true); + //calcEdges(true); + calcEdges(false); } return *edgesPtr_; @@ -477,10 +478,8 @@ const labelListList& primitiveMesh::pointEdges() const { if (!pePtr_) { - //// Invert edges - //pePtr_ = new labelListList(nPoints()); - //invertManyToMany(nPoints(), edges(), *pePtr_); - calcEdges(true); + //calcEdges(true); + calcEdges(false); } return *pePtr_; @@ -491,12 +490,53 @@ const labelListList& primitiveMesh::faceEdges() const { if (!fePtr_) { - calcEdges(true); + if (debug) + { + Pout<< "primitiveMesh::faceEdges() : " + << "calculating faceEdges" << endl; + } + + //calcEdges(true); + const faceList& fcs = faces(); + const labelListList& pe = pointEdges(); + const edgeList& es = edges(); + + fePtr_ = new labelListList(fcs.size()); + labelListList& faceEdges = *fePtr_; + + forAll(fcs, faceI) + { + const face& f = fcs[faceI]; + + labelList& fEdges = faceEdges[faceI]; + fEdges.setSize(f.size()); + + forAll(f, fp) + { + label pointI = f[fp]; + label nextPointI = f[f.fcIndex(fp)]; + + // Find edge between pointI, nextPontI + const labelList& pEdges = pe[pointI]; + + forAll(pEdges, i) + { + label edgeI = pEdges[i]; + + if (es[edgeI].otherVertex(pointI) == nextPointI) + { + fEdges[fp] = edgeI; + break; + } + } + } + } } return *fePtr_; } + void primitiveMesh::clearOutEdges() { deleteDemandDrivenData(edgesPtr_); -- GitLab