|
OPALX (Object Oriented Parallel Accelerator Library for Exascale) MINIorX
OPALX
|
real-to-complex FFT class More...
#include <FFT.h>


Public Types | |
| using | Complex_t = Kokkos::complex< Real_t > |
| using | ComplexField = typename Field< Complex_t, Dim, typename RealField::Mesh_t, typename RealField::Centering_t, typename RealField::execution_space >::uniform_type |
| using | heffteBackend = Backend |
| using | workspace_t = typename FFT< heffteBackend >::template buffer_container< BufferType > |
| using | Layout_t = FieldLayout< Dim > |
Public Member Functions | |
| FFT (const Layout_t &layoutInput, const Layout_t &layoutOutput, const ParameterList ¶ms) | |
| Create a new FFT object with the layout for the input and output Fields and parameters for heffte. More... | |
| void | warmup (RealField &f, ComplexField &g) |
| void | transform (TransformDirection direction, RealField &f, ComplexField &g) |
Protected Types | |
| 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 ¶ms) |
| setup performs the initialization necessary. More... | |
Protected Attributes | |
| std::shared_ptr< heffte::fft3d_r2c< heffteBackend, long long > > | heffte_m |
| workspace_t | workspace_m |
| temp_view_type< RealField > | tempField |
Private Types | |
| using | Real_t = typename RealField::value_type |
| using | Base = FFTBase< RealField, heffte::fft3d_r2c, typename detail::HeffteBackendType< typename RealField ::memory_space >::backend, typename Kokkos::complex< typename RealField::value_type > > |
Private Attributes | |
| Base::template temp_view_type< ComplexField > | tempFieldComplex |
Static Private Attributes | |
| static constexpr unsigned | Dim = RealField::dim |
real-to-complex FFT class
|
private |
| using ippl::FFT< RCTransform, RealField >::Complex_t = Kokkos::complex<Real_t> |
| using ippl::FFT< RCTransform, RealField >::ComplexField = typename Field<Complex_t, Dim, typename RealField::Mesh_t, typename RealField::Centering_t, typename RealField::execution_space>::uniform_type |
| using ippl::FFTBase< Field, FFT, Backend, BufferType >::heffteBackend = Backend |
| using ippl::FFTBase< Field, FFT, Backend, BufferType >::Layout_t = FieldLayout<Dim> |
|
private |
|
protectedinherited |
| using ippl::FFTBase< Field, FFT, Backend, BufferType >::workspace_t = typename FFT<heffteBackend>::template buffer_container<BufferType> |
| ippl::FFT< RCTransform, RealField >::FFT | ( | const Layout_t & | layoutInput, |
| const Layout_t & | layoutOutput, | ||
| const ParameterList & | params | ||
| ) |
Create a new FFT object with the layout for the input and output Fields and parameters for heffte.
Create a new FFT object of type RCTransform, with given input and output layouts and heffte parameters.
Heffte requires to pass a 3D array even for 2D and 1D FFTs we just have to make the length in other dimensions to be 1.
|
protectedinherited |
|
protectedinherited |
| void ippl::FFT< RCTransform, RealField >::transform | ( | TransformDirection | direction, |
| RealField & | f, | ||
| ComplexField & | g | ||
| ) |
Perform FFT
| direction | Forward or backward transformation |
| f | Field whose transformation to compute |
| g | Field in which to store the transformation |
This copy to a temporary Kokkos view is needed because of following reasons: 1) heffte wants the input and output fields without ghost layers 2) heffte accepts data in layout left (by default) eventhough this can be changed during heffte box creation
Definition at line 203 of file FFT.hpp.
References ippl::apply(), ippl::BACKWARD, Dim, ippl::FORWARD, ippl::getRangePolicy(), ippl::parallel_for(), and ippl::detail::shrinkView().

| void ippl::FFT< RCTransform, RealField >::warmup | ( | RealField & | f, |
| ComplexField & | g | ||
| ) |
Warmup the FFT object by forward & backward FFT on an empty field
Definition at line 197 of file FFT.hpp.
References ippl::BACKWARD, and ippl::FORWARD.
|
staticconstexprprivate |
|
protectedinherited |
|
protectedinherited |
|
private |
|
protectedinherited |