Cabana 0.8.0-dev
 
Loading...
Searching...
No Matches
Cabana_Experimental_NeighborList.hpp File Reference

ArborX tree-based neighbor lists. More...

#include <Cabana_NeighborList.hpp>
#include <Cabana_Slice.hpp>
#include <Cabana_Types.hpp>
#include <ArborX.hpp>
#include <Kokkos_Core.hpp>
#include <cassert>
Include dependency graph for Cabana_Experimental_NeighborList.hpp:

Go to the source code of this file.

Classes

struct  ArborX::AccessTraits< Positions, PrimitivesTag, std::enable_if_t< Cabana::is_slice< Positions >{}||Kokkos::is_view< Positions >{}> >
 Neighbor access trait for Cabana slice and/or Kokkos View. More...
 
struct  ArborX::AccessTraits< Cabana::Experimental::Impl::SubPositionsAndRadius< Positions >, PredicatesTag >
 Neighbor access trait. More...
 
struct  Cabana::Experimental::CrsGraph< MemorySpace, Tag >
 1d ArborX neighbor list storage layout. More...
 
struct  Cabana::Experimental::Dense< MemorySpace, Tag >
 2d ArborX neighbor list storage layout. More...
 
class  Cabana::NeighborList< Experimental::CrsGraph< MemorySpace, Tag > >
 1d ArborX NeighborList interface. More...
 
class  Cabana::NeighborList< Experimental::Dense< MemorySpace, Tag > >
 2d ArborX NeighborList interface. More...
 

Namespaces

namespace  Cabana
 Core: particle data structures and algorithms.
 

Functions

template<typename ExecutionSpace, typename Positions, typename Tag>
auto Cabana::Experimental::makeNeighborList (ExecutionSpace space, Tag, Positions const &positions, typename Positions::size_type first, typename Positions::size_type last, typename Positions::value_type radius, int buffer_size=0)
 Neighbor list implementation using ArborX for particles within the interaction distance with a 1D compressed layout for particles and neighbors.
 
template<typename Positions, typename Tag>
auto Cabana::Experimental::makeNeighborList (Tag tag, Positions const &positions, typename Positions::size_type first, typename Positions::size_type last, typename Positions::value_type radius, int buffer_size=0)
 Neighbor list implementation using ArborX for particles within the interaction distance with a 1D compressed layout for particles and neighbors.
 
template<typename DeviceType, typename Positions, typename Tag>
auto Cabana::Experimental::makeNeighborList (Tag tag, Positions const &positions, typename Positions::size_type first, typename Positions::size_type last, typename Positions::value_type radius, int buffer_size=0)
 Neighbor list implementation using ArborX for particles within the interaction distance with a 1D compressed layout for particles and neighbors.
 
template<typename ExecutionSpace, typename Positions, typename Tag>
auto Cabana::Experimental::make2DNeighborList (ExecutionSpace space, Tag, Positions const &positions, typename Positions::size_type first, typename Positions::size_type last, typename Positions::value_type radius, int buffer_size=0)
 Neighbor list implementation using ArborX for particles within the interaction distance with a 2D layout for particles and neighbors.
 
template<typename Positions, typename Tag>
auto Cabana::Experimental::make2DNeighborList (Tag tag, Positions const &positions, typename Positions::size_type first, typename Positions::size_type last, typename Positions::value_type radius, int buffer_size=0)
 Neighbor list implementation using ArborX for particles within the interaction distance with a 2D layout for particles and neighbors.
 
template<typename DeviceType, typename Positions, typename Tag>
auto Cabana::Experimental::make2DNeighborList (Tag tag, Positions const &positions, typename Positions::size_type first, typename Positions::size_type last, typename Positions::value_type radius, int buffer_size=0)
 Neighbor list implementation using ArborX for particles within the interaction distance with a 2D layout for particles and neighbors.
 

Detailed Description

ArborX tree-based neighbor lists.

Function Documentation

◆ make2DNeighborList() [1/3]

template<typename ExecutionSpace, typename Positions, typename Tag>
auto Cabana::Experimental::make2DNeighborList ( ExecutionSpace space,
Tag ,
Positions const & positions,
typename Positions::size_type first,
typename Positions::size_type last,
typename Positions::value_type radius,
int buffer_size = 0 )

Neighbor list implementation using ArborX for particles within the interaction distance with a 2D layout for particles and neighbors.

Template Parameters
ExecutionSpaceKokkos execution space.
PositionsThe position type.
TagTag indicating whether to build a full or half neighbor list.
Parameters
spaceKokkos execution space.
positionsThe particle positions.
firstThe beginning particle index to compute neighbors for.
lastThe end particle index to compute neighbors for.
radiusThe radius of the neighborhood. Particles within this radius are considered neighbors.
buffer_sizeOptional guess for maximum number of neighbors per particle.

Neighbor list implementation most appropriate for highly varying particle densities.

◆ make2DNeighborList() [2/3]

template<typename Positions, typename Tag>
auto Cabana::Experimental::make2DNeighborList ( Tag tag,
Positions const & positions,
typename Positions::size_type first,
typename Positions::size_type last,
typename Positions::value_type radius,
int buffer_size = 0 )

Neighbor list implementation using ArborX for particles within the interaction distance with a 2D layout for particles and neighbors.

Template Parameters
PositionsThe position type.
TagTag indicating whether to build a full or half neighbor list.
Parameters
tagTag indicating whether to build a full or half neighbor list.
positionsThe particle positions.
firstThe beginning particle index to compute neighbors for.
lastThe end particle index to compute neighbors for.
radiusThe radius of the neighborhood. Particles within this radius are considered neighbors.
buffer_sizeOptional guess for maximum number of neighbors per particle.

Neighbor list implementation most appropriate for highly varying particle densities.

◆ make2DNeighborList() [3/3]

template<typename DeviceType, typename Positions, typename Tag>
auto Cabana::Experimental::make2DNeighborList ( Tag tag,
Positions const & positions,
typename Positions::size_type first,
typename Positions::size_type last,
typename Positions::value_type radius,
int buffer_size = 0 )

Neighbor list implementation using ArborX for particles within the interaction distance with a 2D layout for particles and neighbors.

Template Parameters
DeviceTypeKokkos device type.
PositionsThe position type.
TagTag indicating whether to build a full or half neighbor list.
Parameters
tagTag indicating whether to build a full or half neighbor list.
positionsThe particle positions.
firstThe beginning particle index to compute neighbors for.
lastThe end particle index to compute neighbors for.
radiusThe radius of the neighborhood. Particles within this radius are considered neighbors.
buffer_sizeOptional guess for maximum number of neighbors per particle.

Neighbor list implementation most appropriate for highly varying particle densities.

◆ makeNeighborList() [1/3]

template<typename ExecutionSpace, typename Positions, typename Tag>
auto Cabana::Experimental::makeNeighborList ( ExecutionSpace space,
Tag ,
Positions const & positions,
typename Positions::size_type first,
typename Positions::size_type last,
typename Positions::value_type radius,
int buffer_size = 0 )

Neighbor list implementation using ArborX for particles within the interaction distance with a 1D compressed layout for particles and neighbors.

Template Parameters
ExecutionSpaceKokkos execution space.
PositionsThe position type.
AlgorithmTagTag indicating whether to build a full or half neighbor list.
Parameters
spaceKokkos execution space.
positionsThe particle positions.
firstThe beginning particle index to compute neighbors for.
lastThe end particle index to compute neighbors for.
radiusThe radius of the neighborhood. Particles within this radius are considered neighbors.
buffer_sizeOptional guess for maximum number of neighbors.

Neighbor list implementation most appropriate for highly varying particle densities.

◆ makeNeighborList() [2/3]

template<typename Positions, typename Tag>
auto Cabana::Experimental::makeNeighborList ( Tag tag,
Positions const & positions,
typename Positions::size_type first,
typename Positions::size_type last,
typename Positions::value_type radius,
int buffer_size = 0 )

Neighbor list implementation using ArborX for particles within the interaction distance with a 1D compressed layout for particles and neighbors.

Template Parameters
PositionsThe position type.
TagTag indicating whether to build a full or half neighbor list.
Parameters
tagTag indicating whether to build a full or half neighbor list.
positionsThe containing the particle positions.
firstThe beginning particle index to compute neighbors for.
lastThe end particle index to compute neighbors for.
radiusThe radius of the neighborhood. Particles within this radius are considered neighbors.
buffer_sizeOptional guess for maximum number of neighbors.

Neighbor list implementation most appropriate for highly varying particle densities.

◆ makeNeighborList() [3/3]

template<typename DeviceType, typename Positions, typename Tag>
auto Cabana::Experimental::makeNeighborList ( Tag tag,
Positions const & positions,
typename Positions::size_type first,
typename Positions::size_type last,
typename Positions::value_type radius,
int buffer_size = 0 )

Neighbor list implementation using ArborX for particles within the interaction distance with a 1D compressed layout for particles and neighbors.

Template Parameters
DeviceTypeKokkos device type.
PositionsThe position type.
TagTag indicating whether to build a full or half neighbor list.
Parameters
tagTag indicating whether to build a full or half neighbor list.
positionsThe particle positions.
firstThe beginning particle index to compute neighbors for.
lastThe end particle index to compute neighbors for.
radiusThe radius of the neighborhood. Particles within this radius are considered neighbors.
buffer_sizeOptional guess for maximum number of neighbors.

Neighbor list implementation most appropriate for highly varying particle densities.