We outline a general framework for building and applying algebraic multilevel preconditioners, which encompasses all the multi-level preconditioners available in MLD2P4.
Given the linear system ,
where
is a
nonsingular sparse matrix with a symmetric nonzero pattern,
we assume as finest index space the set of row (column) indices of
,
. An algebraic multilevel method
generates a hierarchy of index spaces and a corresponding hierarchy of matrices,
For each
, the method builds
two maps between two contiguous vector spaces, i.e. a prolongation and a
restriction operator
The components produced in the build phase may be combined in several ways
to obtain different multilevel preconditioners (see [24, Chapters 2 and 3]);
this is done in the application phase,
i.e. in the computation of a vector of type
, where
denotes the preconditioner,
usually within an iteration of a Krylov solver. Two basic types of preconditioners
can be identified, i.e. the additive and the multiplicative one.
In the additive case, at each level the smoother and the coarse-level correction
are applied to the restriction of the vector
to that level, and the resulting vectors
are added; this leads to the algorithm shown in Figure 2.
In the multiplicative case, at each level the smoother and the coarse-level correction are
applied in turn, the former on a vector resulting from the application of the
latter and/or vice versa. An example of such a combination, where the smoother
is applied before and after the coarse-level correction, is given in
Figure 3; this is known as
symmetrized multiplicative multilevel preconditioner or, more generally,
V-cycle. Multiplicative multi-level
preconditioners with pre-smoothing only are obtained by neglecting the
last three statements in the second loop, while multiplicative multi-level ones
with post-smoothing only correspond to setting
in the first loop,
i.e. to performing only the restriction
in the first loop
and to changing into
the first statement of the second loop.
At each level
, MLD2P4 implements, as smoothers, domain decomposition
AS preconditioners [6,9,24]. Therefore,
the multilevel preconditioners based on the multiplicative framework
are referred to as hybrid, i.e. multiplicative
among the levels and additive inside any single level. The point point-Jacobi smoother
is available too; furthermore, multiple sweeps of each smoother can be performed.
In the AS methods the index space
is divided into
subsets
of size
. The subsets may have an overlap
,
which is defined using the adjacency graph
of the matrix
,
where
is the vertex set and
is the edge set.
Two vertices are called adjacent if there is an edge connecting them.
For any integer
, a
-overlap
partition of
is defined recursively as follows.
Given a 0-overlap partition of
,
i.e. a set of
disjoint nonempty sets of
such that
, a
-overlap
partition of
is obtained by considering the sets
obtained by including the vertices that
are adjacent to any vertex in
.
In MLD2P4 the number of sets
matches the number of available
processors and each processor is assigned one of these set. The 0-overlap partition
at the finest level is determined by the (general row-block) distribution of the matrix to
be preconditioned (see [17]).
For each
we consider the restriction operator
that maps a vector
to the vector
made of the components of
with indices in
, and the prolongation operator
. These operators are
then used to build
, which
is a restriction of
to the index space
.
The classical AS preconditioner is defined as
In MLD2P4 the hierarchy of index spaces (see ) and the corresponding
mapping operators (see ) are built by applying the
smoothed aggregation
technique[2,22,28].
The basic idea is to build
the coarse set of indices
by suitably grouping the indices of
into disjoint subsets (aggregates) and to define a simple ``tentative''
prolongator
whose range should contain the near null space
of
; the final interpolation operator
is formed by applying a
suitable smoother to
, in order to obtain low energy coarse
basis functions and hence good convergence rates.
To build the aggregates we have implemented the coarsening algorithm sketched
in [5]. According to [28], a modification of
this algorithm has been actually considered,
in which each aggregate
is made of vertices of
that are strongly coupled
to a certain root vertex
, i.e.
The tentative prolongator
is piecewise constant interpolation operator,
defined as