Block-Structured AMR Software Framework
amrex::FFT::R2X< T > Class Template Reference

Discrete Fourier Transform. More...

#include <AMReX_FFT_R2X.H>

Public Types

using MF = std::conditional_t< std::is_same_v< T, Real >, MultiFab, FabArray< BaseFab< T > > >
 
using cMF = FabArray< BaseFab< GpuComplex< T > > >
 

Public Member Functions

 R2X (Box const &domain, Array< std::pair< Boundary, Boundary >, AMREX_SPACEDIM > const &bc, Info const &info=Info{})
 
 ~R2X ()
 
 R2X (R2X const &)=delete
 
 R2X (R2X &&)=delete
 
R2Xoperator= (R2X const &)=delete
 
R2Xoperator= (R2X &&)=delete
 
scalingFactor () const
 
template<typename F >
void forwardThenBackward (MF const &inmf, MF &outmf, F const &post_forward)
 
template<int dim, typename FAB , typename F >
void post_forward_doit (FAB *fab, F const &f)
 
template<int Depth, typename F >
void forwardThenBackward_doit (MF const &inmf, MF &outmf, F const &post_forward, IntVect const &ngout=IntVect(0), Periodicity const &period=Periodicity::NonPeriodic())
 

Private Member Functions

void forward (MF const &inmf, MF &outmf)
 
void forward (MF const &inmf, cMF &outmf)
 
void forward (MF const &inmf)
 
void backward (MF const &inmf, MF &outmf, IntVect const &ngout, Periodicity const &period)
 
void backward (cMF const &inmf, MF &outmf, IntVect const &ngout, Periodicity const &period)
 
void backward ()
 

Private Attributes

Box m_dom_0
 
Array< std::pair< Boundary, Boundary >, AMREX_SPACEDIM > m_bc
 
Plan< T > m_fft_fwd_x {}
 
Plan< T > m_fft_bwd_x {}
 
Plan< T > m_fft_fwd_y {}
 
Plan< T > m_fft_bwd_y {}
 
Plan< T > m_fft_fwd_z {}
 
Plan< T > m_fft_bwd_z {}
 
std::unique_ptr< MultiBlockCommMetaDatam_cmd_cx2cy
 
std::unique_ptr< MultiBlockCommMetaDatam_cmd_rx2ry
 
std::unique_ptr< MultiBlockCommMetaDatam_cmd_cy2cz
 
std::unique_ptr< MultiBlockCommMetaDatam_cmd_ry2rz
 
std::unique_ptr< MultiBlockCommMetaDatam_cmd_cy2cx
 
std::unique_ptr< MultiBlockCommMetaDatam_cmd_ry2rx
 
std::unique_ptr< MultiBlockCommMetaDatam_cmd_cz2cy
 
std::unique_ptr< MultiBlockCommMetaDatam_cmd_rz2ry
 
Swap01 m_dtos_x2y {}
 
Swap01 m_dtos_y2x {}
 
Swap02 m_dtos_y2z {}
 
Swap02 m_dtos_z2y {}
 
MF m_rx
 
MF m_ry
 
MF m_rz
 
cMF m_cx
 
cMF m_cy
 
cMF m_cz
 
std::unique_ptr< char, DataDeleterm_data_1
 
std::unique_ptr< char, DataDeleterm_data_2
 
Box m_dom_rx
 
Box m_dom_ry
 
Box m_dom_rz
 
Box m_dom_cx
 
Box m_dom_cy
 
Box m_dom_cz
 
std::unique_ptr< R2X< T > > m_r2x_sub
 
detail::SubHelper m_sub_helper
 
Info m_info
 

Friends

template<typename U >
class Poisson
 
template<typename U >
class PoissonHybrid
 

Detailed Description

template<typename T = Real>
class amrex::FFT::R2X< T >

Discrete Fourier Transform.

This class supports Fourier transforms including cosine and sine transforms.

Member Typedef Documentation

◆ cMF

template<typename T = Real>
using amrex::FFT::R2X< T >::cMF = FabArray<BaseFab<GpuComplex<T> > >

◆ MF

template<typename T = Real>
using amrex::FFT::R2X< T >::MF = std::conditional_t<std::is_same_v<T,Real>, MultiFab, FabArray<BaseFab<T> > >

Constructor & Destructor Documentation

◆ R2X() [1/3]

template<typename T >
amrex::FFT::R2X< T >::R2X ( Box const &  domain,
Array< std::pair< Boundary, Boundary >, AMREX_SPACEDIM > const &  bc,
Info const &  info = Info{} 
)

◆ ~R2X()

template<typename T >
amrex::FFT::R2X< T >::~R2X

◆ R2X() [2/3]

template<typename T = Real>
amrex::FFT::R2X< T >::R2X ( R2X< T > const &  )
delete

◆ R2X() [3/3]

template<typename T = Real>
amrex::FFT::R2X< T >::R2X ( R2X< T > &&  )
delete

Member Function Documentation

◆ backward() [1/3]

template<typename T >
void amrex::FFT::R2X< T >::backward
private

◆ backward() [2/3]

template<typename T >
void amrex::FFT::R2X< T >::backward ( cMF const &  inmf,
MF outmf,
IntVect const &  ngout,
Periodicity const &  period 
)
private

◆ backward() [3/3]

template<typename T >
void amrex::FFT::R2X< T >::backward ( MF const &  inmf,
MF outmf,
IntVect const &  ngout,
Periodicity const &  period 
)
private

◆ forward() [1/3]

template<typename T >
void amrex::FFT::R2X< T >::forward ( MF const &  inmf)
private

◆ forward() [2/3]

template<typename T >
void amrex::FFT::R2X< T >::forward ( MF const &  inmf,
cMF outmf 
)
private

◆ forward() [3/3]

template<typename T >
void amrex::FFT::R2X< T >::forward ( MF const &  inmf,
MF outmf 
)
private

◆ forwardThenBackward()

template<typename T >
template<typename F >
void amrex::FFT::R2X< T >::forwardThenBackward ( MF const &  inmf,
MF outmf,
F const &  post_forward 
)

◆ forwardThenBackward_doit()

template<typename T >
template<int Depth, typename F >
void amrex::FFT::R2X< T >::forwardThenBackward_doit ( MF const &  inmf,
MF outmf,
F const &  post_forward,
IntVect const &  ngout = IntVect(0),
Periodicity const &  period = Periodicity::NonPeriodic() 
)

◆ operator=() [1/2]

template<typename T = Real>
R2X& amrex::FFT::R2X< T >::operator= ( R2X< T > &&  )
delete

◆ operator=() [2/2]

template<typename T = Real>
R2X& amrex::FFT::R2X< T >::operator= ( R2X< T > const &  )
delete

◆ post_forward_doit()

template<typename T >
template<int dim, typename FAB , typename F >
void amrex::FFT::R2X< T >::post_forward_doit ( FAB *  fab,
F const &  f 
)

◆ scalingFactor()

template<typename T >
T amrex::FFT::R2X< T >::scalingFactor

Friends And Related Function Documentation

◆ Poisson

template<typename T = Real>
template<typename U >
friend class Poisson
friend

◆ PoissonHybrid

template<typename T = Real>
template<typename U >
friend class PoissonHybrid
friend

Member Data Documentation

◆ m_bc

template<typename T = Real>
Array<std::pair<Boundary,Boundary>,AMREX_SPACEDIM> amrex::FFT::R2X< T >::m_bc
private

◆ m_cmd_cx2cy

template<typename T = Real>
std::unique_ptr<MultiBlockCommMetaData> amrex::FFT::R2X< T >::m_cmd_cx2cy
private

◆ m_cmd_cy2cx

template<typename T = Real>
std::unique_ptr<MultiBlockCommMetaData> amrex::FFT::R2X< T >::m_cmd_cy2cx
private

◆ m_cmd_cy2cz

template<typename T = Real>
std::unique_ptr<MultiBlockCommMetaData> amrex::FFT::R2X< T >::m_cmd_cy2cz
private

◆ m_cmd_cz2cy

template<typename T = Real>
std::unique_ptr<MultiBlockCommMetaData> amrex::FFT::R2X< T >::m_cmd_cz2cy
private

◆ m_cmd_rx2ry

template<typename T = Real>
std::unique_ptr<MultiBlockCommMetaData> amrex::FFT::R2X< T >::m_cmd_rx2ry
private

◆ m_cmd_ry2rx

template<typename T = Real>
std::unique_ptr<MultiBlockCommMetaData> amrex::FFT::R2X< T >::m_cmd_ry2rx
private

◆ m_cmd_ry2rz

template<typename T = Real>
std::unique_ptr<MultiBlockCommMetaData> amrex::FFT::R2X< T >::m_cmd_ry2rz
private

◆ m_cmd_rz2ry

template<typename T = Real>
std::unique_ptr<MultiBlockCommMetaData> amrex::FFT::R2X< T >::m_cmd_rz2ry
private

◆ m_cx

template<typename T = Real>
cMF amrex::FFT::R2X< T >::m_cx
private

◆ m_cy

template<typename T = Real>
cMF amrex::FFT::R2X< T >::m_cy
private

◆ m_cz

template<typename T = Real>
cMF amrex::FFT::R2X< T >::m_cz
private

◆ m_data_1

template<typename T = Real>
std::unique_ptr<char,DataDeleter> amrex::FFT::R2X< T >::m_data_1
private

◆ m_data_2

template<typename T = Real>
std::unique_ptr<char,DataDeleter> amrex::FFT::R2X< T >::m_data_2
private

◆ m_dom_0

template<typename T = Real>
Box amrex::FFT::R2X< T >::m_dom_0
private

◆ m_dom_cx

template<typename T = Real>
Box amrex::FFT::R2X< T >::m_dom_cx
private

◆ m_dom_cy

template<typename T = Real>
Box amrex::FFT::R2X< T >::m_dom_cy
private

◆ m_dom_cz

template<typename T = Real>
Box amrex::FFT::R2X< T >::m_dom_cz
private

◆ m_dom_rx

template<typename T = Real>
Box amrex::FFT::R2X< T >::m_dom_rx
private

◆ m_dom_ry

template<typename T = Real>
Box amrex::FFT::R2X< T >::m_dom_ry
private

◆ m_dom_rz

template<typename T = Real>
Box amrex::FFT::R2X< T >::m_dom_rz
private

◆ m_dtos_x2y

template<typename T = Real>
Swap01 amrex::FFT::R2X< T >::m_dtos_x2y {}
private

◆ m_dtos_y2x

template<typename T = Real>
Swap01 amrex::FFT::R2X< T >::m_dtos_y2x {}
private

◆ m_dtos_y2z

template<typename T = Real>
Swap02 amrex::FFT::R2X< T >::m_dtos_y2z {}
private

◆ m_dtos_z2y

template<typename T = Real>
Swap02 amrex::FFT::R2X< T >::m_dtos_z2y {}
private

◆ m_fft_bwd_x

template<typename T = Real>
Plan<T> amrex::FFT::R2X< T >::m_fft_bwd_x {}
private

◆ m_fft_bwd_y

template<typename T = Real>
Plan<T> amrex::FFT::R2X< T >::m_fft_bwd_y {}
private

◆ m_fft_bwd_z

template<typename T = Real>
Plan<T> amrex::FFT::R2X< T >::m_fft_bwd_z {}
private

◆ m_fft_fwd_x

template<typename T = Real>
Plan<T> amrex::FFT::R2X< T >::m_fft_fwd_x {}
private

◆ m_fft_fwd_y

template<typename T = Real>
Plan<T> amrex::FFT::R2X< T >::m_fft_fwd_y {}
private

◆ m_fft_fwd_z

template<typename T = Real>
Plan<T> amrex::FFT::R2X< T >::m_fft_fwd_z {}
private

◆ m_info

template<typename T = Real>
Info amrex::FFT::R2X< T >::m_info
private

◆ m_r2x_sub

template<typename T = Real>
std::unique_ptr<R2X<T> > amrex::FFT::R2X< T >::m_r2x_sub
private

◆ m_rx

template<typename T = Real>
MF amrex::FFT::R2X< T >::m_rx
private

◆ m_ry

template<typename T = Real>
MF amrex::FFT::R2X< T >::m_ry
private

◆ m_rz

template<typename T = Real>
MF amrex::FFT::R2X< T >::m_rz
private

◆ m_sub_helper

template<typename T = Real>
detail::SubHelper amrex::FFT::R2X< T >::m_sub_helper
private

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