  The Python package fluidsim is introduced in this article as an extensible
framework for Computational Fluid Mechanics (CFD) solvers. It is developed as a
part of FluidDyn project (Augier et al., 2018), an effort to promote
open-source and open-science collaboration within fluid mechanics community and
intended for both educational as well as research purposes. Solvers in fluidsim
are scalable, High-Performance Computing (HPC) codes which are powered under
the hood by the rich, scientific Python ecosystem and the Application
Programming Interfaces (API) provided by fluiddyn and fluidfft packages
(Mohanan et al., 2018). The present article describes the design aspects of
fluidsim, viz. use of Python as the main language; focus on the ease of use,
reuse and maintenance of the code without compromising performance. The
implementation details including optimization methods, modular organization of
features and object-oriented approach of using classes to implement solvers are
also briefly explained. Currently, fluidsim includes solvers for a variety of
physical problems using different numerical methods (including
finite-difference methods). However, this metapaper shall dwell only on the
implementation and performance of its pseudo-spectral solvers, in particular
the two- and three-dimensional Navier-Stokes solvers. We investigate the
performance and scalability of fluidsim in a state of the art HPC cluster.
Three similar pseudo-spectral CFD codes based on Python (Dedalus, SpectralDNS)
and Fortran (NS3D) are presented and qualitatively and quantitatively compared
to fluidsim. The source code is hosted at Bitbucket as a Mercurial repository
bitbucket.org/fluiddyn/fluidsim and the documentation generated using Sphinx
can be read online at fluidsim.readthedocs.io.
