FluidFFT: efficient and easy Fast Fourier Transform for Python
This package provides C++ classes and their Python wrapper classes written in Cython useful to perform Fast Fourier Transform (FFT) with different libraries, in particular
Fluidfft provides classes to use in a transparent way all these libraries with an unified API. These classes are not limited to just performing Fourier transforms. They are also an elegant solution to efficiently perform operations on data in real and spectral spaces (gradient, divergence, rotational, sum over wavenumbers, computation of spectra, etc.) and easily deal with the data distribution (gather the data on one process, scatter the data to many processes) without having to know the internal organization of every FFT library.
Fluidfft hides the internal complication of (distributed) FFT libraries and allows the user to find (by benchmarking) and to choose the most efficient solution for a particular case. Fluidfft is therefore a very useful tool to write HPC applications using FFT, as for example pseudo-spectral simulation codes. In particular, fluidfft is used in the Computational Fluid Dynamics (CFD) framework fluidsim.