DOLFINx 0.10.0.0
DOLFINx C++ interface
Loading...
Searching...
No Matches
BoundingBoxTree< T > Class Template Reference

#include <BoundingBoxTree.h>

Public Member Functions

 BoundingBoxTree (const mesh::Mesh< T > &mesh, int tdim, std::optional< std::span< const std::int32_t > > entities=std::nullopt, double padding=0)
 
 BoundingBoxTree (std::vector< std::pair< std::array< T, 3 >, std::int32_t > > points)
 
 BoundingBoxTree (BoundingBoxTree &&tree)=default
 Move constructor.
 
 BoundingBoxTree (const BoundingBoxTree &tree)=delete
 Copy constructor.
 
BoundingBoxTreeoperator= (BoundingBoxTree &&other)=default
 Move assignment.
 
BoundingBoxTreeoperator= (const BoundingBoxTree &other)=default
 Copy assignment.
 
 ~BoundingBoxTree ()=default
 Destructor.
 
std::array< T, 6 > get_bbox (std::size_t node) const
 Return bounding box coordinates for a given node in the tree,.
 
BoundingBoxTree create_global_tree (MPI_Comm comm) const
 
std::int32_t num_bboxes () const
 Return number of bounding boxes.
 
int tdim () const
 Topological dimension of leaf entities.
 
std::string str () const
 Print out for debugging.
 
std::array< std::int32_t, 2 > bbox (std::size_t node) const
 

Detailed Description

template<std::floating_point T>
class dolfinx::geometry::BoundingBoxTree< T >

Axis-Aligned bounding box binary tree. It is used to find entities in a collection (often a mesh::Mesh).

Constructor & Destructor Documentation

◆ BoundingBoxTree() [1/2]

template<std::floating_point T>
BoundingBoxTree ( const mesh::Mesh< T > & mesh,
int tdim,
std::optional< std::span< const std::int32_t > > entities = std::nullopt,
double padding = 0 )
inline

Constructor

Parameters
[in]meshMesh for building the bounding box tree.
[in]tdimTopological dimension of the mesh entities to build the bounding box tree for.
[in]entitiesList of entity indices (local to process) to compute the bounding box for. If std::nullopt, the bounding box tree is computed for all local entities (including ghosts) of the given tdim.
[in]paddingValue to pad (extend) the the bounding box of each entity by.

◆ BoundingBoxTree() [2/2]

template<std::floating_point T>
BoundingBoxTree ( std::vector< std::pair< std::array< T, 3 >, std::int32_t > > points)
inline

Constructor

Parameters
[in]pointsCloud of points, with associated point identifier index, to build the bounding box tree around

Member Function Documentation

◆ bbox()

template<std::floating_point T>
std::array< std::int32_t, 2 > bbox ( std::size_t node) const
inline

Get bounding box child nodes.

Parameters
[in]nodeThe bounding box node index
Returns
The indices of the two child nodes. If node is a leaf nodes, then the values in the returned array are equal and correspond to the index of the entity that the leaf node bounds, e.g. the index of the cell that it bounds.

◆ create_global_tree()

template<std::floating_point T>
BoundingBoxTree create_global_tree ( MPI_Comm comm) const
inline

Compute a global bounding tree (collective on comm) This can be used to find which process a point might have a collision with.

Parameters
[in]commMPI Communicator for collective communication
Returns
BoundingBoxTree where each node represents a process

◆ get_bbox()

template<std::floating_point T>
std::array< T, 6 > get_bbox ( std::size_t node) const
inline

Return bounding box coordinates for a given node in the tree,.

Parameters
[in]nodeThe bounding box node index.
Returns
Bounding box coordinates (lower_corner, upper_corner). Shape is (2, 3), row-major storage.

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