Fluidsim documentation

Overview

Fluidsim is a framework for studying fluid dynamics with numerical simulations using Python. It is part of the wider project FluidDyn.

Fluidsim is an object-oriented library to develop “solvers” (i.e. Python packages solving equations) by writing mainly Python code. The result is very efficient even compared to a pure Fortran or C++ code since the time-consuming tasks are performed by optimized compiled functions.

Fluidsim is a HPC code written mostly in Python. It uses the library Fluidfft to use very efficient FFT libraries. Fluidfft is written in C++, Cython and Python. Fluidfft and fluidsim take advantage of Pythran, a static Python compiler which produces very efficient binaries by compiling Python via C++11. Pythran is actually used in Fluidsim through Transonic, which is a new and cool project for HPC with Python.

An advantage of a CFD code written mostly in Python is that to run simulations and analyze the results, the users communicate (possibly interactively) together and with the machine with Python, which is nowadays among the best languages to do these tasks. Moreover, it is much simpler and faster than with pure Fortran or C++ codes to add any complicate analysis or to write a modified solver.

We have created fluidsim to be easy and nice to use and to develop, highly efficient and robust.

Being a framework, Fluidsim can easily be extended in other packages to develop other solvers (see for example the packages snek5000 and fluidsimfoam).

The list of solvers implemented using Fluidsim (see fluidsim.solvers, snek5000 and fluidsimfoam) gives a good idea of the versatility of this framework. The main Fluidsim package contains mostly solvers solving equations over a periodic space:

  • 2d and 3d incompressible Navier-Stokes equations,

  • 2d and 3d incompressible Navier-Stokes equations under the Boussinesq approximation (with a buoyancy variable),

  • 2d and 3d stratified Navier-Stokes equations under the Boussinesq approximation with constant Brunt-Väisälä frequency,

  • 2d one-layer shallow-water equations + modified versions of these equations,

  • 2d Föppl-von Kármán equations (elastic thin plate).

Metapapers and citations

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

@article{fluiddyn,
doi = {10.5334/jors.237},
year = {2019},
publisher = {Ubiquity Press,  Ltd.},
volume = {7},
author = {Pierre Augier and Ashwin Vishnu Mohanan and Cyrille Bonamy},
title = {{FluidDyn}: A Python Open-Source Framework for Research and Teaching in Fluid Dynamics
    by Simulations,  Experiments and Data Processing},
journal = {Journal of Open Research Software}
}

@article{fluidfft,
doi = {10.5334/jors.238},
year = {2019},
publisher = {Ubiquity Press,  Ltd.},
volume = {7},
author = {Ashwin Vishnu Mohanan and Cyrille Bonamy and Pierre Augier},
title = {{FluidFFT}: Common {API} (C$\mathplus\mathplus$ and Python)
    for Fast Fourier Transform {HPC} Libraries},
journal = {Journal of Open Research Software}
}

@article{fluidsim,
doi = {10.5334/jors.239},
year = {2019},
publisher = {Ubiquity Press,  Ltd.},
volume = {7},
author = {Mohanan, Ashwin Vishnu and Bonamy, Cyrille and Linares, Miguel
    Calpe and Augier, Pierre},
title = {{FluidSim}: {Modular}, {Object}-{Oriented} {Python} {Package} for
    {High}-{Performance} {CFD} {Simulations}},
journal = {Journal of Open Research Software}
}

API Reference

A pure-Python package fluidsim-core houses all the abstraction necessary to define solvers.

fluidsim_core

Pure-Python core library for FluidSim framework.

The package fluidsim provides a set of specialized solvers solvers, supporting classes and functions.

fluidsim.base

Base classes for writing solvers

fluidsim.operators

Numerical operators

fluidsim.solvers

Solvers for a variety of physical problems

fluidsim.util

Utilities for FluidSim

fluidsim.magic

IPython / Jupyter magic commands

fluidsim.extend_simul

Mechanism to extend a Simul class with just a simple class

Indices and tables