Discretizations
code_saturne is based on a co-located Finite Volume approach that handles unstructured meshes with any type of cell:
- tetrahedral;
- hexahedral;
- prismatic;
- pyramidal;
- polyhedral;
- etc.
It can solve flows in pseudo-steady or unsteady mode. It uses a theta scheme for time discretization.
Velocity-pressure coupling
code_saturne uses a fractional-step method similar to SIMPLEC:
- Velocity prediction: solve the momentum equation using an explicit pressure gradient to obtain a predicted velocity.
- Pressure correction: use the continuity equation to enforce mass conservation.
- Velocity update: update the velocity field using $\nabla P$.
After the velocity has been updated, the turbulent variables and scalars are solved according to their respective time schemes.
Rhie & Chow interpolation is used when solving the pressure equation to avoid oscillations, also known as checkerboarding.
Linear system resolution
Several linear system solvers are available:
- Gauss-Seidel
- Default for velocity, temperature, turbulent variables, and passive scalars.
- Jacobi
- Conjugate gradient
- Default for pressure.
- Available with:
- algebraic multigrid preconditioning;
- Jacobi preconditioning;
- polynomial preconditioning.
- Algebraic multigrid
- Stabilized bi-conjugate gradient
- Bi-CGSTAB;
- Bi-CGSTAB2.
- GMRES
- GCR
- Solvers provided by external libraries
- PETSc;
- AmgX.
Convective schemes
Several schemes are available for the discretization of convective terms:
- first-order upwind scheme;
- centered scheme;
- Second-Order Linear Upwind (SOLU) scheme;
- blended scheme combining the upwind and second-order schemes.
A slope test is activated by default for second-order schemes. In case of overshoots, it switches the discretization from the second-order scheme to the upwind scheme.
Gradient calculation
Several gradient-calculation methods are available:
- Green-Gauss method with iterative reconstruction of non-orthogonalities:
- initialization using zero values;
- initialization based on the least-squares method.
- Least-squares method using:
- a standard neighborhood;
- an extended neighborhood;
- a partially extended neighborhood.
- Green-Gauss method with a least-squares-based estimation of face values.
Example test case: cross-flow in a tube bundle
- mesh with repeatable pattern for weak scaling benchmarks
- tested on 12 million to 3.2 billion variant