html/index.html
 html/node1.html
 html/node10.html
 html/node11.html
 html/node12.html
 html/node13.html
 html/node14.html
 html/node15.html
 html/node16.html
 html/node17.html
 html/node18.html
 html/node19.html
 html/node2.html
 html/node20.html
 html/node21.html
 html/node22.html
 html/node23.html
 html/node24.html
 html/node25.html
 html/node26.html
 html/node3.html
 html/node4.html
 html/node5.html
 html/node6.html
 html/node7.html
 html/node8.html
 html/node9.html
 html/userhtml.html
 src/Makefile
 src/building.tex
 src/userguide.tex
 src/userhtml.tex
 userguide.pdf


Fixed mail hyperlink.
stopcriterion
Salvatore Filippone 17 years ago
parent 7829b23b6a
commit 2a2601c1ee

@ -97,50 +97,52 @@ July 24, 2008
<LI><A NAME="tex2html22" <LI><A NAME="tex2html22"
HREF="node8.html">Configuration options</A> HREF="node8.html">Configuration options</A>
<LI><A NAME="tex2html23" <LI><A NAME="tex2html23"
HREF="node9.html">Example and test programs</A> HREF="node9.html">Bug reporting</A>
<LI><A NAME="tex2html24"
HREF="node10.html">Example and test programs</A>
</UL> </UL>
<BR> <BR>
<LI><A NAME="tex2html24"
HREF="node10.html">Multi-level Domain Decomposition Background</A>
<UL>
<LI><A NAME="tex2html25" <LI><A NAME="tex2html25"
HREF="node11.html">Multi-level Schwarz Preconditioners</A> HREF="node11.html">Multi-level Domain Decomposition Background</A>
<UL>
<LI><A NAME="tex2html26" <LI><A NAME="tex2html26"
HREF="node12.html">Smoothed Aggregation</A> HREF="node12.html">Multi-level Schwarz Preconditioners</A>
<LI><A NAME="tex2html27"
HREF="node13.html">Smoothed Aggregation</A>
</UL> </UL>
<BR> <BR>
<LI><A NAME="tex2html27"
HREF="node13.html">Getting Started</A>
<UL>
<LI><A NAME="tex2html28" <LI><A NAME="tex2html28"
HREF="node14.html">Examples</A> HREF="node14.html">Getting Started</A>
<UL>
<LI><A NAME="tex2html29"
HREF="node15.html">Examples</A>
</UL> </UL>
<BR> <BR>
<LI><A NAME="tex2html29"
HREF="node15.html">User Interface</A>
<UL>
<LI><A NAME="tex2html30" <LI><A NAME="tex2html30"
HREF="node16.html">Subroutine mld_precinit</A> HREF="node16.html">User Interface</A>
<UL>
<LI><A NAME="tex2html31" <LI><A NAME="tex2html31"
HREF="node17.html">Subroutine mld_precset</A> HREF="node17.html">Subroutine mld_precinit</A>
<LI><A NAME="tex2html32" <LI><A NAME="tex2html32"
HREF="node18.html">Subroutine mld_precbld</A> HREF="node18.html">Subroutine mld_precset</A>
<LI><A NAME="tex2html33" <LI><A NAME="tex2html33"
HREF="node19.html">Subroutine mld_precaply</A> HREF="node19.html">Subroutine mld_precbld</A>
<LI><A NAME="tex2html34" <LI><A NAME="tex2html34"
HREF="node20.html">Subroutine mld_precfree</A> HREF="node20.html">Subroutine mld_precaply</A>
<LI><A NAME="tex2html35" <LI><A NAME="tex2html35"
HREF="node21.html">Subroutine mld_precdescr</A> HREF="node21.html">Subroutine mld_precfree</A>
<LI><A NAME="tex2html36"
HREF="node22.html">Subroutine mld_precdescr</A>
</UL> </UL>
<BR> <BR>
<LI><A NAME="tex2html36"
HREF="node22.html">Error Handling</A>
<LI><A NAME="tex2html37" <LI><A NAME="tex2html37"
HREF="node23.html">License</A> HREF="node23.html">Error Handling</A>
<LI><A NAME="tex2html38" <LI><A NAME="tex2html38"
HREF="node24.html">Bibliography</A> HREF="node24.html">License</A>
<LI><A NAME="tex2html39" <LI><A NAME="tex2html39"
HREF="node25.html">About this document ...</A> HREF="node25.html">Bibliography</A>
<LI><A NAME="tex2html40"
HREF="node26.html">About this document ...</A>
</UL> </UL>
<!--End of Table of Child-Links--> <!--End of Table of Child-Links-->
<BR><HR> <BR><HR>

@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html50" <A NAME="tex2html51"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html46" <A NAME="tex2html47"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html40" <A NAME="tex2html41"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html48" <A NAME="tex2html49"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html51" <B> Next:</B> <A NAME="tex2html52"
HREF="node2.html">Contents</A> HREF="node2.html">Contents</A>
<B> Up:</B> <A NAME="tex2html47" <B> Up:</B> <A NAME="tex2html48"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html41" <B> Previous:</B> <A NAME="tex2html42"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
&nbsp; <B> <A NAME="tex2html49" &nbsp; <B> <A NAME="tex2html50"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
@ -92,30 +92,30 @@ the user interface of MLD2P4.
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html50" <A NAME="tex2html51"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html46" <A NAME="tex2html47"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html40" <A NAME="tex2html41"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html48" <A NAME="tex2html49"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html51" <B> Next:</B> <A NAME="tex2html52"
HREF="node2.html">Contents</A> HREF="node2.html">Contents</A>
<B> Up:</B> <A NAME="tex2html47" <B> Up:</B> <A NAME="tex2html48"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html41" <B> Previous:</B> <A NAME="tex2html42"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
&nbsp; <B> <A NAME="tex2html49" &nbsp; <B> <A NAME="tex2html50"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Multi-level Domain Decomposition Background</TITLE> <TITLE>Example and test programs</TITLE>
<META NAME="description" CONTENT="Multi-level Domain Decomposition Background"> <META NAME="description" CONTENT="Example and test programs">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,170 +18,68 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node13.html"> <LINK REL="previous" HREF="node9.html">
<LINK REL="previous" HREF="node5.html"> <LINK REL="up" HREF="node5.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node11.html"> <LINK REL="next" HREF="node11.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html180" <A NAME="tex2html183"
HREF="node11.html"> HREF="node11.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html176" <A NAME="tex2html179"
HREF="userhtml.html"> HREF="node5.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html170" <A NAME="tex2html175"
HREF="node9.html"> HREF="node9.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html178" <A NAME="tex2html181"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html181" <B> Next:</B> <A NAME="tex2html184"
HREF="node11.html">Multi-level Schwarz Preconditioners</A> HREF="node11.html">Multi-level Domain Decomposition Background</A>
<B> Up:</B> <A NAME="tex2html177" <B> Up:</B> <A NAME="tex2html180"
HREF="userhtml.html">userhtml</A> HREF="node5.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html171" <B> Previous:</B> <A NAME="tex2html176"
HREF="node9.html">Example and test programs</A> HREF="node9.html">Bug reporting</A>
&nbsp; <B> <A NAME="tex2html179" &nbsp; <B> <A NAME="tex2html182"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H1><A NAME="SECTION00060000000000000000"></A><A NAME="sec:background"></A> <H2><A NAME="SECTION00055000000000000000"></A><A NAME="sec:ex_and_test"></A>
<BR> <BR>
Multi-level Domain Decomposition Background Example and test programs
</H1> </H2>
The package contains the <code>examples</code> and <code>tests</code> directories;
<P> both of them are further divided into <code>fileread</code> and
<I>Domain Decomposition</I> (DD) preconditioners, coupled with Krylov iterative <code>pdegen</code> subdirectories. Their purpose is as follows:
solvers, are widely used in the parallel solution of large and sparse linear systems. <DL>
These preconditioners are based on the divide and conquer technique: the matrix <DT><STRONG><TT>examples</TT></STRONG></DT>
to be preconditioned is divided into submatrices, a ``local'' linear system <DD>contains a set of simple example programs with a
involving each submatrix is (approximately) solved, and the local solutions are used predefined choice of preconditioners, selectable via integer
to build a preconditioner for the whole original matrix. This process values. These are intended to get an acquaintance with the
often corresponds to dividing a physical domain associated to the original matrix multilevel preconditioners.
into subdomains, e.g. in a PDE discretization, to (approximately) solving the </DD>
subproblems corresponding to the subdomains and to building an approximate <DT><STRONG><TT>tests</TT></STRONG></DT>
solution of the original problem from the local solutions <DD>contains a set of more sophisticated examples that
[<A will allow the user, via the input files in the <code>runs</code>
HREF="node24.html#Cai_Widlund_92">6</A>,<A subdirectories, to experiment with the full range of preconditioners
HREF="node24.html#dd1_94">7</A>,<A implemented in the library.
HREF="node24.html#dd2_96">20</A>]. </DD>
</DL>
<P> The <code>fileread</code> directories contain sample programs that read
<I>Additive Schwarz</I> preconditioners are DD preconditioners using overlapping sparse matrices from files, according to the Matrix Market or the
submatrices, i.e. with some common rows, to couple the local information Harwell-Boeing storage format; the <code>pdegen</code> instead generate
related to the submatrices (see, e.g., [<A matrices in full parallel mode from the discretization of a sample PDE.
HREF="node24.html#dd2_96">20</A>]).
The main motivation for choosing Additive Schwarz preconditioners is their
intrinsic parallelism. A drawback of these
preconditioners is that the number of iterations of the preconditioned solvers
generally grows with the number of submatrices. This may be a serious limitation
on parallel computers, since the number of submatrices usually matches the number
of available processors. Optimal convergence rates, i.e. iteration numbers
independent of the number of submatrices, can be obtained by correcting the
preconditioner through a suitable approximation of the original linear system
in a coarse space, which globally couples the information related to the single
submatrices.
<P>
<I>Two-level Schwarz</I> preconditioners are obtained
by combining basic (one-level) Schwarz preconditioners with a coarse-level
correction. In this context, the one-level preconditioner is often
called `smoother'. Different two-level preconditioners are obtained by varying the
choice of the smoother and of the coarse-level correction, and the
way they are combined [<A
HREF="node24.html#dd2_96">20</A>]. The same reasoning can be applied starting
from the coarse-level system, i.e. a coarse-space correction can be built
from this system, thus obtaining <I>multi-level</I> preconditioners.
<P>
It is worth noting that optimal preconditioners do not necessarily correspond
to minimum execution times. Indeed, to obtain effective multi-level preconditioners
a tradeoff between optimality of convergence and the cost of building and applying
the coarse-space corrections must be achieved. The choice of the number of levels,
i.e. of the coarse-space corrections, also affects the effectiveness of the
preconditioners. One more goal is to get convergence rates as less sensitive
as possible to variations in the matrix coefficients.
<P>
Two main approaches can be used to build coarse-space corrections. The geometric approach
applies coarsening strategies based on the knowledge of some physical grid associated
to the matrix and requires the user to define grid transfer operators from the fine
to the coarse levels and vice versa. This may result difficult for complex geometries;
furthermore, suitable one-level preconditioners may be required to get efficient
interplay between fine and coarse levels, e.g. when matrices with highly varying coefficients
are considered. The algebraic approach builds coarse-space corrections using only matrix
information. It performs a fully automatic coarsening and enforces the interplay between
the fine and coarse levels by suitably choosing the coarse space and the coarse-to-fine
interpolation [<A
HREF="node24.html#StubenGMD69_99">22</A>].
<P>
MLD2P4 uses a pure algebraic approach for building the sequence of coarse matrices
starting from the original matrix. The algebraic approach is based on the <I>smoothed
aggregation</I> algorithm [<A
HREF="node24.html#BREZINA_VANEK">1</A>,<A
HREF="node24.html#VANEK_MANDEL_BREZINA">24</A>]. A decoupled version
of this algorithm is implemented, where the smoothed aggregation is applied locally
to each submatrix [<A
HREF="node24.html#TUMINARO_TONG">23</A>]. In the next two subsections we provide
a brief description of the multi-level Schwarz preconditioners and of the smoothed
aggregation technique as implemented in MLD2P4. For further details the user
is referred to [<A
HREF="node24.html#para_04">2</A>,<A
HREF="node24.html#aaecc_07">3</A>,<A
HREF="node24.html#apnum_07">4</A>,<A
HREF="node24.html#dd2_96">20</A>].
<P>
<BR><HR> <BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html182"
HREF="node11.html">Multi-level Schwarz Preconditioners</A>
<LI><A NAME="tex2html183"
HREF="node12.html">Smoothed Aggregation</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html180"
HREF="node11.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html176"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html170"
HREF="node9.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html178"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html181"
HREF="node11.html">Multi-level Schwarz Preconditioners</A>
<B> Up:</B> <A NAME="tex2html177"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html171"
HREF="node9.html">Example and test programs</A>
&nbsp; <B> <A NAME="tex2html179"
HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY> </BODY>
</HTML> </HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Multi-level Schwarz Preconditioners</TITLE> <TITLE>Multi-level Domain Decomposition Background</TITLE>
<META NAME="description" CONTENT="Multi-level Schwarz Preconditioners"> <META NAME="description" CONTENT="Multi-level Domain Decomposition Background">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,751 +18,168 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node12.html"> <LINK REL="next" HREF="node14.html">
<LINK REL="previous" HREF="node10.html"> <LINK REL="previous" HREF="node5.html">
<LINK REL="up" HREF="node10.html"> <LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node12.html"> <LINK REL="next" HREF="node12.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html194" <A NAME="tex2html195"
HREF="node12.html"> HREF="node12.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html190" <A NAME="tex2html191"
HREF="node10.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html184" <A NAME="tex2html185"
HREF="node10.html"> HREF="node10.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html192" <A NAME="tex2html193"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html195" <B> Next:</B> <A NAME="tex2html196"
HREF="node12.html">Smoothed Aggregation</A> HREF="node12.html">Multi-level Schwarz Preconditioners</A>
<B> Up:</B> <A NAME="tex2html191" <B> Up:</B> <A NAME="tex2html192"
HREF="node10.html">Multi-level Domain Decomposition Background</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html185" <B> Previous:</B> <A NAME="tex2html186"
HREF="node10.html">Multi-level Domain Decomposition Background</A> HREF="node10.html">Example and test programs</A>
&nbsp; <B> <A NAME="tex2html193" &nbsp; <B> <A NAME="tex2html194"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION00061000000000000000"></A><A NAME="sec:multilevel"></A> <H1><A NAME="SECTION00060000000000000000"></A><A NAME="sec:background"></A>
<BR> <BR>
Multi-level Schwarz Preconditioners Multi-level Domain Decomposition Background
</H2> </H1>
<P>
The Multilevel preconditioners implemented in MLD2P4 are obtained by combining
AS preconditioners with coarse-space corrections; therefore
we first provide a sketch of the AS preconditioners.
<P>
Given the linear system ,
where <!-- MATH
$A=(a_{ij}) \in \Re^{n \times n}$
-->
<IMG
WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
SRC="img3.png"
ALT="$A=(a_{ij}) \in \Re^{n \times n}$"> is a
nonsingular sparse matrix with a symmetric nonzero pattern,
let <IMG
WIDTH="93" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img4.png"
ALT="$G=(W,E)$"> be the adjacency graph of <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png"
ALT="$A$">, where <!-- MATH
$W=\{1, 2, \ldots, n\}$
-->
<IMG
WIDTH="138" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img5.png"
ALT="$W=\{1, 2, \ldots, n\}$">
and <!-- MATH
$E=\{(i,j) : a_{ij} \neq 0\}$
-->
<IMG
WIDTH="162" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img6.png"
ALT="$E=\{(i,j) : a_{ij} \neq 0\}$"> are the vertex set and the edge set of <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img7.png"
ALT="$G$">,
respectively. Two vertices are called adjacent if there is an edge connecting
them. For any integer <IMG
WIDTH="45" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img8.png"
ALT="$\delta &gt; 0$">, a <IMG
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\delta$">-overlap
partition of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png"
ALT="$W$"> can be defined recursively as follows.
Given a 0-overlap (or non-overlapping) partition of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png"
ALT="$W$">,
i.e. a set of <IMG
WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img11.png"
ALT="$m$"> disjoint nonempty sets <!-- MATH
$W_i^0 \subset W$
-->
<IMG
WIDTH="73" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img12.png"
ALT="$W_i^0 \subset W$"> such that
<!-- MATH
$\cup_{i=1}^m W_i^0 = W$
-->
<IMG
WIDTH="107" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img13.png"
ALT="$\cup_{i=1}^m W_i^0 = W$">, a <IMG
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\delta$">-overlap
partition of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png"
ALT="$W$"> is obtained by considering the sets
<!-- MATH
$W_i^\delta \supset W_i^{\delta-1}$
-->
<IMG
WIDTH="97" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img14.png"
ALT="$W_i^\delta \supset W_i^{\delta-1}$"> obtained by including the vertices that
are adjacent to any vertex in <!-- MATH
$W_i^{\delta-1}$
-->
<IMG
WIDTH="48" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img15.png"
ALT="$W_i^{\delta-1}$">.
<P> <P>
Let <IMG <I>Domain Decomposition</I> (DD) preconditioners, coupled with Krylov iterative
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" solvers, are widely used in the parallel solution of large and sparse linear systems.
SRC="img16.png" These preconditioners are based on the divide and conquer technique: the matrix
ALT="$n_i^\delta$"> be the size of <IMG to be preconditioned is divided into submatrices, a ``local'' linear system
WIDTH="30" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" involving each submatrix is (approximately) solved, and the local solutions are used
SRC="img17.png" to build a preconditioner for the whole original matrix. This process
ALT="$W_i^\delta$"> and <!-- MATH often corresponds to dividing a physical domain associated to the original matrix
$R_i^{\delta} \in into subdomains, e.g. in a PDE discretization, to (approximately) solving the
\Re^{n_i^\delta \times n}$ subproblems corresponding to the subdomains and to building an approximate
--> solution of the original problem from the local solutions
<IMG [<A
WIDTH="93" HEIGHT="43" ALIGN="MIDDLE" BORDER="0" HREF="node25.html#Cai_Widlund_92">6</A>,<A
SRC="img18.png" HREF="node25.html#dd1_94">7</A>,<A
ALT="$R_i^{\delta} \in HREF="node25.html#dd2_96">20</A>].
\Re^{n_i^\delta \times n}$"> the restriction operator that maps
a vector <IMG
WIDTH="56" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img19.png"
ALT="$v \in \Re^n$"> onto the vector <!-- MATH
$v_i^{\delta} \in \Re^{n_i^\delta}$
-->
<IMG
WIDTH="70" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
SRC="img20.png"
ALT="$v_i^{\delta} \in \Re^{n_i^\delta}$">
containing the components of <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$"> corresponding to the vertices in
<IMG
WIDTH="30" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img17.png"
ALT="$W_i^\delta$">. The transpose of <IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img22.png"
ALT="$R_i^{\delta}$"> is a
prolongation operator from <!-- MATH
$\Re^{n_i^\delta}$
-->
<IMG
WIDTH="32" HEIGHT="24" ALIGN="BOTTOM" BORDER="0"
SRC="img23.png"
ALT="$\Re^{n_i^\delta}$"> to <IMG
WIDTH="26" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img24.png"
ALT="$\Re^n$">.
The matrix <!-- MATH
$A_i^\delta=R_i^\delta A (R_i^\delta)^T \in
\Re^{n_i^\delta \times n_i^\delta}$
-->
<IMG
WIDTH="201" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
SRC="img25.png"
ALT="$A_i^\delta=R_i^\delta A (R_i^\delta)^T \in
\Re^{n_i^\delta \times n_i^\delta}$"> can be considered
as a restriction of <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png"
ALT="$A$"> corresponding to the set <IMG
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img26.png"
ALT="$W_i^{\delta}$">.
<P> <P>
The <I>classical one-level AS</I> preconditioner is defined by <I>Additive Schwarz</I> preconditioners are DD preconditioners using overlapping
<BR><P></P> submatrices, i.e. with some common rows, to couple the local information
<DIV ALIGN="CENTER"> related to the submatrices (see, e.g., [<A
<!-- MATH HREF="node25.html#dd2_96">20</A>]).
\begin{displaymath} The main motivation for choosing Additive Schwarz preconditioners is their
M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T intrinsic parallelism. A drawback of these
(A_i^\delta)^{-1} R_i^{\delta}, preconditioners is that the number of iterations of the preconditioned solvers
\end{displaymath} generally grows with the number of submatrices. This may be a serious limitation
--> on parallel computers, since the number of submatrices usually matches the number
of available processors. Optimal convergence rates, i.e. iteration numbers
<IMG independent of the number of submatrices, can be obtained by correcting the
WIDTH="206" HEIGHT="58" BORDER="0" preconditioner through a suitable approximation of the original linear system
SRC="img27.png" in a coarse space, which globally couples the information related to the single
ALT="\begin{displaymath} submatrices.
M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
(A_i^\delta)^{-1} R_i^{\delta},
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img28.png"
ALT="$A_i^\delta$"> is assumed to be nonsingular. Its application
to a vector <IMG
WIDTH="56" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img19.png"
ALT="$v \in \Re^n$"> within a Krylov solver requires the following
three steps:
<OL>
<LI>restriction of <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$"> as <!-- MATH
$v_i = R_i^{\delta} v$
-->
<IMG
WIDTH="71" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img29.png"
ALT="$v_i = R_i^{\delta} v$">, <IMG
WIDTH="97" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
SRC="img30.png"
ALT="$i=1,\ldots,m$">;
</LI>
<LI>solution of the linear systems <!-- MATH
$A_i^\delta w_i = v_i$
-->
<IMG
WIDTH="80" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img31.png"
ALT="$A_i^\delta w_i = v_i$">,
<IMG
WIDTH="97" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
SRC="img30.png"
ALT="$i=1,\ldots,m$">;
</LI>
<LI>prolongation and sum of the <IMG
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img32.png"
ALT="$w_i$">'s, i.e. <!-- MATH
$w = \sum_{i=1}^m (R_i^{\delta})^T w_i$
-->
<IMG
WIDTH="144" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img33.png"
ALT="$w = \sum_{i=1}^m (R_i^{\delta})^T w_i$">.
</LI>
</OL>
Note that the linear systems at step 2 are usually solved approximately,
e.g. using incomplete LU factorizations such as ILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">), MILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">) and
ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">) [<A
HREF="node24.html#Saad_book">19</A>, Chapter 10].
<P>
A variant of the classical AS preconditioner that outperforms it
in terms of convergence rate and of computation and communication
time on parallel distributed-memory computers is the so-called <I>Restricted AS
(RAS)</I> preconditioner&nbsp;[<A
HREF="node24.html#CAI_SARKIS">5</A>,<A
HREF="node24.html#EFSTATHIOU">13</A>]. It
is obtained by zeroing the components of <IMG
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img32.png"
ALT="$w_i$"> corresponding to the
overlapping vertices when applying the prolongation. Therefore,
RAS differs from classical AS by the prolongation operators,
which are substituted by <!-- MATH
$(\tilde{R}_i^0)^T \in \Re^{n_i^\delta \times n}$
-->
<IMG
WIDTH="118" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
SRC="img36.png"
ALT="$(\tilde{R}_i^0)^T \in \Re^{n_i^\delta \times n}$">,
where <IMG
WIDTH="25" HEIGHT="42" ALIGN="MIDDLE" BORDER="0"
SRC="img37.png"
ALT="$\tilde{R}_i^0$"> is obtained by zeroing the rows of <IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img38.png"
ALT="$R_i^\delta$">
corresponding to the vertices in <!-- MATH
$W_i^\delta \backslash W_i^0$
-->
<IMG
WIDTH="66" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img39.png"
ALT="$W_i^\delta \backslash W_i^0$">:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
M_{RAS}^{-1}= \sum_{i=1}^m (\tilde{R}_i^0)^T
(A_i^\delta)^{-1} R_i^{\delta}.
\end{displaymath}
-->
<IMG
WIDTH="216" HEIGHT="58" BORDER="0"
SRC="img40.png"
ALT="\begin{displaymath}
M_{RAS}^{-1}= \sum_{i=1}^m (\tilde{R}_i^0)^T
(A_i^\delta)^{-1} R_i^{\delta}.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
Analogously, the AS variant called <I>AS with Harmonic extension (ASH)</I>
is defined by
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
M_{ASH}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
(A_i^\delta)^{-1} \tilde{R}_i^0.
\end{displaymath}
-->
<IMG
WIDTH="218" HEIGHT="58" BORDER="0"
SRC="img41.png"
ALT="\begin{displaymath}M_{ASH}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
(A_i^\delta)^{-1} \tilde{R}_i^0.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
We note that for <IMG
WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img42.png"
ALT="$\delta=0$"> the three variants of the AS preconditioner are
all equal to the block-Jacobi preconditioner.
<P> <P>
As already observed, the convergence rate of the one-level Schwarz <I>Two-level Schwarz</I> preconditioners are obtained
preconditioned iterative solvers deteriorates as the number <IMG by combining basic (one-level) Schwarz preconditioners with a coarse-level
WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" correction. In this context, the one-level preconditioner is often
SRC="img11.png" called `smoother'. Different two-level preconditioners are obtained by varying the
ALT="$m$"> of partitions choice of the smoother and of the coarse-level correction, and the
of <IMG way they are combined [<A
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" HREF="node25.html#dd2_96">20</A>]. The same reasoning can be applied starting
SRC="img10.png" from the coarse-level system, i.e. a coarse-space correction can be built
ALT="$W$"> increases [<A from this system, thus obtaining <I>multi-level</I> preconditioners.
HREF="node24.html#dd1_94">7</A>,<A
HREF="node24.html#dd2_96">20</A>]. To reduce the dependency
of the number of iterations on the degree of parallelism we may
introduce a global coupling among the overlapping partitions by defining
a coarse-space approximation <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$"> of the matrix <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png"
ALT="$A$">.
In a pure algebraic setting, <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$"> is usually built with
a Galerkin approach. Given a set <IMG
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img44.png"
ALT="$W_C$"> of <I>coarse vertices</I>,
with size <IMG
WIDTH="26" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img45.png"
ALT="$n_C$">, and a suitable restriction operator
<!-- MATH
$R_C \in \Re^{n_C \times n}$
-->
<IMG
WIDTH="101" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
SRC="img46.png"
ALT="$R_C \in \Re^{n_C \times n}$">, <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$"> is defined as
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
A_C=R_C A R_C^T
\end{displaymath}
-->
<IMG
WIDTH="109" HEIGHT="31" BORDER="0"
SRC="img47.png"
ALT="\begin{displaymath}
A_C=R_C A R_C^T
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
and the coarse-level correction matrix to be combined with a generic
one-level AS preconditioner <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img48.png"
ALT="$M_{1L}$"> is obtained as
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
M_{C}^{-1}= R_C^T A_C^{-1} R_C,
\end{displaymath}
-->
<IMG
WIDTH="144" HEIGHT="32" BORDER="0"
SRC="img49.png"
ALT="\begin{displaymath}
M_{C}^{-1}= R_C^T A_C^{-1} R_C,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$"> is assumed to be nonsingular. The application of <IMG
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img50.png"
ALT="$M_{C}^{-1}$">
to a vector <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$"> corresponds to a restriction, a solution and
a prolongation step; the solution step, involving the matrix <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$">,
may be carried out also approximately.
<P> <P>
The combination of <IMG It is worth noting that optimal preconditioners do not necessarily correspond
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" to minimum execution times. Indeed, to obtain effective multi-level preconditioners
SRC="img51.png" a tradeoff between optimality of convergence and the cost of building and applying
ALT="$M_{C}$"> and <IMG the coarse-space corrections must be achieved. The choice of the number of levels,
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" i.e. of the coarse-space corrections, also affects the effectiveness of the
SRC="img48.png" preconditioners. One more goal is to get convergence rates as less sensitive
ALT="$M_{1L}$"> may be as possible to variations in the matrix coefficients.
performed in either an additive or a multiplicative framework.
In the former case, the <I>two-level additive</I> Schwarz preconditioner
is obtained:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.
\end{displaymath}
-->
<IMG
WIDTH="166" HEIGHT="32" BORDER="0"
SRC="img52.png"
ALT="\begin{displaymath}
M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
Applying <IMG
WIDTH="59" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img53.png"
ALT="$M_{2L-A}^{-1}$"> to a vector <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$"> within a Krylov solver
corresponds to applying <IMG
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img50.png"
ALT="$M_{C}^{-1}$">
and <IMG
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img54.png"
ALT="$M_{1L}^{-1}$"> to <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$"> independently and then summing up
the results.
<P> <P>
In the multiplicative case, the combination can be Two main approaches can be used to build coarse-space corrections. The geometric approach
performed by first applying the smoother <IMG applies coarsening strategies based on the knowledge of some physical grid associated
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0" to the matrix and requires the user to define grid transfer operators from the fine
SRC="img54.png" to the coarse levels and vice versa. This may result difficult for complex geometries;
ALT="$M_{1L}^{-1}$"> and then furthermore, suitable one-level preconditioners may be required to get efficient
the coarse-level correction operator <IMG interplay between fine and coarse levels, e.g. when matrices with highly varying coefficients
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0" are considered. The algebraic approach builds coarse-space corrections using only matrix
SRC="img50.png" information. It performs a fully automatic coarsening and enforces the interplay between
ALT="$M_{C}^{-1}$">: the fine and coarse levels by suitably choosing the coarse space and the coarse-to-fine
<BR><P></P> interpolation [<A
<DIV ALIGN="CENTER"> HREF="node25.html#StubenGMD69_99">22</A>].
<!-- MATH
\begin{displaymath}
\begin{array}{l}
w = M_{1L}^{-1} v, \\
z = w + M_{C}^{-1} (v-Aw);
\end{array}
\end{displaymath}
-->
<IMG
WIDTH="177" HEIGHT="51" BORDER="0"
SRC="img55.png"
ALT="\begin{displaymath}
\begin{array}{l}
w = M_{1L}^{-1} v, \\
z = w + M_{C}^{-1} (v-Aw);
\end{array}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
this corresponds to the following <I>two-level hybrid pre-smoothed</I>
Schwarz preconditioner:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
M_{2LH-PRE}^{-1} = M_{C}^{-1} + \left( I - M_{C}^{-1}A \right) M_{1L}^{-1}.
\end{displaymath}
-->
<IMG
WIDTH="308" HEIGHT="33" BORDER="0"
SRC="img56.png"
ALT="\begin{displaymath}
M_{2LH-PRE}^{-1} = M_{C}^{-1} + \left( I - M_{C}^{-1}A \right) M_{1L}^{-1}.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
On the other hand, by applying the smoother after the coarse-level correction,
i.e. by computing
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
\begin{array}{l}
w = M_{C}^{-1} v , \\
z = w + M_{1L}^{-1} (v-Aw) ,
\end{array}
\end{displaymath}
-->
<IMG
WIDTH="177" HEIGHT="51" BORDER="0"
SRC="img57.png"
ALT="\begin{displaymath}
\begin{array}{l}
w = M_{C}^{-1} v , \\
z = w + M_{1L}^{-1} (v-Aw) ,
\end{array}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
the <I>two-level hybrid post-smoothed</I>
Schwarz preconditioner is obtained:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
M_{2LH-POST}^{-1} = M_{1L}^{-1} + \left( I - M_{1L}^{-1}A \right) M_{C}^{-1}.
\end{displaymath}
-->
<IMG
WIDTH="317" HEIGHT="33" BORDER="0"
SRC="img58.png"
ALT="\begin{displaymath}
M_{2LH-POST}^{-1} = M_{1L}^{-1} + \left( I - M_{1L}^{-1}A \right) M_{C}^{-1}.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
One more variant of two-level hybrid preconditioner is obtained by applying
the smoother before and after the coarse-level correction. In this case, the
preconditioner is symmetric if <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png"
ALT="$A$">, <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img48.png"
ALT="$M_{1L}$"> and <IMG
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img51.png"
ALT="$M_{C}$"> are symmetric.
<P> <P>
As previously noted, on parallel computers the number of submatrices usually matches MLD2P4 uses a pure algebraic approach for building the sequence of coarse matrices
the number of available processors. When the size of the system to be preconditioned starting from the original matrix. The algebraic approach is based on the <I>smoothed
is very large, the use of many processors, i.e. of many small submatrices, often aggregation</I> algorithm [<A
leads to a large coarse-level system, whose solution may be computationally expensive. HREF="node25.html#BREZINA_VANEK">1</A>,<A
On the other hand, the use of few processors often leads to local sumatrices that HREF="node25.html#VANEK_MANDEL_BREZINA">24</A>]. A decoupled version
are too expensive to be processed on single processors, because of memory and/or of this algorithm is implemented, where the smoothed aggregation is applied locally
computing requirements. Therefore, it seems natural to use a recursive approach, to each submatrix [<A
in which the coarse-level correction is re-applied starting from the current HREF="node25.html#TUMINARO_TONG">23</A>]. In the next two subsections we provide
coarse-level system. The corresponding preconditioners, called <I>multi-level</I> a brief description of the multi-level Schwarz preconditioners and of the smoothed
preconditioners, can significantly reduce the computational cost of preconditioning aggregation technique as implemented in MLD2P4. For further details the user
with respect to the two-level case (see [<A is referred to [<A
HREF="node24.html#dd2_96">20</A>, Chapter 3]). HREF="node25.html#para_04">2</A>,<A
Additive and hybrid multilevel preconditioners HREF="node25.html#aaecc_07">3</A>,<A
are obtained as direct extensions of the two-level counterparts. HREF="node25.html#apnum_07">4</A>,<A
For a detailed descrition of them, the reader is HREF="node25.html#dd2_96">20</A>].
referred to [<A
HREF="node24.html#dd2_96">20</A>, Chapter 3].
The algorithm for the application of a multi-level hybrid
post-smoothed preconditioner <IMG
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img59.png"
ALT="$M$"> to a vector <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$">, i.e. for the
computation of <IMG
WIDTH="87" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img60.png"
ALT="$w=M^{-1}v$">, is reported, for
example, in Figure&nbsp;<A HREF="#fig:mlhpost_alg">1</A>. Here the number of levels
is denoted by <IMG
WIDTH="37" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img61.png"
ALT="$nlev$"> and the levels are numbered in increasing order starting
from the finest one, i.e. the finest level is level 1; the coarse matrix
and the corresponding basic preconditioner at each level <IMG
WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img62.png"
ALT="$l$"> are denoted by <IMG
WIDTH="22" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img63.png"
ALT="$A_l$"> and
<IMG
WIDTH="27" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img64.png"
ALT="$M_l$">, respectively, with <IMG
WIDTH="61" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img65.png"
ALT="$A_1=A$">.
<DIV ALIGN="CENTER"><A NAME="fig:mlhpost_alg"></A><A NAME="508"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
Application of the multi-level hybrid post-smoothed preconditioner.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<!-- MATH
$\framebox{
\begin{minipage}{.85\textwidth} {\small
\begin{tabbing}
\quad \=\quad \=\quad \=\quad \\[-1mm]
$v_1 = v$; \\[2mm]
\textbf{for $l=2, nlev$\ do}\\[1mm]
\> ! transfer $v_{l-1}$\ to the next coarser level\\
\> $v_l = R_lv_{l-1}$\ \\[1mm]
\textbf{endfor} \\[2mm]
! apply the coarsest-level correction\\[1mm]
$y_{nlev} = A_{nlev}^{-1} v_{nlev}$\\[2mm]
\textbf{for $l=nlev -1 , 1, -1$\ do}\\[1mm]
\> ! transfer $y_{l+1}$\ to the next finer level\\
\> $y_l = R_{l+1}^T y_{l+1}$;\\[1mm]
\> ! compute the residual at the current level\\
\> $r_l = v_l-A_l^{-1} y_l$;\\[1mm]
\> ! apply the basic Schwarz preconditioner to the residual\\
\> $r_l = M_l^{-1} r_l$\\[1mm]
\> ! update $y_l$\\
\> $y_l = y_l+r_l$\\
\textbf{endfor} \\[1mm]
$w = y_1$;
\end{tabbing}
}
\end{minipage}
}$
-->
<IMG
WIDTH="430" HEIGHT="435" ALIGN="BOTTOM" BORDER="0"
SRC="img66.png"
ALT="\framebox{
\begin{minipage}{.85\textwidth} {\small
\begin{tabbing}
\quad \=\quad...
...= y_l+r_l$\\
\textbf{endfor} [1mm]
$w = y_1$;
\end{tabbing}}
\end{minipage}}">
</DIV></TD></TR>
</TABLE>
</DIV>
<P> <P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html197"
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
<LI><A NAME="tex2html198"
HREF="node13.html">Smoothed Aggregation</A>
</UL>
<!--End of Table of Child-Links-->
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html194" <A NAME="tex2html195"
HREF="node12.html"> HREF="node12.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html190" <A NAME="tex2html191"
HREF="node10.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html184" <A NAME="tex2html185"
HREF="node10.html"> HREF="node10.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html192" <A NAME="tex2html193"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html195" <B> Next:</B> <A NAME="tex2html196"
HREF="node12.html">Smoothed Aggregation</A> HREF="node12.html">Multi-level Schwarz Preconditioners</A>
<B> Up:</B> <A NAME="tex2html191" <B> Up:</B> <A NAME="tex2html192"
HREF="node10.html">Multi-level Domain Decomposition Background</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html185" <B> Previous:</B> <A NAME="tex2html186"
HREF="node10.html">Multi-level Domain Decomposition Background</A> HREF="node10.html">Example and test programs</A>
&nbsp; <B> <A NAME="tex2html193" &nbsp; <B> <A NAME="tex2html194"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Smoothed Aggregation</TITLE> <TITLE>Multi-level Schwarz Preconditioners</TITLE>
<META NAME="description" CONTENT="Smoothed Aggregation"> <META NAME="description" CONTENT="Multi-level Schwarz Preconditioners">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,306 +18,751 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node13.html">
<LINK REL="previous" HREF="node11.html"> <LINK REL="previous" HREF="node11.html">
<LINK REL="up" HREF="node10.html"> <LINK REL="up" HREF="node11.html">
<LINK REL="next" HREF="node13.html"> <LINK REL="next" HREF="node13.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html204" <A NAME="tex2html209"
HREF="node13.html"> HREF="node13.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html200" <A NAME="tex2html205"
HREF="node10.html"> HREF="node11.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html196" <A NAME="tex2html199"
HREF="node11.html"> HREF="node11.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html202" <A NAME="tex2html207"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html205" <B> Next:</B> <A NAME="tex2html210"
HREF="node13.html">Getting Started</A> HREF="node13.html">Smoothed Aggregation</A>
<B> Up:</B> <A NAME="tex2html201" <B> Up:</B> <A NAME="tex2html206"
HREF="node10.html">Multi-level Domain Decomposition Background</A> HREF="node11.html">Multi-level Domain Decomposition Background</A>
<B> Previous:</B> <A NAME="tex2html197" <B> Previous:</B> <A NAME="tex2html200"
HREF="node11.html">Multi-level Schwarz Preconditioners</A> HREF="node11.html">Multi-level Domain Decomposition Background</A>
&nbsp; <B> <A NAME="tex2html203" &nbsp; <B> <A NAME="tex2html208"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION00062000000000000000"></A><A NAME="sec:aggregation"></A> <H2><A NAME="SECTION00061000000000000000"></A><A NAME="sec:multilevel"></A>
<BR> <BR>
Smoothed Aggregation Multi-level Schwarz Preconditioners
</H2> </H2>
<P> <P>
In order to define the restriction operator <IMG The Multilevel preconditioners implemented in MLD2P4 are obtained by combining
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" AS preconditioners with coarse-space corrections; therefore
SRC="img67.png" we first provide a sketch of the AS preconditioners.
ALT="$R_C$">, which is used to compute
the coarse-level matrix <IMG <P>
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" Given the linear system ,
SRC="img43.png" where <!-- MATH
ALT="$A_C$">, MLD2P4 uses the <I>smoothed aggregation</I> $A=(a_{ij}) \in \Re^{n \times n}$
algorithm described in [<A -->
HREF="node24.html#BREZINA_VANEK">1</A>,<A
HREF="node24.html#VANEK_MANDEL_BREZINA">24</A>].
The basic idea of this algorithm is to build a coarse set of vertices
<IMG <IMG
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
SRC="img44.png" SRC="img3.png"
ALT="$W_C$"> by suitably grouping the vertices of <IMG ALT="$A=(a_{ij}) \in \Re^{n \times n}$"> is a
nonsingular sparse matrix with a symmetric nonzero pattern,
let <IMG
WIDTH="93" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img4.png"
ALT="$G=(W,E)$"> be the adjacency graph of <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png"
ALT="$A$">, where <!-- MATH
$W=\{1, 2, \ldots, n\}$
-->
<IMG
WIDTH="138" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img5.png"
ALT="$W=\{1, 2, \ldots, n\}$">
and <!-- MATH
$E=\{(i,j) : a_{ij} \neq 0\}$
-->
<IMG
WIDTH="162" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img6.png"
ALT="$E=\{(i,j) : a_{ij} \neq 0\}$"> are the vertex set and the edge set of <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img7.png"
ALT="$G$">,
respectively. Two vertices are called adjacent if there is an edge connecting
them. For any integer <IMG
WIDTH="45" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img8.png"
ALT="$\delta &gt; 0$">, a <IMG
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\delta$">-overlap
partition of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png"
ALT="$W$"> can be defined recursively as follows.
Given a 0-overlap (or non-overlapping) partition of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png"
ALT="$W$">,
i.e. a set of <IMG
WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img11.png"
ALT="$m$"> disjoint nonempty sets <!-- MATH
$W_i^0 \subset W$
-->
<IMG
WIDTH="73" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img12.png"
ALT="$W_i^0 \subset W$"> such that
<!-- MATH
$\cup_{i=1}^m W_i^0 = W$
-->
<IMG
WIDTH="107" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img13.png"
ALT="$\cup_{i=1}^m W_i^0 = W$">, a <IMG
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\delta$">-overlap
partition of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png" SRC="img10.png"
ALT="$W$"> into disjoint subsets ALT="$W$"> is obtained by considering the sets
(aggregates), and to define the coarse-to-fine space transfer operator <IMG <!-- MATH
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" $W_i^\delta \supset W_i^{\delta-1}$
SRC="img68.png" -->
ALT="$R_C^T$"> by <IMG
applying a suitable smoother to a simple piecewise constant WIDTH="97" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
prolongation operator, to improve the quality of the coarse-space correction. SRC="img14.png"
ALT="$W_i^\delta \supset W_i^{\delta-1}$"> obtained by including the vertices that
are adjacent to any vertex in <!-- MATH
$W_i^{\delta-1}$
-->
<IMG
WIDTH="48" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img15.png"
ALT="$W_i^{\delta-1}$">.
<P> <P>
Three main steps can be identified in the smoothed aggregation procedure: Let <IMG
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img16.png"
ALT="$n_i^\delta$"> be the size of <IMG
WIDTH="30" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img17.png"
ALT="$W_i^\delta$"> and <!-- MATH
$R_i^{\delta} \in
\Re^{n_i^\delta \times n}$
-->
<IMG
WIDTH="93" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
SRC="img18.png"
ALT="$R_i^{\delta} \in
\Re^{n_i^\delta \times n}$"> the restriction operator that maps
a vector <IMG
WIDTH="56" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img19.png"
ALT="$v \in \Re^n$"> onto the vector <!-- MATH
$v_i^{\delta} \in \Re^{n_i^\delta}$
-->
<IMG
WIDTH="70" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
SRC="img20.png"
ALT="$v_i^{\delta} \in \Re^{n_i^\delta}$">
containing the components of <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$"> corresponding to the vertices in
<IMG
WIDTH="30" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img17.png"
ALT="$W_i^\delta$">. The transpose of <IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img22.png"
ALT="$R_i^{\delta}$"> is a
prolongation operator from <!-- MATH
$\Re^{n_i^\delta}$
-->
<IMG
WIDTH="32" HEIGHT="24" ALIGN="BOTTOM" BORDER="0"
SRC="img23.png"
ALT="$\Re^{n_i^\delta}$"> to <IMG
WIDTH="26" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img24.png"
ALT="$\Re^n$">.
The matrix <!-- MATH
$A_i^\delta=R_i^\delta A (R_i^\delta)^T \in
\Re^{n_i^\delta \times n_i^\delta}$
-->
<IMG
WIDTH="201" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
SRC="img25.png"
ALT="$A_i^\delta=R_i^\delta A (R_i^\delta)^T \in
\Re^{n_i^\delta \times n_i^\delta}$"> can be considered
as a restriction of <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png"
ALT="$A$"> corresponding to the set <IMG
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img26.png"
ALT="$W_i^{\delta}$">.
<P>
The <I>classical one-level AS</I> preconditioner is defined by
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
(A_i^\delta)^{-1} R_i^{\delta},
\end{displaymath}
-->
<IMG
WIDTH="206" HEIGHT="58" BORDER="0"
SRC="img27.png"
ALT="\begin{displaymath}
M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
(A_i^\delta)^{-1} R_i^{\delta},
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img28.png"
ALT="$A_i^\delta$"> is assumed to be nonsingular. Its application
to a vector <IMG
WIDTH="56" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img19.png"
ALT="$v \in \Re^n$"> within a Krylov solver requires the following
three steps:
<OL> <OL>
<LI>coarsening of the vertex set <IMG <LI>restriction of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png" SRC="img21.png"
ALT="$W$">, to obtain <IMG ALT="$v$"> as <!-- MATH
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" $v_i = R_i^{\delta} v$
SRC="img44.png" -->
ALT="$W_C$">; <IMG
WIDTH="71" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img29.png"
ALT="$v_i = R_i^{\delta} v$">, <IMG
WIDTH="97" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
SRC="img30.png"
ALT="$i=1,\ldots,m$">;
</LI> </LI>
<LI>construction of the prolongator <IMG <LI>solution of the linear systems <!-- MATH
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" $A_i^\delta w_i = v_i$
SRC="img68.png" -->
ALT="$R_C^T$">; <IMG
WIDTH="80" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img31.png"
ALT="$A_i^\delta w_i = v_i$">,
<IMG
WIDTH="97" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
SRC="img30.png"
ALT="$i=1,\ldots,m$">;
</LI> </LI>
<LI>application of <IMG <LI>prolongation and sum of the <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img67.png" SRC="img32.png"
ALT="$R_C$"> and <IMG ALT="$w_i$">'s, i.e. <!-- MATH
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" $w = \sum_{i=1}^m (R_i^{\delta})^T w_i$
SRC="img68.png" -->
ALT="$R_C^T$"> to build <IMG <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="144" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png" SRC="img33.png"
ALT="$A_C$">. ALT="$w = \sum_{i=1}^m (R_i^{\delta})^T w_i$">.
</LI> </LI>
</OL> </OL>
Note that the linear systems at step 2 are usually solved approximately,
e.g. using incomplete LU factorizations such as ILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">), MILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">) and
ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">) [<A
HREF="node25.html#Saad_book">19</A>, Chapter 10].
<P> <P>
To perform the coarsening step, we have implemented the aggregation algorithm sketched A variant of the classical AS preconditioner that outperforms it
in [<A in terms of convergence rate and of computation and communication
HREF="node24.html#apnum_07">4</A>]. According to [<A time on parallel distributed-memory computers is the so-called <I>Restricted AS
HREF="node24.html#VANEK_MANDEL_BREZINA">24</A>], a modification of (RAS)</I> preconditioner&nbsp;[<A
this algorithm has been actually considered, HREF="node25.html#CAI_SARKIS">5</A>,<A
in which each aggregate <IMG HREF="node25.html#EFSTATHIOU">13</A>]. It
WIDTH="26" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" is obtained by zeroing the components of <IMG
SRC="img69.png" WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
ALT="$N_r$"> is made of vertices of <IMG SRC="img32.png"
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" ALT="$w_i$"> corresponding to the
SRC="img10.png" overlapping vertices when applying the prolongation. Therefore,
ALT="$W$"> that are <I>strongly coupled</I> RAS differs from classical AS by the prolongation operators,
to a certain root vertex <IMG which are substituted by <!-- MATH
WIDTH="53" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" $(\tilde{R}_i^0)^T \in \Re^{n_i^\delta \times n}$
SRC="img70.png" -->
ALT="$r \in W$">, i.e. <BR><P></P> <IMG
WIDTH="118" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
SRC="img36.png"
ALT="$(\tilde{R}_i^0)^T \in \Re^{n_i^\delta \times n}$">,
where <IMG
WIDTH="25" HEIGHT="42" ALIGN="MIDDLE" BORDER="0"
SRC="img37.png"
ALT="$\tilde{R}_i^0$"> is obtained by zeroing the rows of <IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img38.png"
ALT="$R_i^\delta$">
corresponding to the vertices in <!-- MATH
$W_i^\delta \backslash W_i^0$
-->
<IMG
WIDTH="66" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img39.png"
ALT="$W_i^\delta \backslash W_i^0$">:
<BR><P></P>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<!-- MATH <!-- MATH
\begin{displaymath} \begin{displaymath}
N_r = \left\{s \in W: |a_{rs}| > \theta \sqrt{|a_{rr}a_{ss}|} \right\} M_{RAS}^{-1}= \sum_{i=1}^m (\tilde{R}_i^0)^T
\cup \left\{ r \right\} , (A_i^\delta)^{-1} R_i^{\delta}.
\end{displaymath} \end{displaymath}
--> -->
<IMG <IMG
WIDTH="319" HEIGHT="38" BORDER="0" WIDTH="216" HEIGHT="58" BORDER="0"
SRC="img71.png" SRC="img40.png"
ALT="\begin{displaymath}N_r = \left\{s \in W: \vert a_{rs}\vert &gt; \theta \sqrt{\vert a_{rr}a_{ss}\vert} \right\} ALT="\begin{displaymath}
\cup \left\{ r \right\} , M_{RAS}^{-1}= \sum_{i=1}^m (\tilde{R}_i^0)^T
(A_i^\delta)^{-1} R_i^{\delta}.
\end{displaymath}"> \end{displaymath}">
</DIV> </DIV>
<BR CLEAR="ALL"> <BR CLEAR="ALL">
<P></P> <P></P>
for a given <!-- MATH Analogously, the AS variant called <I>AS with Harmonic extension (ASH)</I>
$\theta \in [0,1]$ is defined by
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
M_{ASH}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
(A_i^\delta)^{-1} \tilde{R}_i^0.
\end{displaymath}
--> -->
<IMG <IMG
WIDTH="69" HEIGHT="36" ALIGN="MIDDLE" BORDER="0" WIDTH="218" HEIGHT="58" BORDER="0"
SRC="img72.png" SRC="img41.png"
ALT="$\theta \in [0,1]$">. ALT="\begin{displaymath}M_{ASH}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
Since this algorithm has a sequential nature, a <I>decoupled</I> version of (A_i^\delta)^{-1} \tilde{R}_i^0.
it has been chosen, where each processor <IMG \end{displaymath}">
WIDTH="10" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" </DIV>
SRC="img73.png" <BR CLEAR="ALL">
ALT="$i$"> independently applies the algorithm to <P></P>
the set of vertices <IMG We note that for <IMG
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img74.png" SRC="img42.png"
ALT="$W_i^0$"> assigned to it in the initial data distribution. This ALT="$\delta=0$"> the three variants of the AS preconditioner are
version is embarrassingly parallel, since it does not require any data communication. all equal to the block-Jacobi preconditioner.
On the other hand, it may produce non-uniform aggregates near boundary vertices,
i.e. near vertices adjacent to vertices in other processors, and is strongly <P>
dependent on the number of processors and on the initial partitioning of the matrix <IMG As already observed, the convergence rate of the one-level Schwarz
preconditioned iterative solvers deteriorates as the number <IMG
WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img11.png"
ALT="$m$"> of partitions
of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png"
ALT="$W$"> increases [<A
HREF="node25.html#dd1_94">7</A>,<A
HREF="node25.html#dd2_96">20</A>]. To reduce the dependency
of the number of iterations on the degree of parallelism we may
introduce a global coupling among the overlapping partitions by defining
a coarse-space approximation <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$"> of the matrix <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png" SRC="img2.png"
ALT="$A$">. ALT="$A$">.
Nevertheless, this algorithm has been chosen for the implementation in MLD2P4, In a pure algebraic setting, <IMG
since it has been shown to produce good results in practice WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
[<A SRC="img43.png"
HREF="node24.html#aaecc_07">3</A>,<A ALT="$A_C$"> is usually built with
HREF="node24.html#apnum_07">4</A>,<A a Galerkin approach. Given a set <IMG
HREF="node24.html#TUMINARO_TONG">23</A>]. WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img44.png"
ALT="$W_C$"> of <I>coarse vertices</I>,
with size <IMG
WIDTH="26" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img45.png"
ALT="$n_C$">, and a suitable restriction operator
<!-- MATH
$R_C \in \Re^{n_C \times n}$
-->
<IMG
WIDTH="101" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
SRC="img46.png"
ALT="$R_C \in \Re^{n_C \times n}$">, <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$"> is defined as
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
A_C=R_C A R_C^T
\end{displaymath}
-->
<P> <IMG
The prolongator <IMG WIDTH="109" HEIGHT="31" BORDER="0"
WIDTH="75" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" SRC="img47.png"
SRC="img75.png" ALT="\begin{displaymath}
ALT="$P_C=R_C^T$"> is built starting from a <I>tentative prolongator</I> A_C=R_C A R_C^T
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
and the coarse-level correction matrix to be combined with a generic
one-level AS preconditioner <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img48.png"
ALT="$M_{1L}$"> is obtained as
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH <!-- MATH
$P \in \Re^{n \times n_C}$ \begin{displaymath}
M_{C}^{-1}= R_C^T A_C^{-1} R_C,
\end{displaymath}
--> -->
<IMG <IMG
WIDTH="90" HEIGHT="38" ALIGN="MIDDLE" BORDER="0" WIDTH="144" HEIGHT="32" BORDER="0"
SRC="img76.png" SRC="img49.png"
ALT="$P \in \Re^{n \times n_C}$">, defined as ALT="\begin{displaymath}
<BR> M_{C}^{-1}= R_C^T A_C^{-1} R_C,
<DIV ALIGN="RIGHT"> \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$"> is assumed to be nonsingular. The application of <IMG
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img50.png"
ALT="$M_{C}^{-1}$">
to a vector <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$"> corresponds to a restriction, a solution and
a prolongation step; the solution step, involving the matrix <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$">,
may be carried out also approximately.
<P>
The combination of <IMG
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img51.png"
ALT="$M_{C}$"> and <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img48.png"
ALT="$M_{1L}$"> may be
performed in either an additive or a multiplicative framework.
In the former case, the <I>two-level additive</I> Schwarz preconditioner
is obtained:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH <!-- MATH
\begin{equation} \begin{displaymath}
P=(p_{ij}), \quad p_{ij}= M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.
\left\{ \begin{array}{ll} \end{displaymath}
1 & \quad \mbox{if} \; i \in V^j_C \\
0 & \quad \mbox{otherwise}
\end{array} \right. .
\end{equation}
--> -->
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:tent_prol"></A><IMG <IMG
WIDTH="290" HEIGHT="52" BORDER="0" WIDTH="166" HEIGHT="32" BORDER="0"
SRC="img77.png" SRC="img52.png"
ALT="\begin{displaymath} ALT="\begin{displaymath}
P=(p_{ij}), \quad p_{ij}= M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.
\left\{ \begin{array}{ll} \end{displaymath}">
1 &amp; \qu... </DIV>
...\in V^j_C \\ <BR CLEAR="ALL">
0 &amp; \quad \mbox{otherwise} <P></P>
\end{array} \right. . Applying <IMG
\end{displaymath}"></TD> WIDTH="59" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
<TD WIDTH=10 ALIGN="RIGHT"> SRC="img53.png"
(2)</TD></TR> ALT="$M_{2L-A}^{-1}$"> to a vector <IMG
</TABLE> WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
<BR CLEAR="ALL"></DIV><P></P> SRC="img21.png"
ALT="$v$"> within a Krylov solver
corresponds to applying <IMG
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img50.png"
ALT="$M_{C}^{-1}$">
and <IMG
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img54.png"
ALT="$M_{1L}^{-1}$"> to <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$"> independently and then summing up
the results.
<P>
In the multiplicative case, the combination can be
performed by first applying the smoother <IMG
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img54.png"
ALT="$M_{1L}^{-1}$"> and then
the coarse-level correction operator <IMG
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img50.png"
ALT="$M_{C}^{-1}$">:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
\begin{array}{l}
w = M_{1L}^{-1} v, \\
z = w + M_{C}^{-1} (v-Aw);
\end{array}
\end{displaymath}
-->
<IMG <IMG
WIDTH="27" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="177" HEIGHT="51" BORDER="0"
SRC="img78.png" SRC="img55.png"
ALT="$P_C$"> is obtained by ALT="\begin{displaymath}
applying to <IMG \begin{array}{l}
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" w = M_{1L}^{-1} v, \\
SRC="img79.png" z = w + M_{C}^{-1} (v-Aw);
ALT="$P$"> a smoother <!-- MATH \end{array}\end{displaymath}">
$S \in \Re^{n \times n}$ </DIV>
<BR CLEAR="ALL">
<P></P>
this corresponds to the following <I>two-level hybrid pre-smoothed</I>
Schwarz preconditioner:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
M_{2LH-PRE}^{-1} = M_{C}^{-1} + \left( I - M_{C}^{-1}A \right) M_{1L}^{-1}.
\end{displaymath}
--> -->
<IMG <IMG
WIDTH="78" HEIGHT="38" ALIGN="MIDDLE" BORDER="0" WIDTH="308" HEIGHT="33" BORDER="0"
SRC="img80.png" SRC="img56.png"
ALT="$S \in \Re^{n \times n}$">: ALT="\begin{displaymath}
<BR> M_{2LH-PRE}^{-1} = M_{C}^{-1} + \left( I - M_{C}^{-1}A \right) M_{1L}^{-1}.
<DIV ALIGN="RIGHT"> \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
On the other hand, by applying the smoother after the coarse-level correction,
i.e. by computing
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
\begin{array}{l}
w = M_{C}^{-1} v , \\
z = w + M_{1L}^{-1} (v-Aw) ,
\end{array}
\end{displaymath}
-->
<IMG
WIDTH="177" HEIGHT="51" BORDER="0"
SRC="img57.png"
ALT="\begin{displaymath}
\begin{array}{l}
w = M_{C}^{-1} v , \\
z = w + M_{1L}^{-1} (v-Aw) ,
\end{array}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
the <I>two-level hybrid post-smoothed</I>
Schwarz preconditioner is obtained:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH <!-- MATH
\begin{equation} \begin{displaymath}
P_C = S P, M_{2LH-POST}^{-1} = M_{1L}^{-1} + \left( I - M_{1L}^{-1}A \right) M_{C}^{-1}.
\end{equation} \end{displaymath}
--> -->
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:smoothed_prol"></A><IMG <IMG
WIDTH="73" HEIGHT="30" BORDER="0" WIDTH="317" HEIGHT="33" BORDER="0"
SRC="img81.png" SRC="img58.png"
ALT="\begin{displaymath} ALT="\begin{displaymath}
P_C = S P, M_{2LH-POST}^{-1} = M_{1L}^{-1} + \left( I - M_{1L}^{-1}A \right) M_{C}^{-1}.
\end{displaymath}"></TD> \end{displaymath}">
<TD WIDTH=10 ALIGN="RIGHT"> </DIV>
(3)</TD></TR> <BR CLEAR="ALL">
</TABLE> <P></P>
<BR CLEAR="ALL"></DIV><P></P> One more variant of two-level hybrid preconditioner is obtained by applying
in order to remove oscillatory components from the range of the prolongator the smoother before and after the coarse-level correction. In this case, the
and hence to improve the convergence properties of the multi-level preconditioner is symmetric if <IMG
Schwarz method [<A WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
HREF="node24.html#BREZINA_VANEK">1</A>,<A SRC="img2.png"
HREF="node24.html#StubenGMD69_99">22</A>]. ALT="$A$">, <IMG
A simple choice for <IMG WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img48.png"
SRC="img82.png" ALT="$M_{1L}$"> and <IMG
ALT="$S$"> is the damped Jacobi smoother: WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
<BR> SRC="img51.png"
<DIV ALIGN="RIGHT"> ALT="$M_{C}$"> are symmetric.
<P>
As previously noted, on parallel computers the number of submatrices usually matches
the number of available processors. When the size of the system to be preconditioned
is very large, the use of many processors, i.e. of many small submatrices, often
leads to a large coarse-level system, whose solution may be computationally expensive.
On the other hand, the use of few processors often leads to local sumatrices that
are too expensive to be processed on single processors, because of memory and/or
computing requirements. Therefore, it seems natural to use a recursive approach,
in which the coarse-level correction is re-applied starting from the current
coarse-level system. The corresponding preconditioners, called <I>multi-level</I>
preconditioners, can significantly reduce the computational cost of preconditioning
with respect to the two-level case (see [<A
HREF="node25.html#dd2_96">20</A>, Chapter 3]).
Additive and hybrid multilevel preconditioners
are obtained as direct extensions of the two-level counterparts.
For a detailed descrition of them, the reader is
referred to [<A
HREF="node25.html#dd2_96">20</A>, Chapter 3].
The algorithm for the application of a multi-level hybrid
post-smoothed preconditioner <IMG
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img59.png"
ALT="$M$"> to a vector <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$">, i.e. for the
computation of <IMG
WIDTH="87" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img60.png"
ALT="$w=M^{-1}v$">, is reported, for
example, in Figure&nbsp;<A HREF="#fig:mlhpost_alg">1</A>. Here the number of levels
is denoted by <IMG
WIDTH="37" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img61.png"
ALT="$nlev$"> and the levels are numbered in increasing order starting
from the finest one, i.e. the finest level is level 1; the coarse matrix
and the corresponding basic preconditioner at each level <IMG
WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img62.png"
ALT="$l$"> are denoted by <IMG
WIDTH="22" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img63.png"
ALT="$A_l$"> and
<IMG
WIDTH="27" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img64.png"
ALT="$M_l$">, respectively, with <IMG
WIDTH="61" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img65.png"
ALT="$A_1=A$">.
<DIV ALIGN="CENTER"><A NAME="fig:mlhpost_alg"></A><A NAME="508"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
Application of the multi-level hybrid post-smoothed preconditioner.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<!-- MATH <!-- MATH
\begin{equation} $\framebox{
S = I - \omega D^{-1} A , \begin{minipage}{.85\textwidth} {\small
\end{equation} \begin{tabbing}
\quad \=\quad \=\quad \=\quad \\[-1mm]
$v_1 = v$; \\[2mm]
\textbf{for $l=2, nlev$\ do}\\[1mm]
\> ! transfer $v_{l-1}$\ to the next coarser level\\
\> $v_l = R_lv_{l-1}$\ \\[1mm]
\textbf{endfor} \\[2mm]
! apply the coarsest-level correction\\[1mm]
$y_{nlev} = A_{nlev}^{-1} v_{nlev}$\\[2mm]
\textbf{for $l=nlev -1 , 1, -1$\ do}\\[1mm]
\> ! transfer $y_{l+1}$\ to the next finer level\\
\> $y_l = R_{l+1}^T y_{l+1}$;\\[1mm]
\> ! compute the residual at the current level\\
\> $r_l = v_l-A_l^{-1} y_l$;\\[1mm]
\> ! apply the basic Schwarz preconditioner to the residual\\
\> $r_l = M_l^{-1} r_l$\\[1mm]
\> ! update $y_l$\\
\> $y_l = y_l+r_l$\\
\textbf{endfor} \\[1mm]
$w = y_1$;
\end{tabbing}
}
\end{minipage}
}$
--> -->
<TABLE WIDTH="100%" ALIGN="CENTER"> <IMG
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:jac_smoother"></A><IMG WIDTH="430" HEIGHT="435" ALIGN="BOTTOM" BORDER="0"
WIDTH="126" HEIGHT="30" BORDER="0" SRC="img66.png"
SRC="img83.png" ALT="\framebox{
ALT="\begin{displaymath} \begin{minipage}{.85\textwidth} {\small
S = I - \omega D^{-1} A , \begin{tabbing}
\end{displaymath}"></TD> \quad \=\quad...
<TD WIDTH=10 ALIGN="RIGHT"> ...= y_l+r_l$\\
(4)</TD></TR> \textbf{endfor} [1mm]
$w = y_1$;
\end{tabbing}}
\end{minipage}}">
</DIV></TD></TR>
</TABLE> </TABLE>
<BR CLEAR="ALL"></DIV><P></P> </DIV>
where the value of <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$"> can be chosen
using some estimate of the spectral radius of <IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png"
ALT="$D^{-1}A$"> [<A
HREF="node24.html#BREZINA_VANEK">1</A>].
<P> <P>
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html204" <A NAME="tex2html209"
HREF="node13.html"> HREF="node13.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html200" <A NAME="tex2html205"
HREF="node10.html"> HREF="node11.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html196" <A NAME="tex2html199"
HREF="node11.html"> HREF="node11.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html202" <A NAME="tex2html207"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html205" <B> Next:</B> <A NAME="tex2html210"
HREF="node13.html">Getting Started</A> HREF="node13.html">Smoothed Aggregation</A>
<B> Up:</B> <A NAME="tex2html201" <B> Up:</B> <A NAME="tex2html206"
HREF="node10.html">Multi-level Domain Decomposition Background</A> HREF="node11.html">Multi-level Domain Decomposition Background</A>
<B> Previous:</B> <A NAME="tex2html197" <B> Previous:</B> <A NAME="tex2html200"
HREF="node11.html">Multi-level Schwarz Preconditioners</A> HREF="node11.html">Multi-level Domain Decomposition Background</A>
&nbsp; <B> <A NAME="tex2html203" &nbsp; <B> <A NAME="tex2html208"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Getting Started</TITLE> <TITLE>Smoothed Aggregation</TITLE>
<META NAME="description" CONTENT="Getting Started"> <META NAME="description" CONTENT="Smoothed Aggregation">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,228 +18,306 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node15.html"> <LINK REL="previous" HREF="node12.html">
<LINK REL="previous" HREF="node10.html"> <LINK REL="up" HREF="node11.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node14.html"> <LINK REL="next" HREF="node14.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html216" <A NAME="tex2html219"
HREF="node14.html"> HREF="node14.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html212" <A NAME="tex2html215"
HREF="userhtml.html"> HREF="node11.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html206" <A NAME="tex2html211"
HREF="node12.html"> HREF="node12.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html214" <A NAME="tex2html217"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html217" <B> Next:</B> <A NAME="tex2html220"
HREF="node14.html">Examples</A> HREF="node14.html">Getting Started</A>
<B> Up:</B> <A NAME="tex2html213" <B> Up:</B> <A NAME="tex2html216"
HREF="userhtml.html">userhtml</A> HREF="node11.html">Multi-level Domain Decomposition Background</A>
<B> Previous:</B> <A NAME="tex2html207" <B> Previous:</B> <A NAME="tex2html212"
HREF="node12.html">Smoothed Aggregation</A> HREF="node12.html">Multi-level Schwarz Preconditioners</A>
&nbsp; <B> <A NAME="tex2html215" &nbsp; <B> <A NAME="tex2html218"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:started"></A> <H2><A NAME="SECTION00062000000000000000"></A><A NAME="sec:aggregation"></A>
<BR> <BR>
Getting Started Smoothed Aggregation
</H1> </H2>
<P> <P>
We describe the basics for building and applying MLD2P4 one-level and multi-level In order to define the restriction operator <IMG
Schwarz preconditioners with the Krylov solvers included in PSBLAS [<A WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
HREF="node24.html#PSBLASGUIDE">14</A>]. SRC="img67.png"
The following steps are required: ALT="$R_C$">, which is used to compute
the coarse-level matrix <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$">, MLD2P4 uses the <I>smoothed aggregation</I>
algorithm described in [<A
HREF="node25.html#BREZINA_VANEK">1</A>,<A
HREF="node25.html#VANEK_MANDEL_BREZINA">24</A>].
The basic idea of this algorithm is to build a coarse set of vertices
<IMG
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img44.png"
ALT="$W_C$"> by suitably grouping the vertices of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png"
ALT="$W$"> into disjoint subsets
(aggregates), and to define the coarse-to-fine space transfer operator <IMG
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img68.png"
ALT="$R_C^T$"> by
applying a suitable smoother to a simple piecewise constant
prolongation operator, to improve the quality of the coarse-space correction.
<P>
Three main steps can be identified in the smoothed aggregation procedure:
<OL> <OL>
<LI><I>Declare the preconditioner data structure</I>. It is a derived data type, <LI>coarsening of the vertex set <IMG
<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> WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
or <code>z</code>, according to the basic data type of the sparse matrix SRC="img10.png"
(<code>s</code> = real single precision; <code>d</code> = real double precision; ALT="$W$">, to obtain <IMG
<code>c</code> = complex single precision; <code>z</code> = complex double precision). WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
This data structure is accessed by the user only through the MLD2P4 routines, SRC="img44.png"
following an object-oriented approach. ALT="$W_C$">;
</LI>
<LI><I>Allocate and initialize the preconditioner data structure, according to
a preconditioner type chosen by the user</I>. This is performed by the routine
<code>mld_precinit</code>, which also sets defaults for each preconditioner
type selected by the user. The defaults associated to each preconditioner
type are given in Table&nbsp;<A HREF="#tab:precinit">1</A>, where the strings used by
<code>mld_precinit</code> to identify the preconditioner types are also given.
Note that these strings are valid also if uppercase letters are substituted by
corresponding lowercase ones.
</LI>
<LI><I>Modify the selected preconditioner type, by properly setting
preconditioner parameters.</I> This is performed by the routine <code>mld_precset</code>.
This routine must be called only if the user wants to modify the default values
of the parameters associated to the selected preconditioner type, to obtain a variant
of the preconditioner. Examples of use of <code>mld_precset</code> are given in
Section&nbsp;<A HREF="node14.html#sec:examples">5.1</A>; a complete list of all the
preconditioner parameters and their allowed and default values is provided in
Section&nbsp;<A HREF="node15.html#sec:userinterface">6</A>, Tables&nbsp;<A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
</LI> </LI>
<LI><I>Build the preconditioner for a given matrix.</I> This is performed by <LI>construction of the prolongator <IMG
the routine <code>mld_precbld</code>. WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img68.png"
ALT="$R_C^T$">;
</LI> </LI>
<LI><I>Apply the preconditioner at each iteration of a Krylov solver.</I> <LI>application of <IMG
This is performed by the routine <code>mld_precaply</code>. When using the PSBLAS Krylov solvers, WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
this step is completely transparent to the user, since <code>mld_precaply</code> is called SRC="img67.png"
by the PSBLAS routine implementing the Krylov solver (<code>psb_krylov</code>). ALT="$R_C$"> and <IMG
</LI> WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
<LI><I>Free the preconditioner data structure</I>. This is performed by SRC="img68.png"
the routine <code>mld_</code> <code>precfree</code>. This step is complementary to step 1 and should ALT="$R_C^T$"> to build <IMG
be performed when the preconditioner is no more used. WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png"
ALT="$A_C$">.
</LI> </LI>
</OL> </OL>
A detailed description of the above routines is given in Section&nbsp;<A HREF="node15.html#sec:userinterface">6</A>.
Examples showing the basic use of MLD2P4 are reported in Section&nbsp;<A HREF="node14.html#sec:examples">5.1</A>.
<P> <P>
Note that the Fortran 95 module <code>mld_prec_mod</code>, containing the definition of the To perform the coarsening step, we have implemented the aggregation algorithm sketched
preconditioner data type and the interfaces to the routines of MLD2P4, in [<A
must be used in any program calling such routines. HREF="node25.html#apnum_07">4</A>]. According to [<A
The modules <code>psb_base_mod</code>, for the sparse matrix and communication descriptor HREF="node25.html#VANEK_MANDEL_BREZINA">24</A>], a modification of
data types, and <code>psb_krylov_mod</code>, for interfacing with the this algorithm has been actually considered,
Krylov solvers, must be also used (see Section&nbsp;<A HREF="node14.html#sec:examples">5.1</A>). in which each aggregate <IMG
WIDTH="26" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img69.png"
ALT="$N_r$"> is made of vertices of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png"
ALT="$W$"> that are <I>strongly coupled</I>
to a certain root vertex <IMG
WIDTH="53" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img70.png"
ALT="$r \in W$">, i.e. <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
N_r = \left\{s \in W: |a_{rs}| > \theta \sqrt{|a_{rr}a_{ss}|} \right\}
\cup \left\{ r \right\} ,
\end{displaymath}
-->
<P> <IMG
WIDTH="319" HEIGHT="38" BORDER="0"
<BR><B>Remark 1.</B> The coarsest-level solver used by the default two-level SRC="img71.png"
preconditioner has been chosen by taking into account that, on parallel ALT="\begin{displaymath}N_r = \left\{s \in W: \vert a_{rs}\vert &gt; \theta \sqrt{\vert a_{rr}a_{ss}\vert} \right\}
machines, it often leads to the smallest execution time when applied to \cup \left\{ r \right\} ,
linear systems coming from finite-difference discretizations of basic \end{displaymath}">
elliptic PDE problems, considered as standard tests for multi-level Schwarz </DIV>
preconditioners [<A <BR CLEAR="ALL">
HREF="node24.html#aaecc_07">3</A>,<A <P></P>
HREF="node24.html#apnum_07">4</A>]. However, this solver does for a given <!-- MATH
not necessarily correspond to the smallest number of iterations of the $\theta \in [0,1]$
preconditioned Krylov method, which is usually obtained by applying -->
a direct solver to the coarsest-level system, e.g. based on the LU <IMG
factorization (see Section&nbsp;<A HREF="node15.html#sec:userinterface">6</A> WIDTH="69" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
for the coarsest-level solvers available in MLD2P4). SRC="img72.png"
ALT="$\theta \in [0,1]$">.
Since this algorithm has a sequential nature, a <I>decoupled</I> version of
it has been chosen, where each processor <IMG
WIDTH="10" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img73.png"
ALT="$i$"> independently applies the algorithm to
the set of vertices <IMG
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img74.png"
ALT="$W_i^0$"> assigned to it in the initial data distribution. This
version is embarrassingly parallel, since it does not require any data communication.
On the other hand, it may produce non-uniform aggregates near boundary vertices,
i.e. near vertices adjacent to vertices in other processors, and is strongly
dependent on the number of processors and on the initial partitioning of the matrix <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png"
ALT="$A$">.
Nevertheless, this algorithm has been chosen for the implementation in MLD2P4,
since it has been shown to produce good results in practice
[<A
HREF="node25.html#aaecc_07">3</A>,<A
HREF="node25.html#apnum_07">4</A>,<A
HREF="node25.html#TUMINARO_TONG">23</A>].
<P> <P>
The prolongator <IMG
<BR><B>Remark 2.</B> The include path for MLD2P4 must override WIDTH="75" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
those for PSBLAS, e.g. the latter must come first in the sequence SRC="img75.png"
passed to the compiler, as the MLD2P4 version of the Krylov solver ALT="$P_C=R_C^T$"> is built starting from a <I>tentative prolongator</I>
interfaces must override that of PSBLAS. This will change in the future <!-- MATH
when the support for the <code>class</code> statement becomes widespread in Fortran $P \in \Re^{n \times n_C}$
compilers. -->
<IMG
WIDTH="90" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
SRC="img76.png"
ALT="$P \in \Re^{n \times n_C}$">, defined as
<BR>
<DIV ALIGN="RIGHT">
<P> <!-- MATH
<BR><P></P> \begin{equation}
<DIV ALIGN="CENTER"><A NAME="923"></A> P=(p_{ij}), \quad p_{ij}=
<TABLE> \left\{ \begin{array}{ll}
<CAPTION><STRONG>Table 1:</STRONG> 1 & \quad \mbox{if} \; i \in V^j_C \\
Preconditioner types, corresponding strings and default choices. 0 & \quad \mbox{otherwise}
</CAPTION> \end{array} \right. .
<TR><TD> \end{equation}
<DIV ALIGN="CENTER"> -->
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER"> <TABLE WIDTH="100%" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><SMALL>TYPE</SMALL></TD> <TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:tent_prol"></A><IMG
<TD ALIGN="LEFT"><SMALL>STRING</SMALL></TD> WIDTH="290" HEIGHT="52" BORDER="0"
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221><SMALL>DEFAULT PRECONDITIONER</SMALL></TD> SRC="img77.png"
</TR> ALT="\begin{displaymath}
<TR><TD ALIGN="LEFT">No preconditioner</TD> P=(p_{ij}), \quad p_{ij}=
<TD ALIGN="LEFT"><code>'NOPREC'</code></TD> \left\{ \begin{array}{ll}
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Considered only to use the PSBLAS 1 &amp; \qu...
Krylov solvers with no preconditioner.</TD> ...\in V^j_C \\
</TR> 0 &amp; \quad \mbox{otherwise}
<TR><TD ALIGN="LEFT">Diagonal</TD> \end{array} \right. .
<TD ALIGN="LEFT"><code>'DIAG'</code></TD> \end{displaymath}"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>--</TD> <TD WIDTH=10 ALIGN="RIGHT">
</TR> (2)</TD></TR>
<TR><TD ALIGN="LEFT">Block Jacobi</TD>
<TD ALIGN="LEFT"><code>'BJAC'</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Block Jacobi with ILU(0) on the local blocks.</TD>
</TR>
<TR><TD ALIGN="LEFT">Additive Schwarz</TD>
<TD ALIGN="LEFT"><code>'AS'</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Restricted Additive Schwarz (RAS),
with overlap 1 and ILU(0) on the local blocks.</TD>
</TR>
<TR><TD ALIGN="LEFT">Multilevel</TD>
<TD ALIGN="LEFT"><code>'ML'</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Multi-level hybrid preconditioner (additive on the
same level and multiplicative through the levels),
with post-smoothing only.
Number of levels: 2.
Post-smoother: RAS with overlap 1 and ILU(0)
on the local blocks.
Aggregation: decoupled smoothed aggregation with
threshold <IMG
WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img86.png"
ALT="$\theta = 0$">.
Coarsest matrix: distributed among the processors.
Coarsest-level solver:
4 sweeps of the block-Jacobi solver,
with LU (or ILU) factorization of the blocks
(UMFPACK for the double precision versions and
SuperLU for the single precision ones, if the packages
have been installed; ILU(0), otherwise).</TD>
</TR>
</TABLE> </TABLE>
</DIV> <BR CLEAR="ALL"></DIV><P></P>
<IMG
WIDTH="27" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img78.png"
ALT="$P_C$"> is obtained by
applying to <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img79.png"
ALT="$P$"> a smoother <!-- MATH
$S \in \Re^{n \times n}$
-->
<IMG
WIDTH="78" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
SRC="img80.png"
ALT="$S \in \Re^{n \times n}$">:
<BR>
<DIV ALIGN="RIGHT">
<P> <!-- MATH
</TD></TR> \begin{equation}
P_C = S P,
\end{equation}
-->
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:smoothed_prol"></A><IMG
WIDTH="73" HEIGHT="30" BORDER="0"
SRC="img81.png"
ALT="\begin{displaymath}
P_C = S P,
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(3)</TD></TR>
</TABLE> </TABLE>
</DIV><P></P> <BR CLEAR="ALL"></DIV><P></P>
in order to remove oscillatory components from the range of the prolongator
and hence to improve the convergence properties of the multi-level
Schwarz method [<A
HREF="node25.html#BREZINA_VANEK">1</A>,<A
HREF="node25.html#StubenGMD69_99">22</A>].
A simple choice for <IMG
WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img82.png"
ALT="$S$"> is the damped Jacobi smoother:
<BR> <BR>
<DIV ALIGN="RIGHT">
<!-- MATH
\begin{equation}
S = I - \omega D^{-1} A ,
\end{equation}
-->
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:jac_smoother"></A><IMG
WIDTH="126" HEIGHT="30" BORDER="0"
SRC="img83.png"
ALT="\begin{displaymath}
S = I - \omega D^{-1} A ,
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(4)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P>
where the value of <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$"> can be chosen
using some estimate of the spectral radius of <IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png"
ALT="$D^{-1}A$"> [<A
HREF="node25.html#BREZINA_VANEK">1</A>].
<P> <P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html218"
HREF="node14.html">Examples</A>
</UL>
<!--End of Table of Child-Links-->
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html216" <A NAME="tex2html219"
HREF="node14.html"> HREF="node14.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html212" <A NAME="tex2html215"
HREF="userhtml.html"> HREF="node11.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html206" <A NAME="tex2html211"
HREF="node12.html"> HREF="node12.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html214" <A NAME="tex2html217"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html217" <B> Next:</B> <A NAME="tex2html220"
HREF="node14.html">Examples</A> HREF="node14.html">Getting Started</A>
<B> Up:</B> <A NAME="tex2html213" <B> Up:</B> <A NAME="tex2html216"
HREF="userhtml.html">userhtml</A> HREF="node11.html">Multi-level Domain Decomposition Background</A>
<B> Previous:</B> <A NAME="tex2html207" <B> Previous:</B> <A NAME="tex2html212"
HREF="node12.html">Smoothed Aggregation</A> HREF="node12.html">Multi-level Schwarz Preconditioners</A>
&nbsp; <B> <A NAME="tex2html215" &nbsp; <B> <A NAME="tex2html218"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Examples</TITLE> <TITLE>Getting Started</TITLE>
<META NAME="description" CONTENT="Examples"> <META NAME="description" CONTENT="Getting Started">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,309 +18,228 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node13.html"> <LINK REL="next" HREF="node16.html">
<LINK REL="up" HREF="node13.html"> <LINK REL="previous" HREF="node11.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node15.html"> <LINK REL="next" HREF="node15.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html227" <A NAME="tex2html231"
HREF="node15.html"> HREF="node15.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html223" <A NAME="tex2html227"
HREF="node13.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html219" <A NAME="tex2html221"
HREF="node13.html"> HREF="node13.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html225" <A NAME="tex2html229"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html228" <B> Next:</B> <A NAME="tex2html232"
HREF="node15.html">User Interface</A> HREF="node15.html">Examples</A>
<B> Up:</B> <A NAME="tex2html224" <B> Up:</B> <A NAME="tex2html228"
HREF="node13.html">Getting Started</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html220" <B> Previous:</B> <A NAME="tex2html222"
HREF="node13.html">Getting Started</A> HREF="node13.html">Smoothed Aggregation</A>
&nbsp; <B> <A NAME="tex2html226" &nbsp; <B> <A NAME="tex2html230"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION00071000000000000000"></A><A NAME="sec:examples"></A> <H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:started"></A>
<BR> <BR>
Examples Getting Started
</H2> </H1>
<P>
The code reported in Figure&nbsp;<A HREF="#fig:ex_default">2</A> shows how to set and apply the default
multi-level preconditioner available in the real double precision version
of MLD2P4 (see Table&nbsp;<A HREF="#tab:precinit">1</A>). This preconditioner is chosen
by simply specifying <code>'ML'</code> as second argument of <code>mld_precinit</code>
(a call to <code>mld_precset</code> is not needed) and is applied with the BiCGSTAB
solver provided by PSBLAS. 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.
<P>
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
data structure are neglected too.
The complete code can be found in the example program file <code>mld_dexample_ml.f90</code>,
in the directory <code>examples/fileread</code> of the MLD2P4 tree (see
Section&nbsp;<A HREF="node9.html#sec:ex_and_test">3.4</A>).
For details on the use of the PSBLAS routines, see the PSBLAS User's
Guide [<A
HREF="node24.html#PSBLASGUIDE">14</A>].
<P>
The setup and application of the default multi-level
preconditioners for the real single precision and the complex, single and double
precision, versions are obtained with straightforward modifications of the previous
example (see Section&nbsp;<A HREF="node15.html#sec:userinterface">6</A> for details). If these versions are installed,
the corresponding Fortran 95 codes are available in <code>examples/fileread/</code>.
<P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_default"></A><A NAME="926"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
Setup and application of the default multi-level Schwarz preconditioner.
</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
use psb_base_mod
use mld_prec_mod
use psb_krylov_mod
... ...
!
! sparse matrix
type(psb_dspmat_type) :: A
! sparse matrix descriptor
type(psb_desc_type) :: desc_A
! preconditioner
type(mld_dprec_type) :: P
! right-hand side and solution vectors
real(kind(1.d0)) :: b(:), x(:)
... ...
!
! initialize the parallel environment
call psb_init(ictxt)
call psb_info(ictxt,iam,np)
... ...
!
! read and assemble the matrix A and the right-hand side b
! using PSBLAS routines for sparse matrix / vector management
... ...
!
! initialize the default multi-level preconditioner, i.e. hybrid
! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks)
! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU
! on the blocks) as distributed coarse-level solver
call mld_precinit(P,'ML',info)
!
! build the preconditioner
call mld_precbld(A,desc_A,P,info)
!
! set the solver parameters and the initial guess
... ...
!
! solve Ax=b with preconditioned BiCGSTAB
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
... ...
!
! deallocate the preconditioner
call mld_precfree(P,info)
!
! deallocate other data structures
... ...
!
! exit the parallel environment
call psb_exit(ictxt)
stop
</PRE>
</TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV></TD></TR>
</TABLE>
</DIV>
<P> <P>
Different versions of multi-level preconditioners can be obtained by changing We describe the basics for building and applying MLD2P4 one-level and multi-level
the default values of the preconditioner parameters. The code reported in Schwarz preconditioners with the Krylov solvers included in PSBLAS [<A
Figure&nbsp;<A HREF="#fig:ex_3lh">3</A> shows how to set a three-level hybrid Schwarz HREF="node25.html#PSBLASGUIDE">14</A>].
preconditioner, which uses block Jacobi with ILU(0) on the The following steps are required:
local blocks as post-smoother, has a coarsest matrix replicated on the processors,
and solves the coarsest-level system with the LU factorization from UMFPACK&nbsp;[<A <OL>
HREF="node24.html#UMFPACK">8</A>]. <LI><I>Declare the preconditioner data structure</I>. It is a derived data type,
The number of levels is specified by using <code>mld_precinit</code>; the other <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>
preconditioner parameters are set by calling <code>mld_precset</code>. Note that or <code>z</code>, according to the basic data type of the sparse matrix
the type of multilevel framework (i.e. multiplicative among the levels (<code>s</code> = real single precision; <code>d</code> = real double precision;
with post-smoothing only) is not specified since it is the default <code>c</code> = complex single precision; <code>z</code> = complex double precision).
set by <code>mld_precinit</code>. This data structure is accessed by the user only through the MLD2P4 routines,
following an object-oriented approach.
</LI>
<LI><I>Allocate and initialize the preconditioner data structure, according to
a preconditioner type chosen by the user</I>. This is performed by the routine
<code>mld_precinit</code>, which also sets defaults for each preconditioner
type selected by the user. The defaults associated to each preconditioner
type are given in Table&nbsp;<A HREF="#tab:precinit">1</A>, where the strings used by
<code>mld_precinit</code> to identify the preconditioner types are also given.
Note that these strings are valid also if uppercase letters are substituted by
corresponding lowercase ones.
</LI>
<LI><I>Modify the selected preconditioner type, by properly setting
preconditioner parameters.</I> This is performed by the routine <code>mld_precset</code>.
This routine must be called only if the user wants to modify the default values
of the parameters associated to the selected preconditioner type, to obtain a variant
of the preconditioner. Examples of use of <code>mld_precset</code> are given in
Section&nbsp;<A HREF="node15.html#sec:examples">5.1</A>; a complete list of all the
preconditioner parameters and their allowed and default values is provided in
Section&nbsp;<A HREF="node16.html#sec:userinterface">6</A>, Tables&nbsp;<A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
</LI>
<LI><I>Build the preconditioner for a given matrix.</I> This is performed by
the routine <code>mld_precbld</code>.
</LI>
<LI><I>Apply the preconditioner at each iteration of a Krylov solver.</I>
This is performed by the routine <code>mld_precaply</code>. When using the PSBLAS Krylov solvers,
this step is completely transparent to the user, since <code>mld_precaply</code> is called
by the PSBLAS routine implementing the Krylov solver (<code>psb_krylov</code>).
</LI>
<LI><I>Free the preconditioner data structure</I>. This is performed by
the routine <code>mld_</code> <code>precfree</code>. This step is complementary to step 1 and should
be performed when the preconditioner is no more used.
</LI>
</OL>
A detailed description of the above routines is given in Section&nbsp;<A HREF="node16.html#sec:userinterface">6</A>.
Examples showing the basic use of MLD2P4 are reported in Section&nbsp;<A HREF="node15.html#sec:examples">5.1</A>.
<P> <P>
Figure&nbsp;<A HREF="#fig:ex_3la">4</A> shows how to Note that the Fortran 95 module <code>mld_prec_mod</code>, containing the definition of the
set a three-level additive Schwarz preconditioner, preconditioner data type and the interfaces to the routines of MLD2P4,
which uses RAS, with overlap 1 and ILU(0) on the blocks, must be used in any program calling such routines.
as pre- and post-smoother, and applies five block-Jacobi sweeps, with The modules <code>psb_base_mod</code>, for the sparse matrix and communication descriptor
the UMFPACK LU factorization on the blocks, as distributed coarsest-level data types, and <code>psb_krylov_mod</code>, for interfacing with the
solver. Again, <code>mld_precset</code> is used only to set Krylov solvers, must be also used (see Section&nbsp;<A HREF="node15.html#sec:examples">5.1</A>).
non-default values of the parameters (see Tables&nbsp;<A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>).
In both cases, the construction and the application of the preconditioner
are carried out as for the default multi-level preconditioner.
The code fragments shown in in Figures&nbsp;<A HREF="#fig:ex_3lh">3</A>-<A HREF="#fig:ex_3la">4</A> are
included in the example program file <code>mld_dexample_ml.f90</code> too.
<P>
Finally, Figure&nbsp;<A HREF="#fig:ex_1l">5</A> shows the setup of a one-level
additive Schwarz preconditioner, i.e. RAS with overlap 2. The corresponding
example program is available in <code>mld_dexample_</code> <code>1lev.f90</code>.
<P>
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>.
<P> <P>
<BR><B>Remark 3.</B> Any PSBLAS-based program using the basic preconditioners <BR><B>Remark 1.</B> The coarsest-level solver used by the default two-level
implemented in PSBLAS 2.0, i.e. the diagonal and block-Jacobi ones, preconditioner has been chosen by taking into account that, on parallel
can use the diagonal and block-Jacobi preconditioners machines, it often leads to the smallest execution time when applied to
implemented in MLD2P4 without any change in the code. linear systems coming from finite-difference discretizations of basic
The PSBLAS-based program must be only recompiled elliptic PDE problems, considered as standard tests for multi-level Schwarz
and linked to the MLD2P4 library. preconditioners [<A
HREF="node25.html#aaecc_07">3</A>,<A
HREF="node25.html#apnum_07">4</A>]. However, this solver does
not necessarily correspond to the smallest number of iterations of the
preconditioned Krylov method, which is usually obtained by applying
a direct solver to the coarsest-level system, e.g. based on the LU
factorization (see Section&nbsp;<A HREF="node16.html#sec:userinterface">6</A>
for the coarsest-level solvers available in MLD2P4).
<BR>
<P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_3lh"></A><A NAME="928"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
Setup of a hybrid three-level Schwarz preconditioner.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
... ...
! set a three-level hybrid Schwarz preconditioner, which uses
! block Jacobi (with ILU(0) on the blocks) as post-smoother,
! a coarsest matrix replicated on the processors, and the
! LU factorization from UMFPACK as coarse-level solver
call mld_precinit(P,'ML',info,nlev=3)
call_mld_precset(P,mld_smoother_type_,'BJAC',info)
call mld_precset(P,mld_coarse_mat_,'REPL',info)
call mld_precset(P,mld_coarse_solve_,'UMF',info)
... ...
</PRE>
</TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV>
<P> <P>
<DIV ALIGN="CENTER">
</DIV></TD></TR> <BR><B>Remark 2.</B> The include path for MLD2P4 must override
</TABLE> those for PSBLAS, e.g. the latter must come first in the sequence
</DIV> passed to the compiler, as the MLD2P4 version of the Krylov solver
interfaces must override that of PSBLAS. This will change in the future
when the support for the <code>class</code> statement becomes widespread in Fortran
compilers.
<P> <P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_3la"></A><A NAME="930"></A> <DIV ALIGN="CENTER"><A NAME="923"></A>
<TABLE> <TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG> <CAPTION><STRONG>Table 1:</STRONG>
Setup of an additive three-level Schwarz preconditioner.</CAPTION> Preconditioner types, corresponding strings and default choices.
</CAPTION>
<TR><TD> <TR><TD>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="90%"> <TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD> <TR><TD ALIGN="LEFT"><SMALL>TYPE</SMALL></TD>
<PRE> <TD ALIGN="LEFT"><SMALL>STRING</SMALL></TD>
... ... <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221><SMALL>DEFAULT PRECONDITIONER</SMALL></TD>
! set a three-level additive Schwarz preconditioner, which uses </TR>
! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and <TR><TD ALIGN="LEFT">No preconditioner</TD>
! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU <TD ALIGN="LEFT"><code>'NOPREC'</code></TD>
! on the blocks) as distributed coarsest-level solver <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Considered only to use the PSBLAS
call mld_precinit(P,'ML',info,nlev=3) Krylov solvers with no preconditioner.</TD>
call mld_precset(P,mld_ml_type_,'ADD',info) </TR>
call_mld_precset(P,mld_smoother_pos_,'TWOSIDE',info) <TR><TD ALIGN="LEFT">Diagonal</TD>
call mld_precset(P,mld_coarse_sweeps_,5,info) <TD ALIGN="LEFT"><code>'DIAG'</code></TD>
... ... <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>--</TD>
</PRE> </TR>
</TD></TR> <TR><TD ALIGN="LEFT">Block Jacobi</TD>
</TABLE> <TD ALIGN="LEFT"><code>'BJAC'</code></TD>
<DIV ALIGN="CENTER"> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Block Jacobi with ILU(0) on the local blocks.</TD>
</DIV> </TR>
<P> <TR><TD ALIGN="LEFT">Additive Schwarz</TD>
<DIV ALIGN="CENTER"> <TD ALIGN="LEFT"><code>'AS'</code></TD>
</DIV></TD></TR> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Restricted Additive Schwarz (RAS),
with overlap 1 and ILU(0) on the local blocks.</TD>
</TR>
<TR><TD ALIGN="LEFT">Multilevel</TD>
<TD ALIGN="LEFT"><code>'ML'</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Multi-level hybrid preconditioner (additive on the
same level and multiplicative through the levels),
with post-smoothing only.
Number of levels: 2.
Post-smoother: RAS with overlap 1 and ILU(0)
on the local blocks.
Aggregation: decoupled smoothed aggregation with
threshold <IMG
WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img86.png"
ALT="$\theta = 0$">.
Coarsest matrix: distributed among the processors.
Coarsest-level solver:
4 sweeps of the block-Jacobi solver,
with LU (or ILU) factorization of the blocks
(UMFPACK for the double precision versions and
SuperLU for the single precision ones, if the packages
have been installed; ILU(0), otherwise).</TD>
</TR>
</TABLE> </TABLE>
</DIV> </DIV>
<P> <P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_1l"></A><A NAME="932"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
Setup of a one-level Schwarz preconditioner.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
... ...
! set RAS with overlap 2 and ILU(0) on the local blocks
call mld_precinit(P,'AS',info)
call mld_precset(P,mld_sub_ovr_,2,info)
... ...
</PRE>
</TD></TR> </TD></TR>
</TABLE> </TABLE>
<DIV ALIGN="CENTER"> </DIV><P></P>
<BR>
</DIV></TD></TR>
</TABLE>
</DIV>
<P> <P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html233"
HREF="node15.html">Examples</A>
</UL>
<!--End of Table of Child-Links-->
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html227" <A NAME="tex2html231"
HREF="node15.html"> HREF="node15.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html223" <A NAME="tex2html227"
HREF="node13.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html219" <A NAME="tex2html221"
HREF="node13.html"> HREF="node13.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html225" <A NAME="tex2html229"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html228" <B> Next:</B> <A NAME="tex2html232"
HREF="node15.html">User Interface</A> HREF="node15.html">Examples</A>
<B> Up:</B> <A NAME="tex2html224" <B> Up:</B> <A NAME="tex2html228"
HREF="node13.html">Getting Started</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html220" <B> Previous:</B> <A NAME="tex2html222"
HREF="node13.html">Getting Started</A> HREF="node13.html">Smoothed Aggregation</A>
&nbsp; <B> <A NAME="tex2html226" &nbsp; <B> <A NAME="tex2html230"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>User Interface</TITLE> <TITLE>Examples</TITLE>
<META NAME="description" CONTENT="User Interface"> <META NAME="description" CONTENT="Examples">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,147 +18,309 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node22.html"> <LINK REL="previous" HREF="node14.html">
<LINK REL="previous" HREF="node13.html"> <LINK REL="up" HREF="node14.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node16.html"> <LINK REL="next" HREF="node16.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html239" <A NAME="tex2html242"
HREF="node16.html"> HREF="node16.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html235" <A NAME="tex2html238"
HREF="userhtml.html"> HREF="node14.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html229" <A NAME="tex2html234"
HREF="node14.html"> HREF="node14.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html237" <A NAME="tex2html240"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html240" <B> Next:</B> <A NAME="tex2html243"
HREF="node16.html">Subroutine mld_precinit</A> HREF="node16.html">User Interface</A>
<B> Up:</B> <A NAME="tex2html236" <B> Up:</B> <A NAME="tex2html239"
HREF="userhtml.html">userhtml</A> HREF="node14.html">Getting Started</A>
<B> Previous:</B> <A NAME="tex2html230" <B> Previous:</B> <A NAME="tex2html235"
HREF="node14.html">Examples</A> HREF="node14.html">Getting Started</A>
&nbsp; <B> <A NAME="tex2html238" &nbsp; <B> <A NAME="tex2html241"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H1><A NAME="SECTION00080000000000000000"></A><A NAME="sec:userinterface"></A> <H2><A NAME="SECTION00071000000000000000"></A><A NAME="sec:examples"></A>
<BR> <BR>
User Interface Examples
</H1> </H2>
<P>
The code reported in Figure&nbsp;<A HREF="#fig:ex_default">2</A> shows how to set and apply the default
multi-level preconditioner available in the real double precision version
of MLD2P4 (see Table&nbsp;<A HREF="#tab:precinit">1</A>). This preconditioner is chosen
by simply specifying <code>'ML'</code> as second argument of <code>mld_precinit</code>
(a call to <code>mld_precset</code> is not needed) and is applied with the BiCGSTAB
solver provided by PSBLAS. 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.
<P>
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
data structure are neglected too.
The complete code can be found in the example program file <code>mld_dexample_ml.f90</code>,
in the directory <code>examples/fileread</code> of the MLD2P4 tree (see
Section&nbsp;<A HREF="node10.html#sec:ex_and_test">3.5</A>).
For details on the use of the PSBLAS routines, see the PSBLAS User's
Guide [<A
HREF="node25.html#PSBLASGUIDE">14</A>].
<P> <P>
The basic user interface of MLD2P4 consists of six routines. The four routines <code>mld_</code> <code>precinit</code>, The setup and application of the default multi-level
<code>mld_precset</code>, <code>mld_precbld</code> and <code>mld_precaply</code> encapsulate all the functionalities preconditioners for the real single precision and the complex, single and double
for the setup and the application of any one-level and multi-level precision, versions are obtained with straightforward modifications of the previous
preconditioner implemented in the package. example (see Section&nbsp;<A HREF="node16.html#sec:userinterface">6</A> for details). If these versions are installed,
The routine <code>mld_precfree</code> deallocates the preconditioner data structure, while the corresponding Fortran 95 codes are available in <code>examples/fileread/</code>.
<code>mld_precdescr</code> prints a description of the preconditioner setup by the user.
<P> <P>
For each routine, the same user interface is overloaded with
respect to the real/complex case and the single/double precision; <DIV ALIGN="CENTER"><A NAME="fig:ex_default"></A><A NAME="926"></A>
arguments with appropriate data types must be passed to the routine, <TABLE>
i.e. <CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
Setup and application of the default multi-level Schwarz preconditioner.
<UL> </CAPTION>
<LI>the sparse matrix data structure, containing the matrix to be <TR><TD>
preconditioned, must be of type <code>mld_</code><I>x</I><code>spmat_type</code> <DIV ALIGN="CENTER">
with <I>x</I> = <code>s</code> for real single precision, <I>x</I> = <code>d</code> </DIV><TABLE WIDTH="90%">
for real double precision, <I>x</I> = <code>c</code> for complex single precision, <TR><TD>
<I>x</I> = <code>z</code> for complex double precision; <PRE>
</LI> use psb_base_mod
<LI>the preconditioner data structure must be of type use mld_prec_mod
<code>mld_</code><I>x</I><code>prec_type</code>, with <I>x</I> = use psb_krylov_mod
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, according to the sparse ... ...
matrix data structure; !
</LI> ! sparse matrix
<LI>the arrays containing the vectors <IMG type(psb_dspmat_type) :: A
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" ! sparse matrix descriptor
SRC="img21.png" type(psb_desc_type) :: desc_A
ALT="$v$"> and <IMG ! preconditioner
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" type(mld_dprec_type) :: P
SRC="img87.png" ! right-hand side and solution vectors
ALT="$w$"> involved in real(kind(1.d0)) :: b(:), x(:)
the preconditioner application <IMG ... ...
WIDTH="87" HEIGHT="21" ALIGN="BOTTOM" BORDER="0" !
SRC="img60.png" ! initialize the parallel environment
ALT="$w=M^{-1}v$"> must be of type call psb_init(ictxt)
<I>type</I><code>(</code><I>kind_parameter</I><code>)</code>, with <I>type</I> = call psb_info(ictxt,iam,np)
<code>real</code>, <code>complex</code> and <I>kind_parameter</I> = <code>kind(1.e0)</code>, ... ...
<code>kind(1.d0)</code>, according to the sparse matrix and preconditioner !
data structure; note that the PSBLAS module <code>psb_base_mod</code> ! read and assemble the matrix A and the right-hand side b
provides the constants <code>psb_spk_</code> ! using PSBLAS routines for sparse matrix / vector management
= <code>kind(1.e0)</code> and <code>psb_dpk_</code> = <code>kind(1.d0)</code>; ... ...
</LI> !
<LI>real parameters defining the preconditioner must be declared ! initialize the default multi-level preconditioner, i.e. hybrid
according to the precision of the sparse matrix and preconditioner ! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks)
data structures (see Section&nbsp;<A HREF="node17.html#sec:precset">6.2</A>). ! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU
</LI> ! on the blocks) as distributed coarse-level solver
</UL> call mld_precinit(P,'ML',info)
A description of each routine is given in the remainder of this section. !
! build the preconditioner
call mld_precbld(A,desc_A,P,info)
!
! set the solver parameters and the initial guess
... ...
!
! solve Ax=b with preconditioned BiCGSTAB
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
... ...
!
! deallocate the preconditioner
call mld_precfree(P,info)
!
! deallocate other data structures
... ...
!
! exit the parallel environment
call psb_exit(ictxt)
stop
</PRE>
</TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV></TD></TR>
</TABLE>
</DIV>
<P> <P>
Different versions of multi-level preconditioners can be obtained by changing
the default values of the preconditioner parameters. The code reported in
Figure&nbsp;<A HREF="#fig:ex_3lh">3</A> shows how to set a three-level hybrid Schwarz
preconditioner, which uses block Jacobi with ILU(0) on the
local blocks as post-smoother, has a coarsest matrix replicated on the processors,
and solves the coarsest-level system with the LU factorization from UMFPACK&nbsp;[<A
HREF="node25.html#UMFPACK">8</A>].
The number of levels is specified by using <code>mld_precinit</code>; the other
preconditioner parameters are set by calling <code>mld_precset</code>. Note that
the type of multilevel framework (i.e. multiplicative among the levels
with post-smoothing only) is not specified since it is the default
set by <code>mld_precinit</code>.
<P>
Figure&nbsp;<A HREF="#fig:ex_3la">4</A> shows how to
set a three-level additive Schwarz preconditioner,
which uses RAS, with overlap 1 and ILU(0) on the blocks,
as pre- and post-smoother, and applies five block-Jacobi sweeps, with
the UMFPACK LU factorization on the blocks, as distributed coarsest-level
solver. Again, <code>mld_precset</code> is used only to set
non-default values of the parameters (see Tables&nbsp;<A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>).
In both cases, the construction and the application of the preconditioner
are carried out as for the default multi-level preconditioner.
The code fragments shown in in Figures&nbsp;<A HREF="#fig:ex_3lh">3</A>-<A HREF="#fig:ex_3la">4</A> are
included in the example program file <code>mld_dexample_ml.f90</code> too.
<P>
Finally, Figure&nbsp;<A HREF="#fig:ex_1l">5</A> shows the setup of a one-level
additive Schwarz preconditioner, i.e. RAS with overlap 2. The corresponding
example program is available in <code>mld_dexample_</code> <code>1lev.f90</code>.
<P>
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>.
<P>
<BR><B>Remark 3.</B> Any PSBLAS-based program using the basic preconditioners
implemented in PSBLAS 2.0, i.e. the diagonal and block-Jacobi ones,
can use the diagonal and block-Jacobi preconditioners
implemented in MLD2P4 without any change in the code.
The PSBLAS-based program must be only recompiled
and linked to the MLD2P4 library.
<BR>
<P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_3lh"></A><A NAME="928"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
Setup of a hybrid three-level Schwarz preconditioner.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
... ...
! set a three-level hybrid Schwarz preconditioner, which uses
! block Jacobi (with ILU(0) on the blocks) as post-smoother,
! a coarsest matrix replicated on the processors, and the
! LU factorization from UMFPACK as coarse-level solver
call mld_precinit(P,'ML',info,nlev=3)
call_mld_precset(P,mld_smoother_type_,'BJAC',info)
call mld_precset(P,mld_coarse_mat_,'REPL',info)
call mld_precset(P,mld_coarse_solve_,'UMF',info)
... ...
</PRE>
</TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV>
<P>
<DIV ALIGN="CENTER">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_3la"></A><A NAME="930"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
Setup of an additive three-level Schwarz preconditioner.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
... ...
! set a three-level additive Schwarz preconditioner, which uses
! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and
! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU
! on the blocks) as distributed coarsest-level solver
call mld_precinit(P,'ML',info,nlev=3)
call mld_precset(P,mld_ml_type_,'ADD',info)
call_mld_precset(P,mld_smoother_pos_,'TWOSIDE',info)
call mld_precset(P,mld_coarse_sweeps_,5,info)
... ...
</PRE>
</TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV>
<P>
<DIV ALIGN="CENTER">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_1l"></A><A NAME="932"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
Setup of a one-level Schwarz preconditioner.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
... ...
! set RAS with overlap 2 and ILU(0) on the local blocks
call mld_precinit(P,'AS',info)
call mld_precset(P,mld_sub_ovr_,2,info)
... ...
</PRE>
</TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV></TD></TR>
</TABLE>
</DIV>
<P> <P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html241"
HREF="node16.html">Subroutine mld_precinit</A>
<LI><A NAME="tex2html242"
HREF="node17.html">Subroutine mld_precset</A>
<LI><A NAME="tex2html243"
HREF="node18.html">Subroutine mld_precbld</A>
<LI><A NAME="tex2html244"
HREF="node19.html">Subroutine mld_precaply</A>
<LI><A NAME="tex2html245"
HREF="node20.html">Subroutine mld_precfree</A>
<LI><A NAME="tex2html246"
HREF="node21.html">Subroutine mld_precdescr</A>
</UL>
<!--End of Table of Child-Links-->
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html239" <A NAME="tex2html242"
HREF="node16.html"> HREF="node16.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html235" <A NAME="tex2html238"
HREF="userhtml.html"> HREF="node14.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html229" <A NAME="tex2html234"
HREF="node14.html"> HREF="node14.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html237" <A NAME="tex2html240"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html240" <B> Next:</B> <A NAME="tex2html243"
HREF="node16.html">Subroutine mld_precinit</A> HREF="node16.html">User Interface</A>
<B> Up:</B> <A NAME="tex2html236" <B> Up:</B> <A NAME="tex2html239"
HREF="userhtml.html">userhtml</A> HREF="node14.html">Getting Started</A>
<B> Previous:</B> <A NAME="tex2html230" <B> Previous:</B> <A NAME="tex2html235"
HREF="node14.html">Examples</A> HREF="node14.html">Getting Started</A>
&nbsp; <B> <A NAME="tex2html238" &nbsp; <B> <A NAME="tex2html241"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Subroutine mld_precinit</TITLE> <TITLE>User Interface</TITLE>
<META NAME="description" CONTENT="Subroutine mld_precinit"> <META NAME="description" CONTENT="User Interface">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,127 +18,147 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node17.html"> <LINK REL="next" HREF="node23.html">
<LINK REL="previous" HREF="node15.html"> <LINK REL="previous" HREF="node14.html">
<LINK REL="up" HREF="node15.html"> <LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node17.html"> <LINK REL="next" HREF="node17.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html257" <A NAME="tex2html254"
HREF="node17.html"> HREF="node17.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html253" <A NAME="tex2html250"
HREF="node15.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html247" <A NAME="tex2html244"
HREF="node15.html"> HREF="node15.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html255" <A NAME="tex2html252"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html258" <B> Next:</B> <A NAME="tex2html255"
HREF="node17.html">Subroutine mld_precset</A> HREF="node17.html">Subroutine mld_precinit</A>
<B> Up:</B> <A NAME="tex2html254" <B> Up:</B> <A NAME="tex2html251"
HREF="node15.html">User Interface</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html248" <B> Previous:</B> <A NAME="tex2html245"
HREF="node15.html">User Interface</A> HREF="node15.html">Examples</A>
&nbsp; <B> <A NAME="tex2html256" &nbsp; <B> <A NAME="tex2html253"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION00081000000000000000"></A><A NAME="sec:precinit"></A> <H1><A NAME="SECTION00080000000000000000"></A><A NAME="sec:userinterface"></A>
<BR> <BR>
Subroutine mld_precinit User Interface
</H2> </H1>
<P> <P>
<DIV ALIGN="CENTER"> The basic user interface of MLD2P4 consists of six routines. The four routines <code>mld_</code> <code>precinit</code>,
<code>mld_precinit(p,ptype,info)</code> <code>mld_precset</code>, <code>mld_precbld</code> and <code>mld_precaply</code> encapsulate all the functionalities
<BR><code>mld_precinit(p,ptype,info,nlev)</code> for the setup and the application of any one-level and multi-level
<BR> preconditioner implemented in the package.
</DIV> The routine <code>mld_precfree</code> deallocates the preconditioner data structure, while
<code>mld_precdescr</code> prints a description of the preconditioner setup by the user.
<P> <P>
This routine allocates and initializes the preconditioner data structure, For each routine, the same user interface is overloaded with
according to the preconditioner type chosen by the user. respect to the real/complex case and the single/double precision;
arguments with appropriate data types must be passed to the routine,
i.e.
<P> <UL>
<FONT SIZE="+1"><B>Arguments</B></FONT> <LI>the sparse matrix data structure, containing the matrix to be
preconditioned, must be of type <code>mld_</code><I>x</I><code>spmat_type</code>
with <I>x</I> = <code>s</code> for real single precision, <I>x</I> = <code>d</code>
for real double precision, <I>x</I> = <code>c</code> for complex single precision,
<I>x</I> = <code>z</code> for complex double precision;
</LI>
<LI>the preconditioner data structure must be of type
<code>mld_</code><I>x</I><code>prec_type</code>, with <I>x</I> =
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, according to the sparse
matrix data structure;
</LI>
<LI>the arrays containing the vectors <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$v$"> and <IMG
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img87.png"
ALT="$w$"> involved in
the preconditioner application <IMG
WIDTH="87" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img60.png"
ALT="$w=M^{-1}v$"> must be of type
<I>type</I><code>(</code><I>kind_parameter</I><code>)</code>, with <I>type</I> =
<code>real</code>, <code>complex</code> and <I>kind_parameter</I> = <code>kind(1.e0)</code>,
<code>kind(1.d0)</code>, according to the sparse matrix and preconditioner
data structure; note that the PSBLAS module <code>psb_base_mod</code>
provides the constants <code>psb_spk_</code>
= <code>kind(1.e0)</code> and <code>psb_dpk_</code> = <code>kind(1.d0)</code>;
</LI>
<LI>real parameters defining the preconditioner must be declared
according to the precision of the sparse matrix and preconditioner
data structures (see Section&nbsp;<A HREF="node18.html#sec:precset">6.2</A>).
</LI>
</UL>
A description of each routine is given in the remainder of this section.
<P> <P>
<TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I>
must be chosen according to the real/complex, single/double
precision version of MLD2P4 under use.</TD>
</TR>
<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>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The type of preconditioner. Its values are specified
in Table&nbsp;<A HREF="#tab:precinit">1</A>.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Note that the strings are case insensitive.</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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node22.html#sec:errors">7</A> for details.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>nlev</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, optional, intent(in)</code>.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The number of levels of the multilevel preconditioner.
If <code>nlev</code> is not present and <code>ptype</code>=<code>'ML'</code>, <code>'ml'</code>,
then <code>nlev</code>=2 is assumed. Otherwise, <code>nlev</code> is ignored.</TD>
</TR>
</TABLE>
<P> <P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<P> <UL>
<LI><A NAME="tex2html256"
HREF="node17.html">Subroutine mld_precinit</A>
<LI><A NAME="tex2html257"
HREF="node18.html">Subroutine mld_precset</A>
<LI><A NAME="tex2html258"
HREF="node19.html">Subroutine mld_precbld</A>
<LI><A NAME="tex2html259"
HREF="node20.html">Subroutine mld_precaply</A>
<LI><A NAME="tex2html260"
HREF="node21.html">Subroutine mld_precfree</A>
<LI><A NAME="tex2html261"
HREF="node22.html">Subroutine mld_precdescr</A>
</UL>
<!--End of Table of Child-Links-->
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html257" <A NAME="tex2html254"
HREF="node17.html"> HREF="node17.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html253" <A NAME="tex2html250"
HREF="node15.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html247" <A NAME="tex2html244"
HREF="node15.html"> HREF="node15.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html255" <A NAME="tex2html252"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html258" <B> Next:</B> <A NAME="tex2html255"
HREF="node17.html">Subroutine mld_precset</A> HREF="node17.html">Subroutine mld_precinit</A>
<B> Up:</B> <A NAME="tex2html254" <B> Up:</B> <A NAME="tex2html251"
HREF="node15.html">User Interface</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html248" <B> Previous:</B> <A NAME="tex2html245"
HREF="node15.html">User Interface</A> HREF="node15.html">Examples</A>
&nbsp; <B> <A NAME="tex2html256" &nbsp; <B> <A NAME="tex2html253"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Subroutine mld_precset</TITLE> <TITLE>Subroutine mld_precinit</TITLE>
<META NAME="description" CONTENT="Subroutine mld_precset"> <META NAME="description" CONTENT="Subroutine mld_precinit">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -20,56 +20,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node18.html"> <LINK REL="next" HREF="node18.html">
<LINK REL="previous" HREF="node16.html"> <LINK REL="previous" HREF="node16.html">
<LINK REL="up" HREF="node15.html"> <LINK REL="up" HREF="node16.html">
<LINK REL="next" HREF="node18.html"> <LINK REL="next" HREF="node18.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html269" <A NAME="tex2html272"
HREF="node18.html"> HREF="node18.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html265" <A NAME="tex2html268"
HREF="node15.html"> HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html259" <A NAME="tex2html262"
HREF="node16.html"> HREF="node16.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html267" <A NAME="tex2html270"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html270" <B> Next:</B> <A NAME="tex2html273"
HREF="node18.html">Subroutine mld_precbld</A> HREF="node18.html">Subroutine mld_precset</A>
<B> Up:</B> <A NAME="tex2html266" <B> Up:</B> <A NAME="tex2html269"
HREF="node15.html">User Interface</A> HREF="node16.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html260" <B> Previous:</B> <A NAME="tex2html263"
HREF="node16.html">Subroutine mld_precinit</A> HREF="node16.html">User Interface</A>
&nbsp; <B> <A NAME="tex2html268" &nbsp; <B> <A NAME="tex2html271"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION00082000000000000000"></A><A NAME="sec:precset"></A> <H2><A NAME="SECTION00081000000000000000"></A><A NAME="sec:precinit"></A>
<BR> <BR>
Subroutine mld_precset Subroutine mld_precinit
</H2> </H2>
<P> <P>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<code>mld_precset(p,what,val,info)</code> <code>mld_precinit(p,ptype,info)</code>
<BR><code>mld_precinit(p,ptype,info,nlev)</code>
<BR> <BR>
</DIV> </DIV>
<P> <P>
This routine sets the parameters defining the preconditioner. More This routine allocates and initializes the preconditioner data structure,
precisely, the parameter identified by <code>what</code> is assigned the value according to the preconditioner type chosen by the user.
contained in <code>val</code>.
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><B>Arguments</B></FONT>
@ -80,425 +80,65 @@ contained in <code>val</code>.
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I>
be chosen according to the real/complex, single/double precision must be chosen according to the real/complex, single/double
version of MLD2P4 under use.</TD> precision version of MLD2P4 under use.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>what</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>ptype</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(in)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=*), intent(in)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The number identifying the parameter to be set. <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The type of preconditioner. Its values are specified
A mnemonic constant has been associated to each of these in Table&nbsp;<A HREF="#tab:precinit">1</A>.</TD>
numbers, as reported in Tables&nbsp;<A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.</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>
<code>real(psb_spk_)</code> <I>or</I> <code>real(psb_dpk_)</code>,
<code>intent(in)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The value of the parameter to be set. The list of allowed <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Note that the strings are case insensitive.</TD>
values and the corresponding data types is given in
Tables&nbsp;<A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
When the value is of type <code>character(len=*)</code>,
it is also treated as case insensitive.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <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> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node22.html#sec:errors">7</A> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node23.html#sec:errors">7</A> for details.</TD>
for details.</TD>
</TR>
</TABLE>
<P>
<BR>
A variety of (one-level and multi-level) 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
<OL>
<LI>the type of multi-level preconditioner;
</LI>
<LI>the one-level preconditioner used as smoother;
</LI>
<LI>the aggregation algorithm;
</LI>
<LI>the coarse-space correction at the coarsest level.
</LI>
</OL>
A list of the parameters that can be set, along with their allowed and
default values, is given in Tables&nbsp;<A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
For a detailed description of the meaning of the parameters, please
refer to Section&nbsp;<A HREF="node10.html#sec:background">4</A>.
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1246"></A>
<TABLE>
<CAPTION><STRONG>Table 2:</STRONG>
Parameters defining the type of multi-level preconditioner.
</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><code>what</code></TD>
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><code>val</code></TD>
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_ml_type_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'ADD'</TT> <TT>'MULT'</TT></TD>
<TD ALIGN="LEFT"><TT>'MULT'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Basic multi-level framework: additive or multiplicative
among the levels (always additive inside a level).</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_smoother_type_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'DIAG'</TT> <TT>'BJAC'</TT> <TT>'AS'</TT></TD>
<TD ALIGN="LEFT"><TT>'AS'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Basic one-level preconditioner (i.e. smoother): diagonal,
block Jacobi, AS.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_smoother_pos_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'PRE'</TT> <TT>'POST'</TT> <TT>'TWOSIDE'</TT></TD>
<TD ALIGN="LEFT"><TT>'POST'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>``Position'' of the smoother: pre-smoother, post-smoother,
pre- and post-smoother.</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1248"></A>
<TABLE>
<CAPTION><STRONG>Table 3:</STRONG>
Parameters defining the one-level preconditioner used as smoother.
</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><code>what</code></TD>
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><code>val</code></TD>
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_ovr_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">1</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of overlap layers.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_restr_</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>nlev</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, optional, intent(in)</code>.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'HALO'</TT> <TT>'NONE'</TT></TD>
<TD ALIGN="LEFT"><TT>'HALO'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of restriction operator:
<TT>'HALO'</TT> for taking into account the overlap, <TT>'NONE'</TT>
for neglecting it.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_prol_</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The number of levels of the multilevel preconditioner.
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'SUM'</TT> <TT>'NONE'</TT></TD> If <code>nlev</code> is not present and <code>ptype</code>=<code>'ML'</code>, <code>'ml'</code>,
<TD ALIGN="LEFT"><TT>'NONE'</TT></TD> then <code>nlev</code>=2 is assumed. Otherwise, <code>nlev</code> is ignored.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of prolongation operator:
<TT>'SUM'</TT> for adding the contributions from the overlap, <TT>'NONE'</TT>
for neglecting them.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_solve_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'ILU'</TT> <TT>'MILU'</TT> <TT>'ILUT'</TT>
<TT>'UMF'</TT> <TT>'SLU'</TT></TD>
<TD ALIGN="LEFT"><TT>'UMF'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Local solver: ILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">), MILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">), ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">), LU from UMFPACK, LU from SuperLU
(plus triangular solve).</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_fillin_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$"> of the incomplete LU factorizations.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_iluthrs_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;real&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img89.png"
ALT="$t$"> in the ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">) factorization.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_ren_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'RENUM_NONE'</TT> <TT>'RENUM_GLOBAL'</TT> </TD>
<TD ALIGN="LEFT"><TT>'RENUM_NONE'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Row and column reordering of the local submatrices: no reordering,
reordering according to the global numbering of the rows and columns of
the whole matrix.</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1250"></A>
<TABLE>
<CAPTION><STRONG>Table 4:</STRONG>
Parameters defining the aggregation algorithm.
</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><code>what</code></TD>
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><code>val</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><SMALL>DEFAULT</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_alg_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'DEC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'DEC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Aggregation algorithm. Currently, only the decoupled aggregation is available.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_kind_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'SMOOTH'</TT> <TT>'RAW'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'SMOOTH'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of aggregation: smoothed, raw (i.e. using the tentative prolongator).</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_thresh_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any&nbsp;real&nbsp;num. <IMG
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img90.png"
ALT="$\in [0, 1]$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74>0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Threshold <IMG
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img91.png"
ALT="$\theta$"> in the aggregation algorithm.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_eig_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'A_NORMI'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'A_NORMI'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Estimate of the eigenvalue <IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png"
ALT="$D^{-1}A$"> with largest modulus,
to build the damping parameter <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$"> in the smoothed aggregation.
Currently, only the infinity norm of
the matrix is available.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_damp_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any&nbsp;real&nbsp;num.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><!-- MATH
$4/(3||D^{-1}A||_\infty)$
-->
<IMG
WIDTH="124" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img92.png"
ALT="$4/(3\vert\vert D^{-1}A\vert\vert _\infty)$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Damping parameter <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$"> in the smoothed aggregation algorithm.
If the user specifies a negative value, then <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$">
is set to its default value;
otherwise, <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$"> is set to the value provided by the
user. In the latter case no estimate of the eigenvalue of
<IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png"
ALT="$D^{-1}A$"> with largest modulus is computed.</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1252"></A>
<TABLE>
<CAPTION><STRONG>Table 5:</STRONG>
Parameters defining the coarse-space correction at the coarsest
level.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><code>what</code></TD>
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><code>val</code></TD>
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_mat_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'DISTR'</TT> <TT>'REPL'</TT></TD>
<TD ALIGN="LEFT"><TT>'DISTR'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Coarsest matrix: distributed among the processors or
replicated on each of them.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_solve_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'BJAC'</TT> <TT>'UMF'</TT>
<TT>'SLU'</TT> <TT>'SLUDIST'</TT></TD>
<TD ALIGN="LEFT"><TT>'BJAC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Solver used at the coarsest level: block Jacobi, sequential
LU from UMFPACK, sequential LU from SuperLU,
distributed LU from SuperLU_Dist.
<TT>'BJAC'</TT> and <TT>'SLUDIST'</TT> require the coarsest
matrix to be distributed, while <TT>'UMF'</TT> and
<TT>'SLU'</TT> require it to be replicated.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_subsolve_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'ILU'</TT> <TT>'MILU'</TT>
<TT>'ILUT'</TT>
<TT>'UMF'</TT> <TT>'SLU'</TT></TD>
<TD ALIGN="LEFT"><TT>'UMF'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Solver for the diagonal blocks of the coarse matrix,
in case the block Jacobi solver
is chosen as coarsest-level solver: ILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">), MILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">),
ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">), LU from UMFPACK,
LU from SuperLU, plus triangular solve.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_sweeps_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img93.png"
ALT="$&gt; 0$"></TD>
<TD ALIGN="LEFT">4</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of Block-Jacobi sweeps when 'BJAC' is used as
coarsest-level solver.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_fillin_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$"> of the incomplete LU factorizations.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_iluthrs_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;real.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img89.png"
ALT="$t$"> in the ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">) factorization.</TD>
</TR> </TR>
</TABLE> </TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<P> <P>
<P> <P>
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html269" <A NAME="tex2html272"
HREF="node18.html"> HREF="node18.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html265" <A NAME="tex2html268"
HREF="node15.html"> HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html259" <A NAME="tex2html262"
HREF="node16.html"> HREF="node16.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html267" <A NAME="tex2html270"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html270" <B> Next:</B> <A NAME="tex2html273"
HREF="node18.html">Subroutine mld_precbld</A> HREF="node18.html">Subroutine mld_precset</A>
<B> Up:</B> <A NAME="tex2html266" <B> Up:</B> <A NAME="tex2html269"
HREF="node15.html">User Interface</A> HREF="node16.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html260" <B> Previous:</B> <A NAME="tex2html263"
HREF="node16.html">Subroutine mld_precinit</A> HREF="node16.html">User Interface</A>
&nbsp; <B> <A NAME="tex2html268" &nbsp; <B> <A NAME="tex2html271"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Subroutine mld_precbld</TITLE> <TITLE>Subroutine mld_precset</TITLE>
<META NAME="description" CONTENT="Subroutine mld_precbld"> <META NAME="description" CONTENT="Subroutine mld_precset">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -20,123 +20,485 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node19.html"> <LINK REL="next" HREF="node19.html">
<LINK REL="previous" HREF="node17.html"> <LINK REL="previous" HREF="node17.html">
<LINK REL="up" HREF="node15.html"> <LINK REL="up" HREF="node16.html">
<LINK REL="next" HREF="node19.html"> <LINK REL="next" HREF="node19.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html281" <A NAME="tex2html284"
HREF="node19.html"> HREF="node19.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html277" <A NAME="tex2html280"
HREF="node15.html"> HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html271" <A NAME="tex2html274"
HREF="node17.html"> HREF="node17.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html279" <A NAME="tex2html282"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html282" <B> Next:</B> <A NAME="tex2html285"
HREF="node19.html">Subroutine mld_precaply</A> HREF="node19.html">Subroutine mld_precbld</A>
<B> Up:</B> <A NAME="tex2html278" <B> Up:</B> <A NAME="tex2html281"
HREF="node15.html">User Interface</A> HREF="node16.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html272" <B> Previous:</B> <A NAME="tex2html275"
HREF="node17.html">Subroutine mld_precset</A> HREF="node17.html">Subroutine mld_precinit</A>
&nbsp; <B> <A NAME="tex2html280" &nbsp; <B> <A NAME="tex2html283"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION00083000000000000000"></A><A NAME="sec:precbld"></A> <H2><A NAME="SECTION00082000000000000000"></A><A NAME="sec:precset"></A>
<BR> <BR>
Subroutine mld_precbld Subroutine mld_precset
</H2> </H2>
<P> <P>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<code>mld_precbld(a,desc_a,p,info)</code> <code>mld_precset(p,what,val,info)</code>
<BR> <BR>
</DIV> </DIV>
<P> <P>
This routine builds the preconditioner according to the requirements made by This routine sets the parameters defining the preconditioner. More
the user through the routines <code>mld_precinit</code> and <code>mld_precset</code>. precisely, the parameter identified by <code>what</code> is assigned the value
contained in <code>val</code>.
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><B>Arguments</B></FONT>
<P> <P>
<TABLE CELLPADDING=3> <TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>a</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must
matrix to be preconditioned. Note that <I>x</I> must be chosen according be chosen according to the real/complex, single/double precision
to the real/complex, version of MLD2P4 under use.</TD>
single/double precision version of MLD2P4 under use.
See the PSBLAS User's Guide for details [<A
HREF="node24.html#PSBLASGUIDE">14</A>].</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>what</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(in)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The number identifying the parameter to be set.
details [<A A mnemonic constant has been associated to each of these
HREF="node24.html#PSBLASGUIDE">14</A>].</TD> numbers, as reported in Tables&nbsp;<A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>val </code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><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>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must be chosen according <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The value of the parameter to be set. The list of allowed
to the real/complex, single/double precision version of MLD2P4 under use.</TD> values and the corresponding data types is given in
Tables&nbsp;<A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
When the value is of type <code>character(len=*)</code>,
it is also treated as case insensitive.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <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> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node22.html#sec:errors">7</A> for details.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node23.html#sec:errors">7</A>
for details.</TD>
</TR>
</TABLE>
<P>
<BR>
A variety of (one-level and multi-level) 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
<OL>
<LI>the type of multi-level preconditioner;
</LI>
<LI>the one-level preconditioner used as smoother;
</LI>
<LI>the aggregation algorithm;
</LI>
<LI>the coarse-space correction at the coarsest level.
</LI>
</OL>
A list of the parameters that can be set, along with their allowed and
default values, is given in Tables&nbsp;<A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
For a detailed description of the meaning of the parameters, please
refer to Section&nbsp;<A HREF="node11.html#sec:background">4</A>.
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1246"></A>
<TABLE>
<CAPTION><STRONG>Table 2:</STRONG>
Parameters defining the type of multi-level preconditioner.
</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><code>what</code></TD>
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><code>val</code></TD>
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_ml_type_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'ADD'</TT> <TT>'MULT'</TT></TD>
<TD ALIGN="LEFT"><TT>'MULT'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Basic multi-level framework: additive or multiplicative
among the levels (always additive inside a level).</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_smoother_type_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'DIAG'</TT> <TT>'BJAC'</TT> <TT>'AS'</TT></TD>
<TD ALIGN="LEFT"><TT>'AS'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Basic one-level preconditioner (i.e. smoother): diagonal,
block Jacobi, AS.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_smoother_pos_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'PRE'</TT> <TT>'POST'</TT> <TT>'TWOSIDE'</TT></TD>
<TD ALIGN="LEFT"><TT>'POST'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>``Position'' of the smoother: pre-smoother, post-smoother,
pre- and post-smoother.</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1248"></A>
<TABLE>
<CAPTION><STRONG>Table 3:</STRONG>
Parameters defining the one-level preconditioner used as smoother.
</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><code>what</code></TD>
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><code>val</code></TD>
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_ovr_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">1</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of overlap layers.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_restr_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'HALO'</TT> <TT>'NONE'</TT></TD>
<TD ALIGN="LEFT"><TT>'HALO'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of restriction operator:
<TT>'HALO'</TT> for taking into account the overlap, <TT>'NONE'</TT>
for neglecting it.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_prol_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'SUM'</TT> <TT>'NONE'</TT></TD>
<TD ALIGN="LEFT"><TT>'NONE'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of prolongation operator:
<TT>'SUM'</TT> for adding the contributions from the overlap, <TT>'NONE'</TT>
for neglecting them.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_solve_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'ILU'</TT> <TT>'MILU'</TT> <TT>'ILUT'</TT>
<TT>'UMF'</TT> <TT>'SLU'</TT></TD>
<TD ALIGN="LEFT"><TT>'UMF'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Local solver: ILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">), MILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">), ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">), LU from UMFPACK, LU from SuperLU
(plus triangular solve).</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_fillin_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$"> of the incomplete LU factorizations.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_iluthrs_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;real&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img89.png"
ALT="$t$"> in the ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">) factorization.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_sub_ren_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'RENUM_NONE'</TT> <TT>'RENUM_GLOBAL'</TT> </TD>
<TD ALIGN="LEFT"><TT>'RENUM_NONE'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Row and column reordering of the local submatrices: no reordering,
reordering according to the global numbering of the rows and columns of
the whole matrix.</TD>
</TR> </TR>
</TABLE> </TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<P> <P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1250"></A>
<TABLE>
<CAPTION><STRONG>Table 4:</STRONG>
Parameters defining the aggregation algorithm.
</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><code>what</code></TD>
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><code>val</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><SMALL>DEFAULT</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_alg_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'DEC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'DEC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Aggregation algorithm. Currently, only the decoupled aggregation is available.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_kind_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'SMOOTH'</TT> <TT>'RAW'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'SMOOTH'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of aggregation: smoothed, raw (i.e. using the tentative prolongator).</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_thresh_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any&nbsp;real&nbsp;num. <IMG
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img90.png"
ALT="$\in [0, 1]$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74>0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Threshold <IMG
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img91.png"
ALT="$\theta$"> in the aggregation algorithm.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_eig_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'A_NORMI'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'A_NORMI'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Estimate of the eigenvalue <IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png"
ALT="$D^{-1}A$"> with largest modulus,
to build the damping parameter <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$"> in the smoothed aggregation.
Currently, only the infinity norm of
the matrix is available.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_damp_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any&nbsp;real&nbsp;num.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><!-- MATH
$4/(3||D^{-1}A||_\infty)$
-->
<IMG
WIDTH="124" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img92.png"
ALT="$4/(3\vert\vert D^{-1}A\vert\vert _\infty)$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Damping parameter <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$"> in the smoothed aggregation algorithm.
If the user specifies a negative value, then <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$">
is set to its default value;
otherwise, <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$"> is set to the value provided by the
user. In the latter case no estimate of the eigenvalue of
<IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png"
ALT="$D^{-1}A$"> with largest modulus is computed.</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1252"></A>
<TABLE>
<CAPTION><STRONG>Table 5:</STRONG>
Parameters defining the coarse-space correction at the coarsest
level.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><code>what</code></TD>
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><code>val</code></TD>
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_mat_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'DISTR'</TT> <TT>'REPL'</TT></TD>
<TD ALIGN="LEFT"><TT>'DISTR'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Coarsest matrix: distributed among the processors or
replicated on each of them.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_solve_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'BJAC'</TT> <TT>'UMF'</TT>
<TT>'SLU'</TT> <TT>'SLUDIST'</TT></TD>
<TD ALIGN="LEFT"><TT>'BJAC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Solver used at the coarsest level: block Jacobi, sequential
LU from UMFPACK, sequential LU from SuperLU,
distributed LU from SuperLU_Dist.
<TT>'BJAC'</TT> and <TT>'SLUDIST'</TT> require the coarsest
matrix to be distributed, while <TT>'UMF'</TT> and
<TT>'SLU'</TT> require it to be replicated.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_subsolve_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'ILU'</TT> <TT>'MILU'</TT>
<TT>'ILUT'</TT>
<TT>'UMF'</TT> <TT>'SLU'</TT></TD>
<TD ALIGN="LEFT"><TT>'UMF'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Solver for the diagonal blocks of the coarse matrix,
in case the block Jacobi solver
is chosen as coarsest-level solver: ILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">), MILU(<IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">),
ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">), LU from UMFPACK,
LU from SuperLU, plus triangular solve.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_sweeps_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img93.png"
ALT="$&gt; 0$"></TD>
<TD ALIGN="LEFT">4</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of Block-Jacobi sweeps when 'BJAC' is used as
coarsest-level solver.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_fillin_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$"> of the incomplete LU factorizations.</TD>
</TR>
<TR><TD ALIGN="LEFT"><code>mld_coarse_iluthrs_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;real.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img89.png"
ALT="$t$"> in the ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">) factorization.</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<P>
<P>
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html281" <A NAME="tex2html284"
HREF="node19.html"> HREF="node19.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html277" <A NAME="tex2html280"
HREF="node15.html"> HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html271" <A NAME="tex2html274"
HREF="node17.html"> HREF="node17.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html279" <A NAME="tex2html282"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html282" <B> Next:</B> <A NAME="tex2html285"
HREF="node19.html">Subroutine mld_precaply</A> HREF="node19.html">Subroutine mld_precbld</A>
<B> Up:</B> <A NAME="tex2html278" <B> Up:</B> <A NAME="tex2html281"
HREF="node15.html">User Interface</A> HREF="node16.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html272" <B> Previous:</B> <A NAME="tex2html275"
HREF="node17.html">Subroutine mld_precset</A> HREF="node17.html">Subroutine mld_precinit</A>
&nbsp; <B> <A NAME="tex2html280" &nbsp; <B> <A NAME="tex2html283"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Subroutine mld_precaply</TITLE> <TITLE>Subroutine mld_precbld</TITLE>
<META NAME="description" CONTENT="Subroutine mld_precaply"> <META NAME="description" CONTENT="Subroutine mld_precbld">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -20,198 +20,123 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node20.html"> <LINK REL="next" HREF="node20.html">
<LINK REL="previous" HREF="node18.html"> <LINK REL="previous" HREF="node18.html">
<LINK REL="up" HREF="node15.html"> <LINK REL="up" HREF="node16.html">
<LINK REL="next" HREF="node20.html"> <LINK REL="next" HREF="node20.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html293" <A NAME="tex2html296"
HREF="node20.html"> HREF="node20.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html289" <A NAME="tex2html292"
HREF="node15.html"> HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html283" <A NAME="tex2html286"
HREF="node18.html"> HREF="node18.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html291" <A NAME="tex2html294"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html294" <B> Next:</B> <A NAME="tex2html297"
HREF="node20.html">Subroutine mld_precfree</A> HREF="node20.html">Subroutine mld_precaply</A>
<B> Up:</B> <A NAME="tex2html290" <B> Up:</B> <A NAME="tex2html293"
HREF="node15.html">User Interface</A> HREF="node16.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html284" <B> Previous:</B> <A NAME="tex2html287"
HREF="node18.html">Subroutine mld_precbld</A> HREF="node18.html">Subroutine mld_precset</A>
&nbsp; <B> <A NAME="tex2html292" &nbsp; <B> <A NAME="tex2html295"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:precaply"></A> <H2><A NAME="SECTION00083000000000000000"></A><A NAME="sec:precbld"></A>
<BR> <BR>
Subroutine mld_precaply Subroutine mld_precbld
</H2> </H2>
<P> <P>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<code>mld_precaply(p,x,y,desc_a,info)</code> <code>mld_precbld(a,desc_a,p,info)</code>
<BR><code>mld_precaply(p,x,y,desc_a,info,trans,work)</code>
<BR> <BR>
</DIV> </DIV>
<P> <P>
This routine computes <!-- MATH This routine builds the preconditioner according to the requirements made by
$y = op(M^{-1})\, x$ the user through the routines <code>mld_precinit</code> and <code>mld_precset</code>.
-->
<IMG
WIDTH="118" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img94.png"
ALT="$y = op(M^{-1}) x$">, where <IMG
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img59.png"
ALT="$M$"> is a previously built
preconditioner, stored into <code>p</code>, and <IMG
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img95.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>mld_precaply</code> is called within the PSBLAS routine <code>mld_krylov</code>
and hence it is completely transparent to the user.
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><B>Arguments</B></FONT>
<P> <P>
<TABLE CELLPADDING=3> <TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>a</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure, containing the local part of <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" matrix to be preconditioned. Note that <I>x</I> must be chosen according
SRC="img59.png" to the real/complex,
ALT="$M$">. single/double precision version of MLD2P4 under use.
Note that <I>x</I> must be chosen according See the PSBLAS User's Guide for details [<A
to the real/complex, single/double precision version of MLD2P4 under use.</TD> HREF="node25.html#PSBLASGUIDE">14</A>].</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>x</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(in)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" details [<A
SRC="img96.png" HREF="node25.html#PSBLASGUIDE">14</A>].</TD>
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>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>y</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(out)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must be chosen according
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img97.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.</TD>
</TR> </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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor associated to the matrix to be
preconditioned.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <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> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node22.html#sec:errors">7</A> for details.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node23.html#sec:errors">7</A> for details.</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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>If <code>trans</code> = <code>'N','n'</code> then <!-- MATH
$op(M^{-1}) = M^{-1}$
-->
<IMG
WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img98.png"
ALT="$op(M^{-1}) = M^{-1}$">;
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
$op(M^{-1}) = M^{-T}$
-->
<IMG
WIDTH="135" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img99.png"
ALT="$op(M^{-1}) = M^{-T}$">
(transpose of <IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png"
ALT="$M^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
$op(M^{-1}) = M^{-C}$
-->
<IMG
WIDTH="136" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img101.png"
ALT="$op(M^{-1}) = M^{-C}$">
(conjugate transpose of <IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png"
ALT="$M^{-1})$">.</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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>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>
</TR> </TR>
</TABLE> </TABLE>
<P> <P>
<P>
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html293" <A NAME="tex2html296"
HREF="node20.html"> HREF="node20.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html289" <A NAME="tex2html292"
HREF="node15.html"> HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html283" <A NAME="tex2html286"
HREF="node18.html"> HREF="node18.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html291" <A NAME="tex2html294"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html294" <B> Next:</B> <A NAME="tex2html297"
HREF="node20.html">Subroutine mld_precfree</A> HREF="node20.html">Subroutine mld_precaply</A>
<B> Up:</B> <A NAME="tex2html290" <B> Up:</B> <A NAME="tex2html293"
HREF="node15.html">User Interface</A> HREF="node16.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html284" <B> Previous:</B> <A NAME="tex2html287"
HREF="node18.html">Subroutine mld_precbld</A> HREF="node18.html">Subroutine mld_precset</A>
&nbsp; <B> <A NAME="tex2html292" &nbsp; <B> <A NAME="tex2html295"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -26,24 +26,24 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html60" <A NAME="tex2html61"
HREF="node3.html"> HREF="node3.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html58" <A NAME="tex2html59"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html52" <A NAME="tex2html53"
HREF="node1.html"> HREF="node1.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html61" <B> Next:</B> <A NAME="tex2html62"
HREF="node3.html">General Overview</A> HREF="node3.html">General Overview</A>
<B> Up:</B> <A NAME="tex2html59" <B> Up:</B> <A NAME="tex2html60"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html53" <B> Previous:</B> <A NAME="tex2html54"
HREF="node1.html">Abstract</A> HREF="node1.html">Abstract</A>
<BR> <BR>
<BR> <BR>
@ -56,62 +56,64 @@ Contents</A>
<!--Table of Contents--> <!--Table of Contents-->
<UL> <UL>
<LI><A NAME="tex2html62"
HREF="node3.html">General Overview</A>
<LI><A NAME="tex2html63" <LI><A NAME="tex2html63"
HREF="node4.html">Code Distribution</A> HREF="node3.html">General Overview</A>
<LI><A NAME="tex2html64" <LI><A NAME="tex2html64"
HREF="node4.html">Code Distribution</A>
<LI><A NAME="tex2html65"
HREF="node5.html">Configuring and Building MLD2P4</A> HREF="node5.html">Configuring and Building MLD2P4</A>
<UL> <UL>
<LI><A NAME="tex2html65"
HREF="node6.html">Prerequisites</A>
<LI><A NAME="tex2html66" <LI><A NAME="tex2html66"
HREF="node7.html">Optional third party libraries</A> HREF="node6.html">Prerequisites</A>
<LI><A NAME="tex2html67" <LI><A NAME="tex2html67"
HREF="node8.html">Configuration options</A> HREF="node7.html">Optional third party libraries</A>
<LI><A NAME="tex2html68" <LI><A NAME="tex2html68"
HREF="node9.html">Example and test programs</A> HREF="node8.html">Configuration options</A>
</UL>
<BR>
<LI><A NAME="tex2html69" <LI><A NAME="tex2html69"
HREF="node10.html">Multi-level Domain Decomposition Background</A> HREF="node9.html">Bug reporting</A>
<UL>
<LI><A NAME="tex2html70" <LI><A NAME="tex2html70"
HREF="node11.html">Multi-level Schwarz Preconditioners</A> HREF="node10.html">Example and test programs</A>
<LI><A NAME="tex2html71"
HREF="node12.html">Smoothed Aggregation</A>
</UL> </UL>
<BR> <BR>
<LI><A NAME="tex2html72" <LI><A NAME="tex2html71"
HREF="node13.html">Getting Started</A> HREF="node11.html">Multi-level Domain Decomposition Background</A>
<UL> <UL>
<LI><A NAME="tex2html72"
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
<LI><A NAME="tex2html73" <LI><A NAME="tex2html73"
HREF="node14.html">Examples</A> HREF="node13.html">Smoothed Aggregation</A>
</UL> </UL>
<BR> <BR>
<LI><A NAME="tex2html74" <LI><A NAME="tex2html74"
HREF="node15.html">User Interface</A> HREF="node14.html">Getting Started</A>
<UL> <UL>
<LI><A NAME="tex2html75" <LI><A NAME="tex2html75"
HREF="node16.html">Subroutine mld_precinit</A> HREF="node15.html">Examples</A>
</UL>
<BR>
<LI><A NAME="tex2html76" <LI><A NAME="tex2html76"
HREF="node17.html">Subroutine mld_precset</A> HREF="node16.html">User Interface</A>
<UL>
<LI><A NAME="tex2html77" <LI><A NAME="tex2html77"
HREF="node18.html">Subroutine mld_precbld</A> HREF="node17.html">Subroutine mld_precinit</A>
<LI><A NAME="tex2html78" <LI><A NAME="tex2html78"
HREF="node19.html">Subroutine mld_precaply</A> HREF="node18.html">Subroutine mld_precset</A>
<LI><A NAME="tex2html79" <LI><A NAME="tex2html79"
HREF="node20.html">Subroutine mld_precfree</A> HREF="node19.html">Subroutine mld_precbld</A>
<LI><A NAME="tex2html80" <LI><A NAME="tex2html80"
HREF="node21.html">Subroutine mld_precdescr</A> HREF="node20.html">Subroutine mld_precaply</A>
</UL>
<BR>
<LI><A NAME="tex2html81" <LI><A NAME="tex2html81"
HREF="node22.html">Error Handling</A> HREF="node21.html">Subroutine mld_precfree</A>
<LI><A NAME="tex2html82" <LI><A NAME="tex2html82"
HREF="node23.html">License</A> HREF="node22.html">Subroutine mld_precdescr</A>
</UL>
<BR>
<LI><A NAME="tex2html83" <LI><A NAME="tex2html83"
HREF="node24.html">Bibliography</A> HREF="node23.html">Error Handling</A>
<LI><A NAME="tex2html84"
HREF="node24.html">License</A>
<LI><A NAME="tex2html85"
HREF="node25.html">Bibliography</A>
</UL> </UL>
<!--End of Table of Contents--> <!--End of Table of Contents-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Subroutine mld_precfree</TITLE> <TITLE>Subroutine mld_precaply</TITLE>
<META NAME="description" CONTENT="Subroutine mld_precfree"> <META NAME="description" CONTENT="Subroutine mld_precaply">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -20,54 +20,73 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node21.html"> <LINK REL="next" HREF="node21.html">
<LINK REL="previous" HREF="node19.html"> <LINK REL="previous" HREF="node19.html">
<LINK REL="up" HREF="node15.html"> <LINK REL="up" HREF="node16.html">
<LINK REL="next" HREF="node21.html"> <LINK REL="next" HREF="node21.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html305" <A NAME="tex2html308"
HREF="node21.html"> HREF="node21.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html301" <A NAME="tex2html304"
HREF="node15.html"> HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html295" <A NAME="tex2html298"
HREF="node19.html"> HREF="node19.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html303" <A NAME="tex2html306"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html306" <B> Next:</B> <A NAME="tex2html309"
HREF="node21.html">Subroutine mld_precdescr</A> HREF="node21.html">Subroutine mld_precfree</A>
<B> Up:</B> <A NAME="tex2html302" <B> Up:</B> <A NAME="tex2html305"
HREF="node15.html">User Interface</A> HREF="node16.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html296" <B> Previous:</B> <A NAME="tex2html299"
HREF="node19.html">Subroutine mld_precaply</A> HREF="node19.html">Subroutine mld_precbld</A>
&nbsp; <B> <A NAME="tex2html304" &nbsp; <B> <A NAME="tex2html307"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:precfree"></A> <H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:precaply"></A>
<BR> <BR>
Subroutine mld_precfree Subroutine mld_precaply
</H2> </H2>
<P> <P>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<code>mld_precfree(p,info)</code> <code>mld_precaply(p,x,y,desc_a,info)</code>
<BR><code>mld_precaply(p,x,y,desc_a,info,trans,work)</code>
<BR> <BR>
</DIV> </DIV>
<P> <P>
This routine deallocates the preconditioner data structure. This routine computes <!-- MATH
$y = op(M^{-1})\, x$
-->
<IMG
WIDTH="118" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img94.png"
ALT="$y = op(M^{-1}) x$">, where <IMG
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img59.png"
ALT="$M$"> is a previously built
preconditioner, stored into <code>p</code>, and <IMG
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img95.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>mld_precaply</code> is called within the PSBLAS routine <code>mld_krylov</code>
and hence it is completely transparent to the user.
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><B>Arguments</B></FONT>
@ -75,24 +94,126 @@ This routine deallocates the preconditioner data structure.
<P> <P>
<TABLE CELLPADDING=3> <TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298>The preconditioner data structure. Note that <I>x</I> must be chosen according <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure, containing the local part of <IMG
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img59.png"
ALT="$M$">.
Note that <I>x</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.</TD>
</TR> </TR>
<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>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img96.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>
</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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img97.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>
</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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor associated to the matrix to be
preconditioned.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <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> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node23.html#sec:errors">7</A> for details.</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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>If <code>trans</code> = <code>'N','n'</code> then <!-- MATH
$op(M^{-1}) = M^{-1}$
-->
<IMG
WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img98.png"
ALT="$op(M^{-1}) = M^{-1}$">;
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
$op(M^{-1}) = M^{-T}$
-->
<IMG
WIDTH="135" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img99.png"
ALT="$op(M^{-1}) = M^{-T}$">
(transpose of <IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png"
ALT="$M^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
$op(M^{-1}) = M^{-C}$
-->
<IMG
WIDTH="136" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img101.png"
ALT="$op(M^{-1}) = M^{-C}$">
(conjugate transpose of <IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png"
ALT="$M^{-1})$">.</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> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node22.html#sec:errors">7</A> for details.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>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>
</TR> </TR>
</TABLE> </TABLE>
<P> <P>
<P> <P>
<BR><HR> <HR>
<!--Navigation Panel-->
<A NAME="tex2html308"
HREF="node21.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html304"
HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html298"
HREF="node19.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html306"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html309"
HREF="node21.html">Subroutine mld_precfree</A>
<B> Up:</B> <A NAME="tex2html305"
HREF="node16.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html299"
HREF="node19.html">Subroutine mld_precbld</A>
&nbsp; <B> <A NAME="tex2html307"
HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY> </BODY>
</HTML> </HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Subroutine mld_precdescr</TITLE> <TITLE>Subroutine mld_precfree</TITLE>
<META NAME="description" CONTENT="Subroutine mld_precdescr"> <META NAME="description" CONTENT="Subroutine mld_precfree">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,57 +18,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node22.html">
<LINK REL="previous" HREF="node20.html"> <LINK REL="previous" HREF="node20.html">
<LINK REL="up" HREF="node15.html"> <LINK REL="up" HREF="node16.html">
<LINK REL="next" HREF="node22.html"> <LINK REL="next" HREF="node22.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html315" <A NAME="tex2html320"
HREF="node22.html"> HREF="node22.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html311" <A NAME="tex2html316"
HREF="node15.html"> HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html307" <A NAME="tex2html310"
HREF="node20.html"> HREF="node20.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html313" <A NAME="tex2html318"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html316" <B> Next:</B> <A NAME="tex2html321"
HREF="node22.html">Error Handling</A> HREF="node22.html">Subroutine mld_precdescr</A>
<B> Up:</B> <A NAME="tex2html312" <B> Up:</B> <A NAME="tex2html317"
HREF="node15.html">User Interface</A> HREF="node16.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html308" <B> Previous:</B> <A NAME="tex2html311"
HREF="node20.html">Subroutine mld_precfree</A> HREF="node20.html">Subroutine mld_precaply</A>
&nbsp; <B> <A NAME="tex2html314" &nbsp; <B> <A NAME="tex2html319"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precdescr"></A> <H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:precfree"></A>
<BR> <BR>
Subroutine mld_precdescr Subroutine mld_precfree
</H2> </H2>
<P> <P>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<code>mld_precdescr(p,info)</code> <code>mld_precfree(p,info)</code>
<BR><code>mld_precdescr(p,info,iout)</code>
<BR> <BR>
</DIV> </DIV>
<P> <P>
This routine prints a description of the preconditioner to the standard output or This routine deallocates the preconditioner data structure.
to a file. It must be called after <code>mld_precbld</code> has been called.
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT> <FONT SIZE="+1"><B>Arguments</B></FONT>
@ -76,27 +75,22 @@ to a file. It must be called after <code>mld_precbld</code> has been called.
<P> <P>
<TABLE CELLPADDING=3> <TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(in)</code>.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must be chosen according <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298>The preconditioner data structure. Note that <I>x</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.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD> <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> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><code>integer, intent(out)</code>.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node22.html#sec:errors">7</A> for details.</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> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The id of the file where the preconditioner description <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node23.html#sec:errors">7</A> for details.</TD>
will be printed; the default is the standard output.</TD>
</TR> </TR>
</TABLE> </TABLE>
<P>
<P> <P>
<BR><HR> <BR><HR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Error Handling</TITLE> <TITLE>Subroutine mld_precdescr</TITLE>
<META NAME="description" CONTENT="Error Handling"> <META NAME="description" CONTENT="Subroutine mld_precdescr">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,64 +18,86 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node23.html"> <LINK REL="previous" HREF="node21.html">
<LINK REL="previous" HREF="node15.html"> <LINK REL="up" HREF="node16.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node23.html"> <LINK REL="next" HREF="node23.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html327" <A NAME="tex2html330"
HREF="node23.html"> HREF="node23.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html323" <A NAME="tex2html326"
HREF="userhtml.html"> HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html317" <A NAME="tex2html322"
HREF="node21.html"> HREF="node21.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html325" <A NAME="tex2html328"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html328" <B> Next:</B> <A NAME="tex2html331"
HREF="node23.html">License</A> HREF="node23.html">Error Handling</A>
<B> Up:</B> <A NAME="tex2html324" <B> Up:</B> <A NAME="tex2html327"
HREF="userhtml.html">userhtml</A> HREF="node16.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html318" <B> Previous:</B> <A NAME="tex2html323"
HREF="node21.html">Subroutine mld_precdescr</A> HREF="node21.html">Subroutine mld_precfree</A>
&nbsp; <B> <A NAME="tex2html326" &nbsp; <B> <A NAME="tex2html329"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:errors"></A> <H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precdescr"></A>
<BR>
Subroutine mld_precdescr
</H2>
<P>
<DIV ALIGN="CENTER">
<code>mld_precdescr(p,info)</code>
<BR><code>mld_precdescr(p,info,iout)</code>
<BR> <BR>
Error Handling </DIV>
</H1>
<P> <P>
The error handling in MLD2P4 is based on the PSBLAS (version 2) error This routine prints a description of the preconditioner to the standard output or
handling. Error conditions are signaled via an integer argument to a file. It must be called after <code>mld_precbld</code> has been called.
<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
routine. This routine will then decide, according to the user
preferences, whether the error should be handled by terminating the
program or by returning the error condition to the user code, which
will then take action, and whether
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="node24.html#PSBLASGUIDE">14</A>].
<P> <P>
<FONT SIZE="+1"><B>Arguments</B></FONT>
<P>
<TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(in)</code>.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node23.html#sec:errors">7</A> for details.</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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</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>
</TABLE>
<P>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>License</TITLE> <TITLE>Error Handling</TITLE>
<META NAME="description" CONTENT="License"> <META NAME="description" CONTENT="Error Handling">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -19,86 +19,62 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node24.html"> <LINK REL="next" HREF="node24.html">
<LINK REL="previous" HREF="node22.html"> <LINK REL="previous" HREF="node16.html">
<LINK REL="up" HREF="userhtml.html"> <LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node24.html"> <LINK REL="next" HREF="node24.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html339" <A NAME="tex2html342"
HREF="node24.html"> HREF="node24.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html335" <A NAME="tex2html338"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html329" <A NAME="tex2html332"
HREF="node22.html"> HREF="node22.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html337" <A NAME="tex2html340"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html340" <B> Next:</B> <A NAME="tex2html343"
HREF="node24.html">Bibliography</A> HREF="node24.html">License</A>
<B> Up:</B> <A NAME="tex2html336" <B> Up:</B> <A NAME="tex2html339"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html330" <B> Previous:</B> <A NAME="tex2html333"
HREF="node22.html">Error Handling</A> HREF="node22.html">Subroutine mld_precdescr</A>
&nbsp; <B> <A NAME="tex2html338" &nbsp; <B> <A NAME="tex2html341"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:license"></A> <H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:errors"></A>
<BR> <BR>
License Error Handling
</H1> </H1>
<P> <P>
The MLD2P4 is freely distributable under the following copyright The error handling in MLD2P4 is based on the PSBLAS (version 2) error
terms: <PRE> handling. Error conditions are signaled via an integer argument
MLD2P4 version 1.0 <code>info</code>; whenever an error condition is detected, an error trace
MultiLevel Domain Decomposition Parallel Preconditioners Package stack is built by the library up to the top-level, user-callable
based on PSBLAS (Parallel Sparse BLAS version 2.3) routine. This routine will then decide, according to the user
preferences, whether the error should be handled by terminating the
program or by returning the error condition to the user code, which
will then take action, and whether
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="node25.html#PSBLASGUIDE">14</A>].
(C) Copyright 2008 <P>
Salvatore Filippone University of Rome Tor Vergata
Alfredo Buttari University of Rome Tor Vergata
Pasqua D'Ambra ICAR-CNR, Naples
Daniela di Serafino Second University of Naples
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions, and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the MLD2P4 group or the names of its contributors may
not be used to endorse or promote products derived from this
software without specific written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
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>
<BR><HR> <BR><HR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Bibliography</TITLE> <TITLE>License</TITLE>
<META NAME="description" CONTENT="Bibliography"> <META NAME="description" CONTENT="License">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -26,179 +26,80 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html351" <A NAME="tex2html354"
HREF="node25.html"> HREF="node25.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html347" <A NAME="tex2html350"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html341" <A NAME="tex2html344"
HREF="node23.html"> HREF="node23.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html349" <A NAME="tex2html352"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html352" <B> Next:</B> <A NAME="tex2html355"
HREF="node25.html">About this document ...</A> HREF="node25.html">Bibliography</A>
<B> Up:</B> <A NAME="tex2html348" <B> Up:</B> <A NAME="tex2html351"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html342" <B> Previous:</B> <A NAME="tex2html345"
HREF="node23.html">License</A> HREF="node23.html">Error Handling</A>
&nbsp; <B> <A NAME="tex2html350" &nbsp; <B> <A NAME="tex2html353"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR><BR> <BR>
<BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION000110000000000000000">
Bibliography</A>
</H2><DL COMPACT><DD>
<P> <H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:license"></A>
<P></P><DT><A NAME="BREZINA_VANEK">1</A> <BR>
<DD> License
M.&nbsp;Brezina, P.&nbsp;Vanek, </H1>
<EM>A Black-Box Iterative Solver Based on a Two-Level Schwarz Method</EM>,
Computing, 63, 1999, 233-263.
<P></P><DT><A NAME="para_04">2</A>
<DD>
A.&nbsp;Buttari, P.&nbsp;D'Ambra, D.&nbsp;di Serafino, S.&nbsp;Filippone,
<EM>Extending PSBLAS to Build Parallel Schwarz Preconditioners</EM>,
in , J.&nbsp;Dongarra, K.&nbsp;Madsen, J.&nbsp;Wasniewski, editors,
Proceedings of PARA&nbsp;04 Workshop on State of the Art
in Scientific Computing, Lecture Notes in Computer Science,
Springer, 2005, 593-602.
<P></P><DT><A NAME="aaecc_07">3</A>
<DD> A.&nbsp;Buttari, P.&nbsp;D'Ambra, D.&nbsp;di&nbsp;Serafino, S.&nbsp;Filippone,
<EM>2LEV-D2P4: a package of high-performance preconditioners
for scientific and engineering applications</EM>,
Applicable Algebra in Engineering, Communications and Computing,
18, 3, 2007, 223-239.
<P></P><DT><A NAME="apnum_07">4</A>
<DD> P.&nbsp;D'Ambra, S.&nbsp;Filippone, D.&nbsp;di&nbsp;Serafino,
<EM>On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners</EM>,
Applied Numerical Mathematics, Elsevier Science,
57, 11-12, 2007, 1181-1196.
<P> <P>
<P></P><DT><A NAME="CAI_SARKIS">5</A> The MLD2P4 is freely distributable under the following copyright
<DD> terms: <PRE>
X.&nbsp;C.&nbsp;Cai, M.&nbsp;Sarkis, MLD2P4 version 1.0
<EM>A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems</EM>, MultiLevel Domain Decomposition Parallel Preconditioners Package
SIAM Journal on Scientific Computing, 21, 2, 1999, 792-797. based on PSBLAS (Parallel Sparse BLAS version 2.3)
<P></P><DT><A NAME="Cai_Widlund_92">6</A>
<DD>
X.&nbsp;C.&nbsp;Cai, O.&nbsp;B.&nbsp;Widlund,
<EM>Domain Decomposition Algorithms for Indefinite Elliptic Problems</EM>,
SIAM Journal on Scientific and Statistical Computing, 13, 1, 1992, 243-258.
<P></P><DT><A NAME="dd1_94">7</A>
<DD>
T.&nbsp;Chan and T.&nbsp;Mathew,
<EM>Domain Decomposition Algorithms</EM>,
in A.&nbsp;Iserles, editor, Acta Numerica 1994, 61-143.
Cambridge University Press.
<P></P><DT><A NAME="UMFPACK">8</A>
<DD>
T.A.&nbsp;Davis,
<EM>Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
Method with a Column Pre-ordering Strategy</EM>,
ACM Transactions on Mathematical Software, 30, 2004, 196-199.
(See also <TT>http://www.cise.ufl.edu/&nbsp;davis/</TT>)
<P></P><DT><A NAME="SUPERLU">9</A>
<DD>
J.W.&nbsp;Demmel, S.C.&nbsp;Eisenstat, J.R.&nbsp;Gilbert, X.S.&nbsp;Li and J.W.H.&nbsp;Liu,
A supernodal approach to sparse partial pivoting,
SIAM Journal on Matrix Analysis and Applications, 20, 3, 1999, 720-755.
<P></P><DT><A NAME="blas3">10</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra, J.&nbsp;Du Croz, I.&nbsp;S.&nbsp;Duff, S.&nbsp;Hammarling,
<I>A set of Level 3 Basic Linear Algebra Subprograms</I>,
ACM Transactions on Mathematical Software, 16, 1990, 1-17.
<P></P><DT><A NAME="blas2">11</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra, J.&nbsp;Du Croz, S.&nbsp;Hammarling, R.&nbsp;J.&nbsp;Hanson,
<I>An extended set of FORTRAN Basic Linear Algebra Subprograms</I>,
ACM Transactions on Mathematical Software, 14, 1988, 1-17.
<P></P><DT><A NAME="BLACS">12</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra and R.&nbsp;C.&nbsp;Whaley,
<EM>A User's Guide to the BLACS v.&nbsp;1.1</EM>,
Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of
Tennessee, March 1995 (updated May 1997).
<P></P><DT><A NAME="EFSTATHIOU">13</A>
<DD>
E.&nbsp;Efstathiou, J.&nbsp;G.&nbsp;Gander,
<EM>Why Restricted Additive Schwarz Converges Faster than Additive Schwarz</EM>,
BIT Numerical Mathematics, 43, 2003, 945-959.
<P></P><DT><A NAME="PSBLASGUIDE">14</A>
<DD>
S.&nbsp;Filippone, A.&nbsp;Buttari,
<EM>PSBLAS-2.3 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library</EM>, 2008,
available from <TT>http://www.ce.uniroma2.it/psblas/</TT>.
<P></P><DT><A NAME="psblas_00">15</A>
<DD>
S.&nbsp;Filippone, M.&nbsp;Colajanni,
<EM>PSBLAS: A Library for Parallel Linear Algebra
Computation on Sparse Matrices</EM>,
ACM Transactions on Mathematical Software, 26, 4, 2000, 527-550.
<P></P><DT><A NAME="MPI2">16</A>
<DD>
W.&nbsp;Gropp, S.&nbsp;Huss-Lederman, A.&nbsp;Lumsdaine, E.&nbsp;Lusk, B.&nbsp;Nitzberg, W.&nbsp;Saphir, M.&nbsp;Snir,
<EM>MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions</EM>,
MIT Press, 1998.
<P></P><DT><A NAME="blas1">17</A>
<DD>
C.&nbsp;L.&nbsp;Lawson, R.&nbsp;J.&nbsp;Hanson, D.&nbsp;Kincaid, F.&nbsp;T.&nbsp;Krogh,
<I>Basic Linear Algebra Subprograms for FORTRAN usage</I>,
ACM Transactions on Mathematical Software, 5, 1979, 308-323.
<P></P><DT><A NAME="SUPERLUDIST">18</A>
<DD>
X.&nbsp;S.&nbsp;Li, J.&nbsp;W.&nbsp;Demmel, <EM>SuperLU_DIST: A Scalable Distributed-memory
Sparse Direct Solver for Unsymmetric Linear Systems</EM>,
ACM Transactions on Mathematical Software, 29, 2, 2003, 110-140.
<P></P><DT><A NAME="Saad_book">19</A>
<DD>
Y.&nbsp;Saad,
<I>Iterative methods for sparse linear systems</I>, 2nd edition,
SIAM, 2003
<P> (C) Copyright 2008
<P></P><DT><A NAME="dd2_96">20</A>
<DD>
B.&nbsp;Smith, P.&nbsp;Bjorstad, W.&nbsp;Gropp,
<EM>Domain Decomposition: Parallel Multilevel Methods for Elliptic
Partial Differential Equations</EM>,
Cambridge University Press, 1996.
<P></P><DT><A NAME="MPI1">21</A>
<DD>
M.&nbsp;Snir, S.&nbsp;Otto, S.&nbsp;Huss-Lederman, D.&nbsp;Walker, J.&nbsp;Dongarra,
<EM>MPI: The Complete Reference. Volume 1 - The MPI Core</EM>, second edition,
MIT Press, 1998.
<P></P><DT><A NAME="StubenGMD69_99">22</A>
<DD>
K.&nbsp;St&#252;ben,
<EM>Algebraic Multigrid (AMG): an Introduction with Applications</EM>,
in A.&nbsp;Sch&#252;ller, U.&nbsp;Trottenberg, C.&nbsp;Oosterlee, editors, Multigrid,
Academic Press, 2000.
<P></P><DT><A NAME="TUMINARO_TONG">23</A>
<DD>
R.&nbsp;S.&nbsp;Tuminaro, C.&nbsp;Tong,
<EM>Parallel Smoothed Aggregation Multigrid: Aggregation Strategies on Massively Parallel Machines</EM>,
in J. Donnelley, editor, Proceedings of SuperComputing 2000, Dallas, 2000.
<P></P><DT><A NAME="VANEK_MANDEL_BREZINA">24</A>
<DD>
P.&nbsp;Vanek, J.&nbsp;Mandel and M.&nbsp;Brezina,
<EM>Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems</EM>,
Computing, 56, 1996, 179-196.
<P> Salvatore Filippone University of Rome Tor Vergata
</DL> Alfredo Buttari University of Rome Tor Vergata
Pasqua D'Ambra ICAR-CNR, Naples
Daniela di Serafino Second University of Naples
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions, and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the MLD2P4 group or the names of its contributors may
not be used to endorse or promote products derived from this
software without specific written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
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>
<P>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>About this document ...</TITLE> <TITLE>Bibliography</TITLE>
<META NAME="description" CONTENT="About this document ..."> <META NAME="description" CONTENT="Bibliography">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,56 +18,187 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node26.html">
<LINK REL="previous" HREF="node24.html"> <LINK REL="previous" HREF="node24.html">
<LINK REL="up" HREF="userhtml.html"> <LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node26.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html366"
HREF="node26.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next_g.png"> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html357" <A NAME="tex2html362"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html353" <A NAME="tex2html356"
HREF="node24.html"> HREF="node24.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html359" <A NAME="tex2html364"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Up:</B> <A NAME="tex2html358" <B> Next:</B> <A NAME="tex2html367"
HREF="node26.html">About this document ...</A>
<B> Up:</B> <A NAME="tex2html363"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html354" <B> Previous:</B> <A NAME="tex2html357"
HREF="node24.html">Bibliography</A> HREF="node24.html">License</A>
&nbsp; <B> <A NAME="tex2html360" &nbsp; <B> <A NAME="tex2html365"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR><BR>
<BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION000110000000000000000">
Bibliography</A>
</H2><DL COMPACT><DD>
<H1><A NAME="SECTION000120000000000000000">
About this document ...</A>
</H1>
<P>
This document was generated using the
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.71)
<P> <P>
Copyright &#169; 1993, 1994, 1995, 1996, <P></P><DT><A NAME="BREZINA_VANEK">1</A>
<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>, <DD>
Computer Based Learning Unit, University of Leeds. M.&nbsp;Brezina, P.&nbsp;Vanek,
<BR> <EM>A Black-Box Iterative Solver Based on a Two-Level Schwarz Method</EM>,
Copyright &#169; 1997, 1998, 1999, Computing, 63, 1999, 233-263.
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>, <P></P><DT><A NAME="para_04">2</A>
Mathematics Department, Macquarie University, Sydney. <DD>
A.&nbsp;Buttari, P.&nbsp;D'Ambra, D.&nbsp;di Serafino, S.&nbsp;Filippone,
<EM>Extending PSBLAS to Build Parallel Schwarz Preconditioners</EM>,
in , J.&nbsp;Dongarra, K.&nbsp;Madsen, J.&nbsp;Wasniewski, editors,
Proceedings of PARA&nbsp;04 Workshop on State of the Art
in Scientific Computing, Lecture Notes in Computer Science,
Springer, 2005, 593-602.
<P></P><DT><A NAME="aaecc_07">3</A>
<DD> A.&nbsp;Buttari, P.&nbsp;D'Ambra, D.&nbsp;di&nbsp;Serafino, S.&nbsp;Filippone,
<EM>2LEV-D2P4: a package of high-performance preconditioners
for scientific and engineering applications</EM>,
Applicable Algebra in Engineering, Communications and Computing,
18, 3, 2007, 223-239.
<P></P><DT><A NAME="apnum_07">4</A>
<DD> P.&nbsp;D'Ambra, S.&nbsp;Filippone, D.&nbsp;di&nbsp;Serafino,
<EM>On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners</EM>,
Applied Numerical Mathematics, Elsevier Science,
57, 11-12, 2007, 1181-1196.
<P> <P>
The command line arguments were: <BR> <P></P><DT><A NAME="CAI_SARKIS">5</A>
<STRONG>latex2html</STRONG> <TT>-noaddress -dir ../../html userhtml.tex</TT> <DD>
X.&nbsp;C.&nbsp;Cai, M.&nbsp;Sarkis,
<EM>A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems</EM>,
SIAM Journal on Scientific Computing, 21, 2, 1999, 792-797.
<P></P><DT><A NAME="Cai_Widlund_92">6</A>
<DD>
X.&nbsp;C.&nbsp;Cai, O.&nbsp;B.&nbsp;Widlund,
<EM>Domain Decomposition Algorithms for Indefinite Elliptic Problems</EM>,
SIAM Journal on Scientific and Statistical Computing, 13, 1, 1992, 243-258.
<P></P><DT><A NAME="dd1_94">7</A>
<DD>
T.&nbsp;Chan and T.&nbsp;Mathew,
<EM>Domain Decomposition Algorithms</EM>,
in A.&nbsp;Iserles, editor, Acta Numerica 1994, 61-143.
Cambridge University Press.
<P></P><DT><A NAME="UMFPACK">8</A>
<DD>
T.A.&nbsp;Davis,
<EM>Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
Method with a Column Pre-ordering Strategy</EM>,
ACM Transactions on Mathematical Software, 30, 2004, 196-199.
(See also <TT>http://www.cise.ufl.edu/&nbsp;davis/</TT>)
<P></P><DT><A NAME="SUPERLU">9</A>
<DD>
J.W.&nbsp;Demmel, S.C.&nbsp;Eisenstat, J.R.&nbsp;Gilbert, X.S.&nbsp;Li and J.W.H.&nbsp;Liu,
A supernodal approach to sparse partial pivoting,
SIAM Journal on Matrix Analysis and Applications, 20, 3, 1999, 720-755.
<P></P><DT><A NAME="blas3">10</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra, J.&nbsp;Du Croz, I.&nbsp;S.&nbsp;Duff, S.&nbsp;Hammarling,
<I>A set of Level 3 Basic Linear Algebra Subprograms</I>,
ACM Transactions on Mathematical Software, 16, 1990, 1-17.
<P></P><DT><A NAME="blas2">11</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra, J.&nbsp;Du Croz, S.&nbsp;Hammarling, R.&nbsp;J.&nbsp;Hanson,
<I>An extended set of FORTRAN Basic Linear Algebra Subprograms</I>,
ACM Transactions on Mathematical Software, 14, 1988, 1-17.
<P></P><DT><A NAME="BLACS">12</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra and R.&nbsp;C.&nbsp;Whaley,
<EM>A User's Guide to the BLACS v.&nbsp;1.1</EM>,
Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of
Tennessee, March 1995 (updated May 1997).
<P></P><DT><A NAME="EFSTATHIOU">13</A>
<DD>
E.&nbsp;Efstathiou, J.&nbsp;G.&nbsp;Gander,
<EM>Why Restricted Additive Schwarz Converges Faster than Additive Schwarz</EM>,
BIT Numerical Mathematics, 43, 2003, 945-959.
<P></P><DT><A NAME="PSBLASGUIDE">14</A>
<DD>
S.&nbsp;Filippone, A.&nbsp;Buttari,
<EM>PSBLAS-2.3 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library</EM>, 2008,
available from <TT>http://www.ce.uniroma2.it/psblas/</TT>.
<P></P><DT><A NAME="psblas_00">15</A>
<DD>
S.&nbsp;Filippone, M.&nbsp;Colajanni,
<EM>PSBLAS: A Library for Parallel Linear Algebra
Computation on Sparse Matrices</EM>,
ACM Transactions on Mathematical Software, 26, 4, 2000, 527-550.
<P></P><DT><A NAME="MPI2">16</A>
<DD>
W.&nbsp;Gropp, S.&nbsp;Huss-Lederman, A.&nbsp;Lumsdaine, E.&nbsp;Lusk, B.&nbsp;Nitzberg, W.&nbsp;Saphir, M.&nbsp;Snir,
<EM>MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions</EM>,
MIT Press, 1998.
<P></P><DT><A NAME="blas1">17</A>
<DD>
C.&nbsp;L.&nbsp;Lawson, R.&nbsp;J.&nbsp;Hanson, D.&nbsp;Kincaid, F.&nbsp;T.&nbsp;Krogh,
<I>Basic Linear Algebra Subprograms for FORTRAN usage</I>,
ACM Transactions on Mathematical Software, 5, 1979, 308-323.
<P></P><DT><A NAME="SUPERLUDIST">18</A>
<DD>
X.&nbsp;S.&nbsp;Li, J.&nbsp;W.&nbsp;Demmel, <EM>SuperLU_DIST: A Scalable Distributed-memory
Sparse Direct Solver for Unsymmetric Linear Systems</EM>,
ACM Transactions on Mathematical Software, 29, 2, 2003, 110-140.
<P></P><DT><A NAME="Saad_book">19</A>
<DD>
Y.&nbsp;Saad,
<I>Iterative methods for sparse linear systems</I>, 2nd edition,
SIAM, 2003
<P>
<P></P><DT><A NAME="dd2_96">20</A>
<DD>
B.&nbsp;Smith, P.&nbsp;Bjorstad, W.&nbsp;Gropp,
<EM>Domain Decomposition: Parallel Multilevel Methods for Elliptic
Partial Differential Equations</EM>,
Cambridge University Press, 1996.
<P></P><DT><A NAME="MPI1">21</A>
<DD>
M.&nbsp;Snir, S.&nbsp;Otto, S.&nbsp;Huss-Lederman, D.&nbsp;Walker, J.&nbsp;Dongarra,
<EM>MPI: The Complete Reference. Volume 1 - The MPI Core</EM>, second edition,
MIT Press, 1998.
<P></P><DT><A NAME="StubenGMD69_99">22</A>
<DD>
K.&nbsp;St&#252;ben,
<EM>Algebraic Multigrid (AMG): an Introduction with Applications</EM>,
in A.&nbsp;Sch&#252;ller, U.&nbsp;Trottenberg, C.&nbsp;Oosterlee, editors, Multigrid,
Academic Press, 2000.
<P></P><DT><A NAME="TUMINARO_TONG">23</A>
<DD>
R.&nbsp;S.&nbsp;Tuminaro, C.&nbsp;Tong,
<EM>Parallel Smoothed Aggregation Multigrid: Aggregation Strategies on Massively Parallel Machines</EM>,
in J. Donnelley, editor, Proceedings of SuperComputing 2000, Dallas, 2000.
<P></P><DT><A NAME="VANEK_MANDEL_BREZINA">24</A>
<DD>
P.&nbsp;Vanek, J.&nbsp;Mandel and M.&nbsp;Brezina,
<EM>Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems</EM>,
Computing, 56, 1996, 179-196.
<P>
</DL>
<P> <P>
The translation was initiated by Salvatore Filippone on 2008-07-24
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -1,4 +1,4 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--Converted with LaTeX2HTML 2002-2-1 (1.71) <!--Converted with LaTeX2HTML 2002-2-1 (1.71)
original version by: Nikos Drakos, CBLU, University of Leeds original version by: Nikos Drakos, CBLU, University of Leeds
@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Subroutine mld_precdescr</TITLE> <TITLE>About this document ...</TITLE>
<META NAME="description" CONTENT="Subroutine mld_precdescr"> <META NAME="description" CONTENT="About this document ...">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,73 +18,57 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node24.html"> <LINK REL="previous" HREF="node25.html">
<LINK REL="up" HREF="node15.html"> <LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node27.html">
</HEAD> </HEAD>
<BODY > <BODY >
<!--Navigation Panel-->
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html382"
HREF="node27.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next_g.png">
<A NAME="tex2html378" <A NAME="tex2html372"
HREF="node15.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html374" <A NAME="tex2html368"
HREF="node25.html"> HREF="node25.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html380" <A NAME="tex2html374"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html383" <B> Up:</B> <A NAME="tex2html373"
HREF="node27.html">Arguments</A> HREF="userhtml.html">userhtml</A>
<B> Up:</B> <A NAME="tex2html379" <B> Previous:</B> <A NAME="tex2html369"
HREF="node15.html">User Interface</A> HREF="node25.html">Bibliography</A>
<B> Previous:</B> <A NAME="tex2html375" &nbsp; <B> <A NAME="tex2html375"
HREF="node25.html">Arguments</A>
&nbsp; <B> <A NAME="tex2html381"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precdescr"></A>
<BR> <BR>
Subroutine mld_precdescr <!--End of Navigation Panel-->
</H2>
<H1><A NAME="SECTION000120000000000000000">
About this document ...</A>
</H1>
<P>
This document was generated using the
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.71)
<P> <P>
<DIV ALIGN="CENTER"> Copyright &#169; 1993, 1994, 1995, 1996,
<code>mld_precdescr(p,info)</code> <A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
<BR><code>mld_precdescr(p,info,iout)</code> Computer Based Learning Unit, University of Leeds.
<BR> <BR>
</DIV> Copyright &#169; 1997, 1998, 1999,
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
Mathematics Department, Macquarie University, Sydney.
<P> <P>
This routine prints a description of the preconditioner to the standard output or The command line arguments were: <BR>
to a file. It must be called after <code>mld_precbld</code> has been called. <STRONG>latex2html</STRONG> <TT>-noaddress -dir ../../html userhtml.tex</TT>
<P> <P>
The translation was initiated by Salvatore Filippone on 2008-07-24
<BR><HR> <BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL CLASS="ChildLinks">
<LI><A NAME="tex2html384"
HREF="node27.html">Arguments</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
<ADDRESS>
Salvatore Filippone
2008-07-23
</ADDRESS>
</BODY> </BODY>
</HTML> </HTML>

@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html94" <A NAME="tex2html96"
HREF="node4.html"> HREF="node4.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html90" <A NAME="tex2html92"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html84" <A NAME="tex2html86"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html92" <A NAME="tex2html94"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html95" <B> Next:</B> <A NAME="tex2html97"
HREF="node4.html">Code Distribution</A> HREF="node4.html">Code Distribution</A>
<B> Up:</B> <A NAME="tex2html91" <B> Up:</B> <A NAME="tex2html93"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html85" <B> Previous:</B> <A NAME="tex2html87"
HREF="node2.html">Contents</A> HREF="node2.html">Contents</A>
&nbsp; <B> <A NAME="tex2html93" &nbsp; <B> <A NAME="tex2html95"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
@ -63,7 +63,7 @@ General Overview
<P> <P>
The M<SMALL>ULTI-</SMALL>L<SMALL>EVEL </SMALL>D<SMALL>OMAIN </SMALL>D<SMALL>ECOMPOSITION </SMALL>P<SMALL>ARALLEL </SMALL>P<SMALL>RECONDITIONERS </SMALL>P<SMALL>ACKAGE BASED ON 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 <I>multi-level Schwarz preconditioners</I>&nbsp;[<A </SMALL>PSBLAS (MLD2P4) provides <I>multi-level Schwarz preconditioners</I>&nbsp;[<A
HREF="node24.html#dd2_96">20</A>], HREF="node25.html#dd2_96">20</A>],
to be used in the iterative solutions of sparse linear systems: to be used in the iterative solutions of sparse linear systems:
<BR> <BR>
<DIV ALIGN="RIGHT"> <DIV ALIGN="RIGHT">
@ -101,8 +101,8 @@ generate a sequence of coarse-level corrections to a basic AS preconditioner, wi
explicitly using any information on the geometry of the original problem (e.g. the explicitly using any information on the geometry of the original problem (e.g. the
discretization of a PDE). The <I>smoothed aggregation</I> technique is applied discretization of a PDE). The <I>smoothed aggregation</I> technique is applied
as algebraic coarsening strategy&nbsp;[<A as algebraic coarsening strategy&nbsp;[<A
HREF="node24.html#BREZINA_VANEK">1</A>,<A HREF="node25.html#BREZINA_VANEK">1</A>,<A
HREF="node24.html#VANEK_MANDEL_BREZINA">24</A>]. HREF="node25.html#VANEK_MANDEL_BREZINA">24</A>].
</LI> </LI>
</UL> </UL>
@ -120,7 +120,7 @@ real and the complex case, that can be used through a single interface.
MLD2P4 has been designed to implement scalable and easy-to-use multilevel preconditioners MLD2P4 has been designed to implement scalable and easy-to-use multilevel preconditioners
in the context of the <I>PSBLAS (Parallel Sparse BLAS) in the context of the <I>PSBLAS (Parallel Sparse BLAS)
computational framework</I>&nbsp;[<A computational framework</I>&nbsp;[<A
HREF="node24.html#psblas_00">15</A>]. HREF="node25.html#psblas_00">15</A>].
PSBLAS is a library originally developed to address the parallel implementation of PSBLAS is a library originally developed to address the parallel implementation of
iterative solvers for sparse linear system, by providing basic linear algebra iterative solvers for sparse linear system, by providing basic linear algebra
operators and data management facilities for distributed sparse matrices; it operators and data management facilities for distributed sparse matrices; it
@ -133,10 +133,10 @@ portability, modularity ed extensibility in the development of the preconditione
package. On the other hand, the implementation of MLD2P4 has led to some package. On the other hand, the implementation of MLD2P4 has led to some
revisions and extentions of the PSBLAS kernels, leading to the revisions and extentions of the PSBLAS kernels, leading to the
recent PSBLAS 2.0 version&nbsp;[<A recent PSBLAS 2.0 version&nbsp;[<A
HREF="node24.html#PSBLASGUIDE">14</A>]. The inter-process comunication required HREF="node25.html#PSBLASGUIDE">14</A>]. The inter-process comunication required
by MLD2P4 is encapsulated into the PSBLAS routines, except few cases where by MLD2P4 is encapsulated into the PSBLAS routines, except few cases where
MPI&nbsp;[<A MPI&nbsp;[<A
HREF="node24.html#MPI1">21</A>] is explicitly called. Therefore, MLD2P4 can be run on any parallel HREF="node25.html#MPI1">21</A>] is explicitly called. Therefore, MLD2P4 can be run on any parallel
machine where PSBLAS and MPI implementations are available. machine where PSBLAS and MPI implementations are available.
<P> <P>
@ -157,42 +157,42 @@ This guide is organized as follows. General information on the distribution of t
is reported in Section&nbsp;<A HREF="node4.html#sec:distribution">2</A>, while details on the configuration is reported in Section&nbsp;<A HREF="node4.html#sec:distribution">2</A>, while details on the configuration
and installation of the package are given in Section&nbsp;<A HREF="node5.html#sec:building">3</A>. A description of and installation of the package are given in Section&nbsp;<A HREF="node5.html#sec:building">3</A>. A description of
multi-level Schwarz preconditioners based on smoothed aggregation is provided multi-level Schwarz preconditioners based on smoothed aggregation is provided
in Section&nbsp;<A HREF="node10.html#sec:background">4</A>, to help the users in choosing among the different preconditioners in Section&nbsp;<A HREF="node11.html#sec:background">4</A>, to help the users in choosing among the different preconditioners
implemented in MLD2P4. The basics for building and applying the preconditioners implemented in MLD2P4. The basics for building and applying the preconditioners
with the Krylov solvers implemented in PSBLAS are reported in Section&nbsp;<A HREF="node13.html#sec:started">5</A>, where the with the Krylov solvers implemented in PSBLAS are reported in Section&nbsp;<A HREF="node14.html#sec:started">5</A>, where the
Fortran 95 codes of a few sample programs are also shown. A reference guide for Fortran 95 codes of a few sample programs are also shown. A reference guide for
the upper-layer routines of MLD2P4, that are the user interface, is provided the upper-layer routines of MLD2P4, that are the user interface, is provided
in Section&nbsp;<A HREF="node15.html#sec:userinterface">6</A>. The error handling mechanism used by the package is briefly described in Section&nbsp;<A HREF="node16.html#sec:userinterface">6</A>. The error handling mechanism used by the package is briefly described
in Section&nbsp;<A HREF="node22.html#sec:errors">7</A>. The copyright terms concerning the distribution and modification in Section&nbsp;<A HREF="node23.html#sec:errors">7</A>. The copyright terms concerning the distribution and modification
of MLD2P4 are reported in Appendix&nbsp;<A HREF="node23.html#sec:license">A</A>. of MLD2P4 are reported in Appendix&nbsp;<A HREF="node24.html#sec:license">A</A>.
<P> <P>
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html94" <A NAME="tex2html96"
HREF="node4.html"> HREF="node4.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html90" <A NAME="tex2html92"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html84" <A NAME="tex2html86"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html92" <A NAME="tex2html94"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html95" <B> Next:</B> <A NAME="tex2html97"
HREF="node4.html">Code Distribution</A> HREF="node4.html">Code Distribution</A>
<B> Up:</B> <A NAME="tex2html91" <B> Up:</B> <A NAME="tex2html93"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html85" <B> Previous:</B> <A NAME="tex2html87"
HREF="node2.html">Contents</A> HREF="node2.html">Contents</A>
&nbsp; <B> <A NAME="tex2html93" &nbsp; <B> <A NAME="tex2html95"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html106" <A NAME="tex2html108"
HREF="node5.html"> HREF="node5.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html102" <A NAME="tex2html104"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html96" <A NAME="tex2html98"
HREF="node3.html"> HREF="node3.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html104" <A NAME="tex2html106"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html107" <B> Next:</B> <A NAME="tex2html109"
HREF="node5.html">Configuring and Building MLD2P4</A> HREF="node5.html">Configuring and Building MLD2P4</A>
<B> Up:</B> <A NAME="tex2html103" <B> Up:</B> <A NAME="tex2html105"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html97" <B> Previous:</B> <A NAME="tex2html99"
HREF="node3.html">General Overview</A> HREF="node3.html">General Overview</A>
&nbsp; <B> <A NAME="tex2html105" &nbsp; <B> <A NAME="tex2html107"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
@ -72,7 +72,7 @@ To report bugs or ask general usage questions, please, send an email to
<P> <P>
The software is available under a modified BSD license, as specified The software is available under a modified BSD license, as specified
in Appendix&nbsp;<A HREF="node23.html#sec:license">A</A>; please note that some of the optional in Appendix&nbsp;<A HREF="node24.html#sec:license">A</A>; please note that some of the optional
third party libraries may be licensed under a different and more third party libraries may be licensed under a different and more
stringent license, most notably the GPL, and this should be taken into stringent license, most notably the GPL, and this should be taken into
account when treating derived works. account when treating derived works.

@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node10.html"> <LINK REL="next" HREF="node11.html">
<LINK REL="previous" HREF="node4.html"> <LINK REL="previous" HREF="node4.html">
<LINK REL="up" HREF="userhtml.html"> <LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node6.html"> <LINK REL="next" HREF="node6.html">
@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html118" <A NAME="tex2html120"
HREF="node6.html"> HREF="node6.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html114" <A NAME="tex2html116"
HREF="userhtml.html"> HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html108" <A NAME="tex2html110"
HREF="node4.html"> HREF="node4.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html116" <A NAME="tex2html118"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html119" <B> Next:</B> <A NAME="tex2html121"
HREF="node6.html">Prerequisites</A> HREF="node6.html">Prerequisites</A>
<B> Up:</B> <A NAME="tex2html115" <B> Up:</B> <A NAME="tex2html117"
HREF="userhtml.html">userhtml</A> HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html109" <B> Previous:</B> <A NAME="tex2html111"
HREF="node4.html">Code Distribution</A> HREF="node4.html">Code Distribution</A>
&nbsp; <B> <A NAME="tex2html117" &nbsp; <B> <A NAME="tex2html119"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
@ -84,14 +84,16 @@ real and complex data, in both single and double precision.
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A> <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL> <UL>
<LI><A NAME="tex2html120" <LI><A NAME="tex2html122"
HREF="node6.html">Prerequisites</A> HREF="node6.html">Prerequisites</A>
<LI><A NAME="tex2html121" <LI><A NAME="tex2html123"
HREF="node7.html">Optional third party libraries</A> HREF="node7.html">Optional third party libraries</A>
<LI><A NAME="tex2html122" <LI><A NAME="tex2html124"
HREF="node8.html">Configuration options</A> HREF="node8.html">Configuration options</A>
<LI><A NAME="tex2html123" <LI><A NAME="tex2html125"
HREF="node9.html">Example and test programs</A> HREF="node9.html">Bug reporting</A>
<LI><A NAME="tex2html126"
HREF="node10.html">Example and test programs</A>
</UL> </UL>
<!--End of Table of Child-Links--> <!--End of Table of Child-Links-->
<BR><HR> <BR><HR>

@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html134" <A NAME="tex2html137"
HREF="node7.html"> HREF="node7.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html130" <A NAME="tex2html133"
HREF="node5.html"> HREF="node5.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html124" <A NAME="tex2html127"
HREF="node5.html"> HREF="node5.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html132" <A NAME="tex2html135"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html135" <B> Next:</B> <A NAME="tex2html138"
HREF="node7.html">Optional third party libraries</A> HREF="node7.html">Optional third party libraries</A>
<B> Up:</B> <A NAME="tex2html131" <B> Up:</B> <A NAME="tex2html134"
HREF="node5.html">Configuring and Building MLD2P4</A> HREF="node5.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html125" <B> Previous:</B> <A NAME="tex2html128"
HREF="node5.html">Configuring and Building MLD2P4</A> HREF="node5.html">Configuring and Building MLD2P4</A>
&nbsp; <B> <A NAME="tex2html133" &nbsp; <B> <A NAME="tex2html136"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
@ -64,9 +64,9 @@ The following base libraries are needed:
<DL> <DL>
<DT><STRONG>BLAS</STRONG></DT> <DT><STRONG>BLAS</STRONG></DT>
<DD>[<A <DD>[<A
HREF="node24.html#blas3">10</A>,<A HREF="node25.html#blas3">10</A>,<A
HREF="node24.html#blas2">11</A>,<A HREF="node25.html#blas2">11</A>,<A
HREF="node24.html#blas1">17</A>] Many vendors provide optimized versions HREF="node25.html#blas1">17</A>] Many vendors provide optimized versions
of the Basic Linear Algebra Subprograms; if no vendor version is of the Basic Linear Algebra Subprograms; if no vendor version is
available for a given platform, the ATLAS software available for a given platform, the ATLAS software
(<code>http://math-atlas.sourceforge.net/</code>) (<code>http://math-atlas.sourceforge.net/</code>)
@ -81,13 +81,13 @@ The following base libraries are needed:
</DD> </DD>
<DT><STRONG>MPI</STRONG></DT> <DT><STRONG>MPI</STRONG></DT>
<DD>[<A <DD>[<A
HREF="node24.html#MPI2">16</A>,<A HREF="node25.html#MPI2">16</A>,<A
HREF="node24.html#MPI1">21</A>] A version of MPI is available on most HREF="node25.html#MPI1">21</A>] A version of MPI is available on most
high-performance computing systems; only version 1.1 is required. high-performance computing systems; only version 1.1 is required.
</DD> </DD>
<DT><STRONG>BLACS</STRONG></DT> <DT><STRONG>BLACS</STRONG></DT>
<DD>[<A <DD>[<A
HREF="node24.html#BLACS">12</A>] The Basic Linear Algebra Communication Subprograms HREF="node25.html#BLACS">12</A>] The Basic Linear Algebra Communication Subprograms
are available in source form from <code>http://www.netlib.org/blacs</code>; are available in source form from <code>http://www.netlib.org/blacs</code>;
some vendors include them in their parallel computing some vendors include them in their parallel computing
support libraries. support libraries.
@ -95,8 +95,8 @@ The following base libraries are needed:
</DD> </DD>
<DT><STRONG>PSBLAS</STRONG></DT> <DT><STRONG>PSBLAS</STRONG></DT>
<DD>[<A <DD>[<A
HREF="node24.html#PSBLASGUIDE">14</A>,<A HREF="node25.html#PSBLASGUIDE">14</A>,<A
HREF="node24.html#psblas_00">15</A>] Parallel Sparse BLAS is HREF="node25.html#psblas_00">15</A>] Parallel Sparse BLAS is
available from available from
<BR><code>http://www.ce.uniroma2.it/psblas</code>; version 2.3 <BR><code>http://www.ce.uniroma2.it/psblas</code>; version 2.3
(or later) is required. Indeed, all the prerequisites (or later) is required. Indeed, all the prerequisites
@ -117,30 +117,30 @@ compiler as MLD2P4.
<P> <P>
<HR> <HR>
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html134" <A NAME="tex2html137"
HREF="node7.html"> HREF="node7.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html130" <A NAME="tex2html133"
HREF="node5.html"> HREF="node5.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html124" <A NAME="tex2html127"
HREF="node5.html"> HREF="node5.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html132" <A NAME="tex2html135"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html135" <B> Next:</B> <A NAME="tex2html138"
HREF="node7.html">Optional third party libraries</A> HREF="node7.html">Optional third party libraries</A>
<B> Up:</B> <A NAME="tex2html131" <B> Up:</B> <A NAME="tex2html134"
HREF="node5.html">Configuring and Building MLD2P4</A> HREF="node5.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html125" <B> Previous:</B> <A NAME="tex2html128"
HREF="node5.html">Configuring and Building MLD2P4</A> HREF="node5.html">Configuring and Building MLD2P4</A>
&nbsp; <B> <A NAME="tex2html133" &nbsp; <B> <A NAME="tex2html136"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->

@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html146" <A NAME="tex2html149"
HREF="node8.html"> HREF="node8.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html142" <A NAME="tex2html145"
HREF="node5.html"> HREF="node5.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html136" <A NAME="tex2html139"
HREF="node6.html"> HREF="node6.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html144" <A NAME="tex2html147"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html147" <B> Next:</B> <A NAME="tex2html150"
HREF="node8.html">Configuration options</A> HREF="node8.html">Configuration options</A>
<B> Up:</B> <A NAME="tex2html143" <B> Up:</B> <A NAME="tex2html146"
HREF="node5.html">Configuring and Building MLD2P4</A> HREF="node5.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html137" <B> Previous:</B> <A NAME="tex2html140"
HREF="node6.html">Prerequisites</A> HREF="node6.html">Prerequisites</A>
&nbsp; <B> <A NAME="tex2html145" &nbsp; <B> <A NAME="tex2html148"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
@ -68,7 +68,7 @@ for multilevel preconditioners may change to reflect their presence.
<DL> <DL>
<DT><STRONG>UMFPACK</STRONG></DT> <DT><STRONG>UMFPACK</STRONG></DT>
<DD>[<A <DD>[<A
HREF="node24.html#UMFPACK">8</A>] HREF="node25.html#UMFPACK">8</A>]
A sparse direct factorization package available from A sparse direct factorization package available from
<BR> <code>http://www.cise.ufl.edu/research/sparse/umfpack/</code>; <BR> <code>http://www.cise.ufl.edu/research/sparse/umfpack/</code>;
provides serial factorization and triangular system solution for double provides serial factorization and triangular system solution for double
@ -77,7 +77,7 @@ for multilevel preconditioners may change to reflect their presence.
</DD> </DD>
<DT><STRONG>SuperLU</STRONG></DT> <DT><STRONG>SuperLU</STRONG></DT>
<DD>[<A <DD>[<A
HREF="node24.html#SUPERLU">9</A>] HREF="node25.html#SUPERLU">9</A>]
A sparse direct factorization package available from A sparse direct factorization package available from
<BR> <code>http://crd.lbl.gov/~xiaoye/SuperLU/</code>; provides serial <BR> <code>http://crd.lbl.gov/~xiaoye/SuperLU/</code>; provides serial
factorization and triangular system solution for single and double precision, factorization and triangular system solution for single and double precision,
@ -85,7 +85,7 @@ for multilevel preconditioners may change to reflect their presence.
</DD> </DD>
<DT><STRONG>SuperLU_Dist</STRONG></DT> <DT><STRONG>SuperLU_Dist</STRONG></DT>
<DD>[<A <DD>[<A
HREF="node24.html#SUPERLUDIST">18</A>] HREF="node25.html#SUPERLUDIST">18</A>]
A sparse direct factorization package available A sparse direct factorization package available
from the same site as SuperLU; provides parallel factorization and from the same site as SuperLU; provides parallel factorization and
triangular system solution for double precision real and complex data. triangular system solution for double precision real and complex data.

@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html158" <A NAME="tex2html161"
HREF="node9.html"> HREF="node9.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html154" <A NAME="tex2html157"
HREF="node5.html"> HREF="node5.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html148" <A NAME="tex2html151"
HREF="node7.html"> HREF="node7.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html156" <A NAME="tex2html159"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html159" <B> Next:</B> <A NAME="tex2html162"
HREF="node9.html">Example and test programs</A> HREF="node9.html">Bug reporting</A>
<B> Up:</B> <A NAME="tex2html155" <B> Up:</B> <A NAME="tex2html158"
HREF="node5.html">Configuring and Building MLD2P4</A> HREF="node5.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html149" <B> Previous:</B> <A NAME="tex2html152"
HREF="node7.html">Optional third party libraries</A> HREF="node7.html">Optional third party libraries</A>
&nbsp; <B> <A NAME="tex2html157" &nbsp; <B> <A NAME="tex2html160"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
@ -201,8 +201,6 @@ followed (optionally) by
<PRE> <PRE>
make install make install
</PRE> </PRE>
<P>
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others --> Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Example and test programs</TITLE> <TITLE>Bug reporting</TITLE>
<META NAME="description" CONTENT="Example and test programs"> <META NAME="description" CONTENT="Bug reporting">
<META NAME="keywords" CONTENT="userhtml"> <META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document"> <META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global"> <META NAME="distribution" CONTENT="global">
@ -18,6 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node10.html">
<LINK REL="previous" HREF="node8.html"> <LINK REL="previous" HREF="node8.html">
<LINK REL="up" HREF="node5.html"> <LINK REL="up" HREF="node5.html">
<LINK REL="next" HREF="node10.html"> <LINK REL="next" HREF="node10.html">
@ -25,60 +26,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY > <BODY >
<!--Navigation Panel--> <!--Navigation Panel-->
<A NAME="tex2html168" <A NAME="tex2html173"
HREF="node10.html"> HREF="node10.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A> SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html164" <A NAME="tex2html169"
HREF="node5.html"> HREF="node5.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A> SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html160" <A NAME="tex2html163"
HREF="node8.html"> HREF="node8.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A> SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html166" <A NAME="tex2html171"
HREF="node2.html"> HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A> SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR> <BR>
<B> Next:</B> <A NAME="tex2html169" <B> Next:</B> <A NAME="tex2html174"
HREF="node10.html">Multi-level Domain Decomposition Background</A> HREF="node10.html">Example and test programs</A>
<B> Up:</B> <A NAME="tex2html165" <B> Up:</B> <A NAME="tex2html170"
HREF="node5.html">Configuring and Building MLD2P4</A> HREF="node5.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html161" <B> Previous:</B> <A NAME="tex2html164"
HREF="node8.html">Configuration options</A> HREF="node8.html">Configuration options</A>
&nbsp; <B> <A NAME="tex2html167" &nbsp; <B> <A NAME="tex2html172"
HREF="node2.html">Contents</A></B> HREF="node2.html">Contents</A></B>
<BR> <BR>
<BR> <BR>
<!--End of Navigation Panel--> <!--End of Navigation Panel-->
<H2><A NAME="SECTION00054000000000000000"></A><A NAME="sec:ex_and_test"></A> <H2><A NAME="SECTION00054000000000000000">
<BR> Bug reporting</A>
Example and test programs
</H2> </H2>
The package contains the <code>examples</code> and <code>tests</code> directories; If you find any bugs in our codes, please let us know at
both of them are further divided into <code>fileread</code> and
<code>pdegen</code> subdirectories. Their purpose is as follows: <a href="mailto:bugreport@mld2p4.it">
<DL> bugreport@mld2p4.it
<DT><STRONG><TT>examples</TT></STRONG></DT>
<DD>contains a set of simple example programs with a </a>
predefined choice of preconditioners, selectable via integer ; be aware that
values. These are intended to get an acquaintance with the the amount of information needed to reproduce a problem in a parallel
multilevel preconditioners. program may vary quite a lot.
</DD>
<DT><STRONG><TT>tests</TT></STRONG></DT>
<DD>contains a set of more sophisticated examples that
will allow the user, via the input files in the <code>runs</code>
subdirectories, to experiment with the full range of preconditioners
implemented in the library.
</DD>
</DL>
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> instead generate
matrices in full parallel mode from the discretization of a sample PDE.
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -97,50 +97,52 @@ July 24, 2008
<LI><A NAME="tex2html22" <LI><A NAME="tex2html22"
HREF="node8.html">Configuration options</A> HREF="node8.html">Configuration options</A>
<LI><A NAME="tex2html23" <LI><A NAME="tex2html23"
HREF="node9.html">Example and test programs</A> HREF="node9.html">Bug reporting</A>
<LI><A NAME="tex2html24"
HREF="node10.html">Example and test programs</A>
</UL> </UL>
<BR> <BR>
<LI><A NAME="tex2html24"
HREF="node10.html">Multi-level Domain Decomposition Background</A>
<UL>
<LI><A NAME="tex2html25" <LI><A NAME="tex2html25"
HREF="node11.html">Multi-level Schwarz Preconditioners</A> HREF="node11.html">Multi-level Domain Decomposition Background</A>
<UL>
<LI><A NAME="tex2html26" <LI><A NAME="tex2html26"
HREF="node12.html">Smoothed Aggregation</A> HREF="node12.html">Multi-level Schwarz Preconditioners</A>
<LI><A NAME="tex2html27"
HREF="node13.html">Smoothed Aggregation</A>
</UL> </UL>
<BR> <BR>
<LI><A NAME="tex2html27"
HREF="node13.html">Getting Started</A>
<UL>
<LI><A NAME="tex2html28" <LI><A NAME="tex2html28"
HREF="node14.html">Examples</A> HREF="node14.html">Getting Started</A>
<UL>
<LI><A NAME="tex2html29"
HREF="node15.html">Examples</A>
</UL> </UL>
<BR> <BR>
<LI><A NAME="tex2html29"
HREF="node15.html">User Interface</A>
<UL>
<LI><A NAME="tex2html30" <LI><A NAME="tex2html30"
HREF="node16.html">Subroutine mld_precinit</A> HREF="node16.html">User Interface</A>
<UL>
<LI><A NAME="tex2html31" <LI><A NAME="tex2html31"
HREF="node17.html">Subroutine mld_precset</A> HREF="node17.html">Subroutine mld_precinit</A>
<LI><A NAME="tex2html32" <LI><A NAME="tex2html32"
HREF="node18.html">Subroutine mld_precbld</A> HREF="node18.html">Subroutine mld_precset</A>
<LI><A NAME="tex2html33" <LI><A NAME="tex2html33"
HREF="node19.html">Subroutine mld_precaply</A> HREF="node19.html">Subroutine mld_precbld</A>
<LI><A NAME="tex2html34" <LI><A NAME="tex2html34"
HREF="node20.html">Subroutine mld_precfree</A> HREF="node20.html">Subroutine mld_precaply</A>
<LI><A NAME="tex2html35" <LI><A NAME="tex2html35"
HREF="node21.html">Subroutine mld_precdescr</A> HREF="node21.html">Subroutine mld_precfree</A>
<LI><A NAME="tex2html36"
HREF="node22.html">Subroutine mld_precdescr</A>
</UL> </UL>
<BR> <BR>
<LI><A NAME="tex2html36"
HREF="node22.html">Error Handling</A>
<LI><A NAME="tex2html37" <LI><A NAME="tex2html37"
HREF="node23.html">License</A> HREF="node23.html">Error Handling</A>
<LI><A NAME="tex2html38" <LI><A NAME="tex2html38"
HREF="node24.html">Bibliography</A> HREF="node24.html">License</A>
<LI><A NAME="tex2html39" <LI><A NAME="tex2html39"
HREF="node25.html">About this document ...</A> HREF="node25.html">Bibliography</A>
<LI><A NAME="tex2html40"
HREF="node26.html">About this document ...</A>
</UL> </UL>
<!--End of Table of Child-Links--> <!--End of Table of Child-Links-->
<BR><HR> <BR><HR>

@ -307,7 +307,7 @@ endef
define pdflatex-filter define pdflatex-filter
@echo @echo
@echo "----- latex -------------------------------------------------------" @echo "----- pdflatex -------------------------------------------------------"
@echo -n "Starting: "; date @echo -n "Starting: "; date
@echo @echo
cd tmp; ($(PDFLATEX) $(TOPFILE) 2>&1) | $(FILTER) cd tmp; ($(PDFLATEX) $(TOPFILE) 2>&1) | $(FILTER)

@ -221,7 +221,18 @@ followed (optionally) by
\begin{verbatim} \begin{verbatim}
make install make install
\end{verbatim} \end{verbatim}
\subsection{Bug reporting}
If you find any bugs in our codes, please let us know at
\begin{rawhtml}
<a href="mailto:bugreport@mld2p4.it">
\end{rawhtml}
bugreport@mld2p4.it
\begin{rawhtml}
</a>
\end{rawhtml}
; be aware that
the amount of information needed to reproduce a problem in a parallel
program may vary quite a lot.
\subsection{Example and test programs\label{sec:ex_and_test}} \subsection{Example and test programs\label{sec:ex_and_test}}
The package contains the \verb|examples| and \verb|tests| directories; The package contains the \verb|examples| and \verb|tests| directories;
both of them are further divided into \verb|fileread| and both of them are further divided into \verb|fileread| and

@ -13,6 +13,7 @@
colorlinks, colorlinks,
citecolor=red, citecolor=red,
linkcolor=blue]{hyperref} linkcolor=blue]{hyperref}
\usepackage{html}
\usepackage{ifthen} \usepackage{ifthen}
\usepackage{graphicx} \usepackage{graphicx}
\newtheorem{theorem}{Theorem} \newtheorem{theorem}{Theorem}

@ -12,6 +12,7 @@
pdfpagelabels, pdfpagelabels,
colorlinks, colorlinks,
linkcolor=blue]{hyperref} linkcolor=blue]{hyperref}
\usepackage{html}
\usepackage{ifthen} \usepackage{ifthen}
\usepackage{graphicx} \usepackage{graphicx}
\newtheorem{theorem}{Theorem} \newtheorem{theorem}{Theorem}
@ -89,7 +90,7 @@
\newcommand{\Ref}[1]{\mbox{(\ref{#1})}} \newcommand{\Ref}[1]{\mbox{(\ref{#1})}}
\begin{document} \begin{document}
{\Large\bfseries MLD2P4\\[.8ex] User's and Reference Guide}\\[\baselineskip] {\LARGE\bfseries MLD2P4\\[.8ex] User's and Reference Guide}\\[\baselineskip]
\emph{\large A guide for the Multi-Level Domain Decomposition \emph{\large A guide for the Multi-Level Domain Decomposition
Parallel Preconditioners Package Parallel Preconditioners Package
based on PSBLAS}\\[3ex] based on PSBLAS}\\[3ex]

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save