PhyStar  v0.0.0 thu24
tfft3d::FFT3D< T_real, GroupID, TypeID > Class Template Reference

#include <fft3d.hpp>

Collaboration diagram for tfft3d::FFT3D< T_real, GroupID, TypeID >:

Public Member Functions

 FFT3D ()
 
 ~FFT3D ()
 
auto & setSizeBeforeTrans (int nx, int ny, int nz)
 
auto & setSizeAfterTrans (int nx, int ny, int nz)
 
auto & setGhostSizeBeforeTrans (std::vector< int > gh0, std::vector< int > gh1, std::vector< int > gh2)
 
auto & setGhostSizeAfterTrans (std::vector< int > gh0, std::vector< int > gh1, std::vector< int > gh2)
 
auto & setFirstDecomp (int axis_npr, int axis_npc)
 
auto & setSecondDecomp (int axis_npr, int axis_npc)
 
auto & setThirdDecomp (int axis_npr, int axis_npc)
 
auto & setFirstFFTOp (int fft_type)
 
auto & setSecondFFTOp (int fft_type)
 
auto & setThirdFFTOp (int fft_type)
 
auto & setFFTOp (int fft_type0, int fft_type1, int fft_type2)
 
auto & setMPIDecomp (const int npr, const int npc)
 
std::pair< std::vector< int >, std::vector< int > > getLocalIndexBeforeTrans ()
 
std::pair< std::vector< int >, std::vector< int > > getLocalIndexAfterTrans ()
 
std::vector< int > getSizeBeforeTrans ()
 
std::vector< int > getSizeAfterTrans ()
 
std::vector< int > getLocalSizeBeforeTrans ()
 
std::vector< int > getLocalSizeAfterTrans ()
 
auto getMaxBufferSize ()
 
auto getMPIComm ()
 
void Init ()
 
void ForwardTrans (auto *in, auto *out)
 
void BackwardTrans (auto *in, auto *out)
 
void RemoveGhost (auto *in, auto *out, std::vector< int > gh0, std::vector< int > gh1, std::vector< int > gh2, GhostFlag flag=GhostFlag::Before)
 
void AddGhost (auto *in, auto *out, std::vector< int > gh0, std::vector< int > gh1, std::vector< int > gh2, GhostFlag flag=GhostFlag::Before)
 

Private Member Functions

void _InitFFTAxisOrder ()
 
void _InitDecomp ()
 
void _InitDecompSize ()
 
void _InitFFTSizeBeforeTrans ()
 
void _InitFFTSizeAfterTrans ()
 
void _InitIsSameSize ()
 
void _InitTempArray ()
 
void _InitLocalIndex ()
 

Private Attributes

Cart3DPencilDecomp< std::complex< T_real >, GroupID > decomp0
 
Cart3DPencilDecomp< std::complex< T_real >, GroupID2decomp1
 
Cart3DPencilDecomp< T_real, GroupID3rdecomp0
 
Cart3DPencilDecomp< T_real, GroupID4rdecomp1
 
bool _is_same_size = false
 
int _npr = 1
 
int _npc = 1
 
size_t _maxbuffersize = 0
 
int _size_before [3] = {0, 0, 0}
 
int _size_after [3] = {0, 0, 0}
 
int _size_decomp0 [3] = {0, 0, 0}
 
int _size_decomp1 [3] = {0, 0, 0}
 
int _axis_npr_list [3] = {kY, kX, kX}
 
int _axis_npc_list [3] = {kZ, kZ, kY}
 
int _fft_axis_order [3] = {kX, kY, kZ}
 
int _fft_type_list [3] = {kNULL, kNULL, kNULL}
 
std::vector< std::vector< int > > _fft_size_before = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}
 
std::vector< std::vector< int > > _fft_size_after = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}
 
std::vector< std::vector< int > > _local_index_before = {{0, 0, 0}, {0, 0, 0}}
 
std::vector< std::vector< int > > _local_index_after = {{0, 0, 0}, {0, 0, 0}}
 
std::complex< T_real > * ctemp0 = nullptr
 
std::complex< T_real > * ctemp1 = nullptr
 
T_real * rtemp0 = nullptr
 
T_real * rtemp1 = nullptr
 

Static Private Attributes

static constexpr auto GroupID2 = 2000000000 - GroupID
 
static constexpr auto GroupID3 = 3000000000 - GroupID
 
static constexpr auto GroupID4 = 4000000000 - GroupID
 

Constructor & Destructor Documentation

◆ FFT3D()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
tfft3d::FFT3D< T_real, GroupID, TypeID >::FFT3D ( )
inline

◆ ~FFT3D()

Member Function Documentation

◆ _InitDecomp()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::_InitDecomp
private

References tfft3d::CC, tfft3d::RC, and tfft3d::RR.

◆ _InitDecompSize()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::_InitDecompSize
private

References tfft3d::kDFTc2r, and tfft3d::kDFTr2c.

◆ _InitFFTAxisOrder()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::_InitFFTAxisOrder
private

◆ _InitFFTSizeAfterTrans()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::_InitFFTSizeAfterTrans
private

References tfft3d::CC.

◆ _InitFFTSizeBeforeTrans()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::_InitFFTSizeBeforeTrans
private

References tfft3d::CC, tfft3d::RC, and tfft3d::RR.

◆ _InitIsSameSize()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::_InitIsSameSize
private

◆ _InitLocalIndex()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::_InitLocalIndex
private

References tfft3d::CC, tfft3d::RC, and tfft3d::RR.

◆ _InitTempArray()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::_InitTempArray
private

◆ AddGhost()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::AddGhost ( auto *  in,
auto *  out,
std::vector< int >  gh0,
std::vector< int >  gh1,
std::vector< int >  gh2,
GhostFlag  flag = GhostFlag::Before 
)

References tfft3d::Before.

Here is the caller graph for this function:

◆ BackwardTrans()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::BackwardTrans ( auto *  in,
auto *  out 
)

References tfft3d::CC, tfft3d::PencilDFTBackward(), tfft3d::RC, and tfft3d::RR.

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

◆ ForwardTrans()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::ForwardTrans ( auto *  in,
auto *  out 
)

References tfft3d::CC, tfft3d::PencilDFTForward(), tfft3d::RC, and tfft3d::RR.

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

◆ getLocalIndexAfterTrans()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::pair<std::vector<int>, std::vector<int> > tfft3d::FFT3D< T_real, GroupID, TypeID >::getLocalIndexAfterTrans ( )
inline

References tfft3d::FFT3D< T_real, GroupID, TypeID >::_local_index_after.

Here is the caller graph for this function:

◆ getLocalIndexBeforeTrans()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::pair<std::vector<int>, std::vector<int> > tfft3d::FFT3D< T_real, GroupID, TypeID >::getLocalIndexBeforeTrans ( )
inline

◆ getLocalSizeAfterTrans()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::vector<int> tfft3d::FFT3D< T_real, GroupID, TypeID >::getLocalSizeAfterTrans ( )
inline

References tfft3d::FFT3D< T_real, GroupID, TypeID >::_fft_size_after.

Here is the caller graph for this function:

◆ getLocalSizeBeforeTrans()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::vector<int> tfft3d::FFT3D< T_real, GroupID, TypeID >::getLocalSizeBeforeTrans ( )
inline

◆ getMaxBufferSize()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
auto tfft3d::FFT3D< T_real, GroupID, TypeID >::getMaxBufferSize ( )
inline

References tfft3d::FFT3D< T_real, GroupID, TypeID >::_maxbuffersize.

Here is the caller graph for this function:

◆ getMPIComm()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
auto tfft3d::FFT3D< T_real, GroupID, TypeID >::getMPIComm ( )
inline

◆ getSizeAfterTrans()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::vector<int> tfft3d::FFT3D< T_real, GroupID, TypeID >::getSizeAfterTrans ( )
inline

◆ getSizeBeforeTrans()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::vector<int> tfft3d::FFT3D< T_real, GroupID, TypeID >::getSizeBeforeTrans ( )
inline

◆ Init()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::Init

◆ RemoveGhost()

template<typename T_real , int GroupID, FFTDataType TypeID>
void tfft3d::FFT3D< T_real, GroupID, TypeID >::RemoveGhost ( auto *  in,
auto *  out,
std::vector< int >  gh0,
std::vector< int >  gh1,
std::vector< int >  gh2,
GhostFlag  flag = GhostFlag::Before 
)

References tfft3d::Before.

Here is the caller graph for this function:

◆ setFFTOp()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
auto& tfft3d::FFT3D< T_real, GroupID, TypeID >::setFFTOp ( int  fft_type0,
int  fft_type1,
int  fft_type2 
)
inline

References tfft3d::FFT3D< T_real, GroupID, TypeID >::setFirstFFTOp().

Here is the call graph for this function:

◆ setFirstDecomp()

template<typename T_real , int GroupID, FFTDataType TypeID>
auto & tfft3d::FFT3D< T_real, GroupID, TypeID >::setFirstDecomp ( int  axis_npr,
int  axis_npc 
)

◆ setFirstFFTOp()

template<typename T_real , int GroupID, FFTDataType TypeID>
auto & tfft3d::FFT3D< T_real, GroupID, TypeID >::setFirstFFTOp ( int  fft_type)
Here is the caller graph for this function:

◆ setGhostSizeAfterTrans()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
auto& tfft3d::FFT3D< T_real, GroupID, TypeID >::setGhostSizeAfterTrans ( std::vector< int >  gh0,
std::vector< int >  gh1,
std::vector< int >  gh2 
)

◆ setGhostSizeBeforeTrans()

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
auto& tfft3d::FFT3D< T_real, GroupID, TypeID >::setGhostSizeBeforeTrans ( std::vector< int >  gh0,
std::vector< int >  gh1,
std::vector< int >  gh2 
)

◆ setMPIDecomp()

template<typename T_real , int GroupID, FFTDataType TypeID>
auto & tfft3d::FFT3D< T_real, GroupID, TypeID >::setMPIDecomp ( const int  npr,
const int  npc 
)

◆ setSecondDecomp()

template<typename T_real , int GroupID, FFTDataType TypeID>
auto & tfft3d::FFT3D< T_real, GroupID, TypeID >::setSecondDecomp ( int  axis_npr,
int  axis_npc 
)

◆ setSecondFFTOp()

template<typename T_real , int GroupID, FFTDataType TypeID>
auto & tfft3d::FFT3D< T_real, GroupID, TypeID >::setSecondFFTOp ( int  fft_type)

◆ setSizeAfterTrans()

template<typename T_real , int GroupID, FFTDataType TypeID>
auto & tfft3d::FFT3D< T_real, GroupID, TypeID >::setSizeAfterTrans ( int  nx,
int  ny,
int  nz 
)

◆ setSizeBeforeTrans()

template<typename T_real , int GroupID, FFTDataType TypeID>
auto & tfft3d::FFT3D< T_real, GroupID, TypeID >::setSizeBeforeTrans ( int  nx,
int  ny,
int  nz 
)
Here is the caller graph for this function:

◆ setThirdDecomp()

template<typename T_real , int GroupID, FFTDataType TypeID>
auto & tfft3d::FFT3D< T_real, GroupID, TypeID >::setThirdDecomp ( int  axis_npr,
int  axis_npc 
)

◆ setThirdFFTOp()

template<typename T_real , int GroupID, FFTDataType TypeID>
auto & tfft3d::FFT3D< T_real, GroupID, TypeID >::setThirdFFTOp ( int  fft_type)

Member Data Documentation

◆ _axis_npc_list

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
int tfft3d::FFT3D< T_real, GroupID, TypeID >::_axis_npc_list[3] = {kZ, kZ, kY}
private

◆ _axis_npr_list

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
int tfft3d::FFT3D< T_real, GroupID, TypeID >::_axis_npr_list[3] = {kY, kX, kX}
private

◆ _fft_axis_order

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
int tfft3d::FFT3D< T_real, GroupID, TypeID >::_fft_axis_order[3] = {kX, kY, kZ}
private

◆ _fft_size_after

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::vector<std::vector<int> > tfft3d::FFT3D< T_real, GroupID, TypeID >::_fft_size_after = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}
private

◆ _fft_size_before

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::vector<std::vector<int> > tfft3d::FFT3D< T_real, GroupID, TypeID >::_fft_size_before = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}
private

◆ _fft_type_list

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
int tfft3d::FFT3D< T_real, GroupID, TypeID >::_fft_type_list[3] = {kNULL, kNULL, kNULL}
private

◆ _is_same_size

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
bool tfft3d::FFT3D< T_real, GroupID, TypeID >::_is_same_size = false
private

◆ _local_index_after

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::vector<std::vector<int> > tfft3d::FFT3D< T_real, GroupID, TypeID >::_local_index_after = {{0, 0, 0}, {0, 0, 0}}
private

◆ _local_index_before

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::vector<std::vector<int> > tfft3d::FFT3D< T_real, GroupID, TypeID >::_local_index_before = {{0, 0, 0}, {0, 0, 0}}
private

◆ _maxbuffersize

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
size_t tfft3d::FFT3D< T_real, GroupID, TypeID >::_maxbuffersize = 0
private

◆ _npc

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
int tfft3d::FFT3D< T_real, GroupID, TypeID >::_npc = 1
private

◆ _npr

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
int tfft3d::FFT3D< T_real, GroupID, TypeID >::_npr = 1
private

◆ _size_after

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
int tfft3d::FFT3D< T_real, GroupID, TypeID >::_size_after[3] = {0, 0, 0}
private

◆ _size_before

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
int tfft3d::FFT3D< T_real, GroupID, TypeID >::_size_before[3] = {0, 0, 0}
private

◆ _size_decomp0

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
int tfft3d::FFT3D< T_real, GroupID, TypeID >::_size_decomp0[3] = {0, 0, 0}
private

◆ _size_decomp1

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
int tfft3d::FFT3D< T_real, GroupID, TypeID >::_size_decomp1[3] = {0, 0, 0}
private

◆ ctemp0

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::complex<T_real>* tfft3d::FFT3D< T_real, GroupID, TypeID >::ctemp0 = nullptr
private

◆ ctemp1

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
std::complex<T_real>* tfft3d::FFT3D< T_real, GroupID, TypeID >::ctemp1 = nullptr
private

◆ decomp0

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
Cart3DPencilDecomp<std::complex<T_real>, GroupID> tfft3d::FFT3D< T_real, GroupID, TypeID >::decomp0
private

◆ decomp1

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
Cart3DPencilDecomp<std::complex<T_real>, GroupID2> tfft3d::FFT3D< T_real, GroupID, TypeID >::decomp1
private

◆ GroupID2

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
constexpr auto tfft3d::FFT3D< T_real, GroupID, TypeID >::GroupID2 = 2000000000 - GroupID
inlinestaticconstexprprivate

◆ GroupID3

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
constexpr auto tfft3d::FFT3D< T_real, GroupID, TypeID >::GroupID3 = 3000000000 - GroupID
inlinestaticconstexprprivate

◆ GroupID4

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
constexpr auto tfft3d::FFT3D< T_real, GroupID, TypeID >::GroupID4 = 4000000000 - GroupID
inlinestaticconstexprprivate

◆ rdecomp0

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
Cart3DPencilDecomp<T_real, GroupID3> tfft3d::FFT3D< T_real, GroupID, TypeID >::rdecomp0
private

◆ rdecomp1

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
Cart3DPencilDecomp<T_real, GroupID4> tfft3d::FFT3D< T_real, GroupID, TypeID >::rdecomp1
private

◆ rtemp0

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
T_real* tfft3d::FFT3D< T_real, GroupID, TypeID >::rtemp0 = nullptr
private

◆ rtemp1

template<typename T_real , int GroupID = 100, FFTDataType TypeID = FFTDataType::CC>
T_real* tfft3d::FFT3D< T_real, GroupID, TypeID >::rtemp1 = nullptr
private

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