An MPI-parallel axis-aligned bounding box volume tree. More...
#include <dumux/geometry/distributedboundingboxtree.hh>
A composition of a process-local Dumux::BoundingBoxTree and a replicated Dumux::BoundingBoxTree over the per-process bounding boxes (the "process tree"). The latter forms the upper, cross-process level of the hierarchy and is identical on all ranks. Query it (processTree()) to find candidate processes for a point or box, mapping the resulting leaves to ranks via processForLeaf(), before querying the (process-local) tree of those candidates.
| GeometricEntitySet | has the same requirements as for Dumux::BoundingBoxTree and additionally has to export a communicator via a comm() member function (e.g. Dumux::GridViewGeometricEntitySet). |
Public Types | |
| using | LocalTree = BoundingBoxTree<GeometricEntitySet> |
| the type of the process-local bounding box tree | |
| using | EntitySet = GeometricEntitySet |
| the type of entity set this tree was built with | |
| using | Communication = std::decay_t<decltype(std::declval<const GeometricEntitySet>().comm())> |
| the communicator type | |
| using | ProcessTree = BoundingBoxTree<ProcessEntitySet> |
| the type of the replicated process tree | |
Public Member Functions | |
| DistributedBoundingBoxTree ()=default | |
| Default constructor. | |
| DistributedBoundingBoxTree (std::shared_ptr< const GeometricEntitySet > set) | |
| Constructor with an entity set. | |
| void | build (std::shared_ptr< const GeometricEntitySet > set) |
| Build the distributed bounding box tree for the given entity set. | |
| const EntitySet & | entitySet () const |
| the entity set this tree was built with | |
| const Communication & | comm () const |
| the communicator this tree was built with | |
| int | rank () const |
| the rank of this process | |
| bool | hasLocalEntities () const |
| whether this process holds any local entities | |
| const LocalTree & | localTree () const |
| the process-local bounding box tree (only valid if hasLocalEntities()) | |
| const ProcessTree & | processTree () const |
| the replicated process tree over the per-process boxes | |
| int | processForLeaf (std::size_t leafIdx) const |
| the rank owning the given leaf of the process tree | |
| std::span< const ctype, 2 *dimworld > | localBoundingBox () const |
| the bounding box (min then max) of this process' partition (only valid if hasLocalEntities()) | |
| using Dumux::DistributedBoundingBoxTree< GeometricEntitySet >::Communication = std::decay_t<decltype(std::declval<const GeometricEntitySet>().comm())> |
| using Dumux::DistributedBoundingBoxTree< GeometricEntitySet >::EntitySet = GeometricEntitySet |
| using Dumux::DistributedBoundingBoxTree< GeometricEntitySet >::LocalTree = BoundingBoxTree<GeometricEntitySet> |
| using Dumux::DistributedBoundingBoxTree< GeometricEntitySet >::ProcessTree = BoundingBoxTree<ProcessEntitySet> |
|
default |
|
inlineexplicit |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |