|
| BlockForest (const uint_t process, const SetupBlockForest &forest, const bool keepGlobalBlockInformation=false) |
|
| BlockForest (const uint_t process, const char *const filename, const bool broadcastFile=true, const bool keepGlobalBlockInformation=false) |
|
| ~BlockForest () override=default |
|
uint_t | getProcess () const |
|
uint_t | getProcessIdBytes () const |
|
uint_t | getSize (const uint_t index) const |
|
real_t | getRootBlockXSize () const |
|
real_t | getRootBlockYSize () const |
|
real_t | getRootBlockZSize () const |
|
bool | storesUniformBlockGrid () const |
|
uint_t | getTreeIdDigits () const |
|
uint_t | getBlockIdBytes () const |
|
uint_t | getDepth () const |
|
uint_t | getNumberOfLevels () const |
|
bool | limitedDepth () const |
|
bool | limitedLevels () const |
|
uint_t | getMaxDepth () const |
|
uint_t | getMaxLevels () const |
|
uint_t | getNumberOfBlocks () const |
|
uint_t | getNumberOfBlocks (const uint_t level) const |
|
const std::map< BlockID, shared_ptr< Block > > & | getBlockMap () const |
|
void | getBlocks (std::vector< const Block * > &blocks, const uint_t level) const |
|
void | getBlocks (std::vector< Block * > &blocks, const uint_t level) |
|
void | getBlocksContainedWithinAABB (std::vector< const IBlock * > &blocks, const AABB &aabb) const override |
| Calling this function causes all locally allocated blocks that are completely contained within the axis-aligned bounding box 'aabb' to be inserted at the end of vector 'blocks'. More...
|
|
void | getBlocksContainedWithinAABB (std::vector< IBlock * > &blocks, const AABB &aabb) override |
| Calling this function causes all locally allocated blocks that are completely contained within the axis-aligned bounding box 'aabb' to be inserted at the end of vector 'blocks'. More...
|
|
void | getBlocksOverlappedByAABB (std::vector< const IBlock * > &blocks, const AABB &aabb) const override |
| Calling this function causes all locally allocated blocks that intersect with the axis-aligned bounding box 'aabb' to be inserted at the end of vector 'blocks'. More...
|
|
void | getBlocksOverlappedByAABB (std::vector< IBlock * > &blocks, const AABB &aabb) override |
| Calling this function causes all locally allocated blocks that intersect with the axis-aligned bounding box 'aabb' to be inserted at the end of vector 'blocks'. More...
|
|
const Block * | getBlock (const IBlockID &id) const override |
| Returns the block associated with block ID 'id' (returns 'NULL' if the block doesn't exist locally!). More...
|
|
Block * | getBlock (const IBlockID &id) override |
| Returns the block associated with block ID 'id' (returns 'NULL' if the block doesn't exist locally!). More...
|
|
const Block * | getBlock (const real_t x, const real_t y, const real_t z) const override |
| Returns the block located at position (x,y,z) (returns 'NULL' if the block doesn't exist locally!). More...
|
|
Block * | getBlock (const real_t x, const real_t y, const real_t z) override |
| Returns the block located at position (x,y,z) (returns 'NULL' if the block doesn't exist locally!). More...
|
|
const Block * | getRootBlock (const uint_t x, const uint_t y, const uint_t z) const |
|
Block * | getRootBlock (const uint_t x, const uint_t y, const uint_t z) |
|
bool | containsGlobalBlockInformation () const override |
| Indicates whether or not information about remote blocks (blocks that reside on other processes) is available. More...
|
|
void | getAllBlocks (std::vector< shared_ptr< IBlockID > > &blocks) const override |
| Returns the block ID of every block in the simulation (global and remote). More...
|
|
bool | blockExists (const real_t x, const real_t y, const real_t z) const override |
| Returns true if there exists a block at position (x,y,z) [Periodicity is not considered! For mapping points to the periodic simulation space see 'mapToPeriodicDomain'. More...
|
|
bool | blockExistsLocally (const real_t x, const real_t y, const real_t z) const override |
| Returns true if locally there exists a block at position (x,y,z) [Periodicity is not considered! For mapping points to the periodic simulation space see 'mapToPeriodicDomain'. More...
|
|
bool | blockExistsRemotely (const real_t x, const real_t y, const real_t z) const override |
| Returns true if remotely there exists a block at position (x,y,z) [Periodicity is not considered! For mapping points to the periodic simulation space see 'mapToPeriodicDomain'. More...
|
|
bool | blockExists (const IBlockID &id) const override |
| Returns true if there exists a block with block ID 'id'. More...
|
|
bool | blockExistsLocally (const IBlockID &id) const override |
| Returns true if locally there exists a block with block ID 'id'. More...
|
|
bool | blockExistsRemotely (const IBlockID &id) const override |
| Returns true if remotely there exists a block with block ID 'id'. More...
|
|
bool | rootBlockExists (const uint_t x, const uint_t y, const uint_t z) const |
|
bool | rootBlockExistsLocally (const uint_t x, const uint_t y, const uint_t z) const |
|
bool | rootBlockExistsRemotely (const uint_t x, const uint_t y, const uint_t z) const |
|
void | getBlockID (IBlockID &id, const real_t x, const real_t y, const real_t z) const override |
| Returns the block ID that corresponds to the block located at position (x,y,z) [Periodicity is not considered! For mapping points to the periodic simulation space see 'mapToPeriodicDomain'. More...
|
|
void | getAABB (AABB &aabb, const IBlockID &id) const override |
| Returns the axis-aligned bounding box that corresponds to the block with ID 'id'. More...
|
|
void | getState (Set< SUID > &state, const IBlockID &id) const override |
| Returns the block state that corresponds to the block with ID 'id'. More...
|
|
void | getProcessRank (uint_t &rank, const IBlockID &id) const override |
| Returns the rank of the process the block with ID 'id' resides on. More...
|
|
void | getRootBlockAABB (AABB &aabb, const uint_t x, const uint_t y, const uint_t z) const |
|
void | getRootBlockState (Set< SUID > &state, const uint_t x, const uint_t y, const uint_t z) const |
|
void | getRootBlockProcessRank (uint_t &rank, const uint_t x, const uint_t y, const uint_t z) const |
|
const BlockInformation & | getBlockInformation () const |
|
uint_t | getLevel (const IBlock &block) const override |
| must return the level the block "block" is assigned to (must be an unsigned integer in the range [0,'number-of-levels') ) More...
|
|
uint_t | getLevelFromBlockId (const BlockID &id) const |
|
uint_t | getAABBFromBlockId (AABB &aabb, const BlockID &id) const |
|
AABB | getAABBFromBlockId (const BlockID &id) const |
|
void | getForestCoordinates (uint_t &x, uint_t &y, uint_t &z, const BlockID &id) const |
|
void | getRootBlockCoordinates (uint_t &x, uint_t &y, uint_t &z, const BlockID &id) const |
|
void | getRootBlockID (BlockID &id, const uint_t x, const uint_t y, const uint_t z) const |
|
bool | insertBuffersIntoProcessNetwork () const |
|
const std::vector< uint_t > & | getNeighborhood () const |
|
const std::vector< uint_t > & | getNeighboringProcesses () const override |
| Returns all neighboring process IDs. More...
|
|
std::map< uint_t, std::vector< Vector3< real_t > > > | getNeighboringProcessOffsets () const override |
| For every neighboring process one or more offsets must be returned. More...
|
|
internal::BlockDataHandlingAdder | addBlockData (const std::string &identifier=std::string()) |
|
template<typename T > |
BlockDataID | addBlockData (const shared_ptr< T > &dataHandling, const std::string &identifier=std::string(), const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet()) |
|
template<typename T > |
BlockDataID | addBlockData (std::function< T *(IBlock *const block) > function, const std::string &identifier=std::string(), const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet()) |
|
BlockDataID | addBlockData (const domain_decomposition::internal::SelectableBlockDataHandlingWrapper &dataHandling, const std::string &identifier=std::string()) |
|
template<typename T > |
BlockDataID | loadBlockData (const std::string &file, const shared_ptr< T > &dataHandling, const std::string &identifier=std::string(), const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet()) |
|
BlockDataID | loadBlockData (const std::string &file, const domain_decomposition::internal::SelectableBlockDataHandlingWrapper &dataHandling, const std::string &identifier=std::string()) |
|
void | refresh () |
| Triggers AMR Pipeline. More...
|
|
RefreshFunctor | getRefreshFunctor (const uint_t checkFrequency=uint_t(1)) |
| Functor that calls refresh with given frequency. More...
|
|
uint_t | getModificationStamp () const |
| Modification stamp is changed when refresh moves a block or refines/coarsens at least one block however, stamp may (in rare cases) also change if block structure was not altered i.e. More...
|
|
const WcTimingPool & | getRefreshTiming () const |
| Returns timing pool that contains measurement for sub-steps of AMR pipeline. More...
|
|
void | clearRefreshTiming () |
|
bool | recalculateBlockLevelsInRefresh () const |
| switches AMR pipeline step 1 on/off More...
|
|
void | recalculateBlockLevelsInRefresh (const bool r) |
|
void | alwaysRebalanceInRefresh (const bool b) |
| by default rebalancing can be skipped if no block level has changed with this switch one can force the execution of the rebalancing step More...
|
|
bool | alwaysRebalanceInRefresh () const |
|
void | setRefreshMinTargetLevelDeterminationFunction (const RefreshMinTargetLevelDeterminationFunction &f) |
| callback for AMR pipeline step 1 guaranteed minimal block level More...
|
|
bool | allowMultipleRefreshCycles () const |
| allow multiple AMR passes (possibility to refine more than once within one time step) if true, one all-to-all reduction with a boolean value is performed during refresh More...
|
|
void | allowMultipleRefreshCycles (const bool m) |
|
bool | reevaluateMinTargetLevelsAfterForcedRefinement () const |
| call setRefreshMinTargetLevelDeterminationFunction callback again after AMR internal refinement to keep 2:1 balance if true, one all-to-all reduction with a boolean value is performed during refresh More...
|
|
void | reevaluateMinTargetLevelsAfterForcedRefinement (const bool c) |
|
bool | checkForEarlyOutInRefresh () const |
| exit pipeline after first AMR step if no block level has changed after setRefreshMinTargetLevelDeterminationFunction callback can be overwritten by alwaysRebalanceInRefresh if true, one all-to-all reduction with a boolean value is performed during refresh More...
|
|
void | checkForEarlyOutInRefresh (const bool c) |
|
bool | checkForLateOutInRefresh () const |
| exit pipeline after first AMR step if no block level has changed can be overwritten by alwaysRebalanceInRefresh if true, one all-to-all reduction with a boolean value is performed during refresh More...
|
|
void | checkForLateOutInRefresh (const bool c) |
|
bool | allowRefreshChangingDepth () const |
| maximal depth of block structure is allowed to change? if true, one all-to-all reduction with an unsigned int value is performed after refresh More...
|
|
void | allowRefreshChangingDepth (const bool c) |
|
bool | checkForEarlyOutAfterLoadBalancing () const |
| if true, one all-to-all reduction with a boolean value is performed during refresh More...
|
|
void | checkForEarlyOutAfterLoadBalancing (const bool c) |
|
void | setRefreshBlockStateDeterminationFunction (const PhantomBlockForest::BlockStateDeterminationFunction &f) |
| callback which determines the state id (SUID) of the new block during refinement/coarsening More...
|
|
void | setRefreshPhantomBlockDataAssignmentFunction (const PhantomBlockForest::PhantomBlockDataAssignmentFunction &f) |
| callback to assign arbitrary data to a phantom block (used only during load balancing), e.g. weights More...
|
|
void | setRefreshPhantomBlockMigrationPreparationFunction (const PhantomBlockForest::MigrationPreparationFunction &f) |
| load balancing algorithm More...
|
|
void | setRefreshPhantomBlockDataPackFunction (const PhantomBlockForest::PhantomBlockDataPackFunction &f) |
|
void | setRefreshPhantomBlockDataUnpackFunction (const PhantomBlockForest::PhantomBlockDataUnpackFunction &f) |
|
bool | loadBalancingFunctionRegistered () const |
|
uint_t | phantomBlockMigrationIterations () const |
| get number of "setRefreshPhantomBlockMigrationPreparationFunction" calls More...
|
|
uint_t | addRefreshCallbackFunctionBeforeBlockDataIsPacked (const RefreshCallbackFunction &f) |
|
void | removeRefreshCallbackFunctionBeforeBlockDataIsPacked (const uint_t handle) |
|
uint_t | addRefreshCallbackFunctionBeforeBlockDataIsUnpacked (const RefreshCallbackFunction &f) |
|
void | removeRefreshCallbackFunctionBeforeBlockDataIsUnpacked (const uint_t handle) |
|
uint_t | addRefreshCallbackFunctionAfterBlockDataIsUnpacked (const RefreshCallbackFunction &f) |
|
void | removeRefreshCallbackFunctionAfterBlockDataIsUnpacked (const uint_t handle) |
|
void | createSnapshot (const std::vector< uint_t > &sendTo, const std::vector< uint_t > &recvFrom) |
|
void | restoreSnapshot (const SnapshotRestoreFunction &processMapping, const bool rebelance=true) |
|
SnapshotCreationFunctor | getSnapshotCreationFunctor (const SnapshotCreationFunction &function, const uint_t checkFrequency=uint_t(1)) |
|
uint_t | addCallbackFunctionAfterBlockDataIsRestored (const SnapshotRestoreCallbackFunction &f) |
|
void | removeCallbackFunctionAfterBlockDataIsRestored (const uint_t handle) |
|
void | saveToFile (const std::string &filename, FileIOMode fileIOMode=MPI_PARALLEL) const |
| Block states are reduced using MPI. More...
|
|
void | saveToFile (const std::string &filename, const Set< SUID > &blockStates, FileIOMode fileIOMode=MPI_PARALLEL) const |
| Block states are passed by argument (ATTENTION: 'blockStates' must be identical for every process!) More...
|
|
void | checkBlockInformationConsistency (const SetupBlockForest &forest) const |
|
void | getBlocks (std::vector< const IBlock * > &blocks) const |
| inserts all locally allocated blocks into vector 'blocks' More...
|
|
void | getBlocks (std::vector< IBlock * > &blocks) |
| inserts all locally allocated blocks into vector 'blocks' More...
|
|
virtual const IBlock * | getBlock (const IBlockID &id) const=0 |
| Returns the block associated with block ID 'id' (returns 'NULL' if the block doesn't exist locally!). More...
|
|
const IBlock * | getBlock (const IBlockID::IDType &id) const |
|
virtual IBlock * | getBlock (const IBlockID &id)=0 |
| Returns the block associated with block ID 'id' (returns 'NULL' if the block doesn't exist locally!). More...
|
|
IBlock * | getBlock (const IBlockID::IDType &id) |
|
virtual const IBlock * | getBlock (const real_t x, const real_t y, const real_t z) const=0 |
| Returns the block located at position (x,y,z) (returns 'NULL' if the block doesn't exist locally!). More...
|
|
const IBlock * | getBlock (const Vector3< real_t > &p) const |
|
virtual IBlock * | getBlock (const real_t x, const real_t y, const real_t z)=0 |
| Returns the block located at position (x,y,z) (returns 'NULL' if the block doesn't exist locally!). More...
|
|
IBlock * | getBlock (const Vector3< real_t > &p) |
|
Public Member Functions inherited from walberla::domain_decomposition::BlockStorage |
bool | isXPeriodic () const |
|
bool | isYPeriodic () const |
|
bool | isZPeriodic () const |
|
bool | isPeriodic (const uint_t index) const |
|
void | mapToPeriodicDomain (real_t &x, real_t &y, real_t &z) const |
| For documentation, see documentation of free function 'void mapPointToPeriodicDomain( const std::array< bool, 3 > & periodic, const AABB & domain, real_t & x, real_t & y, real_t & z )'. More...
|
|
void | mapToPeriodicDomain (Vector3< real_t > &p) const |
|
bool | periodicIntersect (const math::AABB &box1, const math::AABB &box2) const |
| For documentation, see documentation of free function 'bool periodicIntersect( const std::array< bool, 3 > & periodic, const math::AABB & domain, const math::AABB & box1, const math::AABB & box2 )'. More...
|
|
bool | periodicIntersect (const math::AABB &box1, const math::AABB &box2, const real_t dx) const |
| For documentation, see documentation of free function 'bool periodicIntersect( const std::array< bool, 3 > & periodic, const math::AABB & domain, const math::AABB & box1, const math::AABB & box2 )'. More...
|
|
bool | operator== (const BlockStorage &rhs) const |
| The following members are not used for checking if two BlockStorage objects are equal: iBlocks_. More...
|
|
bool | operator!= (const BlockStorage &rhs) const |
|
iterator | begin (const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet()) |
| iterator for traversing all locally allocated blocks More...
|
|
const_iterator | begin (const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet()) const |
| iterator for traversing all locally allocated blocks More...
|
|
bool | empty () const |
|
void | getBlocks (std::vector< const IBlock * > &blocks) const |
| inserts all locally allocated blocks into vector 'blocks' More...
|
|
void | getBlocks (std::vector< IBlock * > &blocks) |
| inserts all locally allocated blocks into vector 'blocks' More...
|
|
const IBlock * | getBlock (const IBlockID::IDType &id) const |
|
IBlock * | getBlock (const IBlockID::IDType &id) |
|
const IBlock * | getBlock (const Vector3< real_t > &p) const |
|
IBlock * | getBlock (const Vector3< real_t > &p) |
|
bool | blockExists (const Vector3< real_t > &p) const |
|
bool | blockExistsLocally (const Vector3< real_t > &p) const |
|
bool | blockExistsRemotely (const Vector3< real_t > &p) const |
|
void | getBlockID (IBlockID &id, const Vector3< real_t > &p) const |
|
AABB | getAABB (const IBlockID &id) const |
|
Set< SUID > | getState (const IBlockID &id) const |
|
uint_t | getProcessRank (const IBlockID &id) const |
|
bool | atDomainXMinBorder (const IBlock &block) const |
| Returns true if the block 'block' is located at the lower x-axis border of the domain. More...
|
|
bool | atDomainXMaxBorder (const IBlock &block) const |
| Returns true if the block 'block' is located at the upper x-axis border of the domain. More...
|
|
bool | atDomainYMinBorder (const IBlock &block) const |
| Returns true if the block 'block' is located at the lower y-axis border of the domain. More...
|
|
bool | atDomainYMaxBorder (const IBlock &block) const |
| Returns true if the block 'block' is located at the upper y-axis border of the domain. More...
|
|
bool | atDomainZMinBorder (const IBlock &block) const |
| Returns true if the block 'block' is located at the lower z-axis border of the domain. More...
|
|
bool | atDomainZMaxBorder (const IBlock &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 IBlock &block) const |
|
bool | atDomainMaxBorder (const uint_t index, const IBlock &block) const |
|
internal::BlockDataHandlingAdder | addBlockData (const std::string &identifier=std::string()) |
| Must be used if multiple block data handling objects with different selection attributes are registered for initializing the same block data "item". More...
|
|
template<typename T > |
BlockDataID | addBlockData (const shared_ptr< T > &dataHandling, const std::string &identifier=std::string(), const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet()) |
| This function can be used for initializing a new block data "item". More...
|
|
template<typename T > |
BlockDataID | addBlockData (std::function< T *(IBlock *const block) > function, const std::string &identifier=std::string(), const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet()) |
| This function can be used for initializing a new block data "item". More...
|
|
BlockDataID | addBlockData (const internal::SelectableBlockDataHandlingWrapper &dataHandling, const std::string &identifier=std::string()) |
| After registering one/multiple block data handling objects, this function is called for actually adding data to the blocks. More...
|
|
template<typename T > |
BlockDataID | loadBlockData (const std::string &file, const shared_ptr< T > &dataHandling, const std::string &identifier=std::string(), const Set< SUID > &requiredSelectors=Set< SUID >::emptySet(), const Set< SUID > &incompatibleSelectors=Set< SUID >::emptySet()) |
| This function can be used for initializing a new block data "item" by loading the data from file. More...
|
|
BlockDataID | loadBlockData (const std::string &file, const internal::SelectableBlockDataHandlingWrapper &dataHandling, const std::string &identifier=std::string()) |
| After registering one/multiple block data handling objects, this function is called for actually adding data to the blocks by loading the data from file. More...
|
|
void | saveBlockData (const std::string &file, const BlockDataID &id) |
| This function can be used to store the data that corresponds to 'id' to file, so that later (probably when restarting a simulation) the data can be loaded by using the member function 'loadBlockData'. More...
|
|
void | serializeBlockData (const BlockDataID &id, mpi::SendBuffer &buffer) |
| This function serializes the block data into a sendbuffer. More...
|
|
void | deserializeBlockData (const BlockDataID &id, mpi::RecvBuffer &buffer) |
| Deserializes data form a recv buffer into existing block data Only deserialize data, that has be serialized with serializeBlockData. More...
|
|
void | clearBlockData (const BlockDataID &id) |
| This function can be used for removing all data that corresponds to block data ID 'id'. More...
|
|
uint_t | numberOfBlockDataItems () const |
|
std::vector< std::string > | getBlockDataIdentifiers () const |
|
const std::string & | getBlockDataIdentifier (const ConstBlockDataID &id) const |
|
void | rebuildProcessesWithBlocksCommunicator () |
|
MPI_Comm | processesWithBlocksCommunicator () |
| Returns a MPI communicator that only contains processes that possess blocks. More...
|
|