Clean up code and increase code coverage

Code not covered should be removed, except for very good reasons.

fluidsim-core should be >~95%, with proper unittests.


Fluidsim-core and fluidsim-… packages for using third-party programs

  • snek5000 stable

  • fluidsim-core should grow, in particular by moving code from fluidsim and snek5000 to fluidsim-core when needed for the implementation of another package (in particular fluidsim-openfoam).

  • fluidsim-… (OpenFoam, Dedalus, Basilisk, …)


Specialized in pseudo-spectral Fourier.

  • Questions about focus:

    • What about cos/sin transforms?

    • What about fluidsim.solvers.sphere?

  • SVV (Spectral Vanishing Viscosity)

  • Different diffusivity coefficients for different variables (Prandtl/Schmidt numbers), in particular for ns3d.strat.

  • cos/sin transform (how? options operators?)

  • More 3D solvers:

  • Linear stability (as in NS3D

  • FFT accelerated with GPU and MPI+GPU (fluidfft)

  • Shear as in Snoopy (see #99)

  • Simul class made of 2 (or n) interacting Simul classes. For example, ns2d + passive scalar at higher resolution. Or fluid-structure interaction as in FLUSI (see !104)

  • Particles and Lagrangian dynamics

Long term

  • API to dynamically define a solver

“Ability to dynamically and concisely build a solver is what Dedalus is good at. And performance and batteries-included approach is where FluidSim shines. Our InfoSolver + Parameters approach is flexible but requires a lot of boilerplate code. Even today I always need to refer to documentation while creating a new solver. It must be possible to create intuitive factory classes which dynamically generate InfoSolver, Parameters, Simul classes for us. We could refer to some well known design patterns for inspiration.” (Ashwin V. Mohanan)

  • Explore use of type hints

Inline or separate *.pyi files? Use MonkeyType or similar to autogenerate type hints from tests? Some inspiration: FOSDEM talk and this blog post