|
| | 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 | getXSize () const |
| | number of coarse blocks on the initial grid (= number of octree root blocks) in x direction
|
| |
| uint_t | getYSize () const |
| | number of coarse blocks on the initial grid (= number of octree root blocks) in y direction
|
| |
| uint_t | getZSize () const |
| | number of coarse blocks on the initial grid (= number of octree root blocks) in z direction
|
| |
| 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'.
|
| |
| 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'.
|
| |
| 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'.
|
| |
| 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'.
|
| |
| 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!).
|
| |
| Block * | getBlock (const IBlockID &id) override |
| | Returns the block associated with block ID 'id' (returns 'NULL' if the block doesn't exist locally!).
|
| |
| 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!).
|
| |
| 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!).
|
| |
| 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.
|
| |
| void | getAllBlocks (std::vector< shared_ptr< IBlockID > > &blocks) const override |
| | Returns the block ID of every block in the simulation (global and remote).
|
| |
| 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'.
|
| |
| 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'.
|
| |
| 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'.
|
| |
| bool | blockExists (const IBlockID &id) const override |
| | Returns true if there exists a block with block ID 'id'.
|
| |
| bool | blockExistsLocally (const IBlockID &id) const override |
| | Returns true if locally there exists a block with block ID 'id'.
|
| |
| bool | blockExistsRemotely (const IBlockID &id) const override |
| | Returns true if remotely there exists a block with block ID 'id'.
|
| |
| 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'.
|
| |
| void | getAABB (AABB &aabb, const IBlockID &id) const override |
| | Returns the axis-aligned bounding box that corresponds to the block with ID 'id'.
|
| |
| void | getState (Set< SUID > &state, const IBlockID &id) const override |
| | Returns the block state that corresponds to the block with ID 'id'.
|
| |
| void | getProcessRank (uint_t &rank, const IBlockID &id) const override |
| | Returns the rank of the process the block with ID 'id' resides on.
|
| |
| 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') )
|
| |
| 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.
|
| |
| std::map< uint_t, std::vector< Vector3< real_t > > > | getNeighboringProcessOffsets () const override |
| | For every neighboring process one or more offsets must be returned.
|
| |
| 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 bool forceSerialIO=true, 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(), const bool forceSerialIO=true) |
| |
| void | refresh () |
| | Triggers AMR Pipeline.
|
| |
| RefreshFunctor | getRefreshFunctor (const uint_t checkFrequency=uint_t(1)) |
| | Functor that calls refresh with given frequency.
|
| |
| 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.
|
| |
| const WcTimingPool & | getRefreshTiming () const |
| | Returns timing pool that contains measurement for sub-steps of AMR pipeline.
|
| |
| void | clearRefreshTiming () |
| |
| bool | recalculateBlockLevelsInRefresh () const |
| | switches AMR pipeline step 1 on/off
|
| |
| 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
|
| |
| bool | alwaysRebalanceInRefresh () const |
| |
| void | setRefreshMinTargetLevelDeterminationFunction (const RefreshMinTargetLevelDeterminationFunction &f) |
| | callback for AMR pipeline step 1 guaranteed minimal block level
|
| |
| 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
|
| |
| 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
|
| |
| 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
|
| |
| 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
|
| |
| 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
|
| |
| void | allowRefreshChangingDepth (const bool c) |
| |
| bool | checkForEarlyOutAfterLoadBalancing () const |
| | if true, one all-to-all reduction with a boolean value is performed during refresh
|
| |
| 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
|
| |
| void | setRefreshPhantomBlockDataAssignmentFunction (const PhantomBlockForest::PhantomBlockDataAssignmentFunction &f) |
| | callback to assign arbitrary data to a phantom block (used only during load balancing), e.g. weights
|
| |
| void | setRefreshPhantomBlockMigrationPreparationFunction (const PhantomBlockForest::MigrationPreparationFunction &f) |
| | load balancing algorithm
|
| |
| void | setRefreshPhantomBlockDataPackFunction (const PhantomBlockForest::PhantomBlockDataPackFunction &f) |
| |
| void | setRefreshPhantomBlockDataUnpackFunction (const PhantomBlockForest::PhantomBlockDataUnpackFunction &f) |
| |
| bool | loadBalancingFunctionRegistered () const |
| |
| uint_t | phantomBlockMigrationIterations () const |
| | get number of "setRefreshPhantomBlockMigrationPreparationFunction" calls
|
| |
| 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.
|
| |
| 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!)
|
| |
| void | checkBlockInformationConsistency (const SetupBlockForest &forest) const |
| |
| void | getBlocks (std::vector< const IBlock * > &blocks) const |
| | inserts all locally allocated blocks into vector 'blocks'
|
| |
| void | getBlocks (std::vector< IBlock * > &blocks) |
| | inserts all locally allocated blocks into vector 'blocks'
|
| |
| 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) |
| |
Public Member Functions inherited from walberla::domain_decomposition::BlockStorage |
| | BlockStorage ()=delete |
| | Deleted default constructor.
|
| |
| const AABB & | getDomain () const |
| | returns an axis-aligned bounding box that covers the entire simulation space/domain
|
| |
| 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 )'.
|
| |
| 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 )'.
|
| |
| 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 )'.
|
| |
| bool | operator== (const BlockStorage &rhs) const |
| | The following members are not used for checking if two BlockStorage objects are equal: iBlocks_.
|
| |
| 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
|
| |
| iterator | end () |
| | iterator for traversing all locally allocated blocks
|
| |
| 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
|
| |
| const_iterator | end () const |
| | iterator for traversing all locally allocated blocks
|
| |
| uint_t | getNumberOfBlocks () const |
| | number of locally allocated blocks
|
| |
| uint_t | size () const |
| | number of locally allocated blocks
|
| |
| bool | empty () const |
| |
| void | getBlocks (std::vector< const IBlock * > &blocks) const |
| | inserts all locally allocated blocks into vector 'blocks'
|
| |
| void | getBlocks (std::vector< IBlock * > &blocks) |
| | inserts all locally allocated blocks into vector 'blocks'
|
| |
| 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.
|
| |
| bool | atDomainXMaxBorder (const IBlock &block) const |
| | Returns true if the block 'block' is located at the upper x-axis border of the domain.
|
| |
| bool | atDomainYMinBorder (const IBlock &block) const |
| | Returns true if the block 'block' is located at the lower y-axis border of the domain.
|
| |
| bool | atDomainYMaxBorder (const IBlock &block) const |
| | Returns true if the block 'block' is located at the upper y-axis border of the domain.
|
| |
| bool | atDomainZMinBorder (const IBlock &block) const |
| | Returns true if the block 'block' is located at the lower z-axis border of the domain.
|
| |
| bool | atDomainZMaxBorder (const IBlock &block) const |
| | Returns true if the block 'block' is located at the upper z-axis border of the domain.
|
| |
| 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".
|
| |
| 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".
|
| |
| 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".
|
| |
| 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.
|
| |
| template<typename T > |
| BlockDataID | loadBlockData (const std::string &file, const shared_ptr< T > &dataHandling, const std::string &identifier=std::string(), const bool forceSerialIO=true, 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.
|
| |
| BlockDataID | loadBlockData (const std::string &file, const internal::SelectableBlockDataHandlingWrapper &dataHandling, const std::string &identifier=std::string(), const bool forceSerialIO=true) |
| | 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.
|
| |
| void | saveBlockData (const std::string &file, const BlockDataID &id, const bool forceSerialIO=true) |
| | 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'.
|
| |
| void | serializeBlockData (const BlockDataID &id, mpi::SendBuffer &buffer) |
| | This function serializes the block data into a sendbuffer.
|
| |
| 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.
|
| |
| void | clearBlockData (const BlockDataID &id) |
| | This function can be used for removing all data that corresponds to block data ID 'id'.
|
| |
| 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.
|
| |