50 #ifndef primitiveMesh_H
51 #define primitiveMesh_H
82 label nInternalPoints_;
88 mutable label nInternal0Edges_;
91 mutable label nInternal1Edges_;
94 mutable label nInternalEdges_;
97 mutable label nEdges_;
100 label nInternalFaces_;
184 void calcCellShapes()
const;
187 void calcCellCells()
const;
190 void calcPointCells()
const;
193 void calcCells()
const;
196 void calcCellEdges()
const;
199 void calcPointPoints()
const;
204 void calcEdges(
const bool doFaceEdges)
const;
205 void clearOutEdges();
215 static label findFirstCommonElementFromSortedLists
296 const bool detailedReport,
305 const bool detailedReport,
324 const bool detailedReport,
325 const scalar minPyrVol,
361 const scalar warnFlatness,
528 static void calcCells
597 const bool report =
false,
604 const bool report =
false,
611 const bool report =
false,
618 const bool report =
false,
625 const bool report =
false,
639 const bool report =
false,
648 const bool report =
false,
655 const bool report =
false,
662 const bool report =
false,
669 const bool report =
false,
670 const scalar minPyrVol = -small,
677 const bool report =
false,
684 const bool report =
false,
685 const scalar maxSin = 10,
695 const scalar warnFlatness,
704 const scalar reportDistSqr,
712 const scalar minLenSqr,
719 const bool report =
false,
733 virtual bool checkMesh(
const bool report =
false)
const;
745 scalar inflationFraction = 0
878 namespace primitiveMeshCheck
Cell-face mesh analysis engine.
bool checkFaceOrthogonality(const vectorField &fAreas, const vectorField &cellCtrs, const bool report, labelHashSet *setPtr) const
Check for non-orthogonality.
static bool calcPointOrder(label &nInternalPoints, labelList &pointMap, const faceList &, const label nInternalFaces, const label nPoints)
Helper function to calculate point ordering. Returns true.
label findNearestCell(const point &location) const
Find the cell with the nearest cell centre to location.
bool hasCellCells() const
bool hasCellShapes() const
primitiveMesh()
Construct null.
bool hasPointFaces() const
bool hasCellEdges() const
bool hasCellVolumes() const
const labelListList & pointEdges() const
const edgeList & edges() const
Return mesh edges. Uses calcEdges.
const labelListList & cellEdges() const
bool pointInCell(const point &p, label celli) const
Return true if the point is in the cell.
bool hasPointPoints() const
const vectorField & faceCentres() const
virtual const faceList & faces() const =0
Return faces.
virtual bool checkEdgeLength(const bool report, const scalar minLenSqr, labelHashSet *setPtr=nullptr) const
Check edge length.
virtual bool checkCellsZipUp(const bool report=false, labelHashSet *setPtr=nullptr) const
Check cell zip-up.
const labelListList & pointCells() const
static const unsigned facesPerEdge_
Estimated number of faces per edge.
const scalarField & cellVolumes() const
void clearGeom()
Clear geometry.
virtual bool checkMesh(const bool report=false) const
Check mesh for correctness. Returns false for no error.
virtual bool checkTopology(const bool report=false) const
Check mesh topology for correctness.
bool hasFaceAreas() const
bool checkCommonOrder(const label, const Map< label > &, labelHashSet *) const
Check that shared points are in consecutive order.
bool pointInCellBB(const point &p, label celli, scalar inflationFraction=0) const
Return true if the point in the cell bounding box.
label nInternal1Edges() const
Internal edges using 0 or 1 boundary point.
bool hasFaceCentres() const
virtual bool checkUpperTriangular(const bool report=false, labelHashSet *setPtr=nullptr) const
Check face ordering.
void makeCellCentresAndVols(const vectorField &fCtrs, const vectorField &fAreas, vectorField &cellCtrs, scalarField &cellVols) const
static const unsigned edgesPerCell_
Estimated number of edges per cell.
const vectorField & cellCentres() const
bool checkFacePyramids(const pointField &points, const vectorField &ctrs, const bool report, const bool detailedReport, const scalar minPyrVol, labelHashSet *setPtr) const
Check face pyramid volume.
bool checkFaceAngles(const pointField &points, const vectorField &faceAreas, const bool report, const scalar maxDeg, labelHashSet *setPtr) const
Check face angles.
bool hasPointCells() const
virtual ~primitiveMesh()
Destructor.
const cellShapeList & cellShapes() const
Return cell shapes.
bool checkClosedBoundary(const vectorField &, const bool, const PackedBoolList &) const
Check boundary for closedness.
static const unsigned facesPerPoint_
Estimated number of faces per point.
void calcCellCentresAndVols() const
Calculate cell centres and volumes.
virtual const labelList & faceOwner() const =0
Face face-owner addressing.
bool checkDuplicateFaces(const label, const Map< label > &, label &nBaffleFaces, labelHashSet *) const
Check if all points on face are shared with another face.
label findCell(const point &location) const
Find cell enclosing this location (-1 if not in mesh)
void calcEdgeVectors() const
Calculate edge vectors.
static const unsigned pointsPerFace_
Estimated number of points per face.
ClassName("primitiveMesh")
virtual bool checkFaceVertices(const bool report=false, labelHashSet *setPtr=nullptr) const
Check uniqueness of face vertices.
bool checkCellVolumes(const scalarField &vols, const bool report, const bool detailedReport, labelHashSet *setPtr) const
Check for negative cell volumes.
const labelListList & cellCells() const
const labelListList & cellPoints() const
label nInternalFaces() const
bool checkFaceAreas(const vectorField &faceAreas, const bool report, const bool detailedReport, labelHashSet *setPtr) const
Check for negative face areas.
void clearAddressing()
Clear topological data.
static const unsigned cellsPerPoint_
Estimated number of cells per point.
virtual bool checkPoints(const bool report=false, labelHashSet *setPtr=nullptr) const
Check for unused points.
bool hasCellCentres() const
bool hasCellPoints() const
static const unsigned cellsPerEdge_
Estimated number of cells per edge.
bool checkFaceSkewness(const pointField &points, const vectorField &fCtrs, const vectorField &fAreas, const vectorField &cellCtrs, const bool report, labelHashSet *setPtr) const
Check face skewness.
label nInternal0Edges() const
Internal edges (i.e. not on boundary face) using.
void operator=(const primitiveMesh &)=delete
Disallow default bitwise assignment.
virtual bool checkPointNearness(const bool report, const scalar reportDistSqr, labelHashSet *setPtr=nullptr) const
Check for point-point-nearness,.
label nInternalEdges() const
Internal edges using 0,1 or 2 boundary points.
const scalarField & magFaceAreas() const
void printAllocated() const
Print a list of all the currently allocated mesh data.
void reset(const label nPoints, const label nInternalFaces, const label nFaces, const label nCells)
Reset this primitiveMesh given the primitive array sizes.
static const unsigned edgesPerPoint_
Estimated number of edges per point.
bool checkFaceFlatness(const pointField &points, const vectorField &faceCentres, const vectorField &faceAreas, const bool report, const scalar warnFlatness, labelHashSet *setPtr) const
Check face warpage.
const labelListList & pointFaces() const
virtual const labelList & faceNeighbour() const =0
Face face-neighbour addressing.
tmp< scalarField > movePoints(const pointField &p, const pointField &oldP)
Move points, returns volumes swept by faces in motion.
virtual const pointField & oldCellCentres() const =0
Return old cell centres for mesh motion.
static const unsigned pointsPerCell_
Estimated number of points per cell.
static const unsigned facesPerCell_
Estimated number of faces per cell.
bool hasFaceEdges() const
virtual const pointField & points() const =0
Return mesh points.
const labelListList & edgeFaces() const
const labelListList & pointPoints() const
const labelListList & faceEdges() const
const labelListList & edgeCells() const
const vectorField & faceAreas() const
bool checkConcaveCells(const vectorField &fAreas, const pointField &fCentres, const bool report, labelHashSet *setPtr) const
Check for concave cells by the planes of faces.
bool hasEdgeCells() const
bool isInternalFace(const label faceIndex) const
Return true if given face label is internal to the mesh.
void calcFaceCentresAndAreas() const
Calculate face centres and areas.
label nInternalPoints() const
Points not on boundary.
virtual bool checkFaceFaces(const bool report=false, labelHashSet *setPtr=nullptr) const
Check face-face connectivity.
static const unsigned edgesPerFace_
Estimated number of edges per cell.
bool hasEdgeFaces() const
bool checkClosedCells(const vectorField &faceAreas, const scalarField &cellVolumes, const bool report, labelHashSet *setPtr, labelHashSet *aspectSetPtr, const Vector< label > &meshD) const
Check cells for closedness.
const cellList & cells() const
void clearOut()
Clear all geometry and addressing unnecessary for CFD.
void makeFaceCentresAndAreas(const pointField &p, vectorField &fCtrs, vectorField &fAreas, scalarField &magfAreas) const
bool hasPointEdges() const
virtual bool checkGeometry(const bool report=false) const
Check mesh geometry (& implicitly topology) for correctness.
virtual const pointField & oldPoints() const =0
Return old points for mesh motion.
A class for managing temporary objects.
scalar closedThreshold
Data to control mesh checking.
scalar skewThreshold
Skewness warning threshold.
scalar aspectThreshold
Aspect ratio warning threshold.
scalar planarCosAngle
Threshold where faces are considered coplanar.
scalar nonOrthThreshold
Non-orthogonality warning threshold in deg.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
const scalarField & cellVols