43 #ifndef conformalVoronoiMesh_H 44 #define conformalVoronoiMesh_H 86 class initialPointsMethod;
87 class relaxationModel;
88 class faceAreaWeightModel;
89 class backgroundMeshDecomposition;
104 typedef Delaunay::Edge
Edge;
132 static const scalar searchConeAngle;
134 static const scalar searchAngleOppositeSurface;
140 const Time& runTime_;
170 edgeLocationTreePtr_;
176 surfacePtLocationTreePtr_;
182 List<Vb> surfaceConformationVertices_;
196 inline scalar defaultCellSize()
const;
201 inline scalar targetCellSize(
const Foam::point& pt)
const;
207 inline scalar averageAnyCellSize
215 inline scalar averageAnyCellSize
217 const Delaunay::Finite_facets_iterator& fit
223 void insertInternalPoints
226 const bool distribute =
false 238 inline void createPointPair
251 inline void createBafflePointPair
261 inline bool internalPointIsInside(
const Foam::point& pt)
const;
265 void insertSurfacePointPairs
275 void insertEdgePointGroups
282 void createEdgePointGroupByCirculating
305 void createExternalEdgePointGroup
313 void createInternalEdgePointGroup
321 void createFlatEdgePointGroup
329 void createOpenEdgePointGroup
337 void createMultipleEdgePointGroup
345 void insertFeaturePoints(
bool distribute =
false);
351 bool surfacePtNearFeatureEdge(
const Foam::point& pt)
const;
355 void insertInitialPoints();
361 template<
class Triangulation>
362 bool distributeBackground(
const Triangulation&
mesh);
365 void cellSizeMeshOverlapsBackground()
const;
370 void buildCellSizeAndAlignmentMesh();
373 void setVertexSizeAndAlignment();
378 const Delaunay::Finite_edges_iterator& eit
383 const Delaunay::Finite_edges_iterator& eit
391 const Delaunay::Finite_edges_iterator& eit
400 bool ownerAndNeighbour
410 void conformToSurface();
414 bool reconformToSurface()
const;
418 label findVerticesNearBoundaries();
422 void buildSurfaceConformation();
424 label synchroniseEdgeTrees
430 label synchroniseSurfaceTrees
436 bool surfaceLocationConformsToInside
443 bool dualCellSurfaceAnyIntersection
445 const Delaunay::Finite_vertices_iterator& vit
449 bool dualCellSurfaceAllIntersections
451 const Delaunay::Finite_vertices_iterator& vit,
469 void dualCellLargestSurfaceProtrusion
471 const Delaunay::Finite_vertices_iterator& vit,
476 void dualCellLargestSurfaceIncursion
478 const Delaunay::Finite_vertices_iterator& vit,
484 void reportProcessorOccupancy();
492 void limitDisplacement
494 const Delaunay::Finite_vertices_iterator& vit,
503 bool nearSurfacePoint
509 bool appendToSurfacePtTree
515 bool appendToEdgeLocationTree
527 bool pointIsNearFeatureEdgeLocation(
const Foam::point& pt)
const;
529 bool pointIsNearFeatureEdgeLocation
536 bool pointIsNearSurfaceLocation(
const Foam::point& pt)
const;
538 bool pointIsNearSurfaceLocation
546 bool nearFeatureEdgeLocation
553 void buildEdgeLocationTree
559 void buildSurfacePtLocationTree
566 void addSurfaceAndEdgeHits
570 scalar surfacePtReplaceDistCoeffSqr,
571 scalar edgeSearchDistCoeffSqr,
582 void storeSurfaceConformation();
586 void reinsertSurfaceConformation();
592 void checkVertices();
594 void checkCoPlanarCells()
const;
609 bitSet& boundaryFacesToRemove
612 void calcNeighbourCellCentres
619 void selectSeparatedCoupledFaces
627 void findCellZoneInsideWalk
665 inline bool isBoundaryDualFace
667 const Delaunay::Finite_edges_iterator& eit
674 const Delaunay::Finite_facets_iterator& fit
679 inline bool isParallelDualEdge
681 const Delaunay::Finite_facets_iterator& fit
686 inline bool isProcBoundaryEdge
688 const Delaunay::Finite_edges_iterator& eit
692 void mergeIdenticalDualVertices
698 label mergeIdenticalDualVertices
705 void deferredCollapseFaceSet
713 void checkCellSizing();
720 const scalar allowedOffset
727 label classifyBoundaryPoint(
Cell_handle cit)
const;
730 void indexDualVertices
737 void reindexDualVertices
743 label createPatchInfo
754 void createFacesOwnerNeighbourAndPatches
763 bitSet& boundaryFacesToRemove,
764 bool includeEmptyPatches =
false 790 const label nInternalFaces,
794 bitSet& boundaryFacesToRemove,
801 void removeUnusedPoints
827 void checkProcessorPatchesMatch
837 const label nInternalFaces
841 void reorderProcessorPatches
843 const word& meshName,
851 void writePointPairs(
const fileName& fName)
const;
975 const bool check =
true 990 const word& meshName,
1000 bitSet& boundaryFacesToRemove
A HashTable with keys but without contents that is similar to std::unordered_set. ...
A class for handling file names.
A face is a list of labels corresponding to mesh vertices.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
A 2-tuple for storing two objects of dissimilar types. The container is similar in purpose to std::pa...
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Unit conversion functions.
const dimensionedScalar c2
Second radiation constant: default SI units: [m.K].
This class describes the interaction of an object (often a face) and a point. It carries the info of ...
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
pointField vertices(const blockVertexList &bvl)
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects...
const dimensionedScalar b
Wien displacement law constant: default SI units: [m.K].
A class for handling words, derived from Foam::string.
wordList patchNames(nPatches)
Container for searchableSurfaces. The collection is specified as a dictionary. For example...
sideVolumeType
Normals point to the outside.
Controls for the conformalVoronoiMesh mesh generator.
static const string null
An empty string.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
static void check(const int retVal, const char *what)
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers...
Mesh data needed to do the Finite Volume discretisation.
const dimensionedScalar c1
First radiation constant: default SI units: [W/m2].
Standard boundBox with extra functionality for use in octree.
Store a background polyMesh to use for the decomposition of space and queries for parallel conformalV...
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
Mesh consisting of general polyhedral cells.
CGAL data structures used for 3D Delaunay meshing.
PtrList< dictionary > patchDicts
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, IOobject::NO_REGISTER)
Defines the attributes of an object for which implicit objectRegistry management is supported...