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

Public Member Functions

 boundaryLayers (polyMeshGen &mesh)
 Construct from mesh reference. More...
 
 ~boundaryLayers ()
 
void addLayerForPatch (const word &patchName)
 adds layer for a given patch More...
 
void createOTopologyLayers ()
 create O-topology layers (used as flag) More...
 
void terminateLayersAtConcaveEdges ()
 terminate boundary layers at concave edges (used as a flag) More...
 
void activate2DMode ()
 
void addLayerForAllPatches ()
 add layers for all patches More...
 
void addWrapperLayer ()
 

Private Types

enum  vertexTypes {
  NONE = 0, PATCHNODE = 1, EDGENODE = 2, CORNERNODE = 4,
  PARALLELBOUNDARY = 8
}
 

Private Member Functions

const meshSurfaceEnginesurfaceEngine () const
 Return const reference to meshSurfaceEngine. More...
 
const meshSurfacePartitionersurfacePartitioner () const
 return const reference to meshSurfacePartitioner More...
 
void findPatchesToBeTreatedTogether ()
 
void findPatchVertices (const boolList &treatPatches, List< direction > &patchVertex) const
 find vertices of the selected patches More...
 
void checkTopologyOfBoundaryFaces (const labelList &patchLabels)
 
point createNewVertex (const label bpI, const boolList &treatPatches, const List< direction > &pVertices) const
 create new vertex More...
 
void createNewVertices (const boolList &treatPatches)
 create new vertices for the selected patches More...
 
void createNewVertices (const labelList &patchLabels)
 
void createNewPartitionVerticesParallel (const labelLongList &procPoints, const List< direction > &pVertices, const boolList &treatPatches)
 creates new vertices for vertices at parallel boundaries More...
 
void createNewEdgeVerticesParallel (const labelLongList &procPoints, const List< direction > &pVertices, const boolList &treatPatches)
 
void createNewFacesAndCells (const boolList &treatPatches)
 create a layer of cells More...
 
void createNewFacesParallel (const boolList &treatPatches)
 
void createNewFacesFromPointsParallel (const LongList< DynList< label, 4 > > &faceCandidates, const LongList< labelPair > &candidatePatches)
 
void createLayerCells (const labelList &patchLabels)
 
label findNewNodeLabel (const label pointI, const label pKey) const
 helper function finding a new face label for multiply extruded nodes More...
 
void createNewCellFromEdge (const edge &e, const label pKeyI, const label pKeyJ, FixedList< FixedList< label, 4 >, 6 > &cellFaces) const
 creating hex cells near feature edges More...
 
void createNewCellFromNode (const label pointI, const DynList< label, 3 > &pKeys, FixedList< FixedList< label, 4 >, 6 > &cellFaces) const
 creating hex cells near corners More...
 
void addLayerForPatch (const label patchLabel)
 create a bnd layer for a given patch More...
 
void clearOut ()
 delete meshSurfaceEngine More...
 
 boundaryLayers (const boundaryLayers &)
 Disallow bitwise copy construct. More...
 
void operator= (const boundaryLayers &)
 Disallow bitwise assignment. More...
 

Private Attributes

polyMeshGenmesh_
 Reference to the mesh. More...
 
meshSurfaceEnginemsePtr_
 pointer to mesh surface engine More...
 
meshSurfacePartitionermeshPartitionerPtr_
 poiner to meshSurfacePartitioner More...
 
bool patchWiseLayers_
 
bool terminateLayersAtConcaveEdges_
 shall the layers be terminated at concave edges (true) More...
 
bool is2DMesh_
 is it a 2D mesh More...
 
wordList patchNames_
 patch names More...
 
wordList patchTypes_
 patch types More...
 
boolList treatedPatch_
 
List< DynList< label > > treatPatchesWithPatch_
 extrude patches with patch More...
 
labelLongList newLabelForVertex_
 label of a new node (helper) More...
 
std::map< label, std::map< std::pair< label, label >, label > > otherVrts_
 
labelList patchKey_
 a key assigned to each patch. It is needed to search in otherVrts_ More...
 
label nPoints_
 number of vertices in the mesh More...
 
bool geometryAnalysed_
 has the geometry been analysed More...
 

Detailed Description

Definition at line 60 of file boundaryLayers.H.

Member Enumeration Documentation

◆ vertexTypes

enum vertexTypes
private
Enumerator
NONE 
PATCHNODE 
EDGENODE 
CORNERNODE 
PARALLELBOUNDARY 

Definition at line 232 of file boundaryLayers.H.

Constructor & Destructor Documentation

◆ boundaryLayers() [1/2]

boundaryLayers ( const boundaryLayers )
private

Disallow bitwise copy construct.

◆ boundaryLayers() [2/2]

Construct from mesh reference.

Definition at line 535 of file boundaryLayers.C.

References forAll, PtrList::setSize(), and PtrList::size().

Here is the call graph for this function:

◆ ~boundaryLayers()

Definition at line 572 of file boundaryLayers.C.

References boundaryLayers::clearOut(), boundaryLayers::mesh_, UPstream::parRun(), and polyMeshGenModifier::removeUnusedVertices().

Here is the call graph for this function:

Member Function Documentation

◆ surfaceEngine()

const meshSurfaceEngine & surfaceEngine ( ) const
private

◆ surfacePartitioner()

const meshSurfacePartitioner & surfacePartitioner ( ) const
private

return const reference to meshSurfacePartitioner

Definition at line 62 of file boundaryLayers.C.

References boundaryLayers::meshPartitionerPtr_, and boundaryLayers::surfaceEngine().

Referenced by boundaryLayers::createLayerCells(), boundaryLayers::createNewVertices(), and boundaryLayers::findPatchesToBeTreatedTogether().

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

◆ findPatchesToBeTreatedTogether()

void findPatchesToBeTreatedTogether ( )
private

find if any other patches need to be treated together with the given one

patches must be treated together if there exist a corner where more than three patches meet

patches must be treated together for concave geometries edgeClassification map counts the number of convex and concave edges for a given patch. The first counts convex edges and the second counts concave ones. If the number of concave edges is of the considerable percentage, it is treated as O-topology

check if the any of the face vertices is tangled

check faces over processor edges

send faces sharing processor edges to other processors faces are flattened into a single contiguous array

store faces for sending

do not send data if the face on other processor is in the same patch

each face is sent as follows 1. global edge label 2. number of face nodes 3. faces nodes and vertex coordinates

receive faces from other processors

this point already exist on this processor

this point does not exist on this processor add it to the local list of points it will be deleted when this procedure is finished

this point has not yet been received

set the size of points back to their original number

number of concave edges is greater than the number of the convex ones. Treat patches together.

avoid adding unused patches in case of 2D meshing

make sure that all processors have the same graph

final adjusting of patches which shall be treated together

Definition at line 70 of file boundaryLayers.C.

References polyMeshGenFaces::addFaceSubset(), polyMeshGenFaces::addFaceToSubset(), Foam::help::angleBetweenFaces(), pointFieldPMG::append(), LongList< T, Offset >::append(), DynList< T, staticSize >::append(), meshSurfaceEngine::beNeiProcs(), polyMeshGenFaces::boundaries(), meshSurfaceEngine::boundaryFacePatches(), meshSurfaceEngine::boundaryFaces(), meshSurfaceEngine::boundaryPoints(), meshSurfaceEngine::bp(), labelledPoint::coordinates(), meshSurfacePartitioner::corners(), Foam::e, meshSurfaceEngine::edgeFaces(), meshSurfaceEngine::edges(), Foam::endl(), Foam::help::exchangeMap(), f(), f1, Pair::first(), UList::first(), forAll, forAllConstIter(), forAllRow, HashTable::found(), Pstream::gatherList(), boundaryLayers::geometryAnalysed_, meshSurfaceEngine::globalBoundaryEdgeLabel(), meshSurfaceEngine::globalBoundaryPointLabel(), meshSurfaceEngine::globalToLocalBndEdgeAddressing(), meshSurfaceEngine::globalToLocalBndPointAddressing(), Foam::Info, HashSet< Key, Hash >::insert(), meshSurfaceCheckInvertedVertices::invertedVertices(), boundaryLayers::is2DMesh_, Foam::help::isSharedEdgeConvex(), Foam::max(), boundaryLayers::mesh_, Foam::min(), UPstream::myProcNo(), boundaryLayers::nPoints_, UPstream::nProcs(), meshSurfacePartitioner::numberOfFeatureEdgesAtPoint(), meshSurfaceEngine::otherEdgeFaceAtProc(), meshSurfaceEngine::otherEdgeFacePatch(), UPstream::parRun(), boundaryLayers::patchNames_, labelledPoint::pointLabel(), meshSurfacePartitioner::pointPatches(), points, polyMeshGenPoints::points(), DynList< T, staticSize >::removeLastElement(), Foam::help::scalarToText(), Pstream::scatterList(), Pair::second(), pointFieldPMG::setSize(), List::setSize(), List::size(), LongList< T, Offset >::size(), DynList< T, staticSize >::size(), VRWGraph::sizeOfRow(), boundaryLayers::surfaceEngine(), boundaryLayers::surfacePartitioner(), boundaryLayers::treatedPatch_, boundaryLayers::treatPatchesWithPatch_, and polyMeshGen::write().

Referenced by boundaryLayers::addLayerForAllPatches(), and boundaryLayers::addLayerForPatch().

Here is the caller graph for this function:

◆ findPatchVertices()

void findPatchVertices ( const boolList treatPatches,
List< direction > &  patchVertex 
) const
private

find vertices of the selected patches

Definition at line 53 of file boundaryLayersCreateVertices.C.

References meshSurfaceEngine::bpAtProcs(), forAll, forAllRow, UPstream::parRun(), meshSurfacePartitioner::pointPatches(), List::setSize(), VRWGraph::size(), and VRWGraph::sizeOfRow().

Referenced by boundaryLayers::createNewVertices().

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

◆ checkTopologyOfBoundaryFaces()

void checkTopologyOfBoundaryFaces ( const labelList patchLabels)
private

check and correct the topology of boundary faces where the layers terminate

create a set of patch pairs. These are pairs at which the layers shall be terminated

find patches of neighbour faces

edge is at a parallel boundary

find feature edges and check if the patches meeting there shall be treated together.

create a new face from this edge and the neighbouring edges

Finally, replace the boundary faces

decompose owner cells adjacent to the decomposed faces

Definition at line 45 of file boundaryLayersCheckTopologyOfBndFaces.C.

References LongList< T, Offset >::append(), VRWGraph::appendList(), polyMeshGenModifier::boundariesAccess(), meshSurfaceEngine::boundaryFacePatches(), meshSurfaceEngine::boundaryFaces(), polyMeshGenCells::cells(), boundaryLayers::clearOut(), Foam::help::createFaceFromRemovedPart(), decomposeCells::decomposeMesh(), meshSurfaceEngine::edgeFaces(), Foam::endl(), Foam::exit(), face::faceEdge(), meshSurfaceEngine::faceEdges(), meshSurfaceEngine::faceOwners(), Foam::FatalError, forAll, HashTable::found(), Foam::Info, HashSet< Key, Hash >::insert(), Foam::max(), boundaryLayers::mesh_, Foam::min(), meshSurfaceEngine::otherEdgeFacePatch(), boundaryLayers::patchNames_, boundaryLayers::patchTypes_, boundaryLayers::patchWiseLayers_, Foam::reduce(), Foam::help::removeEdgesFromFace(), polyMeshGenModifier::replaceBoundary(), DynList< T, staticSize >::setSize(), cellListPMG::size(), List::size(), VRWGraph::sizeOfRow(), boundaryLayers::surfaceEngine(), boundaryLayers::treatPatchesWithPatch_, and polyMeshGen::write().

Here is the call graph for this function:

◆ createNewVertex()

point createNewVertex ( const label  bpI,
const boolList treatPatches,
const List< direction > &  pVertices 
) const
private

◆ createNewVertices() [1/2]

void createNewVertices ( const boolList treatPatches)
private

◆ createNewVertices() [2/2]

void createNewVertices ( const labelList patchLabels)
private

create new vertices such that layers for selected patches are generated in a single run

the following is needed for parallel runs it is ugly, but must stay for now :(

make sure than the points are never re-allocated during the process

generate new layer vertices for each patch

classify vertices belonging to this patch

create indices and allocate maps for new points

skip vertices at parallel boundaries

this the only new point

set the size of points

calculate coordinates of new points

create new point

set the new point or an edge point

set the new point

create missing vertices for edge and corner vertices they should be stored in the otherNodes map

only one patch is treated

point is located at an extrusion edge create the new position for the existing point

point is located at an extrusion corner create 3 points and the new position for the existing point

create new position for the existing point

swap coordinates of new and old points

Definition at line 402 of file boundaryLayersCreateVertices.C.

References Foam::abort(), LongList< T, Offset >::append(), DynList< T, staticSize >::append(), polyMeshGenFaces::boundaries(), meshSurfaceEngine::boundaryFaces(), meshSurfaceEngine::boundaryPoints(), DynList< T, staticSize >::contains(), boundaryLayers::createNewEdgeVerticesParallel(), boundaryLayers::createNewPartitionVerticesParallel(), boundaryLayers::createNewVertex(), boundaryLayers::EDGENODE, Foam::FatalError, FatalErrorIn, boundaryLayers::findPatchVertices(), forAll, forAllRow, Foam::help::isinf(), Foam::help::isnan(), boundaryLayers::mesh_, boundaryLayers::newLabelForVertex_, boundaryLayers::nPoints_, boundaryLayers::otherVrts_, p, boundaryLayers::PARALLELBOUNDARY, UPstream::parRun(), boundaryLayers::patchKey_, meshSurfaceEngine::pointFaces(), meshSurfaceEngine::pointNormals(), meshSurfacePartitioner::pointPatches(), meshSurfaceEngine::pointPoints(), points, polyMeshGenPoints::points(), List::setSize(), List::size(), LongList< T, Offset >::size(), DynList< T, staticSize >::size(), boundaryLayers::surfaceEngine(), boundaryLayers::surfacePartitioner(), and boundaryLayers::treatPatchesWithPatch_.

Here is the call graph for this function:

◆ createNewPartitionVerticesParallel()

void createNewPartitionVerticesParallel ( const labelLongList procPoints,
const List< direction > &  pVertices,
const boolList treatPatches 
)
private

◆ createNewEdgeVerticesParallel()

void createNewEdgeVerticesParallel ( const labelLongList procPoints,
const List< direction > &  pVertices,
const boolList treatPatches 
)
private

creates new vertices from vertices at parallel boundaries which are also at the border of the treated partitions

find patches for the given point

find local values of normals and v

normal vector is co-linear with that edge

prepare normals and v for sending to other procs

store values in the list for sending

exchange data with other processors

calculate normals

find patches for the given point

calculate distances

find patches for the given point

limit distances

exchange distances with other processors

exchange distances with other processors

Finally, create new points

extrusion for one patch in a single go

Definition at line 793 of file boundaryLayersCreateVertices.C.

References Foam::abort(), LongList< T, Offset >::append(), DynList< T, staticSize >::appendIfNotIn(), meshSurfaceEngine::boundaryFacePatches(), meshSurfaceEngine::boundaryFaces(), meshSurfaceEngine::boundaryPoints(), meshSurfaceEngine::bpAtProcs(), DynList< T, staticSize >::contains(), VRWGraph::contains(), labelledPoint::coordinates(), Foam::help::distanceOfPointFromTheEdge(), Foam::help::exchangeMap(), f(), Foam::FatalError, FatalErrorIn, forAll, forAllRow, found, meshSurfaceEngine::globalBoundaryPointLabel(), meshSurfaceEngine::globalToLocalBndPointAddressing(), Foam::help::isinf(), Foam::help::isnan(), Foam::mag(), UPstream::myProcNo(), p, UPstream::parRun(), pFaces, meshSurfaceEngine::pointFaces(), labelledPoint::pointLabel(), meshSurfacePartitioner::pointPatches(), meshSurfaceEngine::pointPoints(), points, Foam::pos(), Foam::returnReduce(), LongList< T, Offset >::size(), DynList< T, staticSize >::size(), and Vector< scalar >::zero.

Referenced by boundaryLayers::createNewVertices().

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

◆ createNewFacesAndCells()

void createNewFacesAndCells ( const boolList treatPatches)
private

◆ createNewFacesParallel()

void createNewFacesParallel ( const boolList treatPatches)
private

create new faces at parallel boundaries faces are extruded from edges

the next stage is the generation of processor faces this step can be done without any communication, but only if the faces are added in the same order on both processors this will be achieved by sorting edges according to their global labes another difficulty here is that new processor patches may occur during this procedure

create a list of treated edges and sort the list

create additional processor patches if needed

create new processor faces

add faces into the mesh

Definition at line 180 of file boundaryLayersFacesAndCells.C.

References polyMeshGenModifier::addProcessorFaces(), LongList< T, Offset >::append(), VRWGraph::appendList(), meshSurfaceEngine::boundaryFacePatches(), meshSurfaceEngine::boundaryFaces(), VRWGraph::containsAtPosition(), Foam::e, meshSurfaceEngine::edgeFaces(), meshSurfaceEngine::faceEdges(), forAll, meshSurfaceEngine::globalBoundaryEdgeLabel(), meshSurfaceEngine::globalToLocalBndEdgeAddressing(), UPstream::myProcNo(), processorBoundaryPatch::neiProcNo(), meshSurfaceEngine::otherEdgeFaceAtProc(), meshSurfaceEngine::otherEdgeFacePatch(), Foam::pos(), List::setSize(), VRWGraph::size(), VRWGraph::sizeOfRow(), and Foam::sort().

Referenced by boundaryLayers::createLayerCells(), and boundaryLayers::createNewFacesAndCells().

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

◆ createNewFacesFromPointsParallel()

void createNewFacesFromPointsParallel ( const LongList< DynList< label, 4 > > &  faceCandidates,
const LongList< labelPair > &  candidatePatches 
)
private

create new faces at parallel boundaries faces are created from points at parallel boundaries the function takes a reference to the faces which are the candidates to create faces at parallel boundaries

some faces may appear more than once such faces are ordinary internal faces

find the processor patch for each processor boundary face the key of the algorithm is the point from which the face was created by sending the point label and the associated patches, it will be possible to find the other processor containing that face

exchange the data with other processors

found the processor containing other face

sort the points in ascending order this ensures the correct order of faces at the processor boundaries

store processor faces

Definition at line 652 of file boundaryLayerCells.C.

References polyMeshGenModifier::addProcessorFaces(), LongList< T, Offset >::append(), VRWGraph::append(), VRWGraph::appendList(), meshSurfaceEngine::boundaryPoints(), meshSurfaceEngine::bp(), meshSurfaceEngine::bpAtProcs(), meshSurfaceEngine::bpNeiProcs(), List::clear(), Foam::help::exchangeMap(), f(), forAll, forAllRow, meshSurfaceEngine::globalBoundaryPointLabel(), meshSurfaceEngine::globalToLocalBndPointAddressing(), UPstream::myProcNo(), processorBoundaryPatch::neiProcNo(), labelledPair::pair(), labelledPair::pairLabel(), and Foam::sort().

Referenced by boundaryLayers::createLayerCells().

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

◆ createLayerCells()

void createLayerCells ( const labelList patchLabels)
private

create layer cells in one go this is much faster than layer by layer

mark patches which will be extruded into layer cells

create new faces at parallel boundaries

create lists for new boundary faces

create storage for new cells

create layer cells and store boundary faces

store the current boundary face

create parallel face

create quad faces

check if the face is at the boundary of the treated partitions

face is a new boundary face

data for parallel execution

create cells at edges

do not consider edges with no faces attached to it

cells are generated at the processor with the lowest label

check if the edge is a feature edge

check if the faces attached to the edge have different keys

generate faces of the bnd layer cell

store boundary faces

check if face 5 is a boundary face or at an inter-processor boundary

add a face in the empty patch in case of 2D layer generation

add a face at inter-pocessor boundary

check if face 4 is a boundary face or at an inter-processor boundary

add a face in the empty patch in case of 2D layer generation

add a face at inter-pocessor boundary

append cell to the queue

create cells for corner nodes

skip points on feature edges

point is at a parallel boundary

send the data to the processor with the lowest label data is flatenned as follows 1. the number of faces and global point label 2. number of points in the face 3. patch label 4. global labels of face points

exchange data with other processors

sort faces sharing corners at the parallel boundaries

sort out point which are not at inter-processor boundaries

ensure correct orientation

create layer cells for corner nodes

store boundary faces

append cell to the queue

create faces at parallel boundaries created from points at parallel boundaries

create mesh modifier

delete meshSurfaceEngine

Definition at line 53 of file boundaryLayerCells.C.

References Foam::abort(), Foam::add(), polyMeshGenModifier::addCells(), LongList< T, Offset >::append(), DynList< T, staticSize >::append(), VRWGraphList::appendGraph(), DynList< T, staticSize >::appendIfNotIn(), VRWGraph::appendList(), polyMeshGenFaces::boundaries(), polyMeshGenModifier::boundariesAccess(), meshSurfaceEngine::boundaryFacePatches(), meshSurfaceEngine::boundaryFaces(), meshSurfaceEngine::boundaryPoints(), meshSurfaceEngine::bp(), meshSurfaceEngine::bpAtProcs(), polyMeshGenCells::cells(), VRWGraphList::clear(), DynList< T, staticSize >::clear(), boundaryLayers::clearOut(), DynList< T, staticSize >::contains(), DynList< T, staticSize >::containsAtPosition(), boundaryLayers::createNewCellFromEdge(), boundaryLayers::createNewCellFromNode(), boundaryLayers::createNewFacesFromPointsParallel(), boundaryLayers::createNewFacesParallel(), Foam::e, meshSurfaceEngine::edgeFaces(), meshSurfaceEngine::edges(), Foam::endl(), Foam::help::exchangeMap(), f(), face::faceEdge(), meshSurfaceEngine::faceEdges(), meshSurfaceEngine::faceOwners(), Foam::FatalError, FatalErrorIn, DynList< T, staticSize >::fcIndex(), boundaryLayers::findNewNodeLabel(), forAll, forAllConstIter(), forAllIter, forAllRow, HashTable::found(), meshSurfaceEngine::globalBoundaryPointLabel(), meshSurfaceEngine::globalToLocalBndPointAddressing(), Foam::Info, HashSet< Key, Hash >::insert(), boundaryLayers::mesh_, UPstream::myProcNo(), boundaryLayers::nPoints_, meshSurfaceEngine::otherEdgeFaceAtProc(), meshSurfaceEngine::otherEdgeFacePatch(), boundaryLayers::otherVrts_, UPstream::parRun(), boundaryLayers::patchKey_, boundaryLayers::patchNames_, boundaryLayers::patchTypes_, pFaces, pMin(), meshSurfaceEngine::pointFaces(), meshSurfacePartitioner::pointPatches(), Foam::pos(), Foam::Pout, polyMeshGenModifier::reorderBoundaryFaces(), polyMeshGenModifier::replaceBoundary(), DynList< T, staticSize >::setSize(), List::setSize(), cellListPMG::size(), List::size(), VRWGraphList::size(), LongList< T, Offset >::size(), DynList< T, staticSize >::size(), VRWGraph::sizeOfRow(), boundaryLayers::surfaceEngine(), boundaryLayers::surfacePartitioner(), boundaryLayers::treatedPatch_, boundaryLayers::treatPatchesWithPatch_, and face::which().

Referenced by boundaryLayers::addLayerForAllPatches().

Here is the caller graph for this function:

◆ findNewNodeLabel()

label findNewNodeLabel ( const label  pointI,
const label  pKey 
) const
inlineprivate

helper function finding a new face label for multiply extruded nodes

Definition at line 38 of file boundaryLayersI.H.

Referenced by boundaryLayers::createLayerCells().

Here is the caller graph for this function:

◆ createNewCellFromEdge()

void createNewCellFromEdge ( const edge e,
const label  pKeyI,
const label  pKeyJ,
FixedList< FixedList< label, 4 >, 6 > &  cellFaces 
) const
inlineprivate

creating hex cells near feature edges

F0

F1

F2

F3

F4

F5

Definition at line 81 of file boundaryLayersI.H.

References Foam::abort(), Foam::e, Foam::endl(), Foam::FatalError, forAll, Foam::Info, and Foam::constant::atomic::me.

Referenced by boundaryLayers::createLayerCells().

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

◆ createNewCellFromNode()

void createNewCellFromNode ( const label  pointI,
const DynList< label, 3 > &  pKeys,
FixedList< FixedList< label, 4 >, 6 > &  cellFaces 
) const
inlineprivate

creating hex cells near corners

create labels before creating cells

create the cell and append it F0

F1

F2

F3

F4

F5

Definition at line 231 of file boundaryLayersI.H.

References n.

Referenced by boundaryLayers::createLayerCells().

Here is the caller graph for this function:

◆ addLayerForPatch() [1/2]

void addLayerForPatch ( const label  patchLabel)
private

◆ clearOut()

void clearOut ( )
inlineprivate

◆ operator=()

void operator= ( const boundaryLayers )
private

Disallow bitwise assignment.

◆ addLayerForPatch() [2/2]

void addLayerForPatch ( const word patchName)

adds layer for a given patch

Definition at line 582 of file boundaryLayers.C.

References boundaryLayers::addLayerForPatch(), polyMeshGenFaces::boundaries(), boundaryLayers::findPatchesToBeTreatedTogether(), forAll, boundaryLayers::geometryAnalysed_, and boundaryLayers::mesh_.

Here is the call graph for this function:

◆ createOTopologyLayers()

void createOTopologyLayers ( )

create O-topology layers (used as flag)

Definition at line 594 of file boundaryLayers.C.

References boundaryLayers::patchWiseLayers_.

Referenced by boundaryLayers::addWrapperLayer().

Here is the caller graph for this function:

◆ terminateLayersAtConcaveEdges()

void terminateLayersAtConcaveEdges ( )

terminate boundary layers at concave edges (used as a flag)

Definition at line 599 of file boundaryLayers.C.

References boundaryLayers::terminateLayersAtConcaveEdges_.

◆ activate2DMode()

void activate2DMode ( )

avoid generating layers for empty patches in case of a 2D mesh used as a flag prior to addLayerForAllPatches

mark empty patches as already used

Definition at line 604 of file boundaryLayers.C.

References polyMeshGenFaces::boundaries(), meshSurfaceEngine::boundaryFacePatches(), meshSurfaceEngine::boundaryFaces(), forAll, boundaryLayers::is2DMesh_, boundaryLayers::mesh_, patches, boundaryLayers::surfaceEngine(), boundaryLayers::treatedPatch_, boundaryLayers::treatPatchesWithPatch_, polyMeshGen2DEngine::zMaxPoints(), and polyMeshGen2DEngine::zMinPoints().

Referenced by cartesian2DMeshGenerator::generateBoundaryLayers(), and generateLayer().

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

◆ addLayerForAllPatches()

void addLayerForAllPatches ( )

◆ addWrapperLayer()

void addWrapperLayer ( )

Field Documentation

◆ mesh_

polyMeshGen& mesh_
private

◆ msePtr_

meshSurfaceEngine* msePtr_
mutableprivate

pointer to mesh surface engine

Definition at line 66 of file boundaryLayers.H.

Referenced by boundaryLayers::clearOut(), and boundaryLayers::surfaceEngine().

◆ meshPartitionerPtr_

meshSurfacePartitioner* meshPartitionerPtr_
mutableprivate

◆ patchWiseLayers_

bool patchWiseLayers_
private

shall I create patch-wise layers (true) O-topology layer (false)

Definition at line 73 of file boundaryLayers.H.

Referenced by boundaryLayers::addLayerForAllPatches(), boundaryLayers::addLayerForPatch(), boundaryLayers::checkTopologyOfBoundaryFaces(), and boundaryLayers::createOTopologyLayers().

◆ terminateLayersAtConcaveEdges_

bool terminateLayersAtConcaveEdges_
private

shall the layers be terminated at concave edges (true)

Definition at line 76 of file boundaryLayers.H.

Referenced by boundaryLayers::terminateLayersAtConcaveEdges().

◆ is2DMesh_

bool is2DMesh_
private

is it a 2D mesh

Definition at line 79 of file boundaryLayers.H.

Referenced by boundaryLayers::activate2DMode(), and boundaryLayers::findPatchesToBeTreatedTogether().

◆ patchNames_

wordList patchNames_
private

◆ patchTypes_

wordList patchTypes_
private

◆ treatedPatch_

boolList treatedPatch_
private

helper which contains information if a boundary layer has already been extruded for a given patch

Definition at line 89 of file boundaryLayers.H.

Referenced by boundaryLayers::activate2DMode(), boundaryLayers::addLayerForAllPatches(), boundaryLayers::addLayerForPatch(), boundaryLayers::addWrapperLayer(), boundaryLayers::createLayerCells(), and boundaryLayers::findPatchesToBeTreatedTogether().

◆ treatPatchesWithPatch_

List<DynList<label> > treatPatchesWithPatch_
private

◆ newLabelForVertex_

labelLongList newLabelForVertex_
private

◆ otherVrts_

std::map<label, std::map<std::pair<label, label>, label> > otherVrts_
private

map storing labels of new vertices created at node and corner vertices

Definition at line 99 of file boundaryLayers.H.

Referenced by boundaryLayers::addLayerForAllPatches(), boundaryLayers::addLayerForPatch(), boundaryLayers::createLayerCells(), and boundaryLayers::createNewVertices().

◆ patchKey_

labelList patchKey_
private

a key assigned to each patch. It is needed to search in otherVrts_

Definition at line 102 of file boundaryLayers.H.

Referenced by boundaryLayers::addLayerForAllPatches(), boundaryLayers::addLayerForPatch(), boundaryLayers::createLayerCells(), and boundaryLayers::createNewVertices().

◆ nPoints_

label nPoints_
private

◆ geometryAnalysed_

bool geometryAnalysed_
private

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