ArborX / Spatial indexes / ArborX::BruteForce
ArborX::BruteForce<MemorySpace>::query()¶
template <typename ExecutionSpace, typename Predicates, typename Callback>
void query(ExecutionSpace const& space,
Predicates const& predicates,
Callback const& callback) const; // (1)
template <typename ExecutionSpace, typename Predicates, typename Indices,
typename Offsets>
void query(ExecutionSpace const& space,
Predicates const& predicates,
Indices& indices,
Offsets& offsets) const; // (2)
template <typename ExecutionSpace, typename Predicates, typename Callback,
typename Values, typename Offsets>
void query(ExecutionSpace const& space,
Predicates const& predicates,
Callback const& callback,
Values& values,
Offsets& offsets) const; // (3)
Finds all primitives meeting the passed predicates and invoke the callback when a primitive meets a predicate
Conceptually equivalent to
for (auto predicate : predicates)
for (auto primitive : primitives)
if (predicate(primitive))
callback(predicate, primitive);
Finds all primitives meeting the predicates and record results in
{indices, offsets}.
indices stores the indices of the objects that satisfy the predicates.
offsets stores the locations in the indices view that start a predicate, that is, predicates(i) is satisfied by primitives(indices(j)) for offsets(i) <= j < offsets(i+1).
Following the usual convention, offsets(n) == indices.size(), where n is the number of queries that were performed and indices.size() is the total number of collisions.
3. TODO
Parameters¶
|
- |
execution space that specifies where to execute code |
|---|---|---|
|
- |
predicates to check against the primitives |
|
- |
callable function object to invoke when a primitive satisfies a predicate |
|
- |
position of the primitives that satisfy the predicates |
|
- |
predicate offsets in indices |
Type requirements¶
MemorySpacemust be accessible fromExecutionSpace. (Kokkos::SpaceAccessibility<ExecutionSpace, MemorySpace>::accessiblemust betrue.)A specialization of ArborX::AccessTraits must match the
Predicatesas the template argument.The member type
ArborX::AccessTraits<Predicates>::memory_spacemust be accessible fromExecutionSpace.The static member function
ArborX::AccessTraits<Predicates>::get()return type must decay to a valid ArborX predicate.Such predicate may be generated by one of the functions listed below: * ArborX::intersects()
TODO
CallbackIndicesandOffsetsmust be (managed) Kokkos views of integral types accessibles fromExecutionSpace.
Return value¶
(none)
Complexity¶
O(M N) where M is the number of predicates (i.e. the value returned by ArborX::AccessTraits<Predicates>::size(predicates)) and N is the number of primitives stored in the data structure (this->size()).
Exceptions¶
Memory allocation with Kokkos may throw.
Notes¶
Example¶
See also