38#ifndef DistributedDelaunayMesh_H
39#define DistributedDelaunayMesh_H
45#include "indexedVertex.H"
58template<
class Triangulation>
59class DistributedDelaunayMesh
61 public DelaunayMesh<Triangulation>
66 typedef typename Triangulation::Cell_handle
Cell_handle;
67 typedef typename Triangulation::Point
Point;
69 typedef typename Triangulation::Finite_vertices_iterator
71 typedef typename Triangulation::Finite_cells_iterator
73 typedef typename Triangulation::All_cells_iterator
84 bool distributeBoundBoxes(
const boundBox& bb);
89 bool isLocal(
const label localProcIndex)
const;
94 const scalar radiusSqr
97 bool checkProcBoundaryCell
103 void findProcessorBoundaryCells
108 void markVerticesToRefer
125 DistributedDelaunayMesh
127 const DistributedDelaunayMesh&
131 void operator=(
const DistributedDelaunayMesh<Triangulation>&) =
delete;
139 explicit DistributedDelaunayMesh(
const Time&
runTime);
141 DistributedDelaunayMesh
183 bool iterateReferral =
true
189 template<
class Po
intIterator>
194 bool printErrors =
true
void timeCheck(const string &description, const bool check=true) const
Write the cpuTime to screen.
DistributedDelaunayMesh(const Time &runTime)
Construct from components.
bool distribute(const boundBox &bb)
Triangulation::Vertex_handle Vertex_handle
Triangulation::Finite_vertices_iterator Finite_vertices_iterator
DistributedDelaunayMesh(const Time &runTime, const word &meshName)
Triangulation::All_cells_iterator All_cells_iterator
scalar calculateLoadUnbalance() const
static autoPtr< mapDistribute > buildMap(const labelUList &toProc)
Build a mapDistribute for the supplied destination processor data.
Triangulation::Cell_handle Cell_handle
labelPairHashSet rangeInsertReferredWithInfo(PointIterator begin, PointIterator end, bool printErrors=true)
Inserts points into the triangulation if the point is within.
Triangulation::Finite_cells_iterator Finite_cells_iterator
~DistributedDelaunayMesh()=default
Destructor.
void sync(const boundBox &bb)
Refer vertices so that the processor interfaces are consistent.
autoPtr< mapDistribute > distribute(const backgroundMeshDecomposition &decomposition, List< Foam::point > &points)
void sync(const boundBox &bb, PtrList< labelPairHashSet > &referralVertices, labelPairHashSet &receivedVertices, bool iterateReferral=true)
Refer vertices so that the processor interfaces are consistent.
Triangulation::Point Point
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
A HashTable to objects of type <T> with a label key.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Store a background polyMesh to use for the decomposition of space and queries for parallel conformalV...
A bounding box defined in terms of min/max extrema points.
Class containing processor-to-processor mapping information.
A class for handling words, derived from Foam::string.
List< label > labelList
A List of labels.
vector point
Point is a vector.
UList< label > labelUList
A UList of labels.
HashSet< labelPair, Foam::Hash< labelPair > > labelPairHashSet
A HashSet for a labelPair. The hashing is based on labelPair (FixedList) and is thus non-commutative.