IPPL API Reference
Independent Parallel Particle Layer C++ API
Loading...
Searching...
No Matches
ippl::FFTBase< Field, FFT, Backend, BufferType > Class Template Reference
+ Collaboration diagram for ippl::FFTBase< Field, FFT, Backend, BufferType >:

Public Types

using heffteBackend = Backend
 
using workspace_t = typename FFT< heffteBackend >::template buffer_container< BufferType >
 
using Layout_t = FieldLayout< Dim >
 

Public Member Functions

 FFTBase (const Layout_t &layout, const ParameterList &params)
 

Protected Types

template<typename FieldType >
using temp_view_type = typename Kokkos::View< typename FieldType::view_type::data_type, Kokkos::LayoutLeft, typename FieldType::memory_space >::uniform_type
 

Protected Member Functions

void domainToBounds (const NDIndex< Dim > &domain, std::array< long long, 3 > &low, std::array< long long, 3 > &high)
 
void setup (const heffte::box3d< long long > &inbox, const heffte::box3d< long long > &outbox, const ParameterList &params)
 

Protected Attributes

std::shared_ptr< FFT< heffteBackend, long long > > heffte_m
 
workspace_t workspace_m
 
temp_view_type< FieldtempField
 

Member Function Documentation

◆ domainToBounds()

template<typename Field , template< typename... > class FFT, typename Backend , typename T >
void ippl::FFTBase< Field, FFT, Backend, T >::domainToBounds ( const NDIndex< Dim > &  domain,
std::array< long long, 3 > &  low,
std::array< long long, 3 > &  high 
)
protected

Static cast to detail::long long (uint64_t) is necessary, as heffte::box3d requires it like that.

◆ setup()

template<typename Field , template< typename... > class FFT, typename Backend , typename T >
void ippl::FFTBase< Field, FFT, Backend, T >::setup ( const heffte::box3d< long long > &  inbox,
const heffte::box3d< long long > &  outbox,
const ParameterList params 
)
protected

setup performs the initialization necessary.


The documentation for this class was generated from the following files: