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…)
It can solve flows in pseudo-steady or unsteady mode. It uses a theta scheme for the time discretization.
Velocity-pressure coupling
code_saturne uses a fractional step method, similar to SIMPLEC.
- Velocity prediction: Solve the momentum equation with an explicit pressure gradient and obtain a predicted velocity
- Pressure correction: Use the continuity equation to enforce mass conservation
- Update velocity field using ∇ P
After the velocity has been updated, the resolution of turbulent variables and scalars is done according to their time scheme.
Rhie & Chow interpolation is used when solving the pressure to avoid oscillations (or checkerboarding).
Linear system resolution
Several linear system solvers are available:
- Gauss-Seidel (default for velocity, temperature, turbulent variables, passive scalars)
- Jacobi
- Conjugate gradient (default for pressure)
- With algebraic multigrid, jacobi, or polynomial preconditioning
- Algebraic multigrid
- Stabilized bi-conjugate gradient (BI-CGSTAB or Bi-CGSTAB2)
- GMRES, GCR
- solvers provided by external libaries
- PETSc
- AmgX
Convective scheme
Different schemes for convective terms are available:
- First order Upwind Scheme
- Centered scheme
- Second Order Linear Upwind (SOLU) Scheme
- Blended scheme between upwind and second order scheme
A slope test is activated by default for second order schemes to switch from second order to upwind in case of overshoots
Gradient calculation
Several options are available:
- Green-Gauss method with iterative reconstruction of the non-orthogonalities (initialization by zero or based on the least-square method)
- Least squares method (with a standard, extended or partial extended neighborhood)
- Green-Gauss method with least-squares based estimation of face values