Skip to content

Commit

Permalink
Merge pull request #15101 from jh66637/extend_distributed_compute_poi…
Browse files Browse the repository at this point in the history
…nt_locations

extend distributed_compute_point_locations
  • Loading branch information
kronbichler committed Apr 18, 2023
2 parents d0fc2a7 + 886935d commit 45e64ab
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 6 deletions.
14 changes: 13 additions & 1 deletion include/deal.II/grid/grid_tools.h
Original file line number Diff line number Diff line change
Expand Up @@ -1109,6 +1109,16 @@ namespace GridTools
* of the cells adjacent to a vertex or an edge/face this function returns.
* Consequently, algorithms that call this function need to take into
* account that the returned cell will only contain the point approximately.
* @param[in] enforce_unique_mapping Enforce a one to one mapping between
points
* in real and reference space.
* @param[in] marked_vertices An array of bools indicating which
* vertices of @p mesh will be considered within the search
* as the potentially closest vertex. On receiving a non-empty
* @p marked_vertices, the function will
* only search among @p marked_vertices for the closest vertex,
* otherwise on all vertices in the mesh.
* @return A tuple containing the quadrature information
*
* The elements of the output tuple are:
Expand Down Expand Up @@ -1165,7 +1175,9 @@ namespace GridTools
const GridTools::Cache<dim, spacedim> & cache,
const std::vector<Point<spacedim>> & local_points,
const std::vector<std::vector<BoundingBox<spacedim>>> &global_bboxes,
const double tolerance = 1e-10);
const double tolerance = 1e-10,
const std::vector<bool> & marked_vertices = {},
const bool enforce_unique_mapping = true);

namespace internal
{
Expand Down
16 changes: 12 additions & 4 deletions source/grid/grid_tools.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5926,12 +5926,20 @@ namespace GridTools
const GridTools::Cache<dim, spacedim> & cache,
const std::vector<Point<spacedim>> & points,
const std::vector<std::vector<BoundingBox<spacedim>>> &global_bboxes,
const double tolerance)
const double tolerance,
const std::vector<bool> & marked_vertices,
const bool enforce_unique_mapping)
{
// run internal function ...
const auto all = internal::distributed_compute_point_locations(
cache, points, global_bboxes, {}, tolerance, false, true)
.send_components;
const auto all =
internal::distributed_compute_point_locations(cache,
points,
global_bboxes,
marked_vertices,
tolerance,
false,
enforce_unique_mapping)
.send_components;

// ... and reshuffle the data
std::tuple<
Expand Down
4 changes: 3 additions & 1 deletion source/grid/grid_tools.inst.in
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,9 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS)
const Cache<deal_II_dimension, deal_II_space_dimension> &,
const std::vector<Point<deal_II_space_dimension>> &,
const std::vector<std::vector<BoundingBox<deal_II_space_dimension>>> &,
const double tolerance);
const double tolerance,
const std::vector<bool> &marked_vertices,
const bool enforce_unique_mapping);

template internal::DistributedComputePointLocationsInternal<
deal_II_dimension,
Expand Down

0 comments on commit 45e64ab

Please sign in to comment.