<LI>the preconditioner data structure must be of type
</FONT></FONT></FONT></TD>
<code>mld_</code><I>x</I><code>prec_type</code>, with <I>x</I> =
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Note that the strings are case insensitive.</FONT></FONT></FONT></TD>
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, according to the sparse
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The value of the parameter to be set. The list of allowed
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Note that the strings are case insensitive.</FONT></FONT></FONT></TD>
values and the corresponding data types is given in
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node27.html#sec:errors">8</A>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Whether the other arguments apply only to the pre-smoother (<code>'PRE'</code>)
or to the post-smoother (<code>'POST'</code>). If <code>pos</code> is not present,
the other arguments are applied to both smoothers.
If the preconditioner is one-level or the parameter identified by <code>what</code>
does not concern the smoothers, <code>pos</code> is ignored.
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=187>Matrix used in computing the smoothed
prolongator: filtered or unfiltered (see (<AHREF="node13.html#eq:filtered">5</A>) in Section <AHREF="node13.html#sec:aggregation">4.2</A>).</TD>
</TR>
<TR><TDALIGN="LEFT"COLSPAN=5><B>Note.</B> Different thresholds at different levels, such as
those used in [<A
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>, Section 5.1], can be easily set by
invoking the rou-</TD>
</TR>
<TR><TDALIGN="LEFT"COLSPAN=5>tine <TT>set</TT> with
the parameter <TT>ilev</TT>.</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR><FONTSIZE="+1"><FONTSIZE="+1"></FONT></FONT>
<P>
<FONTSIZE="+1"><FONTSIZE="+1"></FONT></FONT>
<BR><P></P>
<DIVALIGN="CENTER"><ANAME="1344"></A>
<TABLE>
<CAPTION><STRONG>Table 5:</STRONG>
Parameters defining the coarse-space correction at the coarsest
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The value of the parameter to be set. The list of allowed
details [<A
values and the corresponding data types is given in
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node28.html#sec:errors">8</A>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Whether the other arguments apply only to the pre-smoother (<code>'PRE'</code>)
or to the post-smoother (<code>'POST'</code>). If <code>pos</code> is not present,
the other arguments are applied to both smoothers.
If the preconditioner is one-level or the parameter identified by <code>what</code>
does not concern the smoothers, <code>pos</code> is ignored.
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=187>Matrix used in computing the smoothed
prolongator: filtered or unfiltered (see (<AHREF="node14.html#eq:filtered">5</A>) in Section <AHREF="node14.html#sec:aggregation">4.2</A>).</TD>
</TR>
<TR><TDALIGN="LEFT"COLSPAN=5><B>Note.</B> Different thresholds at different levels, such as
those used in [<A
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>, Section 5.1], can be easily set by
invoking the rou-</TD>
</TR>
<TR><TDALIGN="LEFT"COLSPAN=5>tine <TT>set</TT> with
the parameter <TT>ilev</TT>.</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR><FONTSIZE="+1"><FONTSIZE="+1"></FONT></FONT>
<P>
<FONTSIZE="+1"><FONTSIZE="+1"></FONT></FONT>
<BR><P></P>
<DIVALIGN="CENTER"><ANAME="1351"></A>
<TABLE>
<CAPTION><STRONG>Table 5:</STRONG>
Parameters defining the coarse-space correction at the coarsest
@ -92,17 +91,29 @@ single/double precision version of MLD2P4 under use.
</FONT></FONT></FONT></TD>
</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
@ -93,24 +92,26 @@ hierarchy produced by a previous call to <code>hierarchy_build</code>
</FONT></FONT></FONT></TD>
</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The communication descriptor associated to the matrix to be
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=298><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The local part of the vector <IMG
WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img88.png"
ALT="$x$">. Note that <I>type</I> and
<I>kind_parameter</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The id of the file where the preconditioner description
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=298><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
will be printed; the default is the standard output.</FONT></FONT></FONT></TD>
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> The user-defined new smoother to be employed in the
<TDALIGN="LEFT"VALIGN="TOP"WIDTH=340><FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1"> Error code. If no error, 0 is returned. See Section <AHREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1">The M<SMALL>ULTI-</SMALL>L<SMALL>EVEL </SMALL>D<SMALL>OMAIN </SMALL>D<SMALL>ECOMPOSITION </SMALL>P<SMALL>ARALLEL </SMALL>P<SMALL>RECONDITIONERS </SMALL>P<SMALL>ACKAGE BASED ON
<FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1">The M<SMALL>ULTI-</SMALL>L<SMALL>EVEL </SMALL>D<SMALL>OMAIN </SMALL>D<SMALL>ECOMPOSITION </SMALL>P<SMALL>ARALLEL </SMALL>P<SMALL>RECONDITIONERS </SMALL>P<SMALL>ACKAGE BASED ON
</SMALL>PSBLAS (MLD2P4) provides parallel Algebraic MultiGrid (AMG) and Domain
</SMALL>PSBLAS (MLD2P4) provides parallel Algebraic MultiGrid (AMG) and Domain
Decomposition preconditioners (see, e.g., [<A
Decomposition preconditioners (see, e.g., [<A
HREF="node29.html#Briggs2000">3</A>,<A
HREF="node30.html#Briggs2000">3</A>,<A
HREF="node29.html#Stuben_01">23</A>,<A
HREF="node30.html#Stuben_01">23</A>,<A
HREF="node29.html#dd2_96">21</A>]),
HREF="node30.html#dd2_96">21</A>]),
to be used in the iterative solution of linear systems,
to be used in the iterative solution of linear systems,
</FONT></FONT></FONT>
</FONT></FONT></FONT>
<BR>
<BR>
@ -95,8 +95,8 @@ multi-level cycles and smoothers widely used in multigrid methods.
<FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1">The multi-level preconditioners implemented in MLD2P4 are obtained by combining
<FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1">The multi-level preconditioners implemented in MLD2P4 are obtained by combining
AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and
AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and
K-cycles [<A
K-cycles [<A
HREF="node29.html#Briggs2000">3</A>,<A
HREF="node30.html#Briggs2000">3</A>,<A
HREF="node29.html#Notay2008">19</A>] are available, which allow to define
HREF="node30.html#Notay2008">19</A>] are available, which allow to define
almost all the preconditioners in the package, including the multi-level hybrid
almost all the preconditioners in the package, including the multi-level hybrid
Schwarz ones; a specific cycle is implemented to obtain multi-level additive
Schwarz ones; a specific cycle is implemented to obtain multi-level additive
Schwarz preconditioners. The Jacobi, hybridforward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods
Schwarz preconditioners. The Jacobi, hybridforward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods
@ -104,8 +104,8 @@ are available as smoothers. An algebraic approach is used to generate a hierarch
coarse-level matrices and operators, without explicitly using any information on the
coarse-level matrices and operators, without explicitly using any information on the
geometry of the original problem, e.g., the discretization of a PDE. To this end,
geometry of the original problem, e.g., the discretization of a PDE. To this end,
the smoothed aggregation technique [<A
the smoothed aggregation technique [<A
HREF="node29.html#BREZINA_VANEK">2</A>,<A
HREF="node30.html#BREZINA_VANEK">2</A>,<A
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>]
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>]
is applied. Either exact or approximate solvers can be used on the coarsest-level
is applied. Either exact or approximate solvers can be used on the coarsest-level
system. Specifically, different sparse LU factorizations from external
system. Specifically, different sparse LU factorizations from external
packages, and native incomplete LU factorizations and Jacobi, hybrid Gauss-Seidel,
packages, and native incomplete LU factorizations and Jacobi, hybrid Gauss-Seidel,
@ -126,8 +126,8 @@ interface.
<FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1">MLD2P4 has been designed to implement scalable and easy-to-use
<FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1">MLD2P4 has been designed to implement scalable and easy-to-use
multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS)
multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS)
computational framework [<A
computational framework [<A
HREF="node29.html#psblas_00">15</A>,<A
HREF="node30.html#psblas_00">15</A>,<A
HREF="node29.html#PSBLAS3">14</A>]. PSBLAS provides basic linear algebra
HREF="node30.html#PSBLAS3">14</A>]. PSBLAS provides basic linear algebra
operators and data management facilities for distributed sparse matrices,
operators and data management facilities for distributed sparse matrices,
as well as parallel Krylov solvers which can be used with the MLD2P4 preconditioners.
as well as parallel Krylov solvers which can be used with the MLD2P4 preconditioners.
The choice of PSBLAS has been mainly motivated by the need of having
The choice of PSBLAS has been mainly motivated by the need of having
@ -150,55 +150,55 @@ few black-box routines at the upper layer allow all users to easily
build and apply any preconditioner available in MLD2P4;
build and apply any preconditioner available in MLD2P4;
facilities are also available allowing expert users to extend the set of smoothers
facilities are also available allowing expert users to extend the set of smoothers
and solvers for building new versions of the preconditioners (see
and solvers for building new versions of the preconditioners (see
<FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1">Building MLD2P4 requires some base libraries (see Section <AHREF="node6.html#sec:prerequisites">3.1</A>);
<LI>Salvatore Filippone;
interfaces to optional third-party libraries, which extend the functionalities of MLD2P4
</LI>
(see Section <AHREF="node7.html#sec:third-party">3.2</A>), are also available. Many Linux distributions
<LI>Pasqua D'Ambra;
(e.g., Ubuntu, Fedora, CentOS) provide precompiled packages for the prerequisite and
</LI>
optional software. In many cases these packages are split between a runtime part and a
<LI>Daniela di Serafino;
``developer'' part; in order to build MLD2P4 you need both. A description of the base and
</LI>
optional software used by MLD2P4 is given in the next sections.
feature, which enhances the usability of <code>ALLOCATE</code>.
Please note that the four previous libraries must have Fortran
Many compilers do this; in particular, this is
interfaces compatible with MLD2P4;
supported by the GNU Fortran compiler, for which we
usually this means that they should all be built with the same
recommend to use at least version 4.8.
compiler as MLD2P4.
The software defines data types and interfaces for
real and complex data, in both single and double precision.
</FONT></FONT></FONT>
</FONT></FONT></FONT>
<P>
<P>
<FONTSIZE="+1"><FONTSIZE="+1"></FONT></FONT><HR>
<FONTSIZE="+1"><FONTSIZE="+1"><FONTSIZE="+1">Building MLD2P4 requires some base libraries (see Section <AHREF="node7.html#sec:prerequisites">3.1</A>);
interfaces to optional third-party libraries, which extend the functionalities of MLD2P4
(see Section <AHREF="node8.html#sec:third-party">3.2</A>), are also available. Many Linux distributions
(e.g., Ubuntu, Fedora, CentOS) provide precompiled packages for the prerequisite and
optional software. In many cases these packages are split between a runtime part and a
``developer'' part; in order to build MLD2P4 you need both. A description of the base and
optional software used by MLD2P4 is given in the next sections.