Global FFT parameters

PencilFFTs.GlobalFFTParamsType
GlobalFFTParams{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)
source