The matrix coefficients are coefficients that result from the discretization process. They are closely related to the discretization coefficients. OpenFOAM uses matrix coefficients in its source code.

## Contents

## 1 Definition

The matrix coefficients have the form:

or:

Where:

*A*are the matrix coefficients;- is the matrix vector of variables being solved for; and
*i*and*j*are cell indices.

## 2 Coefficient matrix

The coefficient matrix is:

- an
*N*x*N*square matrix, where*N*is the number of cells in the mesh; - sparse; and
- diagonally dominant.

For example, given a simple 3 x 3 orthogonal mesh (in 2-dimensions):

-1- | -2- | -3- |

-6- | -5- | -4- |

-7- | -8- | -9- |

The coefficient matrix might look like:

i | -1- | -2- | -3- | -4- | -5- | -6- | -7- | -8- | -9- |
---|---|---|---|---|---|---|---|---|---|

-1- | X | N | N | ||||||

-2- | O | X | N | N | |||||

-3- | O | X | N | ||||||

-4- | O | X | N | N | |||||

-5- | O | O | X | N | N | ||||

-6- | O | O | X | N | |||||

-7- | O | X | N | ||||||

-8- | O | O | X | N | |||||

-9- | O | O | X |

Where:

- X indicates diagonal cells; and
- O and N indicate non-zero off-diagonal cells.

Since the matrix is sparse, only the non-zero entries need to be stored, something that is achieved by lduAddressing used by the matrices in OpenFOAM. lduAddressing works by recognizing that:

- Every cell has a diagonal coefficient; and
- Every cell has off-diagonal coefficients for each of their neighbours.

Therefore the diagonal coefficients are stored in an *N*-long vector array, where *N* is the number of cells. The number of off-diagonal coefficients is equal to the number of cell-pairs that directly influence one another in the linearized equations. At the matrix level in OpenFOAM, this only includes *adjacent* cells. Therefore the number of off-diagonal coefficients is equal to the number of shared *faces* in the mesh.

### 2.1 Storage in OpenFOAM

OpenFOAM stores:

- diagonal coefficients as a scalar field, indexed by
*cell volume*; and - off-diagonal coefficients as two scalar fields, indexed by
*face centres*.

lduAddressing is used to related the two indexing methods.

## 3 Relationship with discretization coefficients

Every matrix coefficient has a corresponding discretization coefficient. They are related according to:

That is, the off-diagonal matrix coefficients are opposite in sign to their corresponding discretization coefficient; whereas the diagonal has the same sign as its corresponding discretization coefficient.