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 meshSurfaceEngine & | surfaceEngine () const |
Return const reference to meshSurfaceEngine. More... | |
const meshSurfacePartitioner & | surfacePartitioner () 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 | |
polyMeshGen & | mesh_ |
Reference to the mesh. More... | |
meshSurfaceEngine * | msePtr_ |
pointer to mesh surface engine More... | |
meshSurfacePartitioner * | meshPartitionerPtr_ |
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... | |
Definition at line 60 of file boundaryLayers.H.
|
private |
Enumerator | |
---|---|
NONE | |
PATCHNODE | |
EDGENODE | |
CORNERNODE | |
PARALLELBOUNDARY |
Definition at line 232 of file boundaryLayers.H.
|
private |
Disallow bitwise copy construct.
boundaryLayers | ( | polyMeshGen & | mesh | ) |
Construct from mesh reference.
Definition at line 535 of file boundaryLayers.C.
References forAll, PtrList::setSize(), and PtrList::size().
~boundaryLayers | ( | ) |
Definition at line 572 of file boundaryLayers.C.
References boundaryLayers::clearOut(), boundaryLayers::mesh_, UPstream::parRun(), and polyMeshGenModifier::removeUnusedVertices().
|
private |
Return const reference to meshSurfaceEngine.
Definition at line 54 of file boundaryLayers.C.
References boundaryLayers::mesh_, and boundaryLayers::msePtr_.
Referenced by boundaryLayers::activate2DMode(), boundaryLayers::addWrapperLayer(), boundaryLayers::checkTopologyOfBoundaryFaces(), boundaryLayers::createLayerCells(), boundaryLayers::createNewFacesAndCells(), boundaryLayers::createNewVertices(), boundaryLayers::findPatchesToBeTreatedTogether(), and boundaryLayers::surfacePartitioner().
|
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().
|
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().
|
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().
|
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().
|
private |
create new vertex
vertex is on an edge
normal vector is co-linear with that edge
limit distances
create new vertex
Definition at line 106 of file boundaryLayersCreateVertices.C.
References Foam::abort(), DynList< T, staticSize >::appendIfNotIn(), meshSurfaceEngine::boundaryFacePatches(), meshSurfaceEngine::boundaryFaces(), meshSurfaceEngine::boundaryPoints(), DynList< T, staticSize >::contains(), VRWGraph::contains(), Foam::help::distanceOfPointFromTheEdge(), Foam::endl(), Foam::exit(), f(), Foam::FatalError, FatalErrorIn, forAll, forAllRow, found, Foam::Info, Foam::help::isinf(), Foam::help::isnan(), Foam::mag(), Foam::max(), p, pFaces, meshSurfaceEngine::pointFaces(), meshSurfaceEngine::pointNormals(), meshSurfacePartitioner::pointPatches(), meshSurfaceEngine::pointPoints(), points, Foam::pos(), DynList< T, staticSize >::size(), and Vector< scalar >::zero.
Referenced by boundaryLayers::createNewVertices().
|
private |
create new vertices for the selected patches
the following is needed for parallel runs it is ugly, but must stay for now :(
swap coordinates of new and old points
Definition at line 317 of file boundaryLayersCreateVertices.C.
References Foam::abort(), LongList< T, Offset >::append(), meshSurfaceEngine::boundaryPoints(), boundaryLayers::createNewEdgeVerticesParallel(), boundaryLayers::createNewPartitionVerticesParallel(), boundaryLayers::createNewVertex(), Foam::endl(), Foam::FatalError, FatalErrorIn, boundaryLayers::findPatchVertices(), forAll, Foam::Info, boundaryLayers::mesh_, boundaryLayers::newLabelForVertex_, boundaryLayers::nPoints_, p, boundaryLayers::PARALLELBOUNDARY, UPstream::parRun(), meshSurfaceEngine::pointNormals(), meshSurfaceEngine::pointPoints(), points, polyMeshGenPoints::points(), and boundaryLayers::surfaceEngine().
Referenced by boundaryLayers::addLayerForAllPatches(), and boundaryLayers::addLayerForPatch().
|
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_.
|
private |
creates new vertices for vertices at parallel boundaries
exchange distances with other processors
Finally, create the points
Definition at line 686 of file boundaryLayersCreateVertices.C.
References meshSurfaceEngine::boundaryPoints(), meshSurfaceEngine::bpAtProcs(), Foam::help::exchangeMap(), forAll, forAllRow, meshSurfaceEngine::globalBoundaryPointLabel(), meshSurfaceEngine::globalToLocalBndPointAddressing(), Foam::help::isinf(), Foam::help::isnan(), Foam::mag(), UPstream::myProcNo(), p, UPstream::parRun(), meshSurfaceEngine::pointNormals(), meshSurfaceEngine::pointPoints(), points, Foam::returnReduce(), List::size(), and LongList< T, Offset >::size().
Referenced by boundaryLayers::createNewVertices().
|
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().
|
private |
create a layer of cells
this is used for parallel runs
create lists for new boundary faces
create storage for new cells
create layer cells and store boundary faces
store boundary face
create parallel face
create quad faces
check if the face is at the boundary of the treated partitions
create mesh modifier
delete meshSurfaceEngine
Definition at line 45 of file boundaryLayersFacesAndCells.C.
References polyMeshGenModifier::addCells(), polyMeshGenCells::addressingData(), LongList< T, Offset >::append(), VRWGraphList::appendGraph(), VRWGraph::appendList(), polyMeshGenModifier::boundariesAccess(), meshSurfaceEngine::boundaryFacePatches(), meshSurfaceEngine::boundaryFaces(), polyMeshGenCells::cells(), VRWGraphList::clear(), boundaryLayers::clearOut(), boundaryLayers::createNewFacesParallel(), meshSurfaceEngine::edgeFaces(), Foam::endl(), f(), meshSurfaceEngine::faceEdges(), meshSurfaceEngine::faceOwners(), forAll, Foam::Info, boundaryLayers::mesh_, boundaryLayers::newLabelForVertex_, meshSurfaceEngine::otherEdgeFacePatch(), UPstream::parRun(), boundaryLayers::patchNames_, boundaryLayers::patchTypes_, polyMeshGenModifier::reorderBoundaryFaces(), polyMeshGenModifier::replaceBoundary(), List::setSize(), cellListPMG::size(), VRWGraphList::size(), VRWGraph::sizeOfRow(), and boundaryLayers::surfaceEngine().
Referenced by boundaryLayers::addLayerForPatch(), and boundaryLayers::addWrapperLayer().
|
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().
|
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().
|
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().
helper function finding a new face label for multiply extruded nodes
Definition at line 38 of file boundaryLayersI.H.
Referenced by boundaryLayers::createLayerCells().
|
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().
|
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().
|
private |
create a bnd layer for a given patch
Definition at line 494 of file boundaryLayers.C.
References polyMeshGenFaces::boundaries(), List::clear(), boundaryLayers::createNewFacesAndCells(), boundaryLayers::createNewVertices(), forAll, boundaryLayers::mesh_, boundaryLayers::newLabelForVertex_, boundaryLayers::nPoints_, boundaryLayers::otherVrts_, boundaryLayers::patchKey_, boundaryLayers::patchWiseLayers_, Foam::returnReduce(), LongList< T, Offset >::setSize(), PtrList::size(), boundaryLayers::treatedPatch_, and boundaryLayers::treatPatchesWithPatch_.
Referenced by boundaryLayers::addLayerForAllPatches(), boundaryLayers::addLayerForPatch(), voronoiMeshGenerator::generateBoudaryLayers(), tetMeshGenerator::generateBoundaryLayers(), and generateLayer().
|
inlineprivate |
delete meshSurfaceEngine
Definition at line 225 of file boundaryLayers.H.
References Foam::deleteDemandDrivenData(), boundaryLayers::meshPartitionerPtr_, and boundaryLayers::msePtr_.
Referenced by boundaryLayers::addWrapperLayer(), boundaryLayers::checkTopologyOfBoundaryFaces(), boundaryLayers::createLayerCells(), boundaryLayers::createNewFacesAndCells(), and boundaryLayers::~boundaryLayers().
|
private |
Disallow bitwise assignment.
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_.
void createOTopologyLayers | ( | ) |
create O-topology layers (used as flag)
Definition at line 594 of file boundaryLayers.C.
References boundaryLayers::patchWiseLayers_.
Referenced by boundaryLayers::addWrapperLayer().
void terminateLayersAtConcaveEdges | ( | ) |
terminate boundary layers at concave edges (used as a flag)
Definition at line 599 of file boundaryLayers.C.
References boundaryLayers::terminateLayersAtConcaveEdges_.
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().
void addLayerForAllPatches | ( | ) |
add layers for all patches
avoid generating bnd layer at empty patches in case of 2D meshing
create bnd layer vertices
create bnd layer cells
Definition at line 653 of file boundaryLayers.C.
References boundaryLayers::addLayerForPatch(), polyMeshGenFaces::boundaries(), List::clear(), boundaryLayers::createLayerCells(), boundaryLayers::createNewVertices(), boundaryLayers::findPatchesToBeTreatedTogether(), forAll, boundaryLayers::geometryAnalysed_, boundaryLayers::mesh_, boundaryLayers::newLabelForVertex_, boundaryLayers::nPoints_, boundaryLayers::otherVrts_, boundaryLayers::patchKey_, boundaryLayers::patchWiseLayers_, LongList< T, Offset >::setSize(), and boundaryLayers::treatedPatch_.
Referenced by voronoiMeshGenerator::generateBoudaryLayers(), cartesian2DMeshGenerator::generateBoundaryLayers(), tetMeshGenerator::generateBoundaryLayers(), cartesianMeshGenerator::generateBoundaryLayers(), and generateLayer().
void addWrapperLayer | ( | ) |
add wrapper layer this function is intended for usage before surface recovery
delete surface engine
Definition at line 39 of file boundaryLayersWrapperLayer.C.
References polyMeshGenFaces::boundaries(), meshSurfaceEngine::boundaryPoints(), boundaryLayers::clearOut(), boundaryLayers::createNewFacesAndCells(), boundaryLayers::createOTopologyLayers(), forAll, boundaryLayers::mesh_, boundaryLayers::nPoints_, points, polyMeshGenPoints::points(), List::size(), boundaryLayers::surfaceEngine(), and boundaryLayers::treatedPatch_.
|
private |
Reference to the mesh.
Definition at line 63 of file boundaryLayers.H.
Referenced by boundaryLayers::activate2DMode(), boundaryLayers::addLayerForAllPatches(), boundaryLayers::addLayerForPatch(), boundaryLayers::addWrapperLayer(), boundaryLayers::checkTopologyOfBoundaryFaces(), boundaryLayers::createLayerCells(), boundaryLayers::createNewFacesAndCells(), boundaryLayers::createNewVertices(), boundaryLayers::findPatchesToBeTreatedTogether(), boundaryLayers::surfaceEngine(), and boundaryLayers::~boundaryLayers().
|
mutableprivate |
pointer to mesh surface engine
Definition at line 66 of file boundaryLayers.H.
Referenced by boundaryLayers::clearOut(), and boundaryLayers::surfaceEngine().
|
mutableprivate |
poiner to meshSurfacePartitioner
Definition at line 69 of file boundaryLayers.H.
Referenced by boundaryLayers::clearOut(), and boundaryLayers::surfacePartitioner().
|
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().
|
private |
shall the layers be terminated at concave edges (true)
Definition at line 76 of file boundaryLayers.H.
Referenced by boundaryLayers::terminateLayersAtConcaveEdges().
|
private |
is it a 2D mesh
Definition at line 79 of file boundaryLayers.H.
Referenced by boundaryLayers::activate2DMode(), and boundaryLayers::findPatchesToBeTreatedTogether().
|
private |
patch names
Definition at line 82 of file boundaryLayers.H.
Referenced by boundaryLayers::checkTopologyOfBoundaryFaces(), boundaryLayers::createLayerCells(), boundaryLayers::createNewFacesAndCells(), and boundaryLayers::findPatchesToBeTreatedTogether().
|
private |
patch types
Definition at line 85 of file boundaryLayers.H.
Referenced by boundaryLayers::checkTopologyOfBoundaryFaces(), boundaryLayers::createLayerCells(), and boundaryLayers::createNewFacesAndCells().
|
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().
extrude patches with patch
Definition at line 92 of file boundaryLayers.H.
Referenced by boundaryLayers::activate2DMode(), boundaryLayers::addLayerForPatch(), boundaryLayers::checkTopologyOfBoundaryFaces(), boundaryLayers::createLayerCells(), boundaryLayers::createNewVertices(), and boundaryLayers::findPatchesToBeTreatedTogether().
|
private |
label of a new node (helper)
Definition at line 95 of file boundaryLayers.H.
Referenced by boundaryLayers::addLayerForAllPatches(), boundaryLayers::addLayerForPatch(), boundaryLayers::createNewFacesAndCells(), and boundaryLayers::createNewVertices().
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().
|
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().
|
private |
number of vertices in the mesh
Definition at line 105 of file boundaryLayers.H.
Referenced by boundaryLayers::addLayerForAllPatches(), boundaryLayers::addLayerForPatch(), boundaryLayers::addWrapperLayer(), boundaryLayers::createLayerCells(), boundaryLayers::createNewVertices(), and boundaryLayers::findPatchesToBeTreatedTogether().
|
private |
has the geometry been analysed
Definition at line 108 of file boundaryLayers.H.
Referenced by boundaryLayers::addLayerForAllPatches(), boundaryLayers::addLayerForPatch(), and boundaryLayers::findPatchesToBeTreatedTogether().
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.