Tinker9 70bd052 (Thu Nov 9 12:11:35 2023 -0800)
|
Fast Fourier Transform. More...
Classes | |
struct | tinker::FFTPlan |
FFT plan. More... | |
Typedefs | |
typedef GenericUnit< FFTPlan, GenericUnitVersion::DISABLE_ON_DEVICE > | tinker::FFTPlanUnit |
Fast Fourier Transform.
struct tinker::FFTPlan |
FFT plan.
nfft1
, nfft2
, and nfft3
in Tinker are associated with x
, y
, and z
directions, respectively. These three numbers also correspond to a Fortran array qgrid(2,nfft1,nfft2,nfft3)
, where nfft1
is the fastest changing dimension and nfft3
is the slowest changing dimension among the three.The multi-dimensional FFTW3
Fortran API in Tinker is called as follows,
which is different from the C API.
The difference is described on the FFTW website:
A minor annoyance in calling FFTW from Fortran is that FFTW’s array dimensions are defined in the C convention (row-major order), while Fortran’s array dimensions are the opposite convention (column-major order). See Multi-dimensional Array Format. This is just a bookkeeping difference, with no effect on performance. The only consequence of this is that, whenever you create an FFTW plan for a multi-dimensional transform, you must always reverse the ordering of the dimensions.
cuFFT C API is similar to FFTW C API:
nx: The transform size in the x dimension. This is slowest changing dimension of a transform (strided in memory).
nz: The transform size in the z dimension. This is fastest changing dimension of a transform (contiguous in memory).
Public Member Functions | |
template<class T > | |
T & | castTo () |
Statically cast the FFTPlan to one of its derived type. More... | |
virtual | ~FFTPlan () |
|
inlinevirtual |
|
inline |
Statically cast the FFTPlan to one of its derived type.
typedef GenericUnit<FFTPlan, GenericUnitVersion::DISABLE_ON_DEVICE> tinker::FFTPlanUnit |