Go to the documentation of this file.
43 #ifndef conformalVoronoiMesh_H
44 #define conformalVoronoiMesh_H
88 class initialPointsMethod;
89 class relaxationModel;
90 class faceAreaWeightModel;
91 class backgroundMeshDecomposition;
134 static const scalar searchConeAngle;
136 static const scalar searchAngleOppositeSurface;
142 const Time& runTime_;
172 edgeLocationTreePtr_;
178 surfacePtLocationTreePtr_;
184 List<Vb> surfaceConformationVertices_;
198 inline scalar defaultCellSize()
const;
203 inline scalar targetCellSize(
const Foam::point& pt)
const;
209 inline scalar averageAnyCellSize
217 inline scalar averageAnyCellSize
219 const Delaunay::Finite_facets_iterator& fit
225 void insertInternalPoints
228 const bool distribute =
false
240 inline void createPointPair
253 inline void createBafflePointPair
263 inline bool internalPointIsInside(
const Foam::point& pt)
const;
267 void insertSurfacePointPairs
277 void insertEdgePointGroups
284 void createEdgePointGroupByCirculating
307 void createExternalEdgePointGroup
315 void createInternalEdgePointGroup
323 void createFlatEdgePointGroup
331 void createOpenEdgePointGroup
339 void createMultipleEdgePointGroup
347 void insertFeaturePoints(
bool distribute =
false);
353 bool surfacePtNearFeatureEdge(
const Foam::point& pt)
const;
357 void insertInitialPoints();
363 template<
class Triangulation>
364 bool distributeBackground(
const Triangulation&
mesh);
367 void cellSizeMeshOverlapsBackground()
const;
372 void buildCellSizeAndAlignmentMesh();
375 void setVertexSizeAndAlignment();
380 const Delaunay::Finite_edges_iterator& eit
385 const Delaunay::Finite_edges_iterator& eit
393 const Delaunay::Finite_edges_iterator& eit
402 bool ownerAndNeighbour
412 void conformToSurface();
416 bool reconformToSurface()
const;
420 label findVerticesNearBoundaries();
424 void buildSurfaceConformation();
426 label synchroniseEdgeTrees
432 label synchroniseSurfaceTrees
438 bool surfaceLocationConformsToInside
445 bool dualCellSurfaceAnyIntersection
447 const Delaunay::Finite_vertices_iterator& vit
451 bool dualCellSurfaceAllIntersections
453 const Delaunay::Finite_vertices_iterator& vit,
471 void dualCellLargestSurfaceProtrusion
473 const Delaunay::Finite_vertices_iterator& vit,
478 void dualCellLargestSurfaceIncursion
480 const Delaunay::Finite_vertices_iterator& vit,
486 void reportProcessorOccupancy();
494 void limitDisplacement
496 const Delaunay::Finite_vertices_iterator& vit,
505 bool nearSurfacePoint
511 bool appendToSurfacePtTree
517 bool appendToEdgeLocationTree
529 bool pointIsNearFeatureEdgeLocation(
const Foam::point& pt)
const;
531 bool pointIsNearFeatureEdgeLocation
538 bool pointIsNearSurfaceLocation(
const Foam::point& pt)
const;
540 bool pointIsNearSurfaceLocation
548 bool nearFeatureEdgeLocation
555 void buildEdgeLocationTree
561 void buildSurfacePtLocationTree
568 void addSurfaceAndEdgeHits
572 scalar surfacePtReplaceDistCoeffSqr,
573 scalar edgeSearchDistCoeffSqr,
584 void storeSurfaceConformation();
588 void reinsertSurfaceConformation();
594 void checkVertices();
596 void checkCoPlanarCells()
const;
611 bitSet& boundaryFacesToRemove
614 void calcNeighbourCellCentres
621 void selectSeparatedCoupledFaces
629 void findCellZoneInsideWalk
667 inline bool isBoundaryDualFace
669 const Delaunay::Finite_edges_iterator& eit
676 const Delaunay::Finite_facets_iterator& fit
681 inline bool isParallelDualEdge
683 const Delaunay::Finite_facets_iterator& fit
688 inline bool isProcBoundaryEdge
690 const Delaunay::Finite_edges_iterator& eit
694 void mergeIdenticalDualVertices
700 label mergeIdenticalDualVertices
707 void deferredCollapseFaceSet
715 void checkCellSizing();
722 const scalar allowedOffset
729 label classifyBoundaryPoint(
Cell_handle cit)
const;
732 void indexDualVertices
739 void reindexDualVertices
745 label createPatchInfo
756 void createFacesOwnerNeighbourAndPatches
765 bitSet& boundaryFacesToRemove,
766 bool includeEmptyPatches =
false
792 const label nInternalFaces,
796 bitSet& boundaryFacesToRemove,
803 void removeUnusedPoints
829 void checkProcessorPatchesMatch
839 const label nInternalFaces
843 void reorderProcessorPatches
845 const word& meshName,
853 void writePointPairs(
const fileName& fName)
const;
977 const bool check =
true
992 const word& meshName,
1002 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
First radiation constant: default SI units: [W/m2].
const dimensionedScalar b
Wien displacement law constant: default SI units: [m.K].
sideVolumeType
Normals point to the outside.
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)
static const string null
An empty string.
Mesh data needed to do the Finite Volume discretisation.
const dimensionedScalar c2
Second radiation constant: default SI units: [m.K].
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.