FFTW
These tutorials demonstrate how to call fftw3 (CPU) or cuFFT (GPU) to solve for and manipulate Fourier transform data using a single MPI rank.
There are two FFTW tutorials, Basic
and Poisson
:
Basic
tutorial: The tutorial found inamrex-tutorials/ExampleCodes/FFTW/Basic
is useful if the objective is to simply take a forward FFT of data, and the DFT’s ordering in k-space matters to the user. This tutorial initializes a 3D or 2DMultiFab
, takes a forward FFT, and then redistributes the data in k-space where the center cell in the domain corresponds to the k=0 mode. The results are written to a plot file.Poisson
tutorial: This tutorial:amrex-tutorials/ExampleCodes/FFTW/Poisson
solves a Poisson equation with periodic boundary conditions. In it, both a forward FFT and reverse FFT are called to solve the equation, however, no reordering of the DFT data in k-space is performed.
We note that both fftw and cufft assume a row-major ordering of data; since a MultiFab
is column major,
the output to the spectral array is spatially-transposed.
Basic
This tutorial initializes a 3D or 2D MultiFab
, takes a forward FFT,
and then redistributes the data in k-space where the center cell in the domain corresponds to the k=0 mode.
The results are written to a plot file.
Poisson
In this test case we set up a right hand side (rhs), call the forward transform, modify the coefficients, then call the backward solver and output the solution to the discrete Poisson equation.