| ▼Core engine | Convinience core tools used throughout the code (date type, MPI and openMP routines, etc.) | 
| ►Data structures | Definition of different data structures of the code | 
| Boundary condition enums and types | Enums and derived types are defined here to treat domain boundary conditions | 
| Containers | .. | 
| Edge data type | Edge data type definitions | 
| Face data type | Face data type definitions | 
| Stencil type | Discretization stencil type definitions | 
| ►Miscellaneous | Miscellaneous core tools | 
| ►Mathematical functions | Useful mathematical functions | 
| Polynomial real roots | Tools to compute the real roots of quadratic, cubic, and quartic polynomials | 
| Polynomial roots | Tools to compute the complex roots of quadratic, cubic, and quartic polynomials | 
| Random number generation module | Convinience random number tools | 
| Convert into string | Tools to convert various data type into string | 
| ►MPI | MPI routines | 
| MPI broadcast of bc | Broadcast cell/face boundary conditions | 
| MPI exchange | Communications to update overlapping field regions | 
| Global reduction | Global reduction tools over subdomains (min, max, sum, etc.) that encapsulate MPI calls | 
| MPI send/receive | 'mpi_send_receive' of an array from a processor to another processor | 
| OpenMP | OpenMP routines | 
| ►Pre-processing tools | Tools to initialize fields | 
| ►Initializers | Define a structure to initialize fields | 
| Scalar initializers |  | 
| Vector initializers |  | 
| Shape initializers |  | 
| User imported variables | Define and access to user imported variables | 
| ►System | System related routines | 
| ►CPU time tools | Tools to measure CPU time in different parts of Notus This directory contains: | 
| Timer | Timer to measure elapsed time | 
| Memory manager | Routines to initialize and unallocate arrays and types | 
| ▼Discretization of PDE | Discretization methods to solve partial differential equations (PDE) | 
| ►Explicit discretization | Routines for discretizing explicit terms | 
| ►Cell scalar | Explicit discretization of a scalar equation defined on cells | 
| Cell scalar advection | Explicit discretization of the advection equation for a scalar equation defined on cells | 
| Boundary conditions mechanisms for cell scalars | Boundary conditions mechanisms for cell scalars | 
| Cell scalar diffusion | Explicit discretization of the diffusion equation for a scalar equation defined on cells | 
| ►Face vector | Explicit discretization of a vectorial equation defined on faces | 
| Boundary conditions mechanisms for face vectors | Boundary conditions mechanisms for face vectors | 
| Finite Volume fluxes | Finite Volume fluxes definition | 
| ►Field level operators | High-level functions for interpolating/extrapolating/differenciating whole fields | 
| Differential operators | Explicit differential operators that can be used on whole fields | 
| Field extrapolation | Functions for extrapolating whole fields | 
| Field interpolation | Functions for interpolating whole fields | 
| ►Immersed Boundaries | Implement boundaries of arbitrary shapes in PDEs | 
| Immersed Boundary Condition | Initialize and prepare resolution of immersed boundary conditions | 
| ►Implicit discretization | Routines that fill the matrix and the right-hand side of linear systems associated to the discretization of PDE | 
| Numbering and Ordering Cartesian neighbors | Base function to number Cartesian neighbors | 
| ►Cell scalar | Implicit discretization of a scalar equation defined on cells | 
| Implicit cell advection term | Implicit advection schemes of a scalar equation defined on cells | 
| Implicit boundary condition treatment | Implicit boundary condition treatment of a scalar equation defined on cells | 
| Implicit cell diffusion term | Implicit diffusion schemes of a scalar equation defined on cells | 
| Cell linear system | Linear system routines (construction, modification, finalization) for a scalar equation defined on cells | 
| ►Face vector | Implicit discretization of schemes and linear system creation of a vectorial equation defined on faces | 
| Boundary condition treatment | Boundary condition treatment of a vectorial equation defined on faces | 
| Divergence of a symmetric tensor | Implicit schemes for the divergence of a symmetric tensor of a vectorial equation defined on faces | 
| Gradient of a divergence discretization | Implicit schemes for the gradient of a divergence operator of a vectorial equation defined on faces | 
| Face linear system preparation | Face linear system preparation of a vectorial equation defined on faces | 
| Face nonlinear advection term discretization | Implicit schemes for the non linear advection term of a vectorial equation defined on faces | 
| Lagrangian particles | Lagrangian particles transported by the flow | 
| ►Multiphase methods | Interface advection equation resolution methods (Volume of Fluid, Moment of Fluid, Level Set, etc.) | 
| Additional fields | Compute additional fields (normal, surface tension, smooth volume fraction, etc.) | 
| Front Tracking |  | 
| ►Level Set | Level Set methods | 
| Advection | Advection methods for level sets | 
| Closest Point | The Closest Point (CP) toolbox | 
| ►Geometry | Geometrical methods for level sets | 
| Band | LSM band related functions | 
| Curvature | Curvature computation | 
| ►Volume Fraction | Volume fraction methods for level sets | 
| Heaviside Volume Fraction | Regularization tools | 
| Min&Gibou Volume Fraction | Volume fraction computation with sharp 'Min&Gibou' approach | 
| Towers Volume Fraction | Volume fraction computations with the Towers' Heaviside approach | 
| Various tools (Heaviside, Dirac, etc.) | Heaviside, Dirac, etc. computation | 
| LSM/Notus interface | Interface between the LSM module and Notus. This is where we deal with the translation from a phase to a level set representation. It is mainly used to impose Notus' boundary conditions on VF for LS. | 
| Reinitialization | Reinitialization methods | 
| Moment of Fluid (MOF) | Implementation of the Moment-of-Fluid (MOF) method | 
| ►Volume of Fluid (VOF) | Volume of Fluid methods | 
| VOF-PLIC | Volume-of-Fluid method using Piecewise Linear Interface Construction of the interface and lagrangien advection | 
| ►Node level schemes | Node level (cell, face, edge, vertex, point) discrete schemes | 
| Discrete Derivatives | The Discrete Derivatives module | 
| ►Extrapolation | Extrapolation schemes | 
| Extrapolation: grid based routines | Module containing grid based routines/functions for extrapolation | 
| Extrapolation schemes | Scheme submodules | 
| ►Finite Differences | Finite differences schemes | 
| Schemes | Scheme submodules | 
| ►Integration | Integration schemes | 
| Integration schemes | Integration schemes | 
| ►Interpolation | Interpolation schemes for grid elements and points | 
| ►Interpolation at grid elements | Interpolation schemes for grids elements (centers, faces, vertices) | 
| Interpolation schemes |  | 
| ►Interpolation at points | Module for point (anywhere) interpolation | 
| ►The point interpolation (generic) module | The (generic) point interpolation module | 
| Point interpolation (generic) schemes | Module for including point interpolation schemes | 
| Lagrange point interpolation | Field interpolation and derivation to arbitrary points | 
| ►Partial Differential Equations | First level routines to discretize PDE term by term | 
| Partial Differential Equations on cells | First level routines to discretize PDE term by term on cells | 
| ►Partial Differential Equations on faces | First level routines to discretize PDE term by term on faces | 
| Stress tensor divergence term |  | 
| Time discretization | Routines relative to time discretization of PDEs | 
| ▼Geometry | Geometry description and manipulation (grid and 2D/3D objects) | 
| ►Computational geometry | Routines relative to the computational geometry | 
| ►Computational Geometry in 2D | Computational geometry routines in 2D (detection, intersection, etc.) | 
| ►Computational Geometry in axisymmetric | Computational geometry routines in axisymmetric | 
| Polygon flooding | Computational geometry tool to fill a convex polygon with a given volume in a given direction | 
| Polygon | This module contains the definition of a polygon and some related subroutines | 
| Polygon flooding | Computational geometry tool to fill a convex polygon with a given volume fraction in a given direction | 
| Line/polygon intersection | Computational geometry tools relative to lines and polygon intersection | 
| Line/line segment intersection | Computational geometry tools relative to lines and line segments intersection | 
| Point properties | Computational geometry tools relative to points | 
| Polygon | This module contains the definition of a polygon and some related subroutines | 
| Polygon list | This module contains the definition of a polygon list and some related subroutines | 
| Polygon/polygon intersection | Computational geometry tools relative to polygon intersection | 
| ►Computational Geometry in 3D | Computational geometry routines in 3D (detection, intersection, etc.) | 
| Polyhedron clipping | Clip a polyhedron with a half-space or a convex polyhedron | 
| Complete polyhedron structure | Complete the polyhedron structure | 
| Polyhedron flooding | Computational geometry tool to fill a convex polyhedron with a given volume fraction in a given direction | 
| Line/polyhedron intersection | Computational geometry tools relative to lines and polyhedron intersection | 
| OBJ Wavefront reader | OBJ Wavefront reader | 
| Sparse octree | Sparse octree | 
| Point/polyhedron relations | Geometric tools relative to points and polyhedron | 
| Points formula in 3D | Geometric tools relative to points | 
| Polyhedron | Geometric tools relative to polyhedron | 
| Ray-tracing |  | 
| ►Shapes | Abstract definition of a shape | 
| Basic shapes | Basic shapes: circle and rectangle | 
| CSG (Constructive Solid Geometry) shapes | CSG operations: union, intersection and difference | 
| Polygon shape | Polygonal shape (2D only) | 
| Surface mesh shape | Shape defined by a surface mesh (3D only) | 
| Abstract type shape | Abstract definition of a shape | 
| Transformations |  | 
| Domain | Domain and subdomains variables | 
| ►Grid | Grid coordinates, spatial step, and various grid indices | 
| Grid generation | Compute grid coordinates and spatial steps | 
| Grid indices | Compute various grid indices | 
| Grid tools | To be described | 
| Partitioning | Domain partitioning and associated variables | 
| ►Immersed Sudomain and Boundary Metrics | Algorithms to create immersed subdomain and boundary metrics | 
| Immersed subdomain metrics | Immersed subdomain metrics derived types | 
| ▼I/O | Input / Output | 
| Checkpoint / Restart | Perform checkpoint and restart of Notus | 
| Debug I/O | I/O routines for debugging purpose | 
| ►Grids and fields I/O | Procedures to read and write grids and fields | 
| ADIOS2 interface | Interface routine to the massivelly parallel I/O ADIOS2 library | 
| ►ADIOS interface | Interface routines to the massivelly parallel I/O ADIOS library | 
| ADIOS Schema writer | Provide a class to write .bp files using ADIOS Visualization Schema | 
| Disk cache |  | 
| EnSight Gold writer | Provide a class to write EnSight Gold files | 
| HDF5 interface | Interface routine to the write Hdf5 files compatible with Pixie and Xdmf formats | 
| MOF mesh generator | Generate a mesh from MOF structure to visualize the MOF reconstruction | 
| Read global cell file | Read a field in a file that contains the global cell field | 
| Linked list of fields |  | 
| XDMF interface | Interface routine to the write XDMF outputs composed of and HDF5 data file and an XML data description file | 
| ►JSON | Routines to manipulate JSON files | 
| JSON writer | JSON writer | 
| ►Lexer / Parser | Multi-purpose lexer/parser | 
| Source file | Source file manager | 
| Probes | Define probes to plot fields on points or lines along time | 
| ►System | System related I/O | 
| File and directory management | Tools to manage files and directories in a compiler-independent way | 
| Logging | Logging | 
| ▼Modeling | Routines relative to the modeling of a physical problem to solve | 
| Energy equation | It prepares and solves the Energy equation | 
| Generic transport equations | It discretizes and solves the generic transport (advection/diffusion) equation | 
| Compute properties of materials | Compute local properties of materials (density, viscosity, etc.) from geometry, equation of state and reference properties of materials | 
| Navier-Stokes equations | Prepare and solve the Navier-Stokes equations | 
| Phase advection equation | Routines relative to the phase advection equations (multiphase flows) | 
| Poisson equation | It discretizes and solves the Poisson equation | 
| Species transport equations | It prepares and solves the species transport (or advection/diffusion) equations | 
| ►Turbulence models | Turbulence models and methods | 
| Large Eddy Simulation (LES) models | Large Eddy Simulation models | 
| RANS models | Turbulence models and methods | 
| Synthetic Eddy Methods | Synthetic Eddy Methods | 
| ▼Post processing | Computation of derived quantities, error estimates, etc | 
| Error tools | Routines to compute errors ( \(L^p\) norms) | 
| Grid Convergence | Define and manage grid convergence analysis | 
| Integration tools | Integration tools over the grid | 
| Diagnostic quantities | Post-treatment routines to compute physical quantities (Nusselt number, Q criterion, kinetic energy, etc.) | 
| Reference solutions | Definition of the reference solutions | 
| Statistics | Post-treatment routines to compute statistical quantities of turbulent fields (Mean time fields, fluctuations, etc.) | 
| ►Test cases | Verification and validation documentation and process | 
| V&V test cases processing | Procedures that will orient the program towards the right test case | 
| Validation | Tools to validate Notus and compute grid convergence thanks to notus_grid_convergence.pyscript | 
| ▼Linear system solvers | Linear system solvers and interface to third-party solvers | 
| ►HYPRE linear system interface | Massively parallel HYPRE library interface routines | 
| HYPRE bindings | HYPRE bindings | 
| LIS linear system interface | Parallel LIS library interface routines | 
| MUMPS linear solver library | Interface for the MUMPS linear solver library | 
| ▼User routines | Routines to adapt Notus to users specificities | 
| User fields | Define custom fields | 
| User variables | Define custom variables | 
| ▼Notus | Notus main program and User Interface | 
| Read Command Line | Routines that read Notus command line | 
| ►User interface | User interface | 
| Notus language specification | Lexer/parser of Notus files | 
| Parsing tree | Contains the parsing tree. Follows the structure of a .nts file | 
| ▼Verification test cases | Verification test cases descriptions and results | 
| ►Cell advection-diffusion schemes | Verification of cell advection and diffusion schemes | 
| ►1D cell advection-diffusion schemes | Verification of 1D cell advection diffusion schemes | 
| ►1D cell pure advection schemes | Verification of 1D cell pure advection schemes | 
| Spatial convergence |  | 
| Temporal convergence |  | 
| Explicit schemes comparison |  | 
| Implicit schemes comparison |  | 
| ►1D cell pure diffusion schemes | Verification of 1D cell pure diffusion schemes | 
| Explicit and implicit schemes comparison |  | 
| Spatial convergence |  | 
| Temporal convergence |  | 
| ►Compressible flows | Verification of the solution of compressible flows | 
| Isentropic injection in a square cavity | Isentropic injection in a square cavity | 
| Linear acoustic pulse propagation | Linear acoustic pulse propagation | 
| Manufactured compressible solutions | Manufactured compressible solutions | 
| ►Laplacian | Verification of the solution of the Laplacian | 
| Laplace equation with Dirichlet boundary conditions in the 2D axisymmetric coordinate system | Laplacian test cases with Dirichlet boundary conditions in the 2D axisymmetric coordinate system | 
| Laplace equation with Dirichlet boundary conditions | Laplacian test cases with Dirichlet boundary conditions (2D/3D) | 
| Laplace equation with immersed boundaries | This test case suite focuses on the immersed boundary applied to the Laplace equation | 
| Laplace equation with Neumann boundary conditions | Laplacian test cases with Neumann boundary conditions (2D/3D) | 
| ►Navier-Stokes (incompressible flows) | Verification of the solution of the Navier-Stokes equations | 
| 3D channel flow | 3D channel flow simulation (periodic) | 
| Poiseuille flow with immersed boundary conditions | This test case solves the Poiseuille flow with immersed boundary conditions | 
| Poiseuille flow | Poiseuille flow test cases (2D/3D, periodic or not) | 
| Poiseuille flow in axisymmetric coordinate | Poiseuille flow in axisymmetric coordinate test cases (2D, periodic or not) | 
| Poiseuille flow with variable viscosity | Poiseuille flow with variable viscosity test cases (2D/3D) | 
| ►Phase advection | Verification of the solution of the phase advection equation | 
| MOF: filaments and periodic boundary conditions |  | 
| MOF: axisymmetric and periodic boundary conditions |  | 
| MOF: periodic boundary conditions |  | 
| MOF: reversible vortex |  | 
| MOF: reversible vortices axisymmetric |  | 
| MOF: sheared 5 materials |  | 
| MOF: temporal convergence |  | 
| MOF: Zalesak's slotted disk |  | 
| VOF-PLIC: sheared bubble | VOF-PLIC test case of sheared bubble (2D) | 
| VOF-PLIC: single vortex 2D | VOF-PLIC test case of single vortex (2D) | 
| VOF-PLIC: single vortex 3D | VOF-PLIC test case of single vortex (3D) | 
| ▼Validation test cases | Validation test cases descriptions and results | 
| ►Compressible flows | Validation of the solution of compressible flows | 
| Compressible steady natural convection benchmarks | Compressible steady natural convection benchmarks | 
| Immersed boundary compressible steady natural convection | Immersed boundary compressible steady natural convection | 
| Compressible unsteady natural convection benchmarks | Compressible unsteady natural convection benchmark | 
| Supercritical thermoacoustic wave propagation in CO2 | Thermoacoustic wave propagation in supercritical CO2 | 
| Thermoacoustic wave propagation in a perfect gas | Thermoacoustic wave propagation in a perfect gas | 
| ►Free convection | Validation of free convection test cases | 
| Natural convection in a square cavity | Natural convection in a square cavity at \( Ra=10^6 \) and \( Pr=0.71 \) | 
| Thermosolutal natural convection in a square/cubic cavity | Thermosolutal natural convection in a square/cubic cavity | 
| ►Laminar isothermal flows | Validation of laminar flow test cases | 
| Backward facing step flow | Validation of the lid-driven cavity test case | 
| 2D Backward facing step flow test cases in axisymmetric | Test Backward facing step flow | 
| Lid-driven cavity flow | Validation of the lid-driven cavity test case at \( Re=1000 \) | 
| ►Mixed convection | Validation of mixed convection test cases | 
| 3D Poiseuille Rayleigh Benard flow | Validation of the 3D Poiseuille Rayleigh Benard flow | 
| ►Multiphase flows | Validation of multiphase test cases | 
| ►Bubble rise | Validation of buble rise test cases with VOF-PLIC, MOF and Level-Set methods | 
| VOF-PLIC bubble rise | Rise of a bubble with variable density using VOF-PLIC method | 
| Solitary Wave | Two test cases simulate the propagation of a solitary wave | 
| ►RANS modeling | Validation of RANS modeling of turbulent flows | 
| Turbulent heated flat plate flow with k-omega RANS model | Validation of the 2D turbulent heated flat plate flow with RANS standard and SST version of k-omega model | 
| Turbulent flat plate flow with k-omega RANS model | Validation of the 2D turbulent flat plate flow with RANS standard and SST version of k-omega model |