Go to the documentation of this file.
43 #ifndef conformalVoronoiMesh_H
44 #define conformalVoronoiMesh_H
87 class initialPointsMethod;
88 class relaxationModel;
89 class faceAreaWeightModel;
90 class backgroundMeshDecomposition;
105 typedef Delaunay::Edge
Edge;
133 static const scalar searchConeAngle;
135 static const scalar searchAngleOppositeSurface;
141 const Time& runTime_;
171 edgeLocationTreePtr_;
177 surfacePtLocationTreePtr_;
183 List<Vb> surfaceConformationVertices_;
197 inline scalar defaultCellSize()
const;
202 inline scalar targetCellSize(
const Foam::point& pt)
const;
208 inline scalar averageAnyCellSize
216 inline scalar averageAnyCellSize
218 const Delaunay::Finite_facets_iterator& fit
224 void insertInternalPoints
227 const bool distribute =
false
239 inline void createPointPair
252 inline void createBafflePointPair
262 inline bool internalPointIsInside(
const Foam::point& pt)
const;
266 void insertSurfacePointPairs
276 void insertEdgePointGroups
283 void createEdgePointGroupByCirculating
306 void createExternalEdgePointGroup
314 void createInternalEdgePointGroup
322 void createFlatEdgePointGroup
330 void createOpenEdgePointGroup
338 void createMultipleEdgePointGroup
346 void insertFeaturePoints(
bool distribute =
false);
352 bool surfacePtNearFeatureEdge(
const Foam::point& pt)
const;
356 void insertInitialPoints();
362 template<
class Triangulation>
363 bool distributeBackground(
const Triangulation&
mesh);
366 void cellSizeMeshOverlapsBackground()
const;
371 void buildCellSizeAndAlignmentMesh();
374 void setVertexSizeAndAlignment();
379 const Delaunay::Finite_edges_iterator& eit
384 const Delaunay::Finite_edges_iterator& eit
392 const Delaunay::Finite_edges_iterator& eit
401 bool ownerAndNeighbour
411 void conformToSurface();
415 bool reconformToSurface()
const;
419 label findVerticesNearBoundaries();
423 void buildSurfaceConformation();
425 label synchroniseEdgeTrees
431 label synchroniseSurfaceTrees
437 bool surfaceLocationConformsToInside
444 bool dualCellSurfaceAnyIntersection
446 const Delaunay::Finite_vertices_iterator& vit
450 bool dualCellSurfaceAllIntersections
452 const Delaunay::Finite_vertices_iterator& vit,
470 void dualCellLargestSurfaceProtrusion
472 const Delaunay::Finite_vertices_iterator& vit,
477 void dualCellLargestSurfaceIncursion
479 const Delaunay::Finite_vertices_iterator& vit,
485 void reportProcessorOccupancy();
493 void limitDisplacement
495 const Delaunay::Finite_vertices_iterator& vit,
504 bool nearSurfacePoint
510 bool appendToSurfacePtTree
516 bool appendToEdgeLocationTree
528 bool pointIsNearFeatureEdgeLocation(
const Foam::point& pt)
const;
530 bool pointIsNearFeatureEdgeLocation
537 bool pointIsNearSurfaceLocation(
const Foam::point& pt)
const;
539 bool pointIsNearSurfaceLocation
547 bool nearFeatureEdgeLocation
554 void buildEdgeLocationTree
560 void buildSurfacePtLocationTree
567 void addSurfaceAndEdgeHits
571 scalar surfacePtReplaceDistCoeffSqr,
572 scalar edgeSearchDistCoeffSqr,
583 void storeSurfaceConformation();
587 void reinsertSurfaceConformation();
593 void checkVertices();
595 void checkCoPlanarCells()
const;
610 bitSet& boundaryFacesToRemove
613 void calcNeighbourCellCentres
620 void selectSeparatedCoupledFaces
628 void findCellZoneInsideWalk
666 inline bool isBoundaryDualFace
668 const Delaunay::Finite_edges_iterator& eit
675 const Delaunay::Finite_facets_iterator& fit
680 inline bool isParallelDualEdge
682 const Delaunay::Finite_facets_iterator& fit
687 inline bool isProcBoundaryEdge
689 const Delaunay::Finite_edges_iterator& eit
693 void mergeIdenticalDualVertices
699 label mergeIdenticalDualVertices
706 void deferredCollapseFaceSet
714 void checkCellSizing();
721 const scalar allowedOffset
728 label classifyBoundaryPoint(
Cell_handle cit)
const;
731 void indexDualVertices
738 void reindexDualVertices
744 label createPatchInfo
755 void createFacesOwnerNeighbourAndPatches
764 bitSet& boundaryFacesToRemove,
765 bool includeEmptyPatches =
false
791 const label nInternalFaces,
795 bitSet& boundaryFacesToRemove,
802 void removeUnusedPoints
828 void checkProcessorPatchesMatch
838 const label nInternalFaces
842 void reorderProcessorPatches
844 const word& meshName,
852 void writePointPairs(
const fileName& fName)
const;
976 const bool check =
true
991 const word& meshName,
1001 bitSet& boundaryFacesToRemove
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Controls for the conformalVoronoiMesh mesh generator.
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
A class for handling words, derived from Foam::string.
A class for handling file names.
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
Standard boundBox with extra functionality for use in octree.
Unit conversion functions.
A HashTable with keys but without contents that is similar to std::unordered_set.
Mesh consisting of general polyhedral cells.
PtrList< dictionary > patchDicts
This class describes the interaction of (usually) a face and a point. It carries the info of a succes...
const dimensionedScalar c1
static void check(const int retVal, const char *what)
const dimensionedScalar b
Generic templated field type.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
wordList patchNames(nPatches)
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
pointField vertices(const blockVertexList &bvl)
Mesh data needed to do the Finite Volume discretisation.
const dimensionedScalar c2
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Container for searchableSurfaces. The collection is specified as a dictionary. For example,...
Store a background polyMesh to use for the decomposition of space and queries for parallel conformalV...
A face is a list of labels corresponding to mesh vertices.
A 2-tuple for storing two objects of dissimilar types. The container is similar in purpose to std::pa...
CGAL data structures used for 3D Delaunay meshing.