MGMRES Restarted GMRES solver for sparse linear systems

MGMRES is a C library which applies the restarted Generalized Minimum Residual (GMRES) algorithm to solve a sparse linear system, using compressed row (CR) or sparse triplet (ST) format, by Lili Ju.

One matrix format used is the sparse triplet (ST) format, which simply stores NZ_NUM, the number of nonzeros, and stores the K-th nonzero matrix entry as

• A(K), the value of the entry;
• IA(K), the row of the entry;
• JA(K), the column of the entry;

Another matrix format used is the compressed row (CR) format, which is similar to the sparse triplet format except that the vector of row indices is compressed to a vector of length N+1 which points to the beginning of the set of entries for each row.

• A(1:NZ_NUM), the value of the entry;
• IA(1:N+1), row I values occur in entries IA(I) to IA(I+1)-1;
• JA(1:NZ_NUM), the column of the entry;

Languages:

MGMRES is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

CC, a data directory which contains examples of the Compressed Column (CC) sparse matrix file format;

CG_RC, a C library which implements the conjugate gradient method for solving a positive definite sparse linear system A*x=b, using reverse communication.

CR, a data directory which contains examples of the Compressed Row (CR) sparse matrix file format;

CSPARSE, a C library which carries out the direct solution of sparse linear systems, by Timothy Davis.

HBSMC, a dataset directory which contains a collection of large sparse matrices stored in the Harwell-Boeing (HB) format.

LINPACK_D, a C library which carries out direct methods for solving linear systems.

MM, a data directory which contains a description and examples of the Matrix Market format for storing matrices.

ST, a data directory which contains a description and examples of the sparse triplet (ST) format for storing sparse matrices, which used by the C and C++ versions of mgmres.

SUPERLU, C programs which illustrate how to use the SUPERLU library, which applies a fast direct solution method to solve sparse linear systems, by James Demmel, John Gilbert, and Xiaoye Li.

TEST_MAT, a C library which defines test matrices.

Author:

Original C version by Lili Ju, Mathematics Department, University of South Carolina; this C version by John Burkardt.

Reference:

1. Richard Barrett, Michael Berry, Tony Chan, James Demmel, June Donato, Jack Dongarra, Victor Eijkhout, Roidan Pozo, Charles Romine, Henk van der Vorst,
Templates for the Solution of Linear Systems:
Building Blocks for Iterative Methods,
SIAM, 1994,
ISBN: 0898714710,
LC: QA297.8.T45.
2. Tim Kelley,
Iterative Methods for Linear and Nonlinear Equations,
SIAM, 2004,
ISBN: 0898713528,
LC: QA297.8.K45.
Iterative Methods for Sparse Linear Systems,
Second Edition,
SIAM, 20003,
ISBN: 0898715342,
LC: QA188.S17.

List of Routines:

• ATX_CR computes A'*x for a matrix stored in sparse compressed row form.
• ATX_ST computes A'*x for a matrix stored in sparse triplet form.
• AX_CR computes A*x for a matrix stored in sparse compressed row form.
• AX_ST computes A*x for a matrix stored in sparse triplet form.
• DIAGONAL_POINTER_CR finds diagonal entries in a sparse compressed row matrix.
• DMATRIX allocates a double matrix with subscript range m[nrl..nrh][ncl..nch]
• FREE_DMATRIX frees a double matrix allocated by DMATRIX.
• ILU_CR computes the incomplete LU factorization of a matrix.
• LUS_CR applies the incomplete LU preconditioner.
• MGMRES_ST applies restarted GMRES to a matrix in sparse triplet form.
• MULT_GIVENS applies a Givens rotation to two vector elements.
• PMGMRES_ILU_CR applies the preconditioned restarted GMRES algorithm.
• R8VEC_DOT computes the dot product of a pair of R8VEC's.
• R8VEC_UNIFORM_01 fills a double precision vector with unit pseudorandom values.
• REARRANGE_CR sorts a sparse compressed row matrix.
• TIMESTAMP prints the current YMDHMS date as a time stamp.

You can go up one level to the C source codes.

Last revised on 25 March 2008.