Global FFT parameters
PencilFFTs.GlobalFFTParams
— TypeGlobalFFTParams{T, N, inplace}
Specifies the global parameters for an N-dimensional distributed transform. These include the element type T
and global data sizes of input and output data, as well as the transform types to be performed along each dimension.
GlobalFFTParams(size_global, transforms, [real_type=Float64])
Define parameters for N-dimensional transform.
transforms
must be a tuple of length N
specifying the transforms to be applied along each dimension. Each element must be a subtype of Transforms.AbstractTransform
. For all the possible transforms, see Transform types
.
The element type must be a real type accepted by FFTW, i.e. either Float32
or Float64
.
Note that the transforms are applied one dimension at a time, with the leftmost dimension first for forward transforms.
Example
To perform a 3D FFT of real data, first a real-to-complex FFT must be applied along the first dimension, followed by two complex-to-complex FFTs along the other dimensions:
julia> size_global = (64, 32, 128); # size of real input data
julia> transforms = (Transforms.RFFT(), Transforms.FFT(), Transforms.FFT());
julia> fft_params = PencilFFTs.GlobalFFTParams(size_global, transforms)
Transforms: (RFFT, FFT, FFT)
Input type: Float64
Global dimensions: (64, 32, 128) -> (33, 32, 128)