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

Public Member Functions

 meshOctreeInsideOutside (meshOctree &octree)
 Construct from octree. More...
 
 ~meshOctreeInsideOutside ()
 

Private Member Functions

void initialiseBoxes ()
 initialise octree boxes More...
 
void frontalMarking ()
 frontal marking algorithm More...
 
void markOutsideCubes ()
 mark OUTSIDE octree boxes More...
 
void reviseDataBoxes ()
 revise DATA boxes More...
 
void markInsideCubes ()
 mark INSIDE octree boxes More...
 

Private Attributes

meshOctreeModifier octreeModifier_
 meshOctreeAddressing More...
 
labelLongList cubeGroup_
 group for a given leaf More...
 
VRWGraph cubesInGroup_
 cubes belonging to each group of octree boxes More...
 
std::map< label, directiongroupType_
 type for a group More...
 
VRWGraph boundaryDATACubes_
 boundary DATA boxes for a given group More...
 
boolList hasOutsideNeighbour_
 flag for DATA boxes next to the OUTSIDE boxes More...
 
labelLongList communicationCubes_
 label of cubes at processor boundaries More...
 
VRWGraph neighbouringGroups_
 labels of cubes marked by different threads More...
 

Detailed Description

Definition at line 48 of file meshOctreeInsideOutside.H.

Constructor & Destructor Documentation

◆ meshOctreeInsideOutside()

◆ ~meshOctreeInsideOutside()

Definition at line 109 of file meshOctreeInsideOutside.C.

Member Function Documentation

◆ initialiseBoxes()

void initialiseBoxes ( )
private

initialise octree boxes

Definition at line 115 of file meshOctreeInsideOutside.C.

References meshOctreeCubeBasic::DATA, forAll, meshOctreeModifier::leavesAccess(), meshOctreeInsideOutside::octreeModifier_, and meshOctreeCubeBasic::UNKNOWN.

Here is the call graph for this function:

◆ frontalMarking()

void frontalMarking ( )
private

◆ markOutsideCubes()

void markOutsideCubes ( )
private

mark OUTSIDE octree boxes

make sure that groups created by different threads have the same information

go through the list of communicationCubes and send the ones which are marked as outside

go through the list of received coordinates and check if any local boxes are their neighbours. If a local neighbour is a DATA box set the hasOutsideNeighbour_ flag to true. If the local neighbour is of UNKNOWN type set it to OUTSIDE.

set OUTSIDE type to the cubes in OUTSIDE groups

set the cube type to OUTSIDE

set true to the collected DATA boxes

Definition at line 339 of file meshOctreeInsideOutside.C.

References LongList< T, Offset >::append(), meshOctreeInsideOutside::boundaryDATACubes_, meshOctreeInsideOutside::communicationCubes_, meshOctreeInsideOutside::cubeGroup_, meshOctreeInsideOutside::cubesInGroup_, meshOctree::exchangeRequestsWithNeighbourProcessors(), meshOctree::findNeighboursForLeaf(), forAll, forAllRow, meshOctreeInsideOutside::groupType_, meshOctreeInsideOutside::hasOutsideNeighbour_, meshOctreeModifier::leavesAccess(), meshOctreeInsideOutside::neighbouringGroups_, meshOctreeModifier::octree(), meshOctreeInsideOutside::octreeModifier_, meshOctreeCubeBasic::OUTSIDE, Foam::reduce(), and meshOctreeCubeBasic::UNKNOWN.

Here is the call graph for this function:

◆ reviseDataBoxes()

void reviseDataBoxes ( )
private

◆ markInsideCubes()

void markInsideCubes ( )
private

mark INSIDE octree boxes

make INSIDE groups for which it is possible

mark INSIDE groups created by different threads

the code for exchanging data between different processes

send coordinates of boxes with hasOutsideNeighbour_ flag and the boxes which have been marked as INSIDE to the neighbouring procs

go through the list of communicationCubes and send the ones which are marked as outside

go through the list of received coordinates and check if any local boxes are their neighbours. If a local neighbour is a DATA box set the hasOutsideNeighbour_ flag to true. If the local neighbour is of UNKNOWN type set it to OUTSIDE.

set INSIDE type to the cubes in INSIDE groups

set the cube type to OUTSIDE

Definition at line 635 of file meshOctreeInsideOutside.C.

References LongList< T, Offset >::append(), meshOctreeInsideOutside::boundaryDATACubes_, LongList< T, Offset >::clear(), meshOctreeInsideOutside::communicationCubes_, coordinates(), meshOctreeInsideOutside::cubeGroup_, meshOctreeInsideOutside::cubesInGroup_, meshOctree::exchangeRequestsWithNeighbourProcessors(), meshOctree::findNeighboursForLeaf(), forAll, forAllRow, meshOctreeInsideOutside::groupType_, meshOctreeInsideOutside::hasOutsideNeighbour_, meshOctreeCubeBasic::INSIDE, meshOctreeModifier::leavesAccess(), meshOctreeInsideOutside::neighbouringGroups_, meshOctree::neiProcs(), meshOctreeModifier::octree(), meshOctreeInsideOutside::octreeModifier_, meshOctreeCubeBasic::OTHERPROC, Foam::reduce(), List::size(), and meshOctreeCubeBasic::UNKNOWN.

Here is the call graph for this function:

Field Documentation

◆ octreeModifier_

meshOctreeModifier octreeModifier_
private

◆ cubeGroup_

labelLongList cubeGroup_
private

◆ cubesInGroup_

VRWGraph cubesInGroup_
private

◆ groupType_

std::map<label, direction> groupType_
private

◆ boundaryDATACubes_

VRWGraph boundaryDATACubes_
private

◆ hasOutsideNeighbour_

boolList hasOutsideNeighbour_
private

◆ communicationCubes_

labelLongList communicationCubes_
private

◆ neighbouringGroups_

VRWGraph neighbouringGroups_
private

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