mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
delayed faceEdges construction to save memory
This commit is contained in:
@ -467,7 +467,8 @@ const edgeList& primitiveMesh::edges() const
|
|||||||
{
|
{
|
||||||
if (!edgesPtr_)
|
if (!edgesPtr_)
|
||||||
{
|
{
|
||||||
calcEdges(true);
|
//calcEdges(true);
|
||||||
|
calcEdges(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return *edgesPtr_;
|
return *edgesPtr_;
|
||||||
@ -477,10 +478,8 @@ const labelListList& primitiveMesh::pointEdges() const
|
|||||||
{
|
{
|
||||||
if (!pePtr_)
|
if (!pePtr_)
|
||||||
{
|
{
|
||||||
//// Invert edges
|
//calcEdges(true);
|
||||||
//pePtr_ = new labelListList(nPoints());
|
calcEdges(false);
|
||||||
//invertManyToMany(nPoints(), edges(), *pePtr_);
|
|
||||||
calcEdges(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return *pePtr_;
|
return *pePtr_;
|
||||||
@ -491,12 +490,53 @@ const labelListList& primitiveMesh::faceEdges() const
|
|||||||
{
|
{
|
||||||
if (!fePtr_)
|
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_;
|
return *fePtr_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void primitiveMesh::clearOutEdges()
|
void primitiveMesh::clearOutEdges()
|
||||||
{
|
{
|
||||||
deleteDemandDrivenData(edgesPtr_);
|
deleteDemandDrivenData(edgesPtr_);
|
||||||
|
|||||||
Reference in New Issue
Block a user