In this paper we are interested in methods for solving large sparse linear systems that arise from the discretization of partial differential equations, denoted by
One of the leading families of methods for linear systems are iterative solvers
known as Krylov subspace methods [6], [8],
[9], [12] . These
methods are characterized by the subspaces in which the iterates lie. The
-th Krylov subspace for a given matrix
and vector
is
A number of Krylov subspace methods have been developed for the case when the
matrix is not symmetric, positive definite. The GMRES method
[11] picks
to be the vector that minimizes the two norm
of the residual over the Krylov subspace. In its original form GMRES requires
one additional vector of storage for each iteration, for the Arnoldi process,
that applies Gram-Schmidt orthogonalization to the Krylov basis. In practice,
GMRES is usually implemented in its restarted form, GMRES(k), with a fixed
number of vectors stored. Another popular Krylov subspace method for
non-symmetric problems is the BiCGStab (stabilized BiConjugate Gradient) method
[13].
The main operations in a Krylov subspace method are (i) matrix-vector products (ii) dot products and norm computations, and (iii) vector updates.
The convergence rate of a Krylov subspace method can be improved by
using the method in conjunction with a preconditioner, which we
denote by
. The iterative method is applied to the preconditioned system
Another method that can be used on its own, or as a preconditioner in a Krylov subspace method, is the multigrid method [7]. In its usual (geometric) form, multigrid works with a discretization of the PDE on a hierarchy of progressively coarser grids. The idea is to apply a few iterations of a relaxation method at a given level to get an approximation whose error is smooth and can be represented on a coarser grid. Then the residual of this approximation is restricted to the next coarser grid, and the process repeated until the coarsest grid is reached. Here a coarse grid solve is performed, and the solution (the coarse grid correction) is interpolated up to the finer grid. After adding the coarse grid solution to the existing approximation, a few more iterations of the smoother are applied.
The user of a multigrid code needs to make a number of choices to get a specific form of the method. These choices include the smoother, the number of pre- and post-smoothing iterations, the restriction and interpolation operators, coarse grid matrices for each grid, the coarse grid solver, and the cycling scheme. The preconditioned Conjugate gradient method requires the preconditioning matrix to be symmetric. Since the multigrid iteration matrix is not symmetric (unless special choices are made to ensure symmetry), we use non-symmetric Krylov subspace methods in conjunction with multigrid preconditioners.