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:

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 ©  OpenCFD Ltd. 2017
Creative Commons License