• Incompressible Navier-Stokes
    • buoyancy term (Boussinesq approximation)
    • surface tension (Continuum Surface Force model)
  • Multiphase immiscible flows
  • Energy equation
  • Species transport
    • passive scalars
    • thermosolutal flows
  • Large Eddy Simulation (mixed scale)

Numerical methods


  • 2D/3D Cartesian staggered grids
  • 2nd-order time discretisation (SBDF2)
  • Implicit discretisation of advection and diffusion terms : 1st and 2nd order schemes
  • Explicit discretization of advection terms : WENO scheme (3/5th-order) and high-order RK temporal schemes


  • Velocity/pressure coupling: time splitting methods (Goda, Timmermans)

Interface representation and transport

  • Volume-of-Fluid method (PLIC)
  • Moment-of-Fluid method (highlight)
  • Level-set

Interface treatment

  • Closest-Point method to compute curvature (highlight)
  • 2nd-order immersed boundary method (highlight)


  • Automatic grid partitioning
  • Adjustable ghost cell numbers
  • Ready to use data exchange
  • Theoritical scalability measured (except linear system solver parts)


  • HYPRE iterative solvers (BiCGStab, GMRES) and preconditioners (geometric multigrid, algebraic multigrid, PILUT, Euclid, Parasails)
  • MUMPS direct solver
  • LIS iterative solvers (BiCGStab, GMRES, etc.) and preconditioners (ILUT, ILUK, ILUC, etc.)
  • BiCGStab iterative solver


  • ADIOS library is used to generate .bp files that can be read by VisIt software.
  • Probe points and lines exported to .txt files are also proposed.

Verification and validation

Notus is thoroughly verified and validated. A python script runs test cases in sequential or parallel, giving results that match the references up to the computer precision. Symetrical properties are also checked in 2D and 3D. Dozens of non-regression test cases run before each release. The current list of verification test cases:

  • Laplacian with Dirichlet, Neumann, periodic boundary conditions or immersed boundaries (2D/3D)
  • Poiseuille flow between two planes with or without periodic boundary conditions (2D/3D)
  • Poiseuille flow with variable density (2D/3D)
  • 3D flow in a rectangular channel (3D)
  • Pure advection of a fluid in a rotating flow (2D/3D)
  • Static viscous column equilibrium (2D)
  • Advected viscous column equilibrium (2D)

The current list of validation test cases:

  • Driven cavity flow  
  • Free convection in a square cavity (2D/3D)
  • Thermosolutal flow in a rectangular cavity (2D/3D)
  • Zero gravity drop oscillation (2D)
  • 2D bubble rise (2D)
  • Solitary wave propagation (in a periodic domain and against an end-wall)
  • Dam-break flow

Another python script is provided to run Notus successively on refined meshes and automatically compute spatial and temporal convergence convergence order on test cases (with exact solution or thanks to Richardson extrapolations).

Finally a bash script helps to validate the performances of the code on supercomputers (weak and strong scalability).

User Interface

The user interface is based on text files which contain the description of the domain and the grid, the modelisation of the problem to solve, the associated numerical methods and the post-processing tools. They are based on clear keywords and obey a precise grammar.

Development framework

  • Fortran 2008
  • MPI-2 parallel coding library
  • Git distributed version control system
  • CMake cross-platform build system
  • Doxygen documentation generator from source code


Notus has been successfully built with the following Linux configurations:

  • GNU compilers (5.2) and Open MPI (1.10)
  • Intel compilers (14.0-15.0) and SGI MPT (2.11) and BullxMPI (
  • IBM XL compilers (14.1) and MPI libraries (2.21.1)

It runs on the following supercomputers and provide the same results up to computer precision (build scripts are provided to install the code):

You can find here some scalability studies of the code and third party librairies.