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).
Remark 2. The include path for MLD2P4 must override
those for PSBLAS, i.e. the former must come first in the sequence
passed to the compiler, as the MLD2P4 version of the Krylov solver
interfaces must override that of PSBLAS. This will change in the future
when the support for the class
statement becomes widespread in Fortran
compilers.
|