Metadata-Version: 2.1
Name: fluidfft
Version: 0.2.8
Summary: Efficient and easy Fast Fourier Transform (FFT) for Python.
Home-page: https://bitbucket.org/fluiddyn/fluidfft
Author: Pierre Augier
Author-email: pierre.augier@legi.cnrs.fr
License: CeCILL License
Description: .. |travis| image:: https://travis-ci.org/fluiddyn/fluidfft.svg?branch=master
            :target: https://travis-ci.org/fluiddyn/fluidfft
        
        .. |binder| image:: https://mybinder.org/badge_logo.svg
           :target: https://mybinder.org/v2/gh/fluiddyn/fluidfft/master?urlpath=lab/tree/doc/ipynb
           :alt: Binder notebook
        
        Fluidfft provides C++ classes and their Python wrapper classes written in
        Cython useful to perform Fast Fourier Transform (FFT) with different libraries,
        in particular
        
        - `fftw3 <http://www.fftw.org/>`_ and `fftw3-mpi
          <http://www.fftw.org/fftw3_doc/Distributed_002dmemory-FFTW-with-MPI.html>`_
          
        - `pfft <https://github.com/mpip/pfft>`_
        
        - `p3dfft <https://github.com/sdsc/p3dfft>`_
            
        - `cufft <https://developer.nvidia.com/cufft>`_ (fft library by CUDA
          running on GPU)
        
        `pfft <https://github.com/mpip/pfft>`_ and `p3dfft
        <https://github.com/sdsc/p3dfft>`_ are specialized in computing FFT efficiently
        on several cores of big clusters. The data is split in pencils and can be
        distributed on several processes.
        
        **Documentation**: https://fluidfft.readthedocs.io
        
        Getting started
        ---------------
        To try fluidfft without installation: |binder|
        
        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 fluiddyn mako cython [--user]
          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
           <https://fluidfft.readthedocs.io/en/latest/install/fft_libs.html>`__
        3. Python packages ``fluiddyn mako cython pyfftw pythran mpi4py``
        4. `A C++11 compiler and BLAS
           libraries <https://github.com/serge-sans-paille/pythran#installation>`__ and
           `configure
           <https://fluidfft.readthedocs.io/en/latest/install.html#dependencies>`__ 
           ``~/.pythranrc`` to customize compilation of Pythran extensions
        5. `Configure
           <https://fluidfft.readthedocs.io/en/latest/install.html#basic-installation-with-pip>`__
           ``~/.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
        <https://fluiddyn.readthedocs.io/en/latest/get_good_Python_env.html>`__.
        
        C++ API
        *******
        
        See a `working minimal example with Makefile
        <https://fluidfft.readthedocs.io/en/latest/examples/cpp.html>`__  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::
        
          python -m unittest discover
          mpirun -np 2 python -m unittest discover
        
        
        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 <http://fluidsim.readthedocs.org>`_.
        
        License
        -------
        
        Fluidfft is distributed under the CeCILL_ License, a GPL compatible
        french license.
        
        .. _CeCILL: http://www.cecill.info/index.en.html
        
Keywords: Fast Fourier Transform,FFT,spectral code
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Education
Classifier: Topic :: Scientific/Engineering
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Cython
Classifier: Programming Language :: C
Requires-Python: >= 3.6
Provides-Extra: dev
Provides-Extra: doc
Provides-Extra: fftw
Provides-Extra: mpi
Provides-Extra: test
