ENH: Have edge addressing from coupledPatch to mesh

This commit is contained in:
mattijs
2010-04-12 11:48:04 +01:00
parent b1484b37fd
commit f1e7cae646
2 changed files with 53 additions and 0 deletions

View File

@ -1122,6 +1122,9 @@ void Foam::globalMeshData::clearOut()
deleteDemandDrivenData(sharedEdgeAddrPtr_); deleteDemandDrivenData(sharedEdgeAddrPtr_);
coupledPatchPtr_.clear(); coupledPatchPtr_.clear();
coupledPatchMeshEdgesPtr_.clear();
coupledPatchMeshEdgeMapPtr_.clear();
// Point // Point
globalPointNumberingPtr_.clear(); globalPointNumberingPtr_.clear();
globalPointSlavesPtr_.clear(); globalPointSlavesPtr_.clear();
@ -1409,6 +1412,45 @@ const Foam::indirectPrimitivePatch& Foam::globalMeshData::coupledPatch() const
} }
const Foam::labelList& Foam::globalMeshData::coupledPatchMeshEdges() const
{
if (!coupledPatchMeshEdgesPtr_.valid())
{
coupledPatchMeshEdgesPtr_.reset
(
new labelList
(
coupledPatch().meshEdges
(
mesh_.edges(),
mesh_.pointEdges()
)
)
);
}
return coupledPatchMeshEdgesPtr_();
}
const Foam::Map<Foam::label>& Foam::globalMeshData::coupledPatchMeshEdgeMap()
const
{
if (!coupledPatchMeshEdgeMapPtr_.valid())
{
const labelList& me = coupledPatchMeshEdges();
coupledPatchMeshEdgeMapPtr_.reset(new Map<label>(2*me.size()));
Map<label>& em = coupledPatchMeshEdgeMapPtr_();
forAll(me, i)
{
em.insert(me[i], i);
}
}
return coupledPatchMeshEdgeMapPtr_();
}
const Foam::globalIndex& Foam::globalMeshData::globalPointNumbering() const const Foam::globalIndex& Foam::globalMeshData::globalPointNumbering() const
{ {
if (!globalPointNumberingPtr_.valid()) if (!globalPointNumberingPtr_.valid())

View File

@ -208,6 +208,10 @@ class globalMeshData
mutable autoPtr<indirectPrimitivePatch> coupledPatchPtr_; mutable autoPtr<indirectPrimitivePatch> coupledPatchPtr_;
mutable autoPtr<labelList> coupledPatchMeshEdgesPtr_;
mutable autoPtr<Map<label> > coupledPatchMeshEdgeMapPtr_;
// Collocated // Collocated
// Coupled point to collocated coupled points // Coupled point to collocated coupled points
@ -506,6 +510,13 @@ public:
//- Return patch of all coupled faces //- Return patch of all coupled faces
const indirectPrimitivePatch& coupledPatch() const; const indirectPrimitivePatch& coupledPatch() const;
//- Return map from coupledPatch edges to mesh edges
const labelList& coupledPatchMeshEdges() const;
//- Return map from mesh edges to coupledPatch edges
const Map<label>& coupledPatchMeshEdgeMap() const;
// Coupled point to collocated coupled points. Coupled points are // Coupled point to collocated coupled points. Coupled points are
// points on any coupled patch. // points on any coupled patch.