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)