43#ifndef conformalVoronoiMesh_H
44#define conformalVoronoiMesh_H
87class initialPointsMethod;
89class faceAreaWeightModel;
90class backgroundMeshDecomposition;
107 typedef Delaunay::Point
Point;
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
CGAL data structures used for 3D Delaunay meshing.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
Enum is a wrapper around a list of names/values that represent particular enumeration (or int) values...
A HashTable with keys but without contents that is similar to std::unordered_set.
Defines the attributes of an object for which implicit objectRegistry management is supported,...
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.
This class describes the interaction of (usually) a face and a point. It carries the info of a succes...
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.
A 2-tuple for storing two objects of dissimilar types. The container is similar in purpose to std::pa...
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 bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
Controls for the conformalVoronoiMesh mesh generator.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
sideVolumeType
Normals point to the outside.
A face is a list of labels corresponding to mesh vertices.
A class for handling file names.
Mesh data needed to do the Finite Volume discretisation.
HashSet of unique edges. The edges are stored as a pair of pairs:
Mesh consisting of general polyhedral cells.
Container for searchableSurfaces. The collection is specified as a dictionary. For example,...
Standard boundBox with extra functionality for use in octree.
A class for handling words, derived from Foam::string.
#define ClassName(TypeNameString)
Add typeName information from argument TypeNameString to a class.
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, false)
static void check(const int retVal, const char *what)
pointField vertices(const blockVertexList &bvl)
wordList patchNames(nPatches)
PtrList< dictionary > patchDicts
Unit conversion functions.