Public Member Functions | |
tetCreatorOctree (const meshOctree &octree, const IOdictionary &meshDict) | |
Construct from octree and IOdictionary. More... | |
~tetCreatorOctree () | |
const LongList< point > & | tetPoints () const |
const LongList< partTet > & | tets () const |
Private Member Functions | |
void | clearOut () |
deletes all pointer data More... | |
void | selectElements () |
find elements which will be used as mesh cells More... | |
void | createPointsAndAddressing () |
create tetPoints_ and necessary addressing More... | |
void | createFaceCentreLabels () |
create faceCentreLabelPtr_ More... | |
void | createTetsAroundEdges () |
create tetrahedra from faces, owner and neighbour More... | |
void | createTetsFromSplitFaces () |
create tetrahedra from split faces More... | |
void | createTetsFromFacesWithCentreNode () |
void | createTetsAroundSplitEdges () |
create tetrahedra from faces with split edges More... | |
void | checkAndAppendTet (const partTet) |
void | createTets () |
function containing the workflow More... | |
tetCreatorOctree (const tetCreatorOctree &) | |
Disallow default bitwise copy construct. More... | |
void | operator= (const tetCreatorOctree &) |
Disallow default bitwise assignment. More... | |
Private Attributes | |
meshOctreeAddressing | octreeCheck_ |
reference to the octree More... | |
LongList< point > | tetPoints_ |
points of the tetrahedrisation More... | |
LongList< partTet > | tets_ |
tetrahedra More... | |
List< labelLongList > | sortedLeaves_ |
octree leaves sorted according to their level More... | |
VRWGraph * | subNodeLabelsPtr_ |
node labels of vertices created inside split-hex boxes More... | |
labelList * | cubeLabelPtr_ |
cube centre label More... | |
VRWGraph * | faceCentreLabelPtr_ |
cube face label More... | |
bool | created_ |
are tets created or not More... | |
Static Private Attributes | |
static const meshOctreeCubeCoordinates | edgeCoordinates_ [12][4] |
helper for searching coordinates of cubes around an edge More... | |
static const label | faceCentreHelper_ [3][4] |
helper for finding face centres of cubes sharing an edge More... | |
Definition at line 53 of file tetCreatorOctree.H.
|
private |
Disallow default bitwise copy construct.
tetCreatorOctree | ( | const meshOctree & | octree, |
const IOdictionary & | meshDict | ||
) |
Construct from octree and IOdictionary.
Definition at line 154 of file tetCreatorOctree.C.
~tetCreatorOctree | ( | ) |
Definition at line 175 of file tetCreatorOctree.C.
References tetCreatorOctree::clearOut().
|
private |
deletes all pointer data
Definition at line 142 of file tetCreatorOctree.C.
References tetCreatorOctree::cubeLabelPtr_, Foam::deleteDemandDrivenData(), tetCreatorOctree::faceCentreLabelPtr_, tetCreatorOctree::sortedLeaves_, and tetCreatorOctree::subNodeLabelsPtr_.
Referenced by tetCreatorOctree::createTets(), and tetCreatorOctree::~tetCreatorOctree().
|
private |
find elements which will be used as mesh cells
store nodeLabels first
create cubeLabel list
Definition at line 41 of file tetCreatorOctreePointsAndAddressing.C.
References meshOctreeAddressing::boxType(), meshOctreeCubeCoordinates::centre(), tetCreatorOctree::cubeLabelPtr_, forAll, meshOctreeAddressing::MESHCELL, meshOctreeAddressing::nodeLabels(), meshOctree::numberOfLeaves(), meshOctreeAddressing::numberOfNodes(), meshOctreeAddressing::octree(), tetCreatorOctree::octreeCheck_, meshOctree::returnLeaf(), meshOctree::rootBox(), List::setSize(), VRWGraph::sizeOfRow(), tetCreatorOctree::tetPoints_, and meshOctreeCubeCoordinates::vertices().
Referenced by tetCreatorOctree::createPointsAndAddressing().
|
private |
create tetPoints_ and necessary addressing
store nodeLabels
create subNodeLabels
Definition at line 78 of file tetCreatorOctreePointsAndAddressing.C.
References Foam::abort(), meshOctreeCubeCoordinates::centre(), tetCreatorOctree::createFaceCentreLabels(), Foam::FatalError, forAll, forAllRow, k, meshOctreeCubeCoordinates::level(), meshOctreeAddressing::nodeLabels(), meshOctreeAddressing::nodeLeaves(), meshOctree::numberOfLeaves(), meshOctreeAddressing::octree(), tetCreatorOctree::octreeCheck_, meshOctree::returnLeaf(), meshOctree::rootBox(), tetCreatorOctree::selectElements(), VRWGraph::setRowSize(), VRWGraph::sizeOfRow(), tetCreatorOctree::sortedLeaves_, tetCreatorOctree::subNodeLabelsPtr_, tetCreatorOctree::tetPoints_, and meshOctreeCubeCoordinates::vertices().
Referenced by tetCreatorOctree::createTets().
|
private |
create faceCentreLabelPtr_
Definition at line 180 of file tetCreatorOctreePointsAndAddressing.C.
References tetCreatorOctree::cubeLabelPtr_, Foam::endl(), tetCreatorOctree::faceCentreLabelPtr_, meshOctreeCubeCoordinates::faceNodes_, meshOctree::findNeighboursInDirection(), forAll, forAllRow, Foam::Info, meshOctreeCubeCoordinates::level(), meshOctreeAddressing::nodeLabels(), meshOctreeAddressing::nodeLeaves(), meshOctreeAddressing::octree(), tetCreatorOctree::octreeCheck_, p, meshOctree::returnLeaf(), VRWGraph::setRowSize(), List::size(), FRWGraph< T, width >::size(), DynList< T, staticSize >::size(), VRWGraph::sizeOfRow(), tetCreatorOctree::tetPoints_, and Vector< scalar >::zero.
Referenced by tetCreatorOctree::createPointsAndAddressing().
|
private |
create tetrahedra from faces, owner and neighbour
find maximum refinement level of octree leaves attached to each vertex
start creating tets around edges which have both vertices at the same refinement level which is equal to the max refinement level of boxes incident to such edges
start checking edges
edge has both vertices at the same refinement level as the current leaf
store octree leaves at this edge they are all adjacent to the start point
adding face centre labels
create tets around this edge
Definition at line 41 of file tetCreatorOctreeTetsAroundEdges.C.
References Foam::abort(), DynList< T, staticSize >::append(), meshOctreeCubeBasic::coordinates(), tetCreatorOctree::cubeLabelPtr_, meshOctreeCubeCoordinates::edgeNodes_, Foam::endl(), tetCreatorOctree::faceCentreHelper_, tetCreatorOctree::faceCentreLabelPtr_, meshOctreeCubeCoordinates::faceNodes_, Foam::FatalError, FatalErrorIn, forAll, forAllReverse, forAllRow, Foam::Info, k, meshOctreeCubeCoordinates::level(), Foam::max(), meshOctreeAddressing::nodeLabels(), meshOctreeAddressing::nodeLeaves(), meshOctreeAddressing::numberOfNodes(), meshOctreeAddressing::octree(), tetCreatorOctree::octreeCheck_, Foam::pos(), meshOctree::positionsOfLeavesAtNodes(), meshOctreeCubeCoordinates::refineForPosition(), meshOctree::returnLeaf(), DynList< T, staticSize >::size(), VRWGraph::sizeOfRow(), tetCreatorOctree::sortedLeaves_, tetCreatorOctree::subNodeLabelsPtr_, tetCreatorOctree::tetPoints_, and tetCreatorOctree::tets_.
Referenced by tetCreatorOctree::createTets().
|
private |
create tetrahedra from split faces
create 4 tets
Definition at line 40 of file tetCreatorOctreeTetsFromSplitFaces.C.
References tetCreatorOctree::checkAndAppendTet(), tetCreatorOctree::cubeLabelPtr_, Foam::endl(), meshOctreeCubeCoordinates::faceNodes_, forAll, Foam::Info, meshOctreeAddressing::nodeLeaves(), tetCreatorOctree::octreeCheck_, and tetCreatorOctree::subNodeLabelsPtr_.
Referenced by tetCreatorOctree::createTets().
|
private |
create tetrahedra from faces which share at least one edge with a refined cube
start creating tets
create 6 tets for each possible combination there are 12 possible combinations
the are two possible combinations of edges for each face
allocate face centre labels
create centre labels
create face centre point
create tets connecting centroids
Definition at line 40 of file tetCreatorOctreeFromFacesWithCentreNode.C.
References tetCreatorOctree::checkAndAppendTet(), tetCreatorOctree::cubeLabelPtr_, meshOctreeCubeCoordinates::edgeFaces_, meshOctreeCubeCoordinates::edgeNodes_, Foam::endl(), tetCreatorOctree::faceCentreLabelPtr_, meshOctreeCubeCoordinates::faceEdges_, meshOctreeCubeCoordinates::faceNodes_, forAll, forAllRow, Foam::Info, k, meshOctreeAddressing::nodeLabels(), meshOctreeAddressing::nodeLeaves(), tetCreatorOctree::octreeCheck_, p, VRWGraph::setRowSize(), List::size(), VRWGraph::sizeOfRow(), tetCreatorOctree::subNodeLabelsPtr_, tetCreatorOctree::tetPoints_, and Vector< scalar >::zero.
Referenced by tetCreatorOctree::createTets().
|
private |
create tetrahedra from faces with split edges
find maximum refinement level of octree leaves attached to each vertex
start creating tets around split edges
start checking edges
the edge has at least one vertex at different ref level
store octree leaves at this edge they are all adjacent to the start point
add 4 tets
2. tet
3. tet
4. tet
add 4 tets
3. tet
4. tet
add the edge centre
Definition at line 41 of file tetCreatorOctreeTetsAroundSplitEdges.C.
References tetCreatorOctree::checkAndAppendTet(), tetCreatorOctree::cubeLabelPtr_, meshOctreeCubeCoordinates::edgeNodes_, Foam::endl(), tetCreatorOctree::faceCentreHelper_, tetCreatorOctree::faceCentreLabelPtr_, meshOctreeCubeCoordinates::faceNodes_, forAll, forAllReverse, forAllRow, Foam::Info, k, meshOctreeCubeCoordinates::level(), Foam::max(), n, meshOctreeAddressing::nodeLabels(), meshOctreeAddressing::nodeLeaves(), meshOctreeAddressing::numberOfNodes(), meshOctreeAddressing::octree(), tetCreatorOctree::octreeCheck_, meshOctree::returnLeaf(), VRWGraph::sizeOfRow(), tetCreatorOctree::sortedLeaves_, tetCreatorOctree::subNodeLabelsPtr_, tetCreatorOctree::tetPoints_, and tetCreatorOctree::tets_.
Referenced by tetCreatorOctree::createTets().
|
inlineprivate |
helper funtion which checks validity of a created tet and appends it if valid
Definition at line 33 of file tetCreatorOctreeI.H.
References Foam::endl(), Foam::Info, n, and tetCreatorOctree::tets_.
Referenced by tetCreatorOctree::createTetsAroundSplitEdges(), tetCreatorOctree::createTetsFromFacesWithCentreNode(), and tetCreatorOctree::createTetsFromSplitFaces().
|
private |
function containing the workflow
Definition at line 124 of file tetCreatorOctree.C.
References tetCreatorOctree::clearOut(), tetCreatorOctree::created_, tetCreatorOctree::createPointsAndAddressing(), tetCreatorOctree::createTetsAroundEdges(), tetCreatorOctree::createTetsAroundSplitEdges(), tetCreatorOctree::createTetsFromFacesWithCentreNode(), tetCreatorOctree::createTetsFromSplitFaces(), and tetCreatorOctree::sortedLeaves_.
|
private |
Disallow default bitwise assignment.
Definition at line 144 of file tetCreatorOctree.H.
References tetCreatorOctree::created_, Foam::exit(), Foam::FatalError, FatalErrorIn, and tetCreatorOctree::tetPoints_.
Referenced by voronoiMeshExtractor::createAddressing(), tetMeshExtractorOctree::createPoints(), and voronoiMeshExtractor::createPoints().
Definition at line 155 of file tetCreatorOctree.H.
References tetCreatorOctree::created_, Foam::exit(), Foam::FatalError, FatalErrorIn, and tetCreatorOctree::tets_.
Referenced by voronoiMeshExtractor::createAddressing(), voronoiMeshExtractor::createPoints(), and tetMeshExtractorOctree::createPolyMesh().
|
staticprivate |
helper for searching coordinates of cubes around an edge
Definition at line 57 of file tetCreatorOctree.H.
|
staticprivate |
helper for finding face centres of cubes sharing an edge
Definition at line 60 of file tetCreatorOctree.H.
Referenced by tetCreatorOctree::createTetsAroundEdges(), and tetCreatorOctree::createTetsAroundSplitEdges().
|
private |
reference to the octree
Definition at line 63 of file tetCreatorOctree.H.
Referenced by tetCreatorOctree::createFaceCentreLabels(), tetCreatorOctree::createPointsAndAddressing(), tetCreatorOctree::createTetsAroundEdges(), tetCreatorOctree::createTetsAroundSplitEdges(), tetCreatorOctree::createTetsFromFacesWithCentreNode(), tetCreatorOctree::createTetsFromSplitFaces(), and tetCreatorOctree::selectElements().
points of the tetrahedrisation
Definition at line 66 of file tetCreatorOctree.H.
Referenced by tetCreatorOctree::createFaceCentreLabels(), tetCreatorOctree::createPointsAndAddressing(), tetCreatorOctree::createTetsAroundEdges(), tetCreatorOctree::createTetsAroundSplitEdges(), tetCreatorOctree::createTetsFromFacesWithCentreNode(), tetCreatorOctree::selectElements(), and tetCreatorOctree::tetPoints().
tetrahedra
Definition at line 69 of file tetCreatorOctree.H.
Referenced by tetCreatorOctree::checkAndAppendTet(), tetCreatorOctree::createTetsAroundEdges(), tetCreatorOctree::createTetsAroundSplitEdges(), and tetCreatorOctree::tets().
|
private |
octree leaves sorted according to their level
Definition at line 72 of file tetCreatorOctree.H.
Referenced by tetCreatorOctree::clearOut(), tetCreatorOctree::createPointsAndAddressing(), tetCreatorOctree::createTets(), tetCreatorOctree::createTetsAroundEdges(), and tetCreatorOctree::createTetsAroundSplitEdges().
|
private |
node labels of vertices created inside split-hex boxes
Definition at line 75 of file tetCreatorOctree.H.
Referenced by tetCreatorOctree::clearOut(), tetCreatorOctree::createPointsAndAddressing(), tetCreatorOctree::createTetsAroundEdges(), tetCreatorOctree::createTetsAroundSplitEdges(), tetCreatorOctree::createTetsFromFacesWithCentreNode(), and tetCreatorOctree::createTetsFromSplitFaces().
|
private |
cube centre label
Definition at line 78 of file tetCreatorOctree.H.
Referenced by tetCreatorOctree::clearOut(), tetCreatorOctree::createFaceCentreLabels(), tetCreatorOctree::createTetsAroundEdges(), tetCreatorOctree::createTetsAroundSplitEdges(), tetCreatorOctree::createTetsFromFacesWithCentreNode(), tetCreatorOctree::createTetsFromSplitFaces(), and tetCreatorOctree::selectElements().
|
private |
cube face label
Definition at line 81 of file tetCreatorOctree.H.
Referenced by tetCreatorOctree::clearOut(), tetCreatorOctree::createFaceCentreLabels(), tetCreatorOctree::createTetsAroundEdges(), tetCreatorOctree::createTetsAroundSplitEdges(), and tetCreatorOctree::createTetsFromFacesWithCentreNode().
|
private |
are tets created or not
Definition at line 84 of file tetCreatorOctree.H.
Referenced by tetCreatorOctree::createTets(), tetCreatorOctree::tetPoints(), and tetCreatorOctree::tets().
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.