IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
ippl::FFTBase< Field, FFT, Backend, BufferType > Class Template Reference

#include <FFT.h>

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)
 ~FFTBase ()=default

Protected Types

template<typename FieldType>
using temp_view_type

Protected Member Functions

 FFTBase ()=default
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

Static Private Attributes

static constexpr unsigned Dim = Field::dim

Detailed Description

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
class ippl::FFTBase< Field, FFT, Backend, BufferType >

Definition at line 144 of file FFT.h.

Member Typedef Documentation

◆ heffteBackend

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
using ippl::FFTBase< Field, FFT, Backend, BufferType >::heffteBackend = Backend

Definition at line 148 of file FFT.h.

◆ Layout_t

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
using ippl::FFTBase< Field, FFT, Backend, BufferType >::Layout_t = FieldLayout<Dim>

Definition at line 150 of file FFT.h.

◆ temp_view_type

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
template<typename FieldType>
using ippl::FFTBase< Field, FFT, Backend, BufferType >::temp_view_type
protected
Initial value:

Definition at line 167 of file FFT.h.

◆ workspace_t

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
using ippl::FFTBase< Field, FFT, Backend, BufferType >::workspace_t = typename FFT<heffteBackend>::template buffer_container<BufferType>

Definition at line 149 of file FFT.h.

Constructor & Destructor Documentation

◆ FFTBase() [1/2]

template<typename Field, template< typename... > class FFT, typename Backend, typename T>
ippl::FFTBase< Field, FFT, Backend, T >::FFTBase ( const Layout_t & layout,
const ParameterList & params )

Definition at line 32 of file FFT.hpp.

References domainToBounds(), ippl::FieldLayout< Dim >::getLocalNDIndex(), and setup().

Here is the call graph for this function:

◆ ~FFTBase()

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
ippl::FFTBase< Field, FFT, Backend, BufferType >::~FFTBase ( )
default

◆ FFTBase() [2/2]

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
ippl::FFTBase< Field, FFT, Backend, BufferType >::FFTBase ( )
protecteddefault

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.

Definition at line 46 of file FFT.hpp.

References Dim, first(), ippl::NDIndex< Dim >::first(), and ippl::NDIndex< Dim >::length().

Referenced by FFTBase().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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.

Definition at line 66 of file FFT.hpp.

References ippl::a2a, ippl::a2av, ippl::Comm, ippl::ParameterList::get(), heffte_m, ippl::p2p, ippl::p2p_pl, and workspace_m.

Referenced by FFTBase().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ Dim

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
unsigned ippl::FFTBase< Field, FFT, Backend, BufferType >::Dim = Field::dim
staticconstexprprivate

Definition at line 145 of file FFT.h.

Referenced by domainToBounds().

◆ heffte_m

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
std::shared_ptr<FFT<heffteBackend, long long> > ippl::FFTBase< Field, FFT, Backend, BufferType >::heffte_m
protected

Definition at line 163 of file FFT.h.

Referenced by setup().

◆ tempField

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
temp_view_type<Field> ippl::FFTBase< Field, FFT, Backend, BufferType >::tempField
protected

Definition at line 170 of file FFT.h.

◆ workspace_m

template<typename Field, template< typename... > class FFT, typename Backend, typename BufferType = typename Field::value_type>
workspace_t ippl::FFTBase< Field, FFT, Backend, BufferType >::workspace_m
protected

Definition at line 164 of file FFT.h.

Referenced by setup().


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