We describe the basics for building and applying MLD2P4 one-level and multi-level Schwarz preconditioners with the Krylov solvers included in PSBLAS [15]. The following steps are required:
mld_
xprec_
type
, where x may be s
, d
, c
or z
, according to the basic data type of the sparse matrix
(s
= real single precision; d
= real double precision;
c
= complex single precision; z
= complex double precision).
This data structure is accessed by the user only through the MLD2P4 routines,
following an object-oriented approach.
mld_precinit
, which also sets defaults for each preconditioner
type selected by the user. The defaults associated to each preconditioner
type are given in Table 1, where the strings used by
mld_precinit
to identify the preconditioner types are also given.
Note that these strings are valid also if uppercase letters are substituted by
corresponding lowercase ones.
mld_precset
.
This routine must be called only if the user wants to modify the default values
of the parameters associated to the selected preconditioner type, to obtain a variant
of the preconditioner. Examples of use of mld_precset
are given in
Section 5.1; a complete list of all the
preconditioner parameters and their allowed and default values is provided in
Section 6, Tables 2-5.
mld_precbld
.
mld_precaply
. When using the PSBLAS Krylov solvers,
this step is completely transparent to the user, since mld_precaply
is called
by the PSBLAS routine implementing the Krylov solver (psb_krylov
).
mld_
precfree
. This step is complementary to step 1 and should
be performed when the preconditioner is no more used.
Note that the Fortran 95 module mld_prec_mod
, containing the definition of the
preconditioner data type and the interfaces to the routines of MLD2P4,
must be used in any program calling such routines.
The modules psb_base_mod
, for the sparse matrix and communication descriptor
data types, and psb_krylov_mod
, for interfacing with the
Krylov solvers, must be also used (see Section 5.1).
Remark 1. The coarsest-level solver used by the default two-level
preconditioner has been chosen by taking into account that, on parallel
machines, it often leads to the smallest execution time when applied to
linear systems coming from finite-difference discretizations of basic
elliptic PDE problems, considered as standard tests for multi-level Schwarz
preconditioners [3,4]. However, this solver does
not necessarily correspond to the smallest number of iterations of the
preconditioned Krylov method, which is usually obtained by applying
a direct solver to the coarsest-level system, e.g. based on the LU
factorization (see Section 6
for the coarsest-level solvers available in MLD2P4).
|