The open source CFD toolbox
Solvers

# Introduction

This section describes the linear solver options available to solve the matrix system

$\mat{A} \vec{x} = \vec{b}$

where

 $$\mat{A}$$ = coefficient matrix $$\vec{x}$$ = vector of unknowns $$\vec{b}$$ = source vector

If the coefficient matrix only has values on its diagonal, the solution vector can be obtained inverting the matrix system:

$\vec{x} = \mat{A}^{-1} \vec{b}$

Where the inverse of the diagonal matrix is simply:

$\mat{A}^{-1} = \frac{1}{\mathrm{diag}(\mat{A})}$

This is available as the diagonalSolver. More typically the matrix cannot be inverted easily and the system is solved using iterative methods, as described in the following sections.

# Options

Solver options include:

# Common usage

• minIter: minimum number of solver iterations
• maxIter: maximum number of solver iterations
• nSweeps: number of solver iterations between checks for solver convergence

# Implementation details

## Matrix structure

Matrix coefficients are stored in upper-triangular order

• neighbour cell index always higher than owner cell index across a face
• when looping over cell faces, the face index increases with increasing cell index
• for the 1-D case, if cell index 0 is at the boundary, this equates to a monotonic increase in cell numbers, i.e. defines a continuous sweep across the 1-D region
• used in Gauss-Seidel method