Fixed dates in docs.
|
Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 408 B After Width: | Height: | Size: 233 B |
|
Before Width: | Height: | Size: 191 B After Width: | Height: | Size: 408 B |
|
Before Width: | Height: | Size: 242 B After Width: | Height: | Size: 191 B |
|
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 242 B |
|
Before Width: | Height: | Size: 185 B After Width: | Height: | Size: 766 B |
|
Before Width: | Height: | Size: 211 B After Width: | Height: | Size: 185 B |
|
Before Width: | Height: | Size: 373 B After Width: | Height: | Size: 211 B |
|
Before Width: | Height: | Size: 202 B After Width: | Height: | Size: 373 B |
|
Before Width: | Height: | Size: 250 B After Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 447 B After Width: | Height: | Size: 250 B |
|
Before Width: | Height: | Size: 204 B After Width: | Height: | Size: 351 B |
|
Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 447 B |
|
Before Width: | Height: | Size: 197 B After Width: | Height: | Size: 200 B |
|
Before Width: | Height: | Size: 316 B After Width: | Height: | Size: 197 B |
|
Before Width: | Height: | Size: 329 B After Width: | Height: | Size: 316 B |
|
Before Width: | Height: | Size: 207 B After Width: | Height: | Size: 329 B |
|
Before Width: | Height: | Size: 206 B After Width: | Height: | Size: 207 B |
|
Before Width: | Height: | Size: 270 B After Width: | Height: | Size: 206 B |
|
Before Width: | Height: | Size: 255 B After Width: | Height: | Size: 270 B |
|
Before Width: | Height: | Size: 176 B After Width: | Height: | Size: 255 B |
|
Before Width: | Height: | Size: 582 B After Width: | Height: | Size: 176 B |
|
Before Width: | Height: | Size: 705 B After Width: | Height: | Size: 204 B |
|
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 582 B |
|
Before Width: | Height: | Size: 224 B After Width: | Height: | Size: 218 B |
|
Before Width: | Height: | Size: 195 B After Width: | Height: | Size: 224 B |
|
Before Width: | Height: | Size: 211 B After Width: | Height: | Size: 195 B |
|
Before Width: | Height: | Size: 518 B After Width: | Height: | Size: 211 B |
|
Before Width: | Height: | Size: 549 B After Width: | Height: | Size: 518 B |
|
Before Width: | Height: | Size: 306 B After Width: | Height: | Size: 549 B |
|
Before Width: | Height: | Size: 546 B After Width: | Height: | Size: 306 B |
|
Before Width: | Height: | Size: 629 B After Width: | Height: | Size: 705 B |
|
Before Width: | Height: | Size: 525 B After Width: | Height: | Size: 629 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 525 B |
|
Before Width: | Height: | Size: 259 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 258 B After Width: | Height: | Size: 259 B |
|
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><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>
|
||||
ICAR-CNR, Naples, Italy
|
||||
<BR><B>Daniela di Serafino</B>
|
||||
<BR>
|
||||
Second University of Naples, Italy
|
||||
<BR><B>Salvatore Filippone</B>
|
||||
<BR>
|
||||
Cranfield University, United Kingdom
|
||||
<BR>
|
||||
<BR>
|
||||
<BR>
|
||||
Software version: 2.1
|
||||
<BR>
|
||||
Feb. 28, 2017
|
||||
July 31, 2017
|
||||
|
||||
<BR>
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"></A>
|
||||
|
||||
@@ -53,7 +53,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<H1><A NAME="SECTION00010000000000000000">
|
||||
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
|
||||
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
|
||||
concerning the matrix to be preconditioned. The matrix is assumed to be square,
|
||||
real or complex.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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)
|
||||
computational framework and can be used in conjuction with the Krylov solvers
|
||||
available in this framework. MLD2P4 enables the user to easily specify different
|
||||
features of an algebraic multi-level preconditioner, thus allowing to search
|
||||
for the ``best'' preconditioner for the problem at hand.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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 2003, with interfaces to additional third party libraries
|
||||
such as MUMPS, UMFPACK, SuperLU, and SuperLU_Dist, which
|
||||
can be exploited in building multi-level preconditioners. The parallel
|
||||
implementation is based on a Single Program Multiple Data (SPMD)
|
||||
paradigm; the inter-process communication is based on MPI and
|
||||
is managed mainly through PSBLAS.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
|
||||
</FONT></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html63"
|
||||
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>
|
||||
<BR>
|
||||
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;
|
||||
both of them are further divided into <code>fileread</code> and
|
||||
<code>pdegen</code> subdirectories. Their purpose is as follows:
|
||||
<DL>
|
||||
</FONT></FONT></FONT><DL>
|
||||
<DT><STRONG><TT>examples</TT></STRONG></DT>
|
||||
<DD>contains a set of simple example programs with a
|
||||
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
|
||||
implemented in the package.
|
||||
</DD>
|
||||
</DL>
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The <code>fileread</code> directories contain sample programs that read
|
||||
sparse matrices from files, according to the Matrix Market or the
|
||||
Harwell-Boeing storage format; the <code>pdegen</code> programs generate
|
||||
matrices in full parallel mode from the discretization of a sample partial
|
||||
differential equation.
|
||||
</FONT></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -54,7 +54,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H1><A NAME="SECTION00060000000000000000"></A><A NAME="sec:background"></A>
|
||||
<BR>
|
||||
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#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
|
||||
@@ -64,7 +64,8 @@ Multigrid Background
|
||||
HREF="node27.html#para_04">4</A>,<A
|
||||
HREF="node27.html#aaecc_07">5</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-->
|
||||
<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>
|
||||
<BR>
|
||||
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">
|
||||
|
||||
<!-- MATH
|
||||
@@ -64,33 +65,33 @@ Ax=b,
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:system"></A><IMG
|
||||
WIDTH="58" HEIGHT="30" BORDER="0"
|
||||
SRC="img1.png"
|
||||
SRC="img2.png"
|
||||
ALT="\begin{displaymath}
|
||||
Ax=b,
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(2)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P>
|
||||
where <!-- MATH
|
||||
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">␍where <!-- MATH
|
||||
$A=(a_{ij}) \in \mathbb{R}^{n \times n}$
|
||||
-->
|
||||
<IMG
|
||||
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
|
||||
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
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
SRC="img3.png"
|
||||
ALT="$A$">, i.e.,␍<!-- MATH
|
||||
$\Omega = \{1, 2, \ldots, n\}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="132" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img5.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>
|
||||
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,␍</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
@@ -100,42 +101,42 @@ where <!-- MATH
|
||||
|
||||
<IMG
|
||||
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}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
by using the information contained in <IMG
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">␍by using the information contained in <IMG
|
||||
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
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
SRC="img3.png"
|
||||
ALT="$A$"> originates.␍A vector space <!-- MATH
|
||||
$\mathbb{R}^{n_{k}}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="33" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img7.png"
|
||||
SRC="img8.png"
|
||||
ALT="$\mathbb{R}^{n_{k}}$"> is associated with <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img8.png"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$">,␍where <IMG
|
||||
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img9.png"
|
||||
SRC="img10.png"
|
||||
ALT="$n_k$"> is the size of <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img8.png"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$">.␍For all <IMG
|
||||
WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img10.png"
|
||||
SRC="img11.png"
|
||||
ALT="$k < nlev$">, a restriction operator and a prolongation one are built,␍which connect two levels <IMG
|
||||
WIDTH="14" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.png"
|
||||
SRC="img12.png"
|
||||
ALT="$k$"> and <IMG
|
||||
WIDTH="44" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img12.png"
|
||||
ALT="$k+1$">:␍<BR><P></P>
|
||||
SRC="img13.png"
|
||||
ALT="$k+1$">:␍</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\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
|
||||
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}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
<BR><HR>
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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>
|
||||
<B> <A NAME="tex2html219"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -54,14 +54,14 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:started"></A>
|
||||
<BR>
|
||||
Getting Started
|
||||
</H1>
|
||||
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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
|
||||
HREF="node27.html#PSBLASGUIDE">13</A>].
|
||||
The following steps are required:
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
|
||||
<OL>
|
||||
<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>
|
||||
@@ -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
|
||||
be performed when the preconditioner is no more used.
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
</OL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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 <A HREF="node15.html#sec:userinterface">6</A>.
|
||||
Examples showing the basic use of MLD2P4 are reported in Section <A HREF="node14.html#sec:examples">5.1</A>.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="516"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="532"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 1:</STRONG>
|
||||
Preconditioner types, corresponding strings and default choices.
|
||||
@@ -168,25 +168,25 @@ Preconditioner types, corresponding strings and default choices.
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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,
|
||||
must be used in any program calling such routines.
|
||||
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
|
||||
Krylov solvers, must be also used (see Section <A HREF="node14.html#sec:examples">5.1</A>).
|
||||
<BR>
|
||||
<BR></FONT></FONT></FONT>
|
||||
<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,
|
||||
usually lead to smaller numbers of preconditioned Krylov
|
||||
iterations than inexact solvers, when the linear system comes from
|
||||
a standard discretization of basic scalar elliptic PDE problems. However,
|
||||
this does not necessarily correspond to the smallest execution time
|
||||
on parallel computers.
|
||||
on parallel computers. </FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<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>
|
||||
<BR>
|
||||
Examples
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
The code reported in Figure <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 <A HREF="#fig:ex1">2</A> shows how to set and apply the default
|
||||
multi-level preconditioner available in the real double precision version
|
||||
of MLD2P4 (see Table <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>
|
||||
@@ -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
|
||||
<code>psb_base_mod</code>, <code>mld_prec_mod</code> and <code>psb_krylov_mod</code>
|
||||
must be used by the example program.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
through the PSBLAS routines for sparse matrix and vector management, is not reported
|
||||
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
|
||||
Guide [<A
|
||||
HREF="node27.html#PSBLASGUIDE">13</A>].
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
precision, versions are obtained with straightforward modifications of the previous
|
||||
example (see Section <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>.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="519"></A>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="535"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
|
||||
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>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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
|
||||
Figure <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,
|
||||
@@ -179,23 +178,23 @@ matrix is distributed, since MUMPS can be used on both
|
||||
replicated and distributed matrices, and by default
|
||||
it is used on replicated ones. The code fragments shown in Figures <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.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
Finally, Figure <A HREF="#fig:ex4">5</A> shows the setup of a one-level
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Finally, Figure <A HREF="#fig:ex4">5</A> shows the setup of a one-level
|
||||
additive Schwarz preconditioner, i.e., RAS with overlap 2.
|
||||
Note also that a Krylov method different from CG must be used to solve
|
||||
the preconditioned system, since the preconditione in nonsymmetric.
|
||||
The corresponding example program is available in the file
|
||||
<code>mld_dexample_1lev.f90</code>.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
boundary conditions are also available in the directory <code>examples/pdegen</code>.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="521"></A>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="537"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
|
||||
setup of a multi-level preconditioner</CAPTION>
|
||||
@@ -225,10 +224,10 @@ setup of a multi-level preconditioner</CAPTION>
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex3"></A><A NAME="523"></A>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex3"></A><A NAME="539"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
|
||||
setup of a multi-level preconditioner</CAPTION>
|
||||
@@ -258,10 +257,10 @@ setup of a multi-level preconditioner</CAPTION>
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="525"></A>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="541"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
|
||||
setup of a one-level Schwarz preconditioner.</CAPTION>
|
||||
@@ -286,9 +285,9 @@ setup of a one-level Schwarz preconditioner.</CAPTION>
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html243"
|
||||
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>
|
||||
<BR>
|
||||
User Interface
|
||||
</H1>
|
||||
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>,
|
||||
<code>hierarchy_build</code>, <code>smoothers_build</code>,
|
||||
<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.
|
||||
The routine <code>free</code> deallocates the preconditioner data structure, while
|
||||
<code>descr</code> prints a description of the preconditioner setup by the user.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
respect to the real/ complex case and the single/double precision;
|
||||
arguments with appropriate data types must be passed to the routine,
|
||||
i.e.,
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<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>
|
||||
@@ -87,14 +86,14 @@ i.e.,
|
||||
</LI>
|
||||
<LI>the arrays containing the vectors <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img14.png"
|
||||
SRC="img15.png"
|
||||
ALT="$v$"> and <IMG
|
||||
WIDTH="17" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img15.png"
|
||||
SRC="img16.png"
|
||||
ALT="$w$"> involved in
|
||||
the preconditioner application <IMG
|
||||
WIDTH="82" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img16.png"
|
||||
SRC="img17.png"
|
||||
ALT="$w=B^{-1}v$"> must be of type
|
||||
<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
|
||||
@@ -104,12 +103,13 @@ i.e.,
|
||||
according to the precision of the sparse matrix and preconditioner
|
||||
data structures (see Section <A HREF="node17.html#sec:precset">6.2</A>).
|
||||
</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.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<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>
|
||||
<BR>
|
||||
Subroutine init
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%init(ptype,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine allocates and initializes the preconditioner
|
||||
<code>p</code>, according to the preconditioner type chosen by the user.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>ptype</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=*), intent(in)</code>.</TD>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<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><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=*), intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The type of preconditioner. Its values are specified
|
||||
in Table <A HREF="#tab:precinit">1</A>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></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 <A HREF="#tab:precinit">1</A>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Note that the strings are case insensitive.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</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><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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 <A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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:
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precinit(p,ptype,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<B> <A NAME="tex2html274"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -54,107 +54,115 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H2><A NAME="SECTION00082000000000000000"></A><A NAME="sec:precset"></A>
|
||||
<BR>
|
||||
Subroutine set
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%set(what,val,info [,ilev, ilmax, pos])</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine sets the parameters defining the preconditioner <code>p</code>. More
|
||||
precisely, the parameter identified by <code>what</code> is assigned the value
|
||||
contained in <code>val</code>.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>what</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=*)</code>.</TD>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<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><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=*)</code>. </FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The parameter to be set. It can be specified through its name;
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.</TD>
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>val </code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer</code> <I>or</I> <code>character(len=*)</code> <I>or</I>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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>intent(in)</code>.</TD>
|
||||
<code>intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The value of the parameter to be set. The list of allowed
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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
|
||||
Tables <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>,
|
||||
it is also treated as case insensitive.</TD>
|
||||
it is also treated as case insensitive.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</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><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A>
|
||||
for details.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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 <A HREF="node25.html#sec:errors">8</A>
|
||||
for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>ilev</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, optional, intent(in)</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>For the multi-level preconditioner, the level at which the
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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.
|
||||
The levels are numbered in increasing
|
||||
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>
|
||||
is set at all the appropriate levels (see
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>).</TD>
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>).</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>ilmax</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, optional, intent(in)</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>For the multi-level preconditioner, when both
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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
|
||||
are applied at all levels <code>ilev:ilmax</code>. When
|
||||
<code>ilev</code> is present but <code>ilmax</code> is not, then
|
||||
the default is <code>ilmax=ilev</code>.
|
||||
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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>pos</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>charater(len=*), optional, intent(in)</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Whether the other arguments apply only to the pre-smoother (<code>'PRE'</code>)
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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,
|
||||
the other arguments are applied to both smoothers.
|
||||
If the preconditioner is one-level or the parameter identified by <code>what</code>
|
||||
does not concern the smoothers, <code>pos</code> is ignored.</TD>
|
||||
does not concern the smoothers, <code>pos</code> is ignored.
|
||||
</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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:
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precset(p,what,val,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<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>
|
||||
cannot be used.
|
||||
<BR>
|
||||
<BR></FONT></FONT></FONT>
|
||||
<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
|
||||
can be logically divided into four groups, i.e., parameters defining
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<OL>
|
||||
<LI>the type of multi-level cycle and how many cycles must be applied;
|
||||
</LI>
|
||||
@@ -168,14 +176,14 @@ can be logically divided into four groups, i.e., parameters defining
|
||||
|
||||
<P>
|
||||
</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
|
||||
default values, is given in Tables <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
|
||||
refer also to Section <A HREF="node11.html#sec:background">4</A>.
|
||||
<BR>
|
||||
<BR></FONT></FONT></FONT>
|
||||
<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>),
|
||||
as specified in Tables <A HREF="#tab:p_smoother">7</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
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
|
||||
Tables <A HREF="#tab:p_smoother">7</A>), i.e., without setting
|
||||
<code>SUB_SOLVE</code> too.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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,
|
||||
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
|
||||
@@ -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
|
||||
different from the default one, the call to set the solver must come
|
||||
<I>after</I> the call to set the smoother.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
in this case too (see Table <A HREF="#tab:p_coarse">5</A>).
|
||||
<BR>
|
||||
<BR></FONT></FONT></FONT>
|
||||
<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;
|
||||
therefore, setting the solver after the layout may change the layout.
|
||||
Similarly, setting the layout after the solver may change the solver.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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.
|
||||
In these cases, setting the coarsest-level solver implies that
|
||||
the layout is redefined according to the solver, ovverriding any
|
||||
@@ -228,19 +236,20 @@ reduce to the corresponding local solver objects (see Remark 2).
|
||||
For the point-Jacobi and Gauss-Seidel solvers, these objects
|
||||
correspond to a <I>single</I> point-Jacobi sweep and a <I>single</I>
|
||||
Gauss-Seidel sweep, respectively, which are very poor solvers.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
been selected, the coarsest-level solver is changed to block-Jacobi,
|
||||
with the previously chosen solver applied to the local blocks.
|
||||
Likewise, the replicated layout can be used with any solver but SuperLu_Dist;
|
||||
therefore, if SuperLu_Dist has been previously set, the coarsest-level
|
||||
solver is changed to the default sequential solver.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="949"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="965"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 2:</STRONG>
|
||||
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>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img17.png"
|
||||
SRC="img18.png"
|
||||
ALT="$\ge 1$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>1</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=204>Number of multi-level cycles.</TD>
|
||||
@@ -289,11 +298,11 @@ number <IMG
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="954"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="970"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 3:</STRONG>
|
||||
Parameters defining the aggregation algorithm.
|
||||
@@ -313,17 +322,17 @@ Parameters defining the aggregation algorithm.
|
||||
<P>
|
||||
<IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img18.png"
|
||||
SRC="img19.png"
|
||||
ALT="$> 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><!-- MATH
|
||||
$\lfloor 40 \sqrt[3]{n} \rfloor$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="63" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img19.png"
|
||||
SRC="img20.png"
|
||||
ALT="$\lfloor 40 \sqrt[3]{n} \rfloor$">, where <IMG
|
||||
WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img20.png"
|
||||
SRC="img21.png"
|
||||
ALT="$n$"> is the dimension
|
||||
of the matrix at the finest level</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Coarse size threshold. The aggregation stops
|
||||
@@ -338,7 +347,7 @@ Parameters defining the aggregation algorithm.
|
||||
<P>
|
||||
<IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img21.png"
|
||||
SRC="img22.png"
|
||||
ALT="$> 1$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82>1.5</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Minimum coarsening ratio. The aggregation stops
|
||||
@@ -352,7 +361,7 @@ Parameters defining the aggregation algorithm.
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img21.png"
|
||||
SRC="img22.png"
|
||||
ALT="$> 1$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82>20</TD>
|
||||
<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
|
||||
of <IMG
|
||||
WIDTH="63" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img22.png"
|
||||
SRC="img23.png"
|
||||
ALT="$A+A^T$">.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'AGGR_TYPE'</code></TD>
|
||||
@@ -404,11 +413,11 @@ of levels.</TD>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="958"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="974"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 4:</STRONG>
|
||||
Parameters defining the aggregation algorithm (continued).
|
||||
@@ -439,12 +448,12 @@ Parameters defining the aggregation algorithm (continued).
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img23.png"
|
||||
SRC="img24.png"
|
||||
ALT="$\in [0, 1]$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>0.05</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187>The threshold <IMG
|
||||
WIDTH="13" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img24.png"
|
||||
SRC="img25.png"
|
||||
ALT="$\theta$"> in the aggregation algorithm,
|
||||
see (<A HREF="#eq:strongly_coup">3</A>) in Section <A HREF="#sec:aggregation">4.2</A>.
|
||||
See also the note at the bottom of this table.</TD>
|
||||
@@ -471,11 +480,11 @@ the parameter <TT>ilev</TT>.</TD>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="963"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="979"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 5:</STRONG>
|
||||
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
|
||||
is chosen as coarsest-level solver: ILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img25.png"
|
||||
SRC="img26.png"
|
||||
ALT="$p$">), ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img26.png"
|
||||
SRC="img27.png"
|
||||
ALT="$p,t$">),
|
||||
MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img25.png"
|
||||
SRC="img26.png"
|
||||
ALT="$p$">), LU from MUMPS, SuperLU or UMFPACK
|
||||
(plus triangular solve).
|
||||
Note that UMFPACK and SuperLU_Dist
|
||||
@@ -579,11 +588,11 @@ Note that <TT>UMF</TT> and <TT>SLU</TT> require the coarsest
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="965"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="981"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 6:</STRONG>
|
||||
Parameters defining the coarse-space correction at the coarsest
|
||||
@@ -603,7 +612,7 @@ level (continued).</CAPTION>
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img18.png"
|
||||
SRC="img19.png"
|
||||
ALT="$> 0$"></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>
|
||||
@@ -615,12 +624,12 @@ number <IMG
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.png"
|
||||
SRC="img28.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Fill-in level <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img25.png"
|
||||
SRC="img26.png"
|
||||
ALT="$p$"> of the ILU factorizations.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_ILUTHRS'</code></TD>
|
||||
@@ -629,15 +638,15 @@ number <IMG
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.png"
|
||||
SRC="img28.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Drop tolerance <IMG
|
||||
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img28.png"
|
||||
SRC="img29.png"
|
||||
ALT="$t$"> in the ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img26.png"
|
||||
SRC="img27.png"
|
||||
ALT="$p,t$">) factorization.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
@@ -645,11 +654,11 @@ number <IMG
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="967"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="983"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 7:</STRONG>
|
||||
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
|
||||
Gauss-Seidel, ILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img25.png"
|
||||
SRC="img26.png"
|
||||
ALT="$p$">), ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img26.png"
|
||||
SRC="img27.png"
|
||||
ALT="$p,t$">), MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img25.png"
|
||||
SRC="img26.png"
|
||||
ALT="$p$">),
|
||||
LU from MUMPS, SuperLU or UMFPACK
|
||||
(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>
|
||||
<FONT SIZE="-1">number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.png"
|
||||
SRC="img28.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<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>
|
||||
<FONT SIZE="-1">number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.png"
|
||||
SRC="img28.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<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>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="969"></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="985"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 8:</STRONG>
|
||||
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>
|
||||
<FONT SIZE="-1">number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.png"
|
||||
SRC="img28.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> 0
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Fill-in level <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img25.png"
|
||||
SRC="img26.png"
|
||||
ALT="$p$"> of the incomplete LU factorizations. </FONT></TD>
|
||||
</TR>
|
||||
<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>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> Any real number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.png"
|
||||
SRC="img28.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> 0
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Drop tolerance <IMG
|
||||
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img28.png"
|
||||
SRC="img29.png"
|
||||
ALT="$t$"> in the ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img26.png"
|
||||
SRC="img27.png"
|
||||
ALT="$p,t$">) factorization. </FONT></TD>
|
||||
</TR>
|
||||
<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>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html287"
|
||||
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>
|
||||
<BR>
|
||||
Subroutine build
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%build(a,desc_a,info)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%build(a,desc_a,info)</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
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>
|
||||
(see Sections <A HREF="node19.html#sec:hier_bld">6.4</A> and <A HREF="node20.html#sec:smooth_bld">6.5</A> for multi-level preconditioners).
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>a</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>.</TD>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.
|
||||
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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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
|
||||
HREF="node27.html#PSBLASGUIDE">13</A>].</TD>
|
||||
HREF="node27.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</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><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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 <A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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:
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precbld(p,what,val,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
In this case, the routine can be used to build multi-level preconditioners too.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html299"
|
||||
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>
|
||||
<BR>
|
||||
Subroutine hierarchy_build
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%hierarchy_build(a,desc_a,info)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%hierarchy_build(a,desc_a,info)</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine builds the hierarchy of matrices and restriction/prolongation
|
||||
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>.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>a</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>.</TD>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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
|
||||
to the real/complex,
|
||||
single/double precision version of MLD2P4 under use.
|
||||
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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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
|
||||
HREF="node27.html#PSBLASGUIDE">13</A>].</TD>
|
||||
HREF="node27.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</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><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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 <A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<B> <A NAME="tex2html310"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -117,12 +117,13 @@ Contents</A>
|
||||
HREF="node27.html">Bibliography</A>
|
||||
</UL>
|
||||
<!--End of Table of Contents-->
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
</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>
|
||||
<BR>
|
||||
Subroutine smoothers_build
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%smoothers_build(a,desc_a,p,info)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%smoothers_build(a,desc_a,p,info)</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine builds the smoothers and the coarsest-level solvers 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>, and based on the aggregation
|
||||
hierarchy produced by a previous call to <code>hierarchy_build</code>
|
||||
(see Section <A HREF="node19.html#sec:hier_bld">6.4</A>).
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>a</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>.</TD>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.
|
||||
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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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
|
||||
HREF="node27.html#PSBLASGUIDE">13</A>].</TD>
|
||||
HREF="node27.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</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><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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 <A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<BR><HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><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>
|
||||
<B> <A NAME="tex2html322"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -54,134 +54,140 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precapply"></A>
|
||||
<BR>
|
||||
Subroutine apply
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%apply(x,y,desc_a,info [,trans,work])</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine computes <!-- MATH
|
||||
$y = op(B^{-1})\, x$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="112" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img29.png"
|
||||
SRC="img30.png"
|
||||
ALT="$y = op(B^{-1}) x$">, where <IMG
|
||||
WIDTH="19" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img30.png"
|
||||
SRC="img31.png"
|
||||
ALT="$B$"> is a previously built
|
||||
preconditioner, stored into <code>p</code>, and <IMG
|
||||
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img31.png"
|
||||
SRC="img32.png"
|
||||
ALT="$op$">
|
||||
denotes the preconditioner itself or its transpose, according to
|
||||
the value of <code>trans</code>.
|
||||
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>
|
||||
and hence it is completely transparent to the user.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>x</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(in)</code>.</TD>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<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><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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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"
|
||||
SRC="img32.png"
|
||||
SRC="img33.png"
|
||||
ALT="$x$">. Note that <I>type</I> and
|
||||
<I>kind_parameter</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>y</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(out)</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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"
|
||||
SRC="img33.png"
|
||||
SRC="img34.png"
|
||||
ALT="$y$">. 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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor associated to the matrix to be
|
||||
preconditioned.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</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><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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 <A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>trans</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=1), optional, intent(in).</code></TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>If <code>trans</code> = <code>'N','n'</code> then <!-- MATH
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="123" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
SRC="img35.png"
|
||||
ALT="$op(B^{-1}) = B^{-1}$">;
|
||||
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
|
||||
$op(B^{-1}) = B^{-T}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
SRC="img36.png"
|
||||
ALT="$op(B^{-1}) = B^{-T}$">
|
||||
(transpose of <IMG
|
||||
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
|
||||
$op(B^{-1}) = B^{-C}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img37.png"
|
||||
SRC="img38.png"
|
||||
ALT="$op(B^{-1}) = B^{-C}$">
|
||||
(conjugate transpose of <IMG
|
||||
WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img36.png"
|
||||
ALT="$B^{-1})$">.</TD>
|
||||
SRC="img37.png"
|
||||
ALT="$B^{-1})$">.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>work</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), optional, target</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Workspace. Its size should be at
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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).
|
||||
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>
|
||||
</TABLE>
|
||||
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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:
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precaply(p,what,val,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html335"
|
||||
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>
|
||||
<BR>
|
||||
Subroutine free
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%free(p,info)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%free(p,info)</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine deallocates the preconditioner data structure <code>p</code>.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><code>integer, intent(out)</code>.</TD>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<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><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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 <A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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:
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precfree(p,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -53,56 +53,77 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H2><A NAME="SECTION00088000000000000000"></A><A NAME="sec:precdescr"></A>
|
||||
<BR>
|
||||
Subroutine descr
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%descr(info, [iout])</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%descr(info, [iout])</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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
|
||||
to a file. It must be called after <code>hierachy_build</code> and <code>smoothers_build</code>,
|
||||
or <code>build</code>, have been called.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<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><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</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 <A HREF="node25.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>iout</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(in), optional</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The id of the file where the preconditioner description
|
||||
will be printed; the default is the standard output.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></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>
|
||||
</TABLE>
|
||||
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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:
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precdescr(p,info [,iout])</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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>
|
||||
<B> <A NAME="tex2html356"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -54,15 +54,14 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A>
|
||||
<BR>
|
||||
Adding new smoother and solver objects to MLD2P4
|
||||
</H1>
|
||||
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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 2 in Section <A HREF="node17.html#sec:precset">6.2</A>),
|
||||
without recompiling the library itself.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
only the definition of a ``solver'' object, which is almost
|
||||
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
|
||||
have to define its components and methods, perhaps taking one of the
|
||||
predefined solvers as a starting point, if possible.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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:
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<LI>declare in the application program a variable of the new type;
|
||||
</LI>
|
||||
@@ -89,21 +88,21 @@ following:
|
||||
</LI>
|
||||
<LI>link the code implementing the various methods into the application executable.
|
||||
</LI>
|
||||
</UL>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The new solver object is then dynamically included in the
|
||||
preconditioner structure, and acts as a <I>mold</I> to which the
|
||||
preconditioner will conform, even though the MLD2P4 library has not
|
||||
been modified to account for this new development.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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,
|
||||
it passes it down the composition hierarchy (levels containing
|
||||
smoothers containing in turn solvers), so that it can be eventually caught by
|
||||
the new solver.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
incomplete factorization variant (which is simply the ILU(0)
|
||||
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
|
||||
few methods, such as the description and most importantly the build,
|
||||
need to be ovverridden (rewritten).
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
The interfaces for the calls shown above are defined using
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><code>smoother</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>class(mld_x_base_smoother_type)</code></TD>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The interfaces for the calls shown above are defined using
|
||||
</FONT></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The user-defined new smoother to be employed in the
|
||||
preconditioner.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><code>solver</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>class(mld_x_base_solver_type)</code></TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The user-defined new solver to be employed in the
|
||||
preconditioner.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></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>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The other arguments are defined in the way described in
|
||||
Sec. <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
|
||||
we pass it as follows:
|
||||
<PRE>
|
||||
</FONT></FONT></FONT><PRE>
|
||||
! sparse matrix and preconditioner
|
||||
type(psb_dspmat_type) :: a
|
||||
type(mld_dprec_type) :: prec
|
||||
@@ -152,8 +155,8 @@ we pass it as follows:
|
||||
nlv = prec%get_nlevs()
|
||||
call prec%set(tlusv, info,ilev=1,ilmax=max(1,nlv-1))
|
||||
call prec%smoothers_build(a,desc_a,info)
|
||||
</PRE>
|
||||
<HR>
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html369"
|
||||
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>
|
||||
<BR>
|
||||
Error Handling
|
||||
</H1>
|
||||
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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
|
||||
<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
|
||||
@@ -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
|
||||
User's Guide [<A
|
||||
HREF="node27.html#PSBLASGUIDE">13</A>].
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -54,11 +54,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H1><A NAME="SECTION000110000000000000000"></A><A NAME="sec:license"></A>
|
||||
<BR>
|
||||
License
|
||||
</H1>
|
||||
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
The MLD2P4 is freely distributable under the following copyright
|
||||
terms: <PRE>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The MLD2P4 is freely distributable under the following copyright
|
||||
terms: </FONT></FONT></FONT><PRE>
|
||||
|
||||
|
||||
MLD2P4 version 2.1
|
||||
@@ -96,8 +95,9 @@ terms: <PRE>
|
||||
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
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
</PRE>
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -49,7 +49,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR><BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<H2><A NAME="SECTION000120000000000000000">
|
||||
Bibliography</A>
|
||||
</H2><DL COMPACT><DD>
|
||||
@@ -170,10 +170,10 @@ P. Vanek, J. Mandel, M. Brezina,
|
||||
Computing, 56 (3) 1996, 179-196.
|
||||
|
||||
<P>
|
||||
</DL>
|
||||
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<BR><HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><BR><HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -47,8 +47,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<H1><A NAME="SECTION000130000000000000000">
|
||||
About this document ...</A>
|
||||
</H1>
|
||||
<P>
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT><P>
|
||||
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)
|
||||
<P>
|
||||
@@ -63,7 +63,7 @@ Mathematics Department, Macquarie University, Sydney.
|
||||
The command line arguments were: <BR>
|
||||
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
|
||||
<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>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -54,16 +54,16 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H1><A NAME="SECTION00030000000000000000"></A><A NAME="sec:overview"></A>
|
||||
<BR>
|
||||
General Overview
|
||||
</H1>
|
||||
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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
|
||||
Decomposition preconditioners (see, e.g., [<A
|
||||
HREF="node27.html#Briggs2000">3</A>,<A
|
||||
HREF="node27.html#Stuben_01">23</A>,<A
|
||||
HREF="node27.html#dd2_96">21</A>]),
|
||||
to be used in the iterative solution of linear systems,
|
||||
</FONT></FONT></FONT>
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
@@ -75,24 +75,24 @@ Ax=b,
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="system1"></A><IMG
|
||||
WIDTH="58" HEIGHT="30" BORDER="0"
|
||||
SRC="img1.png"
|
||||
SRC="img2.png"
|
||||
ALT="\begin{displaymath}
|
||||
Ax=b,
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(1)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P>
|
||||
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
where <IMG
|
||||
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
|
||||
multi-level additive and hybrid Schwarz preconditioners, as well as one-level additive
|
||||
Schwarz preconditioners. The current version extends the original plan by including
|
||||
multi-level cycles and smoothers widely used in multigrid methods.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
K-cycles [<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,
|
||||
and block-Jacobi solvers are available. All smoothers can be also exploited as one-level
|
||||
preconditioners.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
MLD2P4 is written in Fortran 2003, following an
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 is written in Fortran 2003, following an
|
||||
object-oriented design through the exploitation of features
|
||||
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
|
||||
@@ -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
|
||||
real and the complex case, which can be used through a single
|
||||
interface.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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)
|
||||
computational framework [<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
|
||||
in the PSBLAS routines;therefore, MLD2P4 can be run on any parallel machine where PSBLAS
|
||||
implementations are available.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
the construction and application phases of the preconditioners, and the upper one
|
||||
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
|
||||
and solvers for building new versions of the preconditioners (see
|
||||
Section <A HREF="node24.html#sec:adding">7</A>).
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
the construction of the smoothers and solvers, and to allow for more flexibility
|
||||
at each level. The software architecture described in [<A
|
||||
HREF="node27.html#MLD2P4_TOMS">8</A>] has significantly
|
||||
evolved too, in order to fully exploit the Fortran 2003 features implemented in PSBLAS 3.
|
||||
However, compatibility with previous versions has been preserved.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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 <A HREF="node4.html#sec:distribution">2</A>, while details on the configuration
|
||||
and installation of the package are given in Section <A HREF="node5.html#sec:building">3</A>. A short description
|
||||
of the preconditioners implemented in MLD2P4 is provided in Section <A HREF="node11.html#sec:background">4</A>,
|
||||
@@ -175,9 +175,9 @@ through the addition of new smoothers and solvers is reported in Section <A
|
||||
The error handling mechanism used by the package
|
||||
is briefly described in Section <A HREF="node25.html#sec:errors">8</A>. The copyright terms concerning the
|
||||
distribution and modification of MLD2P4 are reported in Appendix <A HREF="node26.html#sec:license">A</A>.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html110"
|
||||
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>
|
||||
<BR>
|
||||
Code Distribution
|
||||
</H1>
|
||||
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
MLD2P4 is available from the web site
|
||||
<BLOCKQUOTE>
|
||||
<TT>http://www.mld2p4.it</TT>
|
||||
|
||||
</BLOCKQUOTE>
|
||||
</FONT></FONT></FONT>
|
||||
<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">
|
||||
where contact points for further information can be also found.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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 <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
|
||||
stringent license, most notably the GPL, and this should be taken into
|
||||
account when treating derived works.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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
|
||||
</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
@@ -84,12 +84,13 @@ constant
|
||||
|
||||
<IMG
|
||||
WIDTH="172" HEIGHT="31" BORDER="0"
|
||||
SRC="img3.png"
|
||||
SRC="img4.png"
|
||||
ALT="\begin{displaymath}\verb\vert mld_version_string_\vert\end{displaymath}">
|
||||
</DIV>
|
||||
<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>
|
||||
</FONT></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -54,16 +54,16 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H1><A NAME="SECTION00050000000000000000"></A><A NAME="sec:building"></A>
|
||||
<BR>
|
||||
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
|
||||
system-dependent variables; this is done by means of the <code>configure</code>
|
||||
script. The distribution also includes the autoconf and automake
|
||||
sources employed to generate the script, but usually this is not needed
|
||||
to build the software.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
MLD2P4 is implemented almost entirely in Fortran 2003, with some
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 is implemented almost entirely in Fortran 2003, with some
|
||||
interfaces to external libraries in C; the Fortran compiler
|
||||
must support the Fortran 2003 standard plus the extension <code>MOLD=</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.
|
||||
The software defines data types and interfaces for
|
||||
real and complex data, in both single and double precision.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
Building MLD2P4 requires some base libraries (see Section <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 <A HREF="node6.html#sec:prerequisites">3.1</A>);
|
||||
interfaces to optional third-party libraries, which extend the functionalities of MLD2P4
|
||||
(see Section <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
|
||||
optional software. In many cases these packages are split between a runtime part and a
|
||||
``developer'' part; in order to build MLD2P4 you need both. A description of the base and
|
||||
optional software used by MLD2P4 is given in the next sections.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<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>
|
||||
<BR>
|
||||
Prerequisites
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
The following base libraries are needed:
|
||||
<DL>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The following base libraries are needed:
|
||||
</FONT></FONT></FONT><DL>
|
||||
<DT><STRONG>BLAS</STRONG></DT>
|
||||
<DD>[<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
|
||||
listed so far are also prerequisites of PSBLAS.
|
||||
</DD>
|
||||
</DL>
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
Please note that the four previous libraries must have Fortran
|
||||
interfaces compatible with MLD2P4;
|
||||
usually this means that they should all be built with the same
|
||||
compiler as MLD2P4.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html151"
|
||||
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>
|
||||
<BR>
|
||||
Optional third party libraries
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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
|
||||
for multi-level preconditioners may change to reflect their presence.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<DL>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><DL>
|
||||
<DT><STRONG>UMFPACK</STRONG></DT>
|
||||
<DD>[<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"
|
||||
HREF="glaros.dtc.umn.edu/gkhome/metis/parmetis/overview">glaros.dtc.umn.edu/gkhome/metis/parmetis/overview</A></TT>.
|
||||
</DD>
|
||||
</DL>
|
||||
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html163"
|
||||
HREF="node8.html">
|
||||
|
||||
@@ -53,24 +53,23 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<H2><A NAME="SECTION00053000000000000000">
|
||||
Configuration options</A>
|
||||
</H2>
|
||||
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
As a minimal example consider the following:
|
||||
<PRE>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">As a minimal example consider the following:
|
||||
</FONT></FONT></FONT><PRE>
|
||||
./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
|
||||
available in the standard directories on the system, and specifies
|
||||
only the PSBLAS install directory (note that the latter directory must
|
||||
be specified with an <EM>absolute</EM> path).
|
||||
The full set of options may be looked at by issuing the command
|
||||
<code>./configure --help</code>, which produces:
|
||||
<PRE>
|
||||
</FONT></FONT></FONT><PRE>
|
||||
`configure' configures MLD2P4 2.1 to adapt to many kinds of systems.
|
||||
|
||||
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.
|
||||
|
||||
Report bugs to <bugreport@mld2p4.it>.
|
||||
</PRE>
|
||||
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<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
|
||||
using the SuiteSparse package (which includes UMFPACK), then MLD2P4
|
||||
might be configured with:
|
||||
<PRE>
|
||||
</FONT></FONT></FONT><PRE>
|
||||
./configure --with-psblas=/opt/psblas-3.5/ \
|
||||
--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
|
||||
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
|
||||
install directory under the name <code>Make.inc.MLD2P4</code>.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<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;
|
||||
by default we are looking for the libraries
|
||||
<code>-ldmumps -lsmumps</code> <code> -lzmumps -lcmumps -mumps_common -lpord</code>.
|
||||
MUMPS often uses additional packages such as ScaLAPACK, ParMETIS,
|
||||
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.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
To build the library the user will now enter
|
||||
<PRE>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To build the library the user will now enter
|
||||
</FONT></FONT></FONT><PRE>
|
||||
make
|
||||
</PRE>
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
followed (optionally) by
|
||||
<PRE>
|
||||
</FONT></FONT></FONT><PRE>
|
||||
make install
|
||||
</PRE><HR>
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html175"
|
||||
HREF="node9.html">
|
||||
|
||||
@@ -53,14 +53,15 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<H2><A NAME="SECTION00054000000000000000">
|
||||
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>
|
||||
<BR><TT>daniela.diserafino@unicampania.it</TT>
|
||||
<BR><TT>salvatore.filippone@cranfield.ac.uk</TT> <BR>
|
||||
You should be aware that the amount of information needed to reproduce a problem
|
||||
in a parallel program may vary quite a lot.
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -49,29 +49,42 @@ based on PSBLAS</FONT></I>
|
||||
<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>
|
||||
ICAR-CNR, Naples, Italy
|
||||
<BR><B>Daniela di Serafino</B>
|
||||
<BR>
|
||||
Second University of Naples, Italy
|
||||
<BR><B>Salvatore Filippone</B>
|
||||
<BR>
|
||||
Cranfield University, United Kingdom
|
||||
<BR>
|
||||
<BR>
|
||||
<BR>
|
||||
Software version: 2.1
|
||||
<BR>
|
||||
Feb. 28, 2017
|
||||
July 31, 2017
|
||||
|
||||
<BR>
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
|
||||
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"></A>
|
||||
|
||||
@@ -127,33 +127,44 @@ based on PSBLAS}
|
||||
\flushright
|
||||
\large Software version: 2.1\\
|
||||
%\today
|
||||
\large March 28, 2017
|
||||
\large July 31, 2017
|
||||
\end{minipage}}
|
||||
%\addtolength{\textwidth}{\centeroffset}
|
||||
\vspace{\stretch{2}}
|
||||
\clearpage
|
||||
\ \\
|
||||
\thispagestyle{empty}
|
||||
\vspace*{1cm}
|
||||
\centerline{\emph{\large This page intentionally left blank}}
|
||||
\clearpage
|
||||
|
||||
\pagenumbering{roman} % Roman numbering
|
||||
\setcounter{page}{1} % Abstract starts on page i
|
||||
|
||||
\include{abstract}
|
||||
\cleardoublepage
|
||||
%\cleardoublepage
|
||||
\clearpage
|
||||
\thispagestyle{empty}
|
||||
\vspace*{1cm}
|
||||
\centerline{\emph{\large This page intentionally left blank}}
|
||||
\clearpage
|
||||
|
||||
\begingroup
|
||||
\renewcommand*{\thepage}{toc}
|
||||
\tableofcontents
|
||||
\endgroup
|
||||
\cleardoublepage
|
||||
%\cleardoublepage
|
||||
\clearpage
|
||||
\thispagestyle{empty}
|
||||
\vspace*{1cm}
|
||||
\centerline{\emph{\large This page intentionally left blank}}
|
||||
\clearpage
|
||||
|
||||
\pagenumbering{arabic} % Arabic numbering
|
||||
\setcounter{page}{1} % Chapters start on page 1
|
||||
|
||||
\include{overview}
|
||||
\include{distribution}
|
||||
\include{building}
|
||||
\include{building}
|
||||
\include{background}
|
||||
\include{gettingstarted}
|
||||
\include{userinterface}
|
||||
|
||||
@@ -22,20 +22,20 @@
|
||||
%\setboolean{mtc}{true}
|
||||
|
||||
\pdfoutput=0
|
||||
% \relax
|
||||
% \pdfcompresslevel=0 %-- 0 = none, 9 = best
|
||||
% \pdfinfo{ %-- Info dictionary of PDF output /Author (PD, DdS, SF)
|
||||
% /Title (MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
% based on PSBLAS, V. 1.0)
|
||||
% /Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package)
|
||||
% /Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI)
|
||||
% /Creator (pdfLaTeX)
|
||||
% /Producer ($Id: userguide.tex 2008-04-08 Pasqua D'Ambra, Daniela di Serafino,
|
||||
% Salvatore Filippone$)
|
||||
% }
|
||||
% \pdfcatalog{ %-- Catalog dictionary of PDF output.
|
||||
% % /URI (http://ce.uniroma2.it/psblas)
|
||||
% }
|
||||
\relax
|
||||
\pdfcompresslevel=0 %-- 0 = none, 9 = best
|
||||
\pdfinfo{ %-- Info dictionary of PDF output /Author (PD, DdS, SF)
|
||||
/Title (MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS, V. 2.1)
|
||||
/Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package)
|
||||
/Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI)
|
||||
/Creator (pdfLaTeX)
|
||||
/Producer ($Id: userguide.tex 2008-04-08 Pasqua D'Ambra, Daniela di Serafino,
|
||||
Salvatore Filippone$)
|
||||
}
|
||||
\pdfcatalog{ %-- Catalog dictionary of PDF output.
|
||||
% /URI (http://ce.uniroma2.it/psblas)
|
||||
}
|
||||
|
||||
\setlength\textwidth{1.15\textwidth}
|
||||
% \setlength\evensidemargin{.7in}
|
||||
@@ -94,17 +94,17 @@
|
||||
\emph{\large A guide for the Multi-Level Domain Decomposition
|
||||
Parallel Preconditioners Package
|
||||
based on PSBLAS}\\[3ex]
|
||||
{\bfseries Pasqua D'Ambra}\\
|
||||
ICAR-CNR, Naples, Italy\\
|
||||
{\bfseries Daniela di Serafino}\\
|
||||
Second University of Naples, Italy\\
|
||||
{\bfseries Salvatore Filippone} \\
|
||||
Cranfield University, United Kingdom\\[2ex]
|
||||
%\\[10ex]
|
||||
{\large\bfseries Pasqua D'Ambra}\\
|
||||
\large IAC-CNR, Naples, Italy\\[3ex]
|
||||
{\large\bfseries Daniela di Serafino}\\
|
||||
\large University of Campania ``Luigi Vanvitelli'', Caserta, Italy\\[3ex]
|
||||
{\large\bfseries Salvatore Filippone} \\
|
||||
\large Cranfield University, Cranfield, United Kingdom
|
||||
\\[10ex]
|
||||
%\today
|
||||
Software version: 2.1\\
|
||||
%\today
|
||||
Feb. 28, 2017
|
||||
July 31, 2017
|
||||
\clearpage
|
||||
\ \\
|
||||
\thispagestyle{empty}
|
||||
|
||||