Public Member Functions | Private Member Functions | Private Attributes
checkIrregularSurfaceConnections Class Reference
Collaboration diagram for checkIrregularSurfaceConnections:
Collaboration graph
[legend]

Public Member Functions

 checkIrregularSurfaceConnections (polyMeshGen &mesh)
 Construct from polyMeshGen. More...
 
 ~checkIrregularSurfaceConnections ()
 
void checkIrregularVertices (labelHashSet &badVertices)
 find vertices where the surface is not valid More...
 
bool checkAndFixIrregularConnections ()
 find invalid connections and fix them on the fly More...
 

Private Member Functions

const meshSurfaceEnginesurfaceEngine () const
 create meshSurfaceEngine More...
 
void clearMeshEngine ()
 clear meshSurfaceEngine. Used in case if the mesh is modified More...
 
bool checkAndFixCellGroupsAtBndVertices (labelHashSet &badVertices, const bool removeConnections=false)
 
bool checkEdgeFaceConnections (labelHashSet &badVertices, const bool removeCells=false)
 
bool checkFaceGroupsAtBndVertices (labelHashSet &badVertices, const bool removeCells=false)
 
 checkIrregularSurfaceConnections (const checkIrregularSurfaceConnections &)
 Disallow default bitwise copy construct. More...
 
void operator= (const checkIrregularSurfaceConnections &)
 Disallow default bitwise assignment. More...
 

Private Attributes

polyMeshGenmesh_
 Reference to polyMeshGen. More...
 
meshSurfaceEnginemeshSurfacePtr_
 pointer to meshSurfaceEngine More...
 

Detailed Description

Definition at line 51 of file checkIrregularSurfaceConnections.H.

Constructor & Destructor Documentation

◆ checkIrregularSurfaceConnections() [1/2]

Disallow default bitwise copy construct.

◆ checkIrregularSurfaceConnections() [2/2]

Construct from polyMeshGen.

Definition at line 41 of file checkIrregularSurfaceConnections.C.

◆ ~checkIrregularSurfaceConnections()

Member Function Documentation

◆ surfaceEngine()

const meshSurfaceEngine& surfaceEngine ( ) const
inlineprivate

◆ clearMeshEngine()

void clearMeshEngine ( )
inlineprivate

clear meshSurfaceEngine. Used in case if the mesh is modified

Definition at line 71 of file checkIrregularSurfaceConnections.H.

References Foam::deleteDemandDrivenData(), and checkIrregularSurfaceConnections::meshSurfacePtr_.

Referenced by checkIrregularSurfaceConnections::~checkIrregularSurfaceConnections().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ checkAndFixCellGroupsAtBndVertices()

bool checkAndFixCellGroupsAtBndVertices ( labelHashSet badVertices,
const bool  removeConnections = false 
)
private

check if there exist vertices with more than one groups of cells attached to it

check cells connected to surface nodes cells connected to a vertex must create a single loop when cells are visited over faces from to the other

check if the vertices at processor boundaries are connected correctly

fill-in dualEdgesForPoint with local data

store the edge

fill-in with data at processor boundaries. Store edges on the processor with the lower label not to duplicate the data

exchange data with other processors this step supplies all processors with all necessary data

edges are sent to other processors as follows 1. global point label 2. number of edges at node 3. labels of edges

Finally, check the number of dual loops processor vertices

check if all points can be visited via edges

Definition at line 47 of file checkIrregularSurfaceConnectionsFunctions.C.

References LongList< T, Offset >::append(), DynList< T, staticSize >::append(), UPstream::blocking, meshSurfaceEngine::boundaryPoints(), meshSurfaceEngine::bp(), meshSurfaceEngine::bpAtProcs(), Foam::constant::universal::c, cells, polyMeshGenModifier::cellsAccess(), DynList< T, staticSize >::clear(), VRWGraph::contains(), Foam::e, Foam::endl(), Foam::help::exchangeMap(), f(), polyMeshGenModifier::facesAccess(), forAll, forAllConstIter(), forAllRow, meshSurfaceEngine::globalBoundaryPointLabel(), meshSurfaceEngine::globalToLocalBndPointAddressing(), Foam::Info, HashSet< Key, Hash >::insert(), UPstream::myProcNo(), nPoints, UPstream::nProcs(), p, UPstream::parRun(), points, polyMeshGenModifier::pointsAccess(), Foam::pos(), Foam::Pout, Foam::reduce(), DynList< T, staticSize >::removeLastElement(), Foam::returnReduce(), s(), List::size(), LongList< T, Offset >::size(), DynList< T, staticSize >::size(), and VRWGraph::sizeOfRow().

Referenced by checkIrregularSurfaceConnections::checkAndFixIrregularConnections().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ checkEdgeFaceConnections()

bool checkEdgeFaceConnections ( labelHashSet badVertices,
const bool  removeCells = false 
)
private

◆ checkFaceGroupsAtBndVertices()

bool checkFaceGroupsAtBndVertices ( labelHashSet badVertices,
const bool  removeCells = false 
)
private

check if all boundary face connected to a boundary vertex are connected into a single group of faces that can be visited over edges

check number of face groups

check connections at parallel vertices a connection of two faces over an edge can be represented as an edge. A list of edges at a bnd vertex must be connected into a single loop, otherwise the surface is ill-connected.

create map of dual edges for boundary points at processor boundaries

add local edge

collect connections over processor edges on the processor with the lowest label to avoid duplication of data

the data is sent as follows: 1. global edge label 2. global face label

exchange data with other processors this step supplies all processors with all necessary data

edges are sent to other processors as follows 1. global point label 2. number of edges at node 3. labels of edges

Finally, check the number of dual loops processor vertices

check if all points can be visited via edges

Definition at line 603 of file checkIrregularSurfaceConnectionsFunctions.C.

References LongList< T, Offset >::append(), DynList< T, staticSize >::append(), List::append(), meshSurfaceEngine::beNeiProcs(), meshSurfaceEngine::boundaryPointEdges(), meshSurfaceEngine::boundaryPoints(), meshSurfaceEngine::bp(), meshSurfaceEngine::bpAtProcs(), LongList< T, Offset >::clear(), DynList< T, staticSize >::clear(), VRWGraph::contains(), Foam::e, meshSurfaceEngine::edgeFaces(), meshSurfaceEngine::edges(), Foam::endl(), Foam::help::exchangeMap(), meshSurfaceEngine::faceFaces(), forAll, forAllConstIter(), forAllRow, meshSurfaceEngine::globalBoundaryEdgeLabel(), meshSurfaceEngine::globalBoundaryFaceLabel(), meshSurfaceEngine::globalBoundaryPointLabel(), meshSurfaceEngine::globalToLocalBndEdgeAddressing(), meshSurfaceEngine::globalToLocalBndPointAddressing(), Foam::Info, HashSet< Key, Hash >::insert(), UPstream::myProcNo(), UPstream::nProcs(), meshSurfaceEngine::otherEdgeFaceAtProc(), UPstream::parRun(), meshSurfaceEngine::pointFaces(), Foam::Pout, polyMeshGenModifier::removeCells(), DynList< T, staticSize >::removeLastElement(), Foam::returnReduce(), s(), List::size(), LongList< T, Offset >::size(), DynList< T, staticSize >::size(), VRWGraph::size(), HashTable::size(), and VRWGraph::sizeOfRow().

Referenced by checkIrregularSurfaceConnections::checkAndFixIrregularConnections().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=()

void operator= ( const checkIrregularSurfaceConnections )
private

Disallow default bitwise assignment.

◆ checkIrregularVertices()

void checkIrregularVertices ( labelHashSet badVertices)

find vertices where the surface is not valid

Definition at line 62 of file checkIrregularSurfaceConnections.C.

◆ checkAndFixIrregularConnections()

bool checkAndFixIrregularConnections ( )

Field Documentation

◆ mesh_

polyMeshGen& mesh_
private

◆ meshSurfacePtr_

meshSurfaceEngine* meshSurfacePtr_
mutableprivate

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