PrimitivePatch< Face, FaceList, PointField, PointType > Class Template Reference

A list of faces which address into the list of points. More...

Inheritance diagram for PrimitivePatch< Face, FaceList, PointField, PointType >:
[legend]
Collaboration diagram for PrimitivePatch< Face, FaceList, PointField, PointType >:
[legend]

Public Types

enum  surfaceTopo { MANIFOLD, OPEN, ILLEGAL }
 Enumeration defining the surface type. Used in check routines. More...
 
typedef Face FaceType
 
typedef FaceList< Face > FaceListType
 
typedef PointField PointFieldType
 

Public Member Functions

 PrimitivePatch (const FaceList< Face > &faces, const Field< PointType > &points)
 Construct from components. More...
 
 PrimitivePatch (FaceList< Face > &&faces, const Field< PointType > &points)
 Construct from components, transferring faces. More...
 
 PrimitivePatch (FaceList< Face > &faces, Field< PointType > &points, const bool reuse)
 Construct from components, reuse storage. More...
 
 PrimitivePatch (const PrimitivePatch< Face, FaceList, PointField, PointType > &)
 Construct as copy. More...
 
virtual ~PrimitivePatch ()
 Destructor. More...
 
void clearOut ()
 
void clearGeom ()
 
void clearTopology ()
 
void clearPatchMeshAddr ()
 
void swap (PrimitivePatch &)=delete
 Suppress direct swapping, since storage containers may be const. More...
 
const Field< PointType > & points () const
 Return reference to global points. More...
 
label nPoints () const
 Return number of points supporting patch faces. More...
 
label nEdges () const
 Return number of edges in patch. More...
 
const edgeListedges () const
 Return list of edges, address into LOCAL point list. More...
 
label nInternalEdges () const
 Number of internal edges. More...
 
bool isInternalEdge (const label edgei) const
 Is internal edge? More...
 
const labelListboundaryPoints () const
 Return list of boundary points, address into LOCAL point list. More...
 
const labelListListfaceFaces () const
 Return face-face addressing. More...
 
const labelListListedgeFaces () const
 Return edge-face addressing. More...
 
const labelListListfaceEdges () const
 Return face-edge addressing. More...
 
const labelListListpointEdges () const
 Return point-edge addressing. More...
 
const labelListListpointFaces () const
 Return point-face addressing. More...
 
const List< Face > & localFaces () const
 Return patch faces addressing into local point list. More...
 
const labelListmeshPoints () const
 Return labelList of mesh points in patch. More...
 
const Map< label > & meshPointMap () const
 Mesh point map. More...
 
const Field< PointType > & localPoints () const
 Return pointField of points in patch. More...
 
const labelListlocalPointOrder () const
 Return orders the local points for most efficient search. More...
 
label whichPoint (const label gp) const
 Given a global point index, return the local point index. More...
 
label whichEdge (const edge &) const
 
labelList meshEdges (const edgeList &allEdges, const labelListList &cellEdges, const labelList &faceCells) const
 
labelList meshEdges (const edgeList &allEdges, const labelListList &pointEdges) const
 
const Field< PointType > & faceCentres () const
 Return face centres for patch. More...
 
const Field< PointType > & faceAreas () const
 Return face area vectors for patch. More...
 
const Field< scalar > & magFaceAreas () const
 Return face area magnitudes for patch. More...
 
const Field< PointType > & faceNormals () const
 Return face unit normals for patch. More...
 
const Field< PointType > & pointNormals () const
 Return point normals for patch. More...
 
bool hasFaceAreas () const
 
bool hasFaceCentres () const
 
bool hasFaceNormals () const
 
bool hasPointNormals () const
 
template<class ToPatch >
List< objectHitprojectPoints (const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction=intersection::VECTOR) const
 Project vertices of patch onto another patch. More...
 
template<class ToPatch >
List< objectHitprojectFaceCentres (const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction=intersection::VECTOR) const
 Project vertices of patch onto another patch. More...
 
const labelListListedgeLoops () const
 Return list of closed loops of boundary vertices. More...
 
surfaceTopo surfaceType () const
 Calculate surface type formed by patch. More...
 
bool checkTopology (const bool report=false, labelHashSet *setPtr=nullptr) const
 Check surface formed by patch for manifoldness (see above). More...
 
bool checkPointManifold (const bool report=false, labelHashSet *setPtr=nullptr) const
 Checks primitivePatch for faces sharing point but not edge. More...
 
virtual void movePoints (const Field< PointType > &)
 Correct patch after moving points. More...
 
void operator= (const PrimitivePatch< Face, FaceList, PointField, PointType > &)
 Assignment. More...
 
template<class ToPatch >
Foam::List< Foam::objectHitprojectPoints (const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm alg, const intersection::direction dir) const
 
template<class ToPatch >
Foam::List< Foam::objectHitprojectFaceCentres (const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm alg, const intersection::direction dir) const
 

Detailed Description

template<class Face, template< class > class FaceList, class PointField, class PointType = point>
class Foam::PrimitivePatch< Face, FaceList, PointField, PointType >

A list of faces which address into the list of points.

The class is templated on the face type (e.g. triangle, polygon etc.) and on the list type of faces and points so that it can refer to existing lists using UList and const pointField& or hold the storage using List and pointField.

Source files

Definition at line 90 of file PrimitivePatch.H.

Member Typedef Documentation

◆ FaceType

typedef Face FaceType

Definition at line 100 of file PrimitivePatch.H.

◆ FaceListType

typedef FaceList<Face> FaceListType

Definition at line 101 of file PrimitivePatch.H.

◆ PointFieldType

typedef PointField PointFieldType

Definition at line 102 of file PrimitivePatch.H.

Member Enumeration Documentation

◆ surfaceTopo

Enumeration defining the surface type. Used in check routines.

Enumerator
MANIFOLD 
OPEN 
ILLEGAL 

Definition at line 108 of file PrimitivePatch.H.

Constructor & Destructor Documentation

◆ PrimitivePatch() [1/4]

PrimitivePatch ( const FaceList< Face > &  faces,
const Field< PointType > &  points 
)

Construct from components.

Definition at line 41 of file PrimitivePatch.C.

◆ PrimitivePatch() [2/4]

PrimitivePatch ( FaceList< Face > &&  faces,
const Field< PointType > &  points 
)

Construct from components, transferring faces.

Definition at line 79 of file PrimitivePatch.C.

◆ PrimitivePatch() [3/4]

PrimitivePatch ( FaceList< Face > &  faces,
Field< PointType > &  points,
const bool  reuse 
)

Construct from components, reuse storage.

Definition at line 117 of file PrimitivePatch.C.

◆ PrimitivePatch() [4/4]

PrimitivePatch ( const PrimitivePatch< Face, FaceList, PointField, PointType > &  pp)

Construct as copy.

Definition at line 156 of file PrimitivePatch.C.

◆ ~PrimitivePatch()

~PrimitivePatch ( )
virtual

Destructor.

Definition at line 195 of file PrimitivePatch.C.

Member Function Documentation

◆ clearOut()

void clearOut ( )

Definition at line 130 of file PrimitivePatchClear.C.

Referenced by processorPolyPatch::updateMesh().

Here is the caller graph for this function:

◆ clearGeom()

void clearGeom ( )

Definition at line 43 of file PrimitivePatchClear.C.

Referenced by polyPatch::clearGeom(), and polyPatch::updateMesh().

Here is the caller graph for this function:

◆ clearTopology()

void clearTopology ( )

Definition at line 68 of file PrimitivePatchClear.C.

Referenced by polyPatch::clearAddressing().

Here is the caller graph for this function:

◆ clearPatchMeshAddr()

void clearPatchMeshAddr ( )

Definition at line 108 of file PrimitivePatchClear.C.

Referenced by polyPatch::clearAddressing().

Here is the caller graph for this function:

◆ swap()

void swap ( PrimitivePatch< Face, FaceList, PointField, PointType > &  )
delete

Suppress direct swapping, since storage containers may be const.

◆ points()

const Field<PointType>& points ( ) const
inline

Return reference to global points.

Definition at line 300 of file PrimitivePatch.H.

Referenced by booleanSurface::booleanSurface(), Foam::meshTools::calcBoxPointNormals(), addPatchCellLayer::calcExtrudeInfo(), cyclicAMIPolyPatch::calcTransforms(), cyclicPolyPatch::calcTransforms(), triSurfaceTools::curvatures(), distributedTriSurfaceMesh::distribute(), Foam::drawHitProblem(), edgeIntersections::edgeIntersections(), Foam::edgeMeshTools::featureProximity(), patchProbes::findElements(), mappedPatchBase::findSamples(), processorPolyPatch::initOrder(), cyclicPolyPatch::initOrder(), trackingInverseDistance::markBoundaries(), inverseDistance::markBoundaries(), momentOfInertia::massPropertiesPatch(), momentOfInertia::massPropertiesShell(), momentOfInertia::massPropertiesSolid(), offsetSurface::operator()(), triSurface::operator=(), oldCyclicPolyPatch::order(), processorPolyPatch::order(), cyclicPolyPatch::order(), orientedSurface::orientedSurface(), powerLawLopesdaCostaZone::powerLawLopesdaCostaZone(), boundaryMesh::read(), refinementSurfaces::setMinLevelFields(), addPatchCellLayer::setRefinement(), MeshedSurface< Foam::face >::storedPoints(), triSurfaceTools::surfaceNormal(), triSurfaceTools::surfaceSide(), triSurfaceSearch::tree(), triSurfaceTools::validTri(), triSurfaceTools::vertexNormals(), triSurfaceTools::vertexTriads(), and interfaceTrackingFvMesh::writeVTK().

Here is the caller graph for this function:

◆ nPoints()

◆ nEdges()

◆ edges()

◆ nInternalEdges()

Foam::label nInternalEdges ( ) const

Number of internal edges.

Definition at line 258 of file PrimitivePatch.C.

Referenced by patchPatchDist::correct(), faMesh::faMesh(), combineFaces::getOutsideFace(), PrimitivePatch< face, ::Foam::List, pointField, point >::isInternalEdge(), polyBoundaryMesh::neighbourEdges(), addPatchCellLayer::setRefinement(), and faMesh::updateMesh().

Here is the caller graph for this function:

◆ isInternalEdge()

bool isInternalEdge ( const label  edgei) const
inline

Is internal edge?

Definition at line 329 of file PrimitivePatch.H.

◆ boundaryPoints()

const Foam::labelList & boundaryPoints ( ) const

Return list of boundary points, address into LOCAL point list.

Definition at line 278 of file PrimitivePatch.C.

◆ faceFaces()

const Foam::labelListList & faceFaces ( ) const

Return face-face addressing.

Definition at line 298 of file PrimitivePatch.C.

Referenced by triSurfaceTools::validTri().

Here is the caller graph for this function:

◆ edgeFaces()

◆ faceEdges()

const Foam::labelListList & faceEdges ( ) const

Return face-edge addressing.

Definition at line 338 of file PrimitivePatch.C.

Referenced by cyclicPolyPatch::coupledEdges(), combineFaces::getOutsideFace(), triSurfaceTools::getTriangle(), intersectedSurface::intersectedSurface(), triSurfaceTools::oppositeEdge(), triSurfaceTools::otherEdges(), addPatchCellLayer::setRefinement(), triSurfaceTools::surfaceNormal(), and triSurfaceTools::surfaceSide().

Here is the caller graph for this function:

◆ pointEdges()

const Foam::labelListList & pointEdges ( ) const

Return point-edge addressing.

Definition at line 358 of file PrimitivePatch.C.

Referenced by snappySnapDriver::calcSnapDistance(), triSurfaceTools::getEdge(), triSurfaceTools::getVertexVertices(), edgeIntersections::minEdgeLength(), and triSurfaceTools::surfaceSide().

Here is the caller graph for this function:

◆ pointFaces()

const Foam::labelListList & pointFaces ( ) const

Return point-face addressing.

Definition at line 378 of file PrimitivePatch.C.

Referenced by snappySnapDriver::avgCellCentres(), Foam::meshTools::calcBoxPointNormals(), triSurfaceTools::getVertexTriangles(), oldCyclicPolyPatch::order(), and triSurfaceTools::vertexNormals().

Here is the caller graph for this function:

◆ localFaces()

◆ meshPoints()

const Foam::labelList & meshPoints ( ) const

Return labelList of mesh points in patch.

They are constructed by walking through the faces in incremental order and not sorted anymore.

Definition at line 418 of file PrimitivePatch.C.

Referenced by snappySnapDriver::avgCellCentres(), Foam::meshTools::calcBoxPointNormals(), addPatchCellLayer::calcExtrudeInfo(), snappySnapDriver::calcNearestSurface(), snappySnapDriver::calcSnapDistance(), patchPatchDist::correct(), cyclicPolyPatch::coupledEdges(), triSurfaceTools::curvatures(), snappySnapDriver::detectNearSurfaces(), mappedPatchBase::findSamples(), combineFaces::getOutsideFace(), globalIndexAndTransform::globalIndexAndTransform(), globalPoints::globalPoints(), localPointRegion::localPointRegion(), processorFaPatch::makeNonGlobalPatchPoints(), PatchTools::matchEdges(), PatchTools::matchPoints(), globalMeshData::mergePoints(), facePointPatch::meshPoints(), fieldSmoother::minSmoothField(), polyBoundaryMesh::neighbourEdges(), PrimitivePatch< face, ::Foam::List, pointField, point >::nPoints(), orientedSurface::orientedSurface(), motionSmootherAlgo::setDisplacement(), perfectInterface::setRefinement(), addPatchCellLayer::setRefinement(), snappySnapDriver::smoothDisplacement(), fieldSmoother::smoothPatchNormals(), syncTools::syncEdgeMap(), globalMeshData::syncPointData(), syncTools::syncPointList(), syncTools::syncPointMap(), pointConstraints::syncUntransformedData(), triSurfaceTools::vertexNormals(), ensightMesh::write(), lumpedPointMovement::writeVTP(), and AMIWeights::writeWeightField().

Here is the caller graph for this function:

◆ meshPointMap()

const Foam::Map< Foam::label > & meshPointMap ( ) const

Mesh point map.

Given the global point index find its location in the patch

Definition at line 438 of file PrimitivePatch.C.

Referenced by triSurfaceTools::curvatures(), snappySnapDriver::getFacePoints(), globalPoints::globalPoints(), PatchTools::matchPoints(), globalMeshData::mergePoints(), PatchTools::pointNormals(), syncTools::syncPointList(), triSurfaceTools::vertexTriads(), ensightMesh::write(), and AMIWeights::writeWeightField().

Here is the caller graph for this function:

◆ localPoints()

◆ localPointOrder()

const Foam::labelList & localPointOrder ( ) const

Return orders the local points for most efficient search.

Definition at line 478 of file PrimitivePatch.C.

◆ whichPoint()

Foam::label whichPoint ( const label  gp) const

Given a global point index, return the local point index.

If the point is not found, return -1

Definition at line 499 of file PrimitivePatch.C.

Referenced by slidingInterface::modifyMotionPoints().

Here is the caller graph for this function:

◆ whichEdge()

Foam::label whichEdge ( const edge e) const

Given an edge in local point labels, return its index in the edge list. If the edge is not found, return -1

Definition at line 177 of file PrimitivePatchMeshEdges.C.

Referenced by slidingInterface::modifyMotionPoints().

Here is the caller graph for this function:

◆ meshEdges() [1/2]

Foam::labelList meshEdges ( const edgeList allEdges,
const labelListList cellEdges,
const labelList faceCells 
) const

Return labels of patch edges in the global edge list using cell addressing

Definition at line 43 of file PrimitivePatchMeshEdges.C.

Referenced by addPatchCellLayer::calcExtrudeInfo(), addPatchCellLayer::globalEdgeFaces(), polyPatch::meshEdges(), and addPatchCellLayer::setRefinement().

Here is the caller graph for this function:

◆ meshEdges() [2/2]

Foam::labelList meshEdges ( const edgeList allEdges,
const labelListList pointEdges 
) const

Return labels of patch edges in the global edge list using basic edge addressing.

Definition at line 120 of file PrimitivePatchMeshEdges.C.

◆ faceCentres()

const Foam::Field< PointType > & faceCentres ( ) const

Return face centres for patch.

Definition at line 517 of file PrimitivePatch.C.

Referenced by symmetryPlanePolyPatch::calcGeometry(), wedgePolyPatch::calcGeometry(), MeshedSurface< Foam::face >::Cf(), triSurfaceMesh::coordinates(), surface::gatherFaceCentres(), processorPolyPatch::initOrder(), processorPolyPatch::order(), triSurfaceTools::writeCloseness(), and boundaryDataWriter::writeTemplate().

Here is the caller graph for this function:

◆ faceAreas()

const Foam::Field< PointType > & faceAreas ( ) const

Return face area vectors for patch.

Definition at line 537 of file PrimitivePatch.C.

Referenced by cyclicACMIPolyPatch::resetAMI(), and MeshedSurface< Foam::face >::Sf().

Here is the caller graph for this function:

◆ magFaceAreas()

const Foam::Field< Foam::scalar > & magFaceAreas ( ) const

Return face area magnitudes for patch.

Definition at line 557 of file PrimitivePatch.C.

Referenced by MeshedSurface< Foam::face >::magSf().

Here is the caller graph for this function:

◆ faceNormals()

◆ pointNormals()

const Foam::Field< PointType > & pointNormals ( ) const

Return point normals for patch.

Definition at line 597 of file PrimitivePatch.C.

Referenced by Foam::meshTools::calcBoxPointNormals(), slidingInterface::modifyMotionPoints(), facePointPatch::pointNormals(), and triSurfaceTools::surfaceNormal().

Here is the caller graph for this function:

◆ hasFaceAreas()

bool hasFaceAreas ( ) const
inline

Definition at line 416 of file PrimitivePatch.H.

◆ hasFaceCentres()

bool hasFaceCentres ( ) const
inline

Definition at line 417 of file PrimitivePatch.H.

◆ hasFaceNormals()

bool hasFaceNormals ( ) const
inline

Definition at line 418 of file PrimitivePatch.H.

◆ hasPointNormals()

bool hasPointNormals ( ) const
inline

Definition at line 419 of file PrimitivePatch.H.

◆ projectPoints() [1/2]

List<objectHit> projectPoints ( const ToPatch &  targetPatch,
const Field< PointType > &  projectionDirection,
const intersection::algorithm  = intersection::FULL_RAY,
const intersection::direction  = intersection::VECTOR 
) const

Project vertices of patch onto another patch.

◆ projectFaceCentres() [1/2]

List<objectHit> projectFaceCentres ( const ToPatch &  targetPatch,
const Field< PointType > &  projectionDirection,
const intersection::algorithm  = intersection::FULL_RAY,
const intersection::direction  = intersection::VECTOR 
) const

Project vertices of patch onto another patch.

◆ edgeLoops()

const Foam::labelListList & edgeLoops ( ) const

Return list of closed loops of boundary vertices.

Edge loops are given as ordered lists of vertices in local addressing

Definition at line 168 of file PrimitivePatchEdgeLoops.C.

Referenced by combineFaces::getOutsideFace().

Here is the caller graph for this function:

◆ surfaceType()

Foam::PrimitivePatch< Face, FaceList, PointField, PointType >::surfaceTopo surfaceType ( ) const

Calculate surface type formed by patch.

Types:

  • all edges have two neighbours (manifold)
  • some edges have more than two neighbours (illegal)
  • other (open)

Definition at line 122 of file PrimitivePatchCheck.C.

◆ checkTopology()

bool checkTopology ( const bool  report = false,
labelHashSet setPtr = nullptr 
) const

Check surface formed by patch for manifoldness (see above).

Return true if any incorrect edges are found. Insert vertices of incorrect edges into set.

Definition at line 170 of file PrimitivePatchCheck.C.

◆ checkPointManifold()

bool checkPointManifold ( const bool  report = false,
labelHashSet setPtr = nullptr 
) const

Checks primitivePatch for faces sharing point but not edge.

This denotes a surface that is pinched at a single point (test for pinched at single edge is already in PrimitivePatch) Returns true if this situation found and puts conflicting (mesh)point in set. Based on all the checking routines in primitiveMesh.

Definition at line 230 of file PrimitivePatchCheck.C.

◆ movePoints()

void movePoints ( const Field< PointType > &  )
virtual

Correct patch after moving points.

Definition at line 213 of file PrimitivePatch.C.

Referenced by cyclicAMIPolyPatch::initMovePoints(), and polyPatch::movePoints().

Here is the caller graph for this function:

◆ operator=()

void operator= ( const PrimitivePatch< Face, FaceList, PointField, PointType > &  pp)

Assignment.

Definition at line 620 of file PrimitivePatch.C.

Referenced by polyPatch::operator=().

Here is the caller graph for this function:

◆ projectPoints() [2/2]

Foam::List<Foam::objectHit> projectPoints ( const ToPatch &  targetPatch,
const Field< PointType > &  projectionDirection,
const intersection::algorithm  alg,
const intersection::direction  dir 
) const

Definition at line 50 of file PrimitivePatchProjectPoints.C.

◆ projectFaceCentres() [2/2]

Foam::List<Foam::objectHit> projectFaceCentres ( const ToPatch &  targetPatch,
const Field< PointType > &  projectionDirection,
const intersection::algorithm  alg,
const intersection::direction  dir 
) const

Definition at line 293 of file PrimitivePatchProjectPoints.C.


The documentation for this class was generated from the following files: