DOLFINx
0.5.1
DOLFINx C++ interface
|
Geometry data structures and algorithms. More...
Classes | |
class | BoundingBoxTree |
Axis-Aligned bounding box binary tree. It is used to find entities in a collection (often a mesh::Mesh). More... | |
Functions | |
std::array< double, 3 > | compute_distance_gjk (const std::span< const double > &p, const std::span< const double > &q) |
Calculate the distance between two convex bodies p and q, each defined by a set of points, using the Gilbert–Johnson–Keerthi (GJK) distance algorithm. More... | |
BoundingBoxTree | create_midpoint_tree (const mesh::Mesh &mesh, int tdim, const std::span< const std::int32_t > &entity_indices) |
Create a bounding box tree for a subset of entities (local to process) based on the entity midpoints. More... | |
std::vector< std::array< int, 2 > > | compute_collisions (const BoundingBoxTree &tree0, const BoundingBoxTree &tree1) |
Compute all collisions between two BoundingBoxTrees (local to process) More... | |
graph::AdjacencyList< std::int32_t > | compute_collisions (const BoundingBoxTree &tree, const std::span< const double > &points) |
Compute all collisions between bounding boxes and for a set of points. More... | |
std::vector< std::int32_t > | compute_closest_entity (const BoundingBoxTree &tree, const BoundingBoxTree &midpoint_tree, const mesh::Mesh &mesh, const std::span< const double > &points) |
Compute closest mesh entity to a point. More... | |
double | compute_squared_distance_bbox (const std::array< std::array< double, 3 >, 2 > &b, const std::array< double, 3 > &x) |
Compute squared distance between point and bounding box. More... | |
std::vector< double > | shortest_vector (const mesh::Mesh &mesh, int dim, const std::span< const std::int32_t > &entities, const std::span< const double > &points) |
Compute the shortest vector from a mesh entity to a point. More... | |
std::vector< double > | squared_distance (const mesh::Mesh &mesh, int dim, const std::span< const std::int32_t > &entities, const std::span< const double > &points) |
Compute the squared distance between a point and a mesh entity. The distance is computed between the ith input points and the ith input entity. More... | |
graph::AdjacencyList< int > | compute_colliding_cells (const mesh::Mesh &mesh, const graph::AdjacencyList< std::int32_t > &candidate_cells, const std::span< const double > &points) |
From a Mesh, find which cells collide with a set of points. More... | |
Geometry data structures and algorithms.
Tools for geometric data structures and operations, e.g. searching.
std::vector< std::int32_t > compute_closest_entity | ( | const BoundingBoxTree & | tree, |
const BoundingBoxTree & | midpoint_tree, | ||
const mesh::Mesh & | mesh, | ||
const std::span< const double > & | points | ||
) |
Compute closest mesh entity to a point.
[in] | tree | The bounding box tree for the entities |
[in] | midpoint_tree | A bounding box tree with the midpoints of all the mesh entities. This is used to accelerate the search |
[in] | mesh | The mesh |
[in] | points | The set of points (shape=(num_points, 3)). Storage is row-major. |
graph::AdjacencyList< std::int32_t > compute_colliding_cells | ( | const mesh::Mesh & | mesh, |
const graph::AdjacencyList< std::int32_t > & | candidate_cells, | ||
const std::span< const double > & | points | ||
) |
From a Mesh, find which cells collide with a set of points.
[in] | mesh | The mesh |
[in] | candidate_cells | List of candidate colliding cells for the ith point in points |
[in] | points | The points to check for collision (shape=(num_points, 3)). Storage is row-major. |
graph::AdjacencyList< std::int32_t > compute_collisions | ( | const BoundingBoxTree & | tree, |
const std::span< const double > & | points | ||
) |
Compute all collisions between bounding boxes and for a set of points.
[in] | tree | The bounding box tree |
[in] | points | The points (shape=(num_points, 3)). Storage is row-major. |
std::vector< std::array< int, 2 > > compute_collisions | ( | const BoundingBoxTree & | tree0, |
const BoundingBoxTree & | tree1 | ||
) |
Compute all collisions between two BoundingBoxTrees (local to process)
[in] | tree0 | First BoundingBoxTree |
[in] | tree1 | Second BoundingBoxTree |
std::array< double, 3 > compute_distance_gjk | ( | const std::span< const double > & | p, |
const std::span< const double > & | q | ||
) |
Calculate the distance between two convex bodies p and q, each defined by a set of points, using the Gilbert–Johnson–Keerthi (GJK) distance algorithm.
[in] | p | Body 1 list of points, shape (num_points, 3). Row-major storage. |
[in] | q | Body 2 list of points, shape (num_points, 3). Row-major storage. |
double compute_squared_distance_bbox | ( | const std::array< std::array< double, 3 >, 2 > & | b, |
const std::array< double, 3 > & | x | ||
) |
Compute squared distance between point and bounding box.
[in] | b | Bounding box coordinates |
[in] | x | A point |
b
and the point x
. Returns zero if x
is inside box. geometry::BoundingBoxTree create_midpoint_tree | ( | const mesh::Mesh & | mesh, |
int | tdim, | ||
const std::span< const std::int32_t > & | entity_indices | ||
) |
Create a bounding box tree for a subset of entities (local to process) based on the entity midpoints.
[in] | mesh | The mesh |
[in] | tdim | The topological dimension of the entity |
[in] | entity_indices | List of local entity indices |
std::vector< double > shortest_vector | ( | const mesh::Mesh & | mesh, |
int | dim, | ||
const std::span< const std::int32_t > & | entities, | ||
const std::span< const double > & | points | ||
) |
Compute the shortest vector from a mesh entity to a point.
[in] | mesh | The mesh |
[in] | dim | The topological dimension of the mesh entity |
[in] | entities | The list of entities (local to process) |
[in] | points | The set of points (shape=(num_points, 3)), using row-major storage |
std::vector< double > squared_distance | ( | const mesh::Mesh & | mesh, |
int | dim, | ||
const std::span< const std::int32_t > & | entities, | ||
const std::span< const double > & | points | ||
) |
Compute the squared distance between a point and a mesh entity. The distance is computed between the ith input points and the ith input entity.
[in] | mesh | Mesh containing the entities |
[in] | dim | The topological dimension of the mesh entities |
[in] | entities | The indices of the mesh entities (local to process) |
[in] | points | The set points from which to computed the shortest (shape=(num_points, 3)). Storage is row-major. |