84#ifndef Foam_globalMeshData_H
85#define Foam_globalMeshData_H
99template<
class T>
class EdgeMap;
101class globalIndexAndTransform;
185 globalPointTransformedBoundaryFacesPtr_;
194 globalPointTransformedBoundaryCellsPtr_;
207 mutable label nGlobalPoints_;
227 mutable label nGlobalEdges_;
243 static void countSharedEdges
251 void calcSharedPoints()
const;
254 void calcSharedEdges()
const;
257 void calcGlobalPointSlaves()
const;
265 void calcGlobalPointEdges
277 const label localPoint
281 void calcGlobalEdgeSlaves()
const;
284 void calcGlobalEdgeOrientation()
const;
293 void calcGlobalPointBoundaryFaces()
const;
296 void calcGlobalPointBoundaryCells()
const;
306 void calcGlobalCoPointSlaves()
const;
355 return !processorPatches_.
empty();
362 return nTotalPoints_;
384 return processorTopology_;
398 return processorPatches_;
406 return processorPatchIndices_;
413 return processorPatchNeighbours_;
492 template<
class Type,
class CombineOp,
class TransformOp>
500 const CombineOp& cop,
501 const TransformOp& top
505 template<
class Type,
class CombineOp>
525 template<
class Type,
class CombineOp,
class TransformOp>
529 const CombineOp& cop,
530 const TransformOp& top
625 void operator()(
T&
x, const
T&
y)
const
629 x.setSize(
x.size() +
y.size());
Map from edge (expressed as its endpoints) to value. For easier forward declaration it is currently i...
A HashTable to objects of type <T> with a label key.
A list of faces which address into the list of points.
bool empty() const noexcept
True if the UList is empty (ie, size() is zero)
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
Calculates a unique integer (label so might not have enough room - 2G max) for processor + local inde...
Various mesh related information for a parallel run. Upon construction, constructs all info using par...
const mapDistribute & globalCoPointSlavesMap() const
void movePoints(const pointField &newPoints)
Update for moving points.
const labelList & sharedPointAddr() const
Return addressing into the complete globally shared points.
const bitSet & globalEdgeOrientation() const
Is my edge same orientation as master edge.
const labelListList & globalPointTransformedBoundaryCells() const
const labelListList & globalEdgeTransformedSlaves() const
const Map< label > & coupledPatchMeshEdgeMap() const
Return map from mesh edges to coupledPatch edges.
const labelList & sharedEdgeAddr() const
Return addressing into the complete globally shared edge.
pointField geometricSharedPoints() const
Like sharedPoints but keeps cyclic points separate.
bool parallel() const
Does the mesh contain processor patches? (also valid when.
const labelList & processorPatches() const noexcept
Return list of processor patch labels.
static const Foam::scalar matchTol_
Geometric tolerance (fraction of bounding box)
const labelList & processorPatchIndices() const noexcept
Return list of indices into processorPatches_ for each patch.
label nGlobalPoints() const
Return number of globally shared points.
const mapDistribute & globalPointBoundaryCellsMap() const
const lduSchedule & patchSchedule() const noexcept
const mapDistribute & globalPointBoundaryFacesMap() const
const mapDistribute & globalPointSlavesMap() const
const labelList & processorPatchNeighbours() const noexcept
const labelList & sharedPointLabels() const
Return indices of local points that are globally shared.
const labelListList & globalPointTransformedBoundaryFaces() const
const labelList & boundaryCells() const
From boundary cell to mesh cell.
const labelListList & globalPointBoundaryFaces() const
const mapDistribute & globalEdgeSlavesMap() const
const globalIndex & globalBoundaryFaceNumbering() const
Numbering of boundary faces is face-mesh.nInternalFaces()
static void syncData(List< Type > &elems, const labelListList &slaves, const labelListList &transformedSlaves, const mapDistribute &slavesMap, const globalIndexAndTransform &, const CombineOp &cop, const TransformOp &top)
Helper: synchronise data with transforms.
ClassName("globalMeshData")
Runtime type information.
label nGlobalEdges() const
Return number of globally shared edges. Demand-driven.
const labelList & coupledPatchMeshEdges() const
Return map from coupledPatch edges to mesh edges.
~globalMeshData()
Destructor.
autoPtr< globalIndex > mergePoints(labelList &pointToGlobal, labelList &uniquePoints) const
Helper for merging (collocated!) mesh point data.
const labelList & sharedPointGlobalLabels() const
Return shared point global labels. Tries to read.
const labelListList & globalCoPointSlaves() const
void syncPointData(List< Type > &pointData, const CombineOp &cop, const TransformOp &top) const
Helper to synchronise coupled patch point data.
pointField sharedPoints() const
Collect coordinates of shared points on all processors.
label nTotalFaces() const noexcept
Return total number of faces in decomposed mesh. Not.
const globalIndex & globalBoundaryCellNumbering() const
Numbering of boundary cells is according to boundaryCells()
const labelListList & globalPointSlaves() const
const globalIndex & globalEdgeNumbering() const
const polyMesh & mesh() const noexcept
Return the mesh reference.
const globalIndexAndTransform & globalTransforms() const
Global transforms numbering.
const labelList & sharedEdgeLabels() const
Return indices of local edges that are globally shared.
label nTotalPoints() const noexcept
Return total number of points in decomposed mesh. Not.
const labelListList & globalPointTransformedSlaves() const
const indirectPrimitivePatch & coupledPatch() const
Return patch of all coupled faces.
label nTotalCells() const noexcept
Return total number of cells in decomposed mesh.
void updateMesh()
Change global mesh data given a topological change. Does a.
const labelListList & globalPointBoundaryCells() const
void clearOut()
Remove all demand driven data.
const labelListList & globalEdgeSlaves() const
const processorTopology & topology() const noexcept
The processor to processor topology.
const globalIndex & globalPointNumbering() const
Numbering of coupled points is according to coupledPatch.
Class containing processor-to-processor mapping information.
Mesh consisting of general polyhedral cells.
Determines/represents processor-processor connection. After instantiation contains the processor-proc...
const lduSchedule & patchSchedule() const noexcept
#define ClassName(TypeNameString)
Add typeName information from argument TypeNameString to a class.
List< label > labelList
A List of labels.
#define forAll(list, i)
Loop across all elements in list.
#define FOAM_DEPRECATED_FOR(since, replacement)
Deprecated(2020-09) use ListOps::appendEqOp.