|
DOLFINx 0.7.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 | |
| template<std::floating_point T> | |
| std::array< T, 3 > | compute_distance_gjk (std::span< const T > p, std::span< const T > q) |
| Compute the distance between two convex bodies p and q, each defined by a set of points. | |
| template<std::floating_point T> | |
| std::vector< T > | shortest_vector (const mesh::Mesh< T > &mesh, int dim, std::span< const std::int32_t > entities, std::span< const T > points) |
| Compute the shortest vector from a mesh entity to a point. | |
| template<std::floating_point T> | |
| T | compute_squared_distance_bbox (std::span< const T, 6 > b, std::span< const T, 3 > x) |
| Compute squared distance between point and bounding box. | |
| template<std::floating_point T> | |
| std::vector< T > | squared_distance (const mesh::Mesh< T > &mesh, int dim, std::span< const std::int32_t > entities, std::span< const T > points) |
| Compute the squared distance between a point and a mesh entity. | |
| template<std::floating_point T> | |
| BoundingBoxTree< T > | create_midpoint_tree (const mesh::Mesh< T > &mesh, int tdim, std::span< const std::int32_t > entities) |
| Create a bounding box tree for the midpoints of a subset of entities. | |
| template<std::floating_point T> | |
| std::vector< std::int32_t > | compute_collisions (const BoundingBoxTree< T > &tree0, const BoundingBoxTree< T > &tree1) |
| Compute all collisions between two bounding box trees. | |
| template<std::floating_point T> | |
| graph::AdjacencyList< std::int32_t > | compute_collisions (const BoundingBoxTree< T > &tree, std::span< const T > points) |
| Compute collisions between points and leaf bounding boxes. | |
| template<std::floating_point T> | |
| std::int32_t | compute_first_colliding_cell (const mesh::Mesh< T > &mesh, const BoundingBoxTree< T > &tree, const std::array< T, 3 > &point) |
| Compute the cell that collides with a point. | |
| template<std::floating_point T> | |
| std::vector< std::int32_t > | compute_closest_entity (const BoundingBoxTree< T > &tree, const BoundingBoxTree< T > &midpoint_tree, const mesh::Mesh< T > &mesh, std::span< const T > points) |
| Compute closest mesh entity to a point. | |
| template<std::floating_point T> | |
| graph::AdjacencyList< std::int32_t > | compute_colliding_cells (const mesh::Mesh< T > &mesh, const graph::AdjacencyList< std::int32_t > &candidate_cells, std::span< const T > points) |
| Compute which cells collide with a point. | |
| template<std::floating_point T> | |
| std::tuple< std::vector< std::int32_t >, std::vector< std::int32_t >, std::vector< T >, std::vector< std::int32_t > > | determine_point_ownership (const mesh::Mesh< T > &mesh, std::span< const T > points) |
| Given a set of points, determine which process is colliding, using the GJK algorithm on cells to determine collisions. | |
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< T > & | tree, |
| const BoundingBoxTree< T > & | midpoint_tree, | ||
| const mesh::Mesh< T > & | mesh, | ||
| std::span< const T > | 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< T > & | mesh, |
| const graph::AdjacencyList< std::int32_t > & | candidate_cells, | ||
| std::span< const T > | points | ||
| ) |
Compute which cells collide with a point.
| [in] | mesh | The mesh |
| [in] | candidate_cells | List of candidate colliding cells for the ith point in points |
| [in] | points | Points to check for collision (shape=(num_points, 3)). Storage is row-major. |
| graph::AdjacencyList< std::int32_t > compute_collisions | ( | const BoundingBoxTree< T > & | tree, |
| std::span< const T > | points | ||
| ) |
Compute collisions between points and leaf bounding boxes.
Bounding boxes can overlap, therefore points can collide with more than one box.
| [in] | tree | The bounding box tree |
| [in] | points | The points (shape=(num_points, 3)). Storage is row-major. |
| std::vector< std::int32_t > compute_collisions | ( | const BoundingBoxTree< T > & | tree0, |
| const BoundingBoxTree< T > & | tree1 | ||
| ) |
Compute all collisions between two bounding box trees.
| [in] | tree0 | First BoundingBoxTree |
| [in] | tree1 | Second BoundingBoxTree |
| std::array< T, 3 > compute_distance_gjk | ( | std::span< const T > | p, |
| std::span< const T > | q | ||
| ) |
Compute the distance between two convex bodies p and q, each defined by a set of points.
Uses 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. |
| std::int32_t compute_first_colliding_cell | ( | const mesh::Mesh< T > & | mesh, |
| const BoundingBoxTree< T > & | tree, | ||
| const std::array< T, 3 > & | point | ||
| ) |
Compute the cell that collides with a point.
A point can collide with more than one cell. The first cell detected to collide with the point is returned. If no collision is detected, -1 is returned.
| [in] | mesh | The mesh |
| [in] | tree | The bounding box tree |
| [in] | point | The point (shape=(3,)) |
| T compute_squared_distance_bbox | ( | std::span< const T, 6 > | b, |
| std::span< const T, 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. | BoundingBoxTree< T > create_midpoint_tree | ( | const mesh::Mesh< T > & | mesh, |
| int | tdim, | ||
| std::span< const std::int32_t > | entities | ||
| ) |
Create a bounding box tree for the midpoints of a subset of entities.
| [in] | mesh | The mesh |
| [in] | tdim | The topological dimension of the entity |
| [in] | entities | List of local entity indices |
| std::tuple< std::vector< std::int32_t >, std::vector< std::int32_t >, std::vector< T >, std::vector< std::int32_t > > determine_point_ownership | ( | const mesh::Mesh< T > & | mesh, |
| std::span< const T > | points | ||
| ) |
Given a set of points, determine which process is colliding, using the GJK algorithm on cells to determine collisions.
| [in] | mesh | The mesh |
| [in] | points | Points to check for collision (shape=(num_points, 3)). Storage is row-major. |
| std::vector< T > shortest_vector | ( | const mesh::Mesh< T > & | mesh, |
| int | dim, | ||
| std::span< const std::int32_t > | entities, | ||
| std::span< const T > | points | ||
| ) |
Compute the shortest vector from a mesh entity to a point.
| [in] | mesh | The mesh |
| [in] | dim | Topological dimension of the mesh entity |
| [in] | entities | List of entities |
| [in] | points | Set of points (shape=(num_points, 3)), using row-major storage. |
| std::vector< T > squared_distance | ( | const mesh::Mesh< T > & | mesh, |
| int | dim, | ||
| std::span< const std::int32_t > | entities, | ||
| std::span< const T > | 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. |