41 #ifndef conformalVoronoiMesh_H 42 #define conformalVoronoiMesh_H 86 class initialPointsMethod;
87 class relaxationModel;
88 class faceAreaWeightModel;
89 class backgroundMeshDecomposition;
106 typedef Delaunay::Point
Point;
132 static const scalar searchConeAngle;
134 static const scalar searchAngleOppositeSurface;
140 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
211 const Vertex_handle& vA,
212 const Vertex_handle& vB
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
269 const pointIndexHitAndFeatureList& surfaceHits,
277 void insertEdgePointGroups
279 const pointIndexHitAndFeatureList& edgeHits,
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
429 pointIndexHitAndFeatureList& featureEdgeHits
432 label synchroniseSurfaceTrees
435 pointIndexHitAndFeatureList& surfaceHits
438 bool surfaceLocationConformsToInside
440 const pointIndexHitAndFeature& info
445 bool dualCellSurfaceAnyIntersection
447 const Delaunay::Finite_vertices_iterator& vit
451 bool dualCellSurfaceAllIntersections
453 const Delaunay::Finite_vertices_iterator& vit,
454 pointIndexHitAndFeatureDynList& info
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
507 pointIndexHitAndFeature& pHit
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
571 const pointIndexHitAndFeatureDynList& surfaceIntersections,
572 scalar surfacePtReplaceDistCoeffSqr,
573 scalar edgeSearchDistCoeffSqr,
574 pointIndexHitAndFeatureDynList& surfaceHits,
575 pointIndexHitAndFeatureDynList& featureEdgeHits,
584 void storeSurfaceConformation();
588 void reinsertSurfaceConformation();
594 void checkVertices();
596 void checkCoPlanarCells()
const;
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;
733 void indexDualVertices
740 void reindexDualVertices
746 label createPatchInfo
752 vector calcSharedPatchNormal(Cell_handle
c1, Cell_handle
c2)
const;
754 bool boundaryDualFace(Cell_handle
c1, Cell_handle
c2)
const;
757 void createFacesOwnerNeighbourAndPatches
767 bool includeEmptyPatches =
false 787 labelPairPairDynListList& patchSortingIndices
793 const label nInternalFaces,
804 void removeUnusedPoints
830 void checkProcessorPatchesMatch
840 const label nInternalFaces
844 void reorderProcessorPatches
856 void writePointPairs(
const fileName& fName)
const;
976 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 b
Wien displacement law 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.
const dimensionedScalar c2
Second radiation constant: default SI units: [m K].
const dimensionedScalar c1
First radiation constant: default SI units: [W/m^2].
pointField vertices(const blockVertexList &bvl)
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...
A class for handling words, derived from string.
wordList patchNames(nPatches)
Container for searchableSurfaces.
sideVolumeType
Normals point to the outside.
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.
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...