Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar > Class Template Reference

STK coarse-search neighbor list with compressed owner-pair storage and per-object periodic image shifts. More...

#include <STKSearchNeighborList.hpp>

Inheritance diagram for mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >:
[legend]

Public Types

Aliases
using memory_space = MemorySpace
using execution_space = typename MemorySpace::execution_space
using image_shift_scalar = ImageShiftScalar
using size_type = size_t
using source_index_type = size_type
using image_shift_type = mundy::Vector3<image_shift_scalar>
using entity_view_t = Kokkos::View<stk::mesh::Entity*, memory_space>
using source_index_view_t = Kokkos::View<source_index_type*, memory_space>
using offset_view_t = Kokkos::View<size_type*, memory_space>
using image_shift_view_t = Kokkos::View<image_shift_type*, memory_space>

Public Member Functions

Constructors
 PeriodicSTKSearchNeighborList ()=default
 Default constructor.
 PeriodicSTKSearchNeighborList (const PeriodicSTKSearchNeighborList &)=default
 Default copy and move constructors/operators.
 PeriodicSTKSearchNeighborList (PeriodicSTKSearchNeighborList &&)=default
PeriodicSTKSearchNeighborListoperator= (const PeriodicSTKSearchNeighborList &)=default
PeriodicSTKSearchNeighborListoperator= (PeriodicSTKSearchNeighborList &&)=default
 PeriodicSTKSearchNeighborList (const stk::mesh::Selector &target_selector, const stk::mesh::Selector &source_selector, const entity_view_t &target_entities, const entity_view_t &source_entities, const image_shift_view_t &target_image_shifts, const source_index_view_t &source_owner_indices, const image_shift_view_t &source_image_shifts, const offset_view_t &offsets)
 Construct a periodic list from already-built compressed storage.
Accessors
size_type num_targets () const noexcept
 Get the number of enumerable target owners.
size_type num_sources () const noexcept
 Get the number of enumerable source owners.
const stk::mesh::Selector & target_selector () const noexcept
 Get the selector defining the target owner chunk.
const stk::mesh::Selector & source_selector () const noexcept
 Get the selector defining the source owner chunk.
size_type size () const noexcept
 Get the total number of stored periodic neighbor pairs.
size_type num_neighbors (size_type target_index) const
 Get the number of neighbors for a target owner ordinal.
source_index_type source_index (size_type target_index, size_type neighbor_ordinal) const
 Get the source owner ordinal for a target owner and neighbor ordinal.
image_shift_type source_image_shift (size_type target_index, size_type neighbor_ordinal) const
 Get the source owner's image shift for a stored pair (original → imaged reference point).
image_shift_type target_image_shift (size_type target_index) const
 Get a target owner's image shift: the displacement from its original to its imaged reference point.
stk::mesh::Entity get_neighbor (size_type target_index, size_type neighbor_ordinal) const
 Get the neighbor owner entity for a target owner and neighbor ordinal.
stk::mesh::Entity target_entity (size_type target_index) const
 Get the target owner entity for a target owner ordinal.
stk::mesh::Entity source_entity (source_index_type source_index) const
 Get the source owner entity for a source owner ordinal.
entity_view_t target_entities () const noexcept
 Get the raw target owner entity view.
entity_view_t source_entities () const noexcept
 Get the raw source owner entity view.
source_index_view_t source_owner_indices () const noexcept
 Get the raw flattened source-owner ordinal view.
image_shift_view_t source_image_shifts () const noexcept
 Get the raw flattened source-image-shift view.
image_shift_view_t target_image_shifts () const noexcept
 Get the raw per-target-owner image-shift view.
offset_view_t offsets () const noexcept
 Get the raw target-offset view.

Detailed Description

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
class mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >

Consumes periodic STK coarse-search image pairs, collapses them to owner ordinals, and retains the per-object image shifts: a target shift per owner and a source shift per stored pair. target_image_shift(target_index) and source_image_shift(target_index, neighbor_ordinal) give the per-object shifts; a kernel that wants the pairwise relative shift computes source_image_shifttarget_image_shift itself.

Member Typedef Documentation

◆ memory_space

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
using mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::memory_space = MemorySpace

◆ execution_space

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
using mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::execution_space = typename MemorySpace::execution_space

◆ image_shift_scalar

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
using mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::image_shift_scalar = ImageShiftScalar

◆ size_type

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
using mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::size_type = size_t

◆ source_index_type

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
using mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::source_index_type = size_type

◆ image_shift_type

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
using mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::image_shift_type = mundy::Vector3<image_shift_scalar>

◆ entity_view_t

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
using mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::entity_view_t = Kokkos::View<stk::mesh::Entity*, memory_space>

◆ source_index_view_t

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
using mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::source_index_view_t = Kokkos::View<source_index_type*, memory_space>

◆ offset_view_t

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
using mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::offset_view_t = Kokkos::View<size_type*, memory_space>

◆ image_shift_view_t

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
using mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::image_shift_view_t = Kokkos::View<image_shift_type*, memory_space>

Constructor & Destructor Documentation

◆ PeriodicSTKSearchNeighborList() [1/4]

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::PeriodicSTKSearchNeighborList ( )
default

◆ PeriodicSTKSearchNeighborList() [2/4]

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::PeriodicSTKSearchNeighborList ( const PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar > & )
default

◆ PeriodicSTKSearchNeighborList() [3/4]

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::PeriodicSTKSearchNeighborList ( PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar > && )
default

◆ PeriodicSTKSearchNeighborList() [4/4]

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::PeriodicSTKSearchNeighborList ( const stk::mesh::Selector & target_selector,
const stk::mesh::Selector & source_selector,
const entity_view_t & target_entities,
const entity_view_t & source_entities,
const image_shift_view_t & target_image_shifts,
const source_index_view_t & source_owner_indices,
const image_shift_view_t & source_image_shifts,
const offset_view_t & offsets )
inline
Parameters
target_selector[in] Selector defining the target owner chunk used during the build.
source_selector[in] Selector defining the source owner chunk used during the build.
target_entities[in] Target owner entities indexed by dense target owner ordinal.
source_entities[in] Source owner entities indexed by dense source owner ordinal.
target_image_shifts[in] Per-target-owner image shift (target's original → imaged reference point).
source_owner_indices[in] Dense source owner ordinal for every stored pair.
source_image_shifts[in] Per-pair source owner image shift (original → imaged reference point).
offsets[in] Target owner offsets into source_owner_indices; extent must be num_targets + 1.

Member Function Documentation

◆ operator=() [1/2]

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
PeriodicSTKSearchNeighborList & mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::operator= ( const PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar > & )
default

◆ operator=() [2/2]

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
PeriodicSTKSearchNeighborList & mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::operator= ( PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar > && )
default

◆ num_targets()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
size_type mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::num_targets ( ) const
inlinenoexcept

◆ num_sources()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
size_type mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::num_sources ( ) const
inlinenoexcept

◆ target_selector()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
const stk::mesh::Selector & mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::target_selector ( ) const
inlinenoexcept

◆ source_selector()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
const stk::mesh::Selector & mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::source_selector ( ) const
inlinenoexcept

◆ size()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
size_type mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::size ( ) const
inlinenoexcept

◆ num_neighbors()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
size_type mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::num_neighbors ( size_type target_index) const
inline
Parameters
target_index[in] Dense target owner ordinal.

◆ source_index()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
source_index_type mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::source_index ( size_type target_index,
size_type neighbor_ordinal ) const
inline
Parameters
target_index[in] Dense target owner ordinal.
neighbor_ordinal[in] Ordinal in the target's neighbor range.

◆ source_image_shift()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
image_shift_type mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::source_image_shift ( size_type target_index,
size_type neighbor_ordinal ) const
inline
Parameters
target_index[in] Dense target owner ordinal.
neighbor_ordinal[in] Ordinal in the target's neighbor range.

◆ target_image_shift()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
image_shift_type mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::target_image_shift ( size_type target_index) const
inline
Parameters
target_index[in] Dense target owner ordinal.

◆ get_neighbor()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
stk::mesh::Entity mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::get_neighbor ( size_type target_index,
size_type neighbor_ordinal ) const
inline
Parameters
target_index[in] Dense target owner ordinal.
neighbor_ordinal[in] Ordinal in the target's neighbor range.

◆ target_entity()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
stk::mesh::Entity mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::target_entity ( size_type target_index) const
inline
Parameters
target_index[in] Dense target owner ordinal.

◆ source_entity()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
stk::mesh::Entity mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::source_entity ( source_index_type source_index) const
inline
Parameters
source_index[in] Dense source owner ordinal.

◆ target_entities()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
entity_view_t mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::target_entities ( ) const
inlinenoexcept

◆ source_entities()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
entity_view_t mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::source_entities ( ) const
inlinenoexcept

◆ source_owner_indices()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
source_index_view_t mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::source_owner_indices ( ) const
inlinenoexcept

◆ source_image_shifts()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
image_shift_view_t mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::source_image_shifts ( ) const
inlinenoexcept

◆ target_image_shifts()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
image_shift_view_t mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::target_image_shifts ( ) const
inlinenoexcept

◆ offsets()

template<typename MemorySpace = stk::ngp::MemSpace, typename ImageShiftScalar = float>
offset_view_t mundy::search::PeriodicSTKSearchNeighborList< MemorySpace, ImageShiftScalar >::offsets ( ) const
inlinenoexcept