walberla::blockforest::SetupBlockForest Class Reference

#include <SetupBlockForest.h>

+ Inheritance diagram for walberla::blockforest::SetupBlockForest:

Classes

class  const_iterator
 
class  iterator
 
class  RootBlockAABB
 

Public Types

using TargetProcessAssignmentFunction = std::function< uint_t(SetupBlockForest &, const uint_t, const memory_t)>
 
using RootBlockExclusionFunction = std::function< void(std::vector< uint8_t > &, const RootBlockAABB &)>
 
using BlockExclusionFunction = std::function< bool(const SetupBlock &)>
 
using RefinementSelectionFunction = std::function< void(SetupBlockForest &)>
 
using WorkloadMemorySUIDAssignmentFunction = std::function< void(SetupBlockForest &)>
 
using CommunicationPairs = std::vector< std::pair< const SetupBlock *, const SetupBlock * > >
 
using CommunicationWeights = std::vector< real_t >
 
using CommunicationWeightFunction = std::function< void(const CommunicationPairs &, CommunicationWeights &)>
 

Public Member Functions

 SetupBlockForest ()
 
 ~SetupBlockForest ()
 
const AABB & getDomain () const
 
real_t getRootBlockXSize () const
 
real_t getRootBlockYSize () const
 
real_t getRootBlockZSize () const
 
real_t getRootBlockSize (const uint_t index) const
 
uint_t getXSize () const
 
uint_t getYSize () const
 
uint_t getZSize () const
 
uint_t getSize (const uint_t index) const
 
bool isXPeriodic () const
 
bool isYPeriodic () const
 
bool isZPeriodic () const
 
bool isPeriodic (const uint_t index) const
 
uint_t getDepth () const
 
uint_t getNumberOfLevels () const
 
uint_t getMinLevel () const
 
uint_t getMaxLevel () const
 
uint_t getTreeIdDigits () const
 
uint_t getBlockIdBytes () const
 
uint_t getNumberOfTrees () const
 
uint_t getNumberOfRootBlocks () const
 
uint_t getNumberOfBlocks () const
 
uint_t getNumberOfBlocks (const uint_t level) const
 
const_iterator begin () const
 
const_iterator end () const
 
iterator begin ()
 
iterator end ()
 
const SetupBlockgetFirstBlock () const
 
SetupBlockgetFirstBlock ()
 
const SetupBlockgetNextBlock (const SetupBlock *block) const
 
SetupBlockgetNextBlock (const SetupBlock *block)
 
const SetupBlockgetTree (const uint_t treeIndex) const
 
SetupBlockgetTree (const uint_t treeIndex)
 
const SetupBlockgetRootBlock (const uint_t treeIndex) const
 
SetupBlockgetRootBlock (const uint_t treeIndex)
 
const SetupBlockgetRootBlock (const uint_t x, const uint_t y, const uint_t z) const
 
SetupBlockgetRootBlock (const uint_t x, const uint_t y, const uint_t z)
 
const SetupBlockgetBlock (const BlockID &id) const
 
const SetupBlockgetBlock (const real_t px, const real_t py, const real_t pz) const
 
SetupBlockgetBlock (const real_t px, const real_t py, const real_t pz)
 
void getBlocks (std::vector< const SetupBlock * > &blocks) const
 
void getBlocks (std::vector< SetupBlock * > &blocks)
 
void getBlocks (std::vector< const SetupBlock * > &blocks, const uint_t level) const
 
void getBlocks (std::vector< SetupBlock * > &blocks, const uint_t level)
 
void getMortonOrder (std::vector< SetupBlock * > &blocks)
 
void getHilbertOrder (std::vector< SetupBlock * > &blocks)
 
void getProcessSpecificBlocks (std::vector< const SetupBlock * > &blocks, const uint_t process) const
 
void getBlocksOverlappedByAABB (std::vector< SetupBlock * > &blocks, const AABB &aabb)
 
void getBlocks (std::vector< SetupBlock * > &blocks, const uint_t xmin, const uint_t ymin, const uint_t zmin, const uint_t xmax, const uint_t ymax, const uint_t zmax)
 
uint_t mapForestCoordinatesToTreeIndex (const uint_t x, const uint_t y, const uint_t z) const
 
void mapTreeIndexToForestCoordinates (const uint_t treeIndex, uint_t &x, uint_t &y, uint_t &z) const
 
void mapPointToPeriodicDomain (real_t &px, real_t &py, real_t &pz) const
 
uint_t mapPointToTreeIndex (const real_t px, const real_t py, const real_t pz) const
 
void mapAABBToBoundingForestCoordinates (const AABB &aabb, uint_t(&min)[3], uint_t(&max)[3]) const
 
void getRootBlockAABB (AABB &aabb, const uint_t x, const uint_t y, const uint_t z) const
 
void getRootBlockAABB (AABB &aabb, const uint_t treeIndex) const
 
bool atDomainXMinBorder (const SetupBlock &block) const
 Returns true if the block 'block' is located at the lower x-axis border of the domain. More...
 
bool atDomainXMaxBorder (const SetupBlock &block) const
 Returns true if the block 'block' is located at the upper x-axis border of the domain. More...
 
bool atDomainYMinBorder (const SetupBlock &block) const
 Returns true if the block 'block' is located at the lower y-axis border of the domain. More...
 
bool atDomainYMaxBorder (const SetupBlock &block) const
 Returns true if the block 'block' is located at the upper y-axis border of the domain. More...
 
bool atDomainZMinBorder (const SetupBlock &block) const
 Returns true if the block 'block' is located at the lower z-axis border of the domain. More...
 
bool atDomainZMaxBorder (const SetupBlock &block) const
 Returns true if the block 'block' is located at the upper z-axis border of the domain. More...
 
bool atDomainMinBorder (const uint_t index, const SetupBlock &block) const
 
bool atDomainMaxBorder (const uint_t index, const SetupBlock &block) const
 
void init (const AABB &domain, const uint_t xSize, const uint_t ySize, const uint_t zSize, const bool xPeriodic, const bool yPeriodic, const bool zPeriodic, const Set< SUID > &selector=Set< SUID >::emptySet())
 
void assignAllBlocksToRootProcess ()
 
void balanceLoad (const TargetProcessAssignmentFunction &function, const uint_t numberOfProcesses, const real_t minBufferProcessesFraction=real_t(0), const memory_t perProcessMemoryLimit=memory_t(0), const bool reorderProcessesByBFS=false, const bool insertBufferProcesses=false)
 
void balanceLoad (const TargetProcessAssignmentFunction &function, const uint_t numberOfProcesses, const uint_t numberOfBufferProcesses, const memory_t perProcessMemoryLimit=memory_t(0), const bool reorderProcessesByBFS=false, const bool insertBufferProcesses=false)
 
void calculateProcessDistribution_Default (const uint_t numberOfProcesses, const memory_t memoryLimit, const std::string &sfcMethod=std::string("hilbert"), const uint_t sfcIterations=10, const bool sortByLevel=false, const GlobalLoadBalancing::MetisConfiguration< SetupBlock > &metisConfig=GlobalLoadBalancing::MetisConfiguration< SetupBlock >(), const bool reorderProcessesByBFS=false, const bool insertBufferProcesses=false, const real_t bufferProcessesFraction=real_c(0))
 
void calculateProcessDistribution_LevelwiseMetis (const uint_t numberOfProcesses, const bool reorderProcessesByBFS=false, const CommunicationWeightFunction &communicationWeightFunction=NullCommunicationWeightFunction)
 
void calculateProcessDistribution_Greedy (const uint_t numberOfProcesses, const memory_t memoryLimit, const bool reorderProcessesByBFS=false, const bool insertBufferProcesses=false, const real_t bufferProcessesFraction=real_c(0))
 
uint_t getNumberOfProcesses () const
 
uint_t getNumberOfWorkerProcesses () const
 
uint_t getNumberOfBufferProcesses () const
 
uint_t getProcessIdBytes () const
 
bool insertBuffersIntoProcessNetwork () const
 
bool isWorkerProcess (const uint_t process) const
 
bool isBufferProcess (const uint_t process) const
 
void addRootBlockExclusionFunction (RootBlockExclusionFunction function, const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet(), const std::string &identifier=std::string())
 
void addBlockExclusionFunction (BlockExclusionFunction function, const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet(), const std::string &identifier=std::string())
 
void addRefinementSelectionFunction (RefinementSelectionFunction function, const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet(), const std::string &identifier=std::string())
 
void addWorkloadMemorySUIDAssignmentFunction (WorkloadMemorySUIDAssignmentFunction function, const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet(), const std::string &identifier=std::string())
 
void saveToFile (const char *const filename) const
 For a description of the file format see BlockForestFile.h. More...
 
void writeVTKOutput (const std::string &filestem) const
 
void writeCSV (const std::string &filestem) const
 
void toStream (std::ostream &os) const
 
std::string toString () const
 

Static Public Member Functions

static void NullCommunicationWeightFunction (const CommunicationPairs &, CommunicationWeights &)
 
static void mapTreeIndexToForestCoordinates (const uint_t treeIndex, const uint_t xSize, const uint_t ySize, uint_t &x, uint_t &y, uint_t &z)
 
static void getRootBlockAABB (AABB &aabb, const AABB &domain, const real_t rootBlockXSize, const real_t rootBlockYSize, const real_t rootBlockZSize, const uint_t xSize, const uint_t ySize, const uint_t zSize, const uint_t x, const uint_t y, const uint_t z)
 

Private Member Functions

void createForest (const Set< SUID > &selector)
 
void initWorkloadMemorySUID (const Set< SUID > &selector)
 
void updateNeighborhood (std::set< SetupBlock * > &blocksToUpdate)
 
void updateNeighborhood (std::vector< SetupBlock * > &blocks)
 
void createNeighborhood ()
 
void balanceLoadHelper (const TargetProcessAssignmentFunction &function, const uint_t numberOfProcesses, const uint_t numberOfBufferProcesses, const memory_t perProcessMemoryLimit, const bool reorderProcessesByBFS, const bool insertBufferProcesses)
 
void calculateProcessDistributionFinalization (const bool reorderProcessesByBFS=false, const bool insertBufferProcesses=false)
 
void checkNeighborhoodConsistency () const
 
- Private Member Functions inherited from walberla::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 

Static Private Member Functions

static SetupBlockmapPointToBlock (SetupBlock *const block, const real_t px, const real_t py, const real_t pz)
 

Private Attributes

std::vector< SetupBlock * > forest_
 
uint_t numberOfRootBlocks_ { 0 }
 
uint_t numberOfBlocks_ { 0 }
 
AABB domain_
 
real_t rootBlockSize_ [3]
 
uint_t size_ [3]
 
bool periodic_ [3]
 
uint_t depth_ { 0 }
 
uint_t treeIdDigits_ { 0 }
 
uint_t numberOfProcesses_ { 0 }
 
uint_t numberOfBufferProcesses_ { 0 }
 
bool insertBuffersIntoProcessNetwork_ { false }
 
std::vector< std::vector< SetupBlock * > > blockDistribution_
 
selectable::SetSelectableObject< RootBlockExclusionFunction, SUID > rootBlockExclusionFunctions_
 
selectable::SetSelectableObject< BlockExclusionFunction, SUID > blockExclusionFunctions_
 
selectable::SetSelectableObject< RefinementSelectionFunction, SUID > refinementSelectionFunctions_
 
selectable::SetSelectableObject< WorkloadMemorySUIDAssignmentFunction, SUID > workloadMemorySUIDAssignmentFunctions_
 

Friends

class const_iterator
 
class iterator
 

Member Typedef Documentation

◆ BlockExclusionFunction

◆ CommunicationPairs

using walberla::blockforest::SetupBlockForest::CommunicationPairs = std::vector<std::pair<const SetupBlock *, const SetupBlock *> >

◆ CommunicationWeightFunction

◆ CommunicationWeights

◆ RefinementSelectionFunction

◆ RootBlockExclusionFunction

using walberla::blockforest::SetupBlockForest::RootBlockExclusionFunction = std::function<void (std::vector<uint8_t> &, const RootBlockAABB &)>

◆ TargetProcessAssignmentFunction

◆ WorkloadMemorySUIDAssignmentFunction

Constructor & Destructor Documentation

◆ SetupBlockForest()

walberla::blockforest::SetupBlockForest::SetupBlockForest ( )
inline

◆ ~SetupBlockForest()

walberla::blockforest::SetupBlockForest::~SetupBlockForest ( )
inline

Member Function Documentation

◆ addBlockExclusionFunction()

void walberla::blockforest::SetupBlockForest::addBlockExclusionFunction ( BlockExclusionFunction  function,
const Set< SUID > &  requiredSelectors = Set<SUID>::emptySet(),
const Set< SUID > &  incompatibleSelectors = Set<SUID>::emptySet(),
const std::string &  identifier = std::string() 
)
inline

◆ addRefinementSelectionFunction()

void walberla::blockforest::SetupBlockForest::addRefinementSelectionFunction ( RefinementSelectionFunction  function,
const Set< SUID > &  requiredSelectors = Set<SUID>::emptySet(),
const Set< SUID > &  incompatibleSelectors = Set<SUID>::emptySet(),
const std::string &  identifier = std::string() 
)
inline

◆ addRootBlockExclusionFunction()

void walberla::blockforest::SetupBlockForest::addRootBlockExclusionFunction ( RootBlockExclusionFunction  function,
const Set< SUID > &  requiredSelectors = Set<SUID>::emptySet(),
const Set< SUID > &  incompatibleSelectors = Set<SUID>::emptySet(),
const std::string &  identifier = std::string() 
)
inline

◆ addWorkloadMemorySUIDAssignmentFunction()

void walberla::blockforest::SetupBlockForest::addWorkloadMemorySUIDAssignmentFunction ( WorkloadMemorySUIDAssignmentFunction  function,
const Set< SUID > &  requiredSelectors = Set<SUID>::emptySet(),
const Set< SUID > &  incompatibleSelectors = Set<SUID>::emptySet(),
const std::string &  identifier = std::string() 
)
inline

◆ assignAllBlocksToRootProcess()

void walberla::blockforest::SetupBlockForest::assignAllBlocksToRootProcess ( )

◆ atDomainMaxBorder()

bool walberla::blockforest::SetupBlockForest::atDomainMaxBorder ( const uint_t  index,
const SetupBlock block 
) const
inline

◆ atDomainMinBorder()

bool walberla::blockforest::SetupBlockForest::atDomainMinBorder ( const uint_t  index,
const SetupBlock block 
) const
inline

◆ atDomainXMaxBorder()

bool walberla::blockforest::SetupBlockForest::atDomainXMaxBorder ( const SetupBlock block) const
inline

Returns true if the block 'block' is located at the upper x-axis border of the domain.

◆ atDomainXMinBorder()

bool walberla::blockforest::SetupBlockForest::atDomainXMinBorder ( const SetupBlock block) const
inline

Returns true if the block 'block' is located at the lower x-axis border of the domain.

◆ atDomainYMaxBorder()

bool walberla::blockforest::SetupBlockForest::atDomainYMaxBorder ( const SetupBlock block) const
inline

Returns true if the block 'block' is located at the upper y-axis border of the domain.

◆ atDomainYMinBorder()

bool walberla::blockforest::SetupBlockForest::atDomainYMinBorder ( const SetupBlock block) const
inline

Returns true if the block 'block' is located at the lower y-axis border of the domain.

◆ atDomainZMaxBorder()

bool walberla::blockforest::SetupBlockForest::atDomainZMaxBorder ( const SetupBlock block) const
inline

Returns true if the block 'block' is located at the upper z-axis border of the domain.

◆ atDomainZMinBorder()

bool walberla::blockforest::SetupBlockForest::atDomainZMinBorder ( const SetupBlock block) const
inline

Returns true if the block 'block' is located at the lower z-axis border of the domain.

◆ balanceLoad() [1/2]

void walberla::blockforest::SetupBlockForest::balanceLoad ( const TargetProcessAssignmentFunction function,
const uint_t  numberOfProcesses,
const real_t  minBufferProcessesFraction = real_t(0),
const memory_t  perProcessMemoryLimit = memory_t(0),
const bool  reorderProcessesByBFS = false,
const bool  insertBufferProcesses = false 
)

◆ balanceLoad() [2/2]

void walberla::blockforest::SetupBlockForest::balanceLoad ( const TargetProcessAssignmentFunction function,
const uint_t  numberOfProcesses,
const uint_t  numberOfBufferProcesses,
const memory_t  perProcessMemoryLimit = memory_t(0),
const bool  reorderProcessesByBFS = false,
const bool  insertBufferProcesses = false 
)

◆ balanceLoadHelper()

void walberla::blockforest::SetupBlockForest::balanceLoadHelper ( const TargetProcessAssignmentFunction function,
const uint_t  numberOfProcesses,
const uint_t  numberOfBufferProcesses,
const memory_t  perProcessMemoryLimit,
const bool  reorderProcessesByBFS,
const bool  insertBufferProcesses 
)
private

◆ begin() [1/2]

iterator walberla::blockforest::SetupBlockForest::begin ( )
inline

◆ begin() [2/2]

SetupBlockForest::iterator walberla::blockforest::SetupBlockForest::begin ( ) const
inline

◆ calculateProcessDistribution_Default()

void walberla::blockforest::SetupBlockForest::calculateProcessDistribution_Default ( const uint_t  numberOfProcesses,
const memory_t  memoryLimit,
const std::string &  sfcMethod = std::string( "hilbert" ),
const uint_t  sfcIterations = 10,
const bool  sortByLevel = false,
const GlobalLoadBalancing::MetisConfiguration< SetupBlock > &  metisConfig = GlobalLoadBalancing::MetisConfigurationSetupBlock >(),
const bool  reorderProcessesByBFS = false,
const bool  insertBufferProcesses = false,
const real_t  bufferProcessesFraction = real_c(0) 
)

◆ calculateProcessDistribution_Greedy()

void walberla::blockforest::SetupBlockForest::calculateProcessDistribution_Greedy ( const uint_t  numberOfProcesses,
const memory_t  memoryLimit,
const bool  reorderProcessesByBFS = false,
const bool  insertBufferProcesses = false,
const real_t  bufferProcessesFraction = real_c(0) 
)

◆ calculateProcessDistribution_LevelwiseMetis()

void walberla::blockforest::SetupBlockForest::calculateProcessDistribution_LevelwiseMetis ( const uint_t  numberOfProcesses,
const bool  reorderProcessesByBFS = false,
const CommunicationWeightFunction communicationWeightFunction = NullCommunicationWeightFunction 
)

◆ calculateProcessDistributionFinalization()

void walberla::blockforest::SetupBlockForest::calculateProcessDistributionFinalization ( const bool  reorderProcessesByBFS = false,
const bool  insertBufferProcesses = false 
)
private

◆ checkNeighborhoodConsistency()

void walberla::blockforest::SetupBlockForest::checkNeighborhoodConsistency ( ) const
private

◆ createForest()

void walberla::blockforest::SetupBlockForest::createForest ( const Set< SUID > &  selector)
private

◆ createNeighborhood()

void walberla::blockforest::SetupBlockForest::createNeighborhood ( )
private

◆ end() [1/2]

iterator walberla::blockforest::SetupBlockForest::end ( )
inline

◆ end() [2/2]

const_iterator walberla::blockforest::SetupBlockForest::end ( ) const
inline

◆ getBlock() [1/3]

const SetupBlock * walberla::blockforest::SetupBlockForest::getBlock ( const BlockID id) const

◆ getBlock() [2/3]

SetupBlock * walberla::blockforest::SetupBlockForest::getBlock ( const real_t  px,
const real_t  py,
const real_t  pz 
)
inline

◆ getBlock() [3/3]

const SetupBlock * walberla::blockforest::SetupBlockForest::getBlock ( const real_t  px,
const real_t  py,
const real_t  pz 
) const
inline

◆ getBlockIdBytes()

uint_t walberla::blockforest::SetupBlockForest::getBlockIdBytes ( ) const
inline

◆ getBlocks() [1/5]

void walberla::blockforest::SetupBlockForest::getBlocks ( std::vector< const SetupBlock * > &  blocks) const

◆ getBlocks() [2/5]

void walberla::blockforest::SetupBlockForest::getBlocks ( std::vector< const SetupBlock * > &  blocks,
const uint_t  level 
) const

◆ getBlocks() [3/5]

void walberla::blockforest::SetupBlockForest::getBlocks ( std::vector< SetupBlock * > &  blocks)

◆ getBlocks() [4/5]

void walberla::blockforest::SetupBlockForest::getBlocks ( std::vector< SetupBlock * > &  blocks,
const uint_t  level 
)

◆ getBlocks() [5/5]

void walberla::blockforest::SetupBlockForest::getBlocks ( std::vector< SetupBlock * > &  blocks,
const uint_t  xmin,
const uint_t  ymin,
const uint_t  zmin,
const uint_t  xmax,
const uint_t  ymax,
const uint_t  zmax 
)

◆ getBlocksOverlappedByAABB()

void walberla::blockforest::SetupBlockForest::getBlocksOverlappedByAABB ( std::vector< SetupBlock * > &  blocks,
const AABB &  aabb 
)

◆ getDepth()

uint_t walberla::blockforest::SetupBlockForest::getDepth ( ) const
inline

◆ getDomain()

const AABB& walberla::blockforest::SetupBlockForest::getDomain ( ) const
inline

◆ getFirstBlock() [1/2]

SetupBlock* walberla::blockforest::SetupBlockForest::getFirstBlock ( )

◆ getFirstBlock() [2/2]

SetupBlock * walberla::blockforest::SetupBlockForest::getFirstBlock ( ) const

◆ getHilbertOrder()

void walberla::blockforest::SetupBlockForest::getHilbertOrder ( std::vector< SetupBlock * > &  blocks)

◆ getMaxLevel()

uint_t walberla::blockforest::SetupBlockForest::getMaxLevel ( ) const

◆ getMinLevel()

uint_t walberla::blockforest::SetupBlockForest::getMinLevel ( ) const

◆ getMortonOrder()

void walberla::blockforest::SetupBlockForest::getMortonOrder ( std::vector< SetupBlock * > &  blocks)
inline

◆ getNextBlock() [1/2]

SetupBlock * walberla::blockforest::SetupBlockForest::getNextBlock ( const SetupBlock block)

◆ getNextBlock() [2/2]

const SetupBlock * walberla::blockforest::SetupBlockForest::getNextBlock ( const SetupBlock block) const

◆ getNumberOfBlocks() [1/2]

uint_t walberla::blockforest::SetupBlockForest::getNumberOfBlocks ( ) const
inline

◆ getNumberOfBlocks() [2/2]

uint_t walberla::blockforest::SetupBlockForest::getNumberOfBlocks ( const uint_t  level) const

◆ getNumberOfBufferProcesses()

uint_t walberla::blockforest::SetupBlockForest::getNumberOfBufferProcesses ( ) const
inline

◆ getNumberOfLevels()

uint_t walberla::blockforest::SetupBlockForest::getNumberOfLevels ( ) const
inline

◆ getNumberOfProcesses()

uint_t walberla::blockforest::SetupBlockForest::getNumberOfProcesses ( ) const
inline

◆ getNumberOfRootBlocks()

uint_t walberla::blockforest::SetupBlockForest::getNumberOfRootBlocks ( ) const
inline

◆ getNumberOfTrees()

uint_t walberla::blockforest::SetupBlockForest::getNumberOfTrees ( ) const
inline

◆ getNumberOfWorkerProcesses()

uint_t walberla::blockforest::SetupBlockForest::getNumberOfWorkerProcesses ( ) const
inline

◆ getProcessIdBytes()

uint_t walberla::blockforest::SetupBlockForest::getProcessIdBytes ( ) const
inline

◆ getProcessSpecificBlocks()

void walberla::blockforest::SetupBlockForest::getProcessSpecificBlocks ( std::vector< const SetupBlock * > &  blocks,
const uint_t  process 
) const

◆ getRootBlock() [1/4]

SetupBlock* walberla::blockforest::SetupBlockForest::getRootBlock ( const uint_t  treeIndex)
inline

◆ getRootBlock() [2/4]

const SetupBlock* walberla::blockforest::SetupBlockForest::getRootBlock ( const uint_t  treeIndex) const
inline

◆ getRootBlock() [3/4]

SetupBlock * walberla::blockforest::SetupBlockForest::getRootBlock ( const uint_t  x,
const uint_t  y,
const uint_t  z 
)
inline

◆ getRootBlock() [4/4]

const SetupBlock * walberla::blockforest::SetupBlockForest::getRootBlock ( const uint_t  x,
const uint_t  y,
const uint_t  z 
) const
inline

◆ getRootBlockAABB() [1/3]

void walberla::blockforest::SetupBlockForest::getRootBlockAABB ( AABB &  aabb,
const AABB &  domain,
const real_t  rootBlockXSize,
const real_t  rootBlockYSize,
const real_t  rootBlockZSize,
const uint_t  xSize,
const uint_t  ySize,
const uint_t  zSize,
const uint_t  x,
const uint_t  y,
const uint_t  z 
)
static

◆ getRootBlockAABB() [2/3]

void walberla::blockforest::SetupBlockForest::getRootBlockAABB ( AABB &  aabb,
const uint_t  treeIndex 
) const
inline

◆ getRootBlockAABB() [3/3]

void walberla::blockforest::SetupBlockForest::getRootBlockAABB ( AABB &  aabb,
const uint_t  x,
const uint_t  y,
const uint_t  z 
) const
inline

◆ getRootBlockSize()

real_t walberla::blockforest::SetupBlockForest::getRootBlockSize ( const uint_t  index) const
inline

◆ getRootBlockXSize()

real_t walberla::blockforest::SetupBlockForest::getRootBlockXSize ( ) const
inline

◆ getRootBlockYSize()

real_t walberla::blockforest::SetupBlockForest::getRootBlockYSize ( ) const
inline

◆ getRootBlockZSize()

real_t walberla::blockforest::SetupBlockForest::getRootBlockZSize ( ) const
inline

◆ getSize()

uint_t walberla::blockforest::SetupBlockForest::getSize ( const uint_t  index) const
inline

◆ getTree() [1/2]

SetupBlock* walberla::blockforest::SetupBlockForest::getTree ( const uint_t  treeIndex)
inline

◆ getTree() [2/2]

const SetupBlock* walberla::blockforest::SetupBlockForest::getTree ( const uint_t  treeIndex) const
inline

◆ getTreeIdDigits()

uint_t walberla::blockforest::SetupBlockForest::getTreeIdDigits ( ) const
inline

◆ getXSize()

uint_t walberla::blockforest::SetupBlockForest::getXSize ( ) const
inline

◆ getYSize()

uint_t walberla::blockforest::SetupBlockForest::getYSize ( ) const
inline

◆ getZSize()

uint_t walberla::blockforest::SetupBlockForest::getZSize ( ) const
inline

◆ init()

void walberla::blockforest::SetupBlockForest::init ( const AABB &  domain,
const uint_t  xSize,
const uint_t  ySize,
const uint_t  zSize,
const bool  xPeriodic,
const bool  yPeriodic,
const bool  zPeriodic,
const Set< SUID > &  selector = Set<SUID>::emptySet() 
)

◆ initWorkloadMemorySUID()

void walberla::blockforest::SetupBlockForest::initWorkloadMemorySUID ( const Set< SUID > &  selector)
inlineprivate

◆ insertBuffersIntoProcessNetwork()

bool walberla::blockforest::SetupBlockForest::insertBuffersIntoProcessNetwork ( ) const
inline

◆ isBufferProcess()

bool walberla::blockforest::SetupBlockForest::isBufferProcess ( const uint_t  process) const
inline

◆ isPeriodic()

bool walberla::blockforest::SetupBlockForest::isPeriodic ( const uint_t  index) const
inline

◆ isWorkerProcess()

bool walberla::blockforest::SetupBlockForest::isWorkerProcess ( const uint_t  process) const
inline

◆ isXPeriodic()

bool walberla::blockforest::SetupBlockForest::isXPeriodic ( ) const
inline

◆ isYPeriodic()

bool walberla::blockforest::SetupBlockForest::isYPeriodic ( ) const
inline

◆ isZPeriodic()

bool walberla::blockforest::SetupBlockForest::isZPeriodic ( ) const
inline

◆ mapAABBToBoundingForestCoordinates()

void walberla::blockforest::SetupBlockForest::mapAABBToBoundingForestCoordinates ( const AABB &  aabb,
uint_t(&)  min[3],
uint_t(&)  max[3] 
) const

◆ mapForestCoordinatesToTreeIndex()

uint_t walberla::blockforest::SetupBlockForest::mapForestCoordinatesToTreeIndex ( const uint_t  x,
const uint_t  y,
const uint_t  z 
) const
inline

◆ mapPointToBlock()

SetupBlock * walberla::blockforest::SetupBlockForest::mapPointToBlock ( SetupBlock *const  block,
const real_t  px,
const real_t  py,
const real_t  pz 
)
staticprivate

◆ mapPointToPeriodicDomain()

void walberla::blockforest::SetupBlockForest::mapPointToPeriodicDomain ( real_t px,
real_t py,
real_t pz 
) const

◆ mapPointToTreeIndex()

uint_t walberla::blockforest::SetupBlockForest::mapPointToTreeIndex ( const real_t  px,
const real_t  py,
const real_t  pz 
) const

◆ mapTreeIndexToForestCoordinates() [1/2]

void walberla::blockforest::SetupBlockForest::mapTreeIndexToForestCoordinates ( const uint_t  treeIndex,
const uint_t  xSize,
const uint_t  ySize,
uint_t x,
uint_t y,
uint_t z 
)
inlinestatic

◆ mapTreeIndexToForestCoordinates() [2/2]

void walberla::blockforest::SetupBlockForest::mapTreeIndexToForestCoordinates ( const uint_t  treeIndex,
uint_t x,
uint_t y,
uint_t z 
) const
inline

◆ NullCommunicationWeightFunction()

static void walberla::blockforest::SetupBlockForest::NullCommunicationWeightFunction ( const CommunicationPairs ,
CommunicationWeights  
)
inlinestatic

◆ saveToFile()

void walberla::blockforest::SetupBlockForest::saveToFile ( const char *const  filename) const

For a description of the file format see BlockForestFile.h.

See also
BlockForestFile.h

◆ toStream()

void walberla::blockforest::SetupBlockForest::toStream ( std::ostream &  os) const

◆ toString()

std::string walberla::blockforest::SetupBlockForest::toString ( ) const
inline

◆ updateNeighborhood() [1/2]

void walberla::blockforest::SetupBlockForest::updateNeighborhood ( std::set< SetupBlock * > &  blocksToUpdate)
inlineprivate

◆ updateNeighborhood() [2/2]

void walberla::blockforest::SetupBlockForest::updateNeighborhood ( std::vector< SetupBlock * > &  blocks)
private

◆ writeCSV()

void walberla::blockforest::SetupBlockForest::writeCSV ( const std::string &  filestem) const

◆ writeVTKOutput()

void walberla::blockforest::SetupBlockForest::writeVTKOutput ( const std::string &  filestem) const

Friends And Related Function Documentation

◆ const_iterator

friend class const_iterator
friend

◆ iterator

friend class iterator
friend

Member Data Documentation

◆ blockDistribution_

std::vector< std::vector< SetupBlock* > > walberla::blockforest::SetupBlockForest::blockDistribution_
private

◆ blockExclusionFunctions_

selectable::SetSelectableObject< BlockExclusionFunction , SUID > walberla::blockforest::SetupBlockForest::blockExclusionFunctions_
private

◆ depth_

uint_t walberla::blockforest::SetupBlockForest::depth_ { 0 }
private

◆ domain_

AABB walberla::blockforest::SetupBlockForest::domain_
private

◆ forest_

std::vector< SetupBlock* > walberla::blockforest::SetupBlockForest::forest_
private

◆ insertBuffersIntoProcessNetwork_

bool walberla::blockforest::SetupBlockForest::insertBuffersIntoProcessNetwork_ { false }
private

◆ numberOfBlocks_

uint_t walberla::blockforest::SetupBlockForest::numberOfBlocks_ { 0 }
private

◆ numberOfBufferProcesses_

uint_t walberla::blockforest::SetupBlockForest::numberOfBufferProcesses_ { 0 }
private

◆ numberOfProcesses_

uint_t walberla::blockforest::SetupBlockForest::numberOfProcesses_ { 0 }
private

◆ numberOfRootBlocks_

uint_t walberla::blockforest::SetupBlockForest::numberOfRootBlocks_ { 0 }
private

◆ periodic_

bool walberla::blockforest::SetupBlockForest::periodic_[3]
private

◆ refinementSelectionFunctions_

selectable::SetSelectableObject< RefinementSelectionFunction, SUID > walberla::blockforest::SetupBlockForest::refinementSelectionFunctions_
private

◆ rootBlockExclusionFunctions_

selectable::SetSelectableObject< RootBlockExclusionFunction, SUID > walberla::blockforest::SetupBlockForest::rootBlockExclusionFunctions_
private

◆ rootBlockSize_

real_t walberla::blockforest::SetupBlockForest::rootBlockSize_[3]
private

◆ size_

uint_t walberla::blockforest::SetupBlockForest::size_[3]
private

◆ treeIdDigits_

uint_t walberla::blockforest::SetupBlockForest::treeIdDigits_ { 0 }
private

◆ workloadMemorySUIDAssignmentFunctions_

selectable::SetSelectableObject< WorkloadMemorySUIDAssignmentFunction, SUID > walberla::blockforest::SetupBlockForest::workloadMemorySUIDAssignmentFunctions_
private

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