Skip to main content

Efficient and easy Fast Fourier Transform (FFT) for Python.

Project description

FluidFFT

Efficient and easy Fast Fourier Transform for Python

Latest version Supported Python versions Documentation status Code coverage Heptapod CI Github Actions Linux Github Actions Pixi

Fluidfft provides C++ classes and their Python wrapper classes written in Cython useful to perform Fast Fourier Transform (FFT) with different libraries, in particular

pfft, p3dfft and mpi4py-fft are specialized in computing FFT efficiently on several cores of big clusters. The data can be split in pencils and can be distributed on several processes.

Documentation: https://fluidfft.readthedocs.io

Getting started

To try fluidfft without installation: Binder notebook

For a basic installation which relies only on a pyFFTW interface; or provided you have the optional FFT libaries, that you need, installed and discoverable in your path (see environment variables LIBRARY_PATH, LD_LIBRARY_PATH, CPATH) it should be sufficient to run:

pip install fluidfft [--user]

Add --user flag if you are installing without setting up a virtual environment.

Installation

To take full advantage of fluidfft, consider installing the following (optional) dependencies and configurations before installing fluidfft. Click on the links to know more:

  1. OpenMPI or equivalent
  2. FFT libraries such as MPI-enabled FFTW (for 2D and 3D solvers) and P3DFFT, PFFT (for 3D solvers) either using a package manager or from source
  3. Python packages fluiddyn cython pyfftw pythran mpi4py
  4. A C++11 compiler and BLAS libraries and configure ~/.pythranrc to customize compilation of Pythran extensions
  5. Configure ~/.fluidfft-site.cfg to detect the FFT libraries and install fluidfft

Note: Detailed instructions to install the above dependencies using Anaconda / Miniconda or in a specific operating system such as Ubuntu, macOS etc. can be found here.

C++ API

See a working minimal example with Makefile which illustrates how to use the C++ API.

Tests

From the root directory:

make tests
make tests_mpi

Or, from the root directory or any of the "test" directories:

pytest -s
mpirun -np 2 pytest -s

How does it work?

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.

License

Fluidfft is distributed under the CeCILL License, a GPL compatible french license.

Metapapers and citations

If you use FluidFFT to produce scientific articles, please cite our metapapers presenting the FluidDyn project and Fluidfft:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fluidfft-0.4.1.tar.gz (430.0 kB view details)

Uploaded Source

Built Distributions

fluidfft-0.4.1-cp312-cp312-win_amd64.whl (243.6 kB view details)

Uploaded CPython 3.12 Windows x86-64

fluidfft-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (220.5 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.1-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (241.0 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.17+ x86-64

fluidfft-0.4.1-cp312-cp312-macosx_11_0_arm64.whl (208.9 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

fluidfft-0.4.1-cp312-cp312-macosx_10_9_x86_64.whl (258.7 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

fluidfft-0.4.1-cp311-cp311-win_amd64.whl (242.7 kB view details)

Uploaded CPython 3.11 Windows x86-64

fluidfft-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.1-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (239.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.17+ x86-64

fluidfft-0.4.1-cp311-cp311-macosx_11_0_arm64.whl (208.8 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

fluidfft-0.4.1-cp311-cp311-macosx_10_9_x86_64.whl (258.2 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

fluidfft-0.4.1-cp310-cp310-win_amd64.whl (242.7 kB view details)

Uploaded CPython 3.10 Windows x86-64

fluidfft-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.3 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (240.7 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.17+ x86-64

fluidfft-0.4.1-cp310-cp310-macosx_11_0_arm64.whl (208.8 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

fluidfft-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl (258.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

fluidfft-0.4.1-cp39-cp39-win_amd64.whl (242.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

fluidfft-0.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

fluidfft-0.4.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (241.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.17+ x86-64

fluidfft-0.4.1-cp39-cp39-macosx_11_0_arm64.whl (208.8 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

fluidfft-0.4.1-cp39-cp39-macosx_10_9_x86_64.whl (258.2 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

File details

Details for the file fluidfft-0.4.1.tar.gz.

File metadata

  • Download URL: fluidfft-0.4.1.tar.gz
  • Upload date:
  • Size: 430.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for fluidfft-0.4.1.tar.gz
Algorithm Hash digest
SHA256 b17e64c7b2be47c61d6ac7b713e0e8992cf900d2367381288c93a56090e6c0c1
MD5 ef1ba3a8eb74f29252968563ccc22d0f
BLAKE2b-256 f80700b4f802bca0dc4f43b1a868a40bde701c7a3df9693fffb5b7152cf7c729

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: fluidfft-0.4.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 243.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for fluidfft-0.4.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0cb129e1ee109f12254c972456adc0bc8d9558e9dfd79fb94f67656e4a99fe07
MD5 0a9c06500414aa182bacbb00fff7254e
BLAKE2b-256 9f89e429986222943556d1ce5a685f522400fb64574aa09efd8c256728a26336

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 801161a8672312d5fb6e847f936c8b45873262448c2092da1d2da3df9525e0f7
MD5 47de588601020b23a2c670d20cac49d7
BLAKE2b-256 4f500438d047bbeb6b5002ca36a7ac3ad9afc511a5c0ae45a1e64be2a2e39f5d

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bce6e132b607aed8f790ba0c513e9efdb4a688aae1d5ea54187061152095a276
MD5 2150902b72458722bccdd913a9b584f7
BLAKE2b-256 e79475889cf25a6a6a0f94905b3d93b7126c521e3a9c1e8e83e5747cbb7f3367

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e3b246489e28c1eda8723c6309aabc835ed51cc312522006b845bb2bbbc1849
MD5 bc7548719886aa2265419a64eca1681e
BLAKE2b-256 ff722d6a40ad038c37742bc33a3e32e1533b87b8943f4d424053049ca36c69a9

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 170e5cb56545f7f055ca4af36dc6dcc4d05f640e41564e84516e123ea26bd5ba
MD5 aa743482f7258d244f438b1ec303eb19
BLAKE2b-256 24d0ffe3c6362c47eda7f4efcbab94765ebf72e1e0efa7ede7551a476a4be301

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: fluidfft-0.4.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 242.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for fluidfft-0.4.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 df394ef90a34efd8a655a972cb24f2b34fc75b61fe9811638f72c33e8bbfa5ff
MD5 732a67dd82cc366ee2afb27df14837f2
BLAKE2b-256 e6a50d7710b882e100cd89dfcfcf7c0f1ead4bf67f5c79faf3b542adca568ef8

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d41cdccd0279f7ea8f5bec07b3c71c2a4ed31fb7fe6ffcbb14fc5dcab0d44698
MD5 4e7199bd89e1721a66b7d91447ad878c
BLAKE2b-256 207f1a8509fc20531a173490599d8ae7f27325cd9b56dcd475a1662a0f89058f

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f379b55340f2a189a8e65ef8733804aab37d93e17753f392aa6cbedaad1f4cbc
MD5 bd040d6fdcf32729b0f32df17d8fe0c8
BLAKE2b-256 fd4ff74232eae225f74cc6072c4de2411e9fe29478aab8f2efaca4cdabf15221

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 66065e95ef2984c730686456dc004ea26cdb35381419db4567a379f2addde030
MD5 08c601353b6f2d3b51827e399ea2376f
BLAKE2b-256 b36ddaf5f5f3690224d3fb55146a4491d8e65a3f5394eeb096c263f27b8e10ca

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e68d9fca24f66133af758e1e8a27ada770ba6435897c7c28d5b3dd7958cb15f9
MD5 f279bb543606b9544ef7aa2641371a70
BLAKE2b-256 5adbe4f0fecd3f9a680ba02fb09a9e4da1d08f2d5aa27012dfa7f28c8503ed88

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: fluidfft-0.4.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 242.7 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for fluidfft-0.4.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d468076aa68519417b7085ee3d1770616973f4d5533c2e80103149c39cf1de02
MD5 3dd946a00a08d1c26483a92f7f003728
BLAKE2b-256 8160d7a84917f5c95fd93b57fd541feae8b6f04953d500ca19a445c8b6f03d36

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4f129efa4d2929a7dfaeaca8c1bced23b7ba7ec48bbe3a53acb8b9bfe4aa2d94
MD5 86e39a8e8a34363b4cf5e34854480ac3
BLAKE2b-256 f4cba57edce8c200fa4f5fc2e9062b52aa7da8be0d76965808e96551f4a48539

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 005c7f05f73d698d3fddb98d56d4697147e34d1b309d01333ecf12ac788f71c3
MD5 0d60bcef8241df54f6bb646a86711e30
BLAKE2b-256 4b9da5af40c6f5d3deb8b7d1c130d3fed8fdededd8db484ea18910c5cd054bdb

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aefe98e6bd77b82e13075e90f5ef2da337df0fbf7b565be22a0df4b087d5fe85
MD5 c1593938ff19b0bd2d0cb5d90905663e
BLAKE2b-256 11794c46d1234191a7c263e24766319a26e0cb962f4443208902338e54e1305f

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1ce9d9ae599bcb3798f92cf1bee38962c699ba1a8618118a1d04192c14174111
MD5 8e44f51720518f3a94cb50046edd00eb
BLAKE2b-256 56af63e988ccdaaece42736672e88887656d5aff365d49af819b0ab976a249e8

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: fluidfft-0.4.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 242.7 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for fluidfft-0.4.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d0b46bd4784a1922d381e2336df6b665fffbc490b5407b1c90d78b25361a1137
MD5 dc414410f1d798a65121cb76c401ec94
BLAKE2b-256 29678ff7873989aa2975ad79536b6dac9c72fb97774d90e51dbaddca11ad47d2

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 217e686f8a53ab009e5e555d7b47c7201ddc23629881bff358aeaa9f85ceaadf
MD5 9cce6370746e78b66a1661860be9e7af
BLAKE2b-256 706d8f1fa5bf4e67f7f448343ba49cf30b881b419ce531f2169a8cf17a4ebe6c

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b32f892cf3a8bf3889d296f0673007afe94bc3afdb29c5f681095665f4a7c6d6
MD5 353d34cbdff41ba83e06cbe0a859c147
BLAKE2b-256 64bc291d56397f7dd6cd4ab71b6ee661c5f703a5363af8921535f7371f8be640

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5161306c3b1656ab12fd20c6110f81ad9b2ac146b2d0ce8d372f5dede58919ef
MD5 23a6c576dd478339482ef58f472017e1
BLAKE2b-256 37387565301250ce30f7956134a6219ef61c150c000ffd0280b8e8154d4f71d4

See more details on using hashes here.

File details

Details for the file fluidfft-0.4.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fluidfft-0.4.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bc0f7e74f79264e6ac81be13c380bf63fbe1ba3c2d18c7461ae581b630580af6
MD5 478b2af184e32f858af3f2deb80ec37a
BLAKE2b-256 edebdccac6af5f8de37d5a31c9440a83a4e67b95cfa42af923218abcd86785d8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page