DSS Nonsymmetric Matrix Storage
For a non-symmetric or non-Hermitian matrix, all
non-zero elements need to be stored. Consider the non-symmetric matrix
B
:

The matrix
B
has 13
non-zero elements, and all of them are stored as follows:
one-based indexing | ||||||||||||||
values | =
| (1
| -1
| -3
| -2
| 5
| 4
| 6
| 4
| -4
| 2
| 7
| 8
| -5)
|
columns | =
| (1
| 2
| 4
| 1
| 2
| 3
| 4
| 5
| 1
| 3
| 4
| 2
| 5)
|
rowIndex | =
| (1
| 4
| 6
| 9
| 12
| 14)
| |||||||
zero-based indexing | ||||||||||||||
values | =
| (1
| -1
| -3
| -2
| 5
| 4
| 6
| 4
| -4
| 2
| 7
| 8
| -5)
|
columns | =
| (0
| 1
| 3
| 0
| 1
| 2
| 3
| 4
| 0
| 2
| 3
| 1
| 4)
|
rowIndex | =
| (0
| 3
| 5
| 8
| 11
| 13)
|
Storage Format Restrictions
The storage format for the sparse solver must conform
to two important restrictions:
- the non-zero values in a given row must be placed into thevaluesarray in the order in which they occur in the row (from left to right);
- no diagonal element can be omitted from thevaluesarray for any symmetric or structurally symmetric matrix.
The second restriction implies that if symmetric or
structurally symmetric matrices have zero diagonal elements, then they must be
explicitly represented in the
values
array.