mld2p4-2:
Docs updates.
|
Before Width: | Height: | Size: 203 B After Width: | Height: | Size: 412 B |
|
Before Width: | Height: | Size: 243 B After Width: | Height: | Size: 191 B |
|
Before Width: | Height: | Size: 222 B After Width: | Height: | Size: 243 B |
|
Before Width: | Height: | Size: 469 B After Width: | Height: | Size: 780 B |
|
Before Width: | Height: | Size: 508 B After Width: | Height: | Size: 185 B |
|
Before Width: | Height: | Size: 540 B After Width: | Height: | Size: 209 B |
|
Before Width: | Height: | Size: 343 B After Width: | Height: | Size: 399 B |
|
Before Width: | Height: | Size: 264 B After Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 316 B After Width: | Height: | Size: 250 B |
|
Before Width: | Height: | Size: 583 B After Width: | Height: | Size: 447 B |
|
Before Width: | Height: | Size: 365 B After Width: | Height: | Size: 200 B |
|
Before Width: | Height: | Size: 480 B After Width: | Height: | Size: 197 B |
|
Before Width: | Height: | Size: 185 B After Width: | Height: | Size: 316 B |
|
Before Width: | Height: | Size: 283 B After Width: | Height: | Size: 329 B |
|
Before Width: | Height: | Size: 321 B After Width: | Height: | Size: 207 B |
|
Before Width: | Height: | Size: 262 B After Width: | Height: | Size: 201 B |
|
Before Width: | Height: | Size: 896 B After Width: | Height: | Size: 318 B |
|
Before Width: | Height: | Size: 319 B After Width: | Height: | Size: 223 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 675 B |
|
Before Width: | Height: | Size: 273 B After Width: | Height: | Size: 474 B |
|
Before Width: | Height: | Size: 398 B After Width: | Height: | Size: 206 B |
|
Before Width: | Height: | Size: 355 B After Width: | Height: | Size: 270 B |
|
Before Width: | Height: | Size: 439 B After Width: | Height: | Size: 255 B |
|
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 176 B |
|
Before Width: | Height: | Size: 721 B After Width: | Height: | Size: 610 B |
|
Before Width: | Height: | Size: 206 B After Width: | Height: | Size: 242 B |
|
Before Width: | Height: | Size: 270 B After Width: | Height: | Size: 252 B |
|
Before Width: | Height: | Size: 719 B After Width: | Height: | Size: 193 B |
|
Before Width: | Height: | Size: 299 B After Width: | Height: | Size: 211 B |
|
Before Width: | Height: | Size: 283 B After Width: | Height: | Size: 583 B |
|
Before Width: | Height: | Size: 657 B After Width: | Height: | Size: 653 B |
|
Before Width: | Height: | Size: 503 B After Width: | Height: | Size: 652 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 337 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 660 B |
|
Before Width: | Height: | Size: 541 B After Width: | Height: | Size: 531 B |
|
Before Width: | Height: | Size: 559 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 797 B After Width: | Height: | Size: 259 B |
|
Before Width: | Height: | Size: 224 B After Width: | Height: | Size: 255 B |
|
Before Width: | Height: | Size: 315 B After Width: | Height: | Size: 238 B |
@@ -23,18 +23,18 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html24"
|
||||
<A NAME="tex2html23"
|
||||
HREF="node1.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png">
|
||||
<A NAME="tex2html22"
|
||||
<A NAME="tex2html21"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html25"
|
||||
<B> Next:</B> <A NAME="tex2html24"
|
||||
HREF="node1.html">Abstract</A>
|
||||
<B> <A NAME="tex2html23"
|
||||
<B> <A NAME="tex2html22"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -77,76 +77,74 @@ Feb. 28, 2017
|
||||
<A NAME="CHILD_LINKS"></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html26"
|
||||
<LI><A NAME="tex2html25"
|
||||
HREF="node1.html">Abstract</A>
|
||||
<LI><A NAME="tex2html27"
|
||||
<LI><A NAME="tex2html26"
|
||||
HREF="node2.html">Contents</A>
|
||||
<LI><A NAME="tex2html28"
|
||||
<LI><A NAME="tex2html27"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<LI><A NAME="tex2html29"
|
||||
<LI><A NAME="tex2html28"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<LI><A NAME="tex2html30"
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html31"
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html32"
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html34"
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html37"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html38"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
HREF="node14.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html39"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
HREF="node15.html">User Interface</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html40"
|
||||
HREF="node15.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node16.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html41"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<UL>
|
||||
HREF="node17.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html42"
|
||||
HREF="node17.html">Subroutine init</A>
|
||||
HREF="node18.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html43"
|
||||
HREF="node18.html">Subroutine set</A>
|
||||
HREF="node19.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html44"
|
||||
HREF="node19.html">Subroutine bld</A>
|
||||
HREF="node20.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html45"
|
||||
HREF="node20.html">Subroutine hierarchy_bld</A>
|
||||
HREF="node21.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html46"
|
||||
HREF="node21.html">Subroutine smoothers_bld</A>
|
||||
HREF="node22.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html47"
|
||||
HREF="node22.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html48"
|
||||
HREF="node23.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html49"
|
||||
HREF="node24.html">Subroutine descr</A>
|
||||
HREF="node23.html">Subroutine descr</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html48"
|
||||
HREF="node24.html">Adding smoothers and solvers to MLD2P4</A>
|
||||
<LI><A NAME="tex2html49"
|
||||
HREF="node25.html">Error Handling</A>
|
||||
<LI><A NAME="tex2html50"
|
||||
HREF="node25.html">Adding smoothers and solvers to MLD2P4</A>
|
||||
HREF="node26.html">License</A>
|
||||
<LI><A NAME="tex2html51"
|
||||
HREF="node26.html">Error Handling</A>
|
||||
HREF="node27.html">Bibliography</A>
|
||||
<LI><A NAME="tex2html52"
|
||||
HREF="node27.html">License</A>
|
||||
<LI><A NAME="tex2html53"
|
||||
HREF="node28.html">Bibliography</A>
|
||||
<LI><A NAME="tex2html54"
|
||||
HREF="node29.html">About this document ...</A>
|
||||
HREF="node28.html">About this document ...</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
|
||||
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html65"
|
||||
<A NAME="tex2html63"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html61"
|
||||
<A NAME="tex2html59"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html55"
|
||||
<A NAME="tex2html53"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html63"
|
||||
<A NAME="tex2html61"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html66"
|
||||
<B> Next:</B> <A NAME="tex2html64"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> Up:</B> <A NAME="tex2html62"
|
||||
<B> Up:</B> <A NAME="tex2html60"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html56"
|
||||
<B> Previous:</B> <A NAME="tex2html54"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> <A NAME="tex2html64"
|
||||
<B> <A NAME="tex2html62"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -55,24 +55,22 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Abstract</A>
|
||||
</H1>
|
||||
|
||||
MLD2P4 (M<SMALL>ULTI-</SMALL>L<SMALL>EVEL </SMALL>D<SMALL>OMAIN </SMALL>D<SMALL>ECOMPOSITION </SMALL>P<SMALL>ARALLEL </SMALL>P<SMALL>RECONDITIONERS </SMALL>P<SMALL>ACKAGE BASED ON
|
||||
</SMALL>PSBLAS) is a package of parallel algebraic multi-level preconditioners.
|
||||
The first release made available various versions of
|
||||
one-level additive and multi-level additive
|
||||
and hybrid Schwarz preconditioners.
|
||||
The package has been extended to include further multi-level cycles and smoothers widely used in
|
||||
multigrid methods.
|
||||
In the multi-level case, a purely algebraic approach
|
||||
is applied to generate coarse-level corrections, so that no geometric background is needed
|
||||
concerning the matrix to be preconditioned. The matrix is assumed to be square, real
|
||||
or complex.
|
||||
MLD2P4 (M<SMALL>ULTI-</SMALL>L<SMALL>EVEL </SMALL>D<SMALL>OMAIN </SMALL>D<SMALL>ECOMPOSITION </SMALL>P<SMALL>ARALLEL </SMALL>P<SMALL>RECONDITIONERS </SMALL>P<SMALL>ACKAGE
|
||||
BASED ON </SMALL>PSBLAS) is a package of parallel algebraic multi-level preconditioners.
|
||||
The first release of MLD2P4 made available multi-level additive and hybrid Schwarz
|
||||
preconditioners, as well as one-level additive Schwarz preconditioners. The package
|
||||
has been extended to include further multi-level cycles and smoothers widely used in
|
||||
multigrid methods. In the multi-level case, a purely algebraic approach is applied to
|
||||
generate coarse-level corrections, so that no geometric background is needed
|
||||
concerning the matrix to be preconditioned. The matrix is assumed to be square,
|
||||
real or complex.
|
||||
|
||||
<P>
|
||||
MLD2P4 has been designed to provide scalable and easy-to-use preconditioners in the
|
||||
context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)
|
||||
MLD2P4 has been designed to provide scalable and easy-to-use preconditioners
|
||||
in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)
|
||||
computational framework and can be used in conjuction with the Krylov solvers
|
||||
available in this framework. MLD2P4 enables the user to easily specify different features
|
||||
of an algebraic multi-level preconditioner, thus allowing to search
|
||||
available in this framework. MLD2P4 enables the user to easily specify different
|
||||
features of an algebraic multi-level preconditioner, thus allowing to search
|
||||
for the ``best'' preconditioner for the problem at hand.
|
||||
|
||||
<P>
|
||||
@@ -92,26 +90,26 @@ the user interface of MLD2P4.
|
||||
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html65"
|
||||
<A NAME="tex2html63"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html61"
|
||||
<A NAME="tex2html59"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html55"
|
||||
<A NAME="tex2html53"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html63"
|
||||
<A NAME="tex2html61"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html66"
|
||||
<B> Next:</B> <A NAME="tex2html64"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> Up:</B> <A NAME="tex2html62"
|
||||
<B> Up:</B> <A NAME="tex2html60"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html56"
|
||||
<B> Previous:</B> <A NAME="tex2html54"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> <A NAME="tex2html64"
|
||||
<B> <A NAME="tex2html62"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
@@ -25,26 +25,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html200"
|
||||
<A NAME="tex2html197"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html196"
|
||||
<A NAME="tex2html193"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html192"
|
||||
<A NAME="tex2html189"
|
||||
HREF="node9.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html198"
|
||||
<A NAME="tex2html195"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html201"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Up:</B> <A NAME="tex2html197"
|
||||
<B> Next:</B> <A NAME="tex2html198"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<B> Up:</B> <A NAME="tex2html194"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html193"
|
||||
<B> Previous:</B> <A NAME="tex2html190"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<B> <A NAME="tex2html199"
|
||||
<B> <A NAME="tex2html196"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -62,19 +62,20 @@ both of them are further divided into <code>fileread</code> and
|
||||
<DD>contains a set of simple example programs with a
|
||||
predefined choice of preconditioners, selectable via integer
|
||||
values. These are intended to get an acquaintance with the
|
||||
multilevel preconditioners.
|
||||
multi-level preconditioners available in MLD2P4.
|
||||
</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.
|
||||
implemented in the package.
|
||||
</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.
|
||||
Harwell-Boeing storage format; the <code>pdegen</code> programs generate
|
||||
matrices in full parallel mode from the discretization of a sample partial
|
||||
differential equation.
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Multi-level Domain Decomposition Background</TITLE>
|
||||
<META NAME="description" CONTENT="Multi-level Domain Decomposition Background">
|
||||
<TITLE>Multigrid Background</TITLE>
|
||||
<META NAME="description" CONTENT="Multigrid Background">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node14.html">
|
||||
<LINK REL="next" HREF="node13.html">
|
||||
<LINK REL="previous" HREF="node5.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node12.html">
|
||||
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html212"
|
||||
<A NAME="tex2html209"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html208"
|
||||
<A NAME="tex2html205"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html202"
|
||||
<A NAME="tex2html199"
|
||||
HREF="node10.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html210"
|
||||
<A NAME="tex2html207"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html213"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html209"
|
||||
<B> Next:</B> <A NAME="tex2html210"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html206"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html203"
|
||||
<B> Previous:</B> <A NAME="tex2html200"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
<B> <A NAME="tex2html211"
|
||||
<B> <A NAME="tex2html208"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -53,126 +53,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<H1><A NAME="SECTION00060000000000000000"></A><A NAME="sec:background"></A>
|
||||
<BR>
|
||||
Multi-level Domain Decomposition Background
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
<I>Domain Decomposition</I> (DD) preconditioners, coupled with Krylov iterative
|
||||
solvers, are widely used in the parallel solution of large and sparse linear systems.
|
||||
These preconditioners are based on the divide and conquer technique: the matrix
|
||||
to be preconditioned is divided into submatrices, a ``local'' linear system
|
||||
involving each submatrix is (approximately) solved, and the local solutions are used
|
||||
to build a preconditioner for the whole original matrix. This process
|
||||
often corresponds to dividing a physical domain associated to the original matrix
|
||||
into subdomains, e.g. in a PDE discretization, to (approximately) solving the
|
||||
subproblems corresponding to the subdomains and to building an approximate
|
||||
solution of the original problem from the local solutions
|
||||
[<A
|
||||
HREF="node28.html#Cai_Widlund_92">6</A>,<A
|
||||
HREF="node28.html#dd1_94">7</A>,<A
|
||||
HREF="node28.html#dd2_96">23</A>].
|
||||
|
||||
<P>
|
||||
<I>Additive Schwarz</I> preconditioners are DD preconditioners using overlapping
|
||||
submatrices, i.e. with some common rows, to couple the local information
|
||||
related to the submatrices (see, e.g., [<A
|
||||
HREF="node28.html#dd2_96">23</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="node28.html#dd2_96">23</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="node28.html#Stuben_01">25</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="node28.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node28.html#VANEK_MANDEL_BREZINA">27</A>]. A decoupled version
|
||||
of this algorithm is implemented, where the smoothed aggregation is applied locally
|
||||
to each submatrix [<A
|
||||
HREF="node28.html#TUMINARO_TONG">26</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 reader
|
||||
is referred to [<A
|
||||
HREF="node28.html#para_04">2</A>,<A
|
||||
HREF="node28.html#aaecc_07">3</A>,<A
|
||||
HREF="node28.html#apnum_07">4</A>,<A
|
||||
HREF="node28.html#MLD2P4_TOMS">8</A>,<A
|
||||
HREF="node28.html#dd2_96">23</A>].
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
Multigrid Background
|
||||
</H1>␍␍␍Multigrid preconditioners, coupled with Krylov iterative␍solvers, are widely used in the parallel solution of large and sparse linear systems,␍because of their optimality in the solution of linear systems arising from the␍discretization of scalar elliptic Partial Differential Equations (PDEs) on regular grids.␍Optimality, also known as algorithmic scalability, is the property ␍of having a computational cost per iteration that depends linearly on␍the problem size, and a convergence rate that is independent of the problem size.␍␍Multigrid preconditioners are based on a recursive application of a two-grid process␍consisting of smoother iterations and a coarse-space (or coarse-level) correction.␍The smoothers may be either basic iterative methods, such as the Jacobi and Gauss-Seidel ones,␍or more complex subspace-correction methods, such as the Schwarz ones.␍The coarse-space correction consists of solving, in an appropriately chosen␍coarse space, the residual equation associated with the approximate solution computed␍by the smoother, and of using the solution of this equation to correct the␍previous approximation. The transfer of information between the original␍(fine) space and the coarse one is performed by using suitable restriction and␍prolongation operators. The construction of the coarse space and the corresponding␍transfer operators is carried out by applying a so-called coarsening algorithm to the system␍matrix. Two main approaches can be used to perform coarsening: the geometric approach,␍which exploits the knowledge of some physical grid associated with the matrix␍and requires the user to define transfer operators from the fine␍to the coarse level and vice versa, and the algebraic approach, which builds␍the coarse-space correction and the associate transfer operators using only matrix␍information. The first approach may be difficult when the system comes from␍discretizations on complex geometries;␍furthermore, ad hoc one-level smoothers may be required to get an efficient␍interplay between fine and coarse levels, e.g., when matrices with highly varying coefficients␍are considered. The second approach performs a fully automatic coarsening and enforces the␍interplay between fine and coarse level by suitably choosing the coarse space and␍the coarse-to-fine interpolation (see, e.g., [<A
|
||||
HREF="node27.html#Briggs2000">2</A>,<A
|
||||
HREF="node27.html#Stuben_01">27</A>,<A
|
||||
HREF="node27.html#dd2_96">25</A>] for details.)␍␍MLD2P4 uses a pure algebraic approach, based on the smoothed ␍aggregation algorithm [<A
|
||||
HREF="node27.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node27.html#VANEK_MANDEL_BREZINA">29</A>],␍for building the sequence of coarse matrices and transfer operators,␍starting from the original one.␍A decoupled version of this algorithm is implemented, where the smoothed␍aggregation is applied locally to each submatrix [<A
|
||||
HREF="node27.html#TUMINARO_TONG">28</A>].␍A brief description of the AMG preconditioners implemented in MLD2P4 is given in ␍Sections <A HREF="node12.html#sec:multilevel">4.1</A>-<A HREF="#sec:smoothers">4.3</A>. For further details the reader␍is referred to [<A
|
||||
HREF="node27.html#para_04">3</A>,<A
|
||||
HREF="node27.html#aaecc_07">4</A>,<A
|
||||
HREF="node27.html#apnum_07">5</A>,<A
|
||||
HREF="node27.html#MLD2P4_TOMS">9</A>].␍␍We note that optimal multigrid preconditioners do not necessarily correspond␍to minimum execution times in a parallel setting. Indeed, to obtain effective parallel␍multigrid preconditioners, a tradeoff between the optimality and the cost of building and␍applying the smoothers and the coarse-space corrections must be achieved. Effective␍parallel preconditioners require algorithmic scalability to be coupled with implementation␍scalability, i.e., a computational cost per iteration which remains (almost) constant as␍the number of parallel processors increases.␍␍␍<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html214"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<LI><A NAME="tex2html215"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<LI><A NAME="tex2html211"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html212"
|
||||
<A NAME="tex2html209"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html208"
|
||||
<A NAME="tex2html205"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html202"
|
||||
<A NAME="tex2html199"
|
||||
HREF="node10.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html210"
|
||||
<A NAME="tex2html207"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html213"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html209"
|
||||
<B> Next:</B> <A NAME="tex2html210"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html206"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html203"
|
||||
<B> Previous:</B> <A NAME="tex2html200"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
<B> <A NAME="tex2html211"
|
||||
<B> <A NAME="tex2html208"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--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 -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Multi-level Schwarz Preconditioners</TITLE>
|
||||
<META NAME="description" CONTENT="Multi-level Schwarz Preconditioners">
|
||||
<TITLE>AMG preconditioners</TITLE>
|
||||
<META NAME="description" CONTENT="AMG preconditioners">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,7 +18,6 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node13.html">
|
||||
<LINK REL="previous" HREF="node11.html">
|
||||
<LINK REL="up" HREF="node11.html">
|
||||
<LINK REL="next" HREF="node13.html">
|
||||
@@ -26,26 +25,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html226"
|
||||
<A NAME="tex2html220"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html222"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html216"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html212"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html224"
|
||||
<A NAME="tex2html218"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html227"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> Up:</B> <A NAME="tex2html223"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html217"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> <A NAME="tex2html225"
|
||||
<B> Next:</B> <A NAME="tex2html221"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html217"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html213"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<B> <A NAME="tex2html219"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -53,713 +52,105 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<H2><A NAME="SECTION00061000000000000000"></A><A NAME="sec:multilevel"></A>
|
||||
<BR>
|
||||
Multi-level Schwarz Preconditioners
|
||||
</H2>
|
||||
AMG preconditioners
|
||||
</H2>␍␍In order to describe the AMG preconditioners available in MLD2P4, we consider a␍linear system␍<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<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 ,
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
Ax=b,
|
||||
\end{equation}
|
||||
-->
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:system"></A><IMG
|
||||
WIDTH="58" HEIGHT="30" BORDER="0"
|
||||
SRC="img1.png"
|
||||
ALT="\begin{displaymath}
|
||||
Ax=b,
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(2)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P>
|
||||
where <!-- MATH
|
||||
$A=(a_{ij}) \in \Re^{n \times n}$
|
||||
$A=(a_{ij}) \in \mathbb{R}^{n \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img4.png"
|
||||
ALT="$A=(a_{ij}) \in \Re^{n \times n}$"> is a
|
||||
nonsingular sparse matrix with a symmetric nonzero pattern,
|
||||
let <IMG
|
||||
WIDTH="92" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
ALT="$A=(a_{ij}) \in \mathbb{R}^{n \times n}$"> is a nonsingular sparse matrix;␍for ease of presentation we assume <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$"> is real, but the␍results are valid for the complex case as well. ␍␍Let us assume as finest index space the set of row (column) indices of <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$">, i.e.,␍<!-- MATH
|
||||
$\Omega = \{1, 2, \ldots, n\}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="132" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img5.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\}$
|
||||
ALT="$\Omega = \{1, 2, \ldots, n\}$">. ␍Any algebraic multilevel preconditioners implemented in MLD2P4 generates␍a hierarchy of index spaces and a corresponding hierarchy of matrices,␍<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
\Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev},␍\quad A^1 \equiv A, A^2, \ldots, A^{nlev},
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="139" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
WIDTH="398" HEIGHT="30" BORDER="0"
|
||||
SRC="img6.png"
|
||||
ALT="$W=\{1, 2, \ldots, n\}$">
|
||||
and <!-- MATH
|
||||
$E=\{(i,j) : a_{ij} \neq 0\}$
|
||||
ALT="\begin{displaymath}\Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev},␍\quad A^1 \equiv A, A^2, \ldots, A^{nlev}, \end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
by using the information contained in <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$">, without assuming any␍knowledge of the geometry of the problem from which <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$"> originates.␍A vector space <!-- MATH
|
||||
$\mathbb{R}^{n_{k}}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="162" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
WIDTH="34" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img7.png"
|
||||
ALT="$E=\{(i,j) : a_{ij} \neq 0\}$"> are the vertex set and the edge set of <IMG
|
||||
WIDTH="18" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
ALT="$\mathbb{R}^{n_{k}}$"> is associated with <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img8.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"
|
||||
ALT="$\Omega^k$">,␍where <IMG
|
||||
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\delta > 0$">, a <IMG
|
||||
WIDTH="13" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
ALT="$n_k$"> is the size of <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img8.png"
|
||||
ALT="$\Omega^k$">.␍For all <IMG
|
||||
WIDTH="70" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$\delta$">-overlap
|
||||
partition of <IMG
|
||||
WIDTH="23" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
ALT="$k < nlev$">, a restriction operator and a prolongation one are built,␍which connect two levels <IMG
|
||||
WIDTH="14" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$W$"> can be defined recursively as follows.
|
||||
Given a 0-overlap (or non-overlapping) partition of <IMG
|
||||
WIDTH="23" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$W$">,
|
||||
i.e. a set of <IMG
|
||||
WIDTH="20" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
ALT="$k$"> and <IMG
|
||||
WIDTH="44" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img12.png"
|
||||
ALT="$m$"> disjoint nonempty sets <!-- MATH
|
||||
$W_i^0 \subset W$
|
||||
ALT="$k+1$">:␍<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad ␍ R^k \in \mathbb{R}^{n_{k+1}\times n_k};
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="73" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
WIDTH="255" HEIGHT="30" BORDER="0"
|
||||
SRC="img13.png"
|
||||
ALT="$W_i^0 \subset W$"> such that
|
||||
<!-- MATH
|
||||
$\cup_{i=1}^m W_i^0 = W$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="108" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img14.png"
|
||||
ALT="$\cup_{i=1}^m W_i^0 = W$">, a <IMG
|
||||
WIDTH="13" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$\delta$">-overlap
|
||||
partition of <IMG
|
||||
WIDTH="23" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.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="img15.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="img16.png"
|
||||
ALT="$W_i^{\delta-1}$">.
|
||||
|
||||
<P>
|
||||
Let <IMG
|
||||
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img17.png"
|
||||
ALT="$n_i^\delta$"> be the size of <IMG
|
||||
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img18.png"
|
||||
ALT="$W_i^\delta$"> and <!-- MATH
|
||||
$R_i^{\delta} \in
|
||||
\Re^{n_i^\delta \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="93" HEIGHT="45" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img19.png"
|
||||
ALT="$R_i^{\delta} \in
|
||||
\Re^{n_i^\delta \times n}$"> the restriction operator that maps
|
||||
a vector <IMG
|
||||
WIDTH="57" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img20.png"
|
||||
ALT="$v \in \Re^n$"> onto the vector <!-- MATH
|
||||
$v_i^{\delta} \in \Re^{n_i^\delta}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="70" HEIGHT="45" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v_i^{\delta} \in \Re^{n_i^\delta}$">
|
||||
containing the components of <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img22.png"
|
||||
ALT="$v$"> corresponding to the vertices in
|
||||
<IMG
|
||||
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img18.png"
|
||||
ALT="$W_i^\delta$">. The transpose of <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img23.png"
|
||||
ALT="$R_i^{\delta}$"> is a
|
||||
prolongation operator from <!-- MATH
|
||||
$\Re^{n_i^\delta}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="33" HEIGHT="24" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img24.png"
|
||||
ALT="$\Re^{n_i^\delta}$"> to <IMG
|
||||
WIDTH="26" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.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="45" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img26.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="30" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.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="207" HEIGHT="58" BORDER="0"
|
||||
SRC="img28.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
|
||||
(A_i^\delta)^{-1} R_i^{\delta},
|
||||
\end{displaymath}">
|
||||
ALT="\begin{displaymath}␍ P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad ␍ R^k \in \mathbb{R}^{n_{k+1}\times n_k};␍\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
where <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img29.png"
|
||||
ALT="$A_i^\delta$"> is assumed to be nonsingular. Its application
|
||||
to a vector <IMG
|
||||
WIDTH="57" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img20.png"
|
||||
ALT="$v \in \Re^n$"> within a Krylov solver requires the following
|
||||
three steps:
|
||||
|
||||
<OL>
|
||||
<LI>restriction of <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img22.png"
|
||||
ALT="$v$"> as <!-- MATH
|
||||
$v_i = R_i^{\delta} v$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="71" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img30.png"
|
||||
ALT="$v_i = R_i^{\delta} v$">, <IMG
|
||||
WIDTH="96" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img31.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="img32.png"
|
||||
ALT="$A_i^\delta w_i = v_i$">,
|
||||
<IMG
|
||||
WIDTH="96" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img31.png"
|
||||
ALT="$i=1,\ldots,m$">;
|
||||
</LI>
|
||||
<LI>prolongation and sum of the <IMG
|
||||
WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img33.png"
|
||||
ALT="$w_i$">'s, i.e. <!-- MATH
|
||||
$w = \sum_{i=1}^m (R_i^{\delta})^T w_i$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="145" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.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="img35.png"
|
||||
ALT="$p$">), MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p$">) and
|
||||
ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img36.png"
|
||||
ALT="$p,t$">) [<A
|
||||
HREF="node28.html#Saad_book">22</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 [<A
|
||||
HREF="node28.html#CAI_SARKIS">5</A>,<A
|
||||
HREF="node28.html#EFSTATHIOU">15</A>]. It
|
||||
is obtained by zeroing the components of <IMG
|
||||
WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img33.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="117" HEIGHT="45" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img37.png"
|
||||
ALT="$(\tilde{R}_i^0)^T \in \Re^{n_i^\delta \times n}$">,
|
||||
where <IMG
|
||||
WIDTH="26" HEIGHT="42" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img38.png"
|
||||
ALT="$\tilde{R}_i^0$"> is obtained by zeroing the rows of <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img39.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="img40.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="217" HEIGHT="58" BORDER="0"
|
||||
SRC="img41.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="219" HEIGHT="58" BORDER="0"
|
||||
SRC="img42.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="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$\delta=0$"> the three variants of the AS preconditioner are
|
||||
all equal to the block-Jacobi preconditioner.
|
||||
|
||||
<P>
|
||||
As already observed, the convergence rate of the one-level Schwarz
|
||||
preconditioned iterative solvers deteriorates as the number <IMG
|
||||
WIDTH="20" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img12.png"
|
||||
ALT="$m$"> of partitions
|
||||
of <IMG
|
||||
WIDTH="23" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$W$"> increases [<A
|
||||
HREF="node28.html#dd1_94">7</A>,<A
|
||||
HREF="node28.html#dd2_96">23</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="img44.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="img44.png"
|
||||
ALT="$A_C$"> is usually built with
|
||||
the Galerkin approach. Given a set <IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img45.png"
|
||||
ALT="$W_C$"> of <I>coarse vertices</I>,
|
||||
with size <IMG
|
||||
WIDTH="26" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img46.png"
|
||||
ALT="$n_C$">, and a suitable restriction operator
|
||||
<!-- MATH
|
||||
$R_C \in \Re^{n_C \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="100" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img47.png"
|
||||
ALT="$R_C \in \Re^{n_C \times n}$">, <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img44.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="img48.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="img49.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="145" HEIGHT="32" BORDER="0"
|
||||
SRC="img50.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="img44.png"
|
||||
ALT="$A_C$"> is assumed to be nonsingular. The application of <IMG
|
||||
WIDTH="41" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$M_{C}^{-1}$">
|
||||
to a vector <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img22.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="img44.png"
|
||||
ALT="$A_C$">,
|
||||
may be carried out also approximately.
|
||||
|
||||
<P>
|
||||
The combination of <IMG
|
||||
WIDTH="33" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img52.png"
|
||||
ALT="$M_{C}$"> and <IMG
|
||||
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img49.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
|
||||
\begin{displaymath}
|
||||
M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="166" HEIGHT="32" BORDER="0"
|
||||
SRC="img53.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="img54.png"
|
||||
ALT="$M_{2L-A}^{-1}$"> to a vector <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img22.png"
|
||||
ALT="$v$"> within a Krylov solver
|
||||
corresponds to applying <IMG
|
||||
WIDTH="41" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$M_{C}^{-1}$">
|
||||
and <IMG
|
||||
WIDTH="41" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img55.png"
|
||||
ALT="$M_{1L}^{-1}$"> to <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img22.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="41" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img55.png"
|
||||
ALT="$M_{1L}^{-1}$"> and then
|
||||
the coarse-level correction operator <IMG
|
||||
WIDTH="41" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.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
|
||||
WIDTH="177" HEIGHT="51" BORDER="0"
|
||||
SRC="img56.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="309" HEIGHT="34" BORDER="0"
|
||||
SRC="img57.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="img58.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="318" HEIGHT="34" BORDER="0"
|
||||
SRC="img59.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="img49.png"
|
||||
ALT="$M_{1L}$"> and <IMG
|
||||
WIDTH="33" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img52.png"
|
||||
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="node28.html#dd2_96">23</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="node28.html#dd2_96">23</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="img60.png"
|
||||
ALT="$M$"> to a vector <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img22.png"
|
||||
ALT="$v$">, i.e. for the
|
||||
computation of <IMG
|
||||
WIDTH="86" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img61.png"
|
||||
ALT="$w=M^{-1}v$">, is reported, for
|
||||
example, in Figure <A HREF="#fig:mlhpost_alg">1</A>. Here the number of levels
|
||||
is denoted by <IMG
|
||||
WIDTH="38" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img62.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="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img63.png"
|
||||
ALT="$l$"> are denoted by <IMG
|
||||
WIDTH="23" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img64.png"
|
||||
ALT="$A_l$"> and
|
||||
<IMG
|
||||
WIDTH="26" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img65.png"
|
||||
ALT="$M_l$">, respectively, with <IMG
|
||||
WIDTH="62" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img66.png"
|
||||
ALT="$A_1=A$">, while the related restriction operator is
|
||||
denoted by <IMG
|
||||
WIDTH="23" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img67.png"
|
||||
ALT="$R_l$">.
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:mlhpost_alg"></A><A NAME="544"></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="img68.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>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html226"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html222"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html216"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html224"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html227"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> Up:</B> <A NAME="tex2html223"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html217"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> <A NAME="tex2html225"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
<P></P>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Smoothed Aggregation</TITLE>
|
||||
<META NAME="description" CONTENT="Smoothed Aggregation">
|
||||
<TITLE>Getting Started</TITLE>
|
||||
<META NAME="description" CONTENT="Getting Started">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,296 +18,206 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="previous" HREF="node12.html">
|
||||
<LINK REL="up" HREF="node11.html">
|
||||
<LINK REL="next" HREF="node15.html">
|
||||
<LINK REL="previous" HREF="node11.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node14.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html236"
|
||||
<A NAME="tex2html232"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html232"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html228"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html222"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html234"
|
||||
<A NAME="tex2html230"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html237"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html233"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html229"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> <A NAME="tex2html235"
|
||||
<B> Next:</B> <A NAME="tex2html233"
|
||||
HREF="node14.html">Examples</A>
|
||||
<B> Up:</B> <A NAME="tex2html229"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html223"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
<B> <A NAME="tex2html231"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00062000000000000000"></A><A NAME="sec:aggregation"></A>
|
||||
<H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:started"></A>
|
||||
<BR>
|
||||
Smoothed Aggregation
|
||||
</H2>
|
||||
Getting Started
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
In order to define the restriction operator <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img69.png"
|
||||
ALT="$R_C$">, which is used to compute
|
||||
the coarse-level matrix <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img44.png"
|
||||
ALT="$A_C$">, MLD2P4 uses the <I>smoothed aggregation</I>
|
||||
algorithm described in [<A
|
||||
HREF="node28.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node28.html#VANEK_MANDEL_BREZINA">27</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="img45.png"
|
||||
ALT="$W_C$"> by suitably grouping the vertices of <IMG
|
||||
WIDTH="23" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.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="img70.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:
|
||||
We describe the basics for building and applying MLD2P4 one-level and multi-level
|
||||
(i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS [<A
|
||||
HREF="node27.html#PSBLASGUIDE">17</A>].
|
||||
The following steps are required:
|
||||
|
||||
<OL>
|
||||
<LI>coarsening of the vertex set <IMG
|
||||
WIDTH="23" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$W$">, to obtain <IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img45.png"
|
||||
ALT="$W_C$">;
|
||||
<LI><I>Declare the preconditioner data structure</I>. It is a derived data type,
|
||||
<code>mld_</code><I>x</I><code>prec_</code> <code>type</code>, where <I>x</I> may be <code>s</code>, <code>d</code>, <code>c</code>
|
||||
or <code>z</code>, according to the basic data type of the sparse matrix
|
||||
(<code>s</code> = real single precision; <code>d</code> = real double precision;
|
||||
<code>c</code> = complex single precision; <code>z</code> = complex double precision).
|
||||
This data structure is accessed by the user only through the MLD2P4 routines,
|
||||
following an object-oriented approach.
|
||||
</LI>
|
||||
<LI>construction of the prolongator <IMG
|
||||
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img70.png"
|
||||
ALT="$R_C^T$">;
|
||||
<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>init</code>, which also sets defaults for each preconditioner
|
||||
type selected by the user. The preconditioner types and the defaults associated
|
||||
with them are given in Table <A HREF="#tab:precinit">1</A>, where the strings used by
|
||||
<code>init</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>application of <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img69.png"
|
||||
ALT="$R_C$"> and <IMG
|
||||
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img70.png"
|
||||
ALT="$R_C^T$"> to build <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img44.png"
|
||||
ALT="$A_C$">.
|
||||
<LI><I>Modify the selected preconditioner type, by properly setting
|
||||
preconditioner parameters.</I> This is performed by the routine <code>set</code>.
|
||||
This routine must be called only if the user wants to modify the default values
|
||||
of the parameters associated with the selected preconditioner type, to obtain a variant
|
||||
of that preconditioner. Examples of use of <code>set</code> are given in
|
||||
Section <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 <A HREF="node15.html#sec:userinterface">6</A>, Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
</LI>
|
||||
<LI><I>Build the preconditioner for a given matrix</I>. If the selected preconditioner
|
||||
is multi-level, then two steps must be performed, as specified next.
|
||||
<DL COMPACT>
|
||||
<DT>4.1</DT>
|
||||
<DD><I>Build the aggregation hierarchy for a given matrix.</I> This is
|
||||
performed by the routine <code>hierarchy_build</code>.
|
||||
</DD>
|
||||
<DT>4.2</DT>
|
||||
<DD><I>Build the preconditioner for a given matrix.</I> This is performed
|
||||
by the routine <code>smoothers_build</code>.
|
||||
</DD>
|
||||
</DL>
|
||||
If the selected preconditioner is one-level, it is built in a single step,
|
||||
performed by the routine <code>bld</code>.
|
||||
</LI>
|
||||
<LI><I>Apply the preconditioner at each iteration of a Krylov solver.</I>
|
||||
This is performed by the routine <code>aply</code>. When using the PSBLAS Krylov solvers,
|
||||
this step is completely transparent to the user, since <code>aply</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>free</code>. This step is complementary to step 1 and should
|
||||
be performed when the preconditioner is no more used.
|
||||
</LI>
|
||||
</OL>
|
||||
|
||||
<P>
|
||||
To perform the coarsening step, we have implemented the aggregation algorithm sketched
|
||||
in [<A
|
||||
HREF="node28.html#apnum_07">4</A>]. According to [<A
|
||||
HREF="node28.html#VANEK_MANDEL_BREZINA">27</A>], a modification of
|
||||
this algorithm has been actually considered,
|
||||
in which each aggregate <IMG
|
||||
WIDTH="26" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img71.png"
|
||||
ALT="$N_r$"> is made of vertices of <IMG
|
||||
WIDTH="23" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$W$"> that are <I>strongly coupled</I>
|
||||
to a certain root vertex <IMG
|
||||
WIDTH="53" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img72.png"
|
||||
ALT="$r \in W$">, i.e. <BR><P></P>
|
||||
All the previous routines are available as methods of the preconditioner object.
|
||||
A detailed description of them is given in Section <A HREF="node15.html#sec:userinterface">6</A>.
|
||||
Examples showing the basic use of MLD2P4 are reported in Section <A HREF="node14.html#sec:examples">5.1</A>.
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="513"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 1:</STRONG>
|
||||
Preconditioner types, corresponding strings and default choices.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<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}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="320" HEIGHT="38" BORDER="0"
|
||||
SRC="img73.png"
|
||||
ALT="\begin{displaymath}N_r = \left\{s \in W: \vert a_{rs}\vert > \theta \sqrt{\vert a_{rr}a_{ss}\vert} \right\}
|
||||
\cup \left\{ r \right\} ,
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
for a given <!-- MATH
|
||||
$\theta \in [0,1]$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="69" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img74.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="img75.png"
|
||||
ALT="$i$"> independently applies the algorithm to
|
||||
the set of vertices <IMG
|
||||
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img76.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="node28.html#aaecc_07">3</A>,<A
|
||||
HREF="node28.html#apnum_07">4</A>,<A
|
||||
HREF="node28.html#TUMINARO_TONG">26</A>].
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><SMALL>TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><SMALL>STRING</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232><SMALL>DEFAULT PRECONDITIONER</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">No preconditioner</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'NOPREC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Considered only to use the PSBLAS
|
||||
Krylov solvers with no preconditioner.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Diagonal</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'DIAG'</code> or <code>'JACOBI'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Diagonal preconditioner.
|
||||
For any zero diagonal entry of the matrix to be preconditioned,
|
||||
the corresponding entry of he preconditioner is set to 1.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Block Jacobi</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'BJAC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Block-Jacobi with ILU(0) on the local blocks.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Additive Schwarz</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'AS'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>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" VALIGN="TOP" WIDTH=51><code>'ML'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>V-cycle with one hybrid forward Gauss-Seidel
|
||||
(GS) sweep as pre-smoother and one hybrid backward
|
||||
GS sweep as post-smoother, basic smoothed aggregation
|
||||
as coarsening algorithm, and LU (plus triangular solve)
|
||||
as coarsest-level solver. See the default values in
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>
|
||||
for further details of the preconditioner.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
The prolongator <IMG
|
||||
WIDTH="75" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img77.png"
|
||||
ALT="$P_C=R_C^T$"> is built starting from a <I>tentative prolongator</I>
|
||||
<!-- MATH
|
||||
$P \in \Re^{n \times n_C}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="90" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img78.png"
|
||||
ALT="$P \in \Re^{n \times n_C}$">, defined as
|
||||
Note that the module <code>mld_prec_mod</code>, containing the definition of the
|
||||
preconditioner data type and the interfaces to the routines of MLD2P4,
|
||||
must be used in any program calling such routines.
|
||||
The modules <code>psb_base_mod</code>, for the sparse matrix and communication descriptor
|
||||
data types, and <code>psb_krylov_mod</code>, for interfacing with the
|
||||
Krylov solvers, must be also used (see Section <A HREF="node14.html#sec:examples">5.1</A>).
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
P=(p_{ij}), \quad p_{ij}=
|
||||
\left\{ \begin{array}{ll}
|
||||
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
|
||||
WIDTH="291" HEIGHT="52" BORDER="0"
|
||||
SRC="img79.png"
|
||||
ALT="\begin{displaymath}
|
||||
P=(p_{ij}), \quad p_{ij}=
|
||||
\left\{ \begin{array}{ll}
|
||||
1 & \qu...
|
||||
...\in V^j_C \\
|
||||
0 & \quad \mbox{otherwise}
|
||||
\end{array} \right. .
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(2)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P>
|
||||
<IMG
|
||||
WIDTH="27" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img80.png"
|
||||
ALT="$P_C$"> is obtained by
|
||||
applying to <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img81.png"
|
||||
ALT="$P$"> a smoother <!-- MATH
|
||||
$S \in \Re^{n \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="78" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$S \in \Re^{n \times n}$">:
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- MATH
|
||||
\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="img83.png"
|
||||
ALT="\begin{displaymath}
|
||||
P_C = S P,
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(3)</TD></TR>
|
||||
</TABLE>
|
||||
<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="node28.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node28.html#Stuben_01">25</A>].
|
||||
A simple choice for <IMG
|
||||
WIDTH="16" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$S$"> is the damped Jacobi smoother:
|
||||
<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="125" HEIGHT="30" BORDER="0"
|
||||
SRC="img85.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="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img86.png"
|
||||
ALT="$\omega$"> can be chosen
|
||||
using some estimate of the spectral radius of <IMG
|
||||
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img87.png"
|
||||
ALT="$D^{-1}A$"> [<A
|
||||
HREF="node28.html#BREZINA_VANEK">1</A>].
|
||||
<P>
|
||||
<B>Remark 1.</B> Coarsest-level solvers based on the LU factorization,
|
||||
such as those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU_Dist,
|
||||
usually lead to smaller numbers of preconditioned Krylov
|
||||
iterations than inexact solvers, when the linear system comes from
|
||||
a standard discretization of basic scalar elliptic PDE problems. However,
|
||||
this does not necessarily correspond to the smallest execution time
|
||||
on parallel computers.
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html234"
|
||||
HREF="node14.html">Examples</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html236"
|
||||
<A NAME="tex2html232"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html232"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html228"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html222"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html234"
|
||||
<A NAME="tex2html230"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html237"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html233"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html229"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> <A NAME="tex2html235"
|
||||
<B> Next:</B> <A NAME="tex2html233"
|
||||
HREF="node14.html">Examples</A>
|
||||
<B> Up:</B> <A NAME="tex2html229"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html223"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
<B> <A NAME="tex2html231"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--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 -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Getting Started</TITLE>
|
||||
<META NAME="description" CONTENT="Getting Started">
|
||||
<TITLE>Examples</TITLE>
|
||||
<META NAME="description" CONTENT="Examples">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,206 +18,302 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node16.html">
|
||||
<LINK REL="previous" HREF="node11.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="previous" HREF="node13.html">
|
||||
<LINK REL="up" HREF="node13.html">
|
||||
<LINK REL="next" HREF="node15.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html248"
|
||||
<A NAME="tex2html243"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html244"
|
||||
HREF="userhtml.html">
|
||||
<A NAME="tex2html239"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html238"
|
||||
<A NAME="tex2html235"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html246"
|
||||
<A NAME="tex2html241"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html249"
|
||||
HREF="node15.html">Examples</A>
|
||||
<B> Up:</B> <A NAME="tex2html245"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html239"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> <A NAME="tex2html247"
|
||||
<B> Next:</B> <A NAME="tex2html244"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html240"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html236"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html242"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:started"></A>
|
||||
<H2><A NAME="SECTION00071000000000000000"></A><A NAME="sec:examples"></A>
|
||||
<BR>
|
||||
Getting Started
|
||||
</H1>
|
||||
Examples
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
We describe the basics for building and applying MLD2P4 one-level and multi-level
|
||||
(i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS [<A
|
||||
HREF="node28.html#PSBLASGUIDE">16</A>].
|
||||
The following steps are required:
|
||||
|
||||
<OL>
|
||||
<LI><I>Declare the preconditioner data structure</I>. It is a derived data type,
|
||||
<code>mld_</code><I>x</I><code>prec_</code> <code>type</code>, where <I>x</I> may be <code>s</code>, <code>d</code>, <code>c</code>
|
||||
or <code>z</code>, according to the basic data type of the sparse matrix
|
||||
(<code>s</code> = real single precision; <code>d</code> = real double precision;
|
||||
<code>c</code> = complex single precision; <code>z</code> = complex double precision).
|
||||
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>init</code>, which also sets defaults for each preconditioner
|
||||
type selected by the user. The preconditioner types and the defaults associated
|
||||
with them are given in Table <A HREF="#tab:precinit">1</A>, where the strings used by
|
||||
<code>init</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>set</code>.
|
||||
This routine must be called only if the user wants to modify the default values
|
||||
of the parameters associated with the selected preconditioner type, to obtain a variant
|
||||
of that preconditioner. Examples of use of <code>set</code> are given in
|
||||
Section <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 <A HREF="node16.html#sec:userinterface">6</A>, Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
</LI>
|
||||
<LI><I>Build the preconditioner for a given matrix</I>. If the selected preconditioner
|
||||
is multi-level, then two steps must be performed, as specified next.
|
||||
<DL COMPACT>
|
||||
<DT>4.1</DT>
|
||||
<DD><I>Build the aggregation hierarchy for a given matrix.</I> This is
|
||||
performed by the routine <code>hierarchy_bld</code>.
|
||||
</DD>
|
||||
<DT>4.2</DT>
|
||||
<DD><I>Build the preconditioner for a given matrix.</I> This is performed
|
||||
by the routine <code>smoothers_bld</code>.
|
||||
</DD>
|
||||
</DL>
|
||||
If the selected preconditioner is one-level, it is built in a single step,
|
||||
performed by the routine <code>bld</code>.
|
||||
</LI>
|
||||
<LI><I>Apply the preconditioner at each iteration of a Krylov solver.</I>
|
||||
This is performed by the routine <code>aply</code>. When using the PSBLAS Krylov solvers,
|
||||
this step is completely transparent to the user, since <code>aply</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>free</code>. This step is complementary to step 1 and should
|
||||
be performed when the preconditioner is no more used.
|
||||
</LI>
|
||||
</OL>
|
||||
The code reported in Figure <A HREF="#fig:ex1">2</A> shows how to set and apply the default
|
||||
multi-level preconditioner available in the real double precision version
|
||||
of MLD2P4 (see Table <A HREF="#tab:precinit">1</A>). This preconditioner is chosen
|
||||
by simply specifying <code>'ML'</code> as the second argument of <code>P%init</code>
|
||||
(a call to <code>P%set</code> is not needed) and is applied with the CG
|
||||
solver provided by PSBLAS (the matrix of the system to be solved is
|
||||
assumed to be positive definite). As previously observed, the modules
|
||||
<code>psb_base_mod</code>, <code>mld_prec_mod</code> and <code>psb_krylov_mod</code>
|
||||
must be used by the example program.
|
||||
|
||||
<P>
|
||||
All the previous routines are available as methods of the preconditioner object.
|
||||
A detailed description of them is given in Section <A HREF="node16.html#sec:userinterface">6</A>.
|
||||
Examples showing the basic use of MLD2P4 are reported in Section <A HREF="node15.html#sec:examples">5.1</A>.
|
||||
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 implementation (see
|
||||
Section <A HREF="node10.html#sec:ex_and_test">3.5</A>). A sample test problem along with the relevant
|
||||
input data is available in <code>examples/fileread/runs</code>.
|
||||
For details on the use of the PSBLAS routines, see the PSBLAS User's
|
||||
Guide [<A
|
||||
HREF="node27.html#PSBLASGUIDE">17</A>].
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="962"></A>
|
||||
The setup and application of the default multi-level preconditioner
|
||||
for the real single precision and the complex, single and double
|
||||
precision, versions are obtained with straightforward modifications of the previous
|
||||
example (see Section <A HREF="node15.html#sec:userinterface">6</A> for details). If these versions are installed,
|
||||
the corresponding codes are available in <code>examples/fileread/</code>.
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="516"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 1:</STRONG>
|
||||
Preconditioner types, corresponding strings and default choices.
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
|
||||
setup and application of the default multi-level preconditioner (example 1).
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><SMALL>TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><SMALL>STRING</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232><SMALL>DEFAULT PRECONDITIONER</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">No preconditioner</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'NOPREC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Considered only to use the PSBLAS
|
||||
Krylov solvers with no preconditioner.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Diagonal</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'DIAG'</code> or <code>'JACOBI'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Diagonal preconditioner.
|
||||
For any zero diagonal entry of the matrix to be preconditioned,
|
||||
the corresponding entry of he preconditioner is set to 1.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Block Jacobi</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'BJAC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Block-Jacobi with ILU(0) on the local blocks.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Additive Schwarz</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'AS'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>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" VALIGN="TOP" WIDTH=51><code>'ML'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>V-cycle with one hybrid forward Gauss-Seidel
|
||||
(GS) sweep as pre-smoother and one hybrid backward
|
||||
GS sweep as post-smoother, basic smoothed aggregation
|
||||
as coarsening algorithm, and LU (plus triangular solve)
|
||||
as coarsest-level solver. See the default values in
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>
|
||||
for further details of the preconditioner.</TD>
|
||||
</TR>
|
||||
</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
|
||||
type(psb_d_vect_type) :: b, x
|
||||
... ...
|
||||
!
|
||||
! initialize the parallel environment
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the spd matrix A and the right-hand side b
|
||||
! using PSBLAS routines for sparse matrix / vector management
|
||||
... ...
|
||||
!
|
||||
! initialize the default multi-level preconditioner, i.e. V-cycle
|
||||
! with basic smoothed aggregation, 1 hybrid forward/backward
|
||||
! GS sweep as pre/post-smoother and UMFPACK as coarsest-level
|
||||
! solver
|
||||
call P%init(P,'ML',info)
|
||||
!
|
||||
! build the preconditioner
|
||||
call P%hierarchy_build(A,desc_A,P,info)
|
||||
call P%smoothers_build(A,desc_A,P,info)
|
||||
|
||||
!
|
||||
! set the solver parameters and the initial guess
|
||||
... ...
|
||||
!
|
||||
! solve Ax=b with preconditioned CG
|
||||
call psb_krylov('CG',A,P,b,x,tol,desc_A,info)
|
||||
... ...
|
||||
!
|
||||
! deallocate the preconditioner
|
||||
call P%free(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>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
Note that the module <code>mld_prec_mod</code>, containing the definition of the
|
||||
preconditioner data type and the interfaces to the routines of MLD2P4,
|
||||
must be used in any program calling such routines.
|
||||
The modules <code>psb_base_mod</code>, for the sparse matrix and communication descriptor
|
||||
data types, and <code>psb_krylov_mod</code>, for interfacing with the
|
||||
Krylov solvers, must be also used (see Section <A HREF="node15.html#sec:examples">5.1</A>).
|
||||
<BR>
|
||||
<P>
|
||||
<B>Remark 1.</B> Coarsest-level solvers based on the LU factorization,
|
||||
such as those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU_Dist,
|
||||
usually lead to smaller numbers of preconditioned Krylov
|
||||
iterations than inexact solvers, when the linear system comes from
|
||||
a standard discretization of basic scalar elliptic PDE problems. However,
|
||||
this does not necessarily correspond to the smallest execution time
|
||||
on parallel computers.
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
Different versions of the multi-level preconditioner can be obtained by changing
|
||||
the default values of the preconditioner parameters. The code reported in
|
||||
Figure <A HREF="#fig:ex2">3</A> shows how to set a V-cycle preconditioner
|
||||
which applies 1 block-Jacobi sweep as pre- and post-smoother,
|
||||
and solves the coarsest-level system with 8 block-Jacobi sweeps.
|
||||
Note that the ILU(0) factorization (plus triangular solve) is used as
|
||||
local solver for the block-Jacobi sweeps, since this is the default associated
|
||||
with block-Jacobi and set by <code>P%init</code>.
|
||||
Furthermore, specifying block-Jacobi as coarsest-level
|
||||
solver implies that the coarsest-level matrix is distributed
|
||||
among the processes.
|
||||
Figure <A HREF="#fig:ex3">4</A> shows how to set a W-cycle preconditioner which
|
||||
applies no pre-smoother and 2 Gauss-Seidel sweeps as post-smoother,
|
||||
and solves the coarsest-level system with the multifrontal LU factorization
|
||||
implemented in MUMPS. It is specified that the coarsest-level
|
||||
matrix is distributed, since MUMPS can be used on both
|
||||
replicated and distributed matrices, and by default
|
||||
it is used on replicated ones. Note the use of the parameter <code>pos</code>
|
||||
to specify a property only for the pre-smoother or the post-smoother
|
||||
(see Section <A HREF="node17.html#sec:precset">6.2</A> for more details).
|
||||
Note also that a Krylov method different from CG must be used to solve
|
||||
the preconditioned system, since the preconditione in nonsymmetric.
|
||||
The code fragments shown in Figures <A HREF="#fig:ex2">3</A> and <A HREF="#fig:ex3">4</A> are
|
||||
included in the example program file <code>mld_dexample_ml.f90</code> too.
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html250"
|
||||
HREF="node15.html">Examples</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<P>
|
||||
Finally, Figure <A HREF="#fig:ex4">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 the file
|
||||
<code>mld_dexample_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>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="518"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
|
||||
setup of a multi-level preconditioner</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||
! ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi
|
||||
! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
||||
call P%init(P,'ML',info)
|
||||
call_P%set(P,'SMOOTHER_TYPE','BJAC',info)
|
||||
call P%set(P,'COARSE_SOLVE','BJAC',info)
|
||||
call P%set(P,'COARSE_SWEEPS',8,info)
|
||||
call P%hierarchy_build(A,desc_A,P,info)
|
||||
call P%smoothers_build(A,desc_A,P,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:ex3"></A><A NAME="520"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
|
||||
setup of a multi-level preconditioner</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! build a W-cycle preconditioner with 2 Gauss-Seidel sweeps as
|
||||
! post-smoother (and no pre-smoother), a distributed coarsest
|
||||
! matrix, and MUMPS as coarsest-level solver
|
||||
call P%init(P,'ML',info)
|
||||
call P%set('ML_TYPE','WCYCLE',info)
|
||||
call P%set('SMOOTHER_TYPE','GS',info)
|
||||
call P%set('SMOOTHER_SWEEPS',0,info,pos='PRE')
|
||||
call P%set('SMOOTHER_SWEEPS',2,info,pos='POST')
|
||||
call P%set('COARSE_SOLVE','MUMPS',info)
|
||||
call P%set('COARSE_MAT','DIST',info)
|
||||
call P%hierarchy_build(A,desc_A,P,info)
|
||||
call P%smoothers_build(A,desc_A,P,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned CG
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="522"></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 P%init(P,'AS',info)
|
||||
call P%set(P,'SUB_OVR',2,info)
|
||||
call P%bld(A,desc_A,P,info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html248"
|
||||
<A NAME="tex2html243"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html244"
|
||||
HREF="userhtml.html">
|
||||
<A NAME="tex2html239"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html238"
|
||||
<A NAME="tex2html235"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html246"
|
||||
<A NAME="tex2html241"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html249"
|
||||
HREF="node15.html">Examples</A>
|
||||
<B> Up:</B> <A NAME="tex2html245"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html239"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> <A NAME="tex2html247"
|
||||
<B> Next:</B> <A NAME="tex2html244"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html240"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html236"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html242"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--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 -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Examples</TITLE>
|
||||
<META NAME="description" CONTENT="Examples">
|
||||
<TITLE>User Interface</TITLE>
|
||||
<META NAME="description" CONTENT="User Interface">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,302 +18,143 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="previous" HREF="node14.html">
|
||||
<LINK REL="up" HREF="node14.html">
|
||||
<LINK REL="next" HREF="node24.html">
|
||||
<LINK REL="previous" HREF="node13.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node16.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html259"
|
||||
<A NAME="tex2html255"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html255"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html251"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html245"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html257"
|
||||
<A NAME="tex2html253"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html260"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html256"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html252"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html258"
|
||||
<B> Next:</B> <A NAME="tex2html256"
|
||||
HREF="node16.html">Subroutine init</A>
|
||||
<B> Up:</B> <A NAME="tex2html252"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html246"
|
||||
HREF="node14.html">Examples</A>
|
||||
<B> <A NAME="tex2html254"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00071000000000000000"></A><A NAME="sec:examples"></A>
|
||||
<H1><A NAME="SECTION00080000000000000000"></A><A NAME="sec:userinterface"></A>
|
||||
<BR>
|
||||
Examples
|
||||
</H2>
|
||||
User Interface
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
The code reported in Figure <A HREF="#fig:ex1">2</A> shows how to set and apply the default
|
||||
multi-level preconditioner available in the real double precision version
|
||||
of MLD2P4 (see Table <A HREF="#tab:precinit">1</A>). This preconditioner is chosen
|
||||
by simply specifying <code>'ML'</code> as second argument of <code>P%init</code>
|
||||
(a call to <code>P%set</code> is not needed) and is applied with the CG
|
||||
solver provided by PSBLAS (the matrix of the system to be solved is
|
||||
assumed to be positive definite). As previously observed, the modules
|
||||
<code>psb_base_mod</code>, <code>mld_prec_mod</code> and <code>psb_krylov_mod</code>
|
||||
must be used by the example program.
|
||||
The basic user interface of MLD2P4 consists of eight routines. The six
|
||||
routines <code>init</code>, <code>set</code>,
|
||||
<code>hierarchy_build</code>, <code>smoothers_build</code>,
|
||||
<code>bld</code>, and <code>apply</code> encapsulate all the
|
||||
functionalities for the setup and the application of any multi-level and one-level
|
||||
preconditioner implemented in the package.
|
||||
The routine <code>free</code> deallocates the preconditioner data structure, while
|
||||
<code>descr</code> prints a description of the preconditioner setup by the user.
|
||||
|
||||
<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 implementation (see
|
||||
Section <A HREF="node10.html#sec:ex_and_test">3.5</A>). A sample test problem along with the relevant
|
||||
input data is available in <code>examples/fileread/runs</code>.
|
||||
For details on the use of the PSBLAS routines, see the PSBLAS User's
|
||||
Guide [<A
|
||||
HREF="node28.html#PSBLASGUIDE">16</A>].
|
||||
All the routines are available as methods of the preconditioner object.
|
||||
For each routine, the same user interface is overloaded with
|
||||
respect to the real/ complex case and the single/double precision;
|
||||
arguments with appropriate data types must be passed to the routine,
|
||||
i.e.,
|
||||
|
||||
<P>
|
||||
The setup and application of the default multi-level preconditioner
|
||||
for the real single precision and the complex, single and double
|
||||
precision, versions are obtained with straightforward modifications of the previous
|
||||
example (see Section <A HREF="node16.html#sec:userinterface">6</A> for details). If these versions are installed,
|
||||
the corresponding codes are available in <code>examples/fileread/</code>.
|
||||
<UL>
|
||||
<LI>the sparse matrix data structure, containing the matrix to be
|
||||
preconditioned, must be of type <code>psb_</code><I>x</I><code>spmat_type</code>
|
||||
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="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img14.png"
|
||||
ALT="$v$"> and <IMG
|
||||
WIDTH="18" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img15.png"
|
||||
ALT="$w$"> involved in
|
||||
the preconditioner application <IMG
|
||||
WIDTH="86" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img16.png"
|
||||
ALT="$w=M^{-1}v$"> must be of type
|
||||
<code>psb_</code><I>x</I><code>vect_type</code> with <I>x</I> =
|
||||
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, in a manner completely
|
||||
analogous to the sparse matrix type;
|
||||
</LI>
|
||||
<LI>real parameters defining the preconditioner must be declared
|
||||
according to the precision of the sparse matrix and preconditioner
|
||||
data structures (see Section <A HREF="node17.html#sec:precset">6.2</A>).
|
||||
</LI>
|
||||
</UL>
|
||||
A description of each routine is given in the remainder of this section.
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="965"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
|
||||
setup and application of the default multi-level preconditioner (example 1).
|
||||
</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
|
||||
type(psb_d_vect_type) :: b, x
|
||||
... ...
|
||||
!
|
||||
! initialize the parallel environment
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the spd matrix A and the right-hand side b
|
||||
! using PSBLAS routines for sparse matrix / vector management
|
||||
... ...
|
||||
!
|
||||
! initialize the default multi-level preconditioner, i.e. V-cycle
|
||||
! with basic smoothed aggregation, 1 hybrid forward/backward
|
||||
! GS sweep as pre/post-smoother and UMFPACK as coarsest-level
|
||||
! solver
|
||||
call P%init(P,'ML',info)
|
||||
!
|
||||
! build the preconditioner
|
||||
call P%hierarchy_bld(A,desc_A,P,info)
|
||||
call P%smoothers_bld(A,desc_A,P,info)
|
||||
|
||||
!
|
||||
! set the solver parameters and the initial guess
|
||||
... ...
|
||||
!
|
||||
! solve Ax=b with preconditioned CG
|
||||
call psb_krylov('CG',A,P,b,x,tol,desc_A,info)
|
||||
... ...
|
||||
!
|
||||
! deallocate the preconditioner
|
||||
call P%free(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>
|
||||
Different versions of the multi-level preconditioner can be obtained by changing
|
||||
the default values of the preconditioner parameters. The code reported in
|
||||
Figure <A HREF="#fig:ex2">3</A> shows how to set a V-cycle preconditioner
|
||||
which applies 1 block-Jacobi sweep as pre- and post-smoother,
|
||||
and solves the coarsest-level system with 8 block-Jacobi sweeps.
|
||||
Note that the ILU(0) factorization (plus triangular solve) is used as
|
||||
local solver for the block-Jacobi sweeps, since this is the default associated
|
||||
with block-Jacobi and set by <code>P%init</code>.
|
||||
Furthermore, specifying block-Jacobi as coarsest-level
|
||||
solver implies that the coarsest-level matrix is distributed
|
||||
among the processes.
|
||||
Figure <A HREF="#fig:ex3">4</A> shows how to set a W-cycle preconditioner which
|
||||
applies no pre-smoother and 2 Gauss-Seidel sweeps as post-smoother,
|
||||
and solves the coarsest-level system with the multifrontal LU factorization
|
||||
implemented in MUMPS. It is specified that the coarsest-level
|
||||
matrix is distributed, since MUMPS can be used on both
|
||||
replicated and distributed matrices, and by default
|
||||
it is used on replicated ones. Note the use of the parameter <code>pos</code>
|
||||
to specify a property only for the pre-smoother or the post-smoother
|
||||
(see Section <A HREF="node18.html#sec:precset">6.2</A> for more details).
|
||||
Note also that a Krylov method different from CG must be used to solve
|
||||
the preconditioned system, since the preconditione in nonsymmetric.
|
||||
The code fragments shown in Figures <A HREF="#fig:ex2">3</A> and <A HREF="#fig:ex3">4</A> are
|
||||
included in the example program file <code>mld_dexample_ml.f90</code> too.
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<P>
|
||||
Finally, Figure <A HREF="#fig:ex4">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 the file
|
||||
<code>mld_dexample_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>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="967"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
|
||||
setup of a multi-level preconditioner</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||
! ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi
|
||||
! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
||||
call P%init(P,'ML',info)
|
||||
call_P%set(P,'SMOOTHER_TYPE','BJAC',info)
|
||||
call P%set(P,'COARSE_SOLVE','BJAC',info)
|
||||
call P%set(P,'COARSE_SWEEPS',8,info)
|
||||
call P%hierarchy_bld(A,desc_A,P,info)
|
||||
call P%smoothers_bld(A,desc_A,P,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:ex3"></A><A NAME="969"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
|
||||
setup of a multi-level preconditioner</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! build a W-cycle preconditioner with 2 Gauss-Seidel sweeps as
|
||||
! post-smoother (and no pre-smoother), a distributed coarsest
|
||||
! matrix, and MUMPS as coarsest-level solver
|
||||
call P%init(P,'ML',info)
|
||||
call P%set('ML_TYPE','WCYCLE',info)
|
||||
call P%set('SMOOTHER_TYPE','GS',info)
|
||||
call P%set('SMOOTHER_SWEEPS',0,info,pos='PRE')
|
||||
call P%set('SMOOTHER_SWEEPS',2,info,pos='POST')
|
||||
call P%set('COARSE_SOLVE','MUMPS',info)
|
||||
call P%set('COARSE_MAT','DIST',info)
|
||||
call P%hierarchy_bld(A,desc_A,P,info)
|
||||
call P%smoothers_bld(A,desc_A,P,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned CG
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="971"></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 P%init(P,'AS',info)
|
||||
call P%set(P,'SUB_OVR',2,info)
|
||||
call P%bld(A,desc_A,P,info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html257"
|
||||
HREF="node16.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html258"
|
||||
HREF="node17.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html259"
|
||||
HREF="node18.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html260"
|
||||
HREF="node19.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html261"
|
||||
HREF="node20.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html262"
|
||||
HREF="node21.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html263"
|
||||
HREF="node22.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html264"
|
||||
HREF="node23.html">Subroutine descr</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html259"
|
||||
<A NAME="tex2html255"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html255"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html251"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html245"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html257"
|
||||
<A NAME="tex2html253"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html260"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html256"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html252"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html258"
|
||||
<B> Next:</B> <A NAME="tex2html256"
|
||||
HREF="node16.html">Subroutine init</A>
|
||||
<B> Up:</B> <A NAME="tex2html252"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html246"
|
||||
HREF="node14.html">Examples</A>
|
||||
<B> <A NAME="tex2html254"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--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 -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>User Interface</TITLE>
|
||||
<META NAME="description" CONTENT="User Interface">
|
||||
<TITLE>Subroutine init</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine init">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,145 +18,92 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node25.html">
|
||||
<LINK REL="previous" HREF="node14.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node17.html">
|
||||
<LINK REL="previous" HREF="node15.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="next" HREF="node17.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html271"
|
||||
<A NAME="tex2html275"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html267"
|
||||
HREF="userhtml.html">
|
||||
<A NAME="tex2html271"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html261"
|
||||
<A NAME="tex2html265"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html269"
|
||||
<A NAME="tex2html273"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html272"
|
||||
HREF="node17.html">Subroutine init</A>
|
||||
<B> Up:</B> <A NAME="tex2html268"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html262"
|
||||
HREF="node15.html">Examples</A>
|
||||
<B> <A NAME="tex2html270"
|
||||
<B> Next:</B> <A NAME="tex2html276"
|
||||
HREF="node17.html">Subroutine set</A>
|
||||
<B> Up:</B> <A NAME="tex2html272"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html266"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> <A NAME="tex2html274"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION00080000000000000000"></A><A NAME="sec:userinterface"></A>
|
||||
<H2><A NAME="SECTION00081000000000000000"></A><A NAME="sec:precinit"></A>
|
||||
<BR>
|
||||
User Interface
|
||||
</H1>
|
||||
Subroutine init
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
The basic user interface of MLD2P4 consists of eight routines. The six
|
||||
routines <code>init</code>, <code>set</code>,
|
||||
<code>hierarchy_bld</code>, <code>smoothers_bld</code>,
|
||||
<code>bld</code>, and <code>apply</code> encapsulate all the
|
||||
functionalities for the setup and the application of any multi-level and one-level
|
||||
preconditioner implemented in the package.
|
||||
The routine <code>free</code> deallocates the preconditioner data structure, while
|
||||
<code>descr</code> prints a description of the preconditioner setup by the user.
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%init(ptype,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
All the routines are available as methods of the preconditioner object.
|
||||
For each routine, the same user interface is overloaded with
|
||||
respect to the real/ complex case and the single/double precision;
|
||||
arguments with appropriate data types must be passed to the routine,
|
||||
i.e.,
|
||||
This routine allocates and initializes the preconditioner
|
||||
<code>p</code>, according to the preconditioner type chosen by the user.
|
||||
|
||||
<UL>
|
||||
<LI>the sparse matrix data structure, containing the matrix to be
|
||||
preconditioned, must be of type <code>psb_</code><I>x</I><code>spmat_type</code>
|
||||
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="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img22.png"
|
||||
ALT="$v$"> and <IMG
|
||||
WIDTH="18" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$w$"> involved in
|
||||
the preconditioner application <IMG
|
||||
WIDTH="86" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img61.png"
|
||||
ALT="$w=M^{-1}v$"> must be of type
|
||||
<code>psb_</code><I>x</I><code>vect_type</code> with <I>x</I> =
|
||||
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, in a manner completely
|
||||
analogous to the sparse matrix type;
|
||||
</LI>
|
||||
<LI>real parameters defining the preconditioner must be declared
|
||||
according to the precision of the sparse matrix and preconditioner
|
||||
data structures (see Section <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>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
<P></P>
|
||||
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>ptype</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=*), intent(in)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The type of preconditioner. Its values are specified
|
||||
in Table <A HREF="#tab:precinit">1</A>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Note that the strings are case insensitive.</TD>
|
||||
</TR>
|
||||
<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> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
For compatibility with the previous versions of MLD2P4, this routine can be also invoked
|
||||
as follows:
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precinit(p,ptype,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html273"
|
||||
HREF="node17.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html274"
|
||||
HREF="node18.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html275"
|
||||
HREF="node19.html">Subroutine bld</A>
|
||||
<LI><A NAME="tex2html276"
|
||||
HREF="node20.html">Subroutine hierarchy_bld</A>
|
||||
<LI><A NAME="tex2html277"
|
||||
HREF="node21.html">Subroutine smoothers_bld</A>
|
||||
<LI><A NAME="tex2html278"
|
||||
HREF="node22.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html279"
|
||||
HREF="node23.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html280"
|
||||
HREF="node24.html">Subroutine descr</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html271"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html267"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html261"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html269"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html272"
|
||||
HREF="node17.html">Subroutine init</A>
|
||||
<B> Up:</B> <A NAME="tex2html268"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html262"
|
||||
HREF="node15.html">Examples</A>
|
||||
<B> <A NAME="tex2html270"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine bld</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine bld">
|
||||
<TITLE>Subroutine hierarchy_build</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine hierarchy_build">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,52 +20,52 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node20.html">
|
||||
<LINK REL="previous" HREF="node18.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="next" HREF="node20.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html315"
|
||||
<A NAME="tex2html311"
|
||||
HREF="node20.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html311"
|
||||
HREF="node16.html">
|
||||
<A NAME="tex2html307"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html305"
|
||||
<A NAME="tex2html301"
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html313"
|
||||
<A NAME="tex2html309"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html316"
|
||||
HREF="node20.html">Subroutine hierarchy_bld</A>
|
||||
<B> Up:</B> <A NAME="tex2html312"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html306"
|
||||
HREF="node18.html">Subroutine set</A>
|
||||
<B> <A NAME="tex2html314"
|
||||
<B> Next:</B> <A NAME="tex2html312"
|
||||
HREF="node20.html">Subroutine smoothers_build</A>
|
||||
<B> Up:</B> <A NAME="tex2html308"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html302"
|
||||
HREF="node18.html">Subroutine build</A>
|
||||
<B> <A NAME="tex2html310"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00083000000000000000"></A><A NAME="sec:precbld"></A>
|
||||
<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:hier_bld"></A>
|
||||
<BR>
|
||||
Subroutine bld
|
||||
Subroutine hierarchy_build
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%bld(a,desc_a,info)</code>
|
||||
<code>call p%hierarchy_build(a,desc_a,info)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine builds the one-level preconditioner <code>p</code> according to the requirements
|
||||
made by the user through the routines <code>init</code> and <code>set</code>
|
||||
(see Sections <A HREF="node20.html#sec:hier_bld">6.4</A> and <A HREF="node21.html#sec:smoothers_bld">6.5</A> for multi-level preconditioners).
|
||||
This routine builds the hierarchy of matrices and restriction/prolongation
|
||||
operators for the multi-level preconditioner <code>p</code>, according to the requirements
|
||||
made by the user through the routines <code>init</code> and <code>set</code>.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
@@ -79,9 +79,10 @@ made by the user through the routines <code>init</code> and <code>set</code>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.
|
||||
to the real/complex,
|
||||
single/double precision version of MLD2P4 under use.
|
||||
See the PSBLAS User's Guide for details [<A
|
||||
HREF="node28.html#PSBLASGUIDE">16</A>].</TD>
|
||||
HREF="node27.html#PSBLASGUIDE">17</A>].</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>
|
||||
@@ -89,56 +90,20 @@ made by the user through the routines <code>init</code> and <code>set</code>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
details [<A
|
||||
HREF="node28.html#PSBLASGUIDE">16</A>].</TD>
|
||||
HREF="node27.html#PSBLASGUIDE">17</A>].</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> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node26.html#sec:errors">8</A> for details.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
For compatibility with the previous versions of MLD2P4, this routine can be also invoked
|
||||
as follows:
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precbld(p,what,val,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
In this case, the routine can be used to build multi-level preconditioners too.
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html315"
|
||||
HREF="node20.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html311"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html305"
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html313"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html316"
|
||||
HREF="node20.html">Subroutine hierarchy_bld</A>
|
||||
<B> Up:</B> <A NAME="tex2html312"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html306"
|
||||
HREF="node18.html">Subroutine set</A>
|
||||
<B> <A NAME="tex2html314"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -26,21 +26,21 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html75"
|
||||
<A NAME="tex2html73"
|
||||
HREF="node3.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html73"
|
||||
<A NAME="tex2html71"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html67"
|
||||
<A NAME="tex2html65"
|
||||
HREF="node1.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html76"
|
||||
<B> Next:</B> <A NAME="tex2html74"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<B> Up:</B> <A NAME="tex2html74"
|
||||
<B> Up:</B> <A NAME="tex2html72"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html68"
|
||||
<B> Previous:</B> <A NAME="tex2html66"
|
||||
HREF="node1.html">Abstract</A>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -53,70 +53,68 @@ Contents</A>
|
||||
<!--Table of Contents-->
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html77"
|
||||
<LI><A NAME="tex2html75"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<LI><A NAME="tex2html78"
|
||||
<LI><A NAME="tex2html76"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<LI><A NAME="tex2html79"
|
||||
<LI><A NAME="tex2html77"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html80"
|
||||
<LI><A NAME="tex2html78"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html81"
|
||||
<LI><A NAME="tex2html79"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html82"
|
||||
<LI><A NAME="tex2html80"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html83"
|
||||
<LI><A NAME="tex2html81"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html84"
|
||||
<LI><A NAME="tex2html82"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html83"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html84"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html85"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html86"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
HREF="node14.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html87"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node15.html">User Interface</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html88"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<UL>
|
||||
HREF="node16.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html89"
|
||||
HREF="node15.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node17.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html90"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<UL>
|
||||
HREF="node18.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html91"
|
||||
HREF="node17.html">Subroutine init</A>
|
||||
HREF="node19.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html92"
|
||||
HREF="node18.html">Subroutine set</A>
|
||||
HREF="node20.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html93"
|
||||
HREF="node19.html">Subroutine bld</A>
|
||||
HREF="node21.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html94"
|
||||
HREF="node20.html">Subroutine hierarchy_bld</A>
|
||||
HREF="node22.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html95"
|
||||
HREF="node21.html">Subroutine smoothers_bld</A>
|
||||
<LI><A NAME="tex2html96"
|
||||
HREF="node22.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html97"
|
||||
HREF="node23.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html98"
|
||||
HREF="node24.html">Subroutine descr</A>
|
||||
HREF="node23.html">Subroutine descr</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html96"
|
||||
HREF="node24.html">Adding smoothers and solvers to MLD2P4</A>
|
||||
<LI><A NAME="tex2html97"
|
||||
HREF="node25.html">Error Handling</A>
|
||||
<LI><A NAME="tex2html98"
|
||||
HREF="node26.html">License</A>
|
||||
<LI><A NAME="tex2html99"
|
||||
HREF="node25.html">Adding smoothers and solvers to MLD2P4</A>
|
||||
<LI><A NAME="tex2html100"
|
||||
HREF="node26.html">Error Handling</A>
|
||||
<LI><A NAME="tex2html101"
|
||||
HREF="node27.html">License</A>
|
||||
<LI><A NAME="tex2html102"
|
||||
HREF="node28.html">Bibliography</A>
|
||||
HREF="node27.html">Bibliography</A>
|
||||
</UL>
|
||||
<!--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 -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine hierarchy_bld</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine hierarchy_bld">
|
||||
<TITLE>Subroutine smoothers_build</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine smoothers_build">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,52 +20,54 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node21.html">
|
||||
<LINK REL="previous" HREF="node19.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="next" HREF="node21.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html327"
|
||||
<A NAME="tex2html323"
|
||||
HREF="node21.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html323"
|
||||
HREF="node16.html">
|
||||
<A NAME="tex2html319"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html317"
|
||||
<A NAME="tex2html313"
|
||||
HREF="node19.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html325"
|
||||
<A NAME="tex2html321"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html328"
|
||||
HREF="node21.html">Subroutine smoothers_bld</A>
|
||||
<B> Up:</B> <A NAME="tex2html324"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html318"
|
||||
HREF="node19.html">Subroutine bld</A>
|
||||
<B> <A NAME="tex2html326"
|
||||
<B> Next:</B> <A NAME="tex2html324"
|
||||
HREF="node21.html">Subroutine apply</A>
|
||||
<B> Up:</B> <A NAME="tex2html320"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html314"
|
||||
HREF="node19.html">Subroutine hierarchy_build</A>
|
||||
<B> <A NAME="tex2html322"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:hier_bld"></A>
|
||||
<H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:smooth_bld"></A>
|
||||
<BR>
|
||||
Subroutine hierarchy_bld
|
||||
Subroutine smoothers_build
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%hierarchy_bld(a,desc_a,info)</code>
|
||||
<code>call p%smoothers_build(a,desc_a,p,info)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine builds the hierarchy of matrices and restriction/prolongation
|
||||
operators for the multi-level preconditioner <code>p</code>, according to the requirements
|
||||
made by the user through the routines <code>init</code> and <code>set</code>.
|
||||
This routine builds the smoothers and the coarsest-level solvers for the
|
||||
multi-level preconditioner <code>p</code>, according to the requirements made by
|
||||
the user through the routines <code>init</code> and <code>set</code>, and based on the aggregation
|
||||
hierarchy produced by a previous call to <code>hierarchy_build</code>
|
||||
(see Section <A HREF="node19.html#sec:hier_bld">6.4</A>).
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
@@ -79,10 +81,9 @@ made by the user through the routines <code>init</code> and <code>set</code>.
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that <I>x</I> must be chosen according
|
||||
to the real/complex,
|
||||
single/double precision version of MLD2P4 under use.
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.
|
||||
See the PSBLAS User's Guide for details [<A
|
||||
HREF="node28.html#PSBLASGUIDE">16</A>].</TD>
|
||||
HREF="node27.html#PSBLASGUIDE">17</A>].</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>
|
||||
@@ -90,19 +91,18 @@ single/double precision version of MLD2P4 under use.
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
details [<A
|
||||
HREF="node28.html#PSBLASGUIDE">16</A>].</TD>
|
||||
HREF="node27.html#PSBLASGUIDE">17</A>].</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> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node26.html#sec:errors">8</A> for details.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine smoothers_bld</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine smoothers_bld">
|
||||
<TITLE>Subroutine apply</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine apply">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,54 +20,68 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node22.html">
|
||||
<LINK REL="previous" HREF="node20.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="next" HREF="node22.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html339"
|
||||
<A NAME="tex2html335"
|
||||
HREF="node22.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html335"
|
||||
HREF="node16.html">
|
||||
<A NAME="tex2html331"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html329"
|
||||
<A NAME="tex2html325"
|
||||
HREF="node20.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html337"
|
||||
<A NAME="tex2html333"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html340"
|
||||
HREF="node22.html">Subroutine apply</A>
|
||||
<B> Up:</B> <A NAME="tex2html336"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html330"
|
||||
HREF="node20.html">Subroutine hierarchy_bld</A>
|
||||
<B> <A NAME="tex2html338"
|
||||
<B> Next:</B> <A NAME="tex2html336"
|
||||
HREF="node22.html">Subroutine free</A>
|
||||
<B> Up:</B> <A NAME="tex2html332"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html326"
|
||||
HREF="node20.html">Subroutine smoothers_build</A>
|
||||
<B> <A NAME="tex2html334"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:smoothers_bld"></A>
|
||||
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precapply"></A>
|
||||
<BR>
|
||||
Subroutine smoothers_bld
|
||||
Subroutine apply
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%smoothers_bld(a,desc_a,p,info)</code>
|
||||
<code>call p%apply(x,y,desc_a,info [,trans,work])</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine builds the smoothers and the coarsest-level solvers for the
|
||||
multi-level preconditioner <code>p</code>, according to the requirements made by
|
||||
the user through the routines <code>init</code> and <code>set</code>, and based on the aggregation
|
||||
hierarchy produced by a previous call to <code>hierarchy_bld</code>
|
||||
(see Section <A HREF="node20.html#sec:hier_bld">6.4</A>).
|
||||
This routine computes <!-- MATH
|
||||
$y = op(M^{-1})\, x$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="117" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$y = op(M^{-1}) x$">, where <IMG
|
||||
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$M$"> is a previously built
|
||||
preconditioner, stored into <code>p</code>, and <IMG
|
||||
WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img36.png"
|
||||
ALT="$op$">
|
||||
denotes the preconditioner itself or its transpose, according to
|
||||
the value of <code>trans</code>.
|
||||
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
|
||||
<code>p%apply</code> is called within the PSBLAS routine <code>psb_krylov</code>
|
||||
and hence it is completely transparent to the user.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
@@ -75,35 +89,122 @@ hierarchy produced by a previous call to <code>hierarchy_bld</code>
|
||||
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>a</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>.</TD>
|
||||
<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> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.
|
||||
See the PSBLAS User's Guide for details [<A
|
||||
HREF="node28.html#PSBLASGUIDE">16</A>].</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img37.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> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
|
||||
WIDTH="14" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img38.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> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
details [<A
|
||||
HREF="node28.html#PSBLASGUIDE">16</A>].</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>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node26.html#sec:errors">8</A> for details.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
</TR>
|
||||
<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> </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="img39.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="img40.png"
|
||||
ALT="$op(M^{-1}) = M^{-T}$">
|
||||
(transpose of <IMG
|
||||
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img41.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="img42.png"
|
||||
ALT="$op(M^{-1}) = M^{-C}$">
|
||||
(conjugate transpose of <IMG
|
||||
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img41.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> </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>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
For compatibility with the previous versions of MLD2P4, this routine can be also invoked
|
||||
as follows:
|
||||
|
||||
<BR><HR>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precaply(p,what,val,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html335"
|
||||
HREF="node22.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html331"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html325"
|
||||
HREF="node20.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html333"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html336"
|
||||
HREF="node22.html">Subroutine free</A>
|
||||
<B> Up:</B> <A NAME="tex2html332"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html326"
|
||||
HREF="node20.html">Subroutine smoothers_build</A>
|
||||
<B> <A NAME="tex2html334"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine apply</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine apply">
|
||||
<TITLE>Subroutine free</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine free">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,68 +20,50 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node23.html">
|
||||
<LINK REL="previous" HREF="node21.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="next" HREF="node23.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html351"
|
||||
<A NAME="tex2html347"
|
||||
HREF="node23.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html347"
|
||||
HREF="node16.html">
|
||||
<A NAME="tex2html343"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html341"
|
||||
<A NAME="tex2html337"
|
||||
HREF="node21.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html349"
|
||||
<A NAME="tex2html345"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html352"
|
||||
HREF="node23.html">Subroutine free</A>
|
||||
<B> Up:</B> <A NAME="tex2html348"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html342"
|
||||
HREF="node21.html">Subroutine smoothers_bld</A>
|
||||
<B> <A NAME="tex2html350"
|
||||
<B> Next:</B> <A NAME="tex2html348"
|
||||
HREF="node23.html">Subroutine descr</A>
|
||||
<B> Up:</B> <A NAME="tex2html344"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html338"
|
||||
HREF="node21.html">Subroutine apply</A>
|
||||
<B> <A NAME="tex2html346"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precapply"></A>
|
||||
<H2><A NAME="SECTION00087000000000000000"></A><A NAME="sec:precfree"></A>
|
||||
<BR>
|
||||
Subroutine apply
|
||||
Subroutine free
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%apply(x,y,desc_a,info [,trans,work])</code>
|
||||
<code>call p%free(p,info)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine computes <!-- MATH
|
||||
$y = op(M^{-1})\, x$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="117" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img101.png"
|
||||
ALT="$y = op(M^{-1})\, x$">, where <IMG
|
||||
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$M$"> is a previously built
|
||||
preconditioner, stored into <code>p</code>, and <IMG
|
||||
WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img102.png"
|
||||
ALT="$op$">
|
||||
denotes the preconditioner itself or its transpose, according to
|
||||
the value of <code>trans</code>.
|
||||
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
|
||||
<code>p%apply</code> is called within the PSBLAS routine <code>psb_krylov</code>
|
||||
and hence it is completely transparent to the user.
|
||||
This routine deallocates the preconditioner data structure <code>p</code>.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
@@ -89,82 +71,11 @@ and hence it is completely transparent to the user.
|
||||
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>x</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(in)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img103.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> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
|
||||
WIDTH="14" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img104.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> </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>
|
||||
<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> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node26.html#sec:errors">8</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> </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="img105.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="img106.png"
|
||||
ALT="$op(M^{-1}) = M^{-T}$">
|
||||
(transpose of <IMG
|
||||
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img107.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="img108.png"
|
||||
ALT="$op(M^{-1}) = M^{-C}$">
|
||||
(conjugate transpose of <IMG
|
||||
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img107.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> </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>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
@@ -174,37 +85,14 @@ as follows:
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precaply(p,what,val,info)</code>
|
||||
<code>call mld_precfree(p,info)</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html351"
|
||||
HREF="node23.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html347"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html341"
|
||||
HREF="node21.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html349"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html352"
|
||||
HREF="node23.html">Subroutine free</A>
|
||||
<B> Up:</B> <A NAME="tex2html348"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html342"
|
||||
HREF="node21.html">Subroutine smoothers_bld</A>
|
||||
<B> <A NAME="tex2html350"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine free</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine free">
|
||||
<TITLE>Subroutine descr</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine descr">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,52 +18,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node24.html">
|
||||
<LINK REL="previous" HREF="node22.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="next" HREF="node24.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html363"
|
||||
<A NAME="tex2html357"
|
||||
HREF="node24.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html359"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html353"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html349"
|
||||
HREF="node22.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html361"
|
||||
<A NAME="tex2html355"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html364"
|
||||
HREF="node24.html">Subroutine descr</A>
|
||||
<B> Up:</B> <A NAME="tex2html360"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html354"
|
||||
HREF="node22.html">Subroutine apply</A>
|
||||
<B> <A NAME="tex2html362"
|
||||
<B> Next:</B> <A NAME="tex2html358"
|
||||
HREF="node24.html">Adding smoothers and solvers</A>
|
||||
<B> Up:</B> <A NAME="tex2html354"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html350"
|
||||
HREF="node22.html">Subroutine free</A>
|
||||
<B> <A NAME="tex2html356"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00087000000000000000"></A><A NAME="sec:precfree"></A>
|
||||
<H2><A NAME="SECTION00088000000000000000"></A><A NAME="sec:precdescr"></A>
|
||||
<BR>
|
||||
Subroutine free
|
||||
Subroutine descr
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%free(p,info)</code>
|
||||
<code>call p%descr(info, [iout])</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine deallocates the preconditioner data structure <code>p</code>.
|
||||
This routine prints a description of the preconditioner <code>p</code> to the standard output or
|
||||
to a file. It must be called after <code>hierachy_build</code> and <code>smoothers_build</code>,
|
||||
or <code>build</code>, have been called.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
@@ -72,10 +73,17 @@ This routine deallocates the preconditioner data structure <code>p</code>.
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><code>integer, intent(out)</code>.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298>Error code. If no error, 0 is returned. See Section <A HREF="node26.html#sec:errors">8</A> for details.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node25.html#sec:errors">8</A> for details.</TD>
|
||||
</TR>
|
||||
<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> </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>
|
||||
|
||||
@@ -85,7 +93,7 @@ as follows:
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precfree(p,info)</code>
|
||||
<code>call mld_precdescr(p,info [,iout])</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine descr</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine descr">
|
||||
<TITLE>Adding smoothers and solvers to MLD2P4</TITLE>
|
||||
<META NAME="description" CONTENT="Adding smoothers and solvers to MLD2P4">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,89 +18,119 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="previous" HREF="node23.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="next" HREF="node25.html">
|
||||
<LINK REL="previous" HREF="node15.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node25.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html373"
|
||||
<A NAME="tex2html369"
|
||||
HREF="node25.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html369"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html365"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html359"
|
||||
HREF="node23.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html371"
|
||||
<A NAME="tex2html367"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html374"
|
||||
HREF="node25.html">Adding smoothers and solvers</A>
|
||||
<B> Up:</B> <A NAME="tex2html370"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html366"
|
||||
HREF="node23.html">Subroutine free</A>
|
||||
<B> <A NAME="tex2html372"
|
||||
<B> Next:</B> <A NAME="tex2html370"
|
||||
HREF="node25.html">Error Handling</A>
|
||||
<B> Up:</B> <A NAME="tex2html366"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html360"
|
||||
HREF="node23.html">Subroutine descr</A>
|
||||
<B> <A NAME="tex2html368"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00088000000000000000"></A><A NAME="sec:precdescr"></A>
|
||||
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A>
|
||||
<BR>
|
||||
Subroutine descr
|
||||
</H2>
|
||||
Adding smoothers and solvers to MLD2P4
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
<B>Da ampliare e completare - SALVATORE.</B>
|
||||
<BR>
|
||||
<P>
|
||||
Completely new smoother and/or solver classes derived from the
|
||||
base objects in the library may be used without recompiling the
|
||||
library itself. Once the new smoother/solver class has been
|
||||
developed, the user can declare a variable of that new type in the
|
||||
application, and pass that variable to the <code>p%set(solver,info)</code>
|
||||
call; the new solver object is then dynamically included in the
|
||||
preconditioner structure.
|
||||
|
||||
<P>
|
||||
|
||||
<BR>
|
||||
<P>
|
||||
If the user has developed a new type of smoother and/or
|
||||
solver by extending one of the base MLD2P4 types, and has declared a
|
||||
variable of the new type in the main program, it is possible to pass
|
||||
the new smoother/solver variable to the setup routine as follows:
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%descr(info, [iout])</code>
|
||||
<BR>
|
||||
<code>call p%set(smoother,info [,ilev, ilmax,pos])</code>
|
||||
<BR><code>call p%set(solver,info [,ilev, ilmax,pos])</code>
|
||||
|
||||
</DIV>
|
||||
In this way, the variable will act as a <I>mold</I> to which the
|
||||
preconditioner will conform, even though the MLD2P4 library is not
|
||||
modified, and thus has no direct knowledge about the new type.
|
||||
|
||||
<P>
|
||||
This routine prints a description of the preconditioner <code>p</code> to the standard output or
|
||||
to a file. It must be called after <code>hierachy_bld</code> and <code>smoothers_bld</code>,
|
||||
or <code>bld</code>, have been called.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
<P></P>
|
||||
|
||||
|
||||
<BR>
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>smoother</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>class(mld_x_base_smoother_type)</code></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node26.html#sec:errors">8</A> for details.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The user-defined new smoother to be employed in the
|
||||
preconditioner.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>iout</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(in), optional</code>.</TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>solver</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>class(mld_x_base_solver_type)</code></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The id of the file where the preconditioner description
|
||||
will be printed; the default is the standard output.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The user-defined new solver to be employed in the
|
||||
preconditioner.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
For compatibility with the previous versions of MLD2P4, this routine can be also invoked
|
||||
as follows:
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call mld_precdescr(p,info [,iout])</code>
|
||||
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html369"
|
||||
HREF="node25.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html365"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html359"
|
||||
HREF="node23.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html367"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html370"
|
||||
HREF="node25.html">Error Handling</A>
|
||||
<B> Up:</B> <A NAME="tex2html366"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html360"
|
||||
HREF="node23.html">Subroutine descr</A>
|
||||
<B> <A NAME="tex2html368"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Adding smoothers and solvers to MLD2P4</TITLE>
|
||||
<META NAME="description" CONTENT="Adding smoothers and solvers to MLD2P4">
|
||||
<TITLE>Error Handling</TITLE>
|
||||
<META NAME="description" CONTENT="Error Handling">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -19,118 +19,60 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node26.html">
|
||||
<LINK REL="previous" HREF="node16.html">
|
||||
<LINK REL="previous" HREF="node24.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node26.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html385"
|
||||
<A NAME="tex2html381"
|
||||
HREF="node26.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html381"
|
||||
<A NAME="tex2html377"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html375"
|
||||
<A NAME="tex2html371"
|
||||
HREF="node24.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html383"
|
||||
<A NAME="tex2html379"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html386"
|
||||
HREF="node26.html">Error Handling</A>
|
||||
<B> Up:</B> <A NAME="tex2html382"
|
||||
<B> Next:</B> <A NAME="tex2html382"
|
||||
HREF="node26.html">License</A>
|
||||
<B> Up:</B> <A NAME="tex2html378"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html376"
|
||||
HREF="node24.html">Subroutine descr</A>
|
||||
<B> <A NAME="tex2html384"
|
||||
<B> Previous:</B> <A NAME="tex2html372"
|
||||
HREF="node24.html">Adding smoothers and solvers</A>
|
||||
<B> <A NAME="tex2html380"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A>
|
||||
<H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:errors"></A>
|
||||
<BR>
|
||||
Adding smoothers and solvers to MLD2P4
|
||||
Error Handling
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
<B>Da ampliare e completare - SALVATORE.</B>
|
||||
<BR>
|
||||
<P>
|
||||
Completely new smoother and/or solver classes derived from the
|
||||
base objects in the library may be used without recompiling the
|
||||
library itself. Once the new smoother/solver class has been
|
||||
developed, the user can declare a variable of that new type in the
|
||||
application, and pass that variable to the <code>p%set(solver,info)</code>
|
||||
call; the new solver object is then dynamically included in the
|
||||
preconditioner structure.
|
||||
The error handling in MLD2P4 is based on the PSBLAS (version 2) error
|
||||
handling. Error conditions are signaled via an integer argument
|
||||
<code>info</code>; whenever an error condition is detected, an error trace
|
||||
stack is built by the library up to the top-level, user-callable
|
||||
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="node27.html#PSBLASGUIDE">17</A>].
|
||||
|
||||
<P>
|
||||
|
||||
<BR>
|
||||
<P>
|
||||
If the user has developed a new type of smoother and/or
|
||||
solver by extending one of the base MLD2P4 types, and has declared a
|
||||
variable of the new type in the main program, it is possible to pass
|
||||
the new smoother/solver variable to the setup routine as follows:
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%set(smoother,info [,ilev, ilmax,pos])</code>
|
||||
<BR><code>call p%set(solver,info [,ilev, ilmax,pos])</code>
|
||||
|
||||
</DIV>
|
||||
In this way, the variable will act as a <I>mold</I> to which the
|
||||
preconditioner will conform, even though the MLD2P4 library is not
|
||||
modified, and thus has no direct knowledge about the new type.
|
||||
|
||||
<P>
|
||||
|
||||
<BR>
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>smoother</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>class(mld_x_base_smoother_type)</code></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The user-defined new smoother to be employed in the
|
||||
preconditioner.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>solver</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>class(mld_x_base_solver_type)</code></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The user-defined new solver to be employed in the
|
||||
preconditioner.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html385"
|
||||
HREF="node26.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html381"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html375"
|
||||
HREF="node24.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html383"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html386"
|
||||
HREF="node26.html">Error Handling</A>
|
||||
<B> Up:</B> <A NAME="tex2html382"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html376"
|
||||
HREF="node24.html">Subroutine descr</A>
|
||||
<B> <A NAME="tex2html384"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Error Handling</TITLE>
|
||||
<META NAME="description" CONTENT="Error Handling">
|
||||
<TITLE>License</TITLE>
|
||||
<META NAME="description" CONTENT="License">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -26,51 +26,77 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html397"
|
||||
<A NAME="tex2html393"
|
||||
HREF="node27.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html393"
|
||||
<A NAME="tex2html389"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html387"
|
||||
<A NAME="tex2html383"
|
||||
HREF="node25.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html395"
|
||||
<A NAME="tex2html391"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html398"
|
||||
HREF="node27.html">License</A>
|
||||
<B> Up:</B> <A NAME="tex2html394"
|
||||
<B> Next:</B> <A NAME="tex2html394"
|
||||
HREF="node27.html">Bibliography</A>
|
||||
<B> Up:</B> <A NAME="tex2html390"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html388"
|
||||
HREF="node25.html">Adding smoothers and solvers</A>
|
||||
<B> <A NAME="tex2html396"
|
||||
<B> Previous:</B> <A NAME="tex2html384"
|
||||
HREF="node25.html">Error Handling</A>
|
||||
<B> <A NAME="tex2html392"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:errors"></A>
|
||||
<H1><A NAME="SECTION000110000000000000000"></A><A NAME="sec:license"></A>
|
||||
<BR>
|
||||
Error Handling
|
||||
License
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
The error handling in MLD2P4 is based on the PSBLAS (version 2) error
|
||||
handling. Error conditions are signaled via an integer argument
|
||||
<code>info</code>; whenever an error condition is detected, an error trace
|
||||
stack is built by the library up to the top-level, user-callable
|
||||
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="node28.html#PSBLASGUIDE">16</A>].
|
||||
The MLD2P4 is freely distributable under the following copyright
|
||||
terms: <PRE>
|
||||
|
||||
<P>
|
||||
|
||||
MLD2P4 version 2.1
|
||||
MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS (Parallel Sparse BLAS version 3.4)
|
||||
|
||||
(C) Copyright 2008, 2010, 2012, 2017
|
||||
|
||||
Salvatore Filippone Cranfield University, Cranfield, UK
|
||||
Ambra Abdullahi Hassan University of Rome Tor Vergata, Rome, IT
|
||||
Alfredo Buttari CNRS-IRIT, Toulouse, FR
|
||||
Pasqua D'Ambra IAC-CNR, Naples, IT
|
||||
Daniela di Serafino University of Campania L. Vanvitelli, Caserta, IT
|
||||
|
||||
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>
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>License</TITLE>
|
||||
<META NAME="description" CONTENT="License">
|
||||
<TITLE>Bibliography</TITLE>
|
||||
<META NAME="description" CONTENT="Bibliography">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -26,79 +26,167 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html409"
|
||||
<A NAME="tex2html405"
|
||||
HREF="node28.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html405"
|
||||
<A NAME="tex2html401"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html399"
|
||||
<A NAME="tex2html395"
|
||||
HREF="node26.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html407"
|
||||
<A NAME="tex2html403"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html410"
|
||||
HREF="node28.html">Bibliography</A>
|
||||
<B> Up:</B> <A NAME="tex2html406"
|
||||
<B> Next:</B> <A NAME="tex2html406"
|
||||
HREF="node28.html">About this document ...</A>
|
||||
<B> Up:</B> <A NAME="tex2html402"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html400"
|
||||
HREF="node26.html">Error Handling</A>
|
||||
<B> <A NAME="tex2html408"
|
||||
<B> Previous:</B> <A NAME="tex2html396"
|
||||
HREF="node26.html">License</A>
|
||||
<B> <A NAME="tex2html404"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<BR><BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION000110000000000000000"></A><A NAME="sec:license"></A>
|
||||
<BR>
|
||||
License
|
||||
</H1>
|
||||
|
||||
<H2><A NAME="SECTION000120000000000000000">
|
||||
Bibliography</A>
|
||||
</H2><DL COMPACT><DD>
|
||||
|
||||
<P>
|
||||
The MLD2P4 is freely distributable under the following copyright
|
||||
terms: <PRE>
|
||||
|
||||
|
||||
MLD2P4 version 2.1
|
||||
MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS (Parallel Sparse BLAS version 3.4)
|
||||
|
||||
(C) Copyright 2008, 2010, 2012, 2017
|
||||
|
||||
Salvatore Filippone Cranfield University
|
||||
Ambra Abdullahi Hassan University of Rome Tor Vergata
|
||||
Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
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></P><DT><A NAME="BREZINA_VANEK">1</A>
|
||||
<DD>
|
||||
M. Brezina, P. Vanek,
|
||||
<EM>A Black-Box Iterative Solver Based on a Two-Level Schwarz Method</EM>,
|
||||
Computing, 63, 1999, 233-263.␍<P></P><DT><A NAME="Briggs2000">2</A>
|
||||
<DD>
|
||||
W. L. Briggs, V. E. Henson, S. F. McCormick,
|
||||
<EM>A Multigrid Tutorial, Second Edition</EM>,
|
||||
SIAM, 2000.␍<P></P><DT><A NAME="para_04">3</A>
|
||||
<DD>
|
||||
A. Buttari, P. D'Ambra, D. di Serafino, S. Filippone,
|
||||
<EM>Extending PSBLAS to Build Parallel Schwarz Preconditioners</EM>,
|
||||
in J. Dongarra, K. Madsen, J. Wasniewski, editors,
|
||||
Proceedings of PARA 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">4</A>
|
||||
<DD>
|
||||
A. Buttari, P. D'Ambra, D. di Serafino, S. 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">5</A>
|
||||
<DD> P. D'Ambra, S. Filippone, D. di 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><DT><A NAME="CAI_SARKIS">6</A>
|
||||
<DD>
|
||||
X. C. Cai, M. 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">7</A>
|
||||
<DD>
|
||||
X. C. Cai, O. B. 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">8</A>
|
||||
<DD>
|
||||
T. Chan and T. Mathew,
|
||||
<EM>Domain Decomposition Algorithms</EM>,
|
||||
in A. Iserles, editor, Acta Numerica 1994, 61-143.
|
||||
Cambridge University Press.␍<P></P><DT><A NAME="MLD2P4_TOMS">9</A>
|
||||
<DD>
|
||||
P. D'Ambra, D. di Serafino, S. Filippone,
|
||||
<I>MLD2P4: a Package of Parallel Multilevel
|
||||
Algebraic Domain Decomposition Preconditioners
|
||||
in Fortran 95</I>, ACM Trans. Math. Softw., 37(3), 2010, art. 30.␍<P></P><DT><A NAME="UMFPACK">10</A>
|
||||
<DD>
|
||||
T.A. 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/ davis/</TT>)␍<P></P><DT><A NAME="MUMPS">11</A>
|
||||
<DD>
|
||||
P.R. Amestoy, C. Ashcraft, O. Boiteau, A. Buttari, J. L'Excellent, C. Weisbecker
|
||||
<EM>Improving multifrontal methods by means of block low-rank representations</EM>,
|
||||
SIAM Journal on Scientific Computing, volume 37 (3), 2015, A1452-A1474.
|
||||
See also <TT>http://mumps.enseeiht.fr</TT>.␍<P></P><DT><A NAME="SUPERLU">12</A>
|
||||
<DD>
|
||||
J.W. Demmel, S.C. Eisenstat, J.R. Gilbert, X.S. Li and J.W.H. 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">13</A>
|
||||
<DD>
|
||||
J. J. Dongarra, J. Du Croz, I. S. Duff, S. Hammarling,
|
||||
<I>A set of Level 3 Basic Linear Algebra Subprograms</I>,
|
||||
ACM Transactions on Mathematical Software, 16 (1) 1990, 1-17.␍<P></P><DT><A NAME="blas2">14</A>
|
||||
<DD>
|
||||
J. J. Dongarra, J. Du Croz, S. Hammarling, R. J. Hanson,
|
||||
<I>An extended set of FORTRAN Basic Linear Algebra Subprograms</I>,
|
||||
ACM Transactions on Mathematical Software, 14 (1) 1988, 1-17.␍<P></P><DT><A NAME="BLACS">15</A>
|
||||
<DD>
|
||||
J. J. Dongarra and R. C. Whaley,
|
||||
<EM>A User's Guide to the BLACS v. 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">16</A>
|
||||
<DD>
|
||||
E. Efstathiou, J. G. Gander,
|
||||
<EM>Why Restricted Additive Schwarz Converges Faster than Additive Schwarz</EM>,
|
||||
BIT Numerical Mathematics, 43 (5), 2003, 945-959.␍<P></P><DT><A NAME="PSBLASGUIDE">17</A>
|
||||
<DD>
|
||||
S. Filippone, A. Buttari,
|
||||
<EM>PSBLAS-3.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library</EM>, 2012,
|
||||
available from <TT>http://www.ce.uniroma2.it/psblas/</TT>.␍<P></P><DT><A NAME="PSBLAS3">18</A>
|
||||
<DD>
|
||||
Salvatore Filippone and Alfredo Buttari.
|
||||
<EM>Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003</EM>.
|
||||
ACM Transactions on on Mathematical Software, 38 (4), 2012, art. 23.␍<P></P><DT><A NAME="psblas_00">19</A>
|
||||
<DD>
|
||||
S. Filippone, M. 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">20</A>
|
||||
<DD>
|
||||
W. Gropp, S. Huss-Lederman, A. Lumsdaine, E. Lusk, B. Nitzberg, W. Saphir, M. Snir,
|
||||
<EM>MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions</EM>,
|
||||
MIT Press, 1998.␍<P></P><DT><A NAME="blas1">21</A>
|
||||
<DD>
|
||||
C. L. Lawson, R. J. Hanson, D. Kincaid, F. T. Krogh,
|
||||
<I>Basic Linear Algebra Subprograms for FORTRAN usage</I>,
|
||||
ACM Transactions on Mathematical Software, 5 (3), 1979, 308-323.␍<P></P><DT><A NAME="SUPERLUDIST">22</A>
|
||||
<DD>
|
||||
X. S. Li, J. W. 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="Notay2008">23</A>
|
||||
<DD>
|
||||
Y. Notay, P. S. Vassilevski, <EM>Recursive Krylov-based multigrid cycles</EM>,
|
||||
Numerical Linear Algebra with Applications, 15 (5), 2008, 473-487. ␍<P></P><DT><A NAME="Saad_book">24</A>
|
||||
<DD>
|
||||
Y. Saad,
|
||||
<EM>Iterative methods for sparse linear systems</EM>, 2nd edition, SIAM, 2003.␍<P></P><DT><A NAME="dd2_96">25</A>
|
||||
<DD>
|
||||
B. Smith, P. Bjorstad, W. Gropp,
|
||||
<EM>Domain Decomposition: Parallel Multilevel Methods for Elliptic
|
||||
Partial Differential Equations</EM>,
|
||||
Cambridge University Press, 1996.␍<P></P><DT><A NAME="MPI1">26</A>
|
||||
<DD>
|
||||
M. Snir, S. Otto, S. Huss-Lederman, D. Walker, J. Dongarra,
|
||||
<EM>MPI: The Complete Reference. Volume 1 - The MPI Core</EM>, second edition,
|
||||
MIT Press, 1998.␍<P></P><DT><A NAME="Stuben_01">27</A>
|
||||
<DD>
|
||||
K. Stüben,
|
||||
<EM>An Introduction to Algebraic Multigrid</EM>,
|
||||
in A. Schüller, U. Trottenberg, C. Oosterlee, Multigrid,
|
||||
Academic Press, 2001.␍<P></P><DT><A NAME="TUMINARO_TONG">28</A>
|
||||
<DD>
|
||||
R. S. Tuminaro, C. 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">29</A>
|
||||
<DD>
|
||||
P. Vanek, J. Mandel and M. Brezina,
|
||||
<EM>Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems</EM>,
|
||||
Computing, 56 (3) 1996, 179-196.
|
||||
<P>
|
||||
</DL>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Bibliography</TITLE>
|
||||
<META NAME="description" CONTENT="Bibliography">
|
||||
<TITLE>About this document ...</TITLE>
|
||||
<META NAME="description" CONTENT="About this document ...">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,186 +18,52 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node29.html">
|
||||
<LINK REL="previous" HREF="node27.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node29.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html421"
|
||||
HREF="node29.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html417"
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png">
|
||||
<A NAME="tex2html411"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html411"
|
||||
<A NAME="tex2html407"
|
||||
HREF="node27.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html419"
|
||||
<A NAME="tex2html413"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html422"
|
||||
HREF="node29.html">About this document ...</A>
|
||||
<B> Up:</B> <A NAME="tex2html418"
|
||||
<B> Up:</B> <A NAME="tex2html412"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html412"
|
||||
HREF="node27.html">License</A>
|
||||
<B> <A NAME="tex2html420"
|
||||
<B> Previous:</B> <A NAME="tex2html408"
|
||||
HREF="node27.html">Bibliography</A>
|
||||
<B> <A NAME="tex2html414"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR><BR>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION000120000000000000000">
|
||||
Bibliography</A>
|
||||
</H2><DL COMPACT><DD>
|
||||
|
||||
<H1><A NAME="SECTION000130000000000000000">
|
||||
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 2012 (1.2)
|
||||
<P>
|
||||
<P></P><DT><A NAME="BREZINA_VANEK">1</A>
|
||||
<DD>
|
||||
M. Brezina, P. Vanek,
|
||||
<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. Buttari, P. D'Ambra, D. di Serafino, S. Filippone,
|
||||
<EM>Extending PSBLAS to Build Parallel Schwarz Preconditioners</EM>,
|
||||
in , J. Dongarra, K. Madsen, J. Wasniewski, editors,
|
||||
Proceedings of PARA 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. Buttari, P. D'Ambra, D. di Serafino, S. 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. D'Ambra, S. Filippone, D. di 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.
|
||||
Copyright © 1993, 1994, 1995, 1996,
|
||||
<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
|
||||
Computer Based Learning Unit, University of Leeds.
|
||||
<BR>
|
||||
Copyright © 1997, 1998, 1999,
|
||||
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
|
||||
Mathematics Department, Macquarie University, Sydney.
|
||||
<P>
|
||||
<P></P><DT><A NAME="CAI_SARKIS">5</A>
|
||||
<DD>
|
||||
X. C. Cai, M. 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. C. Cai, O. B. 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. Chan and T. Mathew,
|
||||
<EM>Domain Decomposition Algorithms</EM>,
|
||||
in A. Iserles, editor, Acta Numerica 1994, 61-143.
|
||||
Cambridge University Press.<P></P><DT><A NAME="MLD2P4_TOMS">8</A>
|
||||
<DD>
|
||||
P. D'Ambra, D. di Serafino, S. Filippone,
|
||||
<I>MLD2P4: a Package of Parallel Multilevel
|
||||
Algebraic Domain Decomposition Preconditioners
|
||||
in Fortran 95</I>, ACM Trans. Math. Softw., 37(3), 2010.<P></P><DT><A NAME="UMFPACK">9</A>
|
||||
<DD>
|
||||
T.A. 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/ davis/</TT>)
|
||||
<P>
|
||||
<P></P><DT><A NAME="MUMPS">10</A>
|
||||
<DD>
|
||||
P.R. Amestoy, C. Ashcraft, O. Boiteau, A. Buttari, J. L'Excellent, C. Weisbecker
|
||||
<EM>Improving multifrontal methods by means of block low-rank representations</EM>,
|
||||
SIAM SISC, volume 37, number 3, pages A1452-A1474.
|
||||
(See also <TT>http://mumps.enseeiht.fr</TT>)
|
||||
<P>
|
||||
<P></P><DT><A NAME="SUPERLU">11</A>
|
||||
<DD>
|
||||
J.W. Demmel, S.C. Eisenstat, J.R. Gilbert, X.S. Li and J.W.H. 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">12</A>
|
||||
<DD>
|
||||
J. J. Dongarra, J. Du Croz, I. S. Duff, S. 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">13</A>
|
||||
<DD>
|
||||
J. J. Dongarra, J. Du Croz, S. Hammarling, R. J. 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">14</A>
|
||||
<DD>
|
||||
J. J. Dongarra and R. C. Whaley,
|
||||
<EM>A User's Guide to the BLACS v. 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">15</A>
|
||||
<DD>
|
||||
E. Efstathiou, J. G. 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">16</A>
|
||||
<DD>
|
||||
S. Filippone, A. Buttari,
|
||||
<EM>PSBLAS-3.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library</EM>, 2012,
|
||||
available from <TT>http://www.ce.uniroma2.it/psblas/</TT>.
|
||||
|
||||
<P>
|
||||
<P></P><DT><A NAME="PSBLAS3">17</A>
|
||||
<DD>
|
||||
Salvatore Filippone and Alfredo Buttari.
|
||||
<EM>Object-Oriented Techniques for Sparse Matrix Computations in Fortran
|
||||
2003.</EM>
|
||||
ACM Trans. on Math Software, 38(4), 2012.
|
||||
|
||||
<P>
|
||||
<P></P><DT><A NAME="psblas_00">18</A>
|
||||
<DD>
|
||||
S. Filippone, M. 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">19</A>
|
||||
<DD>
|
||||
W. Gropp, S. Huss-Lederman, A. Lumsdaine, E. Lusk, B. Nitzberg, W. Saphir, M. Snir,
|
||||
<EM>MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions</EM>,
|
||||
MIT Press, 1998.<P></P><DT><A NAME="blas1">20</A>
|
||||
<DD>
|
||||
C. L. Lawson, R. J. Hanson, D. Kincaid, F. T. 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">21</A>
|
||||
<DD>
|
||||
X. S. Li, J. W. 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">22</A>
|
||||
<DD>
|
||||
Y. Saad,
|
||||
<I>Iterative methods for sparse linear systems</I>, 2nd edition,
|
||||
SIAM, 2003
|
||||
|
||||
<P>
|
||||
<P></P><DT><A NAME="dd2_96">23</A>
|
||||
<DD>
|
||||
B. Smith, P. Bjorstad, W. Gropp,
|
||||
<EM>Domain Decomposition: Parallel Multilevel Methods for Elliptic
|
||||
Partial Differential Equations</EM>,
|
||||
Cambridge University Press, 1996.<P></P><DT><A NAME="MPI1">24</A>
|
||||
<DD>
|
||||
M. Snir, S. Otto, S. Huss-Lederman, D. Walker, J. Dongarra,
|
||||
<EM>MPI: The Complete Reference. Volume 1 - The MPI Core</EM>, second edition,
|
||||
MIT Press, 1998.<P></P><DT><A NAME="Stuben_01">25</A>
|
||||
<DD>
|
||||
K. Stüben,
|
||||
<EM>An Introduction to Algebraic Multigrid</EM>,
|
||||
in A. Schüller, U. Trottenberg, C. Oosterlee, Multigrid,
|
||||
Academic Press, 2001.<P></P><DT><A NAME="TUMINARO_TONG">26</A>
|
||||
<DD>
|
||||
R. S. Tuminaro, C. 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">27</A>
|
||||
<DD>
|
||||
P. Vanek, J. Mandel and M. Brezina,
|
||||
<EM>Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems</EM>,
|
||||
Computing, 56, 1996, 179-196.
|
||||
<P>
|
||||
</DL>
|
||||
|
||||
The command line arguments were: <BR>
|
||||
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
|
||||
<P>
|
||||
The translation was initiated by Salvatore Filippone on 2017-04-21
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html113"
|
||||
<A NAME="tex2html110"
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html109"
|
||||
<A NAME="tex2html106"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html103"
|
||||
<A NAME="tex2html100"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html111"
|
||||
<A NAME="tex2html108"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html114"
|
||||
<B> Next:</B> <A NAME="tex2html111"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> Up:</B> <A NAME="tex2html110"
|
||||
<B> Up:</B> <A NAME="tex2html107"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html104"
|
||||
<B> Previous:</B> <A NAME="tex2html101"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> <A NAME="tex2html112"
|
||||
<B> <A NAME="tex2html109"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -58,12 +58,12 @@ General Overview
|
||||
|
||||
<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
|
||||
</SMALL>PSBLAS (MLD2P4) provides parallel Algebraic MultiGrid (AMG) and domain decomposition
|
||||
preconditioners, designed to provide scalable and easy-to-use preconditioners
|
||||
multi-level Schwarz preconditioners [<A
|
||||
HREF="node28.html#Stuben_01">25</A>,<A
|
||||
HREF="node28.html#dd2_96">23</A>],
|
||||
to be used in the iterative solutions of sparse linear systems:
|
||||
</SMALL>PSBLAS (MLD2P4) provides parallel Algebraic MultiGrid (AMG) and Domain
|
||||
Decomposition preconditioners (see, e.g., [<A
|
||||
HREF="node27.html#Briggs2000">2</A>,<A
|
||||
HREF="node27.html#Stuben_01">27</A>,<A
|
||||
HREF="node27.html#dd2_96">25</A>]),
|
||||
to be used in the iterative solution of linear systems,
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
@@ -86,26 +86,37 @@ Ax=b,
|
||||
where <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$"> is a square, real or complex, sparse matrix. Multi-level preconditioners can be obtained by combining several AMG cycles (V, W, K) with
|
||||
different smoothers (Jacobi, hybrid forward/backward Gauss-Seidel, block-Jacobi, additive Schwarz methods).
|
||||
An algebraic approach is used to
|
||||
generate a hierarchy of coarse-level matrices and operators, without
|
||||
explicitly using any information on the geometry of the original problem, e.g.,
|
||||
the discretization of a PDE. The smoothed aggregation technique is applied
|
||||
as algebraic coarsening strategy [<A
|
||||
HREF="node28.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node28.html#VANEK_MANDEL_BREZINA">27</A>].
|
||||
Either exact or approximate solvers are available to solve the coarsest-level system. Specifically,
|
||||
different versions of sparse LU factorizations from external packages, and native incomplete
|
||||
LU factorizations and iterative block-Jacobi solvers can be used.
|
||||
All smoothers can be also exploited as one-level preconditioners.
|
||||
ALT="$A$"> is a square, real or complex, sparse matrix. The name of the package comes from its original implementation, containing
|
||||
multi-level additive and hybrid Schwarz preconditioners, as well as one-level additive
|
||||
Schwarz preconditioners. The current version extends the original plan by including
|
||||
multi-level cycles and smoothers widely used in multigrid methods.
|
||||
|
||||
<P>
|
||||
The multi-level preconditioners implemented in MLD2P4 are obtained by combining
|
||||
AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and
|
||||
K-cycles [<A
|
||||
HREF="node27.html#Briggs2000">2</A>,<A
|
||||
HREF="node27.html#Notay2008">23</A>] are available, which allow to define
|
||||
almost all the preconditioners in the package, including the multi-level hybrid
|
||||
Schwarz ones; a specific cycle is implemented to obained multi-level additive
|
||||
Schwarz preconditioners. The Jacobi, hybridforward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods
|
||||
are available as smoothers. An algebraic approach is used to generate a hierarchy of
|
||||
coarse-level matrices and operators, without explicitly using any information on the
|
||||
geometry of the original problem, e.g., the discretization of a PDE. To this end,
|
||||
the smoothed aggregation technique [<A
|
||||
HREF="node27.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node27.html#VANEK_MANDEL_BREZINA">29</A>]
|
||||
is applied. Either exact or approximate solvers can be used on the coarsest-level
|
||||
system. Specifically, different sparse LU factorizations from external
|
||||
packages, and native incomplete LU factorizations and Jacobi, hybrid Gauss-Seidel,
|
||||
and block-Jacobi solvers are available. All smoothers can be also exploited as one-level
|
||||
preconditioners.
|
||||
|
||||
<P>
|
||||
MLD2P4 is written in Fortran 2003, following an
|
||||
object-oriented design through the exploitation of features
|
||||
such as abstract data type creation, functional overloading, and
|
||||
dynamic memory management.
|
||||
The parallel implementation is based on a Single Program Multiple Data
|
||||
such as abstract data type creation, type extension, functional overloading, and
|
||||
dynamic memory management. The parallel implementation is based on a Single Program Multiple Data
|
||||
(SPMD) paradigm. Single and
|
||||
double precision implementations of MLD2P4 are available for both the
|
||||
real and the complex case, which can be used through a single
|
||||
@@ -113,84 +124,81 @@ interface.
|
||||
|
||||
<P>
|
||||
MLD2P4 has been designed to implement scalable and easy-to-use
|
||||
multilevel preconditioners in the context of the PSBLAS
|
||||
(Parallel Sparse BLAS) computational framework [<A
|
||||
HREF="node28.html#psblas_00">18</A>,<A
|
||||
HREF="node28.html#PSBLAS3">17</A>].
|
||||
PSBLAS provides basic linear algebra
|
||||
multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS)
|
||||
computational framework [<A
|
||||
HREF="node27.html#psblas_00">19</A>,<A
|
||||
HREF="node27.html#PSBLAS3">18</A>]. PSBLAS provides basic linear algebra
|
||||
operators and data management facilities for distributed sparse matrices,
|
||||
as well as parallel Krylov solvers which can be coupled with the MLD2P4 preconditioners.
|
||||
as well as parallel Krylov solvers which can be used with the MLD2P4 preconditioners.
|
||||
The choice of PSBLAS has been mainly motivated by the need of having
|
||||
a portable and efficient software infrastructure implementing ``de facto'' standard
|
||||
parallel sparse linear algebra kernels, to pursue goals such as performance,
|
||||
portability, modularity ed extensibility in the development of the preconditioner
|
||||
package. On the other hand, the implementation of MLD2P4 has led to some
|
||||
revisions and extentions of the original PSBLAS kernels.
|
||||
The inter-process comunication required
|
||||
by MLD2P4 is encapsulated into the PSBLAS routines, except few cases where
|
||||
MPI [<A
|
||||
HREF="node28.html#MPI1">24</A>] is explicitly called <B>É ancora cosi???</B>. Therefore, MLD2P4 can be run on any parallel
|
||||
machine where PSBLAS and MPI implementations are available.
|
||||
The inter-process comunication required by MLD2P4 is encapsulated
|
||||
in the PSBLAS routines;therefore, MLD2P4 can be run on any parallel machine where PSBLAS
|
||||
implementations are available.
|
||||
|
||||
<P>
|
||||
MLD2P4 has a layered and modular software architecture where three main layers can be identified.
|
||||
The lower layer consists of the PSBLAS kernels, the middle one implements
|
||||
MLD2P4 has a layered and modular software architecture where three main layers can be
|
||||
identified. The lower layer consists of the PSBLAS kernels, the middle one implements
|
||||
the construction and application phases of the preconditioners, and the upper one
|
||||
provides a uniform interface to all the preconditioners.
|
||||
This architecture allows for different levels of use of the package:
|
||||
few black-box routines at the upper layer allow non-expert users to easily
|
||||
build any preconditioner available in MLD2P4 and to apply it within a PSBLAS Krylov solver;
|
||||
<B>facilities are also available that allow more expert users to extend the set of smoothers
|
||||
and solvers for building new versions of preconditioners.</B>
|
||||
few black-box routines at the upper layer allow all users to easily
|
||||
build and apply any preconditioner available in MLD2P4;
|
||||
facilities are also available allowing expert users to extend the set of smoothers
|
||||
and solvers for building new versions of the preconditioners (see
|
||||
Section <A HREF="node24.html#sec:adding">7</A>).
|
||||
|
||||
<P>
|
||||
We note that the user interface of MLD2P4 2.1 (<B>Perche 2.1 e non 2.0???...Ricordarsi di cambiare il configure</B>)
|
||||
has been extended with respect to the previous versions
|
||||
in order to separate the construction
|
||||
of the multi-level hierarchy from the construction of the smoothers and solvers, and to allow for more flexibility
|
||||
at each level.
|
||||
The software architecture described in [<A
|
||||
HREF="node28.html#MLD2P4_TOMS">8</A>] has significantly evolved too, in order to fully exploit the
|
||||
Fortran 2003 features implemented in PSBLAS 3.
|
||||
We note that the user interface of MLD2P4 2.1 has been extended with respect to the
|
||||
previous versions in order to separate the construction of the multi-level hierarchy from
|
||||
the construction of the smoothers and solvers, and to allow for more flexibility
|
||||
at each level. The software architecture described in [<A
|
||||
HREF="node27.html#MLD2P4_TOMS">9</A>] has significantly
|
||||
evolved too, in order to fully exploit the Fortran 2003 features implemented in PSBLAS 3.
|
||||
However, compatibility with previous versions has been preserved.
|
||||
|
||||
<P>
|
||||
This guide is organized as follows. General information on the distribution of the source code
|
||||
is reported in Section <A HREF="node4.html#sec:distribution">2</A>, while details on the configuration
|
||||
and installation of the package are given in Section <A HREF="node5.html#sec:building">3</A>. A short description of
|
||||
the preconditioners implemented in MLD2P4 is provided
|
||||
in Section <A HREF="node11.html#sec:background">4</A>, to help the users in choosing among them.
|
||||
The basics for building and applying the preconditioners
|
||||
with the Krylov solvers implemented in PSBLAS are reported in Section <A HREF="node14.html#sec:started">5</A>, where the
|
||||
Fortran 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
|
||||
in Section <A HREF="node16.html#sec:userinterface">6</A>. The error handling mechanism used by the package is briefly described
|
||||
in Section <A HREF="node26.html#sec:errors">8</A>. The copyright terms concerning the distribution and modification
|
||||
of MLD2P4 are reported in Appendix <A HREF="node27.html#sec:license">A</A>.
|
||||
This guide is organized as follows. General information on the distribution of the source
|
||||
code is reported in Section <A HREF="node4.html#sec:distribution">2</A>, while details on the configuration
|
||||
and installation of the package are given in Section <A HREF="node5.html#sec:building">3</A>. A short description
|
||||
of the preconditioners implemented in MLD2P4 is provided in Section <A HREF="node11.html#sec:background">4</A>,
|
||||
to help the users in choosing among them. The basics for building and applying the
|
||||
preconditioners with the Krylov solvers implemented in PSBLAS are reported
|
||||
in Section <A HREF="node13.html#sec:started">5</A>, where the Fortran codes of a few sample programs
|
||||
are also shown. A reference guide for the user interface routines is provided
|
||||
in Section <A HREF="node15.html#sec:userinterface">6</A>. Information on the extension of the package
|
||||
through the addition of new smoothers and solvers is reported in Section <A HREF="node24.html#sec:adding">7</A>.
|
||||
The error handling mechanism used by the package
|
||||
is briefly described in Section <A HREF="node25.html#sec:errors">8</A>. The copyright terms concerning the
|
||||
distribution and modification of MLD2P4 are reported in Appendix <A HREF="node26.html#sec:license">A</A>.
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html113"
|
||||
<A NAME="tex2html110"
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html109"
|
||||
<A NAME="tex2html106"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html103"
|
||||
<A NAME="tex2html100"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html111"
|
||||
<A NAME="tex2html108"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html114"
|
||||
<B> Next:</B> <A NAME="tex2html111"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> Up:</B> <A NAME="tex2html110"
|
||||
<B> Up:</B> <A NAME="tex2html107"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html104"
|
||||
<B> Previous:</B> <A NAME="tex2html101"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> <A NAME="tex2html112"
|
||||
<B> <A NAME="tex2html109"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html125"
|
||||
<A NAME="tex2html122"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html121"
|
||||
<A NAME="tex2html118"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html115"
|
||||
<A NAME="tex2html112"
|
||||
HREF="node3.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html123"
|
||||
<A NAME="tex2html120"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html126"
|
||||
<B> Next:</B> <A NAME="tex2html123"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Up:</B> <A NAME="tex2html122"
|
||||
<B> Up:</B> <A NAME="tex2html119"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html116"
|
||||
<B> Previous:</B> <A NAME="tex2html113"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<B> <A NAME="tex2html124"
|
||||
<B> <A NAME="tex2html121"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -67,7 +67,7 @@ where contact points for further information can be also found.
|
||||
|
||||
<P>
|
||||
The software is available under a modified BSD license, as specified
|
||||
in Appendix <A HREF="node27.html#sec:license">A</A>; please note that some of the optional
|
||||
in Appendix <A HREF="node26.html#sec:license">A</A>; please note that some of the optional
|
||||
third party libraries may be licensed under a different and more
|
||||
stringent license, most notably the GPL, and this should be taken into
|
||||
account when treating derived works.
|
||||
|
||||
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html137"
|
||||
<A NAME="tex2html134"
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html133"
|
||||
<A NAME="tex2html130"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html127"
|
||||
<A NAME="tex2html124"
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html135"
|
||||
<A NAME="tex2html132"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html138"
|
||||
<B> Next:</B> <A NAME="tex2html135"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<B> Up:</B> <A NAME="tex2html134"
|
||||
<B> Up:</B> <A NAME="tex2html131"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html128"
|
||||
<B> Previous:</B> <A NAME="tex2html125"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> <A NAME="tex2html136"
|
||||
<B> <A NAME="tex2html133"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -57,7 +57,7 @@ Configuring and Building MLD2P4
|
||||
</H1>
|
||||
|
||||
In order to build MLD2P4 it is necessary to set up a Makefile with appropriate
|
||||
values for your system; this is done by means of the <code>configure</code>
|
||||
system-dependent variables; this is done by means of the <code>configure</code>
|
||||
script. The distribution also includes the autoconf and automake
|
||||
sources employed to generate the script, but usually this is not needed
|
||||
to build the software.
|
||||
@@ -79,15 +79,15 @@ real and complex data, in both single and double precision.
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html139"
|
||||
<LI><A NAME="tex2html136"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html140"
|
||||
<LI><A NAME="tex2html137"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html141"
|
||||
<LI><A NAME="tex2html138"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html142"
|
||||
<LI><A NAME="tex2html139"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html143"
|
||||
<LI><A NAME="tex2html140"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
|
||||
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html154"
|
||||
<A NAME="tex2html151"
|
||||
HREF="node7.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html150"
|
||||
<A NAME="tex2html147"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html144"
|
||||
<A NAME="tex2html141"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html152"
|
||||
<A NAME="tex2html149"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html155"
|
||||
<B> Next:</B> <A NAME="tex2html152"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<B> Up:</B> <A NAME="tex2html151"
|
||||
<B> Up:</B> <A NAME="tex2html148"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html145"
|
||||
<B> Previous:</B> <A NAME="tex2html142"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> <A NAME="tex2html153"
|
||||
<B> <A NAME="tex2html150"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -60,13 +60,13 @@ The following base libraries are needed:
|
||||
<DL>
|
||||
<DT><STRONG>BLAS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node28.html#blas3">12</A>,<A
|
||||
HREF="node28.html#blas2">13</A>,<A
|
||||
HREF="node28.html#blas1">20</A>] Many vendors provide optimized versions
|
||||
HREF="node27.html#blas3">13</A>,<A
|
||||
HREF="node27.html#blas2">14</A>,<A
|
||||
HREF="node27.html#blas1">21</A>] Many vendors provide optimized versions
|
||||
of BLAS; if no vendor version is
|
||||
available for a given platform, the ATLAS software
|
||||
(<TT><A NAME="tex2html1"
|
||||
HREF="math-atlas.sourceforge.net/">math-atlas.sourceforge.net/</A></TT>)
|
||||
HREF="math-atlas.sourceforge.net">math-atlas.sourceforge.net</A></TT>)
|
||||
may be employed. The reference BLAS from Netlib
|
||||
(<TT><A NAME="tex2html2"
|
||||
HREF="www.netlib.org/blas">www.netlib.org/blas</A></TT>) are meant to define the standard
|
||||
@@ -79,24 +79,24 @@ The following base libraries are needed:
|
||||
experience is that configuring ATLAS for building full LAPACK does not
|
||||
work in the correct way. Our advice is first to download the LAPACK tarfile from
|
||||
<TT><A NAME="tex2html3"
|
||||
HREF="www.netlib.org/lapac">www.netlib.org/lapac</A></TT> and install it independently of ATLAS. In this case,
|
||||
HREF="www.netlib.org/lapack">www.netlib.org/lapack</A></TT> and install it independently of ATLAS. In this case,
|
||||
you need to modify the OPTS and NOOPT definitions for including -fPIC compilation option
|
||||
in the make.inc file of the LAPACK library.
|
||||
</DD>
|
||||
<DT><STRONG>MPI</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node28.html#MPI2">19</A>,<A
|
||||
HREF="node28.html#MPI1">24</A>] A version of MPI is available on most
|
||||
HREF="node27.html#MPI2">20</A>,<A
|
||||
HREF="node27.html#MPI1">26</A>] A version of MPI is available on most
|
||||
high-performance computing systems.
|
||||
|
||||
</DD>
|
||||
<DT><STRONG>PSBLAS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node28.html#PSBLASGUIDE">16</A>,<A
|
||||
HREF="node28.html#psblas_00">18</A>] Parallel Sparse BLAS (PSBLAS) is
|
||||
HREF="node27.html#PSBLASGUIDE">17</A>,<A
|
||||
HREF="node27.html#psblas_00">19</A>] Parallel Sparse BLAS (PSBLAS) is
|
||||
available from <TT><A NAME="tex2html4"
|
||||
HREF="www.ce.uniroma2.it/psblas">www.ce.uniroma2.it/psblas</A></TT>; version
|
||||
3.4.0 (or later) is required. Indeed, all the prerequisites
|
||||
3.5.0 (or later) is required. Indeed, all the prerequisites
|
||||
listed so far are also prerequisites of PSBLAS.
|
||||
</DD>
|
||||
</DL>
|
||||
@@ -108,26 +108,26 @@ compiler as MLD2P4.
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html154"
|
||||
<A NAME="tex2html151"
|
||||
HREF="node7.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html150"
|
||||
<A NAME="tex2html147"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html144"
|
||||
<A NAME="tex2html141"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html152"
|
||||
<A NAME="tex2html149"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html155"
|
||||
<B> Next:</B> <A NAME="tex2html152"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<B> Up:</B> <A NAME="tex2html151"
|
||||
<B> Up:</B> <A NAME="tex2html148"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html145"
|
||||
<B> Previous:</B> <A NAME="tex2html142"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> <A NAME="tex2html153"
|
||||
<B> <A NAME="tex2html150"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
@@ -26,33 +26,34 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html166"
|
||||
<A NAME="tex2html163"
|
||||
HREF="node8.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html162"
|
||||
<A NAME="tex2html159"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html156"
|
||||
<A NAME="tex2html153"
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html164"
|
||||
<A NAME="tex2html161"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html167"
|
||||
<B> Next:</B> <A NAME="tex2html164"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<B> Up:</B> <A NAME="tex2html163"
|
||||
<B> Up:</B> <A NAME="tex2html160"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html157"
|
||||
<B> Previous:</B> <A NAME="tex2html154"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<B> <A NAME="tex2html165"
|
||||
<B> <A NAME="tex2html162"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00052000000000000000">
|
||||
Optional third party libraries</A>
|
||||
<H2><A NAME="SECTION00052000000000000000"></A><A NAME="sec:third_party"></A>
|
||||
<BR>
|
||||
Optional third party libraries
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
@@ -64,73 +65,74 @@ for multi-level preconditioners may change to reflect their presence.
|
||||
<DL>
|
||||
<DT><STRONG>UMFPACK</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node28.html#UMFPACK">9</A>]
|
||||
HREF="node27.html#UMFPACK">10</A>]
|
||||
A sparse LU factorization package included in the SuiteSparse library, available from
|
||||
<TT><A NAME="tex2html5"
|
||||
HREF="faculty.cse.tamu.edu/davis/suitesparse.html">faculty.cse.tamu.edu/davis/suitesparse.html</A></TT>;
|
||||
it provides sequential factorization and triangular system solution for double
|
||||
precision real and complex data. We tested
|
||||
version 4.5.4. Note that for configuring SuiteSparse you should provide the right
|
||||
path to the BLAS and LAPACK libraries in the <code>SuiteSparse_config/SuiteSparse_config.mk</code> file.
|
||||
precision real and complex data. We tested version 4.5.4 of SuiteSparse.
|
||||
Note that for configuring SuiteSparse you should provide the right path to the BLAS
|
||||
and LAPACK libraries in the <code>SuiteSparse_config/SuiteSparse_config.mk</code> file.
|
||||
</DD>
|
||||
<DT><STRONG>MUMPS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node28.html#MUMPS">10</A>]
|
||||
HREF="node27.html#MUMPS">11</A>]
|
||||
A sparse LU factorization package available from <TT><A NAME="tex2html6"
|
||||
HREF="mumps.enseeiht.fr/">mumps.enseeiht.fr/</A></TT>;
|
||||
HREF="mumps.enseeiht.fr">mumps.enseeiht.fr</A></TT>;
|
||||
it provides sequential and parallel factorizations and triangular system solution
|
||||
for single and double precision, real and complex data.
|
||||
We tested versions 4.10.0 and version 5.0.1.
|
||||
</DD>
|
||||
<DT><STRONG>SuperLU</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node28.html#SUPERLU">11</A>]
|
||||
HREF="node27.html#SUPERLU">12</A>]
|
||||
A sparse LU factorization package available from
|
||||
<TT><A NAME="tex2html7"
|
||||
HREF="crd.lbl.gov/~xiaoye/SuperLU/">crd.lbl.gov/~xiaoye/SuperLU/</A></TT>; it provides sequential
|
||||
factorization and triangular system solution for single and double precision,
|
||||
real and complex data. We tested version 4.3 and 5.0. If you installed BLAS from
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file.
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file.
|
||||
|
||||
</DD>
|
||||
<DT><STRONG>SuperLU_Dist</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node28.html#SUPERLUDIST">21</A>]
|
||||
HREF="node27.html#SUPERLUDIST">22</A>]
|
||||
A sparse LU factorization package available
|
||||
from the same site as SuperLU; it provides parallel factorization and
|
||||
triangular system solution for double precision real and complex data.
|
||||
We tested version 3.3 and 4.2. If you installed BLAS from
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file and
|
||||
to add the <code>-std=c99</code> option to the C compiler options.
|
||||
Note that this library requires the ParMETIS
|
||||
library for parallel graph partitioning and fill-reducing matrix ordering available from
|
||||
<TT><A NAME="tex2html8"
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file and
|
||||
to add the <code>-std=c99</code> option to the C compiler options.
|
||||
Note that this library requires the ParMETIS
|
||||
library for parallel graph partitioning and fill-reducing matrix ordering, available from
|
||||
<TT><A NAME="tex2html8"
|
||||
HREF="glaros.dtc.umn.edu/gkhome/metis/parmetis/overview">glaros.dtc.umn.edu/gkhome/metis/parmetis/overview</A></TT>.
|
||||
</DD>
|
||||
</DL>
|
||||
|
||||
<P>
|
||||
</DD>
|
||||
</DL><HR>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html166"
|
||||
<A NAME="tex2html163"
|
||||
HREF="node8.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html162"
|
||||
<A NAME="tex2html159"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html156"
|
||||
<A NAME="tex2html153"
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html164"
|
||||
<A NAME="tex2html161"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html167"
|
||||
<B> Next:</B> <A NAME="tex2html164"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<B> Up:</B> <A NAME="tex2html163"
|
||||
<B> Up:</B> <A NAME="tex2html160"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html157"
|
||||
<B> Previous:</B> <A NAME="tex2html154"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<B> <A NAME="tex2html165"
|
||||
<B> <A NAME="tex2html162"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html178"
|
||||
<A NAME="tex2html175"
|
||||
HREF="node9.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html174"
|
||||
<A NAME="tex2html171"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html168"
|
||||
<A NAME="tex2html165"
|
||||
HREF="node7.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html176"
|
||||
<A NAME="tex2html173"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html179"
|
||||
<B> Next:</B> <A NAME="tex2html176"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<B> Up:</B> <A NAME="tex2html175"
|
||||
<B> Up:</B> <A NAME="tex2html172"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html169"
|
||||
<B> Previous:</B> <A NAME="tex2html166"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<B> <A NAME="tex2html177"
|
||||
<B> <A NAME="tex2html174"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -56,11 +56,8 @@ Configuration options</A>
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<B>CONTROLLARE HELP DEL CONFIGURE: Versione MLD2P4, Versione PSBLAS, Influential Environmental Variables???</B>
|
||||
|
||||
<P>
|
||||
To build MLD2P4 the first step is to use the <code>configure</code> script
|
||||
in the main directory to generate the necessary makefile(s).
|
||||
In order to build MLD2P4, the first step is to use the <code>configure</code> script
|
||||
in the main directory to generate the necessary makefile.
|
||||
|
||||
<P>
|
||||
As a minimal example consider the following:
|
||||
@@ -74,7 +71,7 @@ be specified with an <EM>absolute</EM> path).
|
||||
The full set of options may be looked at by issuing the command
|
||||
<code>./configure --help</code>, which produces:
|
||||
<PRE>
|
||||
`configure' configures MLD2P4 2.0 to adapt to many kinds of systems.
|
||||
`configure' configures MLD2P4 2.1 to adapt to many kinds of systems.
|
||||
|
||||
Usage: ./configure [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -128,27 +125,55 @@ Fine tuning of the installation directories:
|
||||
--pdfdir=DIR pdf documentation [DOCDIR]
|
||||
--psdir=DIR ps documentation [DOCDIR]
|
||||
|
||||
Program names:
|
||||
--program-prefix=PREFIX prepend PREFIX to installed program names
|
||||
--program-suffix=SUFFIX append SUFFIX to installed program names
|
||||
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
|
||||
|
||||
Optional Features:
|
||||
--disable-option-checking ignore unrecognized --enable/--with options
|
||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||
--disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors
|
||||
--enable-serial Specify whether to enable a fake mpi library to run
|
||||
in serial mode.
|
||||
--enable-long-integers Specify usage of 64 bits integers.
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--with-psblas=DIR The install directory for PSBLAS, for example,
|
||||
--with-psblas=/opt/packages/psblas-3.3
|
||||
--with-psblas=/opt/packages/psblas-3.5
|
||||
--with-psblas-incdir=DIR
|
||||
Specify the directory for PSBLAS includes.
|
||||
--with-psblas-libdir=DIR
|
||||
Specify the directory for PSBLAS library.
|
||||
--with-ccopt additional CCOPT flags to be added: will prepend
|
||||
to CCOPT
|
||||
--with-fcopt additional FCOPT flags to be added: will prepend
|
||||
to FCOPT
|
||||
--with-libs List additional link flags here. For example,
|
||||
--with-libs=-lspecial_system_lib or
|
||||
--with-libs=-L/path/to/libs
|
||||
--with-clibs additional CLIBS flags to be added: will prepend
|
||||
to CLIBS
|
||||
--with-flibs additional FLIBS flags to be added: will prepend
|
||||
to FLIBS
|
||||
--with-library-path additional LIBRARYPATH flags to be added: will
|
||||
prepend to LIBRARYPATH
|
||||
--with-include-path additional INCLUDEPATH flags to be added: will
|
||||
prepend to INCLUDEPATH
|
||||
--with-module-path additional MODULE_PATH flags to be added: will
|
||||
prepend to MODULE_PATH
|
||||
--with-extra-libs List additional link flags here. For example,
|
||||
--with-extra-libs=-lspecial_system_lib or
|
||||
--with-extra-libs=-L/path/to/libs
|
||||
--with-mumps=LIBNAME Specify the libname for MUMPS. Default: "-lsmumps
|
||||
-ldmumps -lcmumps -lzmumps -lmumps_common -lpord"
|
||||
--with-blas=<lib> use BLAS library <lib>
|
||||
--with-blasdir=<dir> search for BLAS library in <dir>
|
||||
--with-lapack=<lib> use LAPACK library <lib>
|
||||
--with-mumps=LIBNAME Specify the libname for MUMPS. Default: autodetect
|
||||
with minimum "-lmumps_common -lpord"
|
||||
--with-mumpsdir=DIR Specify the directory for MUMPS library and
|
||||
includes. Note: you will need to add auxiliary
|
||||
libraries with --extra-libs; this depends on how
|
||||
@@ -194,24 +219,23 @@ Some influential environment variables:
|
||||
CFLAGS C compiler flags
|
||||
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
|
||||
you have headers in a nonstandard directory <include dir>
|
||||
CPP C preprocessor
|
||||
MPICC MPI C compiler command
|
||||
F77 Fortran 77 compiler command
|
||||
FFLAGS Fortran 77 compiler flags
|
||||
MPIF77 MPI Fortran 77 compiler command
|
||||
MPIFC MPI Fortran compiler command
|
||||
CPP C preprocessor
|
||||
|
||||
Use these variables to override the choices made by `configure' or to help
|
||||
it to find libraries and programs with nonstandard names/locations.
|
||||
|
||||
Report bugs to <bugreport@mld2p4.it>.
|
||||
</PRE>
|
||||
For instance, if a user has built and installed PSBLAS 3.4 under the
|
||||
|
||||
<P>
|
||||
For instance, if a user has built and installed PSBLAS 3.5 under the
|
||||
<code>/opt</code> directory and is
|
||||
using the SuiteSparse package (which includes UMFPACK), then MLD2P4
|
||||
might be configured with:
|
||||
<PRE>
|
||||
./configure --with-psblas=/opt/psblas-3.4/ \
|
||||
./configure --with-psblas=/opt/psblas-3.5/ \
|
||||
--with-umfpackincdir=/usr/include/suitesparse/
|
||||
</PRE>
|
||||
Once the configure script has completed execution, it will have
|
||||
@@ -223,7 +247,9 @@ install directory under the name <code>Make.inc.MLD2P4</code>.
|
||||
To use the MUMPS solver package,
|
||||
the user has to add the appropriate options to the configure script;
|
||||
by default we are looking for the libraries
|
||||
<code>-ldmumps -lsmumps</code> <code>-lzmumps -lzmumps -mumps_common -lpord</code>.
|
||||
<code>-ldmumps -lsmumps</code> <code>-lzmumps -mumps_common -lpord</code>.
|
||||
<B>Pasqua, c'era due volte lzmumps. L'ho eliminato, ma poi mi e' venuto
|
||||
il dubbio che il secondo lzmumps dovesse essere modificato.</B>
|
||||
MUMPS often uses additional packages such as ScaLAPACK, ParMETIS,
|
||||
SCOTCH, as well as enabling OpenMP; in such cases it is necessary to
|
||||
add linker options with the <code>--with-extra-libs</code> configure option.
|
||||
@@ -238,26 +264,26 @@ followed (optionally) by
|
||||
make install
|
||||
</PRE><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html178"
|
||||
<A NAME="tex2html175"
|
||||
HREF="node9.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html174"
|
||||
<A NAME="tex2html171"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html168"
|
||||
<A NAME="tex2html165"
|
||||
HREF="node7.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html176"
|
||||
<A NAME="tex2html173"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html179"
|
||||
<B> Next:</B> <A NAME="tex2html176"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<B> Up:</B> <A NAME="tex2html175"
|
||||
<B> Up:</B> <A NAME="tex2html172"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html169"
|
||||
<B> Previous:</B> <A NAME="tex2html166"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<B> <A NAME="tex2html177"
|
||||
<B> <A NAME="tex2html174"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html190"
|
||||
<A NAME="tex2html187"
|
||||
HREF="node10.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html186"
|
||||
<A NAME="tex2html183"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html180"
|
||||
<A NAME="tex2html177"
|
||||
HREF="node8.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html188"
|
||||
<A NAME="tex2html185"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html191"
|
||||
<B> Next:</B> <A NAME="tex2html188"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
<B> Up:</B> <A NAME="tex2html187"
|
||||
<B> Up:</B> <A NAME="tex2html184"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html181"
|
||||
<B> Previous:</B> <A NAME="tex2html178"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<B> <A NAME="tex2html189"
|
||||
<B> <A NAME="tex2html186"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -54,7 +54,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<H2><A NAME="SECTION00054000000000000000">
|
||||
Bug reporting</A>
|
||||
</H2>
|
||||
If you find any bugs in our codes, please let us know at (DECIDERE A CHI FARE IL BUG REPORTING)
|
||||
If you find any bugs in our codes, please let us know at
|
||||
|
||||
<a href="mailto:bugreport@mld2p4.it">
|
||||
<TT>bugreport@mld2p4.it</TT>
|
||||
@@ -62,7 +62,8 @@ If you find any bugs in our codes, please let us know at (DECIDERE A CHI FARE IL
|
||||
</a>
|
||||
; be aware that
|
||||
the amount of information needed to reproduce a problem in a parallel
|
||||
program may vary quite a lot.
|
||||
program may vary quite a lot. <B>A chi va fatto il bug reporting? La
|
||||
mail inviata a questo indirizzo non viene mai letta.</B>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
@@ -23,18 +23,18 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html24"
|
||||
<A NAME="tex2html23"
|
||||
HREF="node1.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png">
|
||||
<A NAME="tex2html22"
|
||||
<A NAME="tex2html21"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html25"
|
||||
<B> Next:</B> <A NAME="tex2html24"
|
||||
HREF="node1.html">Abstract</A>
|
||||
<B> <A NAME="tex2html23"
|
||||
<B> <A NAME="tex2html22"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -77,76 +77,74 @@ Feb. 28, 2017
|
||||
<A NAME="CHILD_LINKS"></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html26"
|
||||
<LI><A NAME="tex2html25"
|
||||
HREF="node1.html">Abstract</A>
|
||||
<LI><A NAME="tex2html27"
|
||||
<LI><A NAME="tex2html26"
|
||||
HREF="node2.html">Contents</A>
|
||||
<LI><A NAME="tex2html28"
|
||||
<LI><A NAME="tex2html27"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<LI><A NAME="tex2html29"
|
||||
<LI><A NAME="tex2html28"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<LI><A NAME="tex2html30"
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html31"
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html32"
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html34"
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html37"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html38"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
HREF="node14.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html39"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
HREF="node15.html">User Interface</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html40"
|
||||
HREF="node15.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node16.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html41"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<UL>
|
||||
HREF="node17.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html42"
|
||||
HREF="node17.html">Subroutine init</A>
|
||||
HREF="node18.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html43"
|
||||
HREF="node18.html">Subroutine set</A>
|
||||
HREF="node19.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html44"
|
||||
HREF="node19.html">Subroutine bld</A>
|
||||
HREF="node20.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html45"
|
||||
HREF="node20.html">Subroutine hierarchy_bld</A>
|
||||
HREF="node21.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html46"
|
||||
HREF="node21.html">Subroutine smoothers_bld</A>
|
||||
HREF="node22.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html47"
|
||||
HREF="node22.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html48"
|
||||
HREF="node23.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html49"
|
||||
HREF="node24.html">Subroutine descr</A>
|
||||
HREF="node23.html">Subroutine descr</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html48"
|
||||
HREF="node24.html">Adding smoothers and solvers to MLD2P4</A>
|
||||
<LI><A NAME="tex2html49"
|
||||
HREF="node25.html">Error Handling</A>
|
||||
<LI><A NAME="tex2html50"
|
||||
HREF="node25.html">Adding smoothers and solvers to MLD2P4</A>
|
||||
HREF="node26.html">License</A>
|
||||
<LI><A NAME="tex2html51"
|
||||
HREF="node26.html">Error Handling</A>
|
||||
HREF="node27.html">Bibliography</A>
|
||||
<LI><A NAME="tex2html52"
|
||||
HREF="node27.html">License</A>
|
||||
<LI><A NAME="tex2html53"
|
||||
HREF="node28.html">Bibliography</A>
|
||||
<LI><A NAME="tex2html54"
|
||||
HREF="node29.html">About this document ...</A>
|
||||
HREF="node28.html">About this document ...</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
|
||||
@@ -1,22 +1,20 @@
|
||||
\section*{Abstract}
|
||||
\addcontentsline{toc}{section}{Abstract}
|
||||
\textsc{MLD2P4 (Multi-Level Domain Decomposition Parallel Preconditioners Package based on
|
||||
PSBLAS}) is a package of parallel algebraic multi-level preconditioners.
|
||||
The first release made available various versions of
|
||||
one-level additive and multi-level additive
|
||||
and hybrid Schwarz preconditioners.
|
||||
The package has been extended to include further multi-level cycles and smoothers widely used in
|
||||
multigrid methods.
|
||||
In the multi-level case, a purely algebraic approach
|
||||
is applied to generate coarse-level corrections, so that no geometric background is needed
|
||||
concerning the matrix to be preconditioned. The matrix is assumed to be square, real
|
||||
or complex.
|
||||
\textsc{MLD2P4 (Multi-Level Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS}) is a package of parallel algebraic multi-level preconditioners.
|
||||
The first release of MLD2P4 made available multi-level additive and hybrid Schwarz
|
||||
preconditioners, as well as one-level additive Schwarz preconditioners. The package
|
||||
has been extended to include further multi-level cycles and smoothers widely used in
|
||||
multigrid methods. In the multi-level case, a purely algebraic approach is applied to
|
||||
generate coarse-level corrections, so that no geometric background is needed
|
||||
concerning the matrix to be preconditioned. The matrix is assumed to be square,
|
||||
real or complex.
|
||||
|
||||
MLD2P4 has been designed to provide scalable and easy-to-use preconditioners in the
|
||||
context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)
|
||||
MLD2P4 has been designed to provide scalable and easy-to-use preconditioners
|
||||
in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)
|
||||
computational framework and can be used in conjuction with the Krylov solvers
|
||||
available in this framework. MLD2P4 enables the user to easily specify different features
|
||||
of an algebraic multi-level preconditioner, thus allowing to search
|
||||
available in this framework. MLD2P4 enables the user to easily specify different
|
||||
features of an algebraic multi-level preconditioner, thus allowing to search
|
||||
for the ``best'' preconditioner for the problem at hand.
|
||||
|
||||
The package employs object-oriented design techniques in
|
||||
|
||||
@@ -1,229 +1,169 @@
|
||||
%\section{Bibliography\label{sec:bib}}
|
||||
\begin{thebibliography}{99}
|
||||
\addcontentsline{toc}{section}{\refname}
|
||||
\markboth{\textsc{MLD2P4 User's and Reference Guide}}
|
||||
{\textsc{References}}
|
||||
|
||||
%\let\refname\relax
|
||||
|
||||
%
|
||||
%\bibitem{PARA04FOREST}
|
||||
%G.~Bella, S.~Filippone, A.~De Maio, A., Testa, M.:
|
||||
%A Simulation Model for Forest Fires.
|
||||
%In: Dongarra, J., Madsen, K., Wasniewski, J. (eds.):
|
||||
%Proceedings of PARA~04 Workshop on State of the Art
|
||||
%in Scientific Computing. Lecture Notes in Computer Science, 3732. Berlin:
|
||||
%Springer, 2005
|
||||
%
|
||||
\bibitem{BREZINA_VANEK}
|
||||
M.~Brezina, P.~Van{\v e}k,
|
||||
{\em A Black-Box Iterative Solver Based on a Two-Level Schwarz Method},
|
||||
Computing, 63, 1999, 233--263.
|
||||
%
|
||||
\bibitem{para_04}
|
||||
A.~Buttari, P.~D'Ambra, D.~di Serafino, S.~Filippone,
|
||||
{\em Extending PSBLAS to Build Parallel Schwarz Preconditioners},
|
||||
in , J.~Dongarra, K.~Madsen, J.~Wasniewski, editors,
|
||||
Proceedings of PARA~04 Workshop on State of the Art
|
||||
in Scientific Computing, Lecture Notes in Computer Science,
|
||||
Springer, 2005, 593--602.
|
||||
%
|
||||
\bibitem{aaecc_07}
|
||||
A.~Buttari, P.~D'Ambra, D.~di~Serafino, S.~Filippone,
|
||||
{\em 2LEV-D2P4: a package of high-performance preconditioners
|
||||
for scientific and engineering applications},
|
||||
Applicable Algebra in Engineering, Communications and Computing,
|
||||
18, 3, 2007, 223--239.
|
||||
%Published online: 13 February 2007, {\tt http://dx.doi.org/10.1007/s00200-007-0035-z}
|
||||
%
|
||||
\bibitem{apnum_07} P.~D'Ambra, S.~Filippone, D.~di~Serafino,
|
||||
{\em On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners},
|
||||
Applied Numerical Mathematics, Elsevier Science,
|
||||
57, 11-12, 2007, 1181-1196.
|
||||
%published online 3 February 2007, {\tt
|
||||
% http://dx.doi.org/10.1016/j.apnum.2007.01.006}
|
||||
|
||||
%% \bibitem{DOUGLAS}
|
||||
%% R.E.~Bank and C.C.~Douglas,
|
||||
%% {\em SMMP: Sparse Matrix Multiplication Package},
|
||||
%% Advances in Computational Mathematics, 1993, 1, 127-137.
|
||||
%% (See also {\tt http://www.mgnet.org/~douglas/ccd-codes.html})
|
||||
%
|
||||
%
|
||||
%% \bibitem{CAI_SAAD}
|
||||
%% X.~C.~Cai and Y.~Saad,
|
||||
%% {\em Overlapping Domain Decomposition Algorithms for General Sparse Matrices},
|
||||
%% Numerical Linear Algebra with Applications, 3(3), pp.~221--237, 1996.
|
||||
%
|
||||
\bibitem{CAI_SARKIS}
|
||||
X.~C.~Cai, M.~Sarkis,
|
||||
{\em A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems},
|
||||
SIAM Journal on Scientific Computing, 21, 2, 1999, 792--797.
|
||||
%
|
||||
\bibitem{Cai_Widlund_92}
|
||||
X.~C.~Cai, O.~B.~Widlund,
|
||||
{\em Domain Decomposition Algorithms for Indefinite Elliptic Problems},
|
||||
SIAM Journal on Scientific and Statistical Computing, 13, 1, 1992, 243--258.
|
||||
%
|
||||
\bibitem{dd1_94}
|
||||
T.~Chan and T.~Mathew,
|
||||
{\em Domain Decomposition Algorithms},
|
||||
in A.~Iserles, editor, Acta Numerica 1994, 61--143.
|
||||
Cambridge University Press.
|
||||
%
|
||||
\bibitem{MLD2P4_TOMS}
|
||||
P.~D'Ambra, D.~di~Serafino, S.~Filippone,
|
||||
\emph{MLD2P4: a Package of Parallel Multilevel
|
||||
Algebraic Domain Decomposition Preconditioners
|
||||
in Fortran 95}, ACM Trans. Math. Softw., 37(3), 2010.
|
||||
%
|
||||
\bibitem{UMFPACK}
|
||||
T.A.~Davis,
|
||||
{\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
|
||||
Method with a Column Pre-ordering Strategy},
|
||||
ACM Transactions on Mathematical Software, 30, 2004, 196--199.
|
||||
(See also {\tt http://www.cise.ufl.edu/~davis/})
|
||||
%
|
||||
|
||||
\bibitem{MUMPS}
|
||||
P.R.~Amestoy, C.~Ashcraft, O.~Boiteau, A.~Buttari, J.~L'Excellent, C.~Weisbecker
|
||||
{\em Improving multifrontal methods by means of block low-rank representations},
|
||||
SIAM SISC, volume 37, number 3, pages A1452-A1474.
|
||||
(See also {\tt http://mumps.enseeiht.fr})
|
||||
%
|
||||
|
||||
\bibitem{SUPERLU}
|
||||
J.W.~Demmel, S.C.~Eisenstat, J.R.~Gilbert, X.S.~Li and J.W.H.~Liu,
|
||||
A supernodal approach to sparse partial pivoting,
|
||||
SIAM Journal on Matrix Analysis and Applications, 20, 3, 1999, 720--755.
|
||||
%
|
||||
\bibitem{blas3}
|
||||
J.~J.~Dongarra, J.~Du Croz, I.~S.~Duff, S.~Hammarling,
|
||||
\emph{A set of Level 3 Basic Linear Algebra Subprograms},
|
||||
ACM Transactions on Mathematical Software, 16, 1990, 1--17.
|
||||
%
|
||||
\bibitem{blas2}
|
||||
J.~J.~Dongarra, J.~Du Croz, S.~Hammarling, R.~J.~Hanson,
|
||||
\emph{An extended set of FORTRAN Basic Linear Algebra Subprograms},
|
||||
ACM Transactions on Mathematical Software, 14, 1988, 1--17.
|
||||
%
|
||||
\bibitem{BLACS}
|
||||
J.~J.~Dongarra and R.~C.~Whaley,
|
||||
{\em A User's Guide to the BLACS v.~1.1},
|
||||
Lapack Working Note 94, Tech.\ Rep.\ UT-CS-95-281, University of
|
||||
Tennessee, March 1995 (updated May 1997).
|
||||
%
|
||||
%\bibitem{sblas_97}
|
||||
%I.~Duff, M.~Marrone, G.~Radicati and C.~Vittoli,
|
||||
%{\em Level 3 Basic Linear Algebra Subprograms for Sparse Matrices:
|
||||
%a User Level Interface},
|
||||
%ACM Transactions on Mathematical Software, 23(3), pp.~379--401, 1997.
|
||||
%
|
||||
%\bibitem{sblas_02}
|
||||
%I.~Duff, M.~Heroux and R.~Pozo,
|
||||
%{\em An Overview of the Sparse Basic Linear
|
||||
%Algebra Subprograms: the New Standard from the BLAS Technical Forum},
|
||||
%ACM Transactions on Mathematical Software, 28(2), pp.~239--267, 2002.
|
||||
%
|
||||
\bibitem{EFSTATHIOU}
|
||||
E.~Efstathiou, J.~G.~Gander,
|
||||
{\em Why Restricted Additive Schwarz Converges Faster than Additive Schwarz},
|
||||
BIT Numerical Mathematics, 43, 2003, 945--959.
|
||||
%
|
||||
\bibitem{PSBLASGUIDE}
|
||||
S.~Filippone, A.~Buttari,
|
||||
{\em PSBLAS-3.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library}, 2012,
|
||||
available from \texttt{http://www.ce.uniroma2.it/psblas/}.
|
||||
|
||||
\bibitem{PSBLAS3}
|
||||
Salvatore Filippone and Alfredo Buttari.
|
||||
{\em {Object-Oriented Techniques for Sparse Matrix Computations in Fortran
|
||||
2003}.}
|
||||
ACM Trans. on Math Software, 38(4), 2012.
|
||||
|
||||
%
|
||||
\bibitem{psblas_00}
|
||||
S.~Filippone, M.~Colajanni,
|
||||
{\em PSBLAS: A Library for Parallel Linear Algebra
|
||||
Computation on Sparse Matrices},
|
||||
ACM Transactions on Mathematical Software, 26, 4, 2000, 527--550.
|
||||
%
|
||||
\bibitem{MPI2}
|
||||
W.~Gropp, S.~Huss-Lederman, A.~Lumsdaine, E.~Lusk, B.~Nitzberg, W.~Saphir, M.~Snir,
|
||||
{\em MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions},
|
||||
MIT Press, 1998.
|
||||
%
|
||||
\bibitem{blas1}
|
||||
C.~L.~Lawson, R.~J.~Hanson, D.~Kincaid, F.~T.~Krogh,
|
||||
\emph{Basic Linear Algebra Subprograms for FORTRAN usage},
|
||||
ACM Transactions on Mathematical Software, 5, 1979, 308--323.
|
||||
%
|
||||
\bibitem{SUPERLUDIST}
|
||||
X.~S.~Li, J.~W.~Demmel, {\em SuperLU\_DIST: A Scalable Distributed-memory
|
||||
Sparse Direct Solver for Unsymmetric Linear Systems},
|
||||
ACM Transactions on Mathematical Software, 29, 2, 2003, 110--140.
|
||||
%
|
||||
%\bibitem{KIVA3PSBLAS}
|
||||
%S.~Filippone, P.~D'Ambra, M.~Colajanni,
|
||||
%{\em Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics
|
||||
%Applications Code on Linux Clusters},
|
||||
%in G.~Joubert, A.~Murli, F.~Peters, M.~Vanneschi, editors,
|
||||
%Parallel Computing - Advances \& Current Issues,
|
||||
%pp.~441--448, Imperial College Press, 2002.
|
||||
%
|
||||
%\bibitem{METIS}
|
||||
%Karypis, G. and Kumar, V.,
|
||||
%{\em {METIS}: Unstructured Graph Partitioning and Sparse Matrix
|
||||
% Ordering System}.
|
||||
%Minneapolis, MN 55455: University of Minnesota, Department of
|
||||
% Computer Science, 1995.
|
||||
%Internet Address: {\verb|http://www.cs.umn.edu/~karypis|}.
|
||||
%\bibitem{BLAS1}
|
||||
%Lawson, C., Hanson, R., Kincaid, D. and Krogh, F.,
|
||||
% Basic {L}inear {A}lgebra {S}ubprograms for {F}ortran usage,
|
||||
%{ACM Trans. Math. Softw.} vol.~{5}, 38--329, 1979.
|
||||
%
|
||||
%\bibitem{machiels}
|
||||
%{Machiels, L. and Deville, M.}
|
||||
%{\em Fortran 90: An entry to object-oriented programming for the solution
|
||||
% of partial differential equations.}
|
||||
%{ACM Trans. Math. Softw.} vol.~{23}, 32--49.
|
||||
%\bibitem{metcalf}
|
||||
%{Metcalf, M., Reid, J. and Cohen, M.}
|
||||
%{\em Fortran 95/2003 explained.}
|
||||
%{Oxford University Press}, 2004.
|
||||
%
|
||||
\bibitem{Saad_book}
|
||||
Y.~Saad,
|
||||
\emph{Iterative methods for sparse linear systems}, 2nd edition,
|
||||
SIAM, 2003
|
||||
|
||||
\bibitem{dd2_96}
|
||||
B.~Smith, P.~Bjorstad, W.~Gropp,
|
||||
{\em Domain Decomposition: Parallel Multilevel Methods for Elliptic
|
||||
Partial Differential Equations},
|
||||
Cambridge University Press, 1996.
|
||||
%
|
||||
\bibitem{MPI1}
|
||||
M.~Snir, S.~Otto, S.~Huss-Lederman, D.~Walker, J.~Dongarra,
|
||||
{\em MPI: The Complete Reference. Volume 1 - The MPI Core}, second edition,
|
||||
MIT Press, 1998.
|
||||
%%
|
||||
\bibitem{Stuben_01}
|
||||
K.~St\"{u}ben,
|
||||
{\em An Introduction to Algebraic Multigrid},
|
||||
in A.~Sch\"{u}ller, U.~Trottenberg, C.~Oosterlee, Multigrid,
|
||||
Academic Press, 2001.
|
||||
%
|
||||
\bibitem{TUMINARO_TONG}
|
||||
R.~S.~Tuminaro, C.~Tong,
|
||||
{\em Parallel Smoothed Aggregation Multigrid: Aggregation Strategies on Massively Parallel Machines},
|
||||
in J. Donnelley, editor, Proceedings of SuperComputing 2000, Dallas, 2000.
|
||||
%
|
||||
\bibitem{VANEK_MANDEL_BREZINA}
|
||||
P.~Van{\v e}k, J.~Mandel and M.~Brezina,
|
||||
{\em Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems},
|
||||
Computing, 56, 1996, 179-196.
|
||||
%
|
||||
|
||||
\end{thebibliography}
|
||||
%\section{Bibliography\label{sec:bib}}
|
||||
\begin{thebibliography}{99}
|
||||
\addcontentsline{toc}{section}{\refname}
|
||||
\markboth{\textsc{MLD2P4 User's and Reference Guide}}
|
||||
{\textsc{References}}
|
||||
|
||||
%\let\refname\relax
|
||||
%
|
||||
\bibitem{BREZINA_VANEK}
|
||||
M.~Brezina, P.~Van{\v e}k,
|
||||
{\em A Black-Box Iterative Solver Based on a Two-Level Schwarz Method},
|
||||
Computing, 63, 1999, 233--263.
|
||||
%
|
||||
\bibitem{Briggs2000}
|
||||
W.~L.~Briggs, V.~E.~Henson, S.~F.~ McCormick,
|
||||
{\em A Multigrid Tutorial, Second Edition},
|
||||
SIAM, 2000.
|
||||
%
|
||||
\bibitem{para_04}
|
||||
A.~Buttari, P.~D'Ambra, D.~di Serafino, S.~Filippone,
|
||||
{\em Extending PSBLAS to Build Parallel Schwarz Preconditioners},
|
||||
in J.~Dongarra, K.~Madsen, J.~Wasniewski, editors,
|
||||
Proceedings of PARA~04 Workshop on State of the Art
|
||||
in Scientific Computing, Lecture Notes in Computer Science,
|
||||
Springer, 2005, 593--602.
|
||||
%
|
||||
\bibitem{aaecc_07}
|
||||
A.~Buttari, P.~D'Ambra, D.~di~Serafino, S.~Filippone,
|
||||
{\em 2LEV-D2P4: a package of high-performance preconditioners
|
||||
for scientific and engineering applications},
|
||||
Applicable Algebra in Engineering, Communications and Computing,
|
||||
18 (3) 2007, 223--239.
|
||||
%Published online: 13 February 2007, {\tt http://dx.doi.org/10.1007/s00200-007-0035-z}
|
||||
%
|
||||
\bibitem{apnum_07} P.~D'Ambra, S.~Filippone, D.~di~Serafino,
|
||||
{\em On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners},
|
||||
Applied Numerical Mathematics, Elsevier Science,
|
||||
57 (11-12), 2007, 1181-1196.
|
||||
%published online 3 February 2007, {\tt
|
||||
% http://dx.doi.org/10.1016/j.apnum.2007.01.006}
|
||||
%
|
||||
\bibitem{CAI_SARKIS}
|
||||
X.~C.~Cai, M.~Sarkis,
|
||||
{\em A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems},
|
||||
SIAM Journal on Scientific Computing, 21 (2), 1999, 792--797.
|
||||
%
|
||||
\bibitem{Cai_Widlund_92}
|
||||
X.~C.~Cai, O.~B.~Widlund,
|
||||
{\em Domain Decomposition Algorithms for Indefinite Elliptic Problems},
|
||||
SIAM Journal on Scientific and Statistical Computing, 13 (1), 1992, 243--258.
|
||||
%
|
||||
\bibitem{dd1_94}
|
||||
T.~Chan and T.~Mathew,
|
||||
{\em Domain Decomposition Algorithms},
|
||||
in A.~Iserles, editor, Acta Numerica 1994, 61--143.
|
||||
Cambridge University Press.
|
||||
%
|
||||
\bibitem{MLD2P4_TOMS}
|
||||
P.~D'Ambra, D.~di~Serafino, S.~Filippone,
|
||||
\emph{MLD2P4: a Package of Parallel Multilevel
|
||||
Algebraic Domain Decomposition Preconditioners
|
||||
in Fortran 95}, ACM Trans. Math. Softw., 37(3), 2010, art. 30.
|
||||
%
|
||||
\bibitem{UMFPACK}
|
||||
T.A.~Davis,
|
||||
{\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
|
||||
Method with a Column Pre-ordering Strategy},
|
||||
ACM Transactions on Mathematical Software, 30, 2004, 196--199.
|
||||
(See also {\tt http://www.cise.ufl.edu/~davis/})
|
||||
%
|
||||
\bibitem{MUMPS}
|
||||
P.R.~Amestoy, C.~Ashcraft, O.~Boiteau, A.~Buttari, J.~L'Excellent, C.~Weisbecker
|
||||
{\em Improving multifrontal methods by means of block low-rank representations},
|
||||
SIAM Journal on Scientific Computing, volume 37 (3), 2015, A1452--A1474.
|
||||
See also {\tt http://mumps.enseeiht.fr}.
|
||||
%
|
||||
\bibitem{SUPERLU}
|
||||
J.W.~Demmel, S.C.~Eisenstat, J.R.~Gilbert, X.S.~Li and J.W.H.~Liu,
|
||||
A supernodal approach to sparse partial pivoting,
|
||||
SIAM Journal on Matrix Analysis and Applications, 20 (3), 1999, 720--755.
|
||||
%
|
||||
\bibitem{blas3}
|
||||
J.~J.~Dongarra, J.~Du Croz, I.~S.~Duff, S.~Hammarling,
|
||||
\emph{A set of Level 3 Basic Linear Algebra Subprograms},
|
||||
ACM Transactions on Mathematical Software, 16 (1) 1990, 1--17.
|
||||
%
|
||||
\bibitem{blas2}
|
||||
J.~J.~Dongarra, J.~Du Croz, S.~Hammarling, R.~J.~Hanson,
|
||||
\emph{An extended set of FORTRAN Basic Linear Algebra Subprograms},
|
||||
ACM Transactions on Mathematical Software, 14 (1) 1988, 1--17.
|
||||
%
|
||||
\bibitem{BLACS}
|
||||
J.~J.~Dongarra and R.~C.~Whaley,
|
||||
{\em A User's Guide to the BLACS v.~1.1},
|
||||
Lapack Working Note 94, Tech.\ Rep.\ UT-CS-95-281, University of
|
||||
Tennessee, March 1995 (updated May 1997).
|
||||
%
|
||||
\bibitem{EFSTATHIOU}
|
||||
E.~Efstathiou, J.~G.~Gander,
|
||||
{\em Why Restricted Additive Schwarz Converges Faster than Additive Schwarz},
|
||||
BIT Numerical Mathematics, 43 (5), 2003, 945--959.
|
||||
%
|
||||
\bibitem{PSBLASGUIDE}
|
||||
S.~Filippone, A.~Buttari,
|
||||
{\em PSBLAS-3.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library}, 2012,
|
||||
available from \texttt{http://www.ce.uniroma2.it/psblas/}.
|
||||
%
|
||||
\bibitem{PSBLAS3}
|
||||
Salvatore Filippone and Alfredo Buttari.
|
||||
{\em Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003}.
|
||||
ACM Transactions on on Mathematical Software, 38 (4), 2012, art. 23.
|
||||
%
|
||||
\bibitem{psblas_00}
|
||||
S.~Filippone, M.~Colajanni,
|
||||
{\em PSBLAS: A Library for Parallel Linear Algebra
|
||||
Computation on Sparse Matrices},
|
||||
ACM Transactions on Mathematical Software, 26 (4), 2000, 527--550.
|
||||
%
|
||||
\bibitem{MPI2}
|
||||
W.~Gropp, S.~Huss-Lederman, A.~Lumsdaine, E.~Lusk, B.~Nitzberg, W.~Saphir, M.~Snir,
|
||||
{\em MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions},
|
||||
MIT Press, 1998.
|
||||
%
|
||||
\bibitem{blas1}
|
||||
C.~L.~Lawson, R.~J.~Hanson, D.~Kincaid, F.~T.~Krogh,
|
||||
\emph{Basic Linear Algebra Subprograms for FORTRAN usage},
|
||||
ACM Transactions on Mathematical Software, 5 (3), 1979, 308--323.
|
||||
%
|
||||
\bibitem{SUPERLUDIST}
|
||||
X.~S.~Li, J.~W.~Demmel, {\em SuperLU\_DIST: A Scalable Distributed-memory
|
||||
Sparse Direct Solver for Unsymmetric Linear Systems},
|
||||
ACM Transactions on Mathematical Software, 29 (2), 2003, 110--140.
|
||||
%
|
||||
\bibitem{Notay2008}
|
||||
Y.~Notay, P.~S.~Vassilevski, {\em Recursive Krylov-based multigrid cycles},
|
||||
Numerical Linear Algebra with Applications, 15 (5), 2008, 473--487.
|
||||
%
|
||||
\bibitem{Saad_book}
|
||||
Y.~Saad,
|
||||
{\em Iterative methods for sparse linear systems}, 2nd edition, SIAM, 2003.
|
||||
%
|
||||
\bibitem{dd2_96}
|
||||
B.~Smith, P.~Bjorstad, W.~Gropp,
|
||||
{\em Domain Decomposition: Parallel Multilevel Methods for Elliptic
|
||||
Partial Differential Equations},
|
||||
Cambridge University Press, 1996.
|
||||
%
|
||||
\bibitem{MPI1}
|
||||
M.~Snir, S.~Otto, S.~Huss-Lederman, D.~Walker, J.~Dongarra,
|
||||
{\em MPI: The Complete Reference. Volume 1 - The MPI Core}, second edition,
|
||||
MIT Press, 1998.
|
||||
%%
|
||||
\bibitem{Stuben_01}
|
||||
K.~St\"{u}ben,
|
||||
{\em An Introduction to Algebraic Multigrid},
|
||||
in A.~Sch\"{u}ller, U.~Trottenberg, C.~Oosterlee, Multigrid,
|
||||
Academic Press, 2001.
|
||||
%
|
||||
\bibitem{TUMINARO_TONG}
|
||||
R.~S.~Tuminaro, C.~Tong,
|
||||
{\em Parallel Smoothed Aggregation Multigrid: Aggregation Strategies on Massively Parallel Machines}, in J. Donnelley, editor, Proceedings of SuperComputing 2000, Dallas, 2000.
|
||||
%
|
||||
\bibitem{VANEK_MANDEL_BREZINA}
|
||||
P.~Van{\v e}k, J.~Mandel and M.~Brezina,
|
||||
{\em Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems},
|
||||
Computing, 56 (3) 1996, 179--196.
|
||||
%
|
||||
|
||||
\end{thebibliography}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
\markboth{\textsc{MLD2P4 User's and Reference Guide}}
|
||||
{\textsc{\ref{sec:building} Configuring and Building MLD2P4}}
|
||||
In order to build MLD2P4 it is necessary to set up a Makefile with appropriate
|
||||
values for your system; this is done by means of the \verb|configure|
|
||||
system-dependent variables; this is done by means of the \verb|configure|
|
||||
script. The distribution also includes the autoconf and automake
|
||||
sources employed to generate the script, but usually this is not needed
|
||||
to build the software.
|
||||
@@ -24,7 +24,7 @@ The following base libraries are needed:
|
||||
\item[BLAS] \cite{blas3,blas2,blas1} Many vendors provide optimized versions
|
||||
of BLAS; if no vendor version is
|
||||
available for a given platform, the ATLAS software
|
||||
(\url{math-atlas.sourceforge.net/})
|
||||
(\url{math-atlas.sourceforge.net})
|
||||
may be employed. The reference BLAS from Netlib
|
||||
(\url{www.netlib.org/blas}) are meant to define the standard
|
||||
behaviour of the BLAS interface, so they are not optimized for any
|
||||
@@ -35,14 +35,14 @@ The following base libraries are needed:
|
||||
libraries. Note that UMFPACK requires a full LAPACK library; our
|
||||
experience is that configuring ATLAS for building full LAPACK does not
|
||||
work in the correct way. Our advice is first to download the LAPACK tarfile from
|
||||
\url{www.netlib.org/lapac} and install it independently of ATLAS. In this case,
|
||||
\url{www.netlib.org/lapack} and install it independently of ATLAS. In this case,
|
||||
you need to modify the OPTS and NOOPT definitions for including -fPIC compilation option
|
||||
in the make.inc file of the LAPACK library.
|
||||
\item[MPI] \cite{MPI2,MPI1} A version of MPI is available on most
|
||||
high-performance computing systems.
|
||||
\item[PSBLAS] \cite{PSBLASGUIDE,psblas_00} Parallel Sparse BLAS (PSBLAS) is
|
||||
available from \url{www.ce.uniroma2.it/psblas}; version
|
||||
3.4.0 (or later) is required. Indeed, all the prerequisites
|
||||
3.5.0 (or later) is required. Indeed, all the prerequisites
|
||||
listed so far are also prerequisites of PSBLAS.
|
||||
\end{description}
|
||||
Please note that the four previous libraries must have Fortran
|
||||
@@ -50,7 +50,7 @@ interfaces compatible with MLD2P4;
|
||||
usually this means that they should all be built with the same
|
||||
compiler as MLD2P4.
|
||||
|
||||
\subsection{Optional third party libraries}
|
||||
\subsection{Optional third party libraries\label{sec:third_party}}
|
||||
|
||||
We provide interfaces to the following third-party software libraries;
|
||||
note that these are optional, but if you enable them some defaults
|
||||
@@ -61,11 +61,11 @@ for multi-level preconditioners may change to reflect their presence.
|
||||
A sparse LU factorization package included in the SuiteSparse library, available from
|
||||
\url{faculty.cse.tamu.edu/davis/suitesparse.html};
|
||||
it provides sequential factorization and triangular system solution for double
|
||||
precision real and complex data. We tested
|
||||
version 4.5.4. Note that for configuring SuiteSparse you should provide the right
|
||||
path to the BLAS and LAPACK libraries in the \verb|SuiteSparse_config/SuiteSparse_config.mk| file.
|
||||
precision real and complex data. We tested version 4.5.4 of SuiteSparse.
|
||||
Note that for configuring SuiteSparse you should provide the right path to the BLAS
|
||||
and LAPACK libraries in the \verb|SuiteSparse_config/SuiteSparse_config.mk| file.
|
||||
\item[MUMPS] \cite{MUMPS}
|
||||
A sparse LU factorization package available from \url{mumps.enseeiht.fr/};
|
||||
A sparse LU factorization package available from \url{mumps.enseeiht.fr};
|
||||
it provides sequential and parallel factorizations and triangular system solution
|
||||
for single and double precision, real and complex data.
|
||||
We tested versions 4.10.0 and version 5.0.1.
|
||||
@@ -74,25 +74,24 @@ path to the BLAS and LAPACK libraries in the \verb|SuiteSparse_config/SuiteSpars
|
||||
\url{crd.lbl.gov/~xiaoye/SuperLU/}; it provides sequential
|
||||
factorization and triangular system solution for single and double precision,
|
||||
real and complex data. We tested version 4.3 and 5.0. If you installed BLAS from
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file.
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file.
|
||||
\item[SuperLU\_Dist] \cite{SUPERLUDIST}
|
||||
A sparse LU factorization package available
|
||||
from the same site as SuperLU; it provides parallel factorization and
|
||||
triangular system solution for double precision real and complex data.
|
||||
We tested version 3.3 and 4.2. If you installed BLAS from
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file and
|
||||
to add the \verb|-std=c99| option to the C compiler options.
|
||||
Note that this library requires the ParMETIS
|
||||
library for parallel graph partitioning and fill-reducing matrix ordering available from
|
||||
\url{glaros.dtc.umn.edu/gkhome/metis/parmetis/overview}.
|
||||
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file and
|
||||
to add the \verb|-std=c99| option to the C compiler options.
|
||||
Note that this library requires the ParMETIS
|
||||
library for parallel graph partitioning and fill-reducing matrix ordering, available from
|
||||
\url{glaros.dtc.umn.edu/gkhome/metis/parmetis/overview}.
|
||||
\end{description}
|
||||
|
||||
\subsection{Configuration options}
|
||||
|
||||
{\bf CONTROLLARE HELP DEL CONFIGURE: Versione MLD2P4, Versione PSBLAS, Influential Environmental Variables???}
|
||||
|
||||
To build MLD2P4 the first step is to use the \verb|configure| script
|
||||
in the main directory to generate the necessary makefile(s).
|
||||
In order to build MLD2P4, the first step is to use the \verb|configure| script
|
||||
in the main directory to generate the necessary makefile.
|
||||
%\textbf{Sono necessarie le parentesi intorno a s?}
|
||||
|
||||
As a minimal example consider the following:
|
||||
\begin{verbatim}
|
||||
@@ -105,7 +104,7 @@ be specified with an {\em absolute} path).
|
||||
The full set of options may be looked at by issuing the command
|
||||
\verb|./configure --help|, which produces:
|
||||
\begin{verbatim}
|
||||
`configure' configures MLD2P4 2.0 to adapt to many kinds of systems.
|
||||
`configure' configures MLD2P4 2.1 to adapt to many kinds of systems.
|
||||
|
||||
Usage: ./configure [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -159,27 +158,55 @@ Fine tuning of the installation directories:
|
||||
--pdfdir=DIR pdf documentation [DOCDIR]
|
||||
--psdir=DIR ps documentation [DOCDIR]
|
||||
|
||||
Program names:
|
||||
--program-prefix=PREFIX prepend PREFIX to installed program names
|
||||
--program-suffix=SUFFIX append SUFFIX to installed program names
|
||||
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
|
||||
|
||||
Optional Features:
|
||||
--disable-option-checking ignore unrecognized --enable/--with options
|
||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||
--disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors
|
||||
--enable-serial Specify whether to enable a fake mpi library to run
|
||||
in serial mode.
|
||||
--enable-long-integers Specify usage of 64 bits integers.
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--with-psblas=DIR The install directory for PSBLAS, for example,
|
||||
--with-psblas=/opt/packages/psblas-3.3
|
||||
--with-psblas=/opt/packages/psblas-3.5
|
||||
--with-psblas-incdir=DIR
|
||||
Specify the directory for PSBLAS includes.
|
||||
--with-psblas-libdir=DIR
|
||||
Specify the directory for PSBLAS library.
|
||||
--with-ccopt additional CCOPT flags to be added: will prepend
|
||||
to CCOPT
|
||||
--with-fcopt additional FCOPT flags to be added: will prepend
|
||||
to FCOPT
|
||||
--with-libs List additional link flags here. For example,
|
||||
--with-libs=-lspecial_system_lib or
|
||||
--with-libs=-L/path/to/libs
|
||||
--with-clibs additional CLIBS flags to be added: will prepend
|
||||
to CLIBS
|
||||
--with-flibs additional FLIBS flags to be added: will prepend
|
||||
to FLIBS
|
||||
--with-library-path additional LIBRARYPATH flags to be added: will
|
||||
prepend to LIBRARYPATH
|
||||
--with-include-path additional INCLUDEPATH flags to be added: will
|
||||
prepend to INCLUDEPATH
|
||||
--with-module-path additional MODULE_PATH flags to be added: will
|
||||
prepend to MODULE_PATH
|
||||
--with-extra-libs List additional link flags here. For example,
|
||||
--with-extra-libs=-lspecial_system_lib or
|
||||
--with-extra-libs=-L/path/to/libs
|
||||
--with-mumps=LIBNAME Specify the libname for MUMPS. Default: "-lsmumps
|
||||
-ldmumps -lcmumps -lzmumps -lmumps_common -lpord"
|
||||
--with-blas=<lib> use BLAS library <lib>
|
||||
--with-blasdir=<dir> search for BLAS library in <dir>
|
||||
--with-lapack=<lib> use LAPACK library <lib>
|
||||
--with-mumps=LIBNAME Specify the libname for MUMPS. Default: autodetect
|
||||
with minimum "-lmumps_common -lpord"
|
||||
--with-mumpsdir=DIR Specify the directory for MUMPS library and
|
||||
includes. Note: you will need to add auxiliary
|
||||
libraries with --extra-libs; this depends on how
|
||||
@@ -225,24 +252,22 @@ Some influential environment variables:
|
||||
CFLAGS C compiler flags
|
||||
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
|
||||
you have headers in a nonstandard directory <include dir>
|
||||
CPP C preprocessor
|
||||
MPICC MPI C compiler command
|
||||
F77 Fortran 77 compiler command
|
||||
FFLAGS Fortran 77 compiler flags
|
||||
MPIF77 MPI Fortran 77 compiler command
|
||||
MPIFC MPI Fortran compiler command
|
||||
CPP C preprocessor
|
||||
|
||||
Use these variables to override the choices made by `configure' or to help
|
||||
it to find libraries and programs with nonstandard names/locations.
|
||||
|
||||
Report bugs to <bugreport@mld2p4.it>.
|
||||
\end{verbatim}
|
||||
For instance, if a user has built and installed PSBLAS 3.4 under the
|
||||
|
||||
For instance, if a user has built and installed PSBLAS 3.5 under the
|
||||
\verb|/opt| directory and is
|
||||
using the SuiteSparse package (which includes UMFPACK), then MLD2P4
|
||||
might be configured with:
|
||||
\begin{verbatim}
|
||||
./configure --with-psblas=/opt/psblas-3.4/ \
|
||||
./configure --with-psblas=/opt/psblas-3.5/ \
|
||||
--with-umfpackincdir=/usr/include/suitesparse/
|
||||
\end{verbatim}
|
||||
Once the configure script has completed execution, it will have
|
||||
@@ -253,7 +278,9 @@ install directory under the name \verb|Make.inc.MLD2P4|.
|
||||
To use the MUMPS solver package,
|
||||
the user has to add the appropriate options to the configure script;
|
||||
by default we are looking for the libraries
|
||||
\verb|-ldmumps -lsmumps| \verb|-lzmumps -lzmumps -mumps_common -lpord|.
|
||||
\verb|-ldmumps -lsmumps| \verb|-lzmumps -mumps_common -lpord|.
|
||||
\textbf{Pasqua, c'era due volte lzmumps. L'ho eliminato, ma poi mi e' venuto
|
||||
il dubbio che il secondo lzmumps dovesse essere modificato.}
|
||||
MUMPS often uses additional packages such as ScaLAPACK, ParMETIS,
|
||||
SCOTCH, as well as enabling OpenMP; in such cases it is necessary to
|
||||
add linker options with the \verb|--with-extra-libs| configure option.
|
||||
@@ -267,7 +294,7 @@ followed (optionally) by
|
||||
make install
|
||||
\end{verbatim}
|
||||
\subsection{Bug reporting}
|
||||
If you find any bugs in our codes, please let us know at (DECIDERE A CHI FARE IL 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}
|
||||
@@ -277,7 +304,8 @@ If you find any bugs in our codes, please let us know at (DECIDERE A CHI FARE IL
|
||||
\end{rawhtml}
|
||||
; be aware that
|
||||
the amount of information needed to reproduce a problem in a parallel
|
||||
program may vary quite a lot.
|
||||
program may vary quite a lot. \textbf{A chi va fatto il bug reporting? La
|
||||
mail inviata a questo indirizzo non viene mai letta.}
|
||||
\subsection{Example and test programs\label{sec:ex_and_test}}
|
||||
The package contains the \verb|examples| and \verb|tests| directories;
|
||||
both of them are further divided into \verb|fileread| and
|
||||
@@ -286,13 +314,14 @@ both of them are further divided into \verb|fileread| and
|
||||
\item[\tt examples] contains a set of simple example programs with a
|
||||
predefined choice of preconditioners, selectable via integer
|
||||
values. These are intended to get an acquaintance with the
|
||||
multilevel preconditioners.
|
||||
multi-level preconditioners available in MLD2P4.
|
||||
\item[\tt tests] contains a set of more sophisticated examples that
|
||||
will allow the user, via the input files in the \verb|runs|
|
||||
subdirectories, to experiment with the full range of preconditioners
|
||||
implemented in the library.
|
||||
implemented in the package.
|
||||
\end{description}
|
||||
The \verb|fileread| directories contain sample programs that read
|
||||
sparse matrices from files, according to the Matrix Market or the
|
||||
Harwell-Boeing storage format; the \verb|pdegen| instead generate
|
||||
matrices in full parallel mode from the discretization of a sample PDE.
|
||||
Harwell-Boeing storage format; the \verb|pdegen| programs generate
|
||||
matrices in full parallel mode from the discretization of a sample partial
|
||||
differential equation.
|
||||
|
||||
@@ -41,9 +41,9 @@ The following steps are required:
|
||||
is multi-level, then two steps must be performed, as specified next.
|
||||
\begin{enumerate}
|
||||
\item[4.1] \emph{Build the aggregation hierarchy for a given matrix.} This is
|
||||
performed by the routine \verb|hierarchy_bld|.
|
||||
performed by the routine \verb|hierarchy_build|.
|
||||
\item[4.2] \emph{Build the preconditioner for a given matrix.} This is performed
|
||||
by the routine \verb|smoothers_bld|.
|
||||
by the routine \verb|smoothers_build|.
|
||||
\end{enumerate}
|
||||
If the selected preconditioner is one-level, it is built in a single step,
|
||||
performed by the routine \verb|bld|.
|
||||
@@ -118,7 +118,7 @@ on parallel computers.
|
||||
The code reported in Figure~\ref{fig:ex1} shows how to set and apply the default
|
||||
multi-level preconditioner available in the real double precision version
|
||||
of MLD2P4 (see Table~\ref{tab:precinit}). This preconditioner is chosen
|
||||
by simply specifying \verb|'ML'| as second argument of \verb|P%init|
|
||||
by simply specifying \verb|'ML'| as the second argument of \verb|P%init|
|
||||
(a call to \verb|P%set| is not needed) and is applied with the CG
|
||||
solver provided by PSBLAS (the matrix of the system to be solved is
|
||||
assumed to be positive definite). As previously observed, the modules
|
||||
@@ -179,8 +179,8 @@ the corresponding codes are available in \verb|examples/fileread/|.
|
||||
call P%init(P,'ML',info)
|
||||
!
|
||||
! build the preconditioner
|
||||
call P%hierarchy_bld(A,desc_A,P,info)
|
||||
call P%smoothers_bld(A,desc_A,P,info)
|
||||
call P%hierarchy_build(A,desc_A,P,info)
|
||||
call P%smoothers_build(A,desc_A,P,info)
|
||||
|
||||
!
|
||||
! set the solver parameters and the initial guess
|
||||
@@ -264,8 +264,8 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
call_P%set(P,'SMOOTHER_TYPE','BJAC',info)
|
||||
call P%set(P,'COARSE_SOLVE','BJAC',info)
|
||||
call P%set(P,'COARSE_SWEEPS',8,info)
|
||||
call P%hierarchy_bld(A,desc_A,P,info)
|
||||
call P%smoothers_bld(A,desc_A,P,info)
|
||||
call P%hierarchy_build(A,desc_A,P,info)
|
||||
call P%smoothers_build(A,desc_A,P,info)
|
||||
... ...
|
||||
\end{verbatim}
|
||||
}
|
||||
@@ -291,8 +291,8 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
call P%set('SMOOTHER_SWEEPS',2,info,pos='POST')
|
||||
call P%set('COARSE_SOLVE','MUMPS',info)
|
||||
call P%set('COARSE_MAT','DIST',info)
|
||||
call P%hierarchy_bld(A,desc_A,P,info)
|
||||
call P%smoothers_bld(A,desc_A,P,info)
|
||||
call P%hierarchy_build(A,desc_A,P,info)
|
||||
call P%smoothers_build(A,desc_A,P,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned CG
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
|
||||
@@ -13,13 +13,12 @@ terms: {\small
|
||||
|
||||
(C) Copyright 2008, 2010, 2012, 2017
|
||||
|
||||
Salvatore Filippone Cranfield University
|
||||
Ambra Abdullahi Hassan University of Rome Tor Vergata
|
||||
Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
Pasqua D'Ambra ICAR-CNR, Naples
|
||||
Daniela di Serafino Second University of Naples
|
||||
Salvatore Filippone Cranfield University, Cranfield, UK
|
||||
Ambra Abdullahi Hassan University of Rome Tor Vergata, Rome, IT
|
||||
Alfredo Buttari CNRS-IRIT, Toulouse, FR
|
||||
Pasqua D'Ambra IAC-CNR, Naples, IT
|
||||
Daniela di Serafino University of Campania L. Vanvitelli, Caserta, IT
|
||||
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
@@ -3,10 +3,9 @@
|
||||
{\textsc{\ref{sec:overview} General Overview}}
|
||||
|
||||
The \textsc{Multi-Level Domain Decomposition Parallel Preconditioners Package based on
|
||||
PSBLAS (MLD2P4}) provides parallel Algebraic MultiGrid (AMG) and domain decomposition
|
||||
preconditioners, designed to provide scalable and easy-to-use preconditioners
|
||||
multi-level Schwarz preconditioners~\cite{Stuben_01,dd2_96},
|
||||
to be used in the iterative solutions of sparse linear systems:
|
||||
PSBLAS (MLD2P4}) provides parallel Algebraic MultiGrid (AMG) and Domain
|
||||
Decomposition preconditioners (see, e.g., \cite{Briggs2000,Stuben_01,dd2_96}),
|
||||
to be used in the iterative solution of linear systems,
|
||||
\begin{equation}
|
||||
Ax=b,
|
||||
\label{system1}
|
||||
@@ -17,22 +16,34 @@ where $A$ is a square, real or complex, sparse matrix.
|
||||
%Dovremmo implementare uno smoothed prolongator
|
||||
%adeguato e fare qualcosa di consistente anche con 1-lev Schwarz.}
|
||||
%
|
||||
Multi-level preconditioners can be obtained by combining several AMG cycles (V, W, K) with
|
||||
different smoothers (Jacobi, hybrid forward/backward Gauss-Seidel, block-Jacobi, additive Schwarz methods).
|
||||
An algebraic approach is used to
|
||||
generate a hierarchy of coarse-level matrices and operators, without
|
||||
explicitly using any information on the geometry of the original problem, e.g.,
|
||||
the discretization of a PDE. The smoothed aggregation technique is applied
|
||||
as algebraic coarsening strategy~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}.
|
||||
Either exact or approximate solvers are available to solve the coarsest-level system. Specifically,
|
||||
different versions of sparse LU factorizations from external packages, and native incomplete
|
||||
LU factorizations and iterative block-Jacobi solvers can be used.
|
||||
All smoothers can be also exploited as one-level preconditioners.
|
||||
The name of the package comes from its original implementation, containing
|
||||
multi-level additive and hybrid Schwarz preconditioners, as well as one-level additive
|
||||
Schwarz preconditioners. The current version extends the original plan by including
|
||||
multi-level cycles and smoothers widely used in multigrid methods.
|
||||
|
||||
The multi-level preconditioners implemented in MLD2P4 are obtained by combining
|
||||
AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and
|
||||
K-cycles~\cite{Briggs2000,Notay2008} are available, which allow to define
|
||||
almost all the preconditioners in the package, including the multi-level hybrid
|
||||
Schwarz ones; a specific cycle is implemented to obained multi-level additive
|
||||
Schwarz preconditioners. The Jacobi, hybrid
|
||||
%\footnote{see Note 2 in Table~\ref{tab:p_coarse}, p.~28.}
|
||||
forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods
|
||||
are available as smoothers. An algebraic approach is used to generate a hierarchy of
|
||||
coarse-level matrices and operators, without explicitly using any information on the
|
||||
geometry of the original problem, e.g., the discretization of a PDE. To this end,
|
||||
the smoothed aggregation technique~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}
|
||||
is applied. Either exact or approximate solvers can be used on the coarsest-level
|
||||
system. Specifically, different sparse LU factorizations from external
|
||||
packages, and native incomplete LU factorizations and Jacobi, hybrid Gauss-Seidel,
|
||||
and block-Jacobi solvers are available. All smoothers can be also exploited as one-level
|
||||
preconditioners.
|
||||
|
||||
MLD2P4 is written in Fortran~2003, following an
|
||||
object-oriented design through the exploitation of features
|
||||
such as abstract data type creation, functional overloading, and
|
||||
dynamic memory management.
|
||||
such as abstract data type creation, type extension, functional overloading, and
|
||||
dynamic memory management. % \textbf{Va bene cos\'{i} o \`e meglio
|
||||
% fare riferimento alle classi?}
|
||||
The parallel implementation is based on a Single Program Multiple Data
|
||||
(SPMD) paradigm. Single and
|
||||
double precision implementations of MLD2P4 are available for both the
|
||||
@@ -40,53 +51,53 @@ real and the complex case, which can be used through a single
|
||||
interface.
|
||||
|
||||
MLD2P4 has been designed to implement scalable and easy-to-use
|
||||
multilevel preconditioners in the context of the PSBLAS
|
||||
(Parallel Sparse BLAS) computational framework~\cite{psblas_00,PSBLAS3}.
|
||||
PSBLAS provides basic linear algebra
|
||||
multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS)
|
||||
computational framework~\cite{psblas_00,PSBLAS3}. PSBLAS provides basic linear algebra
|
||||
operators and data management facilities for distributed sparse matrices,
|
||||
as well as parallel Krylov solvers which can be coupled with the MLD2P4 preconditioners.
|
||||
as well as parallel Krylov solvers which can be used with the MLD2P4 preconditioners.
|
||||
The choice of PSBLAS has been mainly motivated by the need of having
|
||||
a portable and efficient software infrastructure implementing ``de facto'' standard
|
||||
parallel sparse linear algebra kernels, to pursue goals such as performance,
|
||||
portability, modularity ed extensibility in the development of the preconditioner
|
||||
package. On the other hand, the implementation of MLD2P4 has led to some
|
||||
revisions and extentions of the original PSBLAS kernels.
|
||||
The inter-process comunication required
|
||||
by MLD2P4 is encapsulated into the PSBLAS routines, except few cases where
|
||||
MPI~\cite{MPI1} is explicitly called \textbf{\'E ancora cosi???}. Therefore, MLD2P4 can be run on any parallel
|
||||
machine where PSBLAS and MPI implementations are available.
|
||||
The inter-process comunication required by MLD2P4 is encapsulated
|
||||
in the PSBLAS routines;% , except few cases where MPI~\cite{MPI1} is explicitly called.
|
||||
% \textbf{E' ancora cos\'{i} o adesso \`e tutto incapsulato in PSBLAS?}
|
||||
therefore, MLD2P4 can be run on any parallel machine where PSBLAS
|
||||
implementations are available.
|
||||
|
||||
MLD2P4 has a layered and modular software architecture where three main layers can be identified.
|
||||
The lower layer consists of the PSBLAS kernels, the middle one implements
|
||||
MLD2P4 has a layered and modular software architecture where three main layers can be
|
||||
identified. The lower layer consists of the PSBLAS kernels, the middle one implements
|
||||
the construction and application phases of the preconditioners, and the upper one
|
||||
provides a uniform interface to all the preconditioners.
|
||||
This architecture allows for different levels of use of the package:
|
||||
few black-box routines at the upper layer allow non-expert users to easily
|
||||
build any preconditioner available in MLD2P4 and to apply it within a PSBLAS Krylov solver;
|
||||
{\bf facilities are also available that allow more expert users to extend the set of smoothers
|
||||
and solvers for building new versions of preconditioners.}
|
||||
few black-box routines at the upper layer allow all users to easily
|
||||
build and apply any preconditioner available in MLD2P4;
|
||||
facilities are also available allowing expert users to extend the set of smoothers
|
||||
and solvers for building new versions of the preconditioners (see
|
||||
Section~\ref{sec:adding}).
|
||||
|
||||
We note that the user interface of MLD2P4 2.1 ({\bf Perche 2.1 e non 2.0???...Ricordarsi di cambiare il configure})
|
||||
has been extended with respect to the previous versions
|
||||
in order to separate the construction
|
||||
of the multi-level hierarchy from the construction of the smoothers and solvers, and to allow for more flexibility
|
||||
at each level.
|
||||
The software architecture described in~\cite{MLD2P4_TOMS} has significantly evolved too, in order to fully exploit the
|
||||
Fortran~2003 features implemented in PSBLAS 3.
|
||||
We note that the user interface of MLD2P4 2.1 has been extended with respect to the
|
||||
previous versions in order to separate the construction of the multi-level hierarchy from
|
||||
the construction of the smoothers and solvers, and to allow for more flexibility
|
||||
at each level. The software architecture described in~\cite{MLD2P4_TOMS} has significantly
|
||||
evolved too, in order to fully exploit the Fortran~2003 features implemented in PSBLAS 3.
|
||||
However, compatibility with previous versions has been preserved.
|
||||
|
||||
This guide is organized as follows. General information on the distribution of the source code
|
||||
is reported in Section~\ref{sec:distribution}, while details on the configuration
|
||||
and installation of the package are given in Section~\ref{sec:building}. A short description of
|
||||
the preconditioners implemented in MLD2P4 is provided
|
||||
in Section~\ref{sec:background}, to help the users in choosing among them.
|
||||
The basics for building and applying the preconditioners
|
||||
with the Krylov solvers implemented in PSBLAS are reported in Section~\ref{sec:started}, where the
|
||||
Fortran 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
|
||||
in Section~\ref{sec:userinterface}. The error handling mechanism used by the package is briefly described
|
||||
in Section~\ref{sec:errors}. The copyright terms concerning the distribution and modification
|
||||
of MLD2P4 are reported in Appendix~\ref{sec:license}.
|
||||
This guide is organized as follows. General information on the distribution of the source
|
||||
code is reported in Section~\ref{sec:distribution}, while details on the configuration
|
||||
and installation of the package are given in Section~\ref{sec:building}. A short description
|
||||
of the preconditioners implemented in MLD2P4 is provided in Section~\ref{sec:background},
|
||||
to help the users in choosing among them. The basics for building and applying the
|
||||
preconditioners with the Krylov solvers implemented in PSBLAS are reported
|
||||
in~Section~\ref{sec:started}, where the Fortran codes of a few sample programs
|
||||
are also shown. A reference guide for the user interface routines is provided
|
||||
in Section~\ref{sec:userinterface}. Information on the extension of the package
|
||||
through the addition of new smoothers and solvers is reported in Section~\ref{sec:adding}.
|
||||
The error handling mechanism used by the package
|
||||
is briefly described in Section~\ref{sec:errors}. The copyright terms concerning the
|
||||
distribution and modification of MLD2P4 are reported in Appendix~\ref{sec:license}.
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
|
||||
@@ -154,7 +154,6 @@ based on PSBLAS}
|
||||
\include{overview}
|
||||
\include{distribution}
|
||||
\include{building}
|
||||
|
||||
\include{background}
|
||||
\include{gettingstarted}
|
||||
\include{userinterface}
|
||||
@@ -162,7 +161,7 @@ based on PSBLAS}
|
||||
\clearpage
|
||||
\appendix
|
||||
\include{license}
|
||||
\cleardoublepage
|
||||
\clearpage
|
||||
\include{bibliography}
|
||||
|
||||
\end{document}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
The basic user interface of MLD2P4 consists of eight routines. The six
|
||||
routines \verb|init|, \verb|set|,
|
||||
\verb|hierarchy_bld|, \verb|smoothers_bld|,
|
||||
\verb|hierarchy_build|, \verb|smoothers_build|,
|
||||
\verb|bld|, and \verb|apply| encapsulate all the
|
||||
functionalities for the setup and the application of any multi-level and one-level
|
||||
preconditioner implemented in the package.
|
||||
@@ -199,10 +199,9 @@ coarsest-level solvers, and shortcuts are available
|
||||
in this case too (see Table~\ref{tab:p_coarse}). \\
|
||||
|
||||
\textbf{Remark 3.} In general, a coarsest-level solver cannot be used with
|
||||
both the replicated and distributed coarsest-matrix layout, and vice versa;
|
||||
therefore, setting the solver after the layout may change the layout, and setting
|
||||
the layout after the solver may change the solver, if the choices of the two
|
||||
parameters do not agree.
|
||||
both the replicated and distributed coarsest-matrix layout;
|
||||
therefore, setting the solver after the layout may change the layout.
|
||||
Similarly, setting the layout after the solver may change the solver.
|
||||
|
||||
More precisely, UMFPACK and SuperLU require the coarsest-level
|
||||
matrix to be replicated, while SuperLU\_Dist requires it to be distributed.
|
||||
@@ -368,7 +367,9 @@ of levels. } \\
|
||||
& How the damping parameter $\omega$ in the
|
||||
smoothed aggregation is obtained:
|
||||
either via an estimate of the spectral radius of
|
||||
$D^{-1}A$, or explicily
|
||||
$D^{-1}A$, where $A$ is the matrix at the current
|
||||
level and $D$ is the diagonal matrix with
|
||||
the same diagonal entires as $A$, or explicily
|
||||
specified by the user. \\ \hline
|
||||
\verb|mld_aggr_eig_| \par \verb|AGGR_EIG| & \verb|character(len=*)|
|
||||
& \texttt{'A\_NORMI'}
|
||||
@@ -420,13 +421,13 @@ the parameter \texttt{ilev}.} \\
|
||||
& \texttt{'MUMPS'} \par \texttt{'UMF'} \par
|
||||
\texttt{'SLU'} \par \texttt{'SLUDIST'} \par
|
||||
\texttt{'JACOBI'} \par \texttt{'GS'} \par \texttt{'BJAC'}
|
||||
& See~Note~1
|
||||
& See~Note.
|
||||
& Solver used at the coarsest level: sequential
|
||||
LU from MUMPS, UMFPACK, or SuperLU
|
||||
(plus tri\-an\-gular solve);
|
||||
distributed LU from MUMPS or SuperLU\_Dist
|
||||
(plus triangular solve);
|
||||
point-Jacobi, hybrid Gauss-Seidel (see Note~2) or block-Jacobi. \par
|
||||
point-Jacobi, hybrid Gauss-Seidel or block-Jacobi. \par
|
||||
Note that \texttt{UMF} and \texttt{SLU} require the coarsest
|
||||
matrix to be replicated, \texttt{SLUDIST}, \texttt{JACOBI},
|
||||
\texttt{GS} and \texttt{BJAC} require it to be
|
||||
@@ -440,7 +441,7 @@ the parameter \texttt{ilev}.} \\
|
||||
\verb|mld_coarse_subsolve_| \par \verb|COARSE_SUBSOLVE| & \verb|character(len=*)|
|
||||
& \texttt{'ILU'} \par \texttt{'ILUT'} \par \texttt{'MILU'} \par
|
||||
\texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'}
|
||||
& See~Note~1
|
||||
& See~Note.
|
||||
& Solver for the diagonal blocks of the coarse matrix,
|
||||
in case the block Jacobi solver
|
||||
is chosen as coarsest-level solver: ILU($p$), ILU($p,t$),
|
||||
@@ -449,7 +450,7 @@ the parameter \texttt{ilev}.} \\
|
||||
Note that UMFPACK and SuperLU\_Dist
|
||||
are available only in double precision. \\
|
||||
\hline
|
||||
\multicolumn{5}{|l|}{{\bfseries Note 1.} Defaults for \texttt{mld\_coarse\_solve\_} and
|
||||
\multicolumn{5}{|l|}{{\bfseries Note.} Defaults for \texttt{mld\_coarse\_solve\_} and
|
||||
\texttt{mld\_coarse\_subsolve\_} are chosen in the following order:} \\
|
||||
\multicolumn{5}{|l|}{single precision version -- \texttt{MUMPS} if installed,
|
||||
then \texttt{SLU} if installed,
|
||||
@@ -457,11 +458,6 @@ the parameter \texttt{ilev}.} \\
|
||||
\multicolumn{5}{|l|}{double precision version -- \texttt{UMF} if installed,
|
||||
then \texttt{MUMPS} if installed, then \texttt{SLU} if
|
||||
installed, \texttt{ILU} otherwise.}\\
|
||||
\multicolumn{5}{|l|}{{\bfseries Note 2.} The hybrid Gauss-Seidel method is
|
||||
between the Gauss-Seidel and Jacobi methods: at each iteration, the process-} \\
|
||||
\multicolumn{5}{|l|}{es use the most recent values of their own local variables, and the values of
|
||||
the non-local variables computed at the previ-}\\
|
||||
\multicolumn{5}{|l|}{ous iteration.}\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
@@ -512,7 +508,7 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
& Type of smoother used in the multi-level preconditioner:
|
||||
point-Jacobi, hybrid (forward) Gauss-Seidel,
|
||||
hybrid backward Gauss-Seidel, block-Jacobi, and
|
||||
Additive Schwarz. See Note for details on hybrix Gauss-Seidel.\par
|
||||
Additive Schwarz. \par
|
||||
It is ignored by one-level preconditioners. \\ \hline
|
||||
\verb|mld_sub_solve_| \par \verb|SUB_SOLVE| & \verb|character(len=*)|
|
||||
& \texttt{'JACOBI'} \par
|
||||
@@ -541,11 +537,7 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
\verb|mld_sub_ovr_| \par \verb|SUB_OVR| & \verb|integer|
|
||||
& Any integer \par number~$\ge 0$
|
||||
& 1
|
||||
& Number of overlap layers, for Additive Schwarz only. \\ \hline
|
||||
\multicolumn{5}{|l|}{{\bfseries Note.} The hybrid Gauss-Seidel method is
|
||||
between the Gauss-Seidel and Jacobi methods: at each iteration, the processes use the} \\
|
||||
\multicolumn{5}{|l|}{most recent values of their own local variables, and the values of
|
||||
the non-local variables computed at the previous iteration.}\\
|
||||
& Number of overlap layers, for Additive Schwarz only. \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
@@ -565,13 +557,17 @@ the non-local variables computed at the previous iteration.}\\
|
||||
& \texttt{'HALO'}
|
||||
& Type of restriction operator, for Additive Schwarz only:
|
||||
\texttt{HALO} for taking into account the overlap, \texttt{NONE}
|
||||
for neglecting it. \\ \hline
|
||||
for neglecting it. \par
|
||||
Note that \texttt{HALO} must be chosen for
|
||||
the classical Addditive Schwarz smoother and its RAS variant.\\ \hline
|
||||
\verb|mld_sub_prol_| \par \verb|SUB_PROL| & \verb|character(len=*)|
|
||||
& \texttt{'SUM'} \par \texttt{'NONE'}
|
||||
& \texttt{'NONE'}
|
||||
& Type of prolongation operator, for Additive Schwarz only:
|
||||
\texttt{SUM} for adding the contributions from the overlap, \texttt{NONE}
|
||||
for neglecting them. \\ \hline
|
||||
for neglecting them. \par
|
||||
Note that \texttt{SUM} must be chosen for the classical Additive
|
||||
Schwarz smoother, and \texttt{NONE} for its RAS variant. \\ \hline
|
||||
\verb|mld_sub_fillin_| \par \verb|SUB_FILLIN| & \verb|integer|
|
||||
& Any integer \par number~$\ge 0$
|
||||
& 0
|
||||
@@ -601,16 +597,16 @@ the non-local variables computed at the previous iteration.}\\
|
||||
|
||||
\clearpage
|
||||
|
||||
\subsection{Subroutine bld\label{sec:precbld}}
|
||||
\subsection{Subroutine build\label{sec:precbld}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%bld(a,desc_a,info)|\\
|
||||
\verb|call p%build(a,desc_a,info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This routine builds the one-level preconditioner \verb|p| according to the requirements
|
||||
made by the user through the routines \verb|init| and \verb|set|
|
||||
(see Sections~\ref{sec:hier_bld} and~\ref{sec:smoothers_bld} for multi-level preconditioners).
|
||||
(see Sections~\ref{sec:hier_bld} and~\ref{sec:smooth_bld} for multi-level preconditioners).
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
@@ -643,10 +639,10 @@ In this case, the routine can be used to build multi-level preconditioners too.
|
||||
|
||||
\clearpage
|
||||
|
||||
\subsection{Subroutine hierarchy\_bld\label{sec:hier_bld}}
|
||||
\subsection{Subroutine hierarchy\_build\label{sec:hier_bld}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%hierarchy_bld(a,desc_a,info)|\\
|
||||
\verb|call p%hierarchy_build(a,desc_a,info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
@@ -676,18 +672,18 @@ single/double precision version of MLD2P4 under use.
|
||||
|
||||
\clearpage
|
||||
|
||||
\subsection{Subroutine smoothers\_bld\label{sec:smoothers_bld}}
|
||||
\subsection{Subroutine smoothers\_build\label{sec:smooth_bld}}
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%smoothers_bld(a,desc_a,p,info)|\\
|
||||
\verb|call p%smoothers_build(a,desc_a,p,info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This routine builds the smoothers and the coarsest-level solvers for the
|
||||
multi-level preconditioner \verb|p|, according to the requirements made by
|
||||
the user through the routines \verb|init| and \verb|set|, and based on the aggregation
|
||||
hierarchy produced by a previous call to \verb|hierarchy_bld|
|
||||
hierarchy produced by a previous call to \verb|hierarchy_build|
|
||||
(see Section~\ref{sec:hier_bld}).
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
@@ -804,8 +800,8 @@ as follows:
|
||||
|
||||
\noindent
|
||||
This routine prints a description of the preconditioner \verb|p| to the standard output or
|
||||
to a file. It must be called after \verb|hierachy_bld| and \verb|smoothers_bld|,
|
||||
or \verb|bld|, have been called.
|
||||
to a file. It must be called after \verb|hierachy_build| and \verb|smoothers_build|,
|
||||
or \verb|build|, have been called.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
|
||||