next up previous
Next: Usage Up: ITPACKV 2D User's Guide Previous: Applicability

   
Sparse Matrix Storage

There are two rectangular arrays, one real and one integer, which are used to store a representation of the coefficient matrix. Both arrays are of size at least N by MAXNZ, where N is the number of linear equations and MAXNZ is the maximum number of nonzeros per row in the matrix, with the maximum being taken over all rows. Each row in COEF(*,*) will contain the nonzeros of the respective row in the full matrix A, and the corresponding row in JCOEF(*,*) will contain its respective column numbers. For example, the matrix

\begin{displaymath}A = \left[\begin{array}{rrrrr}
11. & 0. & 0. & 14. & 15. \\...
... 44. & 45. \\
15. & 0. & 0. & 45. & 55.
\end{array} \right]\end{displaymath}

would be represented in the COEF(*,*) and JCOEF(*,*) arrays as

\begin{displaymath}{\bf COEF(*,*)} = \left[\begin{array}{rrr}
11. & 14. & 15. ...
...
3 & 0 & 0 \\
4 & 1 & 5 \\
5 & 1 & 4
\end{array} \right]\end{displaymath}

There are several remarks which should be made:


1.
If a row in the matrix A has fewer than MAXNZ nonzeros, the corresponding rows in COEF(*,*) and JCOEF(*,*) should be padded with zeros.
2.
The nonzero entries in a given row of COEF(*,*) may appear in any order. However, if the diagonal element is not in column 1, then ITPACKV will place it there without returning it to its original position upon exiting.
3.
The diagonal element of each row should be positive. If a diagonal element is negative, ITPACKV will reverse the signs of all entries corresponding to this equation. Since this may result in a loss of symmetry of the system, convergence may be adversely affected. Hence it is better if the user enters the matrix with positive diagonal elements.
4.
In ITPACKV 2D, all nonzero matrix entries must be present even if the matrix is symmetric. It does not suffice to store just the upper or lower triangle of the matrix A.

next up previous
Next: Usage Up: ITPACKV 2D User's Guide Previous: Applicability