mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 14:44:55 +00:00
mld2p4:
html/index.html html/node1.html html/node10.html html/node11.html html/node12.html html/node13.html html/node14.html html/node15.html html/node16.html html/node17.html html/node18.html html/node19.html html/node2.html html/node20.html html/node21.html html/node22.html html/node23.html html/node24.html html/node25.html html/node26.html html/node3.html html/node4.html html/node5.html html/node6.html html/node7.html html/node8.html html/node9.html html/userhtml.html src/Makefile src/building.tex src/userguide.tex src/userhtml.tex userguide.pdf Fixed mail hyperlink.
This commit is contained in:
+34
-32
@@ -97,50 +97,52 @@ July 24, 2008
|
||||
<LI><A NAME="tex2html22"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html23"
|
||||
HREF="node9.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html24"
|
||||
HREF="node10.html">Multi-level Domain Decomposition Background</A>
|
||||
<UL>
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html25"
|
||||
HREF="node11.html">Multi-level Schwarz Preconditioners</A>
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html26"
|
||||
HREF="node12.html">Smoothed Aggregation</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<LI><A NAME="tex2html27"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<UL>
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html28"
|
||||
HREF="node14.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="node15.html">User Interface</A>
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="node16.html">Subroutine mld_precinit</A>
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="node17.html">Subroutine mld_precset</A>
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="node18.html">Subroutine mld_precbld</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="node19.html">Subroutine mld_precaply</A>
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="node20.html">Subroutine mld_precfree</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="node21.html">Subroutine mld_precdescr</A>
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="node15.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="node17.html">Subroutine mld_precinit</A>
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="node18.html">Subroutine mld_precset</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="node19.html">Subroutine mld_precbld</A>
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="node20.html">Subroutine mld_precaply</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="node21.html">Subroutine mld_precfree</A>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="node22.html">Error Handling</A>
|
||||
HREF="node22.html">Subroutine mld_precdescr</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html37"
|
||||
HREF="node23.html">License</A>
|
||||
HREF="node23.html">Error Handling</A>
|
||||
<LI><A NAME="tex2html38"
|
||||
HREF="node24.html">Bibliography</A>
|
||||
HREF="node24.html">License</A>
|
||||
<LI><A NAME="tex2html39"
|
||||
HREF="node25.html">About this document ...</A>
|
||||
HREF="node25.html">Bibliography</A>
|
||||
<LI><A NAME="tex2html40"
|
||||
HREF="node26.html">About this document ...</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
|
||||
+16
-16
@@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html50"
|
||||
<A NAME="tex2html51"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html46"
|
||||
<A NAME="tex2html47"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html40"
|
||||
<A NAME="tex2html41"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html48"
|
||||
<A NAME="tex2html49"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html51"
|
||||
<B> Next:</B> <A NAME="tex2html52"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> Up:</B> <A NAME="tex2html47"
|
||||
<B> Up:</B> <A NAME="tex2html48"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html41"
|
||||
<B> Previous:</B> <A NAME="tex2html42"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> <A NAME="tex2html49"
|
||||
<B> <A NAME="tex2html50"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -92,30 +92,30 @@ the user interface of MLD2P4.
|
||||
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html50"
|
||||
<A NAME="tex2html51"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html46"
|
||||
<A NAME="tex2html47"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html40"
|
||||
<A NAME="tex2html41"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html48"
|
||||
<A NAME="tex2html49"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html51"
|
||||
<B> Next:</B> <A NAME="tex2html52"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> Up:</B> <A NAME="tex2html47"
|
||||
<B> Up:</B> <A NAME="tex2html48"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html41"
|
||||
<B> Previous:</B> <A NAME="tex2html42"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> <A NAME="tex2html49"
|
||||
<B> <A NAME="tex2html50"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+40
-142
@@ -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>Example and test programs</TITLE>
|
||||
<META NAME="description" CONTENT="Example and test programs">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,170 +18,68 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node13.html">
|
||||
<LINK REL="previous" HREF="node5.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="previous" HREF="node9.html">
|
||||
<LINK REL="up" HREF="node5.html">
|
||||
<LINK REL="next" HREF="node11.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html180"
|
||||
<A NAME="tex2html183"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html176"
|
||||
HREF="userhtml.html">
|
||||
<A NAME="tex2html179"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html170"
|
||||
<A NAME="tex2html175"
|
||||
HREF="node9.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html178"
|
||||
<A NAME="tex2html181"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html181"
|
||||
HREF="node11.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html177"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html171"
|
||||
HREF="node9.html">Example and test programs</A>
|
||||
<B> <A NAME="tex2html179"
|
||||
<B> Next:</B> <A NAME="tex2html184"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Up:</B> <A NAME="tex2html180"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html176"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<B> <A NAME="tex2html182"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION00060000000000000000"></A><A NAME="sec:background"></A>
|
||||
<H2><A NAME="SECTION00055000000000000000"></A><A NAME="sec:ex_and_test"></A>
|
||||
<BR>
|
||||
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="node24.html#Cai_Widlund_92">6</A>,<A
|
||||
HREF="node24.html#dd1_94">7</A>,<A
|
||||
HREF="node24.html#dd2_96">20</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="node24.html#dd2_96">20</A>]).
|
||||
The main motivation for choosing Additive Schwarz preconditioners is their
|
||||
intrinsic parallelism. A drawback of these
|
||||
preconditioners is that the number of iterations of the preconditioned solvers
|
||||
generally grows with the number of submatrices. This may be a serious limitation
|
||||
on parallel computers, since the number of submatrices usually matches the number
|
||||
of available processors. Optimal convergence rates, i.e. iteration numbers
|
||||
independent of the number of submatrices, can be obtained by correcting the
|
||||
preconditioner through a suitable approximation of the original linear system
|
||||
in a coarse space, which globally couples the information related to the single
|
||||
submatrices.
|
||||
|
||||
<P>
|
||||
<I>Two-level Schwarz</I> preconditioners are obtained
|
||||
by combining basic (one-level) Schwarz preconditioners with a coarse-level
|
||||
correction. In this context, the one-level preconditioner is often
|
||||
called `smoother'. Different two-level preconditioners are obtained by varying the
|
||||
choice of the smoother and of the coarse-level correction, and the
|
||||
way they are combined [<A
|
||||
HREF="node24.html#dd2_96">20</A>]. The same reasoning can be applied starting
|
||||
from the coarse-level system, i.e. a coarse-space correction can be built
|
||||
from this system, thus obtaining <I>multi-level</I> preconditioners.
|
||||
|
||||
<P>
|
||||
It is worth noting that optimal preconditioners do not necessarily correspond
|
||||
to minimum execution times. Indeed, to obtain effective multi-level preconditioners
|
||||
a tradeoff between optimality of convergence and the cost of building and applying
|
||||
the coarse-space corrections must be achieved. The choice of the number of levels,
|
||||
i.e. of the coarse-space corrections, also affects the effectiveness of the
|
||||
preconditioners. One more goal is to get convergence rates as less sensitive
|
||||
as possible to variations in the matrix coefficients.
|
||||
|
||||
<P>
|
||||
Two main approaches can be used to build coarse-space corrections. The geometric approach
|
||||
applies coarsening strategies based on the knowledge of some physical grid associated
|
||||
to the matrix and requires the user to define grid transfer operators from the fine
|
||||
to the coarse levels and vice versa. This may result difficult for complex geometries;
|
||||
furthermore, suitable one-level preconditioners may be required to get efficient
|
||||
interplay between fine and coarse levels, e.g. when matrices with highly varying coefficients
|
||||
are considered. The algebraic approach builds coarse-space corrections using only matrix
|
||||
information. It performs a fully automatic coarsening and enforces the interplay between
|
||||
the fine and coarse levels by suitably choosing the coarse space and the coarse-to-fine
|
||||
interpolation [<A
|
||||
HREF="node24.html#StubenGMD69_99">22</A>].
|
||||
|
||||
<P>
|
||||
MLD2P4 uses a pure algebraic approach for building the sequence of coarse matrices
|
||||
starting from the original matrix. The algebraic approach is based on the <I>smoothed
|
||||
aggregation</I> algorithm [<A
|
||||
HREF="node24.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node24.html#VANEK_MANDEL_BREZINA">24</A>]. A decoupled version
|
||||
of this algorithm is implemented, where the smoothed aggregation is applied locally
|
||||
to each submatrix [<A
|
||||
HREF="node24.html#TUMINARO_TONG">23</A>]. In the next two subsections we provide
|
||||
a brief description of the multi-level Schwarz preconditioners and of the smoothed
|
||||
aggregation technique as implemented in MLD2P4. For further details the user
|
||||
is referred to [<A
|
||||
HREF="node24.html#para_04">2</A>,<A
|
||||
HREF="node24.html#aaecc_07">3</A>,<A
|
||||
HREF="node24.html#apnum_07">4</A>,<A
|
||||
HREF="node24.html#dd2_96">20</A>].
|
||||
|
||||
<P>
|
||||
Example and test programs
|
||||
</H2>
|
||||
The package contains the <code>examples</code> and <code>tests</code> directories;
|
||||
both of them are further divided into <code>fileread</code> and
|
||||
<code>pdegen</code> subdirectories. Their purpose is as follows:
|
||||
<DL>
|
||||
<DT><STRONG><TT>examples</TT></STRONG></DT>
|
||||
<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.
|
||||
</DD>
|
||||
<DT><STRONG><TT>tests</TT></STRONG></DT>
|
||||
<DD>contains a set of more sophisticated examples that
|
||||
will allow the user, via the input files in the <code>runs</code>
|
||||
subdirectories, to experiment with the full range of preconditioners
|
||||
implemented in the library.
|
||||
</DD>
|
||||
</DL>
|
||||
The <code>fileread</code> directories contain sample programs that read
|
||||
sparse matrices from files, according to the Matrix Market or the
|
||||
Harwell-Boeing storage format; the <code>pdegen</code> instead generate
|
||||
matrices in full parallel mode from the discretization of a sample PDE.
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html182"
|
||||
HREF="node11.html">Multi-level Schwarz Preconditioners</A>
|
||||
<LI><A NAME="tex2html183"
|
||||
HREF="node12.html">Smoothed Aggregation</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html180"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html176"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html170"
|
||||
HREF="node9.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html178"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html181"
|
||||
HREF="node11.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html177"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html171"
|
||||
HREF="node9.html">Example and test programs</A>
|
||||
<B> <A NAME="tex2html179"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+112
-695
@@ -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>Multi-level Domain Decomposition Background</TITLE>
|
||||
<META NAME="description" CONTENT="Multi-level Domain Decomposition Background">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,751 +18,168 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node12.html">
|
||||
<LINK REL="previous" HREF="node10.html">
|
||||
<LINK REL="up" HREF="node10.html">
|
||||
<LINK REL="next" HREF="node14.html">
|
||||
<LINK REL="previous" HREF="node5.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node12.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html194"
|
||||
<A NAME="tex2html195"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html190"
|
||||
HREF="node10.html">
|
||||
<A NAME="tex2html191"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html184"
|
||||
<A NAME="tex2html185"
|
||||
HREF="node10.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html192"
|
||||
<A NAME="tex2html193"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html195"
|
||||
HREF="node12.html">Smoothed Aggregation</A>
|
||||
<B> Up:</B> <A NAME="tex2html191"
|
||||
HREF="node10.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html185"
|
||||
HREF="node10.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> <A NAME="tex2html193"
|
||||
<B> Next:</B> <A NAME="tex2html196"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html192"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html186"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
<B> <A NAME="tex2html194"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00061000000000000000"></A><A NAME="sec:multilevel"></A>
|
||||
<H1><A NAME="SECTION00060000000000000000"></A><A NAME="sec:background"></A>
|
||||
<BR>
|
||||
Multi-level Schwarz Preconditioners
|
||||
</H2>
|
||||
Multi-level Domain Decomposition Background
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
The Multilevel preconditioners implemented in MLD2P4 are obtained by combining
|
||||
AS preconditioners with coarse-space corrections; therefore
|
||||
we first provide a sketch of the AS preconditioners.
|
||||
<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="node25.html#Cai_Widlund_92">6</A>,<A
|
||||
HREF="node25.html#dd1_94">7</A>,<A
|
||||
HREF="node25.html#dd2_96">20</A>].
|
||||
|
||||
<P>
|
||||
Given the linear system ,
|
||||
where <!-- MATH
|
||||
$A=(a_{ij}) \in \Re^{n \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img3.png"
|
||||
ALT="$A=(a_{ij}) \in \Re^{n \times n}$"> is a
|
||||
nonsingular sparse matrix with a symmetric nonzero pattern,
|
||||
let <IMG
|
||||
WIDTH="93" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img4.png"
|
||||
ALT="$G=(W,E)$"> be the adjacency graph of <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$">, where <!-- MATH
|
||||
$W=\{1, 2, \ldots, n\}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="138" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img5.png"
|
||||
ALT="$W=\{1, 2, \ldots, n\}$">
|
||||
and <!-- MATH
|
||||
$E=\{(i,j) : a_{ij} \neq 0\}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="162" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img6.png"
|
||||
ALT="$E=\{(i,j) : a_{ij} \neq 0\}$"> are the vertex set and the edge set of <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img7.png"
|
||||
ALT="$G$">,
|
||||
respectively. Two vertices are called adjacent if there is an edge connecting
|
||||
them. For any integer <IMG
|
||||
WIDTH="45" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img8.png"
|
||||
ALT="$\delta > 0$">, a <IMG
|
||||
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\delta$">-overlap
|
||||
partition of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$"> can be defined recursively as follows.
|
||||
Given a 0-overlap (or non-overlapping) partition of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$">,
|
||||
i.e. a set of <IMG
|
||||
WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$m$"> disjoint nonempty sets <!-- MATH
|
||||
$W_i^0 \subset W$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="73" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img12.png"
|
||||
ALT="$W_i^0 \subset W$"> such that
|
||||
<!-- MATH
|
||||
$\cup_{i=1}^m W_i^0 = W$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="107" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img13.png"
|
||||
ALT="$\cup_{i=1}^m W_i^0 = W$">, a <IMG
|
||||
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\delta$">-overlap
|
||||
partition of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$"> is obtained by considering the sets
|
||||
<!-- MATH
|
||||
$W_i^\delta \supset W_i^{\delta-1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="97" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img14.png"
|
||||
ALT="$W_i^\delta \supset W_i^{\delta-1}$"> obtained by including the vertices that
|
||||
are adjacent to any vertex in <!-- MATH
|
||||
$W_i^{\delta-1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="48" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img15.png"
|
||||
ALT="$W_i^{\delta-1}$">.
|
||||
<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="node25.html#dd2_96">20</A>]).
|
||||
The main motivation for choosing Additive Schwarz preconditioners is their
|
||||
intrinsic parallelism. A drawback of these
|
||||
preconditioners is that the number of iterations of the preconditioned solvers
|
||||
generally grows with the number of submatrices. This may be a serious limitation
|
||||
on parallel computers, since the number of submatrices usually matches the number
|
||||
of available processors. Optimal convergence rates, i.e. iteration numbers
|
||||
independent of the number of submatrices, can be obtained by correcting the
|
||||
preconditioner through a suitable approximation of the original linear system
|
||||
in a coarse space, which globally couples the information related to the single
|
||||
submatrices.
|
||||
|
||||
<P>
|
||||
Let <IMG
|
||||
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img16.png"
|
||||
ALT="$n_i^\delta$"> be the size of <IMG
|
||||
WIDTH="30" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img17.png"
|
||||
ALT="$W_i^\delta$"> and <!-- MATH
|
||||
$R_i^{\delta} \in
|
||||
\Re^{n_i^\delta \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="93" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img18.png"
|
||||
ALT="$R_i^{\delta} \in
|
||||
\Re^{n_i^\delta \times n}$"> the restriction operator that maps
|
||||
a vector <IMG
|
||||
WIDTH="56" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img19.png"
|
||||
ALT="$v \in \Re^n$"> onto the vector <!-- MATH
|
||||
$v_i^{\delta} \in \Re^{n_i^\delta}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="70" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img20.png"
|
||||
ALT="$v_i^{\delta} \in \Re^{n_i^\delta}$">
|
||||
containing the components of <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> corresponding to the vertices in
|
||||
<IMG
|
||||
WIDTH="30" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img17.png"
|
||||
ALT="$W_i^\delta$">. The transpose of <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img22.png"
|
||||
ALT="$R_i^{\delta}$"> is a
|
||||
prolongation operator from <!-- MATH
|
||||
$\Re^{n_i^\delta}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="32" HEIGHT="24" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img23.png"
|
||||
ALT="$\Re^{n_i^\delta}$"> to <IMG
|
||||
WIDTH="26" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img24.png"
|
||||
ALT="$\Re^n$">.
|
||||
The matrix <!-- MATH
|
||||
$A_i^\delta=R_i^\delta A (R_i^\delta)^T \in
|
||||
\Re^{n_i^\delta \times n_i^\delta}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="201" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$A_i^\delta=R_i^\delta A (R_i^\delta)^T \in
|
||||
\Re^{n_i^\delta \times n_i^\delta}$"> can be considered
|
||||
as a restriction of <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$"> corresponding to the set <IMG
|
||||
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img26.png"
|
||||
ALT="$W_i^{\delta}$">.
|
||||
<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="node25.html#dd2_96">20</A>]. The same reasoning can be applied starting
|
||||
from the coarse-level system, i.e. a coarse-space correction can be built
|
||||
from this system, thus obtaining <I>multi-level</I> preconditioners.
|
||||
|
||||
<P>
|
||||
The <I>classical one-level AS</I> preconditioner is defined by
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
|
||||
(A_i^\delta)^{-1} R_i^{\delta},
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="206" HEIGHT="58" BORDER="0"
|
||||
SRC="img27.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
|
||||
(A_i^\delta)^{-1} R_i^{\delta},
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
where <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img28.png"
|
||||
ALT="$A_i^\delta$"> is assumed to be nonsingular. Its application
|
||||
to a vector <IMG
|
||||
WIDTH="56" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img19.png"
|
||||
ALT="$v \in \Re^n$"> within a Krylov solver requires the following
|
||||
three steps:
|
||||
|
||||
<OL>
|
||||
<LI>restriction of <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> as <!-- MATH
|
||||
$v_i = R_i^{\delta} v$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="71" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img29.png"
|
||||
ALT="$v_i = R_i^{\delta} v$">, <IMG
|
||||
WIDTH="97" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img30.png"
|
||||
ALT="$i=1,\ldots,m$">;
|
||||
</LI>
|
||||
<LI>solution of the linear systems <!-- MATH
|
||||
$A_i^\delta w_i = v_i$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="80" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img31.png"
|
||||
ALT="$A_i^\delta w_i = v_i$">,
|
||||
<IMG
|
||||
WIDTH="97" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img30.png"
|
||||
ALT="$i=1,\ldots,m$">;
|
||||
</LI>
|
||||
<LI>prolongation and sum of the <IMG
|
||||
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img32.png"
|
||||
ALT="$w_i$">'s, i.e. <!-- MATH
|
||||
$w = \sum_{i=1}^m (R_i^{\delta})^T w_i$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="144" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img33.png"
|
||||
ALT="$w = \sum_{i=1}^m (R_i^{\delta})^T w_i$">.
|
||||
</LI>
|
||||
</OL>
|
||||
Note that the linear systems at step 2 are usually solved approximately,
|
||||
e.g. using incomplete LU factorizations such as ILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">), MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">) and
|
||||
ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p,t$">) [<A
|
||||
HREF="node24.html#Saad_book">19</A>, Chapter 10].
|
||||
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>
|
||||
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="node24.html#CAI_SARKIS">5</A>,<A
|
||||
HREF="node24.html#EFSTATHIOU">13</A>]. It
|
||||
is obtained by zeroing the components of <IMG
|
||||
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img32.png"
|
||||
ALT="$w_i$"> corresponding to the
|
||||
overlapping vertices when applying the prolongation. Therefore,
|
||||
RAS differs from classical AS by the prolongation operators,
|
||||
which are substituted by <!-- MATH
|
||||
$(\tilde{R}_i^0)^T \in \Re^{n_i^\delta \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="118" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img36.png"
|
||||
ALT="$(\tilde{R}_i^0)^T \in \Re^{n_i^\delta \times n}$">,
|
||||
where <IMG
|
||||
WIDTH="25" HEIGHT="42" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img37.png"
|
||||
ALT="$\tilde{R}_i^0$"> is obtained by zeroing the rows of <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img38.png"
|
||||
ALT="$R_i^\delta$">
|
||||
corresponding to the vertices in <!-- MATH
|
||||
$W_i^\delta \backslash W_i^0$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="66" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img39.png"
|
||||
ALT="$W_i^\delta \backslash W_i^0$">:
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{RAS}^{-1}= \sum_{i=1}^m (\tilde{R}_i^0)^T
|
||||
(A_i^\delta)^{-1} R_i^{\delta}.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="216" HEIGHT="58" BORDER="0"
|
||||
SRC="img40.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{RAS}^{-1}= \sum_{i=1}^m (\tilde{R}_i^0)^T
|
||||
(A_i^\delta)^{-1} R_i^{\delta}.
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
Analogously, the AS variant called <I>AS with Harmonic extension (ASH)</I>
|
||||
is defined by
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{ASH}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
|
||||
(A_i^\delta)^{-1} \tilde{R}_i^0.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="218" HEIGHT="58" BORDER="0"
|
||||
SRC="img41.png"
|
||||
ALT="\begin{displaymath}M_{ASH}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
|
||||
(A_i^\delta)^{-1} \tilde{R}_i^0.
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
We note that for <IMG
|
||||
WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img42.png"
|
||||
ALT="$\delta=0$"> the three variants of the AS preconditioner are
|
||||
all equal to the block-Jacobi preconditioner.
|
||||
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="node25.html#StubenGMD69_99">22</A>].
|
||||
|
||||
<P>
|
||||
As already observed, the convergence rate of the one-level Schwarz
|
||||
preconditioned iterative solvers deteriorates as the number <IMG
|
||||
WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$m$"> of partitions
|
||||
of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$"> increases [<A
|
||||
HREF="node24.html#dd1_94">7</A>,<A
|
||||
HREF="node24.html#dd2_96">20</A>]. To reduce the dependency
|
||||
of the number of iterations on the degree of parallelism we may
|
||||
introduce a global coupling among the overlapping partitions by defining
|
||||
a coarse-space approximation <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$"> of the matrix <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$">.
|
||||
In a pure algebraic setting, <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$"> is usually built with
|
||||
a Galerkin approach. Given a set <IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img44.png"
|
||||
ALT="$W_C$"> of <I>coarse vertices</I>,
|
||||
with size <IMG
|
||||
WIDTH="26" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img45.png"
|
||||
ALT="$n_C$">, and a suitable restriction operator
|
||||
<!-- MATH
|
||||
$R_C \in \Re^{n_C \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="101" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img46.png"
|
||||
ALT="$R_C \in \Re^{n_C \times n}$">, <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$"> is defined as
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
A_C=R_C A R_C^T
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="109" HEIGHT="31" BORDER="0"
|
||||
SRC="img47.png"
|
||||
ALT="\begin{displaymath}
|
||||
A_C=R_C A R_C^T
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
and the coarse-level correction matrix to be combined with a generic
|
||||
one-level AS preconditioner <IMG
|
||||
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img48.png"
|
||||
ALT="$M_{1L}$"> is obtained as
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{C}^{-1}= R_C^T A_C^{-1} R_C,
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="144" HEIGHT="32" BORDER="0"
|
||||
SRC="img49.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{C}^{-1}= R_C^T A_C^{-1} R_C,
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
where <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$"> is assumed to be nonsingular. The application of <IMG
|
||||
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img50.png"
|
||||
ALT="$M_{C}^{-1}$">
|
||||
to a vector <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> corresponds to a restriction, a solution and
|
||||
a prolongation step; the solution step, involving the matrix <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$">,
|
||||
may be carried out also approximately.
|
||||
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="node25.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node25.html#VANEK_MANDEL_BREZINA">24</A>]. A decoupled version
|
||||
of this algorithm is implemented, where the smoothed aggregation is applied locally
|
||||
to each submatrix [<A
|
||||
HREF="node25.html#TUMINARO_TONG">23</A>]. In the next two subsections we provide
|
||||
a brief description of the multi-level Schwarz preconditioners and of the smoothed
|
||||
aggregation technique as implemented in MLD2P4. For further details the user
|
||||
is referred to [<A
|
||||
HREF="node25.html#para_04">2</A>,<A
|
||||
HREF="node25.html#aaecc_07">3</A>,<A
|
||||
HREF="node25.html#apnum_07">4</A>,<A
|
||||
HREF="node25.html#dd2_96">20</A>].
|
||||
|
||||
<P>
|
||||
The combination of <IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$M_{C}$"> and <IMG
|
||||
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img48.png"
|
||||
ALT="$M_{1L}$"> may be
|
||||
performed in either an additive or a multiplicative framework.
|
||||
In the former case, the <I>two-level additive</I> Schwarz preconditioner
|
||||
is obtained:
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.
|
||||
\end{displaymath}
|
||||
-->
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<IMG
|
||||
WIDTH="166" HEIGHT="32" BORDER="0"
|
||||
SRC="img52.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
Applying <IMG
|
||||
WIDTH="59" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img53.png"
|
||||
ALT="$M_{2L-A}^{-1}$"> to a vector <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> within a Krylov solver
|
||||
corresponds to applying <IMG
|
||||
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img50.png"
|
||||
ALT="$M_{C}^{-1}$">
|
||||
and <IMG
|
||||
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img54.png"
|
||||
ALT="$M_{1L}^{-1}$"> to <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> independently and then summing up
|
||||
the results.
|
||||
|
||||
<P>
|
||||
In the multiplicative case, the combination can be
|
||||
performed by first applying the smoother <IMG
|
||||
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img54.png"
|
||||
ALT="$M_{1L}^{-1}$"> and then
|
||||
the coarse-level correction operator <IMG
|
||||
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img50.png"
|
||||
ALT="$M_{C}^{-1}$">:
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
\begin{array}{l}
|
||||
w = M_{1L}^{-1} v, \\
|
||||
z = w + M_{C}^{-1} (v-Aw);
|
||||
\end{array}
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="177" HEIGHT="51" BORDER="0"
|
||||
SRC="img55.png"
|
||||
ALT="\begin{displaymath}
|
||||
\begin{array}{l}
|
||||
w = M_{1L}^{-1} v, \\
|
||||
z = w + M_{C}^{-1} (v-Aw);
|
||||
\end{array}\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
this corresponds to the following <I>two-level hybrid pre-smoothed</I>
|
||||
Schwarz preconditioner:
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{2LH-PRE}^{-1} = M_{C}^{-1} + \left( I - M_{C}^{-1}A \right) M_{1L}^{-1}.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="308" HEIGHT="33" BORDER="0"
|
||||
SRC="img56.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{2LH-PRE}^{-1} = M_{C}^{-1} + \left( I - M_{C}^{-1}A \right) M_{1L}^{-1}.
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
On the other hand, by applying the smoother after the coarse-level correction,
|
||||
i.e. by computing
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
\begin{array}{l}
|
||||
w = M_{C}^{-1} v , \\
|
||||
z = w + M_{1L}^{-1} (v-Aw) ,
|
||||
\end{array}
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="177" HEIGHT="51" BORDER="0"
|
||||
SRC="img57.png"
|
||||
ALT="\begin{displaymath}
|
||||
\begin{array}{l}
|
||||
w = M_{C}^{-1} v , \\
|
||||
z = w + M_{1L}^{-1} (v-Aw) ,
|
||||
\end{array}\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
the <I>two-level hybrid post-smoothed</I>
|
||||
Schwarz preconditioner is obtained:
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{2LH-POST}^{-1} = M_{1L}^{-1} + \left( I - M_{1L}^{-1}A \right) M_{C}^{-1}.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="317" HEIGHT="33" BORDER="0"
|
||||
SRC="img58.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{2LH-POST}^{-1} = M_{1L}^{-1} + \left( I - M_{1L}^{-1}A \right) M_{C}^{-1}.
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
One more variant of two-level hybrid preconditioner is obtained by applying
|
||||
the smoother before and after the coarse-level correction. In this case, the
|
||||
preconditioner is symmetric if <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$">, <IMG
|
||||
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img48.png"
|
||||
ALT="$M_{1L}$"> and <IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$M_{C}$"> are symmetric.
|
||||
|
||||
<P>
|
||||
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="node24.html#dd2_96">20</A>, Chapter 3]).
|
||||
Additive and hybrid multilevel preconditioners
|
||||
are obtained as direct extensions of the two-level counterparts.
|
||||
For a detailed descrition of them, the reader is
|
||||
referred to [<A
|
||||
HREF="node24.html#dd2_96">20</A>, Chapter 3].
|
||||
The algorithm for the application of a multi-level hybrid
|
||||
post-smoothed preconditioner <IMG
|
||||
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img59.png"
|
||||
ALT="$M$"> to a vector <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$">, i.e. for the
|
||||
computation of <IMG
|
||||
WIDTH="87" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$w=M^{-1}v$">, is reported, for
|
||||
example, in Figure <A HREF="#fig:mlhpost_alg">1</A>. Here the number of levels
|
||||
is denoted by <IMG
|
||||
WIDTH="37" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img61.png"
|
||||
ALT="$nlev$"> and the levels are numbered in increasing order starting
|
||||
from the finest one, i.e. the finest level is level 1; the coarse matrix
|
||||
and the corresponding basic preconditioner at each level <IMG
|
||||
WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img62.png"
|
||||
ALT="$l$"> are denoted by <IMG
|
||||
WIDTH="22" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img63.png"
|
||||
ALT="$A_l$"> and
|
||||
<IMG
|
||||
WIDTH="27" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img64.png"
|
||||
ALT="$M_l$">, respectively, with <IMG
|
||||
WIDTH="61" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img65.png"
|
||||
ALT="$A_1=A$">.
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:mlhpost_alg"></A><A NAME="508"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
|
||||
Application of the multi-level hybrid post-smoothed preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
$\framebox{
|
||||
\begin{minipage}{.85\textwidth} {\small
|
||||
\begin{tabbing}
|
||||
\quad \=\quad \=\quad \=\quad \\[-1mm]
|
||||
$v_1 = v$; \\[2mm]
|
||||
\textbf{for $l=2, nlev$\ do}\\[1mm]
|
||||
\> ! transfer $v_{l-1}$\ to the next coarser level\\
|
||||
\> $v_l = R_lv_{l-1}$\ \\[1mm]
|
||||
\textbf{endfor} \\[2mm]
|
||||
! apply the coarsest-level correction\\[1mm]
|
||||
$y_{nlev} = A_{nlev}^{-1} v_{nlev}$\\[2mm]
|
||||
\textbf{for $l=nlev -1 , 1, -1$\ do}\\[1mm]
|
||||
\> ! transfer $y_{l+1}$\ to the next finer level\\
|
||||
\> $y_l = R_{l+1}^T y_{l+1}$;\\[1mm]
|
||||
\> ! compute the residual at the current level\\
|
||||
\> $r_l = v_l-A_l^{-1} y_l$;\\[1mm]
|
||||
\> ! apply the basic Schwarz preconditioner to the residual\\
|
||||
\> $r_l = M_l^{-1} r_l$\\[1mm]
|
||||
\> ! update $y_l$\\
|
||||
\> $y_l = y_l+r_l$\\
|
||||
\textbf{endfor} \\[1mm]
|
||||
$w = y_1$;
|
||||
\end{tabbing}
|
||||
}
|
||||
\end{minipage}
|
||||
}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="430" HEIGHT="435" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img66.png"
|
||||
ALT="\framebox{
|
||||
\begin{minipage}{.85\textwidth} {\small
|
||||
\begin{tabbing}
|
||||
\quad \=\quad...
|
||||
...= y_l+r_l$\\
|
||||
\textbf{endfor} [1mm]
|
||||
$w = y_1$;
|
||||
\end{tabbing}}
|
||||
\end{minipage}}">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html197"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<LI><A NAME="tex2html198"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html194"
|
||||
<A NAME="tex2html195"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html190"
|
||||
HREF="node10.html">
|
||||
<A NAME="tex2html191"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html184"
|
||||
<A NAME="tex2html185"
|
||||
HREF="node10.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html192"
|
||||
<A NAME="tex2html193"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html195"
|
||||
HREF="node12.html">Smoothed Aggregation</A>
|
||||
<B> Up:</B> <A NAME="tex2html191"
|
||||
HREF="node10.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html185"
|
||||
HREF="node10.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> <A NAME="tex2html193"
|
||||
<B> Next:</B> <A NAME="tex2html196"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html192"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html186"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
<B> <A NAME="tex2html194"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+672
-227
@@ -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>Multi-level Schwarz Preconditioners</TITLE>
|
||||
<META NAME="description" CONTENT="Multi-level Schwarz Preconditioners">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,306 +18,751 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node13.html">
|
||||
<LINK REL="previous" HREF="node11.html">
|
||||
<LINK REL="up" HREF="node10.html">
|
||||
<LINK REL="up" HREF="node11.html">
|
||||
<LINK REL="next" HREF="node13.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html204"
|
||||
<A NAME="tex2html209"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html200"
|
||||
HREF="node10.html">
|
||||
<A NAME="tex2html205"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html196"
|
||||
<A NAME="tex2html199"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html202"
|
||||
<A NAME="tex2html207"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html205"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html201"
|
||||
HREF="node10.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html197"
|
||||
HREF="node11.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> <A NAME="tex2html203"
|
||||
<B> Next:</B> <A NAME="tex2html210"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> Up:</B> <A NAME="tex2html206"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html200"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> <A NAME="tex2html208"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00062000000000000000"></A><A NAME="sec:aggregation"></A>
|
||||
<H2><A NAME="SECTION00061000000000000000"></A><A NAME="sec:multilevel"></A>
|
||||
<BR>
|
||||
Smoothed Aggregation
|
||||
Multi-level Schwarz Preconditioners
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
In order to define the restriction operator <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img67.png"
|
||||
ALT="$R_C$">, which is used to compute
|
||||
the coarse-level matrix <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$">, MLD2P4 uses the <I>smoothed aggregation</I>
|
||||
algorithm described in [<A
|
||||
HREF="node24.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node24.html#VANEK_MANDEL_BREZINA">24</A>].
|
||||
The basic idea of this algorithm is to build a coarse set of vertices
|
||||
The Multilevel preconditioners implemented in MLD2P4 are obtained by combining
|
||||
AS preconditioners with coarse-space corrections; therefore
|
||||
we first provide a sketch of the AS preconditioners.
|
||||
|
||||
<P>
|
||||
Given the linear system ,
|
||||
where <!-- MATH
|
||||
$A=(a_{ij}) \in \Re^{n \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img44.png"
|
||||
ALT="$W_C$"> by suitably grouping the vertices of <IMG
|
||||
WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img3.png"
|
||||
ALT="$A=(a_{ij}) \in \Re^{n \times n}$"> is a
|
||||
nonsingular sparse matrix with a symmetric nonzero pattern,
|
||||
let <IMG
|
||||
WIDTH="93" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img4.png"
|
||||
ALT="$G=(W,E)$"> be the adjacency graph of <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$">, where <!-- MATH
|
||||
$W=\{1, 2, \ldots, n\}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="138" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img5.png"
|
||||
ALT="$W=\{1, 2, \ldots, n\}$">
|
||||
and <!-- MATH
|
||||
$E=\{(i,j) : a_{ij} \neq 0\}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="162" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img6.png"
|
||||
ALT="$E=\{(i,j) : a_{ij} \neq 0\}$"> are the vertex set and the edge set of <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img7.png"
|
||||
ALT="$G$">,
|
||||
respectively. Two vertices are called adjacent if there is an edge connecting
|
||||
them. For any integer <IMG
|
||||
WIDTH="45" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img8.png"
|
||||
ALT="$\delta > 0$">, a <IMG
|
||||
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\delta$">-overlap
|
||||
partition of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$"> into disjoint subsets
|
||||
(aggregates), and to define the coarse-to-fine space transfer operator <IMG
|
||||
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img68.png"
|
||||
ALT="$R_C^T$"> by
|
||||
applying a suitable smoother to a simple piecewise constant
|
||||
prolongation operator, to improve the quality of the coarse-space correction.
|
||||
ALT="$W$"> can be defined recursively as follows.
|
||||
Given a 0-overlap (or non-overlapping) partition of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$">,
|
||||
i.e. a set of <IMG
|
||||
WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$m$"> disjoint nonempty sets <!-- MATH
|
||||
$W_i^0 \subset W$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="73" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img12.png"
|
||||
ALT="$W_i^0 \subset W$"> such that
|
||||
<!-- MATH
|
||||
$\cup_{i=1}^m W_i^0 = W$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="107" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img13.png"
|
||||
ALT="$\cup_{i=1}^m W_i^0 = W$">, a <IMG
|
||||
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\delta$">-overlap
|
||||
partition of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$"> is obtained by considering the sets
|
||||
<!-- MATH
|
||||
$W_i^\delta \supset W_i^{\delta-1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="97" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img14.png"
|
||||
ALT="$W_i^\delta \supset W_i^{\delta-1}$"> obtained by including the vertices that
|
||||
are adjacent to any vertex in <!-- MATH
|
||||
$W_i^{\delta-1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="48" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img15.png"
|
||||
ALT="$W_i^{\delta-1}$">.
|
||||
|
||||
<P>
|
||||
Three main steps can be identified in the smoothed aggregation procedure:
|
||||
|
||||
<OL>
|
||||
<LI>coarsening of the vertex set <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$">, to obtain <IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img44.png"
|
||||
ALT="$W_C$">;
|
||||
</LI>
|
||||
<LI>construction of the prolongator <IMG
|
||||
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img68.png"
|
||||
ALT="$R_C^T$">;
|
||||
</LI>
|
||||
<LI>application of <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img67.png"
|
||||
ALT="$R_C$"> and <IMG
|
||||
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img68.png"
|
||||
ALT="$R_C^T$"> to build <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$">.
|
||||
</LI>
|
||||
</OL>
|
||||
Let <IMG
|
||||
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img16.png"
|
||||
ALT="$n_i^\delta$"> be the size of <IMG
|
||||
WIDTH="30" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img17.png"
|
||||
ALT="$W_i^\delta$"> and <!-- MATH
|
||||
$R_i^{\delta} \in
|
||||
\Re^{n_i^\delta \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="93" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img18.png"
|
||||
ALT="$R_i^{\delta} \in
|
||||
\Re^{n_i^\delta \times n}$"> the restriction operator that maps
|
||||
a vector <IMG
|
||||
WIDTH="56" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img19.png"
|
||||
ALT="$v \in \Re^n$"> onto the vector <!-- MATH
|
||||
$v_i^{\delta} \in \Re^{n_i^\delta}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="70" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img20.png"
|
||||
ALT="$v_i^{\delta} \in \Re^{n_i^\delta}$">
|
||||
containing the components of <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> corresponding to the vertices in
|
||||
<IMG
|
||||
WIDTH="30" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img17.png"
|
||||
ALT="$W_i^\delta$">. The transpose of <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img22.png"
|
||||
ALT="$R_i^{\delta}$"> is a
|
||||
prolongation operator from <!-- MATH
|
||||
$\Re^{n_i^\delta}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="32" HEIGHT="24" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img23.png"
|
||||
ALT="$\Re^{n_i^\delta}$"> to <IMG
|
||||
WIDTH="26" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img24.png"
|
||||
ALT="$\Re^n$">.
|
||||
The matrix <!-- MATH
|
||||
$A_i^\delta=R_i^\delta A (R_i^\delta)^T \in
|
||||
\Re^{n_i^\delta \times n_i^\delta}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="201" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$A_i^\delta=R_i^\delta A (R_i^\delta)^T \in
|
||||
\Re^{n_i^\delta \times n_i^\delta}$"> can be considered
|
||||
as a restriction of <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$"> corresponding to the set <IMG
|
||||
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img26.png"
|
||||
ALT="$W_i^{\delta}$">.
|
||||
|
||||
<P>
|
||||
To perform the coarsening step, we have implemented the aggregation algorithm sketched
|
||||
in [<A
|
||||
HREF="node24.html#apnum_07">4</A>]. According to [<A
|
||||
HREF="node24.html#VANEK_MANDEL_BREZINA">24</A>], a modification of
|
||||
this algorithm has been actually considered,
|
||||
in which each aggregate <IMG
|
||||
WIDTH="26" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img69.png"
|
||||
ALT="$N_r$"> is made of vertices of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$"> that are <I>strongly coupled</I>
|
||||
to a certain root vertex <IMG
|
||||
WIDTH="53" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img70.png"
|
||||
ALT="$r \in W$">, i.e. <BR><P></P>
|
||||
The <I>classical one-level AS</I> preconditioner is defined by
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
N_r = \left\{s \in W: |a_{rs}| > \theta \sqrt{|a_{rr}a_{ss}|} \right\}
|
||||
\cup \left\{ r \right\} ,
|
||||
M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
|
||||
(A_i^\delta)^{-1} R_i^{\delta},
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="319" HEIGHT="38" BORDER="0"
|
||||
SRC="img71.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\} ,
|
||||
WIDTH="206" HEIGHT="58" BORDER="0"
|
||||
SRC="img27.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{AS}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
|
||||
(A_i^\delta)^{-1} R_i^{\delta},
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
for a given <!-- MATH
|
||||
$\theta \in [0,1]$
|
||||
where <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img28.png"
|
||||
ALT="$A_i^\delta$"> is assumed to be nonsingular. Its application
|
||||
to a vector <IMG
|
||||
WIDTH="56" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img19.png"
|
||||
ALT="$v \in \Re^n$"> within a Krylov solver requires the following
|
||||
three steps:
|
||||
|
||||
<OL>
|
||||
<LI>restriction of <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> as <!-- MATH
|
||||
$v_i = R_i^{\delta} v$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="69" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img72.png"
|
||||
ALT="$\theta \in [0,1]$">.
|
||||
Since this algorithm has a sequential nature, a <I>decoupled</I> version of
|
||||
it has been chosen, where each processor <IMG
|
||||
WIDTH="10" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img73.png"
|
||||
ALT="$i$"> independently applies the algorithm to
|
||||
the set of vertices <IMG
|
||||
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img74.png"
|
||||
ALT="$W_i^0$"> assigned to it in the initial data distribution. This
|
||||
version is embarrassingly parallel, since it does not require any data communication.
|
||||
On the other hand, it may produce non-uniform aggregates near boundary vertices,
|
||||
i.e. near vertices adjacent to vertices in other processors, and is strongly
|
||||
dependent on the number of processors and on the initial partitioning of the matrix <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$">.
|
||||
Nevertheless, this algorithm has been chosen for the implementation in MLD2P4,
|
||||
since it has been shown to produce good results in practice
|
||||
[<A
|
||||
HREF="node24.html#aaecc_07">3</A>,<A
|
||||
HREF="node24.html#apnum_07">4</A>,<A
|
||||
HREF="node24.html#TUMINARO_TONG">23</A>].
|
||||
WIDTH="71" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img29.png"
|
||||
ALT="$v_i = R_i^{\delta} v$">, <IMG
|
||||
WIDTH="97" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img30.png"
|
||||
ALT="$i=1,\ldots,m$">;
|
||||
</LI>
|
||||
<LI>solution of the linear systems <!-- MATH
|
||||
$A_i^\delta w_i = v_i$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="80" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img31.png"
|
||||
ALT="$A_i^\delta w_i = v_i$">,
|
||||
<IMG
|
||||
WIDTH="97" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img30.png"
|
||||
ALT="$i=1,\ldots,m$">;
|
||||
</LI>
|
||||
<LI>prolongation and sum of the <IMG
|
||||
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img32.png"
|
||||
ALT="$w_i$">'s, i.e. <!-- MATH
|
||||
$w = \sum_{i=1}^m (R_i^{\delta})^T w_i$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="144" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img33.png"
|
||||
ALT="$w = \sum_{i=1}^m (R_i^{\delta})^T w_i$">.
|
||||
</LI>
|
||||
</OL>
|
||||
Note that the linear systems at step 2 are usually solved approximately,
|
||||
e.g. using incomplete LU factorizations such as ILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">), MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">) and
|
||||
ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p,t$">) [<A
|
||||
HREF="node25.html#Saad_book">19</A>, Chapter 10].
|
||||
|
||||
<P>
|
||||
The prolongator <IMG
|
||||
WIDTH="75" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img75.png"
|
||||
ALT="$P_C=R_C^T$"> is built starting from a <I>tentative prolongator</I>
|
||||
<!-- MATH
|
||||
$P \in \Re^{n \times n_C}$
|
||||
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="node25.html#CAI_SARKIS">5</A>,<A
|
||||
HREF="node25.html#EFSTATHIOU">13</A>]. It
|
||||
is obtained by zeroing the components of <IMG
|
||||
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img32.png"
|
||||
ALT="$w_i$"> corresponding to the
|
||||
overlapping vertices when applying the prolongation. Therefore,
|
||||
RAS differs from classical AS by the prolongation operators,
|
||||
which are substituted by <!-- MATH
|
||||
$(\tilde{R}_i^0)^T \in \Re^{n_i^\delta \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="90" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img76.png"
|
||||
ALT="$P \in \Re^{n \times n_C}$">, defined as
|
||||
<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}
|
||||
WIDTH="118" HEIGHT="43" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img36.png"
|
||||
ALT="$(\tilde{R}_i^0)^T \in \Re^{n_i^\delta \times n}$">,
|
||||
where <IMG
|
||||
WIDTH="25" HEIGHT="42" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img37.png"
|
||||
ALT="$\tilde{R}_i^0$"> is obtained by zeroing the rows of <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img38.png"
|
||||
ALT="$R_i^\delta$">
|
||||
corresponding to the vertices in <!-- MATH
|
||||
$W_i^\delta \backslash W_i^0$
|
||||
-->
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:tent_prol"></A><IMG
|
||||
WIDTH="290" HEIGHT="52" BORDER="0"
|
||||
SRC="img77.png"
|
||||
<IMG
|
||||
WIDTH="66" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img39.png"
|
||||
ALT="$W_i^\delta \backslash W_i^0$">:
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{RAS}^{-1}= \sum_{i=1}^m (\tilde{R}_i^0)^T
|
||||
(A_i^\delta)^{-1} R_i^{\delta}.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="216" HEIGHT="58" BORDER="0"
|
||||
SRC="img40.png"
|
||||
ALT="\begin{displaymath}
|
||||
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>
|
||||
M_{RAS}^{-1}= \sum_{i=1}^m (\tilde{R}_i^0)^T
|
||||
(A_i^\delta)^{-1} R_i^{\delta}.
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
Analogously, the AS variant called <I>AS with Harmonic extension (ASH)</I>
|
||||
is defined by
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{ASH}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
|
||||
(A_i^\delta)^{-1} \tilde{R}_i^0.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="218" HEIGHT="58" BORDER="0"
|
||||
SRC="img41.png"
|
||||
ALT="\begin{displaymath}M_{ASH}^{-1}= \sum_{i=1}^m (R_i^{\delta})^T
|
||||
(A_i^\delta)^{-1} \tilde{R}_i^0.
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
We note that for <IMG
|
||||
WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img42.png"
|
||||
ALT="$\delta=0$"> the three variants of the AS preconditioner are
|
||||
all equal to the block-Jacobi preconditioner.
|
||||
|
||||
<P>
|
||||
As already observed, the convergence rate of the one-level Schwarz
|
||||
preconditioned iterative solvers deteriorates as the number <IMG
|
||||
WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$m$"> of partitions
|
||||
of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$"> increases [<A
|
||||
HREF="node25.html#dd1_94">7</A>,<A
|
||||
HREF="node25.html#dd2_96">20</A>]. To reduce the dependency
|
||||
of the number of iterations on the degree of parallelism we may
|
||||
introduce a global coupling among the overlapping partitions by defining
|
||||
a coarse-space approximation <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$"> of the matrix <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$">.
|
||||
In a pure algebraic setting, <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$"> is usually built with
|
||||
a Galerkin approach. Given a set <IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img44.png"
|
||||
ALT="$W_C$"> of <I>coarse vertices</I>,
|
||||
with size <IMG
|
||||
WIDTH="26" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img45.png"
|
||||
ALT="$n_C$">, and a suitable restriction operator
|
||||
<!-- MATH
|
||||
$R_C \in \Re^{n_C \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="101" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img46.png"
|
||||
ALT="$R_C \in \Re^{n_C \times n}$">, <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$"> is defined as
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
A_C=R_C A R_C^T
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="109" HEIGHT="31" BORDER="0"
|
||||
SRC="img47.png"
|
||||
ALT="\begin{displaymath}
|
||||
A_C=R_C A R_C^T
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
and the coarse-level correction matrix to be combined with a generic
|
||||
one-level AS preconditioner <IMG
|
||||
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img48.png"
|
||||
ALT="$M_{1L}$"> is obtained as
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{C}^{-1}= R_C^T A_C^{-1} R_C,
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="144" HEIGHT="32" BORDER="0"
|
||||
SRC="img49.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{C}^{-1}= R_C^T A_C^{-1} R_C,
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
where <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$"> is assumed to be nonsingular. The application of <IMG
|
||||
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img50.png"
|
||||
ALT="$M_{C}^{-1}$">
|
||||
to a vector <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> corresponds to a restriction, a solution and
|
||||
a prolongation step; the solution step, involving the matrix <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$">,
|
||||
may be carried out also approximately.
|
||||
|
||||
<P>
|
||||
The combination of <IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$M_{C}$"> and <IMG
|
||||
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img48.png"
|
||||
ALT="$M_{1L}$"> may be
|
||||
performed in either an additive or a multiplicative framework.
|
||||
In the former case, the <I>two-level additive</I> Schwarz preconditioner
|
||||
is obtained:
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="166" HEIGHT="32" BORDER="0"
|
||||
SRC="img52.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{2LA}^{-1} = M_{C}^{-1} + M_{1L}^{-1}.
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
Applying <IMG
|
||||
WIDTH="59" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img53.png"
|
||||
ALT="$M_{2L-A}^{-1}$"> to a vector <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> within a Krylov solver
|
||||
corresponds to applying <IMG
|
||||
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img50.png"
|
||||
ALT="$M_{C}^{-1}$">
|
||||
and <IMG
|
||||
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img54.png"
|
||||
ALT="$M_{1L}^{-1}$"> to <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> independently and then summing up
|
||||
the results.
|
||||
|
||||
<P>
|
||||
In the multiplicative case, the combination can be
|
||||
performed by first applying the smoother <IMG
|
||||
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img54.png"
|
||||
ALT="$M_{1L}^{-1}$"> and then
|
||||
the coarse-level correction operator <IMG
|
||||
WIDTH="42" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img50.png"
|
||||
ALT="$M_{C}^{-1}$">:
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
\begin{array}{l}
|
||||
w = M_{1L}^{-1} v, \\
|
||||
z = w + M_{C}^{-1} (v-Aw);
|
||||
\end{array}
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="177" HEIGHT="51" BORDER="0"
|
||||
SRC="img55.png"
|
||||
ALT="\begin{displaymath}
|
||||
\begin{array}{l}
|
||||
w = M_{1L}^{-1} v, \\
|
||||
z = w + M_{C}^{-1} (v-Aw);
|
||||
\end{array}\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
this corresponds to the following <I>two-level hybrid pre-smoothed</I>
|
||||
Schwarz preconditioner:
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{2LH-PRE}^{-1} = M_{C}^{-1} + \left( I - M_{C}^{-1}A \right) M_{1L}^{-1}.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="308" HEIGHT="33" BORDER="0"
|
||||
SRC="img56.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{2LH-PRE}^{-1} = M_{C}^{-1} + \left( I - M_{C}^{-1}A \right) M_{1L}^{-1}.
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
On the other hand, by applying the smoother after the coarse-level correction,
|
||||
i.e. by computing
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
\begin{array}{l}
|
||||
w = M_{C}^{-1} v , \\
|
||||
z = w + M_{1L}^{-1} (v-Aw) ,
|
||||
\end{array}
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="177" HEIGHT="51" BORDER="0"
|
||||
SRC="img57.png"
|
||||
ALT="\begin{displaymath}
|
||||
\begin{array}{l}
|
||||
w = M_{C}^{-1} v , \\
|
||||
z = w + M_{1L}^{-1} (v-Aw) ,
|
||||
\end{array}\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
the <I>two-level hybrid post-smoothed</I>
|
||||
Schwarz preconditioner is obtained:
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
M_{2LH-POST}^{-1} = M_{1L}^{-1} + \left( I - M_{1L}^{-1}A \right) M_{C}^{-1}.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="317" HEIGHT="33" BORDER="0"
|
||||
SRC="img58.png"
|
||||
ALT="\begin{displaymath}
|
||||
M_{2LH-POST}^{-1} = M_{1L}^{-1} + \left( I - M_{1L}^{-1}A \right) M_{C}^{-1}.
|
||||
\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P>
|
||||
One more variant of two-level hybrid preconditioner is obtained by applying
|
||||
the smoother before and after the coarse-level correction. In this case, the
|
||||
preconditioner is symmetric if <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$">, <IMG
|
||||
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img48.png"
|
||||
ALT="$M_{1L}$"> and <IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$M_{C}$"> are symmetric.
|
||||
|
||||
<P>
|
||||
As previously noted, on parallel computers the number of submatrices usually matches
|
||||
the number of available processors. When the size of the system to be preconditioned
|
||||
is very large, the use of many processors, i.e. of many small submatrices, often
|
||||
leads to a large coarse-level system, whose solution may be computationally expensive.
|
||||
On the other hand, the use of few processors often leads to local sumatrices that
|
||||
are too expensive to be processed on single processors, because of memory and/or
|
||||
computing requirements. Therefore, it seems natural to use a recursive approach,
|
||||
in which the coarse-level correction is re-applied starting from the current
|
||||
coarse-level system. The corresponding preconditioners, called <I>multi-level</I>
|
||||
preconditioners, can significantly reduce the computational cost of preconditioning
|
||||
with respect to the two-level case (see [<A
|
||||
HREF="node25.html#dd2_96">20</A>, Chapter 3]).
|
||||
Additive and hybrid multilevel preconditioners
|
||||
are obtained as direct extensions of the two-level counterparts.
|
||||
For a detailed descrition of them, the reader is
|
||||
referred to [<A
|
||||
HREF="node25.html#dd2_96">20</A>, Chapter 3].
|
||||
The algorithm for the application of a multi-level hybrid
|
||||
post-smoothed preconditioner <IMG
|
||||
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img59.png"
|
||||
ALT="$M$"> to a vector <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$">, i.e. for the
|
||||
computation of <IMG
|
||||
WIDTH="87" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$w=M^{-1}v$">, is reported, for
|
||||
example, in Figure <A HREF="#fig:mlhpost_alg">1</A>. Here the number of levels
|
||||
is denoted by <IMG
|
||||
WIDTH="37" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img61.png"
|
||||
ALT="$nlev$"> and the levels are numbered in increasing order starting
|
||||
from the finest one, i.e. the finest level is level 1; the coarse matrix
|
||||
and the corresponding basic preconditioner at each level <IMG
|
||||
WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img62.png"
|
||||
ALT="$l$"> are denoted by <IMG
|
||||
WIDTH="22" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img63.png"
|
||||
ALT="$A_l$"> and
|
||||
<IMG
|
||||
WIDTH="27" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img78.png"
|
||||
ALT="$P_C$"> is obtained by
|
||||
applying to <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img79.png"
|
||||
ALT="$P$"> a smoother <!-- MATH
|
||||
$S \in \Re^{n \times n}$
|
||||
SRC="img64.png"
|
||||
ALT="$M_l$">, respectively, with <IMG
|
||||
WIDTH="61" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img65.png"
|
||||
ALT="$A_1=A$">.
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:mlhpost_alg"></A><A NAME="508"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
|
||||
Application of the multi-level hybrid post-smoothed preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
$\framebox{
|
||||
\begin{minipage}{.85\textwidth} {\small
|
||||
\begin{tabbing}
|
||||
\quad \=\quad \=\quad \=\quad \\[-1mm]
|
||||
$v_1 = v$; \\[2mm]
|
||||
\textbf{for $l=2, nlev$\ do}\\[1mm]
|
||||
\> ! transfer $v_{l-1}$\ to the next coarser level\\
|
||||
\> $v_l = R_lv_{l-1}$\ \\[1mm]
|
||||
\textbf{endfor} \\[2mm]
|
||||
! apply the coarsest-level correction\\[1mm]
|
||||
$y_{nlev} = A_{nlev}^{-1} v_{nlev}$\\[2mm]
|
||||
\textbf{for $l=nlev -1 , 1, -1$\ do}\\[1mm]
|
||||
\> ! transfer $y_{l+1}$\ to the next finer level\\
|
||||
\> $y_l = R_{l+1}^T y_{l+1}$;\\[1mm]
|
||||
\> ! compute the residual at the current level\\
|
||||
\> $r_l = v_l-A_l^{-1} y_l$;\\[1mm]
|
||||
\> ! apply the basic Schwarz preconditioner to the residual\\
|
||||
\> $r_l = M_l^{-1} r_l$\\[1mm]
|
||||
\> ! update $y_l$\\
|
||||
\> $y_l = y_l+r_l$\\
|
||||
\textbf{endfor} \\[1mm]
|
||||
$w = y_1$;
|
||||
\end{tabbing}
|
||||
}
|
||||
\end{minipage}
|
||||
}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="78" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img80.png"
|
||||
ALT="$S \in \Re^{n \times n}$">:
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
WIDTH="430" HEIGHT="435" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img66.png"
|
||||
ALT="\framebox{
|
||||
\begin{minipage}{.85\textwidth} {\small
|
||||
\begin{tabbing}
|
||||
\quad \=\quad...
|
||||
...= y_l+r_l$\\
|
||||
\textbf{endfor} [1mm]
|
||||
$w = y_1$;
|
||||
\end{tabbing}}
|
||||
\end{minipage}}">
|
||||
|
||||
<!-- 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="img81.png"
|
||||
ALT="\begin{displaymath}
|
||||
P_C = S P,
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(3)</TD></TR>
|
||||
</DIV></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="node24.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node24.html#StubenGMD69_99">22</A>].
|
||||
A simple choice for <IMG
|
||||
WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$S$"> is the damped Jacobi smoother:
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
S = I - \omega D^{-1} A ,
|
||||
\end{equation}
|
||||
-->
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:jac_smoother"></A><IMG
|
||||
WIDTH="126" HEIGHT="30" BORDER="0"
|
||||
SRC="img83.png"
|
||||
ALT="\begin{displaymath}
|
||||
S = I - \omega D^{-1} A ,
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(4)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P>
|
||||
where the value of <IMG
|
||||
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\omega$"> can be chosen
|
||||
using some estimate of the spectral radius of <IMG
|
||||
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img85.png"
|
||||
ALT="$D^{-1}A$"> [<A
|
||||
HREF="node24.html#BREZINA_VANEK">1</A>].
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html204"
|
||||
<A NAME="tex2html209"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html200"
|
||||
HREF="node10.html">
|
||||
<A NAME="tex2html205"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html196"
|
||||
<A NAME="tex2html199"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html202"
|
||||
<A NAME="tex2html207"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html205"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html201"
|
||||
HREF="node10.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html197"
|
||||
HREF="node11.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> <A NAME="tex2html203"
|
||||
<B> Next:</B> <A NAME="tex2html210"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> Up:</B> <A NAME="tex2html206"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html200"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> <A NAME="tex2html208"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+248
-170
@@ -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>Smoothed Aggregation</TITLE>
|
||||
<META NAME="description" CONTENT="Smoothed Aggregation">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,228 +18,306 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node15.html">
|
||||
<LINK REL="previous" HREF="node10.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="previous" HREF="node12.html">
|
||||
<LINK REL="up" HREF="node11.html">
|
||||
<LINK REL="next" HREF="node14.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html216"
|
||||
<A NAME="tex2html219"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html212"
|
||||
HREF="userhtml.html">
|
||||
<A NAME="tex2html215"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html206"
|
||||
<A NAME="tex2html211"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html214"
|
||||
<A NAME="tex2html217"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html217"
|
||||
HREF="node14.html">Examples</A>
|
||||
<B> Up:</B> <A NAME="tex2html213"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html207"
|
||||
HREF="node12.html">Smoothed Aggregation</A>
|
||||
<B> <A NAME="tex2html215"
|
||||
<B> Next:</B> <A NAME="tex2html220"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html216"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html212"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> <A NAME="tex2html218"
|
||||
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="SECTION00062000000000000000"></A><A NAME="sec:aggregation"></A>
|
||||
<BR>
|
||||
Getting Started
|
||||
</H1>
|
||||
Smoothed Aggregation
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
We describe the basics for building and applying MLD2P4 one-level and multi-level
|
||||
Schwarz preconditioners with the Krylov solvers included in PSBLAS [<A
|
||||
HREF="node24.html#PSBLASGUIDE">14</A>].
|
||||
The following steps are required:
|
||||
In order to define the restriction operator <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img67.png"
|
||||
ALT="$R_C$">, which is used to compute
|
||||
the coarse-level matrix <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$">, MLD2P4 uses the <I>smoothed aggregation</I>
|
||||
algorithm described in [<A
|
||||
HREF="node25.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node25.html#VANEK_MANDEL_BREZINA">24</A>].
|
||||
The basic idea of this algorithm is to build a coarse set of vertices
|
||||
<IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img44.png"
|
||||
ALT="$W_C$"> by suitably grouping the vertices of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$"> into disjoint subsets
|
||||
(aggregates), and to define the coarse-to-fine space transfer operator <IMG
|
||||
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img68.png"
|
||||
ALT="$R_C^T$"> by
|
||||
applying a suitable smoother to a simple piecewise constant
|
||||
prolongation operator, to improve the quality of the coarse-space correction.
|
||||
|
||||
<P>
|
||||
Three main steps can be identified in the smoothed aggregation procedure:
|
||||
|
||||
<OL>
|
||||
<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>coarsening of the vertex set <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$">, to obtain <IMG
|
||||
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img44.png"
|
||||
ALT="$W_C$">;
|
||||
</LI>
|
||||
<LI><I>Allocate and initialize the preconditioner data structure, according to
|
||||
a preconditioner type chosen by the user</I>. This is performed by the routine
|
||||
<code>mld_precinit</code>, which also sets defaults for each preconditioner
|
||||
type selected by the user. The defaults associated to each preconditioner
|
||||
type are given in Table <A HREF="#tab:precinit">1</A>, where the strings used by
|
||||
<code>mld_precinit</code> to identify the preconditioner types are also given.
|
||||
Note that these strings are valid also if uppercase letters are substituted by
|
||||
corresponding lowercase ones.
|
||||
<LI>construction of the prolongator <IMG
|
||||
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img68.png"
|
||||
ALT="$R_C^T$">;
|
||||
</LI>
|
||||
<LI><I>Modify the selected preconditioner type, by properly setting
|
||||
preconditioner parameters.</I> This is performed by the routine <code>mld_precset</code>.
|
||||
This routine must be called only if the user wants to modify the default values
|
||||
of the parameters associated to the selected preconditioner type, to obtain a variant
|
||||
of the preconditioner. Examples of use of <code>mld_precset</code> are given in
|
||||
Section <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_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
|
||||
</LI>
|
||||
<LI><I>Build the preconditioner for a given matrix.</I> This is performed by
|
||||
the routine <code>mld_precbld</code>.
|
||||
</LI>
|
||||
<LI><I>Apply the preconditioner at each iteration of a Krylov solver.</I>
|
||||
This is performed by the routine <code>mld_precaply</code>. When using the PSBLAS Krylov solvers,
|
||||
this step is completely transparent to the user, since <code>mld_precaply</code> is called
|
||||
by the PSBLAS routine implementing the Krylov solver (<code>psb_krylov</code>).
|
||||
</LI>
|
||||
<LI><I>Free the preconditioner data structure</I>. This is performed by
|
||||
the routine <code>mld_</code> <code>precfree</code>. This step is complementary to step 1 and should
|
||||
be performed when the preconditioner is no more used.
|
||||
<LI>application of <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img67.png"
|
||||
ALT="$R_C$"> and <IMG
|
||||
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img68.png"
|
||||
ALT="$R_C^T$"> to build <IMG
|
||||
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="$A_C$">.
|
||||
</LI>
|
||||
</OL>
|
||||
A detailed description of the above routines 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>
|
||||
Note that the Fortran 95 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>).
|
||||
|
||||
<P>
|
||||
|
||||
<BR><B>Remark 1.</B> The coarsest-level solver used by the default two-level
|
||||
preconditioner has been chosen by taking into account that, on parallel
|
||||
machines, it often leads to the smallest execution time when applied to
|
||||
linear systems coming from finite-difference discretizations of basic
|
||||
elliptic PDE problems, considered as standard tests for multi-level Schwarz
|
||||
preconditioners [<A
|
||||
HREF="node24.html#aaecc_07">3</A>,<A
|
||||
HREF="node24.html#apnum_07">4</A>]. However, this solver does
|
||||
not necessarily correspond to the smallest number of iterations of the
|
||||
preconditioned Krylov method, which is usually obtained by applying
|
||||
a direct solver to the coarsest-level system, e.g. based on the LU
|
||||
factorization (see Section <A HREF="node15.html#sec:userinterface">6</A>
|
||||
for the coarsest-level solvers available in MLD2P4).
|
||||
|
||||
<P>
|
||||
|
||||
<BR><B>Remark 2.</B> The include path for MLD2P4 must override
|
||||
those for PSBLAS, e.g. the latter must come first in the sequence
|
||||
passed to the compiler, as the MLD2P4 version of the Krylov solver
|
||||
interfaces must override that of PSBLAS. This will change in the future
|
||||
when the support for the <code>class</code> statement becomes widespread in Fortran
|
||||
compilers.
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="923"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 1:</STRONG>
|
||||
Preconditioner types, corresponding strings and default choices.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
To perform the coarsening step, we have implemented the aggregation algorithm sketched
|
||||
in [<A
|
||||
HREF="node25.html#apnum_07">4</A>]. According to [<A
|
||||
HREF="node25.html#VANEK_MANDEL_BREZINA">24</A>], a modification of
|
||||
this algorithm has been actually considered,
|
||||
in which each aggregate <IMG
|
||||
WIDTH="26" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img69.png"
|
||||
ALT="$N_r$"> is made of vertices of <IMG
|
||||
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$W$"> that are <I>strongly coupled</I>
|
||||
to a certain root vertex <IMG
|
||||
WIDTH="53" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img70.png"
|
||||
ALT="$r \in W$">, i.e. <BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><SMALL>TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>STRING</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221><SMALL>DEFAULT PRECONDITIONER</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">No preconditioner</TD>
|
||||
<TD ALIGN="LEFT"><code>'NOPREC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Considered only to use the PSBLAS
|
||||
Krylov solvers with no preconditioner.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Diagonal</TD>
|
||||
<TD ALIGN="LEFT"><code>'DIAG'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>--</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Block Jacobi</TD>
|
||||
<TD ALIGN="LEFT"><code>'BJAC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Block Jacobi with ILU(0) on the local blocks.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Additive Schwarz</TD>
|
||||
<TD ALIGN="LEFT"><code>'AS'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Restricted Additive Schwarz (RAS),
|
||||
with overlap 1 and ILU(0) on the local blocks.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Multilevel</TD>
|
||||
<TD ALIGN="LEFT"><code>'ML'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Multi-level hybrid preconditioner (additive on the
|
||||
same level and multiplicative through the levels),
|
||||
with post-smoothing only.
|
||||
Number of levels: 2.
|
||||
Post-smoother: RAS with overlap 1 and ILU(0)
|
||||
on the local blocks.
|
||||
Aggregation: decoupled smoothed aggregation with
|
||||
threshold <IMG
|
||||
WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img86.png"
|
||||
ALT="$\theta = 0$">.
|
||||
Coarsest matrix: distributed among the processors.
|
||||
Coarsest-level solver:
|
||||
4 sweeps of the block-Jacobi solver,
|
||||
with LU (or ILU) factorization of the blocks
|
||||
(UMFPACK for the double precision versions and
|
||||
SuperLU for the single precision ones, if the packages
|
||||
have been installed; ILU(0), otherwise).</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<!-- 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="319" HEIGHT="38" BORDER="0"
|
||||
SRC="img71.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="img72.png"
|
||||
ALT="$\theta \in [0,1]$">.
|
||||
Since this algorithm has a sequential nature, a <I>decoupled</I> version of
|
||||
it has been chosen, where each processor <IMG
|
||||
WIDTH="10" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img73.png"
|
||||
ALT="$i$"> independently applies the algorithm to
|
||||
the set of vertices <IMG
|
||||
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img74.png"
|
||||
ALT="$W_i^0$"> assigned to it in the initial data distribution. This
|
||||
version is embarrassingly parallel, since it does not require any data communication.
|
||||
On the other hand, it may produce non-uniform aggregates near boundary vertices,
|
||||
i.e. near vertices adjacent to vertices in other processors, and is strongly
|
||||
dependent on the number of processors and on the initial partitioning of the matrix <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="$A$">.
|
||||
Nevertheless, this algorithm has been chosen for the implementation in MLD2P4,
|
||||
since it has been shown to produce good results in practice
|
||||
[<A
|
||||
HREF="node25.html#aaecc_07">3</A>,<A
|
||||
HREF="node25.html#apnum_07">4</A>,<A
|
||||
HREF="node25.html#TUMINARO_TONG">23</A>].
|
||||
|
||||
<P>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
The prolongator <IMG
|
||||
WIDTH="75" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img75.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="img76.png"
|
||||
ALT="$P \in \Re^{n \times n_C}$">, defined as
|
||||
<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="290" HEIGHT="52" BORDER="0"
|
||||
SRC="img77.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="img78.png"
|
||||
ALT="$P_C$"> is obtained by
|
||||
applying to <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img79.png"
|
||||
ALT="$P$"> a smoother <!-- MATH
|
||||
$S \in \Re^{n \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="78" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img80.png"
|
||||
ALT="$S \in \Re^{n \times n}$">:
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- 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="img81.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="node25.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node25.html#StubenGMD69_99">22</A>].
|
||||
A simple choice for <IMG
|
||||
WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$S$"> is the damped Jacobi smoother:
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
S = I - \omega D^{-1} A ,
|
||||
\end{equation}
|
||||
-->
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:jac_smoother"></A><IMG
|
||||
WIDTH="126" HEIGHT="30" BORDER="0"
|
||||
SRC="img83.png"
|
||||
ALT="\begin{displaymath}
|
||||
S = I - \omega D^{-1} A ,
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(4)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P>
|
||||
where the value of <IMG
|
||||
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\omega$"> can be chosen
|
||||
using some estimate of the spectral radius of <IMG
|
||||
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img85.png"
|
||||
ALT="$D^{-1}A$"> [<A
|
||||
HREF="node25.html#BREZINA_VANEK">1</A>].
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html218"
|
||||
HREF="node14.html">Examples</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html216"
|
||||
<A NAME="tex2html219"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html212"
|
||||
HREF="userhtml.html">
|
||||
<A NAME="tex2html215"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html206"
|
||||
<A NAME="tex2html211"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html214"
|
||||
<A NAME="tex2html217"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html217"
|
||||
HREF="node14.html">Examples</A>
|
||||
<B> Up:</B> <A NAME="tex2html213"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html207"
|
||||
HREF="node12.html">Smoothed Aggregation</A>
|
||||
<B> <A NAME="tex2html215"
|
||||
<B> Next:</B> <A NAME="tex2html220"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html216"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html212"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<B> <A NAME="tex2html218"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+175
-256
@@ -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>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,309 +18,228 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="previous" HREF="node13.html">
|
||||
<LINK REL="up" HREF="node13.html">
|
||||
<LINK REL="next" HREF="node16.html">
|
||||
<LINK REL="previous" HREF="node11.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node15.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html227"
|
||||
<A NAME="tex2html231"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html223"
|
||||
HREF="node13.html">
|
||||
<A NAME="tex2html227"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html219"
|
||||
<A NAME="tex2html221"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html225"
|
||||
<A NAME="tex2html229"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html228"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html224"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html220"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html226"
|
||||
<B> Next:</B> <A NAME="tex2html232"
|
||||
HREF="node15.html">Examples</A>
|
||||
<B> Up:</B> <A NAME="tex2html228"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html222"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> <A NAME="tex2html230"
|
||||
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="SECTION00070000000000000000"></A><A NAME="sec:started"></A>
|
||||
<BR>
|
||||
Examples
|
||||
</H2>
|
||||
Getting Started
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
The code reported in Figure <A HREF="#fig:ex_default">2</A> shows how to set and apply the default
|
||||
multi-level preconditioner available in the real double precision version
|
||||
of MLD2P4 (see Table <A HREF="#tab:precinit">1</A>). This preconditioner is chosen
|
||||
by simply specifying <code>'ML'</code> as second argument of <code>mld_precinit</code>
|
||||
(a call to <code>mld_precset</code> is not needed) and is applied with the BiCGSTAB
|
||||
solver provided by PSBLAS. As previously observed, the modules <code>psb_base_mod</code>,
|
||||
<code>mld_prec_mod</code> and <code>psb_krylov_mod</code> must be used by the example program.
|
||||
We describe the basics for building and applying MLD2P4 one-level and multi-level
|
||||
Schwarz preconditioners with the Krylov solvers included in PSBLAS [<A
|
||||
HREF="node25.html#PSBLASGUIDE">14</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>mld_precinit</code>, which also sets defaults for each preconditioner
|
||||
type selected by the user. The defaults associated to each preconditioner
|
||||
type are given in Table <A HREF="#tab:precinit">1</A>, where the strings used by
|
||||
<code>mld_precinit</code> to identify the preconditioner types are also given.
|
||||
Note that these strings are valid also if uppercase letters are substituted by
|
||||
corresponding lowercase ones.
|
||||
</LI>
|
||||
<LI><I>Modify the selected preconditioner type, by properly setting
|
||||
preconditioner parameters.</I> This is performed by the routine <code>mld_precset</code>.
|
||||
This routine must be called only if the user wants to modify the default values
|
||||
of the parameters associated to the selected preconditioner type, to obtain a variant
|
||||
of the preconditioner. Examples of use of <code>mld_precset</code> are given in
|
||||
Section <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_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
|
||||
</LI>
|
||||
<LI><I>Build the preconditioner for a given matrix.</I> This is performed by
|
||||
the routine <code>mld_precbld</code>.
|
||||
</LI>
|
||||
<LI><I>Apply the preconditioner at each iteration of a Krylov solver.</I>
|
||||
This is performed by the routine <code>mld_precaply</code>. When using the PSBLAS Krylov solvers,
|
||||
this step is completely transparent to the user, since <code>mld_precaply</code> is called
|
||||
by the PSBLAS routine implementing the Krylov solver (<code>psb_krylov</code>).
|
||||
</LI>
|
||||
<LI><I>Free the preconditioner data structure</I>. This is performed by
|
||||
the routine <code>mld_</code> <code>precfree</code>. This step is complementary to step 1 and should
|
||||
be performed when the preconditioner is no more used.
|
||||
</LI>
|
||||
</OL>
|
||||
A detailed description of the above routines is given in Section <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>.
|
||||
|
||||
<P>
|
||||
The part of the code concerning the
|
||||
reading and assembling of the sparse matrix and the right-hand side vector, performed
|
||||
through the PSBLAS routines for sparse matrix and vector management, is not reported
|
||||
here for brevity; the statements concerning the deallocation of the PSBLAS
|
||||
data structure are neglected too.
|
||||
The complete code can be found in the example program file <code>mld_dexample_ml.f90</code>,
|
||||
in the directory <code>examples/fileread</code> of the MLD2P4 tree (see
|
||||
Section <A HREF="node9.html#sec:ex_and_test">3.4</A>).
|
||||
For details on the use of the PSBLAS routines, see the PSBLAS User's
|
||||
Guide [<A
|
||||
HREF="node24.html#PSBLASGUIDE">14</A>].
|
||||
|
||||
<P>
|
||||
The setup and application of the default multi-level
|
||||
preconditioners for the real single precision and the complex, single and double
|
||||
precision, versions are obtained with straightforward modifications of the previous
|
||||
example (see Section <A HREF="node15.html#sec:userinterface">6</A> for details). If these versions are installed,
|
||||
the corresponding Fortran 95 codes are available in <code>examples/fileread/</code>.
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_default"></A><A NAME="926"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
|
||||
Setup and application of the default multi-level Schwarz preconditioner.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
use psb_base_mod
|
||||
use mld_prec_mod
|
||||
use psb_krylov_mod
|
||||
... ...
|
||||
!
|
||||
! sparse matrix
|
||||
type(psb_dspmat_type) :: A
|
||||
! sparse matrix descriptor
|
||||
type(psb_desc_type) :: desc_A
|
||||
! preconditioner
|
||||
type(mld_dprec_type) :: P
|
||||
! right-hand side and solution vectors
|
||||
real(kind(1.d0)) :: b(:), x(:)
|
||||
... ...
|
||||
!
|
||||
! initialize the parallel environment
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the matrix A and the right-hand side b
|
||||
! using PSBLAS routines for sparse matrix / vector management
|
||||
... ...
|
||||
!
|
||||
! initialize the default multi-level preconditioner, i.e. hybrid
|
||||
! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks)
|
||||
! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU
|
||||
! on the blocks) as distributed coarse-level solver
|
||||
call mld_precinit(P,'ML',info)
|
||||
!
|
||||
! build the preconditioner
|
||||
call mld_precbld(A,desc_A,P,info)
|
||||
!
|
||||
! set the solver parameters and the initial guess
|
||||
... ...
|
||||
!
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
... ...
|
||||
!
|
||||
! deallocate the preconditioner
|
||||
call mld_precfree(P,info)
|
||||
!
|
||||
! deallocate other data structures
|
||||
... ...
|
||||
!
|
||||
! exit the parallel environment
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
Different versions of multi-level preconditioners can be obtained by changing
|
||||
the default values of the preconditioner parameters. The code reported in
|
||||
Figure <A HREF="#fig:ex_3lh">3</A> shows how to set a three-level hybrid Schwarz
|
||||
preconditioner, which uses block Jacobi with ILU(0) on the
|
||||
local blocks as post-smoother, has a coarsest matrix replicated on the processors,
|
||||
and solves the coarsest-level system with the LU factorization from UMFPACK [<A
|
||||
HREF="node24.html#UMFPACK">8</A>].
|
||||
The number of levels is specified by using <code>mld_precinit</code>; the other
|
||||
preconditioner parameters are set by calling <code>mld_precset</code>. Note that
|
||||
the type of multilevel framework (i.e. multiplicative among the levels
|
||||
with post-smoothing only) is not specified since it is the default
|
||||
set by <code>mld_precinit</code>.
|
||||
|
||||
<P>
|
||||
Figure <A HREF="#fig:ex_3la">4</A> shows how to
|
||||
set a three-level additive Schwarz preconditioner,
|
||||
which uses RAS, with overlap 1 and ILU(0) on the blocks,
|
||||
as pre- and post-smoother, and applies five block-Jacobi sweeps, with
|
||||
the UMFPACK LU factorization on the blocks, as distributed coarsest-level
|
||||
solver. Again, <code>mld_precset</code> is used only to set
|
||||
non-default values of the parameters (see Tables <A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>).
|
||||
In both cases, the construction and the application of the preconditioner
|
||||
are carried out as for the default multi-level preconditioner.
|
||||
The code fragments shown in in Figures <A HREF="#fig:ex_3lh">3</A>-<A HREF="#fig:ex_3la">4</A> are
|
||||
included in the example program file <code>mld_dexample_ml.f90</code> too.
|
||||
|
||||
<P>
|
||||
Finally, Figure <A HREF="#fig:ex_1l">5</A> shows the setup of a one-level
|
||||
additive Schwarz preconditioner, i.e. RAS with overlap 2. The corresponding
|
||||
example program is available in <code>mld_dexample_</code> <code>1lev.f90</code>.
|
||||
|
||||
<P>
|
||||
For all the previous preconditioners, example programs where the sparse matrix and
|
||||
the right-hand side are generated by discretizing a PDE with Dirichlet
|
||||
boundary conditions are also available in the directory <code>examples/pdegen</code>.
|
||||
Note that the Fortran 95 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>).
|
||||
|
||||
<P>
|
||||
|
||||
<BR><B>Remark 3.</B> Any PSBLAS-based program using the basic preconditioners
|
||||
implemented in PSBLAS 2.0, i.e. the diagonal and block-Jacobi ones,
|
||||
can use the diagonal and block-Jacobi preconditioners
|
||||
implemented in MLD2P4 without any change in the code.
|
||||
The PSBLAS-based program must be only recompiled
|
||||
and linked to the MLD2P4 library.
|
||||
<BR><B>Remark 1.</B> The coarsest-level solver used by the default two-level
|
||||
preconditioner has been chosen by taking into account that, on parallel
|
||||
machines, it often leads to the smallest execution time when applied to
|
||||
linear systems coming from finite-difference discretizations of basic
|
||||
elliptic PDE problems, considered as standard tests for multi-level Schwarz
|
||||
preconditioners [<A
|
||||
HREF="node25.html#aaecc_07">3</A>,<A
|
||||
HREF="node25.html#apnum_07">4</A>]. However, this solver does
|
||||
not necessarily correspond to the smallest number of iterations of the
|
||||
preconditioned Krylov method, which is usually obtained by applying
|
||||
a direct solver to the coarsest-level system, e.g. based on the LU
|
||||
factorization (see Section <A HREF="node16.html#sec:userinterface">6</A>
|
||||
for the coarsest-level solvers available in MLD2P4).
|
||||
|
||||
<P>
|
||||
|
||||
<BR><B>Remark 2.</B> The include path for MLD2P4 must override
|
||||
those for PSBLAS, e.g. the latter must come first in the sequence
|
||||
passed to the compiler, as the MLD2P4 version of the Krylov solver
|
||||
interfaces must override that of PSBLAS. This will change in the future
|
||||
when the support for the <code>class</code> statement becomes widespread in Fortran
|
||||
compilers.
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="923"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 1:</STRONG>
|
||||
Preconditioner types, corresponding strings and default choices.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><SMALL>TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>STRING</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221><SMALL>DEFAULT PRECONDITIONER</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">No preconditioner</TD>
|
||||
<TD ALIGN="LEFT"><code>'NOPREC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Considered only to use the PSBLAS
|
||||
Krylov solvers with no preconditioner.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Diagonal</TD>
|
||||
<TD ALIGN="LEFT"><code>'DIAG'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>--</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Block Jacobi</TD>
|
||||
<TD ALIGN="LEFT"><code>'BJAC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Block Jacobi with ILU(0) on the local blocks.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Additive Schwarz</TD>
|
||||
<TD ALIGN="LEFT"><code>'AS'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Restricted Additive Schwarz (RAS),
|
||||
with overlap 1 and ILU(0) on the local blocks.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Multilevel</TD>
|
||||
<TD ALIGN="LEFT"><code>'ML'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=221>Multi-level hybrid preconditioner (additive on the
|
||||
same level and multiplicative through the levels),
|
||||
with post-smoothing only.
|
||||
Number of levels: 2.
|
||||
Post-smoother: RAS with overlap 1 and ILU(0)
|
||||
on the local blocks.
|
||||
Aggregation: decoupled smoothed aggregation with
|
||||
threshold <IMG
|
||||
WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img86.png"
|
||||
ALT="$\theta = 0$">.
|
||||
Coarsest matrix: distributed among the processors.
|
||||
Coarsest-level solver:
|
||||
4 sweeps of the block-Jacobi solver,
|
||||
with LU (or ILU) factorization of the blocks
|
||||
(UMFPACK for the double precision versions and
|
||||
SuperLU for the single precision ones, if the packages
|
||||
have been installed; ILU(0), otherwise).</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_3lh"></A><A NAME="928"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
|
||||
Setup of a hybrid three-level Schwarz preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! set a three-level hybrid Schwarz preconditioner, which uses
|
||||
! block Jacobi (with ILU(0) on the blocks) as post-smoother,
|
||||
! a coarsest matrix replicated on the processors, and the
|
||||
! LU factorization from UMFPACK as coarse-level solver
|
||||
call mld_precinit(P,'ML',info,nlev=3)
|
||||
call_mld_precset(P,mld_smoother_type_,'BJAC',info)
|
||||
call mld_precset(P,mld_coarse_mat_,'REPL',info)
|
||||
call mld_precset(P,mld_coarse_solve_,'UMF',info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_3la"></A><A NAME="930"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
|
||||
Setup of an additive three-level Schwarz preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! set a three-level additive Schwarz preconditioner, which uses
|
||||
! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and
|
||||
! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU
|
||||
! on the blocks) as distributed coarsest-level solver
|
||||
call mld_precinit(P,'ML',info,nlev=3)
|
||||
call mld_precset(P,mld_ml_type_,'ADD',info)
|
||||
call_mld_precset(P,mld_smoother_pos_,'TWOSIDE',info)
|
||||
call mld_precset(P,mld_coarse_sweeps_,5,info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_1l"></A><A NAME="932"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
|
||||
Setup of a one-level Schwarz preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! set RAS with overlap 2 and ILU(0) on the local blocks
|
||||
call mld_precinit(P,'AS',info)
|
||||
call mld_precset(P,mld_sub_ovr_,2,info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html233"
|
||||
HREF="node15.html">Examples</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html227"
|
||||
<A NAME="tex2html231"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html223"
|
||||
HREF="node13.html">
|
||||
<A NAME="tex2html227"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html219"
|
||||
<A NAME="tex2html221"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html225"
|
||||
<A NAME="tex2html229"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html228"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html224"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html220"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html226"
|
||||
<B> Next:</B> <A NAME="tex2html232"
|
||||
HREF="node15.html">Examples</A>
|
||||
<B> Up:</B> <A NAME="tex2html228"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html222"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> <A NAME="tex2html230"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+259
-97
@@ -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>Examples</TITLE>
|
||||
<META NAME="description" CONTENT="Examples">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,147 +18,309 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node22.html">
|
||||
<LINK REL="previous" HREF="node13.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="previous" HREF="node14.html">
|
||||
<LINK REL="up" HREF="node14.html">
|
||||
<LINK REL="next" HREF="node16.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html239"
|
||||
<A NAME="tex2html242"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html235"
|
||||
HREF="userhtml.html">
|
||||
<A NAME="tex2html238"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html229"
|
||||
<A NAME="tex2html234"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html237"
|
||||
<A NAME="tex2html240"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html240"
|
||||
HREF="node16.html">Subroutine mld_precinit</A>
|
||||
<B> Up:</B> <A NAME="tex2html236"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html230"
|
||||
HREF="node14.html">Examples</A>
|
||||
<B> <A NAME="tex2html238"
|
||||
<B> Next:</B> <A NAME="tex2html243"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html239"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html235"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html241"
|
||||
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="SECTION00071000000000000000"></A><A NAME="sec:examples"></A>
|
||||
<BR>
|
||||
User Interface
|
||||
</H1>
|
||||
Examples
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
The basic user interface of MLD2P4 consists of six routines. The four routines <code>mld_</code> <code>precinit</code>,
|
||||
<code>mld_precset</code>, <code>mld_precbld</code> and <code>mld_precaply</code> encapsulate all the functionalities
|
||||
for the setup and the application of any one-level and multi-level
|
||||
preconditioner implemented in the package.
|
||||
The routine <code>mld_precfree</code> deallocates the preconditioner data structure, while
|
||||
<code>mld_precdescr</code> prints a description of the preconditioner setup by the user.
|
||||
The code reported in Figure <A HREF="#fig:ex_default">2</A> shows how to set and apply the default
|
||||
multi-level preconditioner available in the real double precision version
|
||||
of MLD2P4 (see Table <A HREF="#tab:precinit">1</A>). This preconditioner is chosen
|
||||
by simply specifying <code>'ML'</code> as second argument of <code>mld_precinit</code>
|
||||
(a call to <code>mld_precset</code> is not needed) and is applied with the BiCGSTAB
|
||||
solver provided by PSBLAS. As previously observed, the modules <code>psb_base_mod</code>,
|
||||
<code>mld_prec_mod</code> and <code>psb_krylov_mod</code> must be used by the example program.
|
||||
|
||||
<P>
|
||||
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.
|
||||
The part of the code concerning the
|
||||
reading and assembling of the sparse matrix and the right-hand side vector, performed
|
||||
through the PSBLAS routines for sparse matrix and vector management, is not reported
|
||||
here for brevity; the statements concerning the deallocation of the PSBLAS
|
||||
data structure are neglected too.
|
||||
The complete code can be found in the example program file <code>mld_dexample_ml.f90</code>,
|
||||
in the directory <code>examples/fileread</code> of the MLD2P4 tree (see
|
||||
Section <A HREF="node10.html#sec:ex_and_test">3.5</A>).
|
||||
For details on the use of the PSBLAS routines, see the PSBLAS User's
|
||||
Guide [<A
|
||||
HREF="node25.html#PSBLASGUIDE">14</A>].
|
||||
|
||||
<UL>
|
||||
<LI>the sparse matrix data structure, containing the matrix to be
|
||||
preconditioned, must be of type <code>mld_</code><I>x</I><code>spmat_type</code>
|
||||
with <I>x</I> = <code>s</code> for real single precision, <I>x</I> = <code>d</code>
|
||||
for real double precision, <I>x</I> = <code>c</code> for complex single precision,
|
||||
<I>x</I> = <code>z</code> for complex double precision;
|
||||
</LI>
|
||||
<LI>the preconditioner data structure must be of type
|
||||
<code>mld_</code><I>x</I><code>prec_type</code>, with <I>x</I> =
|
||||
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, according to the sparse
|
||||
matrix data structure;
|
||||
</LI>
|
||||
<LI>the arrays containing the vectors <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> and <IMG
|
||||
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img87.png"
|
||||
ALT="$w$"> involved in
|
||||
the preconditioner application <IMG
|
||||
WIDTH="87" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$w=M^{-1}v$"> must be of type
|
||||
<I>type</I><code>(</code><I>kind_parameter</I><code>)</code>, with <I>type</I> =
|
||||
<code>real</code>, <code>complex</code> and <I>kind_parameter</I> = <code>kind(1.e0)</code>,
|
||||
<code>kind(1.d0)</code>, according to the sparse matrix and preconditioner
|
||||
data structure; note that the PSBLAS module <code>psb_base_mod</code>
|
||||
provides the constants <code>psb_spk_</code>
|
||||
= <code>kind(1.e0)</code> and <code>psb_dpk_</code> = <code>kind(1.d0)</code>;
|
||||
</LI>
|
||||
<LI>real parameters defining the preconditioner must be declared
|
||||
according to the precision of the sparse matrix and preconditioner
|
||||
data structures (see Section <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>
|
||||
The setup and application of the default multi-level
|
||||
preconditioners for the real single precision and the complex, single and double
|
||||
precision, versions are obtained with straightforward modifications of the previous
|
||||
example (see Section <A HREF="node16.html#sec:userinterface">6</A> for details). If these versions are installed,
|
||||
the corresponding Fortran 95 codes are available in <code>examples/fileread/</code>.
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_default"></A><A NAME="926"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
|
||||
Setup and application of the default multi-level Schwarz preconditioner.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
use psb_base_mod
|
||||
use mld_prec_mod
|
||||
use psb_krylov_mod
|
||||
... ...
|
||||
!
|
||||
! sparse matrix
|
||||
type(psb_dspmat_type) :: A
|
||||
! sparse matrix descriptor
|
||||
type(psb_desc_type) :: desc_A
|
||||
! preconditioner
|
||||
type(mld_dprec_type) :: P
|
||||
! right-hand side and solution vectors
|
||||
real(kind(1.d0)) :: b(:), x(:)
|
||||
... ...
|
||||
!
|
||||
! initialize the parallel environment
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the matrix A and the right-hand side b
|
||||
! using PSBLAS routines for sparse matrix / vector management
|
||||
... ...
|
||||
!
|
||||
! initialize the default multi-level preconditioner, i.e. hybrid
|
||||
! Schwarz, using RAS (with overlap 1 and ILU(0) on the blocks)
|
||||
! as post-smoother and 4 block-Jacobi sweeps (with UMFPACK LU
|
||||
! on the blocks) as distributed coarse-level solver
|
||||
call mld_precinit(P,'ML',info)
|
||||
!
|
||||
! build the preconditioner
|
||||
call mld_precbld(A,desc_A,P,info)
|
||||
!
|
||||
! set the solver parameters and the initial guess
|
||||
... ...
|
||||
!
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
... ...
|
||||
!
|
||||
! deallocate the preconditioner
|
||||
call mld_precfree(P,info)
|
||||
!
|
||||
! deallocate other data structures
|
||||
... ...
|
||||
!
|
||||
! exit the parallel environment
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html241"
|
||||
HREF="node16.html">Subroutine mld_precinit</A>
|
||||
<LI><A NAME="tex2html242"
|
||||
HREF="node17.html">Subroutine mld_precset</A>
|
||||
<LI><A NAME="tex2html243"
|
||||
HREF="node18.html">Subroutine mld_precbld</A>
|
||||
<LI><A NAME="tex2html244"
|
||||
HREF="node19.html">Subroutine mld_precaply</A>
|
||||
<LI><A NAME="tex2html245"
|
||||
HREF="node20.html">Subroutine mld_precfree</A>
|
||||
<LI><A NAME="tex2html246"
|
||||
HREF="node21.html">Subroutine mld_precdescr</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
Different versions of multi-level preconditioners can be obtained by changing
|
||||
the default values of the preconditioner parameters. The code reported in
|
||||
Figure <A HREF="#fig:ex_3lh">3</A> shows how to set a three-level hybrid Schwarz
|
||||
preconditioner, which uses block Jacobi with ILU(0) on the
|
||||
local blocks as post-smoother, has a coarsest matrix replicated on the processors,
|
||||
and solves the coarsest-level system with the LU factorization from UMFPACK [<A
|
||||
HREF="node25.html#UMFPACK">8</A>].
|
||||
The number of levels is specified by using <code>mld_precinit</code>; the other
|
||||
preconditioner parameters are set by calling <code>mld_precset</code>. Note that
|
||||
the type of multilevel framework (i.e. multiplicative among the levels
|
||||
with post-smoothing only) is not specified since it is the default
|
||||
set by <code>mld_precinit</code>.
|
||||
|
||||
<P>
|
||||
Figure <A HREF="#fig:ex_3la">4</A> shows how to
|
||||
set a three-level additive Schwarz preconditioner,
|
||||
which uses RAS, with overlap 1 and ILU(0) on the blocks,
|
||||
as pre- and post-smoother, and applies five block-Jacobi sweeps, with
|
||||
the UMFPACK LU factorization on the blocks, as distributed coarsest-level
|
||||
solver. Again, <code>mld_precset</code> is used only to set
|
||||
non-default values of the parameters (see Tables <A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>).
|
||||
In both cases, the construction and the application of the preconditioner
|
||||
are carried out as for the default multi-level preconditioner.
|
||||
The code fragments shown in in Figures <A HREF="#fig:ex_3lh">3</A>-<A HREF="#fig:ex_3la">4</A> are
|
||||
included in the example program file <code>mld_dexample_ml.f90</code> too.
|
||||
|
||||
<P>
|
||||
Finally, Figure <A HREF="#fig:ex_1l">5</A> shows the setup of a one-level
|
||||
additive Schwarz preconditioner, i.e. RAS with overlap 2. The corresponding
|
||||
example program is available in <code>mld_dexample_</code> <code>1lev.f90</code>.
|
||||
|
||||
<P>
|
||||
For all the previous preconditioners, example programs where the sparse matrix and
|
||||
the right-hand side are generated by discretizing a PDE with Dirichlet
|
||||
boundary conditions are also available in the directory <code>examples/pdegen</code>.
|
||||
|
||||
<P>
|
||||
|
||||
<BR><B>Remark 3.</B> Any PSBLAS-based program using the basic preconditioners
|
||||
implemented in PSBLAS 2.0, i.e. the diagonal and block-Jacobi ones,
|
||||
can use the diagonal and block-Jacobi preconditioners
|
||||
implemented in MLD2P4 without any change in the code.
|
||||
The PSBLAS-based program must be only recompiled
|
||||
and linked to the MLD2P4 library.
|
||||
|
||||
<BR>
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_3lh"></A><A NAME="928"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
|
||||
Setup of a hybrid three-level Schwarz preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! set a three-level hybrid Schwarz preconditioner, which uses
|
||||
! block Jacobi (with ILU(0) on the blocks) as post-smoother,
|
||||
! a coarsest matrix replicated on the processors, and the
|
||||
! LU factorization from UMFPACK as coarse-level solver
|
||||
call mld_precinit(P,'ML',info,nlev=3)
|
||||
call_mld_precset(P,mld_smoother_type_,'BJAC',info)
|
||||
call mld_precset(P,mld_coarse_mat_,'REPL',info)
|
||||
call mld_precset(P,mld_coarse_solve_,'UMF',info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_3la"></A><A NAME="930"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
|
||||
Setup of an additive three-level Schwarz preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! set a three-level additive Schwarz preconditioner, which uses
|
||||
! RAS (with overlap 1 and ILU(0) on the blocks) as pre- and
|
||||
! post-smoother, and 5 block-Jacobi sweeps (with UMFPACK LU
|
||||
! on the blocks) as distributed coarsest-level solver
|
||||
call mld_precinit(P,'ML',info,nlev=3)
|
||||
call mld_precset(P,mld_ml_type_,'ADD',info)
|
||||
call_mld_precset(P,mld_smoother_pos_,'TWOSIDE',info)
|
||||
call mld_precset(P,mld_coarse_sweeps_,5,info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex_1l"></A><A NAME="932"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
|
||||
Setup of a one-level Schwarz preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! set RAS with overlap 2 and ILU(0) on the local blocks
|
||||
call mld_precinit(P,'AS',info)
|
||||
call mld_precset(P,mld_sub_ovr_,2,info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html239"
|
||||
<A NAME="tex2html242"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html235"
|
||||
HREF="userhtml.html">
|
||||
<A NAME="tex2html238"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html229"
|
||||
<A NAME="tex2html234"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html237"
|
||||
<A NAME="tex2html240"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html240"
|
||||
HREF="node16.html">Subroutine mld_precinit</A>
|
||||
<B> Up:</B> <A NAME="tex2html236"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html230"
|
||||
HREF="node14.html">Examples</A>
|
||||
<B> <A NAME="tex2html238"
|
||||
<B> Next:</B> <A NAME="tex2html243"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html239"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html235"
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html241"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+97
-77
@@ -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 mld_precinit</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precinit">
|
||||
<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,127 +18,147 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node17.html">
|
||||
<LINK REL="previous" HREF="node15.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="next" HREF="node23.html">
|
||||
<LINK REL="previous" HREF="node14.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node17.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html257"
|
||||
<A NAME="tex2html254"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html253"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html250"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html247"
|
||||
<A NAME="tex2html244"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html255"
|
||||
<A NAME="tex2html252"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html258"
|
||||
HREF="node17.html">Subroutine mld_precset</A>
|
||||
<B> Up:</B> <A NAME="tex2html254"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html248"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> <A NAME="tex2html256"
|
||||
<B> Next:</B> <A NAME="tex2html255"
|
||||
HREF="node17.html">Subroutine mld_precinit</A>
|
||||
<B> Up:</B> <A NAME="tex2html251"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html245"
|
||||
HREF="node15.html">Examples</A>
|
||||
<B> <A NAME="tex2html253"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00081000000000000000"></A><A NAME="sec:precinit"></A>
|
||||
<H1><A NAME="SECTION00080000000000000000"></A><A NAME="sec:userinterface"></A>
|
||||
<BR>
|
||||
Subroutine mld_precinit
|
||||
</H2>
|
||||
User Interface
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>mld_precinit(p,ptype,info)</code>
|
||||
<BR><code>mld_precinit(p,ptype,info,nlev)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
The basic user interface of MLD2P4 consists of six routines. The four routines <code>mld_</code> <code>precinit</code>,
|
||||
<code>mld_precset</code>, <code>mld_precbld</code> and <code>mld_precaply</code> encapsulate all the functionalities
|
||||
for the setup and the application of any one-level and multi-level
|
||||
preconditioner implemented in the package.
|
||||
The routine <code>mld_precfree</code> deallocates the preconditioner data structure, while
|
||||
<code>mld_precdescr</code> prints a description of the preconditioner setup by the user.
|
||||
|
||||
<P>
|
||||
This routine allocates and initializes the preconditioner data structure,
|
||||
according to the preconditioner type chosen by the user.
|
||||
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>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I>
|
||||
must be chosen according to the real/complex, single/double
|
||||
precision version of MLD2P4 under use.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>ptype</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=*), intent(in)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </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="node22.html#sec:errors">7</A> for details.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>nlev</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, optional, intent(in)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The number of levels of the multilevel preconditioner.
|
||||
If <code>nlev</code> is not present and <code>ptype</code>=<code>'ML'</code>, <code>'ml'</code>,
|
||||
then <code>nlev</code>=2 is assumed. Otherwise, <code>nlev</code> is ignored.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<UL>
|
||||
<LI>the sparse matrix data structure, containing the matrix to be
|
||||
preconditioned, must be of type <code>mld_</code><I>x</I><code>spmat_type</code>
|
||||
with <I>x</I> = <code>s</code> for real single precision, <I>x</I> = <code>d</code>
|
||||
for real double precision, <I>x</I> = <code>c</code> for complex single precision,
|
||||
<I>x</I> = <code>z</code> for complex double precision;
|
||||
</LI>
|
||||
<LI>the preconditioner data structure must be of type
|
||||
<code>mld_</code><I>x</I><code>prec_type</code>, with <I>x</I> =
|
||||
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, according to the sparse
|
||||
matrix data structure;
|
||||
</LI>
|
||||
<LI>the arrays containing the vectors <IMG
|
||||
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$v$"> and <IMG
|
||||
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img87.png"
|
||||
ALT="$w$"> involved in
|
||||
the preconditioner application <IMG
|
||||
WIDTH="87" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$w=M^{-1}v$"> must be of type
|
||||
<I>type</I><code>(</code><I>kind_parameter</I><code>)</code>, with <I>type</I> =
|
||||
<code>real</code>, <code>complex</code> and <I>kind_parameter</I> = <code>kind(1.e0)</code>,
|
||||
<code>kind(1.d0)</code>, according to the sparse matrix and preconditioner
|
||||
data structure; note that the PSBLAS module <code>psb_base_mod</code>
|
||||
provides the constants <code>psb_spk_</code>
|
||||
= <code>kind(1.e0)</code> and <code>psb_dpk_</code> = <code>kind(1.d0)</code>;
|
||||
</LI>
|
||||
<LI>real parameters defining the preconditioner must be declared
|
||||
according to the precision of the sparse matrix and preconditioner
|
||||
data structures (see Section <A HREF="node18.html#sec:precset">6.2</A>).
|
||||
</LI>
|
||||
</UL>
|
||||
A description of each routine is given in the remainder of this section.
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html256"
|
||||
HREF="node17.html">Subroutine mld_precinit</A>
|
||||
<LI><A NAME="tex2html257"
|
||||
HREF="node18.html">Subroutine mld_precset</A>
|
||||
<LI><A NAME="tex2html258"
|
||||
HREF="node19.html">Subroutine mld_precbld</A>
|
||||
<LI><A NAME="tex2html259"
|
||||
HREF="node20.html">Subroutine mld_precaply</A>
|
||||
<LI><A NAME="tex2html260"
|
||||
HREF="node21.html">Subroutine mld_precfree</A>
|
||||
<LI><A NAME="tex2html261"
|
||||
HREF="node22.html">Subroutine mld_precdescr</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html257"
|
||||
<A NAME="tex2html254"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html253"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html250"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html247"
|
||||
<A NAME="tex2html244"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html255"
|
||||
<A NAME="tex2html252"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html258"
|
||||
HREF="node17.html">Subroutine mld_precset</A>
|
||||
<B> Up:</B> <A NAME="tex2html254"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html248"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> <A NAME="tex2html256"
|
||||
<B> Next:</B> <A NAME="tex2html255"
|
||||
HREF="node17.html">Subroutine mld_precinit</A>
|
||||
<B> Up:</B> <A NAME="tex2html251"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html245"
|
||||
HREF="node15.html">Examples</A>
|
||||
<B> <A NAME="tex2html253"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+50
-410
@@ -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 mld_precset</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precset">
|
||||
<TITLE>Subroutine mld_precinit</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precinit">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,56 +20,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node18.html">
|
||||
<LINK REL="previous" HREF="node16.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="next" HREF="node18.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html269"
|
||||
<A NAME="tex2html272"
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html265"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html268"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html259"
|
||||
<A NAME="tex2html262"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html267"
|
||||
<A NAME="tex2html270"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html270"
|
||||
HREF="node18.html">Subroutine mld_precbld</A>
|
||||
<B> Up:</B> <A NAME="tex2html266"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html260"
|
||||
HREF="node16.html">Subroutine mld_precinit</A>
|
||||
<B> <A NAME="tex2html268"
|
||||
<B> Next:</B> <A NAME="tex2html273"
|
||||
HREF="node18.html">Subroutine mld_precset</A>
|
||||
<B> Up:</B> <A NAME="tex2html269"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html263"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> <A NAME="tex2html271"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00082000000000000000"></A><A NAME="sec:precset"></A>
|
||||
<H2><A NAME="SECTION00081000000000000000"></A><A NAME="sec:precinit"></A>
|
||||
<BR>
|
||||
Subroutine mld_precset
|
||||
Subroutine mld_precinit
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>mld_precset(p,what,val,info)</code>
|
||||
<code>mld_precinit(p,ptype,info)</code>
|
||||
<BR><code>mld_precinit(p,ptype,info,nlev)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine sets the parameters defining the preconditioner. More
|
||||
precisely, the parameter identified by <code>what</code> is assigned the value
|
||||
contained in <code>val</code>.
|
||||
This routine allocates and initializes the preconditioner data structure,
|
||||
according to the preconditioner type chosen by the user.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
@@ -80,425 +80,65 @@ contained in <code>val</code>.
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must
|
||||
be chosen according to the real/complex, single/double precision
|
||||
version of MLD2P4 under use.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I>
|
||||
must be chosen according to the real/complex, single/double
|
||||
precision version of MLD2P4 under use.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>what</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(in)</code>.</TD>
|
||||
<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 number identifying the parameter to be set.
|
||||
A mnemonic constant has been associated to each of these
|
||||
numbers, as reported in Tables <A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>val </code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer</code> <I>or</I> <code>character(len=*)</code> <I>or</I>
|
||||
<code>real(psb_spk_)</code> <I>or</I> <code>real(psb_dpk_)</code>,
|
||||
<code>intent(in)</code>.</TD>
|
||||
<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>The value of the parameter to be set. The list of allowed
|
||||
values and the corresponding data types is given in
|
||||
Tables <A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
|
||||
When the value is of type <code>character(len=*)</code>,
|
||||
it is also treated as case insensitive.</TD>
|
||||
<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="node22.html#sec:errors">7</A>
|
||||
for details.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node23.html#sec:errors">7</A> for details.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>nlev</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, optional, intent(in)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The number of levels of the multilevel preconditioner.
|
||||
If <code>nlev</code> is not present and <code>ptype</code>=<code>'ML'</code>, <code>'ml'</code>,
|
||||
then <code>nlev</code>=2 is assumed. Otherwise, <code>nlev</code> is ignored.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<BR>
|
||||
A variety of (one-level and multi-level) preconditioners can be obtained
|
||||
by a suitable setting of the preconditioner parameters. These parameters
|
||||
can be logically divided into four groups, i.e. parameters defining
|
||||
|
||||
<OL>
|
||||
<LI>the type of multi-level preconditioner;
|
||||
</LI>
|
||||
<LI>the one-level preconditioner used as smoother;
|
||||
</LI>
|
||||
<LI>the aggregation algorithm;
|
||||
</LI>
|
||||
<LI>the coarse-space correction at the coarsest level.
|
||||
</LI>
|
||||
</OL>
|
||||
A list of the parameters that can be set, along with their allowed and
|
||||
default values, is given in Tables <A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
|
||||
For a detailed description of the meaning of the parameters, please
|
||||
refer to Section <A HREF="node10.html#sec:background">4</A>.
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1246"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 2:</STRONG>
|
||||
Parameters defining the type of multi-level preconditioner.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><code>val</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_ml_type_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'ADD'</TT> <TT>'MULT'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'MULT'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Basic multi-level framework: additive or multiplicative
|
||||
among the levels (always additive inside a level).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_smoother_type_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'DIAG'</TT> <TT>'BJAC'</TT> <TT>'AS'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'AS'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Basic one-level preconditioner (i.e. smoother): diagonal,
|
||||
block Jacobi, AS.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_smoother_pos_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'PRE'</TT> <TT>'POST'</TT> <TT>'TWOSIDE'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'POST'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>``Position'' of the smoother: pre-smoother, post-smoother,
|
||||
pre- and post-smoother.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1248"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 3:</STRONG>
|
||||
Parameters defining the one-level preconditioner used as smoother.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><code>val</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_ovr_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>any int. num. <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT">1</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of overlap layers.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_restr_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'HALO'</TT> <TT>'NONE'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'HALO'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of restriction operator:
|
||||
<TT>'HALO'</TT> for taking into account the overlap, <TT>'NONE'</TT>
|
||||
for neglecting it.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_prol_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'SUM'</TT> <TT>'NONE'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'NONE'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of prolongation operator:
|
||||
<TT>'SUM'</TT> for adding the contributions from the overlap, <TT>'NONE'</TT>
|
||||
for neglecting them.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_solve_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'ILU'</TT> <TT>'MILU'</TT> <TT>'ILUT'</TT>
|
||||
<TT>'UMF'</TT> <TT>'SLU'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'UMF'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Local solver: ILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">), MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">), ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p,t$">), LU from UMFPACK, LU from SuperLU
|
||||
(plus triangular solve).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_fillin_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any int. num. <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT">0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$"> of the incomplete LU factorizations.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_iluthrs_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any real num. <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT">0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG
|
||||
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img89.png"
|
||||
ALT="$t$"> in the ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p,t$">) factorization.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_ren_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'RENUM_NONE'</TT> <TT>'RENUM_GLOBAL'</TT> </TD>
|
||||
<TD ALIGN="LEFT"><TT>'RENUM_NONE'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Row and column reordering of the local submatrices: no reordering,
|
||||
reordering according to the global numbering of the rows and columns of
|
||||
the whole matrix.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1250"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 4:</STRONG>
|
||||
Parameters defining the aggregation algorithm.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><code>val</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_aggr_alg_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'DEC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'DEC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Aggregation algorithm. Currently, only the decoupled aggregation is available.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_aggr_kind_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'SMOOTH'</TT> <TT>'RAW'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'SMOOTH'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of aggregation: smoothed, raw (i.e. using the tentative prolongator).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_aggr_thresh_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any real num. <IMG
|
||||
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img90.png"
|
||||
ALT="$\in [0, 1]$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74>0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Threshold <IMG
|
||||
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img91.png"
|
||||
ALT="$\theta$"> in the aggregation algorithm.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_aggr_eig_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'A_NORMI'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'A_NORMI'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Estimate of the eigenvalue <IMG
|
||||
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img85.png"
|
||||
ALT="$D^{-1}A$"> with largest modulus,
|
||||
to build the damping parameter <IMG
|
||||
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\omega$"> in the smoothed aggregation.
|
||||
Currently, only the infinity norm of
|
||||
the matrix is available.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_aggr_damp_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any real num.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><!-- MATH
|
||||
$4/(3||D^{-1}A||_\infty)$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="124" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img92.png"
|
||||
ALT="$4/(3\vert\vert D^{-1}A\vert\vert _\infty)$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Damping parameter <IMG
|
||||
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\omega$"> in the smoothed aggregation algorithm.
|
||||
If the user specifies a negative value, then <IMG
|
||||
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\omega$">
|
||||
is set to its default value;
|
||||
otherwise, <IMG
|
||||
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\omega$"> is set to the value provided by the
|
||||
user. In the latter case no estimate of the eigenvalue of
|
||||
<IMG
|
||||
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img85.png"
|
||||
ALT="$D^{-1}A$"> with largest modulus is computed.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1252"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 5:</STRONG>
|
||||
Parameters defining the coarse-space correction at the coarsest
|
||||
level.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><code>val</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_mat_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'DISTR'</TT> <TT>'REPL'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'DISTR'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Coarsest matrix: distributed among the processors or
|
||||
replicated on each of them.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_solve_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'BJAC'</TT> <TT>'UMF'</TT>
|
||||
<TT>'SLU'</TT> <TT>'SLUDIST'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'BJAC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Solver used at the coarsest level: block Jacobi, sequential
|
||||
LU from UMFPACK, sequential LU from SuperLU,
|
||||
distributed LU from SuperLU_Dist.
|
||||
<TT>'BJAC'</TT> and <TT>'SLUDIST'</TT> require the coarsest
|
||||
matrix to be distributed, while <TT>'UMF'</TT> and
|
||||
<TT>'SLU'</TT> require it to be replicated.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_subsolve_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'ILU'</TT> <TT>'MILU'</TT>
|
||||
<TT>'ILUT'</TT>
|
||||
<TT>'UMF'</TT> <TT>'SLU'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'UMF'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Solver for the diagonal blocks of the coarse matrix,
|
||||
in case the block Jacobi solver
|
||||
is chosen as coarsest-level solver: ILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">), MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">),
|
||||
ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p,t$">), LU from UMFPACK,
|
||||
LU from SuperLU, plus triangular solve.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_sweeps_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any int. num. <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img93.png"
|
||||
ALT="$> 0$"></TD>
|
||||
<TD ALIGN="LEFT">4</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of Block-Jacobi sweeps when 'BJAC' is used as
|
||||
coarsest-level solver.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_fillin_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any int. num. <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT">0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$"> of the incomplete LU factorizations.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_iluthrs_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any real. num. <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT">0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG
|
||||
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img89.png"
|
||||
ALT="$t$"> in the ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p,t$">) factorization.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html269"
|
||||
<A NAME="tex2html272"
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html265"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html268"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html259"
|
||||
<A NAME="tex2html262"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html267"
|
||||
<A NAME="tex2html270"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html270"
|
||||
HREF="node18.html">Subroutine mld_precbld</A>
|
||||
<B> Up:</B> <A NAME="tex2html266"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html260"
|
||||
HREF="node16.html">Subroutine mld_precinit</A>
|
||||
<B> <A NAME="tex2html268"
|
||||
<B> Next:</B> <A NAME="tex2html273"
|
||||
HREF="node18.html">Subroutine mld_precset</A>
|
||||
<B> Up:</B> <A NAME="tex2html269"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html263"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> <A NAME="tex2html271"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+416
-54
@@ -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 mld_precbld</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precbld">
|
||||
<TITLE>Subroutine mld_precset</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precset">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,123 +20,485 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node19.html">
|
||||
<LINK REL="previous" HREF="node17.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="next" HREF="node19.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html281"
|
||||
<A NAME="tex2html284"
|
||||
HREF="node19.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html277"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html280"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html271"
|
||||
<A NAME="tex2html274"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html279"
|
||||
<A NAME="tex2html282"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html282"
|
||||
HREF="node19.html">Subroutine mld_precaply</A>
|
||||
<B> Up:</B> <A NAME="tex2html278"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html272"
|
||||
HREF="node17.html">Subroutine mld_precset</A>
|
||||
<B> <A NAME="tex2html280"
|
||||
<B> Next:</B> <A NAME="tex2html285"
|
||||
HREF="node19.html">Subroutine mld_precbld</A>
|
||||
<B> Up:</B> <A NAME="tex2html281"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html275"
|
||||
HREF="node17.html">Subroutine mld_precinit</A>
|
||||
<B> <A NAME="tex2html283"
|
||||
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="SECTION00082000000000000000"></A><A NAME="sec:precset"></A>
|
||||
<BR>
|
||||
Subroutine mld_precbld
|
||||
Subroutine mld_precset
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>mld_precbld(a,desc_a,p,info)</code>
|
||||
<code>mld_precset(p,what,val,info)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine builds the preconditioner according to the requirements made by
|
||||
the user through the routines <code>mld_precinit</code> and <code>mld_precset</code>.
|
||||
This routine sets the parameters defining the preconditioner. More
|
||||
precisely, the parameter identified by <code>what</code> is assigned the value
|
||||
contained in <code>val</code>.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>a</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>.</TD>
|
||||
</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="node24.html#PSBLASGUIDE">14</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>
|
||||
</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="node24.html#PSBLASGUIDE">14</A>].</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must
|
||||
be chosen according to the real/complex, single/double precision
|
||||
version of MLD2P4 under use.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>what</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(in)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The number identifying the parameter to be set.
|
||||
A mnemonic constant has been associated to each of these
|
||||
numbers, as reported in Tables <A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>val </code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer</code> <I>or</I> <code>character(len=*)</code> <I>or</I>
|
||||
<code>real(psb_spk_)</code> <I>or</I> <code>real(psb_dpk_)</code>,
|
||||
<code>intent(in)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The value of the parameter to be set. The list of allowed
|
||||
values and the corresponding data types is given in
|
||||
Tables <A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
|
||||
When the value is of type <code>character(len=*)</code>,
|
||||
it is also treated as case insensitive.</TD>
|
||||
</TR>
|
||||
<TR><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="node22.html#sec:errors">7</A> for details.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node23.html#sec:errors">7</A>
|
||||
for details.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<BR>
|
||||
A variety of (one-level and multi-level) preconditioners can be obtained
|
||||
by a suitable setting of the preconditioner parameters. These parameters
|
||||
can be logically divided into four groups, i.e. parameters defining
|
||||
|
||||
<OL>
|
||||
<LI>the type of multi-level preconditioner;
|
||||
</LI>
|
||||
<LI>the one-level preconditioner used as smoother;
|
||||
</LI>
|
||||
<LI>the aggregation algorithm;
|
||||
</LI>
|
||||
<LI>the coarse-space correction at the coarsest level.
|
||||
</LI>
|
||||
</OL>
|
||||
A list of the parameters that can be set, along with their allowed and
|
||||
default values, is given in Tables <A HREF="#tab:p_type">2</A>-<A HREF="#tab:p_coarse">5</A>.
|
||||
For a detailed description of the meaning of the parameters, please
|
||||
refer to Section <A HREF="node11.html#sec:background">4</A>.
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1246"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 2:</STRONG>
|
||||
Parameters defining the type of multi-level preconditioner.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><code>val</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_ml_type_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'ADD'</TT> <TT>'MULT'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'MULT'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Basic multi-level framework: additive or multiplicative
|
||||
among the levels (always additive inside a level).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_smoother_type_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'DIAG'</TT> <TT>'BJAC'</TT> <TT>'AS'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'AS'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Basic one-level preconditioner (i.e. smoother): diagonal,
|
||||
block Jacobi, AS.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_smoother_pos_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57><TT>'PRE'</TT> <TT>'POST'</TT> <TT>'TWOSIDE'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'POST'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>``Position'' of the smoother: pre-smoother, post-smoother,
|
||||
pre- and post-smoother.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1248"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 3:</STRONG>
|
||||
Parameters defining the one-level preconditioner used as smoother.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><code>val</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_ovr_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>any int. num. <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT">1</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of overlap layers.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_restr_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'HALO'</TT> <TT>'NONE'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'HALO'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of restriction operator:
|
||||
<TT>'HALO'</TT> for taking into account the overlap, <TT>'NONE'</TT>
|
||||
for neglecting it.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_prol_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'SUM'</TT> <TT>'NONE'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'NONE'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of prolongation operator:
|
||||
<TT>'SUM'</TT> for adding the contributions from the overlap, <TT>'NONE'</TT>
|
||||
for neglecting them.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_solve_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'ILU'</TT> <TT>'MILU'</TT> <TT>'ILUT'</TT>
|
||||
<TT>'UMF'</TT> <TT>'SLU'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'UMF'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Local solver: ILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">), MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">), ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p,t$">), LU from UMFPACK, LU from SuperLU
|
||||
(plus triangular solve).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_fillin_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any int. num. <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT">0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$"> of the incomplete LU factorizations.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_iluthrs_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any real num. <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT">0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG
|
||||
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img89.png"
|
||||
ALT="$t$"> in the ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p,t$">) factorization.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_sub_ren_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'RENUM_NONE'</TT> <TT>'RENUM_GLOBAL'</TT> </TD>
|
||||
<TD ALIGN="LEFT"><TT>'RENUM_NONE'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Row and column reordering of the local submatrices: no reordering,
|
||||
reordering according to the global numbering of the rows and columns of
|
||||
the whole matrix.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1250"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 4:</STRONG>
|
||||
Parameters defining the aggregation algorithm.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><code>val</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_aggr_alg_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'DEC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'DEC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Aggregation algorithm. Currently, only the decoupled aggregation is available.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_aggr_kind_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'SMOOTH'</TT> <TT>'RAW'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'SMOOTH'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of aggregation: smoothed, raw (i.e. using the tentative prolongator).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_aggr_thresh_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any real num. <IMG
|
||||
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img90.png"
|
||||
ALT="$\in [0, 1]$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74>0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Threshold <IMG
|
||||
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img91.png"
|
||||
ALT="$\theta$"> in the aggregation algorithm.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_aggr_eig_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'A_NORMI'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><TT>'A_NORMI'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Estimate of the eigenvalue <IMG
|
||||
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img85.png"
|
||||
ALT="$D^{-1}A$"> with largest modulus,
|
||||
to build the damping parameter <IMG
|
||||
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\omega$"> in the smoothed aggregation.
|
||||
Currently, only the infinity norm of
|
||||
the matrix is available.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_aggr_damp_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any real num.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=74><!-- MATH
|
||||
$4/(3||D^{-1}A||_\infty)$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="124" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img92.png"
|
||||
ALT="$4/(3\vert\vert D^{-1}A\vert\vert _\infty)$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Damping parameter <IMG
|
||||
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\omega$"> in the smoothed aggregation algorithm.
|
||||
If the user specifies a negative value, then <IMG
|
||||
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\omega$">
|
||||
is set to its default value;
|
||||
otherwise, <IMG
|
||||
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\omega$"> is set to the value provided by the
|
||||
user. In the latter case no estimate of the eigenvalue of
|
||||
<IMG
|
||||
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img85.png"
|
||||
ALT="$D^{-1}A$"> with largest modulus is computed.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1252"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 5:</STRONG>
|
||||
Parameters defining the coarse-space correction at the coarsest
|
||||
level.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><code>val</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_mat_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'DISTR'</TT> <TT>'REPL'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'DISTR'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Coarsest matrix: distributed among the processors or
|
||||
replicated on each of them.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_solve_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'BJAC'</TT> <TT>'UMF'</TT>
|
||||
<TT>'SLU'</TT> <TT>'SLUDIST'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'BJAC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Solver used at the coarsest level: block Jacobi, sequential
|
||||
LU from UMFPACK, sequential LU from SuperLU,
|
||||
distributed LU from SuperLU_Dist.
|
||||
<TT>'BJAC'</TT> and <TT>'SLUDIST'</TT> require the coarsest
|
||||
matrix to be distributed, while <TT>'UMF'</TT> and
|
||||
<TT>'SLU'</TT> require it to be replicated.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_subsolve_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'ILU'</TT> <TT>'MILU'</TT>
|
||||
<TT>'ILUT'</TT>
|
||||
<TT>'UMF'</TT> <TT>'SLU'</TT></TD>
|
||||
<TD ALIGN="LEFT"><TT>'UMF'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Solver for the diagonal blocks of the coarse matrix,
|
||||
in case the block Jacobi solver
|
||||
is chosen as coarsest-level solver: ILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">), MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$">),
|
||||
ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p,t$">), LU from UMFPACK,
|
||||
LU from SuperLU, plus triangular solve.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_sweeps_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any int. num. <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img93.png"
|
||||
ALT="$> 0$"></TD>
|
||||
<TD ALIGN="LEFT">4</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of Block-Jacobi sweeps when 'BJAC' is used as
|
||||
coarsest-level solver.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_fillin_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any int. num. <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT">0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="$p$"> of the incomplete LU factorizations.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT"><code>mld_coarse_iluthrs_</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any real. num. <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img88.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT">0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG
|
||||
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img89.png"
|
||||
ALT="$t$"> in the ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$p,t$">) factorization.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html281"
|
||||
<A NAME="tex2html284"
|
||||
HREF="node19.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html277"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html280"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html271"
|
||||
<A NAME="tex2html274"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html279"
|
||||
<A NAME="tex2html282"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html282"
|
||||
HREF="node19.html">Subroutine mld_precaply</A>
|
||||
<B> Up:</B> <A NAME="tex2html278"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html272"
|
||||
HREF="node17.html">Subroutine mld_precset</A>
|
||||
<B> <A NAME="tex2html280"
|
||||
<B> Next:</B> <A NAME="tex2html285"
|
||||
HREF="node19.html">Subroutine mld_precbld</A>
|
||||
<B> Up:</B> <A NAME="tex2html281"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html275"
|
||||
HREF="node17.html">Subroutine mld_precinit</A>
|
||||
<B> <A NAME="tex2html283"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+51
-126
@@ -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 mld_precaply</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precaply">
|
||||
<TITLE>Subroutine mld_precbld</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precbld">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,198 +20,123 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node20.html">
|
||||
<LINK REL="previous" HREF="node18.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="next" HREF="node20.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html293"
|
||||
<A NAME="tex2html296"
|
||||
HREF="node20.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html289"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html292"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html283"
|
||||
<A NAME="tex2html286"
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html291"
|
||||
<A NAME="tex2html294"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html294"
|
||||
HREF="node20.html">Subroutine mld_precfree</A>
|
||||
<B> Up:</B> <A NAME="tex2html290"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html284"
|
||||
HREF="node18.html">Subroutine mld_precbld</A>
|
||||
<B> <A NAME="tex2html292"
|
||||
<B> Next:</B> <A NAME="tex2html297"
|
||||
HREF="node20.html">Subroutine mld_precaply</A>
|
||||
<B> Up:</B> <A NAME="tex2html293"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html287"
|
||||
HREF="node18.html">Subroutine mld_precset</A>
|
||||
<B> <A NAME="tex2html295"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:precaply"></A>
|
||||
<H2><A NAME="SECTION00083000000000000000"></A><A NAME="sec:precbld"></A>
|
||||
<BR>
|
||||
Subroutine mld_precaply
|
||||
Subroutine mld_precbld
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>mld_precaply(p,x,y,desc_a,info)</code>
|
||||
<BR><code>mld_precaply(p,x,y,desc_a,info,trans,work)</code>
|
||||
<code>mld_precbld(a,desc_a,p,info)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine computes <!-- MATH
|
||||
$y = op(M^{-1})\, x$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="118" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img94.png"
|
||||
ALT="$y = op(M^{-1}) x$">, where <IMG
|
||||
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img59.png"
|
||||
ALT="$M$"> is a previously built
|
||||
preconditioner, stored into <code>p</code>, and <IMG
|
||||
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img95.png"
|
||||
ALT="$op$">
|
||||
denotes the preconditioner itself or its transpose, according to
|
||||
the value of <code>trans</code>.
|
||||
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
|
||||
<code>mld_precaply</code> is called within the PSBLAS routine <code>mld_krylov</code>
|
||||
and hence it is completely transparent to the user.
|
||||
This routine builds the preconditioner according to the requirements made by
|
||||
the user through the routines <code>mld_precinit</code> and <code>mld_precset</code>.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
|
||||
<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>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure, containing the local part of <IMG
|
||||
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img59.png"
|
||||
ALT="$M$">.
|
||||
Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>x</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(in)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
|
||||
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img96.png"
|
||||
ALT="$x$">. Note that <I>type</I> and
|
||||
<I>kind_parameter</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>y</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(out)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img97.png"
|
||||
ALT="$y$">. Note that <I>type</I> and
|
||||
<I>kind_parameter</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
<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="node25.html#PSBLASGUIDE">14</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>
|
||||
</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>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
details [<A
|
||||
HREF="node25.html#PSBLASGUIDE">14</A>].</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node22.html#sec:errors">7</A> for details.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>trans</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=1), optional, intent(in).</code></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>If <code>trans</code> = <code>'N','n'</code> then <!-- MATH
|
||||
$op(M^{-1}) = M^{-1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img98.png"
|
||||
ALT="$op(M^{-1}) = M^{-1}$">;
|
||||
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
|
||||
$op(M^{-1}) = M^{-T}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="135" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img99.png"
|
||||
ALT="$op(M^{-1}) = M^{-T}$">
|
||||
(transpose of <IMG
|
||||
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img100.png"
|
||||
ALT="$M^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
|
||||
$op(M^{-1}) = M^{-C}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="136" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img101.png"
|
||||
ALT="$op(M^{-1}) = M^{-C}$">
|
||||
(conjugate transpose of <IMG
|
||||
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img100.png"
|
||||
ALT="$M^{-1})$">.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>work</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), optional, target</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </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=340>Error code. If no error, 0 is returned. See Section <A HREF="node23.html#sec:errors">7</A> for details.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html293"
|
||||
<A NAME="tex2html296"
|
||||
HREF="node20.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html289"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html292"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html283"
|
||||
<A NAME="tex2html286"
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html291"
|
||||
<A NAME="tex2html294"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html294"
|
||||
HREF="node20.html">Subroutine mld_precfree</A>
|
||||
<B> Up:</B> <A NAME="tex2html290"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html284"
|
||||
HREF="node18.html">Subroutine mld_precbld</A>
|
||||
<B> <A NAME="tex2html292"
|
||||
<B> Next:</B> <A NAME="tex2html297"
|
||||
HREF="node20.html">Subroutine mld_precaply</A>
|
||||
<B> Up:</B> <A NAME="tex2html293"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html287"
|
||||
HREF="node18.html">Subroutine mld_precset</A>
|
||||
<B> <A NAME="tex2html295"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+41
-39
@@ -26,24 +26,24 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html60"
|
||||
<A NAME="tex2html61"
|
||||
HREF="node3.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html58"
|
||||
<A NAME="tex2html59"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html52"
|
||||
<A NAME="tex2html53"
|
||||
HREF="node1.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html61"
|
||||
<B> Next:</B> <A NAME="tex2html62"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<B> Up:</B> <A NAME="tex2html59"
|
||||
<B> Up:</B> <A NAME="tex2html60"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html53"
|
||||
<B> Previous:</B> <A NAME="tex2html54"
|
||||
HREF="node1.html">Abstract</A>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -56,62 +56,64 @@ Contents</A>
|
||||
<!--Table of Contents-->
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html62"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<LI><A NAME="tex2html63"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
HREF="node3.html">General Overview</A>
|
||||
<LI><A NAME="tex2html64"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<LI><A NAME="tex2html65"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html65"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html66"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html67"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html68"
|
||||
HREF="node9.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html69"
|
||||
HREF="node10.html">Multi-level Domain Decomposition Background</A>
|
||||
<UL>
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html70"
|
||||
HREF="node11.html">Multi-level Schwarz Preconditioners</A>
|
||||
<LI><A NAME="tex2html71"
|
||||
HREF="node12.html">Smoothed Aggregation</A>
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html72"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<LI><A NAME="tex2html71"
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html72"
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<LI><A NAME="tex2html73"
|
||||
HREF="node14.html">Examples</A>
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html74"
|
||||
HREF="node15.html">User Interface</A>
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html75"
|
||||
HREF="node16.html">Subroutine mld_precinit</A>
|
||||
<LI><A NAME="tex2html76"
|
||||
HREF="node17.html">Subroutine mld_precset</A>
|
||||
<LI><A NAME="tex2html77"
|
||||
HREF="node18.html">Subroutine mld_precbld</A>
|
||||
<LI><A NAME="tex2html78"
|
||||
HREF="node19.html">Subroutine mld_precaply</A>
|
||||
<LI><A NAME="tex2html79"
|
||||
HREF="node20.html">Subroutine mld_precfree</A>
|
||||
<LI><A NAME="tex2html80"
|
||||
HREF="node21.html">Subroutine mld_precdescr</A>
|
||||
HREF="node15.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html76"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html77"
|
||||
HREF="node17.html">Subroutine mld_precinit</A>
|
||||
<LI><A NAME="tex2html78"
|
||||
HREF="node18.html">Subroutine mld_precset</A>
|
||||
<LI><A NAME="tex2html79"
|
||||
HREF="node19.html">Subroutine mld_precbld</A>
|
||||
<LI><A NAME="tex2html80"
|
||||
HREF="node20.html">Subroutine mld_precaply</A>
|
||||
<LI><A NAME="tex2html81"
|
||||
HREF="node22.html">Error Handling</A>
|
||||
HREF="node21.html">Subroutine mld_precfree</A>
|
||||
<LI><A NAME="tex2html82"
|
||||
HREF="node23.html">License</A>
|
||||
HREF="node22.html">Subroutine mld_precdescr</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html83"
|
||||
HREF="node24.html">Bibliography</A>
|
||||
HREF="node23.html">Error Handling</A>
|
||||
<LI><A NAME="tex2html84"
|
||||
HREF="node24.html">License</A>
|
||||
<LI><A NAME="tex2html85"
|
||||
HREF="node25.html">Bibliography</A>
|
||||
</UL>
|
||||
<!--End of Table of Contents-->
|
||||
|
||||
|
||||
+146
-25
@@ -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 mld_precfree</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precfree">
|
||||
<TITLE>Subroutine mld_precaply</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precaply">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,54 +20,73 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node21.html">
|
||||
<LINK REL="previous" HREF="node19.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="next" HREF="node21.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html305"
|
||||
<A NAME="tex2html308"
|
||||
HREF="node21.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html301"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html304"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html295"
|
||||
<A NAME="tex2html298"
|
||||
HREF="node19.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html303"
|
||||
<A NAME="tex2html306"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html306"
|
||||
HREF="node21.html">Subroutine mld_precdescr</A>
|
||||
<B> Up:</B> <A NAME="tex2html302"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html296"
|
||||
HREF="node19.html">Subroutine mld_precaply</A>
|
||||
<B> <A NAME="tex2html304"
|
||||
<B> Next:</B> <A NAME="tex2html309"
|
||||
HREF="node21.html">Subroutine mld_precfree</A>
|
||||
<B> Up:</B> <A NAME="tex2html305"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html299"
|
||||
HREF="node19.html">Subroutine mld_precbld</A>
|
||||
<B> <A NAME="tex2html307"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:precfree"></A>
|
||||
<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:precaply"></A>
|
||||
<BR>
|
||||
Subroutine mld_precfree
|
||||
Subroutine mld_precaply
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>mld_precfree(p,info)</code>
|
||||
<code>mld_precaply(p,x,y,desc_a,info)</code>
|
||||
<BR><code>mld_precaply(p,x,y,desc_a,info,trans,work)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine deallocates the preconditioner data structure.
|
||||
This routine computes <!-- MATH
|
||||
$y = op(M^{-1})\, x$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="118" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img94.png"
|
||||
ALT="$y = op(M^{-1}) x$">, where <IMG
|
||||
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img59.png"
|
||||
ALT="$M$"> is a previously built
|
||||
preconditioner, stored into <code>p</code>, and <IMG
|
||||
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img95.png"
|
||||
ALT="$op$">
|
||||
denotes the preconditioner itself or its transpose, according to
|
||||
the value of <code>trans</code>.
|
||||
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
|
||||
<code>mld_precaply</code> is called within the PSBLAS routine <code>mld_krylov</code>
|
||||
and hence it is completely transparent to the user.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
@@ -75,24 +94,126 @@ This routine deallocates the preconditioner data structure.
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298>The preconditioner data structure. Note that <I>x</I> must be chosen according
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure, containing the local part of <IMG
|
||||
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img59.png"
|
||||
ALT="$M$">.
|
||||
Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
</TR>
|
||||
<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>
|
||||
<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=298>Error code. If no error, 0 is returned. See Section <A HREF="node22.html#sec:errors">7</A> for details.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
|
||||
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img96.png"
|
||||
ALT="$x$">. Note that <I>type</I> and
|
||||
<I>kind_parameter</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>y</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(out)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img97.png"
|
||||
ALT="$y$">. Note that <I>type</I> and
|
||||
<I>kind_parameter</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>desc_a</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(psb_desc_type), intent(in)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </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="node23.html#sec:errors">7</A> for details.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>trans</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>character(len=1), optional, intent(in).</code></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>If <code>trans</code> = <code>'N','n'</code> then <!-- MATH
|
||||
$op(M^{-1}) = M^{-1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img98.png"
|
||||
ALT="$op(M^{-1}) = M^{-1}$">;
|
||||
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
|
||||
$op(M^{-1}) = M^{-T}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="135" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img99.png"
|
||||
ALT="$op(M^{-1}) = M^{-T}$">
|
||||
(transpose of <IMG
|
||||
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img100.png"
|
||||
ALT="$M^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
|
||||
$op(M^{-1}) = M^{-C}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="136" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img101.png"
|
||||
ALT="$op(M^{-1}) = M^{-C}$">
|
||||
(conjugate transpose of <IMG
|
||||
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img100.png"
|
||||
ALT="$M^{-1})$">.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>work</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), optional, target</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </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>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html308"
|
||||
HREF="node21.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html304"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html298"
|
||||
HREF="node19.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html306"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html309"
|
||||
HREF="node21.html">Subroutine mld_precfree</A>
|
||||
<B> Up:</B> <A NAME="tex2html305"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html299"
|
||||
HREF="node19.html">Subroutine mld_precbld</A>
|
||||
<B> <A NAME="tex2html307"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+26
-32
@@ -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 mld_precdescr</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precdescr">
|
||||
<TITLE>Subroutine mld_precfree</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precfree">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,57 +18,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node22.html">
|
||||
<LINK REL="previous" HREF="node20.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="next" HREF="node22.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html315"
|
||||
<A NAME="tex2html320"
|
||||
HREF="node22.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html311"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html316"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html307"
|
||||
<A NAME="tex2html310"
|
||||
HREF="node20.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html313"
|
||||
<A NAME="tex2html318"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html316"
|
||||
HREF="node22.html">Error Handling</A>
|
||||
<B> Up:</B> <A NAME="tex2html312"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html308"
|
||||
HREF="node20.html">Subroutine mld_precfree</A>
|
||||
<B> <A NAME="tex2html314"
|
||||
<B> Next:</B> <A NAME="tex2html321"
|
||||
HREF="node22.html">Subroutine mld_precdescr</A>
|
||||
<B> Up:</B> <A NAME="tex2html317"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html311"
|
||||
HREF="node20.html">Subroutine mld_precaply</A>
|
||||
<B> <A NAME="tex2html319"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precdescr"></A>
|
||||
<H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:precfree"></A>
|
||||
<BR>
|
||||
Subroutine mld_precdescr
|
||||
Subroutine mld_precfree
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>mld_precdescr(p,info)</code>
|
||||
<BR><code>mld_precdescr(p,info,iout)</code>
|
||||
<code>mld_precfree(p,info)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine prints a description of the preconditioner to the standard output or
|
||||
to a file. It must be called after <code>mld_precbld</code> has been called.
|
||||
This routine deallocates the preconditioner data structure.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
@@ -76,27 +75,22 @@ to a file. It must be called after <code>mld_precbld</code> has been called.
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(in)</code>.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><code>type(mld_</code><I>x</I><code>prec_type), intent(inout)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must be chosen according
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298>The preconditioner data structure. Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
</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="node22.html#sec:errors">7</A> for details.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>iout</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(in), optional</code>.</TD>
|
||||
</TR>
|
||||
<TR><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=298>Error code. If no error, 0 is returned. See Section <A HREF="node23.html#sec:errors">7</A> for details.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
|
||||
|
||||
+54
-32
@@ -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>Subroutine mld_precdescr</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precdescr">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,64 +18,86 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node23.html">
|
||||
<LINK REL="previous" HREF="node15.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="previous" HREF="node21.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="next" HREF="node23.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html327"
|
||||
<A NAME="tex2html330"
|
||||
HREF="node23.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html323"
|
||||
HREF="userhtml.html">
|
||||
<A NAME="tex2html326"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html317"
|
||||
<A NAME="tex2html322"
|
||||
HREF="node21.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html325"
|
||||
<A NAME="tex2html328"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html328"
|
||||
HREF="node23.html">License</A>
|
||||
<B> Up:</B> <A NAME="tex2html324"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html318"
|
||||
HREF="node21.html">Subroutine mld_precdescr</A>
|
||||
<B> <A NAME="tex2html326"
|
||||
<B> Next:</B> <A NAME="tex2html331"
|
||||
HREF="node23.html">Error Handling</A>
|
||||
<B> Up:</B> <A NAME="tex2html327"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html323"
|
||||
HREF="node21.html">Subroutine mld_precfree</A>
|
||||
<B> <A NAME="tex2html329"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:errors"></A>
|
||||
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precdescr"></A>
|
||||
<BR>
|
||||
Error Handling
|
||||
</H1>
|
||||
Subroutine mld_precdescr
|
||||
</H2>
|
||||
|
||||
<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="node24.html#PSBLASGUIDE">14</A>].
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>mld_precdescr(p,info)</code>
|
||||
<BR><code>mld_precdescr(p,info,iout)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine prints a description of the preconditioner to the standard output or
|
||||
to a file. It must be called after <code>mld_precbld</code> has been called.
|
||||
|
||||
<P>
|
||||
<FONT SIZE="+1"><B>Arguments</B></FONT>
|
||||
|
||||
<P>
|
||||
<TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>p</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>type(mld_</code><I>x</I><code>prec_type), intent(in)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The preconditioner data structure. Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>info</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(out)</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section <A HREF="node23.html#sec:errors">7</A> for details.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>iout</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, intent(in), optional</code>.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34> </TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The id of the file where the preconditioner description
|
||||
will be printed; the default is the standard output.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
+28
-52
@@ -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>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,86 +19,62 @@ 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="previous" HREF="node16.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node24.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html339"
|
||||
<A NAME="tex2html342"
|
||||
HREF="node24.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html335"
|
||||
<A NAME="tex2html338"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html329"
|
||||
<A NAME="tex2html332"
|
||||
HREF="node22.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html337"
|
||||
<A NAME="tex2html340"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html340"
|
||||
HREF="node24.html">Bibliography</A>
|
||||
<B> Up:</B> <A NAME="tex2html336"
|
||||
<B> Next:</B> <A NAME="tex2html343"
|
||||
HREF="node24.html">License</A>
|
||||
<B> Up:</B> <A NAME="tex2html339"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html330"
|
||||
HREF="node22.html">Error Handling</A>
|
||||
<B> <A NAME="tex2html338"
|
||||
<B> Previous:</B> <A NAME="tex2html333"
|
||||
HREF="node22.html">Subroutine mld_precdescr</A>
|
||||
<B> <A NAME="tex2html341"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:license"></A>
|
||||
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:errors"></A>
|
||||
<BR>
|
||||
License
|
||||
Error Handling
|
||||
</H1>
|
||||
|
||||
<P>
|
||||
The MLD2P4 is freely distributable under the following copyright
|
||||
terms: <PRE>
|
||||
MLD2P4 version 1.0
|
||||
MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS (Parallel Sparse BLAS version 2.3)
|
||||
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="node25.html#PSBLASGUIDE">14</A>].
|
||||
|
||||
(C) Copyright 2008
|
||||
|
||||
Salvatore Filippone University of Rome Tor Vergata
|
||||
Alfredo Buttari University of Rome Tor Vergata
|
||||
Pasqua D'Ambra ICAR-CNR, Naples
|
||||
Daniela di Serafino Second University of Naples
|
||||
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions, and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. The name of the MLD2P4 group or the names of its contributors may
|
||||
not be used to endorse or promote products derived from this
|
||||
software without specific written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
</PRE>
|
||||
<P>
|
||||
|
||||
<BR><HR>
|
||||
|
||||
|
||||
+54
-153
@@ -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>License</TITLE>
|
||||
<META NAME="description" CONTENT="License">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -26,179 +26,80 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html351"
|
||||
<A NAME="tex2html354"
|
||||
HREF="node25.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html347"
|
||||
<A NAME="tex2html350"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html341"
|
||||
<A NAME="tex2html344"
|
||||
HREF="node23.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html349"
|
||||
<A NAME="tex2html352"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html352"
|
||||
HREF="node25.html">About this document ...</A>
|
||||
<B> Up:</B> <A NAME="tex2html348"
|
||||
<B> Next:</B> <A NAME="tex2html355"
|
||||
HREF="node25.html">Bibliography</A>
|
||||
<B> Up:</B> <A NAME="tex2html351"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html342"
|
||||
HREF="node23.html">License</A>
|
||||
<B> <A NAME="tex2html350"
|
||||
<B> Previous:</B> <A NAME="tex2html345"
|
||||
HREF="node23.html">Error Handling</A>
|
||||
<B> <A NAME="tex2html353"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR><BR>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION000110000000000000000">
|
||||
Bibliography</A>
|
||||
</H2><DL COMPACT><DD>
|
||||
|
||||
<H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:license"></A>
|
||||
<BR>
|
||||
License
|
||||
</H1>
|
||||
|
||||
<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.
|
||||
The MLD2P4 is freely distributable under the following copyright
|
||||
terms: <PRE>
|
||||
MLD2P4 version 1.0
|
||||
MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS (Parallel Sparse BLAS version 2.3)
|
||||
|
||||
<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="UMFPACK">8</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="SUPERLU">9</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">10</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">11</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">12</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">13</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">14</A>
|
||||
<DD>
|
||||
S. Filippone, A. Buttari,
|
||||
<EM>PSBLAS-2.3 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library</EM>, 2008,
|
||||
available from <TT>http://www.ce.uniroma2.it/psblas/</TT>.
|
||||
<P></P><DT><A NAME="psblas_00">15</A>
|
||||
<DD>
|
||||
S. 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">16</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">17</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">18</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">19</A>
|
||||
<DD>
|
||||
Y. Saad,
|
||||
<I>Iterative methods for sparse linear systems</I>, 2nd edition,
|
||||
SIAM, 2003
|
||||
(C) Copyright 2008
|
||||
|
||||
<P>
|
||||
<P></P><DT><A NAME="dd2_96">20</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">21</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="StubenGMD69_99">22</A>
|
||||
<DD>
|
||||
K. Stüben,
|
||||
<EM>Algebraic Multigrid (AMG): an Introduction with Applications</EM>,
|
||||
in A. Schüller, U. Trottenberg, C. Oosterlee, editors, Multigrid,
|
||||
Academic Press, 2000.
|
||||
<P></P><DT><A NAME="TUMINARO_TONG">23</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">24</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.
|
||||
Salvatore Filippone University of Rome Tor Vergata
|
||||
Alfredo Buttari University of Rome Tor Vergata
|
||||
Pasqua D'Ambra ICAR-CNR, Naples
|
||||
Daniela di Serafino Second University of Naples
|
||||
|
||||
<P>
|
||||
</DL>
|
||||
|
||||
<P>
|
||||
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>
|
||||
|
||||
</BODY>
|
||||
|
||||
+159
-28
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>About this document ...</TITLE>
|
||||
<META NAME="description" CONTENT="About this document ...">
|
||||
<TITLE>Bibliography</TITLE>
|
||||
<META NAME="description" CONTENT="Bibliography">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,56 +18,187 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node26.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="tex2html366"
|
||||
HREF="node26.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next_g.png">
|
||||
<A NAME="tex2html357"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html362"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html353"
|
||||
<A NAME="tex2html356"
|
||||
HREF="node24.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html359"
|
||||
<A NAME="tex2html364"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Up:</B> <A NAME="tex2html358"
|
||||
<B> Next:</B> <A NAME="tex2html367"
|
||||
HREF="node26.html">About this document ...</A>
|
||||
<B> Up:</B> <A NAME="tex2html363"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html354"
|
||||
HREF="node24.html">Bibliography</A>
|
||||
<B> <A NAME="tex2html360"
|
||||
<B> Previous:</B> <A NAME="tex2html357"
|
||||
HREF="node24.html">License</A>
|
||||
<B> <A NAME="tex2html365"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<BR><BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION000110000000000000000">
|
||||
Bibliography</A>
|
||||
</H2><DL COMPACT><DD>
|
||||
|
||||
<H1><A NAME="SECTION000120000000000000000">
|
||||
About this document ...</A>
|
||||
</H1>
|
||||
<P>
|
||||
This document was generated using the
|
||||
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.71)
|
||||
<P>
|
||||
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><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.
|
||||
|
||||
<P>
|
||||
The command line arguments were: <BR>
|
||||
<STRONG>latex2html</STRONG> <TT>-noaddress -dir ../../html userhtml.tex</TT>
|
||||
<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="UMFPACK">8</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="SUPERLU">9</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">10</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">11</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">12</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">13</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">14</A>
|
||||
<DD>
|
||||
S. Filippone, A. Buttari,
|
||||
<EM>PSBLAS-2.3 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library</EM>, 2008,
|
||||
available from <TT>http://www.ce.uniroma2.it/psblas/</TT>.
|
||||
<P></P><DT><A NAME="psblas_00">15</A>
|
||||
<DD>
|
||||
S. 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">16</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">17</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">18</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">19</A>
|
||||
<DD>
|
||||
Y. Saad,
|
||||
<I>Iterative methods for sparse linear systems</I>, 2nd edition,
|
||||
SIAM, 2003
|
||||
|
||||
<P>
|
||||
<P></P><DT><A NAME="dd2_96">20</A>
|
||||
<DD>
|
||||
B. 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">21</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="StubenGMD69_99">22</A>
|
||||
<DD>
|
||||
K. Stüben,
|
||||
<EM>Algebraic Multigrid (AMG): an Introduction with Applications</EM>,
|
||||
in A. Schüller, U. Trottenberg, C. Oosterlee, editors, Multigrid,
|
||||
Academic Press, 2000.
|
||||
<P></P><DT><A NAME="TUMINARO_TONG">23</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">24</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>
|
||||
|
||||
<P>
|
||||
The translation was initiated by Salvatore Filippone on 2008-07-24
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
+33
-49
@@ -1,4 +1,4 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine mld_precdescr</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine mld_precdescr">
|
||||
<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,73 +18,57 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="previous" HREF="node24.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="next" HREF="node27.html">
|
||||
<LINK REL="previous" HREF="node25.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
|
||||
<DIV CLASS="navigation"><!--Navigation Panel-->
|
||||
<A NAME="tex2html382"
|
||||
HREF="node27.html">
|
||||
<!--Navigation Panel-->
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html378"
|
||||
HREF="node15.html">
|
||||
SRC="file:/usr/share/latex2html/icons/next_g.png">
|
||||
<A NAME="tex2html372"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html374"
|
||||
<A NAME="tex2html368"
|
||||
HREF="node25.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html380"
|
||||
<A NAME="tex2html374"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html383"
|
||||
HREF="node27.html">Arguments</A>
|
||||
<B> Up:</B> <A NAME="tex2html379"
|
||||
HREF="node15.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html375"
|
||||
HREF="node25.html">Arguments</A>
|
||||
<B> <A NAME="tex2html381"
|
||||
<B> Up:</B> <A NAME="tex2html373"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html369"
|
||||
HREF="node25.html">Bibliography</A>
|
||||
<B> <A NAME="tex2html375"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR></DIV>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precdescr"></A>
|
||||
<H1><A NAME="SECTION000120000000000000000">
|
||||
About this document ...</A>
|
||||
</H1>
|
||||
<P>
|
||||
This document was generated using the
|
||||
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.71)
|
||||
<P>
|
||||
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>
|
||||
Subroutine mld_precdescr
|
||||
</H2>
|
||||
|
||||
Copyright © 1997, 1998, 1999,
|
||||
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
|
||||
Mathematics Department, Macquarie University, Sydney.
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>mld_precdescr(p,info)</code>
|
||||
<BR><code>mld_precdescr(p,info,iout)</code>
|
||||
<BR>
|
||||
</DIV>
|
||||
|
||||
<P>
|
||||
This routine prints a description of the preconditioner to the standard output or
|
||||
to a file. It must be called after <code>mld_precbld</code> has been called.
|
||||
|
||||
The command line arguments were: <BR>
|
||||
<STRONG>latex2html</STRONG> <TT>-noaddress -dir ../../html userhtml.tex</TT>
|
||||
<P>
|
||||
The translation was initiated by Salvatore Filippone on 2008-07-24
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL CLASS="ChildLinks">
|
||||
<LI><A NAME="tex2html384"
|
||||
HREF="node27.html">Arguments</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Salvatore Filippone
|
||||
2008-07-23
|
||||
</ADDRESS>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+27
-27
@@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html94"
|
||||
<A NAME="tex2html96"
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html90"
|
||||
<A NAME="tex2html92"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html84"
|
||||
<A NAME="tex2html86"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html92"
|
||||
<A NAME="tex2html94"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html95"
|
||||
<B> Next:</B> <A NAME="tex2html97"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> Up:</B> <A NAME="tex2html91"
|
||||
<B> Up:</B> <A NAME="tex2html93"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html85"
|
||||
<B> Previous:</B> <A NAME="tex2html87"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> <A NAME="tex2html93"
|
||||
<B> <A NAME="tex2html95"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -63,7 +63,7 @@ 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 <I>multi-level Schwarz preconditioners</I> [<A
|
||||
HREF="node24.html#dd2_96">20</A>],
|
||||
HREF="node25.html#dd2_96">20</A>],
|
||||
to be used in the iterative solutions of sparse linear systems:
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
@@ -101,8 +101,8 @@ generate a sequence of coarse-level corrections to a basic AS preconditioner, wi
|
||||
explicitly using any information on the geometry of the original problem (e.g. the
|
||||
discretization of a PDE). The <I>smoothed aggregation</I> technique is applied
|
||||
as algebraic coarsening strategy [<A
|
||||
HREF="node24.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node24.html#VANEK_MANDEL_BREZINA">24</A>].
|
||||
HREF="node25.html#BREZINA_VANEK">1</A>,<A
|
||||
HREF="node25.html#VANEK_MANDEL_BREZINA">24</A>].
|
||||
</LI>
|
||||
</UL>
|
||||
|
||||
@@ -120,7 +120,7 @@ real and the complex case, that can be used through a single interface.
|
||||
MLD2P4 has been designed to implement scalable and easy-to-use multilevel preconditioners
|
||||
in the context of the <I>PSBLAS (Parallel Sparse BLAS)
|
||||
computational framework</I> [<A
|
||||
HREF="node24.html#psblas_00">15</A>].
|
||||
HREF="node25.html#psblas_00">15</A>].
|
||||
PSBLAS is a library originally developed to address the parallel implementation of
|
||||
iterative solvers for sparse linear system, by providing basic linear algebra
|
||||
operators and data management facilities for distributed sparse matrices; it
|
||||
@@ -133,10 +133,10 @@ portability, modularity ed extensibility in the development of the preconditione
|
||||
package. On the other hand, the implementation of MLD2P4 has led to some
|
||||
revisions and extentions of the PSBLAS kernels, leading to the
|
||||
recent PSBLAS 2.0 version [<A
|
||||
HREF="node24.html#PSBLASGUIDE">14</A>]. The inter-process comunication required
|
||||
HREF="node25.html#PSBLASGUIDE">14</A>]. The inter-process comunication required
|
||||
by MLD2P4 is encapsulated into the PSBLAS routines, except few cases where
|
||||
MPI [<A
|
||||
HREF="node24.html#MPI1">21</A>] is explicitly called. Therefore, MLD2P4 can be run on any parallel
|
||||
HREF="node25.html#MPI1">21</A>] is explicitly called. Therefore, MLD2P4 can be run on any parallel
|
||||
machine where PSBLAS and MPI implementations are available.
|
||||
|
||||
<P>
|
||||
@@ -157,42 +157,42 @@ This guide is organized as follows. General information on the distribution of t
|
||||
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 description of
|
||||
multi-level Schwarz preconditioners based on smoothed aggregation is provided
|
||||
in Section <A HREF="node10.html#sec:background">4</A>, to help the users in choosing among the different preconditioners
|
||||
in Section <A HREF="node11.html#sec:background">4</A>, to help the users in choosing among the different preconditioners
|
||||
implemented in MLD2P4. The basics for building and applying the preconditioners
|
||||
with the Krylov solvers implemented in PSBLAS are reported in Section <A HREF="node13.html#sec:started">5</A>, where the
|
||||
with the Krylov solvers implemented in PSBLAS are reported in Section <A HREF="node14.html#sec:started">5</A>, where the
|
||||
Fortran 95 codes of a few sample programs are also shown. A reference guide for
|
||||
the upper-layer routines of MLD2P4, that are the user interface, is provided
|
||||
in Section <A HREF="node15.html#sec:userinterface">6</A>. The error handling mechanism used by the package is briefly described
|
||||
in Section <A HREF="node22.html#sec:errors">7</A>. The copyright terms concerning the distribution and modification
|
||||
of MLD2P4 are reported in Appendix <A HREF="node23.html#sec:license">A</A>.
|
||||
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="node23.html#sec:errors">7</A>. The copyright terms concerning the distribution and modification
|
||||
of MLD2P4 are reported in Appendix <A HREF="node24.html#sec:license">A</A>.
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html94"
|
||||
<A NAME="tex2html96"
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html90"
|
||||
<A NAME="tex2html92"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html84"
|
||||
<A NAME="tex2html86"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html92"
|
||||
<A NAME="tex2html94"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html95"
|
||||
<B> Next:</B> <A NAME="tex2html97"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> Up:</B> <A NAME="tex2html91"
|
||||
<B> Up:</B> <A NAME="tex2html93"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html85"
|
||||
<B> Previous:</B> <A NAME="tex2html87"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> <A NAME="tex2html93"
|
||||
<B> <A NAME="tex2html95"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
@@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html106"
|
||||
<A NAME="tex2html108"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html102"
|
||||
<A NAME="tex2html104"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html96"
|
||||
<A NAME="tex2html98"
|
||||
HREF="node3.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html104"
|
||||
<A NAME="tex2html106"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html107"
|
||||
<B> Next:</B> <A NAME="tex2html109"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Up:</B> <A NAME="tex2html103"
|
||||
<B> Up:</B> <A NAME="tex2html105"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html97"
|
||||
<B> Previous:</B> <A NAME="tex2html99"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<B> <A NAME="tex2html105"
|
||||
<B> <A NAME="tex2html107"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -72,7 +72,7 @@ To report bugs or ask general usage questions, please, send an email to
|
||||
|
||||
<P>
|
||||
The software is available under a modified BSD license, as specified
|
||||
in Appendix <A HREF="node23.html#sec:license">A</A>; please note that some of the optional
|
||||
in Appendix <A HREF="node24.html#sec:license">A</A>; please note that some of the optional
|
||||
third party libraries may be licensed under a different and more
|
||||
stringent license, most notably the GPL, and this should be taken into
|
||||
account when treating derived works.
|
||||
|
||||
+17
-15
@@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node10.html">
|
||||
<LINK REL="next" HREF="node11.html">
|
||||
<LINK REL="previous" HREF="node4.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node6.html">
|
||||
@@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html118"
|
||||
<A NAME="tex2html120"
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html114"
|
||||
<A NAME="tex2html116"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html108"
|
||||
<A NAME="tex2html110"
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html116"
|
||||
<A NAME="tex2html118"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html119"
|
||||
<B> Next:</B> <A NAME="tex2html121"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<B> Up:</B> <A NAME="tex2html115"
|
||||
<B> Up:</B> <A NAME="tex2html117"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html109"
|
||||
<B> Previous:</B> <A NAME="tex2html111"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> <A NAME="tex2html117"
|
||||
<B> <A NAME="tex2html119"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -84,14 +84,16 @@ real and complex data, in both single and double precision.
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html120"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html121"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html122"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html123"
|
||||
HREF="node9.html">Example and test programs</A>
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html124"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html125"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html126"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
|
||||
+24
-24
@@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html134"
|
||||
<A NAME="tex2html137"
|
||||
HREF="node7.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html130"
|
||||
<A NAME="tex2html133"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html124"
|
||||
<A NAME="tex2html127"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html132"
|
||||
<A NAME="tex2html135"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html135"
|
||||
<B> Next:</B> <A NAME="tex2html138"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<B> Up:</B> <A NAME="tex2html131"
|
||||
<B> Up:</B> <A NAME="tex2html134"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html125"
|
||||
<B> Previous:</B> <A NAME="tex2html128"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> <A NAME="tex2html133"
|
||||
<B> <A NAME="tex2html136"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -64,9 +64,9 @@ The following base libraries are needed:
|
||||
<DL>
|
||||
<DT><STRONG>BLAS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node24.html#blas3">10</A>,<A
|
||||
HREF="node24.html#blas2">11</A>,<A
|
||||
HREF="node24.html#blas1">17</A>] Many vendors provide optimized versions
|
||||
HREF="node25.html#blas3">10</A>,<A
|
||||
HREF="node25.html#blas2">11</A>,<A
|
||||
HREF="node25.html#blas1">17</A>] Many vendors provide optimized versions
|
||||
of the Basic Linear Algebra Subprograms; if no vendor version is
|
||||
available for a given platform, the ATLAS software
|
||||
(<code>http://math-atlas.sourceforge.net/</code>)
|
||||
@@ -81,13 +81,13 @@ The following base libraries are needed:
|
||||
</DD>
|
||||
<DT><STRONG>MPI</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node24.html#MPI2">16</A>,<A
|
||||
HREF="node24.html#MPI1">21</A>] A version of MPI is available on most
|
||||
HREF="node25.html#MPI2">16</A>,<A
|
||||
HREF="node25.html#MPI1">21</A>] A version of MPI is available on most
|
||||
high-performance computing systems; only version 1.1 is required.
|
||||
</DD>
|
||||
<DT><STRONG>BLACS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node24.html#BLACS">12</A>] The Basic Linear Algebra Communication Subprograms
|
||||
HREF="node25.html#BLACS">12</A>] The Basic Linear Algebra Communication Subprograms
|
||||
are available in source form from <code>http://www.netlib.org/blacs</code>;
|
||||
some vendors include them in their parallel computing
|
||||
support libraries.
|
||||
@@ -95,8 +95,8 @@ The following base libraries are needed:
|
||||
</DD>
|
||||
<DT><STRONG>PSBLAS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node24.html#PSBLASGUIDE">14</A>,<A
|
||||
HREF="node24.html#psblas_00">15</A>] Parallel Sparse BLAS is
|
||||
HREF="node25.html#PSBLASGUIDE">14</A>,<A
|
||||
HREF="node25.html#psblas_00">15</A>] Parallel Sparse BLAS is
|
||||
available from
|
||||
<BR><code>http://www.ce.uniroma2.it/psblas</code>; version 2.3
|
||||
(or later) is required. Indeed, all the prerequisites
|
||||
@@ -117,30 +117,30 @@ compiler as MLD2P4.
|
||||
<P>
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html134"
|
||||
<A NAME="tex2html137"
|
||||
HREF="node7.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html130"
|
||||
<A NAME="tex2html133"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html124"
|
||||
<A NAME="tex2html127"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html132"
|
||||
<A NAME="tex2html135"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html135"
|
||||
<B> Next:</B> <A NAME="tex2html138"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<B> Up:</B> <A NAME="tex2html131"
|
||||
<B> Up:</B> <A NAME="tex2html134"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html125"
|
||||
<B> Previous:</B> <A NAME="tex2html128"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> <A NAME="tex2html133"
|
||||
<B> <A NAME="tex2html136"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+11
-11
@@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html146"
|
||||
<A NAME="tex2html149"
|
||||
HREF="node8.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html142"
|
||||
<A NAME="tex2html145"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html136"
|
||||
<A NAME="tex2html139"
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html144"
|
||||
<A NAME="tex2html147"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html147"
|
||||
<B> Next:</B> <A NAME="tex2html150"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<B> Up:</B> <A NAME="tex2html143"
|
||||
<B> Up:</B> <A NAME="tex2html146"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html137"
|
||||
<B> Previous:</B> <A NAME="tex2html140"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<B> <A NAME="tex2html145"
|
||||
<B> <A NAME="tex2html148"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -68,7 +68,7 @@ for multilevel preconditioners may change to reflect their presence.
|
||||
<DL>
|
||||
<DT><STRONG>UMFPACK</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node24.html#UMFPACK">8</A>]
|
||||
HREF="node25.html#UMFPACK">8</A>]
|
||||
A sparse direct factorization package available from
|
||||
<BR> <code>http://www.cise.ufl.edu/research/sparse/umfpack/</code>;
|
||||
provides serial factorization and triangular system solution for double
|
||||
@@ -77,7 +77,7 @@ for multilevel preconditioners may change to reflect their presence.
|
||||
</DD>
|
||||
<DT><STRONG>SuperLU</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node24.html#SUPERLU">9</A>]
|
||||
HREF="node25.html#SUPERLU">9</A>]
|
||||
A sparse direct factorization package available from
|
||||
<BR> <code>http://crd.lbl.gov/~xiaoye/SuperLU/</code>; provides serial
|
||||
factorization and triangular system solution for single and double precision,
|
||||
@@ -85,7 +85,7 @@ for multilevel preconditioners may change to reflect their presence.
|
||||
</DD>
|
||||
<DT><STRONG>SuperLU_Dist</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node24.html#SUPERLUDIST">18</A>]
|
||||
HREF="node25.html#SUPERLUDIST">18</A>]
|
||||
A sparse direct factorization package available
|
||||
from the same site as SuperLU; provides parallel factorization and
|
||||
triangular system solution for double precision real and complex data.
|
||||
|
||||
+9
-11
@@ -26,30 +26,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html158"
|
||||
<A NAME="tex2html161"
|
||||
HREF="node9.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html154"
|
||||
<A NAME="tex2html157"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html148"
|
||||
<A NAME="tex2html151"
|
||||
HREF="node7.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html156"
|
||||
<A NAME="tex2html159"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html159"
|
||||
HREF="node9.html">Example and test programs</A>
|
||||
<B> Up:</B> <A NAME="tex2html155"
|
||||
<B> Next:</B> <A NAME="tex2html162"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<B> Up:</B> <A NAME="tex2html158"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html149"
|
||||
<B> Previous:</B> <A NAME="tex2html152"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<B> <A NAME="tex2html157"
|
||||
<B> <A NAME="tex2html160"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -201,8 +201,6 @@ followed (optionally) by
|
||||
<PRE>
|
||||
make install
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
+23
-35
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Example and test programs</TITLE>
|
||||
<META NAME="description" CONTENT="Example and test programs">
|
||||
<TITLE>Bug reporting</TITLE>
|
||||
<META NAME="description" CONTENT="Bug reporting">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,6 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node10.html">
|
||||
<LINK REL="previous" HREF="node8.html">
|
||||
<LINK REL="up" HREF="node5.html">
|
||||
<LINK REL="next" HREF="node10.html">
|
||||
@@ -25,60 +26,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html168"
|
||||
<A NAME="tex2html173"
|
||||
HREF="node10.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next.png"></A>
|
||||
<A NAME="tex2html164"
|
||||
<A NAME="tex2html169"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
|
||||
SRC="file:/usr/share/latex2html/icons/up.png"></A>
|
||||
<A NAME="tex2html160"
|
||||
<A NAME="tex2html163"
|
||||
HREF="node8.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html166"
|
||||
<A NAME="tex2html171"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html169"
|
||||
HREF="node10.html">Multi-level Domain Decomposition Background</A>
|
||||
<B> Up:</B> <A NAME="tex2html165"
|
||||
<B> Next:</B> <A NAME="tex2html174"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
<B> Up:</B> <A NAME="tex2html170"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html161"
|
||||
<B> Previous:</B> <A NAME="tex2html164"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<B> <A NAME="tex2html167"
|
||||
<B> <A NAME="tex2html172"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00054000000000000000"></A><A NAME="sec:ex_and_test"></A>
|
||||
<BR>
|
||||
Example and test programs
|
||||
<H2><A NAME="SECTION00054000000000000000">
|
||||
Bug reporting</A>
|
||||
</H2>
|
||||
The package contains the <code>examples</code> and <code>tests</code> directories;
|
||||
both of them are further divided into <code>fileread</code> and
|
||||
<code>pdegen</code> subdirectories. Their purpose is as follows:
|
||||
<DL>
|
||||
<DT><STRONG><TT>examples</TT></STRONG></DT>
|
||||
<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.
|
||||
</DD>
|
||||
<DT><STRONG><TT>tests</TT></STRONG></DT>
|
||||
<DD>contains a set of more sophisticated examples that
|
||||
will allow the user, via the input files in the <code>runs</code>
|
||||
subdirectories, to experiment with the full range of preconditioners
|
||||
implemented in the library.
|
||||
</DD>
|
||||
</DL>
|
||||
The <code>fileread</code> directories contain sample programs that read
|
||||
sparse matrices from files, according to the Matrix Market or the
|
||||
Harwell-Boeing storage format; the <code>pdegen</code> instead generate
|
||||
matrices in full parallel mode from the discretization of a sample PDE.
|
||||
If you find any bugs in our codes, please let us know at
|
||||
|
||||
<a href="mailto:bugreport@mld2p4.it">
|
||||
bugreport@mld2p4.it
|
||||
|
||||
</a>
|
||||
; be aware that
|
||||
the amount of information needed to reproduce a problem in a parallel
|
||||
program may vary quite a lot.
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
+34
-32
@@ -97,50 +97,52 @@ July 24, 2008
|
||||
<LI><A NAME="tex2html22"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html23"
|
||||
HREF="node9.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html24"
|
||||
HREF="node10.html">Multi-level Domain Decomposition Background</A>
|
||||
<UL>
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html25"
|
||||
HREF="node11.html">Multi-level Schwarz Preconditioners</A>
|
||||
HREF="node11.html">Multi-level Domain Decomposition Background</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html26"
|
||||
HREF="node12.html">Smoothed Aggregation</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node12.html">Multi-level Schwarz Preconditioners</A>
|
||||
<LI><A NAME="tex2html27"
|
||||
HREF="node13.html">Getting Started</A>
|
||||
<UL>
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html28"
|
||||
HREF="node14.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="node15.html">User Interface</A>
|
||||
HREF="node14.html">Getting Started</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="node16.html">Subroutine mld_precinit</A>
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="node17.html">Subroutine mld_precset</A>
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="node18.html">Subroutine mld_precbld</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="node19.html">Subroutine mld_precaply</A>
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="node20.html">Subroutine mld_precfree</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="node21.html">Subroutine mld_precdescr</A>
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="node15.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="node16.html">User Interface</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="node17.html">Subroutine mld_precinit</A>
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="node18.html">Subroutine mld_precset</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="node19.html">Subroutine mld_precbld</A>
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="node20.html">Subroutine mld_precaply</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="node21.html">Subroutine mld_precfree</A>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="node22.html">Error Handling</A>
|
||||
HREF="node22.html">Subroutine mld_precdescr</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html37"
|
||||
HREF="node23.html">License</A>
|
||||
HREF="node23.html">Error Handling</A>
|
||||
<LI><A NAME="tex2html38"
|
||||
HREF="node24.html">Bibliography</A>
|
||||
HREF="node24.html">License</A>
|
||||
<LI><A NAME="tex2html39"
|
||||
HREF="node25.html">About this document ...</A>
|
||||
HREF="node25.html">Bibliography</A>
|
||||
<LI><A NAME="tex2html40"
|
||||
HREF="node26.html">About this document ...</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
|
||||
+1
-1
@@ -307,7 +307,7 @@ endef
|
||||
|
||||
define pdflatex-filter
|
||||
@echo
|
||||
@echo "----- latex -------------------------------------------------------"
|
||||
@echo "----- pdflatex -------------------------------------------------------"
|
||||
@echo -n "Starting: "; date
|
||||
@echo
|
||||
cd tmp; ($(PDFLATEX) $(TOPFILE) 2>&1) | $(FILTER)
|
||||
|
||||
+12
-1
@@ -221,7 +221,18 @@ followed (optionally) by
|
||||
\begin{verbatim}
|
||||
make install
|
||||
\end{verbatim}
|
||||
|
||||
\subsection{Bug reporting}
|
||||
If you find any bugs in our codes, please let us know at
|
||||
\begin{rawhtml}
|
||||
<a href="mailto:bugreport@mld2p4.it">
|
||||
\end{rawhtml}
|
||||
bugreport@mld2p4.it
|
||||
\begin{rawhtml}
|
||||
</a>
|
||||
\end{rawhtml}
|
||||
; be aware that
|
||||
the amount of information needed to reproduce a problem in a parallel
|
||||
program may vary quite a lot.
|
||||
\subsection{Example and test programs\label{sec:ex_and_test}}
|
||||
The package contains the \verb|examples| and \verb|tests| directories;
|
||||
both of them are further divided into \verb|fileread| and
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
colorlinks,
|
||||
citecolor=red,
|
||||
linkcolor=blue]{hyperref}
|
||||
\usepackage{html}
|
||||
\usepackage{ifthen}
|
||||
\usepackage{graphicx}
|
||||
\newtheorem{theorem}{Theorem}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
pdfpagelabels,
|
||||
colorlinks,
|
||||
linkcolor=blue]{hyperref}
|
||||
\usepackage{html}
|
||||
\usepackage{ifthen}
|
||||
\usepackage{graphicx}
|
||||
\newtheorem{theorem}{Theorem}
|
||||
@@ -89,7 +90,7 @@
|
||||
\newcommand{\Ref}[1]{\mbox{(\ref{#1})}}
|
||||
|
||||
\begin{document}
|
||||
{\Large\bfseries MLD2P4\\[.8ex] User's and Reference Guide}\\[\baselineskip]
|
||||
{\LARGE\bfseries MLD2P4\\[.8ex] User's and Reference Guide}\\[\baselineskip]
|
||||
\emph{\large A guide for the Multi-Level Domain Decomposition
|
||||
Parallel Preconditioners Package
|
||||
based on PSBLAS}\\[3ex]
|
||||
|
||||
+1711
-1665
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user