41 #ifndef conformalVoronoiMesh_H 42 #define conformalVoronoiMesh_H 88 class initialPointsMethod;
89 class relaxationModel;
90 class faceAreaWeightModel;
91 class backgroundMeshDecomposition;
108 typedef Delaunay::Point
Point;
134 static const scalar searchConeAngle;
136 static const scalar searchAngleOppositeSurface;
142 const Time& runTime_;
174 edgeLocationTreePtr_;
180 surfacePtLocationTreePtr_;
186 List<Vb> surfaceConformationVertices_;
200 inline scalar defaultCellSize()
const;
205 inline scalar targetCellSize(
const Foam::point& pt)
const;
211 inline scalar averageAnyCellSize
213 const Vertex_handle& vA,
214 const Vertex_handle& vB
219 inline scalar averageAnyCellSize
221 const Delaunay::Finite_facets_iterator& fit
227 void insertInternalPoints
230 const bool distribute =
false 242 inline void createPointPair
255 inline void createBafflePointPair
265 inline bool internalPointIsInside(
const Foam::point& pt)
const;
269 void insertSurfacePointPairs
271 const pointIndexHitAndFeatureList& surfaceHits,
279 void insertEdgePointGroups
281 const pointIndexHitAndFeatureList& edgeHits,
286 void createEdgePointGroupByCirculating
309 void createExternalEdgePointGroup
317 void createInternalEdgePointGroup
325 void createFlatEdgePointGroup
333 void createOpenEdgePointGroup
341 void createMultipleEdgePointGroup
349 void insertFeaturePoints(
bool distribute =
false);
355 bool surfacePtNearFeatureEdge(
const Foam::point& pt)
const;
359 void insertInitialPoints();
365 template<
class Triangulation>
366 bool distributeBackground(
const Triangulation&
mesh);
369 void cellSizeMeshOverlapsBackground()
const;
374 void buildCellSizeAndAlignmentMesh();
377 void setVertexSizeAndAlignment();
382 const Delaunay::Finite_edges_iterator& eit
387 const Delaunay::Finite_edges_iterator& eit
395 const Delaunay::Finite_edges_iterator& eit
404 bool ownerAndNeighbour
414 void conformToSurface();
418 bool reconformToSurface()
const;
422 label findVerticesNearBoundaries();
426 void buildSurfaceConformation();
428 label synchroniseEdgeTrees
431 pointIndexHitAndFeatureList& featureEdgeHits
434 label synchroniseSurfaceTrees
437 pointIndexHitAndFeatureList& surfaceHits
440 bool surfaceLocationConformsToInside
442 const pointIndexHitAndFeature& info
447 bool dualCellSurfaceAnyIntersection
449 const Delaunay::Finite_vertices_iterator& vit
453 bool dualCellSurfaceAllIntersections
455 const Delaunay::Finite_vertices_iterator& vit,
456 pointIndexHitAndFeatureDynList& info
473 void dualCellLargestSurfaceProtrusion
475 const Delaunay::Finite_vertices_iterator& vit,
480 void dualCellLargestSurfaceIncursion
482 const Delaunay::Finite_vertices_iterator& vit,
488 void reportProcessorOccupancy();
496 void limitDisplacement
498 const Delaunay::Finite_vertices_iterator& vit,
507 bool nearSurfacePoint
509 pointIndexHitAndFeature& pHit
513 bool appendToSurfacePtTree
519 bool appendToEdgeLocationTree
531 bool pointIsNearFeatureEdgeLocation(
const Foam::point& pt)
const;
533 bool pointIsNearFeatureEdgeLocation
540 bool pointIsNearSurfaceLocation(
const Foam::point& pt)
const;
542 bool pointIsNearSurfaceLocation
550 bool nearFeatureEdgeLocation
557 void buildEdgeLocationTree
563 void buildSurfacePtLocationTree
570 void addSurfaceAndEdgeHits
573 const pointIndexHitAndFeatureDynList& surfaceIntersections,
574 scalar surfacePtReplaceDistCoeffSqr,
575 scalar edgeSearchDistCoeffSqr,
576 pointIndexHitAndFeatureDynList& surfaceHits,
577 pointIndexHitAndFeatureDynList& featureEdgeHits,
586 void storeSurfaceConformation();
590 void reinsertSurfaceConformation();
596 void checkVertices();
598 void checkCoPlanarCells()
const;
616 void calcNeighbourCellCentres
623 void selectSeparatedCoupledFaces
631 void findCellZoneInsideWalk
669 inline bool isBoundaryDualFace
671 const Delaunay::Finite_edges_iterator& eit
678 const Delaunay::Finite_facets_iterator& fit
683 inline bool isParallelDualEdge
685 const Delaunay::Finite_facets_iterator& fit
690 inline bool isProcBoundaryEdge
692 const Delaunay::Finite_edges_iterator& eit
696 void mergeIdenticalDualVertices
702 label mergeIdenticalDualVertices
709 void deferredCollapseFaceSet
717 void checkCellSizing();
724 const scalar allowedOffset
731 label classifyBoundaryPoint(Cell_handle cit)
const;
735 void indexDualVertices
742 void reindexDualVertices
748 label createPatchInfo
754 vector calcSharedPatchNormal(Cell_handle
c1, Cell_handle
c2)
const;
756 bool boundaryDualFace(Cell_handle
c1, Cell_handle
c2)
const;
759 void createFacesOwnerNeighbourAndPatches
769 bool includeEmptyPatches =
false 789 labelPairPairDynListList& patchSortingIndices
795 const label nInternalFaces,
806 void removeUnusedPoints
832 void checkProcessorPatchesMatch
842 const label nInternalFaces
846 void reorderProcessorPatches
856 void writePointPairs(
const fileName& fName)
const;
979 const bool check =
true
A HashTable with keys but without contents.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
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 any number of values (e...
A 2-tuple for storing two objects of different types.
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 (usually) a face and a point. It carries the info of a succes...
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
An ordered pair of two objects of type <T> with first() and second() elements.
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 string.
wordList patchNames(nPatches)
Container for searchableSurfaces.
sideVolumeType
Normals point to the outside.
Simple random number generator.
Controls for the conformalVoronoiMesh mesh generator.
static const string null
An empty string.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
Mesh data needed to do the Finite Volume discretisation.
const dimensionedScalar c1
First radiation constant: default SI units: [W/m2].
Standard boundBox + extra functionality for use in octree.
Store a background polyMesh to use for the decomposition of space and queries for parallel conformalV...
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Mesh consisting of general polyhedral cells.
CGAL data structures used for 3D Delaunay meshing.
PtrList< dictionary > patchDicts
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...