Fixed dates in docs.

stopcriterion
Salvatore Filippone 8 years ago
parent 1503eb1301
commit b468335b4a

Binary file not shown.

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 B

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 B

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 373 B

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 B

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 B

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 B

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 B

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 B

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 582 B

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 705 B

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 B

After

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 B

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 549 B

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 B

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 546 B

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 629 B

After

Width:  |  Height:  |  Size: 705 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

After

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 B

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

After

Width:  |  Height:  |  Size: 258 B

@ -49,29 +49,42 @@ based on PSBLAS</FONT></I>
<BR> <BR>
<BR> <BR>
<BR> <BR>
<BR><B>Pasqua D'Ambra</B> <BR><FONT SIZE="+1"><B>Pasqua D'Ambra</B></FONT>
<BR><FONT SIZE="+1">IAC-CNR, Naples, Italy
<BR>
<BR>
<BR>
<BR><FONT SIZE="+1"><B>Daniela di Serafino</B></FONT>
<BR><FONT SIZE="+1">University of Campania ``Luigi Vanvitelli'', Caserta, Italy
<BR>
<BR>
<BR>
<BR><FONT SIZE="+1"><B>Salvatore Filippone</B></FONT>
<BR><FONT SIZE="+1">Cranfield University, Cranfield, United Kingdom
<BR>
<BR>
<BR>
<BR>
<BR>
<BR> <BR>
ICAR-CNR, Naples, Italy
<BR><B>Daniela di Serafino</B>
<BR> <BR>
Second University of Naples, Italy
<BR><B>Salvatore Filippone</B>
<BR> <BR>
Cranfield University, United Kingdom
<BR> <BR>
<BR> <BR>
<BR> <BR>
Software version: 2.1 Software version: 2.1
<BR> <BR>
Feb. 28, 2017 July 31, 2017
<BR> <BR>
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
<BR><HR> <BR><HR>
<!--Table of Child-Links--> <!--Table of Child-Links-->
<A NAME="CHILD_LINKS"></A> <A NAME="CHILD_LINKS"></A>

@ -53,7 +53,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION00010000000000000000"> <H1><A NAME="SECTION00010000000000000000">
Abstract</A> Abstract</A>
</H1> </H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
MLD2P4 (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 MLD2P4 (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) is a package of parallel algebraic multi-level preconditioners. BASED ON </SMALL>PSBLAS) is a package of parallel algebraic multi-level preconditioners.
@ -64,31 +64,33 @@ multigrid methods. In the multi-level case, a purely algebraic approach is appli
generate coarse-level corrections, so that no geometric background is needed generate coarse-level corrections, so that no geometric background is needed
concerning the matrix to be preconditioned. The matrix is assumed to be square, concerning the matrix to be preconditioned. The matrix is assumed to be square,
real or complex. real or complex.
</FONT></FONT></FONT>
<P> <P>
MLD2P4 has been designed to provide scalable and easy-to-use preconditioners <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 has been designed to provide scalable and easy-to-use preconditioners
in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms) in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)
computational framework and can be used in conjuction with the Krylov solvers computational framework and can be used in conjuction with the Krylov solvers
available in this framework. MLD2P4 enables the user to easily specify different available in this framework. MLD2P4 enables the user to easily specify different
features of an algebraic multi-level preconditioner, thus allowing to search features of an algebraic multi-level preconditioner, thus allowing to search
for the ``best'' preconditioner for the problem at hand. for the ``best'' preconditioner for the problem at hand.
</FONT></FONT></FONT>
<P> <P>
The package employs object-oriented design techniques in <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The package employs object-oriented design techniques in
Fortran&nbsp;2003, with interfaces to additional third party libraries Fortran&nbsp;2003, with interfaces to additional third party libraries
such as MUMPS, UMFPACK, SuperLU, and SuperLU_Dist, which such as MUMPS, UMFPACK, SuperLU, and SuperLU_Dist, which
can be exploited in building multi-level preconditioners. The parallel can be exploited in building multi-level preconditioners. The parallel
implementation is based on a Single Program Multiple Data (SPMD) implementation is based on a Single Program Multiple Data (SPMD)
paradigm; the inter-process communication is based on MPI and paradigm; the inter-process communication is based on MPI and
is managed mainly through PSBLAS. is managed mainly through PSBLAS.
</FONT></FONT></FONT>
<P> <P>
This guide provides a brief description of the functionalities and <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">This guide provides a brief description of the functionalities and
the user interface of MLD2P4. the user interface of MLD2P4.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<HR>
</FONT></FONT></FONT><HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html63" <A NAME="tex2html63"
HREF="node2.html"> HREF="node2.html">

@ -53,11 +53,11 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00055000000000000000"></A><A NAME="sec:ex_and_test"></A> <H2><A NAME="SECTION00055000000000000000"></A><A NAME="sec:ex_and_test"></A>
<BR> <BR>
Example and test programs Example and test programs
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
The package contains the <code>examples</code> and <code>tests</code> directories; The package contains the <code>examples</code> and <code>tests</code> directories;
both of them are further divided into <code>fileread</code> and both of them are further divided into <code>fileread</code> and
<code>pdegen</code> subdirectories. Their purpose is as follows: <code>pdegen</code> subdirectories. Their purpose is as follows:
<DL> </FONT></FONT></FONT><DL>
<DT><STRONG><TT>examples</TT></STRONG></DT> <DT><STRONG><TT>examples</TT></STRONG></DT>
<DD>contains a set of simple example programs with a <DD>contains a set of simple example programs with a
predefined choice of preconditioners, selectable via integer predefined choice of preconditioners, selectable via integer
@ -70,12 +70,13 @@ both of them are further divided into <code>fileread</code> and
subdirectories, to experiment with the full range of preconditioners subdirectories, to experiment with the full range of preconditioners
implemented in the package. implemented in the package.
</DD> </DD>
</DL> </DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
The <code>fileread</code> directories contain sample programs that read The <code>fileread</code> directories contain sample programs that read
sparse matrices from files, according to the Matrix Market or the sparse matrices from files, according to the Matrix Market or the
Harwell-Boeing storage format; the <code>pdegen</code> programs generate Harwell-Boeing storage format; the <code>pdegen</code> programs generate
matrices in full parallel mode from the discretization of a sample partial matrices in full parallel mode from the discretization of a sample partial
differential equation. differential equation.
</FONT></FONT></FONT>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -54,7 +54,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION00060000000000000000"></A><A NAME="sec:background"></A> <H1><A NAME="SECTION00060000000000000000"></A><A NAME="sec:background"></A>
<BR> <BR>
Multigrid Background Multigrid Background
</H1> Multigrid preconditioners, coupled with Krylov iterative solvers, are widely used in the parallel solution of large and sparse linear systems, because of their optimality in the solution of linear systems arising from the discretization of scalar elliptic Partial Differential Equations (PDEs) on regular grids. Optimality, also known as algorithmic scalability, is the property of having a computational cost per iteration that depends linearly on the problem size, and a convergence rate that is independent of the problem size. Multigrid preconditioners are based on a recursive application of a two-grid process consisting of smoother iterations and a coarse-space (or coarse-level) correction. The smoothers may be either basic iterative methods, such as the Jacobi and Gauss-Seidel ones, or more complex subspace-correction methods, such as the Schwarz ones. The coarse-space correction consists of solving, in an appropriately chosen coarse space, the residual equation associated with the approximate solution computed by the smoother, and of using the solution of this equation to correct the previous approximation. The transfer of information between the original (fine) space and the coarse one is performed by using suitable restriction and prolongation operators. The construction of the coarse space and the corresponding transfer operators is carried out by applying a so-called coarsening algorithm to the system matrix. Two main approaches can be used to perform coarsening: the geometric approach, which exploits the knowledge of some physical grid associated with the matrix and requires the user to define transfer operators from the fine to the coarse level and vice versa, and the algebraic approach, which builds the coarse-space correction and the associate transfer operators using only matrix information. The first approach may be difficult when the system comes from discretizations on complex geometries; furthermore, ad hoc one-level smoothers may be required to get an efficient interplay between fine and coarse levels, e.g., when matrices with highly varying coefficients are considered. The second approach performs a fully automatic coarsening and enforces the interplay between fine and coarse level by suitably choosing the coarse space and the coarse-to-fine interpolation (see, e.g., [<A </H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Multigrid preconditioners, coupled with Krylov iterative solvers, are widely used in the parallel solution of large and sparse linear systems, because of their optimality in the solution of linear systems arising from the discretization of scalar elliptic Partial Differential Equations (PDEs) on regular grids. Optimality, also known as algorithmic scalability, is the property of having a computational cost per iteration that depends linearly on the problem size, and a convergence rate that is independent of the problem size. Multigrid preconditioners are based on a recursive application of a two-grid process consisting of smoother iterations and a coarse-space (or coarse-level) correction. The smoothers may be either basic iterative methods, such as the Jacobi and Gauss-Seidel ones, or more complex subspace-correction methods, such as the Schwarz ones. The coarse-space correction consists of solving, in an appropriately chosen coarse space, the residual equation associated with the approximate solution computed by the smoother, and of using the solution of this equation to correct the previous approximation. The transfer of information between the original (fine) space and the coarse one is performed by using suitable restriction and prolongation operators. The construction of the coarse space and the corresponding transfer operators is carried out by applying a so-called coarsening algorithm to the system matrix. Two main approaches can be used to perform coarsening: the geometric approach, which exploits the knowledge of some physical grid associated with the matrix and requires the user to define transfer operators from the fine to the coarse level and vice versa, and the algebraic approach, which builds the coarse-space correction and the associate transfer operators using only matrix information. The first approach may be difficult when the system comes from discretizations on complex geometries; furthermore, ad hoc one-level smoothers may be required to get an efficient interplay between fine and coarse levels, e.g., when matrices with highly varying coefficients are considered. The second approach performs a fully automatic coarsening and enforces the interplay between fine and coarse level by suitably choosing the coarse space and the coarse-to-fine interpolation (see, e.g., [<A
HREF="node27.html#Briggs2000">3</A>,<A HREF="node27.html#Briggs2000">3</A>,<A
HREF="node27.html#Stuben_01">23</A>,<A HREF="node27.html#Stuben_01">23</A>,<A
HREF="node27.html#dd2_96">21</A>] for details.) MLD2P4 uses a pure algebraic approach, based on the smoothed aggregation algorithm [<A HREF="node27.html#dd2_96">21</A>] for details.) MLD2P4 uses a pure algebraic approach, based on the smoothed aggregation algorithm [<A
@ -64,7 +64,8 @@ Multigrid Background
HREF="node27.html#para_04">4</A>,<A HREF="node27.html#para_04">4</A>,<A
HREF="node27.html#aaecc_07">5</A>,<A HREF="node27.html#aaecc_07">5</A>,<A
HREF="node27.html#apnum_07">7</A>,<A HREF="node27.html#apnum_07">7</A>,<A
HREF="node27.html#MLD2P4_TOMS">8</A>]. We note that optimal multigrid preconditioners do not necessarily correspond to minimum execution times in a parallel setting. Indeed, to obtain effective parallel multigrid preconditioners, a tradeoff between the optimality and the cost of building and applying the smoothers and the coarse-space corrections must be achieved. Effective parallel preconditioners require algorithmic scalability to be coupled with implementation scalability, i.e., a computational cost per iteration which remains (almost) constant as the number of parallel processors increases. <BR><HR> HREF="node27.html#MLD2P4_TOMS">8</A>]. We note that optimal multigrid preconditioners do not necessarily correspond to minimum execution times in a parallel setting. Indeed, to obtain effective parallel multigrid preconditioners, a tradeoff between the optimality and the cost of building and applying the smoothers and the coarse-space corrections must be achieved. Effective parallel preconditioners require algorithmic scalability to be coupled with implementation scalability, i.e., a computational cost per iteration which remains (almost) constant as the number of parallel processors increases. </FONT></FONT></FONT>
<BR><HR>
<!--Table of Child-Links--> <!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A> <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>

@ -53,7 +53,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00061000000000000000"></A><A NAME="sec:multilevel"></A> <H2><A NAME="SECTION00061000000000000000"></A><A NAME="sec:multilevel"></A>
<BR> <BR>
AMG preconditioners AMG preconditioners
</H2> In order to describe the AMG preconditioners available in MLD2P4, we consider a linear system <BR> </H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> In order to describe the AMG preconditioners available in MLD2P4, we consider a linear system </FONT></FONT></FONT>
<BR>
<DIV ALIGN="RIGHT"> <DIV ALIGN="RIGHT">
<!-- MATH <!-- MATH
@ -64,33 +65,33 @@ Ax=b,
<TABLE WIDTH="100%" ALIGN="CENTER"> <TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:system"></A><IMG <TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:system"></A><IMG
WIDTH="58" HEIGHT="30" BORDER="0" WIDTH="58" HEIGHT="30" BORDER="0"
SRC="img1.png" SRC="img2.png"
ALT="\begin{displaymath} ALT="\begin{displaymath}
Ax=b, Ax=b,
\end{displaymath}"></TD> \end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT"> <TD WIDTH=10 ALIGN="RIGHT">
(2)</TD></TR> (2)</TD></TR>
</TABLE> </TABLE>
<BR CLEAR="ALL"></DIV><P></P> <BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> where <!-- MATH
where <!-- MATH
$A=(a_{ij}) \in \mathbb{R}^{n \times n}$ $A=(a_{ij}) \in \mathbb{R}^{n \times n}$
--> -->
<IMG <IMG
WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0" WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
SRC="img4.png" SRC="img5.png"
ALT="$A=(a_{ij}) \in \mathbb{R}^{n \times n}$"> is a nonsingular sparse matrix; for ease of presentation we assume <IMG ALT="$A=(a_{ij}) \in \mathbb{R}^{n \times n}$"> is a nonsingular sparse matrix; for ease of presentation we assume <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png" SRC="img3.png"
ALT="$A$"> is real, but the results are valid for the complex case as well. Let us assume as finest index space the set of row (column) indices of <IMG ALT="$A$"> is real, but the results are valid for the complex case as well. Let us assume as finest index space the set of row (column) indices of <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png" SRC="img3.png"
ALT="$A$">, i.e., <!-- MATH ALT="$A$">, i.e., <!-- MATH
$\Omega = \{1, 2, \ldots, n\}$ $\Omega = \{1, 2, \ldots, n\}$
--> -->
<IMG <IMG
WIDTH="132" HEIGHT="36" ALIGN="MIDDLE" BORDER="0" WIDTH="132" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img5.png" SRC="img6.png"
ALT="$\Omega = \{1, 2, \ldots, n\}$">. Any algebraic multilevel preconditioners implemented in MLD2P4 generates a hierarchy of index spaces and a corresponding hierarchy of matrices, <BR><P></P> ALT="$\Omega = \{1, 2, \ldots, n\}$">. Any algebraic multilevel preconditioners implemented in MLD2P4 generates a hierarchy of index spaces and a corresponding hierarchy of matrices, </FONT></FONT></FONT>
<BR><P></P>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<!-- MATH <!-- MATH
\begin{displaymath} \begin{displaymath}
@ -100,42 +101,42 @@ where <!-- MATH
<IMG <IMG
WIDTH="398" HEIGHT="30" BORDER="0" WIDTH="398" HEIGHT="30" BORDER="0"
SRC="img6.png" SRC="img7.png"
ALT="\begin{displaymath}\Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev}, \quad A^1 \equiv A, A^2, \ldots, A^{nlev}, \end{displaymath}"> ALT="\begin{displaymath}\Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev}, \quad A^1 \equiv A, A^2, \ldots, A^{nlev}, \end{displaymath}">
</DIV> </DIV>
<BR CLEAR="ALL"> <BR CLEAR="ALL">
<P></P> <P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> by using the information contained in <IMG
by using the information contained in <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png" SRC="img3.png"
ALT="$A$">, without assuming any knowledge of the geometry of the problem from which <IMG ALT="$A$">, without assuming any knowledge of the geometry of the problem from which <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png" SRC="img3.png"
ALT="$A$"> originates. A vector space <!-- MATH ALT="$A$"> originates. A vector space <!-- MATH
$\mathbb{R}^{n_{k}}$ $\mathbb{R}^{n_{k}}$
--> -->
<IMG <IMG
WIDTH="33" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="33" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img7.png" SRC="img8.png"
ALT="$\mathbb{R}^{n_{k}}$"> is associated with <IMG ALT="$\mathbb{R}^{n_{k}}$"> is associated with <IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img8.png" SRC="img9.png"
ALT="$\Omega^k$">, where <IMG ALT="$\Omega^k$">, where <IMG
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img9.png" SRC="img10.png"
ALT="$n_k$"> is the size of <IMG ALT="$n_k$"> is the size of <IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img8.png" SRC="img9.png"
ALT="$\Omega^k$">. For all <IMG ALT="$\Omega^k$">. For all <IMG
WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0" WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img10.png" SRC="img11.png"
ALT="$k &lt; nlev$">, a restriction operator and a prolongation one are built, which connect two levels <IMG ALT="$k &lt; nlev$">, a restriction operator and a prolongation one are built, which connect two levels <IMG
WIDTH="14" HEIGHT="16" ALIGN="BOTTOM" BORDER="0" WIDTH="14" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img11.png" SRC="img12.png"
ALT="$k$"> and <IMG ALT="$k$"> and <IMG
WIDTH="44" HEIGHT="34" ALIGN="MIDDLE" BORDER="0" WIDTH="44" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img12.png" SRC="img13.png"
ALT="$k+1$">: <BR><P></P> ALT="$k+1$">: </FONT></FONT></FONT>
<BR><P></P>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<!-- MATH <!-- MATH
\begin{displaymath} \begin{displaymath}
@ -145,12 +146,35 @@ P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad R^k \in \mathbb{R}^{n_{k+1}\
<IMG <IMG
WIDTH="254" HEIGHT="30" BORDER="0" WIDTH="254" HEIGHT="30" BORDER="0"
SRC="img13.png" SRC="img14.png"
ALT="\begin{displaymath} P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad R^k \in \mathbb{R}^{n_{k+1}\times n_k}; \end{displaymath}"> ALT="\begin{displaymath} P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad R^k \in \mathbb{R}^{n_{k+1}\times n_k}; \end{displaymath}">
</DIV> </DIV>
<BR CLEAR="ALL"> <BR CLEAR="ALL">
<P></P> <P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<BR><HR> </FONT></FONT></FONT><HR>
<!--Navigation Panel-->
<A NAME="tex2html220"
HREF="node13.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html216"
HREF="node11.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html212"
HREF="node11.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html218"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html221"
HREF="node13.html">Getting Started</A>
<B> Up:</B> <A NAME="tex2html217"
HREF="node11.html">Multigrid Background</A>
<B> Previous:</B> <A NAME="tex2html213"
HREF="node11.html">Multigrid Background</A>
&nbsp; <B> <A NAME="tex2html219"
HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY> </BODY>
</HTML> </HTML>

@ -54,14 +54,14 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:started"></A> <H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:started"></A>
<BR> <BR>
Getting Started Getting Started
</H1> </H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
We describe the basics for building and applying MLD2P4 one-level and multi-level <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We describe the basics for building and applying MLD2P4 one-level and multi-level
(i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS [<A (i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS [<A
HREF="node27.html#PSBLASGUIDE">13</A>]. HREF="node27.html#PSBLASGUIDE">13</A>].
The following steps are required: The following steps are required:
</FONT></FONT></FONT>
<OL> <OL>
<LI><I>Declare the preconditioner data structure</I>. It is a derived data type, <LI><I>Declare the preconditioner data structure</I>. It is a derived data type,
<code>mld_</code><I>x</I><code>prec_</code> <code>type</code>, where <I>x</I> may be <code>s</code>, <code>d</code>, <code>c</code> <code>mld_</code><I>x</I><code>prec_</code> <code>type</code>, where <I>x</I> may be <code>s</code>, <code>d</code>, <code>c</code>
@ -113,16 +113,16 @@ performed by the routine <code>bld</code>.
the routine <code>free</code>. This step is complementary to step 1 and should the routine <code>free</code>. This step is complementary to step 1 and should
be performed when the preconditioner is no more used. be performed when the preconditioner is no more used.
</LI> </LI>
</OL> </OL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
All the previous routines are available as methods of the preconditioner object. <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">All the previous routines are available as methods of the preconditioner object.
A detailed description of them is given in Section&nbsp;<A HREF="node15.html#sec:userinterface">6</A>. A detailed description of them is given in Section&nbsp;<A HREF="node15.html#sec:userinterface">6</A>.
Examples showing the basic use of MLD2P4 are reported in Section&nbsp;<A HREF="node14.html#sec:examples">5.1</A>. Examples showing the basic use of MLD2P4 are reported in Section&nbsp;<A HREF="node14.html#sec:examples">5.1</A>.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="516"></A> <DIV ALIGN="CENTER"><A NAME="532"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 1:</STRONG> <CAPTION><STRONG>Table 1:</STRONG>
Preconditioner types, corresponding strings and default choices. Preconditioner types, corresponding strings and default choices.
@ -168,25 +168,25 @@ Preconditioner types, corresponding strings and default choices.
</DIV></TD></TR> </DIV></TD></TR>
</TABLE> </TABLE>
</DIV><P></P> </DIV><P></P>
<BR> <BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
Note that the module <code>mld_prec_mod</code>, containing the definition of the <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Note that the module <code>mld_prec_mod</code>, containing the definition of the
preconditioner data type and the interfaces to the routines of MLD2P4, preconditioner data type and the interfaces to the routines of MLD2P4,
must be used in any program calling such routines. must be used in any program calling such routines.
The modules <code>psb_base_mod</code>, for the sparse matrix and communication descriptor The modules <code>psb_base_mod</code>, for the sparse matrix and communication descriptor
data types, and <code>psb_krylov_mod</code>, for interfacing with the data types, and <code>psb_krylov_mod</code>, for interfacing with the
Krylov solvers, must be also used (see Section&nbsp;<A HREF="node14.html#sec:examples">5.1</A>). Krylov solvers, must be also used (see Section&nbsp;<A HREF="node14.html#sec:examples">5.1</A>).
<BR> <BR></FONT></FONT></FONT>
<P> <P>
<B>Remark 1.</B> Coarsest-level solvers based on the LU factorization, <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Remark 1.</B> Coarsest-level solvers based on the LU factorization,
such as those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU_Dist, such as those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU_Dist,
usually lead to smaller numbers of preconditioned Krylov usually lead to smaller numbers of preconditioned Krylov
iterations than inexact solvers, when the linear system comes from iterations than inexact solvers, when the linear system comes from
a standard discretization of basic scalar elliptic PDE problems. However, a standard discretization of basic scalar elliptic PDE problems. However,
this does not necessarily correspond to the smallest execution time this does not necessarily correspond to the smallest execution time
on parallel computers. on parallel computers. </FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><HR> <BR><HR>
<!--Table of Child-Links--> <!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A> <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>

@ -53,10 +53,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00071000000000000000"></A><A NAME="sec:examples"></A> <H2><A NAME="SECTION00071000000000000000"></A><A NAME="sec:examples"></A>
<BR> <BR>
Examples Examples
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
The code reported in Figure&nbsp;<A HREF="#fig:ex1">2</A> shows how to set and apply the default <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The code reported in Figure&nbsp;<A HREF="#fig:ex1">2</A> shows how to set and apply the default
multi-level preconditioner available in the real double precision version multi-level preconditioner available in the real double precision version
of MLD2P4 (see Table&nbsp;<A HREF="#tab:precinit">1</A>). This preconditioner is chosen of MLD2P4 (see Table&nbsp;<A HREF="#tab:precinit">1</A>). This preconditioner is chosen
by simply specifying <code>'ML'</code> as the second argument of <code>P%init</code> by simply specifying <code>'ML'</code> as the second argument of <code>P%init</code>
@ -65,9 +64,9 @@ solver provided by PSBLAS (the matrix of the system to be solved is
assumed to be positive definite). As previously observed, the modules assumed to be positive definite). As previously observed, the modules
<code>psb_base_mod</code>, <code>mld_prec_mod</code> and <code>psb_krylov_mod</code> <code>psb_base_mod</code>, <code>mld_prec_mod</code> and <code>psb_krylov_mod</code>
must be used by the example program. must be used by the example program.
</FONT></FONT></FONT>
<P> <P>
The part of the code concerning the <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The part of the code concerning the
reading and assembling of the sparse matrix and the right-hand side vector, performed reading and assembling of the sparse matrix and the right-hand side vector, performed
through the PSBLAS routines for sparse matrix and vector management, is not reported through the PSBLAS routines for sparse matrix and vector management, is not reported
here for brevity; the statements concerning the deallocation of the PSBLAS here for brevity; the statements concerning the deallocation of the PSBLAS
@ -79,17 +78,17 @@ input data is available in <code>examples/fileread/runs</code>.
For details on the use of the PSBLAS routines, see the PSBLAS User's For details on the use of the PSBLAS routines, see the PSBLAS User's
Guide&nbsp;[<A Guide&nbsp;[<A
HREF="node27.html#PSBLASGUIDE">13</A>]. HREF="node27.html#PSBLASGUIDE">13</A>].
</FONT></FONT></FONT>
<P> <P>
The setup and application of the default multi-level preconditioner <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The setup and application of the default multi-level preconditioner
for the real single precision and the complex, single and double for the real single precision and the complex, single and double
precision, versions are obtained with straightforward modifications of the previous precision, versions are obtained with straightforward modifications of the previous
example (see Section&nbsp;<A HREF="node15.html#sec:userinterface">6</A> for details). If these versions are installed, example (see Section&nbsp;<A HREF="node15.html#sec:userinterface">6</A> for details). If these versions are installed,
the corresponding codes are available in <code>examples/fileread/</code>. the corresponding codes are available in <code>examples/fileread/</code>.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="519"></A> <DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="535"></A>
<TABLE> <TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
setup and application of the default multi-level preconditioner (example 1). setup and application of the default multi-level preconditioner (example 1).
@ -158,9 +157,9 @@ setup and application of the default multi-level preconditioner (example 1).
</DIV></TD></TR> </DIV></TD></TR>
</TABLE> </TABLE>
</DIV> </DIV>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
Different versions of the multi-level preconditioner can be obtained by changing <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Different versions of the multi-level preconditioner can be obtained by changing
the default values of the preconditioner parameters. The code reported in the default values of the preconditioner parameters. The code reported in
Figure&nbsp;<A HREF="#fig:ex2">3</A> shows how to set a V-cycle preconditioner Figure&nbsp;<A HREF="#fig:ex2">3</A> shows how to set a V-cycle preconditioner
which applies 1 block-Jacobi sweep as pre- and post-smoother, which applies 1 block-Jacobi sweep as pre- and post-smoother,
@ -179,23 +178,23 @@ matrix is distributed, since MUMPS can be used on both
replicated and distributed matrices, and by default replicated and distributed matrices, and by default
it is used on replicated ones. The code fragments shown in Figures&nbsp;<A HREF="#fig:ex2">3</A> and <A HREF="#fig:ex3">4</A> are it is used on replicated ones. The code fragments shown in Figures&nbsp;<A HREF="#fig:ex2">3</A> and <A HREF="#fig:ex3">4</A> are
included in the example program file <code>mld_dexample_ml.f90</code> too. included in the example program file <code>mld_dexample_ml.f90</code> too.
</FONT></FONT></FONT>
<P> <P>
Finally, Figure&nbsp;<A HREF="#fig:ex4">5</A> shows the setup of a one-level <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Finally, Figure&nbsp;<A HREF="#fig:ex4">5</A> shows the setup of a one-level
additive Schwarz preconditioner, i.e., RAS with overlap 2. additive Schwarz preconditioner, i.e., RAS with overlap 2.
Note also that a Krylov method different from CG must be used to solve Note also that a Krylov method different from CG must be used to solve
the preconditioned system, since the preconditione in nonsymmetric. the preconditioned system, since the preconditione in nonsymmetric.
The corresponding example program is available in the file The corresponding example program is available in the file
<code>mld_dexample_1lev.f90</code>. <code>mld_dexample_1lev.f90</code>.
</FONT></FONT></FONT>
<P> <P>
For all the previous preconditioners, example programs where the sparse matrix and <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For all the previous preconditioners, example programs where the sparse matrix and
the right-hand side are generated by discretizing a PDE with Dirichlet the right-hand side are generated by discretizing a PDE with Dirichlet
boundary conditions are also available in the directory <code>examples/pdegen</code>. boundary conditions are also available in the directory <code>examples/pdegen</code>.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="521"></A> <DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="537"></A>
<TABLE> <TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
setup of a multi-level preconditioner</CAPTION> setup of a multi-level preconditioner</CAPTION>
@ -225,10 +224,10 @@ setup of a multi-level preconditioner</CAPTION>
</DIV></TD></TR> </DIV></TD></TR>
</TABLE> </TABLE>
</DIV> </DIV>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<DIV ALIGN="CENTER"><A NAME="fig:ex3"></A><A NAME="523"></A> <DIV ALIGN="CENTER"><A NAME="fig:ex3"></A><A NAME="539"></A>
<TABLE> <TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
setup of a multi-level preconditioner</CAPTION> setup of a multi-level preconditioner</CAPTION>
@ -258,10 +257,10 @@ setup of a multi-level preconditioner</CAPTION>
</DIV></TD></TR> </DIV></TD></TR>
</TABLE> </TABLE>
</DIV> </DIV>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="525"></A> <DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="541"></A>
<TABLE> <TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
setup of a one-level Schwarz preconditioner.</CAPTION> setup of a one-level Schwarz preconditioner.</CAPTION>
@ -286,9 +285,9 @@ setup of a one-level Schwarz preconditioner.</CAPTION>
</DIV></TD></TR> </DIV></TD></TR>
</TABLE> </TABLE>
</DIV> </DIV>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<HR> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html243" <A NAME="tex2html243"
HREF="node15.html"> HREF="node15.html">

@ -54,10 +54,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION00080000000000000000"></A><A NAME="sec:userinterface"></A> <H1><A NAME="SECTION00080000000000000000"></A><A NAME="sec:userinterface"></A>
<BR> <BR>
User Interface User Interface
</H1> </H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
The basic user interface of MLD2P4 consists of eight routines. The six <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The basic user interface of MLD2P4 consists of eight routines. The six
routines <code>init</code>, <code>set</code>, routines <code>init</code>, <code>set</code>,
<code>hierarchy_build</code>, <code>smoothers_build</code>, <code>hierarchy_build</code>, <code>smoothers_build</code>,
<code>bld</code>, and <code>apply</code> encapsulate all the <code>bld</code>, and <code>apply</code> encapsulate all the
@ -65,14 +64,14 @@ functionalities for the setup and the application of any multi-level and one-lev
preconditioner implemented in the package. preconditioner implemented in the package.
The routine <code>free</code> deallocates the preconditioner data structure, while The routine <code>free</code> deallocates the preconditioner data structure, while
<code>descr</code> prints a description of the preconditioner setup by the user. <code>descr</code> prints a description of the preconditioner setup by the user.
</FONT></FONT></FONT>
<P> <P>
All the routines are available as methods of the preconditioner object. <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">All the routines are available as methods of the preconditioner object.
For each routine, the same user interface is overloaded with For each routine, the same user interface is overloaded with
respect to the real/ complex case and the single/double precision; respect to the real/ complex case and the single/double precision;
arguments with appropriate data types must be passed to the routine, arguments with appropriate data types must be passed to the routine,
i.e., i.e.,
</FONT></FONT></FONT>
<UL> <UL>
<LI>the sparse matrix data structure, containing the matrix to be <LI>the sparse matrix data structure, containing the matrix to be
preconditioned, must be of type <code>psb_</code><I>x</I><code>spmat_type</code> preconditioned, must be of type <code>psb_</code><I>x</I><code>spmat_type</code>
@ -87,14 +86,14 @@ i.e.,
</LI> </LI>
<LI>the arrays containing the vectors <IMG <LI>the arrays containing the vectors <IMG
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img14.png" SRC="img15.png"
ALT="$v$"> and <IMG ALT="$v$"> and <IMG
WIDTH="17" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" WIDTH="17" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img15.png" SRC="img16.png"
ALT="$w$"> involved in ALT="$w$"> involved in
the preconditioner application <IMG the preconditioner application <IMG
WIDTH="82" HEIGHT="21" ALIGN="BOTTOM" BORDER="0" WIDTH="82" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img16.png" SRC="img17.png"
ALT="$w=B^{-1}v$"> must be of type ALT="$w=B^{-1}v$"> must be of type
<code>psb_</code><I>x</I><code>vect_type</code> with <I>x</I> = <code>psb_</code><I>x</I><code>vect_type</code> with <I>x</I> =
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, in a manner completely <code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, in a manner completely
@ -104,12 +103,13 @@ i.e.,
according to the precision of the sparse matrix and preconditioner according to the precision of the sparse matrix and preconditioner
data structures (see Section&nbsp;<A HREF="node17.html#sec:precset">6.2</A>). data structures (see Section&nbsp;<A HREF="node17.html#sec:precset">6.2</A>).
</LI> </LI>
</UL> </UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
A description of each routine is given in the remainder of this section. A description of each routine is given in the remainder of this section.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><HR> <BR><HR>
<!--Table of Child-Links--> <!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A> <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>

@ -54,56 +54,78 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00081000000000000000"></A><A NAME="sec:precinit"></A> <H2><A NAME="SECTION00081000000000000000"></A><A NAME="sec:precinit"></A>
<BR> <BR>
Subroutine init Subroutine init
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call p%init(ptype,info)</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%init(ptype,info)</code>
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine allocates and initializes the preconditioner This routine allocates and initializes the preconditioner
<code>p</code>, according to the preconditioner type chosen by the user. <code>p</code>, according to the preconditioner type chosen by the user.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<P></P> <P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<TABLE CELLPADDING=3> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>ptype</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>ptype</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=*), intent(in)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=*), intent(in)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The type of preconditioner. Its values are specified </FONT></FONT></FONT></TD>
in Table&nbsp;<A HREF="#tab:precinit">1</A>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The type of preconditioner. Its values are specified
in Table&nbsp;<A HREF="#tab:precinit">1</A>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Note that the strings are case insensitive.</TD> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Note that the strings are case insensitive.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD> <code>info</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</TD> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
</TR> </TR>
</TABLE> </TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
For compatibility with the previous versions of MLD2P4, this routine can be also invoked <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
as follows: as follows:
</FONT></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call mld_precinit(p,ptype,info)</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precinit(p,ptype,info)</code>
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<BR><HR> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<!--Navigation Panel-->
<A NAME="tex2html275"
HREF="node17.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html271"
HREF="node15.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html265"
HREF="node15.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html273"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html276"
HREF="node17.html">Subroutine set</A>
<B> Up:</B> <A NAME="tex2html272"
HREF="node15.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html266"
HREF="node15.html">User Interface</A>
&nbsp; <B> <A NAME="tex2html274"
HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY> </BODY>
</HTML> </HTML>

@ -54,107 +54,115 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00082000000000000000"></A><A NAME="sec:precset"></A> <H2><A NAME="SECTION00082000000000000000"></A><A NAME="sec:precset"></A>
<BR> <BR>
Subroutine set Subroutine set
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call p%set(what,val,info [,ilev, ilmax, pos])</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%set(what,val,info [,ilev, ilmax, pos])</code>
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine sets the parameters defining the preconditioner <code>p</code>. More This routine sets the parameters defining the preconditioner <code>p</code>. More
precisely, the parameter identified by <code>what</code> is assigned the value precisely, the parameter identified by <code>what</code> is assigned the value
contained in <code>val</code>. contained in <code>val</code>.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<P></P> <P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<TABLE CELLPADDING=3> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>what</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>what</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=*)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=*)</code>. </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The parameter to be set. It can be specified through its name; </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The parameter to be set. It can be specified through its name;
the string is case-insensitive. See the string is case-insensitive. See
Tables&nbsp;<A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.</TD> Tables&nbsp;<A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>val </code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer</code> <I>or</I> <code>character(len=*)</code> <I>or</I> <code>val </code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer</code> <I>or</I> <code>character(len=*)</code> <I>or</I>
<code>real(psb_spk_)</code> <I>or</I> <code>real(psb_dpk_)</code>, <code>real(psb_spk_)</code> <I>or</I> <code>real(psb_dpk_)</code>,
<code>intent(in)</code>.</TD> <code>intent(in)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The value of the parameter to be set. The list of allowed </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The value of the parameter to be set. The list of allowed
values and the corresponding data types is given in values and the corresponding data types is given in
Tables&nbsp;<A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>. Tables&nbsp;<A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.
When the value is of type <code>character(len=*)</code>, When the value is of type <code>character(len=*)</code>,
it is also treated as case insensitive.</TD> it is also treated as case insensitive.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD> <code>info</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> </FONT></FONT></FONT></TD>
for details.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A>
for details.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>ilev</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, optional, intent(in)</code>.</TD> <code>ilev</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, optional, intent(in)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>For the multi-level preconditioner, the level at which the </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> For the multi-level preconditioner, the level at which the
preconditioner parameter has to be set. preconditioner parameter has to be set.
The levels are numbered in increasing The levels are numbered in increasing
order starting from the finest one, i.e., level 1 is the finest level. order starting from the finest one, i.e., level 1 is the finest level.
If <code>ilev</code> is not present, the parameter identified by <code>what</code> If <code>ilev</code> is not present, the parameter identified by <code>what</code>
is set at all the appropriate levels (see is set at all the appropriate levels (see
Tables&nbsp;<A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>).</TD> Tables&nbsp;<A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>).</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>ilmax</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, optional, intent(in)</code>.</TD> <code>ilmax</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, optional, intent(in)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>For the multi-level preconditioner, when both </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> For the multi-level preconditioner, when both
<code>ilev</code> and <code>ilmax</code> are present, the settings <code>ilev</code> and <code>ilmax</code> are present, the settings
are applied at all levels <code>ilev:ilmax</code>. When are applied at all levels <code>ilev:ilmax</code>. When
<code>ilev</code> is present but <code>ilmax</code> is not, then <code>ilev</code> is present but <code>ilmax</code> is not, then
the default is <code>ilmax=ilev</code>. the default is <code>ilmax=ilev</code>.
The levels are numbered in increasing The levels are numbered in increasing
order starting from the finest one, i.e., level 1 is the finest level.</TD> order starting from the finest one, i.e., level 1 is the finest level. </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>pos</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>charater(len=*), optional, intent(in)</code>.</TD> <code>pos</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>charater(len=*), optional, intent(in)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Whether the other arguments apply only to the pre-smoother (<code>'PRE'</code>) </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+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, or to the post-smoother (<code>'POST'</code>). If <code>pos</code> is not present,
the other arguments are applied to both smoothers. the other arguments are applied to both smoothers.
If the preconditioner is one-level or the parameter identified by <code>what</code> If the preconditioner is one-level or the parameter identified by <code>what</code>
does not concern the smoothers, <code>pos</code> is ignored.</TD> does not concern the smoothers, <code>pos</code> is ignored.
</FONT></FONT></FONT></TD>
</TR> </TR>
</TABLE> </TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
For compatibility with the previous versions of MLD2P4, this routine can be also invoked <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
as follows: as follows:
</FONT></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call mld_precset(p,what,val,info)</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precset(p,what,val,info)</code>
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
However, in this case the optional arguments <code>ilev</code>, <code>ilmax</code>, and <code>pos</code> However, in this case the optional arguments <code>ilev</code>, <code>ilmax</code>, and <code>pos</code>
cannot be used. cannot be used.
<BR> <BR></FONT></FONT></FONT>
<P> <P>
A variety of preconditioners can be obtained <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">A variety of preconditioners can be obtained
by a suitable setting of the preconditioner parameters. These parameters by a suitable setting of the preconditioner parameters. These parameters
can be logically divided into four groups, i.e., parameters defining can be logically divided into four groups, i.e., parameters defining
</FONT></FONT></FONT>
<OL> <OL>
<LI>the type of multi-level cycle and how many cycles must be applied; <LI>the type of multi-level cycle and how many cycles must be applied;
</LI> </LI>
@ -168,14 +176,14 @@ can be logically divided into four groups, i.e., parameters defining
<P> <P>
</LI> </LI>
</OL> </OL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
A list of the parameters that can be set, along with their allowed and A list of the parameters that can be set, along with their allowed and
default values, is given in Tables&nbsp;<A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>. default values, is given in Tables&nbsp;<A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.
For a description of the meaning of the parameters, please For a description of the meaning of the parameters, please
refer also to Section&nbsp;<A HREF="node11.html#sec:background">4</A>. refer also to Section&nbsp;<A HREF="node11.html#sec:background">4</A>.
<BR> <BR></FONT></FONT></FONT>
<P> <P>
<B>Remark 2.</B> A smoother is usually obtained by combining two objects: <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Remark 2.</B> A smoother is usually obtained by combining two objects:
a smoother (<code>SMOOTHER_TYPE</code>) and a local solver (<code>SUB_SOLVE</code>), a smoother (<code>SMOOTHER_TYPE</code>) and a local solver (<code>SUB_SOLVE</code>),
as specified in Tables&nbsp;<A HREF="#tab:p_smoother">7</A>-<A HREF="#tab:p_smoother_1">8</A>. as specified in Tables&nbsp;<A HREF="#tab:p_smoother">7</A>-<A HREF="#tab:p_smoother_1">8</A>.
For example, the block-Jacobi smoother using For example, the block-Jacobi smoother using
@ -191,9 +199,9 @@ hybrid backward Gauss-Seidel, i.e., the previous smoothers can be defined
by setting only <code>SMOOTHER_TYPE</code> to appropriate values (see by setting only <code>SMOOTHER_TYPE</code> to appropriate values (see
Tables&nbsp;<A HREF="#tab:p_smoother">7</A>), i.e., without setting Tables&nbsp;<A HREF="#tab:p_smoother">7</A>), i.e., without setting
<code>SUB_SOLVE</code> too. <code>SUB_SOLVE</code> too.
</FONT></FONT></FONT>
<P> <P>
The smoother and solver objects are arranged in a <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The smoother and solver objects are arranged in a
hierarchical manner. When specifying a smoother object, its parameters, hierarchical manner. When specifying a smoother object, its parameters,
including the local solver, are set to their default values, and when a solver including the local solver, are set to their default values, and when a solver
object is specified, its defaults are also set, overriding in both object is specified, its defaults are also set, overriding in both
@ -201,20 +209,20 @@ cases any previous settings even if explicitly specified. Therefore if
the user sets a smoother, and wishes to use a solver the user sets a smoother, and wishes to use a solver
different from the default one, the call to set the solver must come different from the default one, the call to set the solver must come
<I>after</I> the call to set the smoother. <I>after</I> the call to set the smoother.
</FONT></FONT></FONT>
<P> <P>
Similar considerations apply to the point-Jacobi, Gauss-Seidel and block-Jacobi <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Similar considerations apply to the point-Jacobi, Gauss-Seidel and block-Jacobi
coarsest-level solvers, and shortcuts are available coarsest-level solvers, and shortcuts are available
in this case too (see Table&nbsp;<A HREF="#tab:p_coarse">5</A>). in this case too (see Table&nbsp;<A HREF="#tab:p_coarse">5</A>).
<BR> <BR></FONT></FONT></FONT>
<P> <P>
<B>Remark 3.</B> In general, a coarsest-level solver cannot be used with <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Remark 3.</B> In general, a coarsest-level solver cannot be used with
both the replicated and distributed coarsest-matrix layout; both the replicated and distributed coarsest-matrix layout;
therefore, setting the solver after the layout may change the layout. therefore, setting the solver after the layout may change the layout.
Similarly, setting the layout after the solver may change the solver. Similarly, setting the layout after the solver may change the solver.
</FONT></FONT></FONT>
<P> <P>
More precisely, UMFPACK and SuperLU require the coarsest-level <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">More precisely, UMFPACK and SuperLU require the coarsest-level
matrix to be replicated, while SuperLU_Dist requires it to be distributed. matrix to be replicated, while SuperLU_Dist requires it to be distributed.
In these cases, setting the coarsest-level solver implies that In these cases, setting the coarsest-level solver implies that
the layout is redefined according to the solver, ovverriding any the layout is redefined according to the solver, ovverriding any
@ -228,19 +236,20 @@ reduce to the corresponding local solver objects (see Remark&nbsp;2).
For the point-Jacobi and Gauss-Seidel solvers, these objects For the point-Jacobi and Gauss-Seidel solvers, these objects
correspond to a <I>single</I> point-Jacobi sweep and a <I>single</I> correspond to a <I>single</I> point-Jacobi sweep and a <I>single</I>
Gauss-Seidel sweep, respectively, which are very poor solvers. Gauss-Seidel sweep, respectively, which are very poor solvers.
</FONT></FONT></FONT>
<P> <P>
On the other hand, the distributed layout can be used with any solver <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">On the other hand, the distributed layout can be used with any solver
but UMFPACK and SuperLU; therefore, if any of these two solvers has already but UMFPACK and SuperLU; therefore, if any of these two solvers has already
been selected, the coarsest-level solver is changed to block-Jacobi, been selected, the coarsest-level solver is changed to block-Jacobi,
with the previously chosen solver applied to the local blocks. with the previously chosen solver applied to the local blocks.
Likewise, the replicated layout can be used with any solver but SuperLu_Dist; Likewise, the replicated layout can be used with any solver but SuperLu_Dist;
therefore, if SuperLu_Dist has been previously set, the coarsest-level therefore, if SuperLu_Dist has been previously set, the coarsest-level
solver is changed to the default sequential solver. solver is changed to the default sequential solver.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="949"></A> <DIV ALIGN="CENTER"><A NAME="965"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 2:</STRONG> <CAPTION><STRONG>Table 2:</STRONG>
Parameters defining the multi-level cycle and the number of cycles to Parameters defining the multi-level cycle and the number of cycles to
@ -279,7 +288,7 @@ Note that hybrid Multiplicative Schwarz is equivalent to V-cycle and
<P> <P>
number <IMG number <IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img17.png" SRC="img18.png"
ALT="$\ge 1$"></TD> ALT="$\ge 1$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>1</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>1</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=204>Number of multi-level cycles.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=204>Number of multi-level cycles.</TD>
@ -289,11 +298,11 @@ number <IMG
</TD></TR> </TD></TR>
</TABLE> </TABLE>
</DIV><P></P> </DIV><P></P>
<BR> <BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="954"></A> <DIV ALIGN="CENTER"><A NAME="970"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 3:</STRONG> <CAPTION><STRONG>Table 3:</STRONG>
Parameters defining the aggregation algorithm. Parameters defining the aggregation algorithm.
@ -313,17 +322,17 @@ Parameters defining the aggregation algorithm.
<P> <P>
<IMG <IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img18.png" SRC="img19.png"
ALT="$&gt; 0$"></TD> ALT="$&gt; 0$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><!-- MATH <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><!-- MATH
$\lfloor 40 \sqrt[3]{n} \rfloor$ $\lfloor 40 \sqrt[3]{n} \rfloor$
--> -->
<IMG <IMG
WIDTH="63" HEIGHT="38" ALIGN="MIDDLE" BORDER="0" WIDTH="63" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
SRC="img19.png" SRC="img20.png"
ALT="$\lfloor 40 \sqrt[3]{n} \rfloor$">, where <IMG ALT="$\lfloor 40 \sqrt[3]{n} \rfloor$">, where <IMG
WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png" SRC="img21.png"
ALT="$n$"> is the dimension ALT="$n$"> is the dimension
of the matrix at the finest level</TD> of the matrix at the finest level</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Coarse size threshold. The aggregation stops <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Coarse size threshold. The aggregation stops
@ -338,7 +347,7 @@ Parameters defining the aggregation algorithm.
<P> <P>
<IMG <IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png" SRC="img22.png"
ALT="$&gt; 1$"></TD> ALT="$&gt; 1$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82>1.5</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82>1.5</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Minimum coarsening ratio. The aggregation stops <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Minimum coarsening ratio. The aggregation stops
@ -352,7 +361,7 @@ Parameters defining the aggregation algorithm.
<P> <P>
number <IMG number <IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png" SRC="img22.png"
ALT="$&gt; 1$"></TD> ALT="$&gt; 1$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82>20</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82>20</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Maximum number of levels. The aggregation stops <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Maximum number of levels. The aggregation stops
@ -370,7 +379,7 @@ Currently, only the
aggregation to the sparsity pattern aggregation to the sparsity pattern
of <IMG of <IMG
WIDTH="63" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="63" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img22.png" SRC="img23.png"
ALT="$A+A^T$">.</TD> ALT="$A+A^T$">.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'AGGR_TYPE'</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'AGGR_TYPE'</code></TD>
@ -404,11 +413,11 @@ of levels.</TD>
</TD></TR> </TD></TR>
</TABLE> </TABLE>
</DIV><P></P> </DIV><P></P>
<BR> <BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="958"></A> <DIV ALIGN="CENTER"><A NAME="974"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 4:</STRONG> <CAPTION><STRONG>Table 4:</STRONG>
Parameters defining the aggregation algorithm (continued). Parameters defining the aggregation algorithm (continued).
@ -439,12 +448,12 @@ Parameters defining the aggregation algorithm (continued).
<P> <P>
number&nbsp;<IMG number&nbsp;<IMG
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0" WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img23.png" SRC="img24.png"
ALT="$\in [0, 1]$"></TD> ALT="$\in [0, 1]$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>0.05</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>0.05</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187>The threshold <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187>The threshold <IMG
WIDTH="13" HEIGHT="16" ALIGN="BOTTOM" BORDER="0" WIDTH="13" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img24.png" SRC="img25.png"
ALT="$\theta$"> in the aggregation algorithm, ALT="$\theta$"> in the aggregation algorithm,
see (<A HREF="#eq:strongly_coup">3</A>) in Section&nbsp;<A HREF="#sec:aggregation">4.2</A>. see (<A HREF="#eq:strongly_coup">3</A>) in Section&nbsp;<A HREF="#sec:aggregation">4.2</A>.
See also the note at the bottom of this table.</TD> See also the note at the bottom of this table.</TD>
@ -471,11 +480,11 @@ the parameter <TT>ilev</TT>.</TD>
</TD></TR> </TD></TR>
</TABLE> </TABLE>
</DIV><P></P> </DIV><P></P>
<BR> <BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="963"></A> <DIV ALIGN="CENTER"><A NAME="979"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 5:</STRONG> <CAPTION><STRONG>Table 5:</STRONG>
Parameters defining the coarse-space correction at the coarsest Parameters defining the coarse-space correction at the coarsest
@ -550,14 +559,14 @@ Note that <TT>UMF</TT> and <TT>SLU</TT> require the coarsest
in case the block Jacobi solver in case the block Jacobi solver
is chosen as coarsest-level solver: ILU(<IMG is chosen as coarsest-level solver: ILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img25.png" SRC="img26.png"
ALT="$p$">), ILU(<IMG ALT="$p$">), ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img26.png" SRC="img27.png"
ALT="$p,t$">), ALT="$p,t$">),
MILU(<IMG MILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img25.png" SRC="img26.png"
ALT="$p$">), LU from MUMPS, SuperLU or UMFPACK ALT="$p$">), LU from MUMPS, SuperLU or UMFPACK
(plus triangular solve). (plus triangular solve).
Note that UMFPACK and SuperLU_Dist Note that UMFPACK and SuperLU_Dist
@ -579,11 +588,11 @@ Note that <TT>UMF</TT> and <TT>SLU</TT> require the coarsest
</TD></TR> </TD></TR>
</TABLE> </TABLE>
</DIV><P></P> </DIV><P></P>
<BR> <BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="965"></A> <DIV ALIGN="CENTER"><A NAME="981"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 6:</STRONG> <CAPTION><STRONG>Table 6:</STRONG>
Parameters defining the coarse-space correction at the coarsest Parameters defining the coarse-space correction at the coarsest
@ -603,7 +612,7 @@ level (continued).</CAPTION>
<P> <P>
number <IMG number <IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img18.png" SRC="img19.png"
ALT="$&gt; 0$"></TD> ALT="$&gt; 0$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>10</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>10</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Number of sweeps when <code>JACOBI</code>, <code>GS</code> or <code>BJAC</code> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Number of sweeps when <code>JACOBI</code>, <code>GS</code> or <code>BJAC</code>
@ -615,12 +624,12 @@ number <IMG
<P> <P>
number <IMG number <IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img27.png" SRC="img28.png"
ALT="$\ge 0$"></TD> ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>0</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Fill-in level <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Fill-in level <IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img25.png" SRC="img26.png"
ALT="$p$"> of the ILU factorizations.</TD> ALT="$p$"> of the ILU factorizations.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_ILUTHRS'</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_ILUTHRS'</code></TD>
@ -629,15 +638,15 @@ number <IMG
<P> <P>
number <IMG number <IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img27.png" SRC="img28.png"
ALT="$\ge 0$"></TD> ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>0</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Drop tolerance <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Drop tolerance <IMG
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png" SRC="img29.png"
ALT="$t$"> in the ILU(<IMG ALT="$t$"> in the ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img26.png" SRC="img27.png"
ALT="$p,t$">) factorization.</TD> ALT="$p,t$">) factorization.</TD>
</TR> </TR>
</TABLE> </TABLE>
@ -645,11 +654,11 @@ number <IMG
</TD></TR> </TD></TR>
</TABLE> </TABLE>
</DIV><P></P> </DIV><P></P>
<BR> <BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="967"></A> <DIV ALIGN="CENTER"><A NAME="983"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 7:</STRONG> <CAPTION><STRONG>Table 7:</STRONG>
Parameters defining the smoother or the details of the one-level preconditioner. Parameters defining the smoother or the details of the one-level preconditioner.
@ -720,13 +729,13 @@ Parameters defining the smoother or the details of the one-level preconditioner.
hybrid (forward) Gauss-Seidel, hybrid backward hybrid (forward) Gauss-Seidel, hybrid backward
Gauss-Seidel, ILU(<IMG Gauss-Seidel, ILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img25.png" SRC="img26.png"
ALT="$p$">), ILU(<IMG ALT="$p$">), ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img26.png" SRC="img27.png"
ALT="$p,t$">), MILU(<IMG ALT="$p,t$">), MILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img25.png" SRC="img26.png"
ALT="$p$">), ALT="$p$">),
LU from MUMPS, SuperLU or UMFPACK LU from MUMPS, SuperLU or UMFPACK
(plus triangular solve). See Note for details on hybrid (plus triangular solve). See Note for details on hybrid
@ -739,7 +748,7 @@ Parameters defining the smoother or the details of the one-level preconditioner.
<P> <P>
<FONT SIZE="-1">number&nbsp;<IMG <FONT SIZE="-1">number&nbsp;<IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img27.png" SRC="img28.png"
ALT="$\ge 0$"> ALT="$\ge 0$">
</FONT></TD> </FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> 1 <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> 1
@ -757,7 +766,7 @@ Parameters defining the smoother or the details of the one-level preconditioner.
<P> <P>
<FONT SIZE="-1">number&nbsp;<IMG <FONT SIZE="-1">number&nbsp;<IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img27.png" SRC="img28.png"
ALT="$\ge 0$"> ALT="$\ge 0$">
</FONT></TD> </FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> 1 <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> 1
@ -768,11 +777,11 @@ Parameters defining the smoother or the details of the one-level preconditioner.
</TD></TR> </TD></TR>
</TABLE> </TABLE>
</DIV><P></P> </DIV><P></P>
<BR> <BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="969"></A> <DIV ALIGN="CENTER"><A NAME="985"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 8:</STRONG> <CAPTION><STRONG>Table 8:</STRONG>
Parameters defining the smoother or the details of the one-level preconditioner Parameters defining the smoother or the details of the one-level preconditioner
@ -827,14 +836,14 @@ Parameters defining the smoother or the details of the one-level preconditioner
<P> <P>
<FONT SIZE="-1">number&nbsp;<IMG <FONT SIZE="-1">number&nbsp;<IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img27.png" SRC="img28.png"
ALT="$\ge 0$"> ALT="$\ge 0$">
</FONT></TD> </FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> 0 <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> 0
</FONT></TD> </FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Fill-in level <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Fill-in level <IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img25.png" SRC="img26.png"
ALT="$p$"> of the incomplete LU factorizations. </FONT></TD> ALT="$p$"> of the incomplete LU factorizations. </FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> <code>'SUB_ILUTHRS'</code> </FONT></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> <code>'SUB_ILUTHRS'</code> </FONT></TD>
@ -842,17 +851,17 @@ Parameters defining the smoother or the details of the one-level preconditioner
</FONT></TD> </FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> Any real number&nbsp;<IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> Any real number&nbsp;<IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img27.png" SRC="img28.png"
ALT="$\ge 0$"> ALT="$\ge 0$">
</FONT></TD> </FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> 0 <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> 0
</FONT></TD> </FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Drop tolerance <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Drop tolerance <IMG
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png" SRC="img29.png"
ALT="$t$"> in the ILU(<IMG ALT="$t$"> in the ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img26.png" SRC="img27.png"
ALT="$p,t$">) factorization. </FONT></TD> ALT="$p,t$">) factorization. </FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> </FONT></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> </FONT></TD>
@ -865,12 +874,11 @@ Parameters defining the smoother or the details of the one-level preconditioner
</TD></TR> </TD></TR>
</TABLE> </TABLE>
</DIV><P></P> </DIV><P></P>
<BR> <BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<HR> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html287" <A NAME="tex2html287"
HREF="node18.html"> HREF="node18.html">

@ -54,68 +54,69 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00083000000000000000"></A><A NAME="sec:precbld"></A> <H2><A NAME="SECTION00083000000000000000"></A><A NAME="sec:precbld"></A>
<BR> <BR>
Subroutine build Subroutine build
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call p%build(a,desc_a,info)</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%build(a,desc_a,info)</code>
<BR> <BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine builds the one-level preconditioner <code>p</code> according to the requirements This routine builds the one-level preconditioner <code>p</code> according to the requirements
made by the user through the routines <code>init</code> and <code>set</code> made by the user through the routines <code>init</code> and <code>set</code>
(see Sections&nbsp;<A HREF="node19.html#sec:hier_bld">6.4</A> and&nbsp;<A HREF="node20.html#sec:smooth_bld">6.5</A> for multi-level preconditioners). (see Sections&nbsp;<A HREF="node19.html#sec:hier_bld">6.4</A> and&nbsp;<A HREF="node20.html#sec:smooth_bld">6.5</A> for multi-level preconditioners).
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<P></P> <P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<TABLE CELLPADDING=3> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>a</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>.</TD> <code>a</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>. </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that <I>x</I> must be chosen according matrix to be preconditioned. Note that <I>x</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use. to the real/complex, single/double precision version of MLD2P4 under use.
See the PSBLAS User's Guide for details [<A See the PSBLAS User's Guide for details [<A
HREF="node27.html#PSBLASGUIDE">13</A>].</TD> HREF="node27.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD> <code>desc_a</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_desc_type), intent(in)</code>. </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
details [<A details [<A
HREF="node27.html#PSBLASGUIDE">13</A>].</TD> HREF="node27.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>info</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</TD> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
</TR> </TR>
</TABLE> </TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
For compatibility with the previous versions of MLD2P4, this routine can be also invoked <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
as follows: as follows:
</FONT></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call mld_precbld(p,what,val,info)</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precbld(p,what,val,info)</code>
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
In this case, the routine can be used to build multi-level preconditioners too. In this case, the routine can be used to build multi-level preconditioners too.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<HR> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html299" <A NAME="tex2html299"
HREF="node19.html"> HREF="node19.html">

@ -54,56 +54,81 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:hier_bld"></A> <H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:hier_bld"></A>
<BR> <BR>
Subroutine hierarchy_build Subroutine hierarchy_build
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call p%hierarchy_build(a,desc_a,info)</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%hierarchy_build(a,desc_a,info)</code>
<BR> <BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine builds the hierarchy of matrices and restriction/prolongation This routine builds the hierarchy of matrices and restriction/prolongation
operators for the multi-level preconditioner <code>p</code>, according to the requirements operators for the multi-level preconditioner <code>p</code>, according to the requirements
made by the user through the routines <code>init</code> and <code>set</code>. made by the user through the routines <code>init</code> and <code>set</code>.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<P></P> <P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<TABLE CELLPADDING=3> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>a</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>.</TD> <code>a</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>. </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that <I>x</I> must be chosen according matrix to be preconditioned. Note that <I>x</I> must be chosen according
to the real/complex, to the real/complex,
single/double precision version of MLD2P4 under use. single/double precision version of MLD2P4 under use.
See the PSBLAS User's Guide for details [<A See the PSBLAS User's Guide for details [<A
HREF="node27.html#PSBLASGUIDE">13</A>].</TD> HREF="node27.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD> <code>desc_a</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_desc_type), intent(in)</code>. </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
details [<A details [<A
HREF="node27.html#PSBLASGUIDE">13</A>].</TD> HREF="node27.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>info</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</TD> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
</TR> </TR>
</TABLE> </TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<BR><HR> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<!--Navigation Panel-->
<A NAME="tex2html311"
HREF="node20.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html307"
HREF="node15.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html301"
HREF="node18.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html309"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html312"
HREF="node20.html">Subroutine smoothers_build</A>
<B> Up:</B> <A NAME="tex2html308"
HREF="node15.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html302"
HREF="node18.html">Subroutine build</A>
&nbsp; <B> <A NAME="tex2html310"
HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY> </BODY>
</HTML> </HTML>

@ -117,12 +117,13 @@ Contents</A>
HREF="node27.html">Bibliography</A> HREF="node27.html">Bibliography</A>
</UL> </UL>
<!--End of Table of Contents--> <!--End of Table of Contents-->
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -54,56 +54,80 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:smooth_bld"></A> <H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:smooth_bld"></A>
<BR> <BR>
Subroutine smoothers_build Subroutine smoothers_build
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call p%smoothers_build(a,desc_a,p,info)</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%smoothers_build(a,desc_a,p,info)</code>
<BR> <BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine builds the smoothers and the coarsest-level solvers for the This routine builds the smoothers and the coarsest-level solvers for the
multi-level preconditioner <code>p</code>, according to the requirements made by multi-level preconditioner <code>p</code>, according to the requirements made by
the user through the routines <code>init</code> and <code>set</code>, and based on the aggregation the user through the routines <code>init</code> and <code>set</code>, and based on the aggregation
hierarchy produced by a previous call to <code>hierarchy_build</code> hierarchy produced by a previous call to <code>hierarchy_build</code>
(see Section&nbsp;<A HREF="node19.html#sec:hier_bld">6.4</A>). (see Section&nbsp;<A HREF="node19.html#sec:hier_bld">6.4</A>).
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<P></P> <P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<TABLE CELLPADDING=3> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>a</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>.</TD> <code>a</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>. </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that <I>x</I> must be chosen according matrix to be preconditioned. Note that <I>x</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use. to the real/complex, single/double precision version of MLD2P4 under use.
See the PSBLAS User's Guide for details [<A See the PSBLAS User's Guide for details [<A
HREF="node27.html#PSBLASGUIDE">13</A>].</TD> HREF="node27.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD> <code>desc_a</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_desc_type), intent(in)</code>. </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
details [<A details [<A
HREF="node27.html#PSBLASGUIDE">13</A>].</TD> HREF="node27.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>info</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</TD> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
</TR> </TR>
</TABLE> </TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<BR><HR> <!--Navigation Panel-->
<A NAME="tex2html323"
HREF="node21.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html319"
HREF="node15.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html313"
HREF="node19.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html321"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html324"
HREF="node21.html">Subroutine apply</A>
<B> Up:</B> <A NAME="tex2html320"
HREF="node15.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html314"
HREF="node19.html">Subroutine hierarchy_build</A>
&nbsp; <B> <A NAME="tex2html322"
HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY> </BODY>
</HTML> </HTML>

@ -54,134 +54,140 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precapply"></A> <H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precapply"></A>
<BR> <BR>
Subroutine apply Subroutine apply
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call p%apply(x,y,desc_a,info [,trans,work])</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%apply(x,y,desc_a,info [,trans,work])</code>
<BR> <BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine computes <!-- MATH This routine computes <!-- MATH
$y = op(B^{-1})\, x$ $y = op(B^{-1})\, x$
--> -->
<IMG <IMG
WIDTH="112" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="112" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img29.png" SRC="img30.png"
ALT="$y = op(B^{-1}) x$">, where <IMG ALT="$y = op(B^{-1}) x$">, where <IMG
WIDTH="19" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="19" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img30.png" SRC="img31.png"
ALT="$B$"> is a previously built ALT="$B$"> is a previously built
preconditioner, stored into <code>p</code>, and <IMG preconditioner, stored into <code>p</code>, and <IMG
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img31.png" SRC="img32.png"
ALT="$op$"> ALT="$op$">
denotes the preconditioner itself or its transpose, according to denotes the preconditioner itself or its transpose, according to
the value of <code>trans</code>. the value of <code>trans</code>.
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS, Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
<code>p%apply</code> is called within the PSBLAS routine <code>psb_krylov</code> <code>p%apply</code> is called within the PSBLAS routine <code>psb_krylov</code>
and hence it is completely transparent to the user. and hence it is completely transparent to the user.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<P></P> <P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<TABLE CELLPADDING=3> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>x</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>x</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(in)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(in)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The local part of the vector <IMG
WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img32.png" SRC="img33.png"
ALT="$x$">. Note that <I>type</I> and ALT="$x$">. Note that <I>type</I> and
<I>kind_parameter</I> must be chosen according <I>kind_parameter</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</TD> to the real/complex, single/double precision version of MLD2P4 under use.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>y</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(out)</code>.</TD> <code>y</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(out)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The local part of the vector <IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img33.png" SRC="img34.png"
ALT="$y$">. Note that <I>type</I> and ALT="$y$">. Note that <I>type</I> and
<I>kind_parameter</I> must be chosen according <I>kind_parameter</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</TD> to the real/complex, single/double precision version of MLD2P4 under use.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD> <code>desc_a</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_desc_type), intent(in)</code>. </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor associated to the matrix to be </FONT></FONT></FONT></TD>
preconditioned.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The communication descriptor associated to the matrix to be
preconditioned.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD> <code>info</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</TD> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>trans</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=1), optional, intent(in).</code></TD> <code>trans</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=1), optional, intent(in).</code></FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>If <code>trans</code> = <code>'N','n'</code> then <!-- MATH </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> If <code>trans</code> = <code>'N','n'</code> then <!-- MATH
$op(B^{-1}) = B^{-1}$ $op(B^{-1}) = B^{-1}$
--> -->
<IMG <IMG
WIDTH="123" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="123" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png" SRC="img35.png"
ALT="$op(B^{-1}) = B^{-1}$">; ALT="$op(B^{-1}) = B^{-1}$">;
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
$op(B^{-1}) = B^{-T}$ $op(B^{-1}) = B^{-T}$
--> -->
<IMG <IMG
WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png" SRC="img36.png"
ALT="$op(B^{-1}) = B^{-T}$"> ALT="$op(B^{-1}) = B^{-T}$">
(transpose of <IMG (transpose of <IMG
WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img36.png" SRC="img37.png"
ALT="$B^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH ALT="$B^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
$op(B^{-1}) = B^{-C}$ $op(B^{-1}) = B^{-C}$
--> -->
<IMG <IMG
WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img37.png" SRC="img38.png"
ALT="$op(B^{-1}) = B^{-C}$"> ALT="$op(B^{-1}) = B^{-C}$">
(conjugate transpose of <IMG (conjugate transpose of <IMG
WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img36.png" SRC="img37.png"
ALT="$B^{-1})$">.</TD> ALT="$B^{-1})$">.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>work</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), optional, target</code>.</TD> <code>work</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), optional, target</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Workspace. Its size should be at </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Workspace. Its size should be at
least <code>4 * psb_cd_get_local_</code> <code>cols(desc_a)</code> (see the PSBLAS User's Guide). least <code>4 * psb_cd_get_local_</code> <code>cols(desc_a)</code> (see the PSBLAS User's Guide).
Note that <I>type</I> and <I>kind_parameter</I> must be chosen according 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.</TD> to the real/complex, single/double precision version of MLD2P4 under use.</FONT></FONT></FONT></TD>
</TR> </TR>
</TABLE> </TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
For compatibility with the previous versions of MLD2P4, this routine can be also invoked <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
as follows: as follows:
</FONT></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call mld_precaply(p,what,val,info)</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precaply(p,what,val,info)</code>
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<HR> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html335" <A NAME="tex2html335"
HREF="node22.html"> HREF="node22.html">

@ -54,44 +54,41 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00087000000000000000"></A><A NAME="sec:precfree"></A> <H2><A NAME="SECTION00087000000000000000"></A><A NAME="sec:precfree"></A>
<BR> <BR>
Subroutine free Subroutine free
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call p%free(p,info)</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%free(p,info)</code>
<BR> <BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine deallocates the preconditioner data structure <code>p</code>. This routine deallocates the preconditioner data structure <code>p</code>.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<P></P> <P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<TABLE CELLPADDING=3> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>info</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><code>integer, intent(out)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</TD> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
</TR> </TR>
</TABLE> </TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
For compatibility with the previous versions of MLD2P4, this routine can be also invoked <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
as follows: as follows:
</FONT></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call mld_precfree(p,info)</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precfree(p,info)</code>
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -53,56 +53,77 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00088000000000000000"></A><A NAME="sec:precdescr"></A> <H2><A NAME="SECTION00088000000000000000"></A><A NAME="sec:precdescr"></A>
<BR> <BR>
Subroutine descr Subroutine descr
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call p%descr(info, [iout])</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%descr(info, [iout])</code>
<BR> <BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine prints a description of the preconditioner <code>p</code> to the standard output or This routine prints a description of the preconditioner <code>p</code> to the standard output or
to a file. It must be called after <code>hierachy_build</code> and <code>smoothers_build</code>, to a file. It must be called after <code>hierachy_build</code> and <code>smoothers_build</code>,
or <code>build</code>, have been called. or <code>build</code>, have been called.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<P></P> <P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<TABLE CELLPADDING=3> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>info</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</TD> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>iout</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(in), optional</code>.</TD> <code>iout</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(in), optional</code>.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The id of the file where the preconditioner description </FONT></FONT></FONT></TD>
will be printed; the default is the standard output.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The id of the file where the preconditioner description
will be printed; the default is the standard output.</FONT></FONT></FONT></TD>
</TR> </TR>
</TABLE> </TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
For compatibility with the previous versions of MLD2P4, this routine can be also invoked <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
as follows: as follows:
</FONT></FONT></FONT>
<P> <P>
<DIV ALIGN="CENTER"> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<code>call mld_precdescr(p,info [,iout])</code> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precdescr(p,info [,iout])</code>
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DIV>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<BR><HR> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<!--Navigation Panel-->
<A NAME="tex2html357"
HREF="node24.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html353"
HREF="node15.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html349"
HREF="node22.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html355"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html358"
HREF="node24.html">Adding new smoother and</A>
<B> Up:</B> <A NAME="tex2html354"
HREF="node15.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html350"
HREF="node22.html">Subroutine free</A>
&nbsp; <B> <A NAME="tex2html356"
HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY> </BODY>
</HTML> </HTML>

@ -54,15 +54,14 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A> <H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A>
<BR> <BR>
Adding new smoother and solver objects to MLD2P4 Adding new smoother and solver objects to MLD2P4
</H1> </H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
Developers can add completely new smoother and/or solver classes <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Developers can add completely new smoother and/or solver classes
derived from the base objects in the library (see Remark&nbsp;2 in Section&nbsp;<A HREF="node17.html#sec:precset">6.2</A>), derived from the base objects in the library (see Remark&nbsp;2 in Section&nbsp;<A HREF="node17.html#sec:precset">6.2</A>),
without recompiling the library itself. without recompiling the library itself.
</FONT></FONT></FONT>
<P> <P>
To do so, it is necessary first to select the base type to be extended. <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To do so, it is necessary first to select the base type to be extended.
In our experience, it is quite likely that the new application needs In our experience, it is quite likely that the new application needs
only the definition of a ``solver'' object, which is almost only the definition of a ``solver'' object, which is almost
always acting only on the local part of the distributed matrix. always acting only on the local part of the distributed matrix.
@ -71,11 +70,11 @@ are most often already provided by the block-Jacobi or the additive
Schwarz smoothers. To define a new solver, the developer will then Schwarz smoothers. To define a new solver, the developer will then
have to define its components and methods, perhaps taking one of the have to define its components and methods, perhaps taking one of the
predefined solvers as a starting point, if possible. predefined solvers as a starting point, if possible.
</FONT></FONT></FONT>
<P> <P>
Once the new smoother/solver class has been developed, to use it in <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Once the new smoother/solver class has been developed, to use it in
the context of the multilevel preconditioners it is necessary to: the context of the multilevel preconditioners it is necessary to:
</FONT></FONT></FONT>
<UL> <UL>
<LI>declare in the application program a variable of the new type; <LI>declare in the application program a variable of the new type;
</LI> </LI>
@ -89,21 +88,21 @@ following:
</LI> </LI>
<LI>link the code implementing the various methods into the application executable. <LI>link the code implementing the various methods into the application executable.
</LI> </LI>
</UL> </UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
The new solver object is then dynamically included in the The new solver object is then dynamically included in the
preconditioner structure, and acts as a <I>mold</I> to which the preconditioner structure, and acts as a <I>mold</I> to which the
preconditioner will conform, even though the MLD2P4 library has not preconditioner will conform, even though the MLD2P4 library has not
been modified to account for this new development. been modified to account for this new development.
</FONT></FONT></FONT>
<P> <P>
It is possible to define new values for the keyword <code>WHAT</code> in the <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">It is possible to define new values for the keyword <code>WHAT</code> in the
<code>set</code> routine; if the library code does not recognize a keyword, <code>set</code> routine; if the library code does not recognize a keyword,
it passes it down the composition hierarchy (levels containing it passes it down the composition hierarchy (levels containing
smoothers containing in turn solvers), so that it can be eventually caught by smoothers containing in turn solvers), so that it can be eventually caught by
the new solver. the new solver.
</FONT></FONT></FONT>
<P> <P>
An example is provided in the source code distribution under the <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">An example is provided in the source code distribution under the
folder <code>tests/newslv</code>. In this example we are implementing a new folder <code>tests/newslv</code>. In this example we are implementing a new
incomplete factorization variant (which is simply the ILU(0) incomplete factorization variant (which is simply the ILU(0)
factorization under a new name). Because of the specifics of this case, it is factorization under a new name). Because of the specifics of this case, it is
@ -111,32 +110,36 @@ possible to reuse the basic structure of the ILU solver, with its
L/D/U components and the methods needed to apply the solver; only a L/D/U components and the methods needed to apply the solver; only a
few methods, such as the description and most importantly the build, few methods, such as the description and most importantly the build,
need to be ovverridden (rewritten). need to be ovverridden (rewritten).
</FONT></FONT></FONT>
<P> <P>
The interfaces for the calls shown above are defined using <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The interfaces for the calls shown above are defined using
<DIV ALIGN="CENTER"> </FONT></FONT></FONT>
<TABLE CELLPADDING=3> <DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><code>smoother</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>class(mld_x_base_smoother_type)</code></TD> <code>smoother</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>class(mld_x_base_smoother_type)</code> </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The user-defined new smoother to be employed in the </FONT></FONT></FONT></TD>
preconditioner.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The user-defined new smoother to be employed in the
preconditioner.</FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><code>solver</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>class(mld_x_base_solver_type)</code></TD> <code>solver</code> </FONT></FONT></FONT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>class(mld_x_base_solver_type)</code> </FONT></FONT></FONT></TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The user-defined new solver to be employed in the </FONT></FONT></FONT></TD>
preconditioner.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The user-defined new solver to be employed in the
preconditioner.
</FONT></FONT></FONT></TD>
</TR> </TR>
</TABLE> </TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</DIV>
The other arguments are defined in the way described in The other arguments are defined in the way described in
Sec.&nbsp;<A HREF="node17.html#sec:precset">6.2</A>. As an example, in the <code>tests/newslv</code> Sec.&nbsp;<A HREF="node17.html#sec:precset">6.2</A>. As an example, in the <code>tests/newslv</code>
code we define a new object of type <code>mld_d_tlu_solver_type</code>, and code we define a new object of type <code>mld_d_tlu_solver_type</code>, and
we pass it as follows: we pass it as follows:
<PRE> </FONT></FONT></FONT><PRE>
! sparse matrix and preconditioner ! sparse matrix and preconditioner
type(psb_dspmat_type) :: a type(psb_dspmat_type) :: a
type(mld_dprec_type) :: prec type(mld_dprec_type) :: prec
@ -152,8 +155,8 @@ we pass it as follows:
nlv = prec%get_nlevs() nlv = prec%get_nlevs()
call prec%set(tlusv, info,ilev=1,ilmax=max(1,nlv-1)) call prec%set(tlusv, info,ilev=1,ilmax=max(1,nlv-1))
call prec%smoothers_build(a,desc_a,info) call prec%smoothers_build(a,desc_a,info)
</PRE> </PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<HR> </FONT></FONT></FONT><HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html369" <A NAME="tex2html369"
HREF="node25.html"> HREF="node25.html">

@ -54,10 +54,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:errors"></A> <H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:errors"></A>
<BR> <BR>
Error Handling Error Handling
</H1> </H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
The error handling in MLD2P4 is based on the PSBLAS (version 2) error <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The error handling in MLD2P4 is based on the PSBLAS (version 2) error
handling. Error conditions are signaled via an integer argument handling. Error conditions are signaled via an integer argument
<code>info</code>; whenever an error condition is detected, an error trace <code>info</code>; whenever an error condition is detected, an error trace
stack is built by the library up to the top-level, user-callable stack is built by the library up to the top-level, user-callable
@ -69,9 +68,10 @@ an error message should be printed. These options may be set by using
the PSBLAS error handling routines; for further details see the PSBLAS the PSBLAS error handling routines; for further details see the PSBLAS
User's Guide [<A User's Guide [<A
HREF="node27.html#PSBLASGUIDE">13</A>]. HREF="node27.html#PSBLASGUIDE">13</A>].
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</FONT></FONT></FONT>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -54,11 +54,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION000110000000000000000"></A><A NAME="sec:license"></A> <H1><A NAME="SECTION000110000000000000000"></A><A NAME="sec:license"></A>
<BR> <BR>
License License
</H1> </H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
The MLD2P4 is freely distributable under the following copyright <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The MLD2P4 is freely distributable under the following copyright
terms: <PRE> terms: </FONT></FONT></FONT><PRE>
MLD2P4 version 2.1 MLD2P4 version 2.1
@ -96,8 +95,9 @@ terms: <PRE>
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. POSSIBILITY OF SUCH DAMAGE.
</PRE> </PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</FONT></FONT></FONT>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -49,7 +49,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR><BR> <BR><BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
</FONT></FONT></FONT>
<H2><A NAME="SECTION000120000000000000000"> <H2><A NAME="SECTION000120000000000000000">
Bibliography</A> Bibliography</A>
</H2><DL COMPACT><DD> </H2><DL COMPACT><DD>
@ -170,10 +170,10 @@ P.&nbsp;Vanek, J.&nbsp;Mandel, M.&nbsp;Brezina,
Computing, 56 (3) 1996, 179-196. Computing, 56 (3) 1996, 179-196.
<P> <P>
</DL> </DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</FONT></FONT></FONT>
<P> <P>
<BR><HR> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><BR><HR>
</BODY> </BODY>
</HTML> </HTML>

@ -47,8 +47,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION000130000000000000000"> <H1><A NAME="SECTION000130000000000000000">
About this document ...</A> About this document ...</A>
</H1> </H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<P> </FONT></FONT></FONT><P>
This document was generated using the This document was generated using the
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2012 (1.2) <A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2012 (1.2)
<P> <P>
@ -63,7 +63,7 @@ Mathematics Department, Macquarie University, Sydney.
The command line arguments were: <BR> The command line arguments were: <BR>
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT> <STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
<P> <P>
The translation was initiated by Salvatore Filippone on 2017-07-20 The translation was initiated by Salvatore Filippone on 2017-07-24<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -54,16 +54,16 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION00030000000000000000"></A><A NAME="sec:overview"></A> <H1><A NAME="SECTION00030000000000000000"></A><A NAME="sec:overview"></A>
<BR> <BR>
General Overview General Overview
</H1> </H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
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 <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+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="node27.html#Briggs2000">3</A>,<A HREF="node27.html#Briggs2000">3</A>,<A
HREF="node27.html#Stuben_01">23</A>,<A HREF="node27.html#Stuben_01">23</A>,<A
HREF="node27.html#dd2_96">21</A>]), HREF="node27.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>
<BR> <BR>
<DIV ALIGN="RIGHT"> <DIV ALIGN="RIGHT">
@ -75,24 +75,24 @@ Ax=b,
<TABLE WIDTH="100%" ALIGN="CENTER"> <TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="system1"></A><IMG <TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="system1"></A><IMG
WIDTH="58" HEIGHT="30" BORDER="0" WIDTH="58" HEIGHT="30" BORDER="0"
SRC="img1.png" SRC="img2.png"
ALT="\begin{displaymath} ALT="\begin{displaymath}
Ax=b, Ax=b,
\end{displaymath}"></TD> \end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT"> <TD WIDTH=10 ALIGN="RIGHT">
(1)</TD></TR> (1)</TD></TR>
</TABLE> </TABLE>
<BR CLEAR="ALL"></DIV><P></P> <BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
where <IMG where <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png" SRC="img3.png"
ALT="$A$"> is a square, real or complex, sparse matrix. The name of the package comes from its original implementation, containing ALT="$A$"> is a square, real or complex, sparse matrix. The name of the package comes from its original implementation, containing
multi-level additive and hybrid Schwarz preconditioners, as well as one-level additive multi-level additive and hybrid Schwarz preconditioners, as well as one-level additive
Schwarz preconditioners. The current version extends the original plan by including Schwarz preconditioners. The current version extends the original plan by including
multi-level cycles and smoothers widely used in multigrid methods. multi-level cycles and smoothers widely used in multigrid methods.
</FONT></FONT></FONT>
<P> <P>
The multi-level preconditioners implemented in MLD2P4 are obtained by combining <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+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&nbsp;[<A K-cycles&nbsp;[<A
HREF="node27.html#Briggs2000">3</A>,<A HREF="node27.html#Briggs2000">3</A>,<A
@ -111,9 +111,9 @@ 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,
and block-Jacobi solvers are available. All smoothers can be also exploited as one-level and block-Jacobi solvers are available. All smoothers can be also exploited as one-level
preconditioners. preconditioners.
</FONT></FONT></FONT>
<P> <P>
MLD2P4 is written in Fortran&nbsp;2003, following an <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 is written in Fortran&nbsp;2003, following an
object-oriented design through the exploitation of features object-oriented design through the exploitation of features
such as abstract data type creation, type extension, functional overloading, and such as abstract data type creation, type extension, functional overloading, and
dynamic memory management. The parallel implementation is based on a Single Program Multiple Data dynamic memory management. The parallel implementation is based on a Single Program Multiple Data
@ -121,9 +121,9 @@ dynamic memory management. The parallel implementation is based on a Single Prog
double precision implementations of MLD2P4 are available for both the double precision implementations of MLD2P4 are available for both the
real and the complex case, which can be used through a single real and the complex case, which can be used through a single
interface. interface.
</FONT></FONT></FONT>
<P> <P>
MLD2P4 has been designed to implement scalable and easy-to-use <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+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&nbsp;[<A computational framework&nbsp;[<A
HREF="node27.html#psblas_00">15</A>,<A HREF="node27.html#psblas_00">15</A>,<A
@ -139,9 +139,9 @@ revisions and extentions of the original PSBLAS kernels.
The inter-process comunication required by MLD2P4 is encapsulated The inter-process comunication required by MLD2P4 is encapsulated
in the PSBLAS routines;therefore, MLD2P4 can be run on any parallel machine where PSBLAS in the PSBLAS routines;therefore, MLD2P4 can be run on any parallel machine where PSBLAS
implementations are available. implementations are available.
</FONT></FONT></FONT>
<P> <P>
MLD2P4 has a layered and modular software architecture where three main layers can be <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 has a layered and modular software architecture where three main layers can be
identified. The lower layer consists of the PSBLAS kernels, the middle one implements identified. The lower layer consists of the PSBLAS kernels, the middle one implements
the construction and application phases of the preconditioners, and the upper one the construction and application phases of the preconditioners, and the upper one
provides a uniform interface to all the preconditioners. provides a uniform interface to all the preconditioners.
@ -151,18 +151,18 @@ 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
Section&nbsp;<A HREF="node24.html#sec:adding">7</A>). Section&nbsp;<A HREF="node24.html#sec:adding">7</A>).
</FONT></FONT></FONT>
<P> <P>
We note that the user interface of MLD2P4 2.1 has been extended with respect to the <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We note that the user interface of MLD2P4 2.1 has been extended with respect to the
previous versions in order to separate the construction of the multi-level hierarchy from previous versions in order to separate the construction of the multi-level hierarchy from
the construction of the smoothers and solvers, and to allow for more flexibility the construction of the smoothers and solvers, and to allow for more flexibility
at each level. The software architecture described in&nbsp;[<A at each level. The software architecture described in&nbsp;[<A
HREF="node27.html#MLD2P4_TOMS">8</A>] has significantly HREF="node27.html#MLD2P4_TOMS">8</A>] has significantly
evolved too, in order to fully exploit the Fortran&nbsp;2003 features implemented in PSBLAS 3. evolved too, in order to fully exploit the Fortran&nbsp;2003 features implemented in PSBLAS 3.
However, compatibility with previous versions has been preserved. However, compatibility with previous versions has been preserved.
</FONT></FONT></FONT>
<P> <P>
This guide is organized as follows. General information on the distribution of the source <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">This guide is organized as follows. General information on the distribution of the source
code is reported in Section&nbsp;<A HREF="node4.html#sec:distribution">2</A>, while details on the configuration code is reported in Section&nbsp;<A HREF="node4.html#sec:distribution">2</A>, while details on the configuration
and installation of the package are given in Section&nbsp;<A HREF="node5.html#sec:building">3</A>. A short description and installation of the package are given in Section&nbsp;<A HREF="node5.html#sec:building">3</A>. A short description
of the preconditioners implemented in MLD2P4 is provided in Section&nbsp;<A HREF="node11.html#sec:background">4</A>, of the preconditioners implemented in MLD2P4 is provided in Section&nbsp;<A HREF="node11.html#sec:background">4</A>,
@ -175,9 +175,9 @@ through the addition of new smoothers and solvers is reported in Section&nbsp;<A
The error handling mechanism used by the package The error handling mechanism used by the package
is briefly described in Section&nbsp;<A HREF="node25.html#sec:errors">8</A>. The copyright terms concerning the is briefly described in Section&nbsp;<A HREF="node25.html#sec:errors">8</A>. The copyright terms concerning the
distribution and modification of MLD2P4 are reported in Appendix&nbsp;<A HREF="node26.html#sec:license">A</A>. distribution and modification of MLD2P4 are reported in Appendix&nbsp;<A HREF="node26.html#sec:license">A</A>.
</FONT></FONT></FONT>
<P> <P>
<HR> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html110" <A NAME="tex2html110"
HREF="node4.html"> HREF="node4.html">

@ -54,26 +54,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION00040000000000000000"></A><A NAME="sec:distribution"></A> <H1><A NAME="SECTION00040000000000000000"></A><A NAME="sec:distribution"></A>
<BR> <BR>
Code Distribution Code Distribution
</H1> </H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
MLD2P4 is available from the web site MLD2P4 is available from the web site
<BLOCKQUOTE> </FONT></FONT></FONT>
<TT>http://www.mld2p4.it</TT> <BLOCKQUOTE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><TT>http://www.mld2p4.it</TT>
</FONT></FONT></FONT></BLOCKQUOTE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</BLOCKQUOTE>
where contact points for further information can be also found. where contact points for further information can be also found.
</FONT></FONT></FONT>
<P> <P>
The software is available under a modified BSD license, as specified <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The software is available under a modified BSD license, as specified
in Appendix&nbsp;<A HREF="node26.html#sec:license">A</A>; please note that some of the optional in Appendix&nbsp;<A HREF="node26.html#sec:license">A</A>; please note that some of the optional
third party libraries may be licensed under a different and more third party libraries may be licensed under a different and more
stringent license, most notably the GPL, and this should be taken into stringent license, most notably the GPL, and this should be taken into
account when treating derived works. account when treating derived works.
</FONT></FONT></FONT>
<P> <P>
The library defines a version string with the <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The library defines a version string with the
constant constant
</FONT></FONT></FONT>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<!-- MATH <!-- MATH
@ -84,12 +84,13 @@ constant
<IMG <IMG
WIDTH="172" HEIGHT="31" BORDER="0" WIDTH="172" HEIGHT="31" BORDER="0"
SRC="img3.png" SRC="img4.png"
ALT="\begin{displaymath}\verb\vert mld_version_string_\vert\end{displaymath}"> ALT="\begin{displaymath}\verb\vert mld_version_string_\vert\end{displaymath}">
</DIV> </DIV>
<BR CLEAR="ALL"> <BR CLEAR="ALL">
<P></P> <P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
whose current value is <code>2.1.0</code> whose current value is <code>2.1.0</code>
</FONT></FONT></FONT>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -54,16 +54,16 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H1><A NAME="SECTION00050000000000000000"></A><A NAME="sec:building"></A> <H1><A NAME="SECTION00050000000000000000"></A><A NAME="sec:building"></A>
<BR> <BR>
Configuring and Building MLD2P4 Configuring and Building MLD2P4
</H1> </H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
In order to build MLD2P4 it is necessary to set up a Makefile with appropriate In order to build MLD2P4 it is necessary to set up a Makefile with appropriate
system-dependent variables; this is done by means of the <code>configure</code> system-dependent variables; this is done by means of the <code>configure</code>
script. The distribution also includes the autoconf and automake script. The distribution also includes the autoconf and automake
sources employed to generate the script, but usually this is not needed sources employed to generate the script, but usually this is not needed
to build the software. to build the software.
</FONT></FONT></FONT>
<P> <P>
MLD2P4 is implemented almost entirely in Fortran&nbsp;2003, with some <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 is implemented almost entirely in Fortran&nbsp;2003, with some
interfaces to external libraries in C; the Fortran compiler interfaces to external libraries in C; the Fortran compiler
must support the Fortran&nbsp;2003 standard plus the extension <code>MOLD=</code> must support the Fortran&nbsp;2003 standard plus the extension <code>MOLD=</code>
feature, which enhances the usability of <code>ALLOCATE</code>. feature, which enhances the usability of <code>ALLOCATE</code>.
@ -72,17 +72,18 @@ supported by the GNU Fortran compiler, for which we
recommend to use at least version 4.8. recommend to use at least version 4.8.
The software defines data types and interfaces for The software defines data types and interfaces for
real and complex data, in both single and double precision. real and complex data, in both single and double precision.
</FONT></FONT></FONT>
<P> <P>
Building MLD2P4 requires some base libraries (see Section&nbsp;<A HREF="node6.html#sec:prerequisites">3.1</A>); <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Building MLD2P4 requires some base libraries (see Section&nbsp;<A HREF="node6.html#sec:prerequisites">3.1</A>);
interfaces to optional third-party libraries, which extend the functionalities of MLD2P4 interfaces to optional third-party libraries, which extend the functionalities of MLD2P4
(see Section&nbsp;<A HREF="node7.html#sec:third-party">3.2</A>), are also available. Many Linux distributions (see Section&nbsp;<A HREF="node7.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 (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 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 ``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. optional software used by MLD2P4 is given in the next sections.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><HR> <BR><HR>
<!--Table of Child-Links--> <!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A> <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>

@ -54,11 +54,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00051000000000000000"></A><A NAME="sec:prerequisites"></A> <H2><A NAME="SECTION00051000000000000000"></A><A NAME="sec:prerequisites"></A>
<BR> <BR>
Prerequisites Prerequisites
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
The following base libraries are needed: <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The following base libraries are needed:
<DL> </FONT></FONT></FONT><DL>
<DT><STRONG>BLAS</STRONG></DT> <DT><STRONG>BLAS</STRONG></DT>
<DD>[<A <DD>[<A
HREF="node27.html#blas3">11</A>,<A HREF="node27.html#blas3">11</A>,<A
@ -100,14 +99,14 @@ in the make.inc file of the LAPACK library.
3.5.0 (or later) is required. Indeed, all the prerequisites 3.5.0 (or later) is required. Indeed, all the prerequisites
listed so far are also prerequisites of PSBLAS. listed so far are also prerequisites of PSBLAS.
</DD> </DD>
</DL> </DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
Please note that the four previous libraries must have Fortran Please note that the four previous libraries must have Fortran
interfaces compatible with MLD2P4; interfaces compatible with MLD2P4;
usually this means that they should all be built with the same usually this means that they should all be built with the same
compiler as MLD2P4. compiler as MLD2P4.
</FONT></FONT></FONT>
<P> <P>
<HR> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html151" <A NAME="tex2html151"
HREF="node7.html"> HREF="node7.html">

@ -54,15 +54,14 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00052000000000000000"></A><A NAME="sec:third-party"></A> <H2><A NAME="SECTION00052000000000000000"></A><A NAME="sec:third-party"></A>
<BR> <BR>
Optional third party libraries Optional third party libraries
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
We provide interfaces to the following third-party software libraries; <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We provide interfaces to the following third-party software libraries;
note that these are optional, but if you enable them some defaults note that these are optional, but if you enable them some defaults
for multi-level preconditioners may change to reflect their presence. for multi-level preconditioners may change to reflect their presence.
</FONT></FONT></FONT>
<P> <P>
<DL> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><DL>
<DT><STRONG>UMFPACK</STRONG></DT> <DT><STRONG>UMFPACK</STRONG></DT>
<DD>[<A <DD>[<A
HREF="node27.html#UMFPACK">9</A>] HREF="node27.html#UMFPACK">9</A>]
@ -108,10 +107,9 @@ for multi-level preconditioners may change to reflect their presence.
<TT><A NAME="tex2html8" <TT><A NAME="tex2html8"
HREF="glaros.dtc.umn.edu/gkhome/metis/parmetis/overview">glaros.dtc.umn.edu/gkhome/metis/parmetis/overview</A></TT>. HREF="glaros.dtc.umn.edu/gkhome/metis/parmetis/overview">glaros.dtc.umn.edu/gkhome/metis/parmetis/overview</A></TT>.
</DD> </DD>
</DL> </DL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
<HR> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html163" <A NAME="tex2html163"
HREF="node8.html"> HREF="node8.html">

@ -53,24 +53,23 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00053000000000000000"> <H2><A NAME="SECTION00053000000000000000">
Configuration options</A> Configuration options</A>
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
In order to build MLD2P4, the first step is to use the <code>configure</code> script <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to build MLD2P4, the first step is to use the <code>configure</code> script
in the main directory to generate the necessary makefile. in the main directory to generate the necessary makefile.
</FONT></FONT></FONT>
<P> <P>
As a minimal example consider the following: <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">As a minimal example consider the following:
<PRE> </FONT></FONT></FONT><PRE>
./configure --with-psblas=PSB-INSTALL-DIR ./configure --with-psblas=PSB-INSTALL-DIR
</PRE> </PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
which assumes that the various MPI compilers and support libraries are which assumes that the various MPI compilers and support libraries are
available in the standard directories on the system, and specifies available in the standard directories on the system, and specifies
only the PSBLAS install directory (note that the latter directory must only the PSBLAS install directory (note that the latter directory must
be specified with an <EM>absolute</EM> path). be specified with an <EM>absolute</EM> path).
The full set of options may be looked at by issuing the command The full set of options may be looked at by issuing the command
<code>./configure --help</code>, which produces: <code>./configure --help</code>, which produces:
<PRE> </FONT></FONT></FONT><PRE>
`configure' configures MLD2P4 2.1 to adapt to many kinds of systems. `configure' configures MLD2P4 2.1 to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]... Usage: ./configure [OPTION]... [VAR=VALUE]...
@ -227,40 +226,39 @@ Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations. it to find libraries and programs with nonstandard names/locations.
Report bugs to &lt;bugreport@mld2p4.it&gt;. Report bugs to &lt;bugreport@mld2p4.it&gt;.
</PRE> </PRE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P> <P>
For instance, if a user has built and installed PSBLAS 3.5 under the <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For instance, if a user has built and installed PSBLAS 3.5 under the
<code>/opt</code> directory and is <code>/opt</code> directory and is
using the SuiteSparse package (which includes UMFPACK), then MLD2P4 using the SuiteSparse package (which includes UMFPACK), then MLD2P4
might be configured with: might be configured with:
<PRE> </FONT></FONT></FONT><PRE>
./configure --with-psblas=/opt/psblas-3.5/ \ ./configure --with-psblas=/opt/psblas-3.5/ \
--with-umfpackincdir=/usr/include/suitesparse/ --with-umfpackincdir=/usr/include/suitesparse/
</PRE> </PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
Once the configure script has completed execution, it will have Once the configure script has completed execution, it will have
generated the file <code>Make.inc</code> which will then be used by all generated the file <code>Make.inc</code> which will then be used by all
Makefiles in the directory tree; this file will be copied in the Makefiles in the directory tree; this file will be copied in the
install directory under the name <code>Make.inc.MLD2P4</code>. install directory under the name <code>Make.inc.MLD2P4</code>.
</FONT></FONT></FONT>
<P> <P>
To use the MUMPS solver package, <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To use the MUMPS solver package,
the user has to add the appropriate options to the configure script; the user has to add the appropriate options to the configure script;
by default we are looking for the libraries by default we are looking for the libraries
<code>-ldmumps -lsmumps</code> <code> -lzmumps -lcmumps -mumps_common -lpord</code>. <code>-ldmumps -lsmumps</code> <code> -lzmumps -lcmumps -mumps_common -lpord</code>.
MUMPS often uses additional packages such as ScaLAPACK, ParMETIS, MUMPS often uses additional packages such as ScaLAPACK, ParMETIS,
SCOTCH, as well as enabling OpenMP; in such cases it is necessary to SCOTCH, as well as enabling OpenMP; in such cases it is necessary to
add linker options with the <code>--with-extra-libs</code> configure option. add linker options with the <code>--with-extra-libs</code> configure option.
</FONT></FONT></FONT>
<P> <P>
To build the library the user will now enter <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To build the library the user will now enter
<PRE> </FONT></FONT></FONT><PRE>
make make
</PRE> </PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
followed (optionally) by followed (optionally) by
<PRE> </FONT></FONT></FONT><PRE>
make install make install
</PRE><HR> </PRE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html175" <A NAME="tex2html175"
HREF="node9.html"> HREF="node9.html">

@ -53,14 +53,15 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00054000000000000000"> <H2><A NAME="SECTION00054000000000000000">
Bug reporting</A> Bug reporting</A>
</H2> </H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
If you find any bugs in our codes, please send an email to <BR><TT>pasqua.dambra@cnr.it</TT> If you find any bugs in our codes, please send an email to <BR><TT>pasqua.dambra@cnr.it</TT>
<BR><TT>daniela.diserafino@unicampania.it</TT> <BR><TT>daniela.diserafino@unicampania.it</TT>
<BR><TT>salvatore.filippone@cranfield.ac.uk</TT> <BR> <BR><TT>salvatore.filippone@cranfield.ac.uk</TT> <BR>
You should be aware that the amount of information needed to reproduce a problem You should be aware that the amount of information needed to reproduce a problem
in a parallel program may vary quite a lot. in a parallel program may vary quite a lot.
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -49,29 +49,42 @@ based on PSBLAS</FONT></I>
<BR> <BR>
<BR> <BR>
<BR> <BR>
<BR><B>Pasqua D'Ambra</B> <BR><FONT SIZE="+1"><B>Pasqua D'Ambra</B></FONT>
<BR><FONT SIZE="+1">IAC-CNR, Naples, Italy
<BR>
<BR>
<BR>
<BR><FONT SIZE="+1"><B>Daniela di Serafino</B></FONT>
<BR><FONT SIZE="+1">University of Campania ``Luigi Vanvitelli'', Caserta, Italy
<BR>
<BR>
<BR>
<BR><FONT SIZE="+1"><B>Salvatore Filippone</B></FONT>
<BR><FONT SIZE="+1">Cranfield University, Cranfield, United Kingdom
<BR>
<BR>
<BR>
<BR>
<BR>
<BR> <BR>
ICAR-CNR, Naples, Italy
<BR><B>Daniela di Serafino</B>
<BR> <BR>
Second University of Naples, Italy
<BR><B>Salvatore Filippone</B>
<BR> <BR>
Cranfield University, United Kingdom
<BR> <BR>
<BR> <BR>
<BR> <BR>
Software version: 2.1 Software version: 2.1
<BR> <BR>
Feb. 28, 2017 July 31, 2017
<BR> <BR>
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</FONT></FONT></FONT>
<P> <P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
<BR><HR> <BR><HR>
<!--Table of Child-Links--> <!--Table of Child-Links-->
<A NAME="CHILD_LINKS"></A> <A NAME="CHILD_LINKS"></A>

File diff suppressed because it is too large Load Diff

@ -127,33 +127,44 @@ based on PSBLAS}
\flushright \flushright
\large Software version: 2.1\\ \large Software version: 2.1\\
%\today %\today
\large March 28, 2017 \large July 31, 2017
\end{minipage}} \end{minipage}}
%\addtolength{\textwidth}{\centeroffset} %\addtolength{\textwidth}{\centeroffset}
\vspace{\stretch{2}} \vspace{\stretch{2}}
\clearpage \clearpage
\ \\
\thispagestyle{empty} \thispagestyle{empty}
\vspace*{1cm}
\centerline{\emph{\large This page intentionally left blank}}
\clearpage \clearpage
\pagenumbering{roman} % Roman numbering \pagenumbering{roman} % Roman numbering
\setcounter{page}{1} % Abstract starts on page i \setcounter{page}{1} % Abstract starts on page i
\include{abstract} \include{abstract}
\cleardoublepage %\cleardoublepage
\clearpage
\thispagestyle{empty}
\vspace*{1cm}
\centerline{\emph{\large This page intentionally left blank}}
\clearpage
\begingroup \begingroup
\renewcommand*{\thepage}{toc} \renewcommand*{\thepage}{toc}
\tableofcontents \tableofcontents
\endgroup \endgroup
\cleardoublepage %\cleardoublepage
\clearpage
\thispagestyle{empty}
\vspace*{1cm}
\centerline{\emph{\large This page intentionally left blank}}
\clearpage
\pagenumbering{arabic} % Arabic numbering \pagenumbering{arabic} % Arabic numbering
\setcounter{page}{1} % Chapters start on page 1 \setcounter{page}{1} % Chapters start on page 1
\include{overview} \include{overview}
\include{distribution} \include{distribution}
\include{building} \include{building}
\include{background} \include{background}
\include{gettingstarted} \include{gettingstarted}
\include{userinterface} \include{userinterface}

@ -22,20 +22,20 @@
%\setboolean{mtc}{true} %\setboolean{mtc}{true}
\pdfoutput=0 \pdfoutput=0
% \relax \relax
% \pdfcompresslevel=0 %-- 0 = none, 9 = best \pdfcompresslevel=0 %-- 0 = none, 9 = best
% \pdfinfo{ %-- Info dictionary of PDF output /Author (PD, DdS, SF) \pdfinfo{ %-- Info dictionary of PDF output /Author (PD, DdS, SF)
% /Title (MultiLevel Domain Decomposition Parallel Preconditioners Package /Title (MultiLevel Domain Decomposition Parallel Preconditioners Package
% based on PSBLAS, V. 1.0) based on PSBLAS, V. 2.1)
% /Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package) /Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package)
% /Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI) /Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI)
% /Creator (pdfLaTeX) /Creator (pdfLaTeX)
% /Producer ($Id: userguide.tex 2008-04-08 Pasqua D'Ambra, Daniela di Serafino, /Producer ($Id: userguide.tex 2008-04-08 Pasqua D'Ambra, Daniela di Serafino,
% Salvatore Filippone$) Salvatore Filippone$)
% } }
% \pdfcatalog{ %-- Catalog dictionary of PDF output. \pdfcatalog{ %-- Catalog dictionary of PDF output.
% % /URI (http://ce.uniroma2.it/psblas) % /URI (http://ce.uniroma2.it/psblas)
% } }
\setlength\textwidth{1.15\textwidth} \setlength\textwidth{1.15\textwidth}
% \setlength\evensidemargin{.7in} % \setlength\evensidemargin{.7in}
@ -94,17 +94,17 @@
\emph{\large A guide for the Multi-Level Domain Decomposition \emph{\large A guide for the Multi-Level Domain Decomposition
Parallel Preconditioners Package Parallel Preconditioners Package
based on PSBLAS}\\[3ex] based on PSBLAS}\\[3ex]
{\bfseries Pasqua D'Ambra}\\ {\large\bfseries Pasqua D'Ambra}\\
ICAR-CNR, Naples, Italy\\ \large IAC-CNR, Naples, Italy\\[3ex]
{\bfseries Daniela di Serafino}\\ {\large\bfseries Daniela di Serafino}\\
Second University of Naples, Italy\\ \large University of Campania ``Luigi Vanvitelli'', Caserta, Italy\\[3ex]
{\bfseries Salvatore Filippone} \\ {\large\bfseries Salvatore Filippone} \\
Cranfield University, United Kingdom\\[2ex] \large Cranfield University, Cranfield, United Kingdom
%\\[10ex] \\[10ex]
%\today %\today
Software version: 2.1\\ Software version: 2.1\\
%\today %\today
Feb. 28, 2017 July 31, 2017
\clearpage \clearpage
\ \\ \ \\
\thispagestyle{empty} \thispagestyle{empty}

Loading…
Cancel
Save