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
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...