Introduction
Notus open-source CFD code is a 2015 initiative of Institute of Mechanical Engineering - Bordeaux (I2M, Bordeaux University). It is dedicated to the modelisation and simulation of incompressible fluid flows in a massively parallel context. Its numerical framework is the 2D/3D Finite Volume methods on Cartesian staggered grids.
The aims of the project are to provide a code:
- for the mechanical community, that is easy to use and adapt, based on proven state-of-the-art numerical methods;
- for the mathematical community in order to develop new numerical schemes without having to rewrite a complete code, offering a fast, efficient and approved framework for comparative and qualitative tests on numerical and physical cases;
- that runs on massively parallel supercomputers (such as the ones available at GENCI/PRACE and various French mesocentres), while masking parallelism complexities for easy programming;
- that offers numerical tools that can be easily used to solve novel mathematical and physical problems of your own;
- that is thoroughly validated and documented.
More information can be found on its Web site.
Documentation
Documention can be found on Documentation web site.
Forum
Forum can be found on Forum web site.
Credits
-
Initial developers
- Mathieu Coquerelle
- Stéphane Glockner - Head of the project
- Antoine Lemoine
- Joris Picot
-
Current developpers
- Theo Baldaccino
- Mirco Ciallella
- Mathieu Coquerelle
- Florian Desmons
- Stéphane Glockner
- Jérôme Jansen
- Matthias Largen
- Antoine Lemoine
- Asaph Kim Homer Palencia
- Cédric Palka
- Fabien Salmon
- Alban Vergnaud
-
Past Contributors
- Joris Picot, Hamed Bouare, Idriss Daoudi, Anna Lefay, Nicolas Bourdineaud, Gabriel Suau, Robin Colombier, Antoine Michael Diego Jost, Félix Henri, Quentin Thomas, Odelin Gentieu
Contact
To contact Notus developers, please send an e-mail to notus-developers@bordeaux-inp.fr.
Licence
Notus is distributed under the CeCILL FREE SOFTWARE LICENSE AGREEMENT.
Changelogs
Notus 0.6.0
Notus is still under active development (till version 1.0.0).
-
Navier-Stokes
- Subsonic compressible method (material properties: perfect gas, Peng Robinson, polynomial and neutral network material laws)
- WALE LES model
-
Multiphase
- MOF: analytic formula for tetrahedra and Gauss-Newton algorithm
- Conservative VOF-PLIC method (Weymouth)
- Level-set: reinitialisation with Closest Points + Kinks
- Smoothing: B-spline cubic kernel smoothing
- Phase change: linearised enthalpy method
-
Immersed boundaries
- Repartitioning process to exclude "solid" partitions from the domain
-
Miscellaneous
- Update build system
- Non-regression: implement database in python script, convergence tools
- Automatic checkpoint file names
- NTS language improved
- Solvers: refactor the solver interfaces
-
...and some minor improvements and bugs fixed here and there.
Notus 0.6.0
-
Immersed boundaries
- Framework improved
- Explicit part improved
- Cut cells generation improved
- Some test cases added
-
Schemes
- WENO3/5 schemes optimized (CPU time)
- HOUC3/5 schemes added
- Lax-Wendroff TVD limiters addition - minmod, Van Leer, MC, Sweby limiter, TVDal, & TVDblend
- QUICK implicit scheme for scalar equations added
-
Navier-Stokes
- Momentum preserving method improved
- Driving pressure added (Boussinesq approximation)
-
Multiphase
- Level-set: some Heaviside approximations added
- MOF2D: Implement MOF in axisymmetric coordinates
- MOF2D: Navier boundary condition added
- MOF2D: add support of immersed boundaries in MOF reconstruction
- MOF3D: analytic reconstruction improved
- Height function: with axisymmetric coordinate system (VOF-PLIC + MOF)
- 3D curvature computation with height function improved
-
Miscellaneous
- notus.py script modifications + Linux Slurm template
- Add a scalability mode in Python script
- Add ray-tracing to shapes
- Unify all build scripts into build_notus.sh
- Add generic routines for algebraic operations that include OpenMP directives
- Some code architecture changes
- Add a checkpoint metric (cpu_time or time_iteration)
- Add user fields and variables initialization routines
- Doc updated
-
IO
- ADIOS single-precision support
- Third party T3PIO library
- XMDF, Pixie, ADIOS2 file format (3D only)
-
...and some minor improvements and bugs fixed here and there.
Notus 0.4.0
-
Immersed boundaries
- New 2D/3D methods for Cartesian grids that reduce stencil size and/or improve precision
- Some explicit schemes developed to be compatible with immersed boundaries (LW TVD Superbee)
-
Schemes
- Lax-Wendroff TVD Superbee limiter for scalar and Navier-Stokes
- Some schemes compatible with asymmetric coordinate system
- User implicit scheme for scalar equation
- Implicit second order schme for diffusion and rectilinear (stretched) grids
- SBDF3 for energy equation
- Optimized WENO schemes for the inertial term on uniform grids
-
Navier-stokes
- Pressure correction method : approximation of Dodd (density) and Frantzis (boundary condition)
- Implicit / Explicit / Crank-Nicholson integration of the gravity term
-
Turbulence
- RANS k-omega & v2-f (first step)
- Improved statistic module
-
Multiphase
- Improved redistanciation
- MOF 3D reconstruction, add filters to MOF 2D
- Refined grid approach (MOF, VOF-PLIC)
- Height function computation of curvature (MOF, VOF-PLIC)
- Momentum preserving method
-
Performance
- Set-up of Hypre solvers done only once
- Improved performance of some key routines
- Removed limitation to 2.2 billion cells in partitioning
- Hybrid OpenMP / MPI approach (1st step)
-
Miscellaneous
- Robin boundary conditions for scalar
- Quadratic boundary condition schemes
- Validation improved
- Add several diagnostic tools
- NaN detection to stop simulations
-
Linear system solver
- Add a Notus solver (BiCGStab)
-
IO
- Add probe point and probe lines
- Improved checkpoint / restart
- Add EnSight Gold writer
-
...and some bugs fixed here and there.
Notus 0.3.0
-
NTS files
-
Validation of the code
- new validation script notus.py that includes parametric validation (@PARAMETER)
- cleanup of some test case files (reference solution, initialization, source term can be written in the NTS file)
-
Material block (solid, fluid). Phase initialization is independent of phase advection.
-
Immersed boundary (by equation, several immersed boundaries now possible)
-
Time step: fixed or adaptive
-
Post processing
- print fields on a set of probe points and/or lines
-
Boundary condition:
- line_segment (2D) and rectangle/circle (3D) shapes
- Robin boundary condition (for scalar equation)
-
Checkpoint/restart
- use of ADIOS bp files (it is possible to restart with a different number of processors)
- initialization of a simple field thanks to a bp file
- option to set the final time instead of the number of iterations
-
Documentation
- Improve documentation : installation guide, howtos, best practices, detailed numerical schemes, etc.
-
Multiphase
- MOF 2D : filament treatment
- MOF 3D : polyhedron flood algorithm, polyhedron clipping algorithm
- Stable and accurate advanced Level Set methods (advection, reinitialization: eikonal, HCR2)
- Front tracking interface representation: coupling with FronTier (C++) library for 2D flows with surface tension
-
Immersed boudarie methods
- 2D and 3D improvements
- SBDF2 method for advection terms (NS, energy, species) coupled with high-order explicit schemes (WENO3, WENO5), various fluxes (Godunov, LW, FLIC, FORCE) and NSSP time integration schemes.
- New interpolation/reconstruction/finite difference schemes (generic Lagrange, WENO, Peskin, etc.)
-
Miscellaneous
- 2D asymmetric (Navier-Stokes, Energy, Level-set)
- Add a Poisson equation (used to initialize hydrostatic pressure)
- Renaming of some variables, routines
- MPI exchange on edges
- Experimental works: generic lagrangian particles and semi-lagrangian advection schemes
- New test cases added
- Notus can ben run from any directory (if included in PATH variable)
- New structures for boundary conditions
- New objects (torus, half space)
-
... and some bugs fixed here and there.