FORSCHUNGSZENTRUM J ?ULICH GmbH
Zentralinstitut f ?ur Angewandte Mathematik
52425 J ?ulich, Tel. (02461) 61?6402
Informationszentrum, Tel. (02461) 61?6658
J. Grotendorst, A. Basermann, M. Vaessen
QMRPACK: A Package of QMR Algorithms
The quasi-minimal residual (QMR) algorithm is a Krylov-subspace method for the iterative solution of large non-Hermitian linear systems. QMR is based on the look-ahead Lanczos algorithm that, by itself, can also be used to obtain approximate eigenvalues of large nonHermitian matrices. QMRPACK is a software package with FORTRAN77 implementations of the QMR algorithm and variants thereof, and of the three-term and coupled two-term look-ahead Lanczos algorithms.
The authors of QMRPACK are Roland W. Freund, AT&T Bell Laboratories and No?el M. Nachtigall, Oak Ridge National Laboratory .
General Descritpion of the Package
Several QMR algorithms and an eigenvalue solver are supplied as black-box routines that require a minimum of parameters from the user. The package includes three main QMR algorithms for the solution of linear systems:
? The original QMR algorithm [Freund and Nachtigall 1991] based on the look-ahead
three-term Lanczos process;
? The QMR algorithm based on the look-ahead coupled two-term recurrence Lanczos process [Freund and Nachtigall 1993; 1994];
? The TFQMR algorithm [Freund 1993] .
Even though the main emphasis of the package is on the linear system solvers, QMRPACK also includes a routine for obtaining approximate eigenvalues from the look-ahead three-term Lanczos algorithm. The package includes simplified no-look-ahead versions of both the threeterm and the coupled two-term QMR-algorithms, as well as the QMR-from-BCG algorithm proposed by Freund and Szeto . The codes are available for general matrices, Hermitian and non-Hermitian, in single and double precision, real and complex data types.
For the matrix-vector products, QMRPACK uses reverse communication. This is a mechanism whereby the solver routines will return to the caller whenever a matrix-vector multiplication is needed, expecting the caller to perform the operation and call back the solver. The advantage