#
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:

#
Solver control

#
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

#
Further information

Copyright © 2016 OpenCFD Ltd.

Licensed under the Creative Commons License BY-NC-ND