mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 14:44:55 +00:00
Fixed doc copyright vs contribution
This commit is contained in:
+49
-44
@@ -98,70 +98,75 @@ July 31, 2017
|
||||
HREF="node3.html">General Overview</A>
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<UL>
|
||||
HREF="node5.html">Contributors</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
HREF="node7.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
HREF="node8.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
HREF="node9.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node10.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<UL>
|
||||
HREF="node11.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html37"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html38"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
HREF="node13.html">AMG preconditioners</A>
|
||||
<LI><A NAME="tex2html39"
|
||||
HREF="node14.html">Smoothers and coarsest-level solvers</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node14.html">Smoothed Aggregation</A>
|
||||
<LI><A NAME="tex2html40"
|
||||
HREF="node15.html">Getting Started</A>
|
||||
<UL>
|
||||
HREF="node15.html">Smoothers and coarsest-level solvers</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html41"
|
||||
HREF="node16.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html42"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node16.html">Getting Started</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html43"
|
||||
HREF="node18.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html44"
|
||||
HREF="node19.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html45"
|
||||
HREF="node20.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html46"
|
||||
HREF="node21.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html47"
|
||||
HREF="node22.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html48"
|
||||
HREF="node23.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html49"
|
||||
HREF="node24.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html50"
|
||||
HREF="node25.html">Subroutine descr</A>
|
||||
<LI><A NAME="tex2html42"
|
||||
HREF="node17.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html43"
|
||||
HREF="node18.html">User Interface</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html44"
|
||||
HREF="node19.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html45"
|
||||
HREF="node20.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html46"
|
||||
HREF="node21.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html47"
|
||||
HREF="node22.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html48"
|
||||
HREF="node23.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html49"
|
||||
HREF="node24.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html50"
|
||||
HREF="node25.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html51"
|
||||
HREF="node26.html">Adding new smoother and solver objects to MLD2P4</A>
|
||||
HREF="node26.html">Subroutine descr</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html52"
|
||||
HREF="node27.html">Error Handling</A>
|
||||
HREF="node27.html">Adding new smoother and solver objects to MLD2P4</A>
|
||||
<LI><A NAME="tex2html53"
|
||||
HREF="node28.html">License</A>
|
||||
HREF="node28.html">Error Handling</A>
|
||||
<LI><A NAME="tex2html54"
|
||||
HREF="node29.html">Bibliography</A>
|
||||
HREF="node29.html">License</A>
|
||||
<LI><A NAME="tex2html55"
|
||||
HREF="node30.html">About this document ...</A>
|
||||
HREF="node30.html">Bibliography</A>
|
||||
<LI><A NAME="tex2html56"
|
||||
HREF="node31.html">About this document ...</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
|
||||
+16
-16
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html66"
|
||||
<A NAME="tex2html67"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html62"
|
||||
<A NAME="tex2html63"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html56"
|
||||
<A NAME="tex2html57"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html64"
|
||||
<A NAME="tex2html65"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html67"
|
||||
<B> Next:</B> <A NAME="tex2html68"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> Up:</B> <A NAME="tex2html63"
|
||||
<B> Up:</B> <A NAME="tex2html64"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html57"
|
||||
<B> Previous:</B> <A NAME="tex2html58"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> <A NAME="tex2html65"
|
||||
<B> <A NAME="tex2html66"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -92,26 +92,26 @@ the user interface of MLD2P4.
|
||||
|
||||
</FONT></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html66"
|
||||
<A NAME="tex2html67"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html62"
|
||||
<A NAME="tex2html63"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html56"
|
||||
<A NAME="tex2html57"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html64"
|
||||
<A NAME="tex2html65"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html67"
|
||||
<B> Next:</B> <A NAME="tex2html68"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> Up:</B> <A NAME="tex2html63"
|
||||
<B> Up:</B> <A NAME="tex2html64"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html57"
|
||||
<B> Previous:</B> <A NAME="tex2html58"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> <A NAME="tex2html65"
|
||||
<B> <A NAME="tex2html66"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+23
-38
@@ -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,65 +18,50 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node11.html">
|
||||
<LINK REL="previous" HREF="node9.html">
|
||||
<LINK REL="up" HREF="node5.html">
|
||||
<LINK REL="up" HREF="node6.html">
|
||||
<LINK REL="next" HREF="node11.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html202"
|
||||
<A NAME="tex2html204"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html198"
|
||||
HREF="node5.html">
|
||||
<A NAME="tex2html200"
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html194"
|
||||
HREF="node9.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html200"
|
||||
<A NAME="tex2html202"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html203"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<B> Up:</B> <A NAME="tex2html199"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Next:</B> <A NAME="tex2html205"
|
||||
HREF="node11.html">Example and test programs</A>
|
||||
<B> Up:</B> <A NAME="tex2html201"
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html195"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<B> <A NAME="tex2html201"
|
||||
HREF="node9.html">Configuration options</A>
|
||||
<B> <A NAME="tex2html203"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00055000000000000000"></A><A NAME="sec:ex_and_test"></A>
|
||||
<BR>
|
||||
Example and test programs
|
||||
<H2><A NAME="SECTION00054000000000000000">
|
||||
Bug reporting</A>
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The package contains the <code>examples</code> and <code>tests</code> directories;
|
||||
both of them are further divided into <code>fileread</code> and
|
||||
<code>pdegen</code> subdirectories. Their purpose is as follows:
|
||||
</FONT></FONT></FONT><DL>
|
||||
<DT><STRONG><TT>examples</TT></STRONG></DT>
|
||||
<DD>contains a set of simple example programs with a
|
||||
predefined choice of preconditioners, selectable via integer
|
||||
values. These are intended to get an acquaintance with the
|
||||
multi-level preconditioners available in MLD2P4.
|
||||
</DD>
|
||||
<DT><STRONG><TT>tests</TT></STRONG></DT>
|
||||
<DD>contains a set of more sophisticated examples that
|
||||
will allow the user, via the input files in the <code>runs</code>
|
||||
subdirectories, to experiment with the full range of preconditioners
|
||||
implemented in the package.
|
||||
</DD>
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The <code>fileread</code> directories contain sample programs that read
|
||||
sparse matrices from files, according to the Matrix Market or the
|
||||
Harwell-Boeing storage format; the <code>pdegen</code> programs generate
|
||||
matrices in full parallel mode from the discretization of a sample partial
|
||||
differential equation.
|
||||
If you find any bugs in our codes, please send an email to <BR><TT>pasqua.dambra@cnr.it</TT>
|
||||
<BR><TT>daniela.diserafino@unicampania.it</TT>
|
||||
<BR><TT>salvatore.filippone@cranfield.ac.uk</TT> <BR>
|
||||
You should be aware that the amount of information needed to reproduce a problem
|
||||
in a parallel program may vary quite a lot.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
+35
-117
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Multigrid Background</TITLE>
|
||||
<META NAME="description" CONTENT="Multigrid 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,9 +18,8 @@ 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="node5.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="previous" HREF="node10.html">
|
||||
<LINK REL="up" HREF="node6.html">
|
||||
<LINK REL="next" HREF="node12.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,9 +29,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html210"
|
||||
HREF="userhtml.html">
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html204"
|
||||
<A NAME="tex2html206"
|
||||
HREF="node10.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html212"
|
||||
@@ -40,126 +39,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html215"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<B> Up:</B> <A NAME="tex2html211"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html205"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html207"
|
||||
HREF="node10.html">Bug reporting</A>
|
||||
<B> <A NAME="tex2html213"
|
||||
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>
|
||||
Multigrid Background
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
|
||||
Example and test programs
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The package contains the <code>examples</code> and <code>tests</code> directories;
|
||||
both of them are further divided into <code>fileread</code> and
|
||||
<code>pdegen</code> subdirectories. Their purpose is as follows:
|
||||
</FONT></FONT></FONT><DL>
|
||||
<DT><STRONG><TT>examples</TT></STRONG></DT>
|
||||
<DD>contains a set of simple example programs with a
|
||||
predefined choice of preconditioners, selectable via integer
|
||||
values. These are intended to get an acquaintance with the
|
||||
multi-level preconditioners available in MLD2P4.
|
||||
</DD>
|
||||
<DT><STRONG><TT>tests</TT></STRONG></DT>
|
||||
<DD>contains a set of more sophisticated examples that
|
||||
will allow the user, via the input files in the <code>runs</code>
|
||||
subdirectories, to experiment with the full range of preconditioners
|
||||
implemented in the package.
|
||||
</DD>
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The <code>fileread</code> directories contain sample programs that read
|
||||
sparse matrices from files, according to the Matrix Market or the
|
||||
Harwell-Boeing storage format; the <code>pdegen</code> programs generate
|
||||
matrices in full parallel mode from the discretization of a sample partial
|
||||
differential equation.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Multigrid preconditioners, coupled with Krylov iterative
|
||||
solvers, are widely used in the parallel solution of large and sparse linear systems,
|
||||
because of their optimality in the solution of linear systems arising from the
|
||||
discretization of scalar elliptic Partial Differential Equations (PDEs) on regular grids.
|
||||
Optimality, also known as algorithmic scalability, is the property
|
||||
of having a computational cost per iteration that depends linearly on
|
||||
the problem size, and a convergence rate that is independent of the problem size.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Multigrid preconditioners are based on a recursive application of a two-grid process
|
||||
consisting of smoother iterations and a coarse-space (or coarse-level) correction.
|
||||
The smoothers may be either basic iterative methods, such as the Jacobi and Gauss-Seidel ones,
|
||||
or more complex subspace-correction methods, such as the Schwarz ones.
|
||||
The coarse-space correction consists of solving, in an appropriately chosen
|
||||
coarse space, the residual equation associated with the approximate solution computed
|
||||
by the smoother, and of using the solution of this equation to correct the
|
||||
previous approximation. The transfer of information between the original
|
||||
(fine) space and the coarse one is performed by using suitable restriction and
|
||||
prolongation operators. The construction of the coarse space and the corresponding
|
||||
transfer operators is carried out by applying a so-called coarsening algorithm to the system
|
||||
matrix. Two main approaches can be used to perform coarsening: the geometric approach,
|
||||
which exploits the knowledge of some physical grid associated with the matrix
|
||||
and requires the user to define transfer operators from the fine
|
||||
to the coarse level and vice versa, and the algebraic approach, which builds
|
||||
the coarse-space correction and the associate transfer operators using only matrix
|
||||
information. The first approach may be difficult when the system comes from
|
||||
discretizations on complex geometries;
|
||||
furthermore, ad hoc one-level smoothers may be required to get an efficient
|
||||
interplay between fine and coarse levels, e.g., when matrices with highly varying coefficients
|
||||
are considered. The second approach performs a fully automatic coarsening and enforces the
|
||||
interplay between fine and coarse level by suitably choosing the coarse space and
|
||||
the coarse-to-fine interpolation (see, e.g., [<A
|
||||
HREF="node29.html#Briggs2000">3</A>,<A
|
||||
HREF="node29.html#Stuben_01">23</A>,<A
|
||||
HREF="node29.html#dd2_96">21</A>] for details.)
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 uses a pure algebraic approach, based on the smoothed
|
||||
aggregation algorithm [<A
|
||||
HREF="node29.html#BREZINA_VANEK">2</A>,<A
|
||||
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>],
|
||||
for building the sequence of coarse matrices and transfer operators,
|
||||
starting from the original one.
|
||||
A decoupled version of this algorithm is implemented, where the smoothed
|
||||
aggregation is applied locally to each submatrix [<A
|
||||
HREF="node29.html#TUMINARO_TONG">24</A>].
|
||||
A brief description of the AMG preconditioners implemented in MLD2P4 is given in
|
||||
Sections <A HREF="node12.html#sec:multilevel">4.1</A>-<A HREF="node14.html#sec:smoothers">4.3</A>. For further details the reader
|
||||
is referred to [<A
|
||||
HREF="node29.html#para_04">4</A>,<A
|
||||
HREF="node29.html#aaecc_07">5</A>,<A
|
||||
HREF="node29.html#apnum_07">7</A>,<A
|
||||
HREF="node29.html#MLD2P4_TOMS">8</A>].
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We note that optimal multigrid preconditioners do not necessarily correspond
|
||||
to minimum execution times in a parallel setting. Indeed, to obtain effective parallel
|
||||
multigrid preconditioners, a tradeoff between the optimality and the cost of building and
|
||||
applying the smoothers and the coarse-space corrections must be achieved. Effective
|
||||
parallel preconditioners require algorithmic scalability to be coupled with implementation
|
||||
scalability, i.e., a computational cost per iteration which remains (almost) constant as
|
||||
the number of parallel processors increases.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html216"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
<LI><A NAME="tex2html217"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<LI><A NAME="tex2html218"
|
||||
HREF="node14.html">Smoothers and coarsest-level solvers</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html214"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html210"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html204"
|
||||
HREF="node10.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html212"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html215"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html211"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html205"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
<B> <A NAME="tex2html213"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+104
-251
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>AMG preconditioners</TITLE>
|
||||
<META NAME="description" CONTENT="AMG preconditioners">
|
||||
<TITLE>Multigrid Background</TITLE>
|
||||
<META NAME="description" CONTENT="Multigrid Background">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,293 +18,146 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node13.html">
|
||||
<LINK REL="previous" HREF="node11.html">
|
||||
<LINK REL="up" HREF="node11.html">
|
||||
<LINK REL="next" HREF="node16.html">
|
||||
<LINK REL="previous" HREF="node6.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node13.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html229"
|
||||
<A NAME="tex2html226"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html225"
|
||||
HREF="node11.html">
|
||||
<A NAME="tex2html222"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html219"
|
||||
<A NAME="tex2html216"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html227"
|
||||
<A NAME="tex2html224"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html230"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> Up:</B> <A NAME="tex2html226"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html220"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<B> <A NAME="tex2html228"
|
||||
<B> Next:</B> <A NAME="tex2html227"
|
||||
HREF="node13.html">AMG preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html223"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html217"
|
||||
HREF="node11.html">Example and test programs</A>
|
||||
<B> <A NAME="tex2html225"
|
||||
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>
|
||||
AMG preconditioners
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to describe the AMG preconditioners available in MLD2P4, we consider a
|
||||
linear system
|
||||
</FONT></FONT></FONT>
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
Multigrid Background
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
Ax=b,
|
||||
\end{equation}
|
||||
-->
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:system"></A><IMG
|
||||
WIDTH="58" HEIGHT="30" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="\begin{displaymath}
|
||||
Ax=b,
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(2)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
where <!-- MATH
|
||||
$A=(a_{ij}) \in \mathbb{R}^{n \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img5.png"
|
||||
ALT="$A=(a_{ij}) \in \mathbb{R}^{n \times n}$"> is a nonsingular sparse matrix;
|
||||
for ease of presentation we assume <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img3.png"
|
||||
ALT="$A$"> is real, but the
|
||||
results are valid for the complex case as well.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Let us assume as finest index space the set of row (column) indices of <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img3.png"
|
||||
ALT="$A$">, i.e.,
|
||||
<!-- MATH
|
||||
$\Omega = \{1, 2, \ldots, n\}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="132" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img6.png"
|
||||
ALT="$\Omega = \{1, 2, \ldots, n\}$">.
|
||||
Any algebraic multilevel preconditioners implemented in MLD2P4 generates
|
||||
a hierarchy of index spaces and a corresponding hierarchy of matrices,
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Multigrid preconditioners, coupled with Krylov iterative
|
||||
solvers, are widely used in the parallel solution of large and sparse linear systems,
|
||||
because of their optimality in the solution of linear systems arising from the
|
||||
discretization of scalar elliptic Partial Differential Equations (PDEs) on regular grids.
|
||||
Optimality, also known as algorithmic scalability, is the property
|
||||
of having a computational cost per iteration that depends linearly on
|
||||
the problem size, and a convergence rate that is independent of the problem size.
|
||||
</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
\Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev},
|
||||
\quad A^1 \equiv A, A^2, \ldots, A^{nlev},
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="398" HEIGHT="30" BORDER="0"
|
||||
SRC="img7.png"
|
||||
ALT="\begin{displaymath}\Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev},␍\quad A^1 \equiv A, A^2, \ldots, A^{nlev}, \end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
by using the information contained in <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img3.png"
|
||||
ALT="$A$">, without assuming any
|
||||
knowledge of the geometry of the problem from which <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img3.png"
|
||||
ALT="$A$"> originates.
|
||||
A vector space <!-- MATH
|
||||
$\mathbb{R}^{n_{k}}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="33" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img8.png"
|
||||
ALT="$\mathbb{R}^{n_{k}}$"> is associated with <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$">,
|
||||
where <IMG
|
||||
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$n_k$"> is the size of <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$">.
|
||||
For all <IMG
|
||||
WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$k < nlev$">, a restriction operator and a prolongation one are built,
|
||||
which connect two levels <IMG
|
||||
WIDTH="14" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img12.png"
|
||||
ALT="$k$"> and <IMG
|
||||
WIDTH="44" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img13.png"
|
||||
ALT="$k+1$">:
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Multigrid preconditioners are based on a recursive application of a two-grid process
|
||||
consisting of smoother iterations and a coarse-space (or coarse-level) correction.
|
||||
The smoothers may be either basic iterative methods, such as the Jacobi and Gauss-Seidel ones,
|
||||
or more complex subspace-correction methods, such as the Schwarz ones.
|
||||
The coarse-space correction consists of solving, in an appropriately chosen
|
||||
coarse space, the residual equation associated with the approximate solution computed
|
||||
by the smoother, and of using the solution of this equation to correct the
|
||||
previous approximation. The transfer of information between the original
|
||||
(fine) space and the coarse one is performed by using suitable restriction and
|
||||
prolongation operators. The construction of the coarse space and the corresponding
|
||||
transfer operators is carried out by applying a so-called coarsening algorithm to the system
|
||||
matrix. Two main approaches can be used to perform coarsening: the geometric approach,
|
||||
which exploits the knowledge of some physical grid associated with the matrix
|
||||
and requires the user to define transfer operators from the fine
|
||||
to the coarse level and vice versa, and the algebraic approach, which builds
|
||||
the coarse-space correction and the associate transfer operators using only matrix
|
||||
information. The first approach may be difficult when the system comes from
|
||||
discretizations on complex geometries;
|
||||
furthermore, ad hoc one-level smoothers may be required to get an efficient
|
||||
interplay between fine and coarse levels, e.g., when matrices with highly varying coefficients
|
||||
are considered. The second approach performs a fully automatic coarsening and enforces the
|
||||
interplay between fine and coarse level by suitably choosing the coarse space and
|
||||
the coarse-to-fine interpolation (see, e.g., [<A
|
||||
HREF="node30.html#Briggs2000">3</A>,<A
|
||||
HREF="node30.html#Stuben_01">23</A>,<A
|
||||
HREF="node30.html#dd2_96">21</A>] for details.)
|
||||
</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad
|
||||
R^k \in \mathbb{R}^{n_{k+1}\times n_k};
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="254" HEIGHT="30" BORDER="0"
|
||||
SRC="img14.png"
|
||||
ALT="\begin{displaymath}␍ P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad ␍ R^k \in \mathbb{R}^{n_{k+1}\times n_k};␍\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
the matrix <IMG
|
||||
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img15.png"
|
||||
ALT="$A^{k+1}$"> is computed by using the previous operators according
|
||||
to the Galerkin approach, i.e.,
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 uses a pure algebraic approach, based on the smoothed
|
||||
aggregation algorithm [<A
|
||||
HREF="node30.html#BREZINA_VANEK">2</A>,<A
|
||||
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>],
|
||||
for building the sequence of coarse matrices and transfer operators,
|
||||
starting from the original one.
|
||||
A decoupled version of this algorithm is implemented, where the smoothed
|
||||
aggregation is applied locally to each submatrix [<A
|
||||
HREF="node30.html#TUMINARO_TONG">24</A>].
|
||||
A brief description of the AMG preconditioners implemented in MLD2P4 is given in
|
||||
Sections <A HREF="node13.html#sec:multilevel">4.1</A>-<A HREF="node15.html#sec:smoothers">4.3</A>. For further details the reader
|
||||
is referred to [<A
|
||||
HREF="node30.html#para_04">4</A>,<A
|
||||
HREF="node30.html#aaecc_07">5</A>,<A
|
||||
HREF="node30.html#apnum_07">7</A>,<A
|
||||
HREF="node30.html#MLD2P4_TOMS">8</A>].
|
||||
</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
A^{k+1}=R^kA^kP^k.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="131" HEIGHT="27" BORDER="0"
|
||||
SRC="img16.png"
|
||||
ALT="\begin{displaymath}␍ A^{k+1}=R^kA^kP^k.␍\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
In the current implementation of MLD2P4 we have <IMG
|
||||
WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img17.png"
|
||||
ALT="$R^k=(P^k)^T$">
|
||||
A smoother with iteration matrix <IMG
|
||||
WIDTH="32" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img18.png"
|
||||
ALT="$M^k$"> is set up at each level <IMG
|
||||
WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$k < nlev$">, and a solver
|
||||
is set up at the coarsest level, so that they are ready for application
|
||||
(for example, setting up a solver based on the <IMG
|
||||
WIDTH="30" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img19.png"
|
||||
ALT="$LU$"> factorization means computing
|
||||
and storing the <IMG
|
||||
WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img20.png"
|
||||
ALT="$L$"> and <IMG
|
||||
WIDTH="18" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$U$"> factors). The construction of the hierarchy of AMG components
|
||||
described so far corresponds to the so-called build phase of the preconditioner.
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We note that optimal multigrid preconditioners do not necessarily correspond
|
||||
to minimum execution times in a parallel setting. Indeed, to obtain effective parallel
|
||||
multigrid preconditioners, a tradeoff between the optimality and the cost of building and
|
||||
applying the smoothers and the coarse-space corrections must be achieved. Effective
|
||||
parallel preconditioners require algorithmic scalability to be coupled with implementation
|
||||
scalability, i.e., a computational cost per iteration which remains (almost) constant as
|
||||
the number of parallel processors increases.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:application_alg"></A><A NAME="517"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
|
||||
Application phase of a V-cycle preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
$\framebox{
|
||||
\begin{minipage}{.85\textwidth}
|
||||
\begin{tabbing}
|
||||
\quad \=\quad \=\quad \=\quad \\[-3mm]
|
||||
procedure V-cycle$\left(k,A^k,b^k,u^k\right)$\ \\[2mm]
|
||||
\>if $\left(k \ne nlev \right)$\ then \\[1mm]
|
||||
\>\> $u^k = u^k + M^k \left(b^k - A^k u^k\right)$\ \\[1mm]
|
||||
\>\> $b^{k+1} = R^{k+1}\left(b^k - A^k u^k\right)$\ \\[1mm]
|
||||
\>\> $u^{k+1} =$\ V-cycle$\left(k+1,A^{k+1},b^{k+1},0\right)$\ \\[1mm]
|
||||
\>\> $u^k = u^k + P^{k+1} u^{k+1}$\ \\[1mm]
|
||||
\>\> $u^k = u^k + M^k \left(b^k - A^k u^k\right)$\ \\[1mm]
|
||||
\>else \\[1mm]
|
||||
\>\> $u^k = \left(A^k\right)^{-1} b^k$\\[1mm]
|
||||
\>endif \\[1mm]
|
||||
\>return $u^k$\ \\[1mm]
|
||||
end
|
||||
\end{tabbing}
|
||||
\end{minipage}
|
||||
}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="333" HEIGHT="336" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img22.png"
|
||||
ALT="\framebox{␍\begin{minipage}{.85\textwidth}␍\begin{tabbing}␍\quad \=\quad \=\quad...
|
||||
...mm]␍\>endif \ [1mm]␍\>return $u^k$ \ [1mm]␍end␍\end{tabbing}␍\end{minipage}␍}">
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The components produced in the build phase may be combined in several ways
|
||||
to obtain different multilevel preconditioners;
|
||||
this is done in the application phase, i.e., in the computation of a vector
|
||||
of type <IMG
|
||||
WIDTH="82" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img23.png"
|
||||
ALT="$w=B^{-1}v$">, where <IMG
|
||||
WIDTH="19" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img24.png"
|
||||
ALT="$B$"> denotes the preconditioner, usually within an iteration
|
||||
of a Krylov solver [<A
|
||||
HREF="node29.html#Saad_book">20</A>]. An example of such a combination, known as
|
||||
V-cycle, is given in Figure <A HREF="#fig:application_alg">1</A>. In this case, a single iteration
|
||||
of the same smoother is used before and after the the recursive call to the V-cycle (i.e.,
|
||||
in the pre-smoothing and post-smoothing phases); however, different choices can be
|
||||
performed. Other cycles can be defined; in MLD2P4, we implemented the standard V-cycle
|
||||
and W-cycle [<A
|
||||
HREF="node29.html#Briggs2000">3</A>], and a version of the K-cycle described
|
||||
in [<A
|
||||
HREF="node29.html#Notay2008">19</A>].
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html228"
|
||||
HREF="node13.html">AMG preconditioners</A>
|
||||
<LI><A NAME="tex2html229"
|
||||
HREF="node14.html">Smoothed Aggregation</A>
|
||||
<LI><A NAME="tex2html230"
|
||||
HREF="node15.html">Smoothers and coarsest-level solvers</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html229"
|
||||
<A NAME="tex2html226"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html225"
|
||||
HREF="node11.html">
|
||||
<A NAME="tex2html222"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html219"
|
||||
<A NAME="tex2html216"
|
||||
HREF="node11.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html227"
|
||||
<A NAME="tex2html224"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html230"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> Up:</B> <A NAME="tex2html226"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html220"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<B> <A NAME="tex2html228"
|
||||
<B> Next:</B> <A NAME="tex2html227"
|
||||
HREF="node13.html">AMG preconditioners</A>
|
||||
<B> Up:</B> <A NAME="tex2html223"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html217"
|
||||
HREF="node11.html">Example and test programs</A>
|
||||
<B> <A NAME="tex2html225"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+200
-289
@@ -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>AMG preconditioners</TITLE>
|
||||
<META NAME="description" CONTENT="AMG preconditioners">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node14.html">
|
||||
<LINK REL="previous" HREF="node12.html">
|
||||
<LINK REL="up" HREF="node11.html">
|
||||
<LINK REL="up" HREF="node12.html">
|
||||
<LINK REL="next" HREF="node14.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html237"
|
||||
HREF="node11.html">
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html231"
|
||||
HREF="node12.html">
|
||||
@@ -40,336 +40,247 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html242"
|
||||
HREF="node14.html">Smoothers and coarsest-level solvers</A>
|
||||
HREF="node14.html">Smoothed Aggregation</A>
|
||||
<B> Up:</B> <A NAME="tex2html238"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html232"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<B> <A NAME="tex2html240"
|
||||
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
|
||||
AMG preconditioners
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to define the prolongator <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$">, used to compute
|
||||
the coarse-level matrix <IMG
|
||||
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img15.png"
|
||||
ALT="$A^{k+1}$">, MLD2P4 uses the smoothed aggregation
|
||||
algorithm described in [<A
|
||||
HREF="node29.html#BREZINA_VANEK">2</A>,<A
|
||||
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>].
|
||||
The basic idea of this algorithm is to build a coarse set of indices
|
||||
<IMG
|
||||
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img26.png"
|
||||
ALT="$\Omega^{k+1}$"> by suitably grouping the indices of <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$"> into disjoint
|
||||
subsets (aggregates), and to define the coarse-to-fine space transfer operator
|
||||
<IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$"> by applying a suitable smoother to a simple piecewise constant
|
||||
prolongation operator, with the aim of improving the quality of the coarse-space correction.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to describe the AMG preconditioners available in MLD2P4, we consider a
|
||||
linear system
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Three main steps can be identified in the smoothed aggregation procedure:
|
||||
</FONT></FONT></FONT>
|
||||
<OL>
|
||||
<LI>aggregation of the indices of <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$"> to obtain <IMG
|
||||
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img26.png"
|
||||
ALT="$\Omega^{k+1}$">;
|
||||
</LI>
|
||||
<LI>construction of the prolongator <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$">;
|
||||
</LI>
|
||||
<LI>application of <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$"> and <IMG
|
||||
WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img17.png"
|
||||
ALT="$R^k=(P^k)^T$"> to build <IMG
|
||||
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img15.png"
|
||||
ALT="$A^{k+1}$">.
|
||||
</LI>
|
||||
</OL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to perform the coarsening step, the smoothed aggregation algorithm
|
||||
described in [<A
|
||||
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>] is used. In this algorithm,
|
||||
each index <!-- MATH
|
||||
$j \in \Omega^{k+1}$
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
Ax=b,
|
||||
\end{equation}
|
||||
-->
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:system"></A><IMG
|
||||
WIDTH="58" HEIGHT="30" BORDER="0"
|
||||
SRC="img2.png"
|
||||
ALT="\begin{displaymath}
|
||||
Ax=b,
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(2)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
where <!-- MATH
|
||||
$A=(a_{ij}) \in \mathbb{R}^{n \times n}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="72" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.png"
|
||||
ALT="$j \in \Omega^{k+1}$"> corresponds to an aggregate <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img28.png"
|
||||
ALT="$\Omega^k_j$"> of <IMG
|
||||
WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img5.png"
|
||||
ALT="$A=(a_{ij}) \in \mathbb{R}^{n \times n}$"> is a nonsingular sparse matrix;
|
||||
for ease of presentation we assume <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img3.png"
|
||||
ALT="$A$"> is real, but the
|
||||
results are valid for the complex case as well.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Let us assume as finest index space the set of row (column) indices of <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img3.png"
|
||||
ALT="$A$">, i.e.,
|
||||
<!-- MATH
|
||||
$\Omega = \{1, 2, \ldots, n\}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="132" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img6.png"
|
||||
ALT="$\Omega = \{1, 2, \ldots, n\}$">.
|
||||
Any algebraic multilevel preconditioners implemented in MLD2P4 generates
|
||||
a hierarchy of index spaces and a corresponding hierarchy of matrices,
|
||||
</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
\Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev},
|
||||
\quad A^1 \equiv A, A^2, \ldots, A^{nlev},
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="398" HEIGHT="30" BORDER="0"
|
||||
SRC="img7.png"
|
||||
ALT="\begin{displaymath}\Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev},␍\quad A^1 \equiv A, A^2, \ldots, A^{nlev}, \end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
by using the information contained in <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img3.png"
|
||||
ALT="$A$">, without assuming any
|
||||
knowledge of the geometry of the problem from which <IMG
|
||||
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img3.png"
|
||||
ALT="$A$"> originates.
|
||||
A vector space <!-- MATH
|
||||
$\mathbb{R}^{n_{k}}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="33" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img8.png"
|
||||
ALT="$\mathbb{R}^{n_{k}}$"> is associated with <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$">,
|
||||
consisting of a suitably chosen index <!-- MATH
|
||||
$i \in \Omega^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="52" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img29.png"
|
||||
ALT="$i \in \Omega^k$"> and indices that are (usually) contained in a
|
||||
strongly-coupled neighborood of <IMG
|
||||
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img30.png"
|
||||
ALT="$i$">, i.e.,
|
||||
</FONT></FONT></FONT>
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
\Omega^k_j \subset \mathcal{N}_i^k(\theta) =
|
||||
\left\{ r \in \Omega^k: |a_{ir}^k| > \theta \sqrt{|a_{ii}^ka_{rr}^k|} \right \} \cup \left\{ i \right\},
|
||||
\end{equation}
|
||||
-->
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:strongly_coup"></A><IMG
|
||||
WIDTH="387" HEIGHT="72" BORDER="0"
|
||||
SRC="img31.png"
|
||||
ALT="\begin{displaymath}
|
||||
\Omega^k_j \subset \mathcal{N}_i^k(\theta) = ␍ \left\{ r ...
|
||||
...vert a_{ii}^ka_{rr}^k\vert} \right \} \cup \left\{ i \right\},␍\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(3)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
for a given threshold <!-- MATH
|
||||
$\theta \in [0,1]$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="69" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img32.png"
|
||||
ALT="$\theta \in [0,1]$"> (see [<A
|
||||
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>] for the details).
|
||||
Since this algorithm has a sequential nature, a decoupled
|
||||
version of it is applied, where each processor independently executes
|
||||
the algorithm on the set of indices 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 some nonuniform aggregates
|
||||
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="img3.png"
|
||||
ALT="$A$">. Nevertheless, this parallel algorithm has been chosen for
|
||||
MLD2P4, since it has been shown to produce good results in practice
|
||||
[<A
|
||||
HREF="node29.html#aaecc_07">5</A>,<A
|
||||
HREF="node29.html#apnum_07">7</A>,<A
|
||||
HREF="node29.html#TUMINARO_TONG">24</A>].
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The prolongator <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$"> is built starting from a tentative prolongator
|
||||
<!-- MATH
|
||||
$\bar{P}^k \in \mathbb{R}^{n_k \times n_{k+1}}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="117" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img33.png"
|
||||
ALT="$\bar{P}^k \in \mathbb{R}^{n_k \times n_{k+1}}$">, defined as
|
||||
</FONT></FONT></FONT>
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
\bar{P}^k =(\bar{p}_{ij}^k), \quad \bar{p}_{ij}^k =
|
||||
\left\{ \begin{array}{ll}
|
||||
1 & \quad \mbox{if} \; i \in \Omega^k_j, \\
|
||||
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="287" HEIGHT="51" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="\begin{displaymath}␍\bar{P}^k =(\bar{p}_{ij}^k), \quad \bar{p}_{ij}^k = ␍\left\{...
|
||||
...ega^k_j, \ ␍0 & \quad \mbox{otherwise},␍\end{array} \right.
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(4)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
where <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img28.png"
|
||||
ALT="$\Omega^k_j$"> is the aggregate of <IMG
|
||||
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img10.png"
|
||||
ALT="$n_k$"> is the size of <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$">
|
||||
corresponding to the index <!-- MATH
|
||||
$j \in \Omega^{k+1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="72" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.png"
|
||||
ALT="$j \in \Omega^{k+1}$">.
|
||||
<IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$"> is obtained by applying to <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$\bar{P}^k$"> a smoother
|
||||
<!-- MATH
|
||||
$S^k \in \mathbb{R}^{n_k \times n_k}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="101" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img36.png"
|
||||
ALT="$S^k \in \mathbb{R}^{n_k \times n_k}$">:
|
||||
ALT="$\Omega^k$">.
|
||||
For all <IMG
|
||||
WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$k < nlev$">, a restriction operator and a prolongation one are built,
|
||||
which connect two levels <IMG
|
||||
WIDTH="14" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img12.png"
|
||||
ALT="$k$"> and <IMG
|
||||
WIDTH="44" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img13.png"
|
||||
ALT="$k+1$">:
|
||||
</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
P^k = S^k \bar{P}^k,
|
||||
P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad
|
||||
R^k \in \mathbb{R}^{n_{k+1}\times n_k};
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="90" HEIGHT="30" BORDER="0"
|
||||
SRC="img37.png"
|
||||
ALT="\begin{displaymath}␍P^k = S^k \bar{P}^k,␍\end{displaymath}">
|
||||
WIDTH="254" HEIGHT="30" BORDER="0"
|
||||
SRC="img14.png"
|
||||
ALT="\begin{displaymath}␍ P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad ␍ R^k \in \mathbb{R}^{n_{k+1}\times n_k};␍\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
in order to remove nonsmooth components from the range of the prolongator,
|
||||
and hence to improve the convergence properties of the multi-level
|
||||
method [<A
|
||||
HREF="node29.html#BREZINA_VANEK">2</A>,<A
|
||||
HREF="node29.html#Stuben_01">23</A>].
|
||||
A simple choice for <IMG
|
||||
WIDTH="25" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img38.png"
|
||||
ALT="$S^k$"> is the damped Jacobi smoother:
|
||||
the matrix <IMG
|
||||
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img15.png"
|
||||
ALT="$A^{k+1}$"> is computed by using the previous operators according
|
||||
to the Galerkin approach, i.e.,
|
||||
</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
S^k = I - \omega^k (D^k)^{-1} A^k_F ,
|
||||
A^{k+1}=R^kA^kP^k.
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="175" HEIGHT="31" BORDER="0"
|
||||
SRC="img39.png"
|
||||
ALT="\begin{displaymath}␍S^k = I - \omega^k (D^k)^{-1} A^k_F , ␍\end{displaymath}">
|
||||
WIDTH="131" HEIGHT="27" BORDER="0"
|
||||
SRC="img16.png"
|
||||
ALT="\begin{displaymath}␍ A^{k+1}=R^kA^kP^k.␍\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
where <IMG
|
||||
WIDTH="28" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img40.png"
|
||||
ALT="$D^k$"> is the diagonal matrix with the same diagonal entries as <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img41.png"
|
||||
ALT="$A^k$">,
|
||||
In the current implementation of MLD2P4 we have <IMG
|
||||
WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img17.png"
|
||||
ALT="$R^k=(P^k)^T$">
|
||||
A smoother with iteration matrix <IMG
|
||||
WIDTH="32" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img18.png"
|
||||
ALT="$M^k$"> is set up at each level <IMG
|
||||
WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img11.png"
|
||||
ALT="$k < nlev$">, and a solver
|
||||
is set up at the coarsest level, so that they are ready for application
|
||||
(for example, setting up a solver based on the <IMG
|
||||
WIDTH="30" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img19.png"
|
||||
ALT="$LU$"> factorization means computing
|
||||
and storing the <IMG
|
||||
WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img20.png"
|
||||
ALT="$L$"> and <IMG
|
||||
WIDTH="18" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img21.png"
|
||||
ALT="$U$"> factors). The construction of the hierarchy of AMG components
|
||||
described so far corresponds to the so-called build phase of the preconditioner.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:application_alg"></A><A NAME="524"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
|
||||
Application phase of a V-cycle preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
$A^k_F = (\bar{a}_{ij}^k)$
|
||||
$\framebox{
|
||||
\begin{minipage}{.85\textwidth}
|
||||
\begin{tabbing}
|
||||
\quad \=\quad \=\quad \=\quad \\[-3mm]
|
||||
procedure V-cycle$\left(k,A^k,b^k,u^k\right)$\ \\[2mm]
|
||||
\>if $\left(k \ne nlev \right)$\ then \\[1mm]
|
||||
\>\> $u^k = u^k + M^k \left(b^k - A^k u^k\right)$\ \\[1mm]
|
||||
\>\> $b^{k+1} = R^{k+1}\left(b^k - A^k u^k\right)$\ \\[1mm]
|
||||
\>\> $u^{k+1} =$\ V-cycle$\left(k+1,A^{k+1},b^{k+1},0\right)$\ \\[1mm]
|
||||
\>\> $u^k = u^k + P^{k+1} u^{k+1}$\ \\[1mm]
|
||||
\>\> $u^k = u^k + M^k \left(b^k - A^k u^k\right)$\ \\[1mm]
|
||||
\>else \\[1mm]
|
||||
\>\> $u^k = \left(A^k\right)^{-1} b^k$\\[1mm]
|
||||
\>endif \\[1mm]
|
||||
\>return $u^k$\ \\[1mm]
|
||||
end
|
||||
\end{tabbing}
|
||||
\end{minipage}
|
||||
}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="87" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img42.png"
|
||||
ALT="$A^k_F = (\bar{a}_{ij}^k)$"> is the filtered matrix defined as
|
||||
</FONT></FONT></FONT>
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
WIDTH="333" HEIGHT="336" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img22.png"
|
||||
ALT="\framebox{␍\begin{minipage}{.85\textwidth}␍\begin{tabbing}␍\quad \=\quad \=\quad...
|
||||
...mm]␍\>endif [1mm]␍\>return $u^k$ [1mm]␍end␍\end{tabbing}␍\end{minipage}␍}">
|
||||
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
\bar{a}_{ij}^k =
|
||||
\left \{ \begin{array}{ll}
|
||||
a_{ij}^k & \mbox{if } j \in \mathcal{N}_i^k(\theta), \\
|
||||
0 & \mbox{otherwise},
|
||||
\end{array} \right.
|
||||
\; (j \ne i),
|
||||
\qquad
|
||||
\bar{a}_{ii}^k = a_{ii}^k - \sum_{j \ne i} (a_{ij}^k - \bar{a}_{ij}^k),
|
||||
\end{equation}
|
||||
-->
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:filtered"></A><IMG
|
||||
WIDTH="514" HEIGHT="74" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="\begin{displaymath}
|
||||
\bar{a}_{ij}^k =␍ \left \{ \begin{array}{ll}␍ a_{ij}^k & ...
|
||||
...ii}^k = a_{ii}^k - \sum_{j \ne i} (a_{ij}^k - \bar{a}_{ij}^k),␍\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(5)</TD></TR>
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
and <IMG
|
||||
WIDTH="24" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img44.png"
|
||||
ALT="$\omega^k$"> is an approximation of <IMG
|
||||
WIDTH="61" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img45.png"
|
||||
ALT="$4/(3\rho^k)$">, where
|
||||
<IMG
|
||||
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img46.png"
|
||||
ALT="$\rho^k$"> is the spectral radius of <!-- MATH
|
||||
$(D^k)^{-1}A^k_F$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="83" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img47.png"
|
||||
ALT="$(D^k)^{-1}A^k_F$"> [<A
|
||||
HREF="node29.html#BREZINA_VANEK">2</A>].
|
||||
In MLD2P4 this approximation is obtained by using <!-- MATH
|
||||
$\| A^k_F \|_\infty$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="61" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img48.png"
|
||||
ALT="$\Vert A^k_F \Vert _\infty$"> as an estimate
|
||||
of <IMG
|
||||
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img46.png"
|
||||
ALT="$\rho^k$">. Note that for systems coming from uniformly elliptic
|
||||
problems, filtering the matrix <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img41.png"
|
||||
ALT="$A^k$"> has little or no effect, and
|
||||
<IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img41.png"
|
||||
ALT="$A^k$"> can be used instead of <IMG
|
||||
WIDTH="29" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img49.png"
|
||||
ALT="$A^k_F$">. The latter choice is the default in MLD2P4.
|
||||
</DIV>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The components produced in the build phase may be combined in several ways
|
||||
to obtain different multilevel preconditioners;
|
||||
this is done in the application phase, i.e., in the computation of a vector
|
||||
of type <IMG
|
||||
WIDTH="82" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img23.png"
|
||||
ALT="$w=B^{-1}v$">, where <IMG
|
||||
WIDTH="19" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img24.png"
|
||||
ALT="$B$"> denotes the preconditioner, usually within an iteration
|
||||
of a Krylov solver [<A
|
||||
HREF="node30.html#Saad_book">20</A>]. An example of such a combination, known as
|
||||
V-cycle, is given in Figure <A HREF="#fig:application_alg">1</A>. In this case, a single iteration
|
||||
of the same smoother is used before and after the the recursive call to the V-cycle (i.e.,
|
||||
in the pre-smoothing and post-smoothing phases); however, different choices can be
|
||||
performed. Other cycles can be defined; in MLD2P4, we implemented the standard V-cycle
|
||||
and W-cycle [<A
|
||||
HREF="node30.html#Briggs2000">3</A>], and a version of the K-cycle described
|
||||
in [<A
|
||||
HREF="node30.html#Notay2008">19</A>].
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
@@ -378,7 +289,7 @@ problems, filtering the matrix <IMG
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html237"
|
||||
HREF="node11.html">
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html231"
|
||||
HREF="node12.html">
|
||||
@@ -388,11 +299,11 @@ problems, filtering the matrix <IMG
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html242"
|
||||
HREF="node14.html">Smoothers and coarsest-level solvers</A>
|
||||
HREF="node14.html">Smoothed Aggregation</A>
|
||||
<B> Up:</B> <A NAME="tex2html238"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html232"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<B> <A NAME="tex2html240"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+312
-200
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Smoothers and coarsest-level solvers</TITLE>
|
||||
<META NAME="description" CONTENT="Smoothers and coarsest-level solvers">
|
||||
<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,270 +18,382 @@ 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="node13.html">
|
||||
<LINK REL="up" HREF="node11.html">
|
||||
<LINK REL="up" HREF="node12.html">
|
||||
<LINK REL="next" HREF="node15.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html251"
|
||||
<A NAME="tex2html253"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html247"
|
||||
HREF="node11.html">
|
||||
<A NAME="tex2html249"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html243"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html249"
|
||||
<A NAME="tex2html251"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html252"
|
||||
HREF="node15.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html248"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<B> Next:</B> <A NAME="tex2html254"
|
||||
HREF="node15.html">Smoothers and coarsest-level solvers</A>
|
||||
<B> Up:</B> <A NAME="tex2html250"
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html244"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> <A NAME="tex2html250"
|
||||
HREF="node13.html">AMG preconditioners</A>
|
||||
<B> <A NAME="tex2html252"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00063000000000000000"></A><A NAME="sec:smoothers"></A>
|
||||
<H2><A NAME="SECTION00062000000000000000"></A><A NAME="sec:aggregation"></A>
|
||||
<BR>
|
||||
Smoothers and coarsest-level solvers
|
||||
Smoothed Aggregation
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The smoothers implemented in MLD2P4 include the Jacobi and block-Jacobi methods,
|
||||
a hybrid version of the forward and backward Gauss-Seidel methods, and the
|
||||
additive Schwarz (AS) ones (see, e.g., [<A
|
||||
HREF="node29.html#Saad_book">20</A>,<A
|
||||
HREF="node29.html#dd2_96">21</A>]).
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The hybrid Gauss-Seidel
|
||||
version is considered because the original Gauss-Seidel method is inherently sequential.
|
||||
At each iteration of the hybrid version, each parallel process uses the most recent values
|
||||
of its own local variables and the values of the non-local variables computed at the
|
||||
previous iteration, obtained by exchanging data with other processes before
|
||||
the beginning of the current iteration.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In the AS methods, the index space <IMG
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to define the prolongator <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$">, used to compute
|
||||
the coarse-level matrix <IMG
|
||||
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img15.png"
|
||||
ALT="$A^{k+1}$">, MLD2P4 uses the smoothed aggregation
|
||||
algorithm described in [<A
|
||||
HREF="node30.html#BREZINA_VANEK">2</A>,<A
|
||||
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>].
|
||||
The basic idea of this algorithm is to build a coarse set of indices
|
||||
<IMG
|
||||
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img26.png"
|
||||
ALT="$\Omega^{k+1}$"> by suitably grouping the indices of <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$"> is divided into <IMG
|
||||
WIDTH="28" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img50.png"
|
||||
ALT="$m_k$">
|
||||
subsets <IMG
|
||||
ALT="$\Omega^k$"> into disjoint
|
||||
subsets (aggregates), and to define the coarse-to-fine space transfer operator
|
||||
<IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$"> by applying a suitable smoother to a simple piecewise constant
|
||||
prolongation operator, with the aim of improving the quality of the coarse-space correction.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Three main steps can be identified in the smoothed aggregation procedure:
|
||||
</FONT></FONT></FONT>
|
||||
<OL>
|
||||
<LI>aggregation of the indices of <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$"> to obtain <IMG
|
||||
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img26.png"
|
||||
ALT="$\Omega^{k+1}$">;
|
||||
</LI>
|
||||
<LI>construction of the prolongator <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$">;
|
||||
</LI>
|
||||
<LI>application of <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$"> and <IMG
|
||||
WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img17.png"
|
||||
ALT="$R^k=(P^k)^T$"> to build <IMG
|
||||
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img15.png"
|
||||
ALT="$A^{k+1}$">.
|
||||
</LI>
|
||||
</OL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to perform the coarsening step, the smoothed aggregation algorithm
|
||||
described in [<A
|
||||
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>] is used. In this algorithm,
|
||||
each index <!-- MATH
|
||||
$j \in \Omega^{k+1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="72" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.png"
|
||||
ALT="$j \in \Omega^{k+1}$"> corresponds to an aggregate <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$\Omega^k_i$"> of size <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img52.png"
|
||||
ALT="$n_{k,i}$">, possibly
|
||||
overlapping. For each <IMG
|
||||
SRC="img28.png"
|
||||
ALT="$\Omega^k_j$"> of <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$">,
|
||||
consisting of a suitably chosen index <!-- MATH
|
||||
$i \in \Omega^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="52" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img29.png"
|
||||
ALT="$i \in \Omega^k$"> and indices that are (usually) contained in a
|
||||
strongly-coupled neighborood of <IMG
|
||||
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img30.png"
|
||||
ALT="$i$"> we consider the restriction
|
||||
operator <!-- MATH
|
||||
$R_i^k \in \mathbb{R}^{n_{k,i} \times n_k}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="110" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img53.png"
|
||||
ALT="$R_i^k \in \mathbb{R}^{n_{k,i} \times n_k}$">
|
||||
that maps a vector <IMG
|
||||
WIDTH="23" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img54.png"
|
||||
ALT="$x^k$"> to the vector <IMG
|
||||
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img55.png"
|
||||
ALT="$x_i^k$"> made of the components of <IMG
|
||||
WIDTH="23" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img54.png"
|
||||
ALT="$x^k$">
|
||||
with indices in <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$\Omega^k_i$">, and the prolongation operator
|
||||
ALT="$i$">, i.e.,
|
||||
</FONT></FONT></FONT>
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- MATH
|
||||
$P^k_i = (R_i^k)^T$
|
||||
\begin{equation}
|
||||
\Omega^k_j \subset \mathcal{N}_i^k(\theta) =
|
||||
\left\{ r \in \Omega^k: |a_{ir}^k| > \theta \sqrt{|a_{ii}^ka_{rr}^k|} \right \} \cup \left\{ i \right\},
|
||||
\end{equation}
|
||||
-->
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:strongly_coup"></A><IMG
|
||||
WIDTH="387" HEIGHT="72" BORDER="0"
|
||||
SRC="img31.png"
|
||||
ALT="\begin{displaymath}
|
||||
\Omega^k_j \subset \mathcal{N}_i^k(\theta) = ␍ \left\{ r ...
|
||||
...vert a_{ii}^ka_{rr}^k\vert} \right \} \cup \left\{ i \right\},␍\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(3)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
for a given threshold <!-- MATH
|
||||
$\theta \in [0,1]$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img56.png"
|
||||
ALT="$P^k_i = (R_i^k)^T$">. These operators are then used to build
|
||||
<!-- MATH
|
||||
$A_i^k=R_i^kA^kP_i^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="113" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img57.png"
|
||||
ALT="$A_i^k=R_i^kA^kP_i^k$">, which is the restriction of <IMG
|
||||
WIDTH="69" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img32.png"
|
||||
ALT="$\theta \in [0,1]$"> (see [<A
|
||||
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>] for the details).
|
||||
Since this algorithm has a sequential nature, a decoupled
|
||||
version of it is applied, where each processor independently executes
|
||||
the algorithm on the set of indices 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 some nonuniform aggregates
|
||||
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="img3.png"
|
||||
ALT="$A$">. Nevertheless, this parallel algorithm has been chosen for
|
||||
MLD2P4, since it has been shown to produce good results in practice
|
||||
[<A
|
||||
HREF="node30.html#aaecc_07">5</A>,<A
|
||||
HREF="node30.html#apnum_07">7</A>,<A
|
||||
HREF="node30.html#TUMINARO_TONG">24</A>].
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The prolongator <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img41.png"
|
||||
ALT="$A^k$"> to the index
|
||||
space <IMG
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$"> is built starting from a tentative prolongator
|
||||
<!-- MATH
|
||||
$\bar{P}^k \in \mathbb{R}^{n_k \times n_{k+1}}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="117" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img33.png"
|
||||
ALT="$\bar{P}^k \in \mathbb{R}^{n_k \times n_{k+1}}$">, defined as
|
||||
</FONT></FONT></FONT>
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
\bar{P}^k =(\bar{p}_{ij}^k), \quad \bar{p}_{ij}^k =
|
||||
\left\{ \begin{array}{ll}
|
||||
1 & \quad \mbox{if} \; i \in \Omega^k_j, \\
|
||||
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="287" HEIGHT="51" BORDER="0"
|
||||
SRC="img34.png"
|
||||
ALT="\begin{displaymath}␍\bar{P}^k =(\bar{p}_{ij}^k), \quad \bar{p}_{ij}^k = ␍\left\{...
|
||||
...ega^k_j, ␍0 & \quad \mbox{otherwise},␍\end{array} \right.
|
||||
\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(4)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
where <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$\Omega^k_i$">.
|
||||
The classical AS preconditioner <IMG
|
||||
WIDTH="41" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img58.png"
|
||||
ALT="$M^k_{AS}$"> is defined as
|
||||
SRC="img28.png"
|
||||
ALT="$\Omega^k_j$"> is the aggregate of <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$">
|
||||
corresponding to the index <!-- MATH
|
||||
$j \in \Omega^{k+1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="72" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img27.png"
|
||||
ALT="$j \in \Omega^{k+1}$">.
|
||||
<IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img25.png"
|
||||
ALT="$P^k$"> is obtained by applying to <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img35.png"
|
||||
ALT="$\bar{P}^k$"> a smoother
|
||||
<!-- MATH
|
||||
$S^k \in \mathbb{R}^{n_k \times n_k}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="101" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img36.png"
|
||||
ALT="$S^k \in \mathbb{R}^{n_k \times n_k}$">:
|
||||
</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
( M^k_{AS} )^{-1} = \sum_{i=1}^{m_k} P_i^k (A_i^k)^{-1} R_i^{k},
|
||||
P^k = S^k \bar{P}^k,
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="219" HEIGHT="59" BORDER="0"
|
||||
SRC="img59.png"
|
||||
ALT="\begin{displaymath}␍ ( M^k_{AS} )^{-1} = \sum_{i=1}^{m_k} P_i^k (A_i^k)^{-1} R_i^{k},␍\end{displaymath}">
|
||||
WIDTH="90" HEIGHT="30" BORDER="0"
|
||||
SRC="img37.png"
|
||||
ALT="\begin{displaymath}␍P^k = S^k \bar{P}^k,␍\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
in order to remove nonsmooth components from the range of the prolongator,
|
||||
and hence to improve the convergence properties of the multi-level
|
||||
method [<A
|
||||
HREF="node30.html#BREZINA_VANEK">2</A>,<A
|
||||
HREF="node30.html#Stuben_01">23</A>].
|
||||
A simple choice for <IMG
|
||||
WIDTH="25" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img38.png"
|
||||
ALT="$S^k$"> is the damped Jacobi smoother:
|
||||
</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER">
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
S^k = I - \omega^k (D^k)^{-1} A^k_F ,
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="175" HEIGHT="31" BORDER="0"
|
||||
SRC="img39.png"
|
||||
ALT="\begin{displaymath}␍S^k = I - \omega^k (D^k)^{-1} A^k_F , ␍\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
where <IMG
|
||||
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$A_i^k$"> is supposed to be nonsingular. We observe that an approximate
|
||||
inverse of <IMG
|
||||
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$A_i^k$"> is usually considered instead of <IMG
|
||||
WIDTH="57" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img61.png"
|
||||
ALT="$(A_i^k)^{-1}$">.
|
||||
The setup of <IMG
|
||||
WIDTH="41" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img58.png"
|
||||
ALT="$M^k_{AS}$"> during the multilevel build phase
|
||||
involves
|
||||
WIDTH="28" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img40.png"
|
||||
ALT="$D^k$"> is the diagonal matrix with the same diagonal entries as <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img41.png"
|
||||
ALT="$A^k$">,
|
||||
<!-- MATH
|
||||
$A^k_F = (\bar{a}_{ij}^k)$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="87" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img42.png"
|
||||
ALT="$A^k_F = (\bar{a}_{ij}^k)$"> is the filtered matrix defined as
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<LI>the definition of the index subspaces <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img62.png"
|
||||
ALT="$\Omega_i^k$"> and of the corresponding
|
||||
operators <IMG
|
||||
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img63.png"
|
||||
ALT="$R_i^k$"> (and <IMG
|
||||
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img64.png"
|
||||
ALT="$P_i^k$">);
|
||||
</LI>
|
||||
<LI>the computation of the submatrices <IMG
|
||||
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$A_i^k$">;
|
||||
</LI>
|
||||
<LI>the computation of their inverses (usually approximated
|
||||
through some form of incomplete factorization).
|
||||
</LI>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The computation of <!-- MATH
|
||||
$z^k=M^k_{AS}w^k$
|
||||
<BR>
|
||||
<DIV ALIGN="RIGHT">
|
||||
|
||||
<!-- MATH
|
||||
\begin{equation}
|
||||
\bar{a}_{ij}^k =
|
||||
\left \{ \begin{array}{ll}
|
||||
a_{ij}^k & \mbox{if } j \in \mathcal{N}_i^k(\theta), \\
|
||||
0 & \mbox{otherwise},
|
||||
\end{array} \right.
|
||||
\; (j \ne i),
|
||||
\qquad
|
||||
\bar{a}_{ii}^k = a_{ii}^k - \sum_{j \ne i} (a_{ij}^k - \bar{a}_{ij}^k),
|
||||
\end{equation}
|
||||
-->
|
||||
<TABLE WIDTH="100%" ALIGN="CENTER">
|
||||
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:filtered"></A><IMG
|
||||
WIDTH="514" HEIGHT="74" BORDER="0"
|
||||
SRC="img43.png"
|
||||
ALT="\begin{displaymath}
|
||||
\bar{a}_{ij}^k =␍ \left \{ \begin{array}{ll}␍ a_{ij}^k & ...
|
||||
...ii}^k = a_{ii}^k - \sum_{j \ne i} (a_{ij}^k - \bar{a}_{ij}^k),␍\end{displaymath}"></TD>
|
||||
<TD WIDTH=10 ALIGN="RIGHT">
|
||||
(5)</TD></TR>
|
||||
</TABLE>
|
||||
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
and <IMG
|
||||
WIDTH="24" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img44.png"
|
||||
ALT="$\omega^k$"> is an approximation of <IMG
|
||||
WIDTH="61" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img45.png"
|
||||
ALT="$4/(3\rho^k)$">, where
|
||||
<IMG
|
||||
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img46.png"
|
||||
ALT="$\rho^k$"> is the spectral radius of <!-- MATH
|
||||
$(D^k)^{-1}A^k_F$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="102" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img65.png"
|
||||
ALT="$z^k=M^k_{AS}w^k$">, with <!-- MATH
|
||||
$w^k \in \mathbb{R}^{n_k}$
|
||||
WIDTH="83" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img47.png"
|
||||
ALT="$(D^k)^{-1}A^k_F$"> [<A
|
||||
HREF="node30.html#BREZINA_VANEK">2</A>].
|
||||
In MLD2P4 this approximation is obtained by using <!-- MATH
|
||||
$\| A^k_F \|_\infty$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="76" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img66.png"
|
||||
ALT="$w^k \in \mathbb{R}^{n_k}$">, during the
|
||||
multilevel application phase, requires
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<LI>the restriction of <IMG
|
||||
WIDTH="25" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img67.png"
|
||||
ALT="$w^k$"> to the subspaces <!-- MATH
|
||||
$\mathbb{R}^{n_{k,i}}$
|
||||
-->
|
||||
WIDTH="61" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img48.png"
|
||||
ALT="$\Vert A^k_F \Vert _\infty$"> as an estimate
|
||||
of <IMG
|
||||
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img46.png"
|
||||
ALT="$\rho^k$">. Note that for systems coming from uniformly elliptic
|
||||
problems, filtering the matrix <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img41.png"
|
||||
ALT="$A^k$"> has little or no effect, and
|
||||
<IMG
|
||||
WIDTH="41" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img68.png"
|
||||
ALT="$\mathbb{R}^{n_{k,i}}$">,
|
||||
i.e. <!-- MATH
|
||||
$w_i^k = R_i^{k} w^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="91" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img69.png"
|
||||
ALT="$w_i^k = R_i^{k} w^k$">;
|
||||
</LI>
|
||||
<LI>the computation of the vectors <!-- MATH
|
||||
$z_i^k=(A_i^k)^{-1} w_i^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="119" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img70.png"
|
||||
ALT="$z_i^k=(A_i^k)^{-1} w_i^k$">;
|
||||
</LI>
|
||||
<LI>the prolongation and the sum of the previous vectors,
|
||||
i.e. <!-- MATH
|
||||
$z^k = \sum_{i=1}^{m_k} P_i^k z_i^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="127" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img71.png"
|
||||
ALT="$z^k = \sum_{i=1}^{m_k} P_i^k z_i^k$">.
|
||||
</LI>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
Variants of the classical AS method, which use modifications of the
|
||||
restriction and prolongation operators, are also implemented in MLD2P4.
|
||||
Among them, the Restricted AS (RAS) preconditioner usually
|
||||
outperforms the classical AS preconditioner in terms of convergence
|
||||
rate and of computation and communication time on parallel distributed-memory
|
||||
computers, and is therefore the most widely used among the AS
|
||||
preconditioners [<A
|
||||
HREF="node29.html#CAI_SARKIS">6</A>].
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img41.png"
|
||||
ALT="$A^k$"> can be used instead of <IMG
|
||||
WIDTH="29" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img49.png"
|
||||
ALT="$A^k_F$">. The latter choice is the default in MLD2P4.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Direct solvers based on sparse LU factorizations, implemented in the
|
||||
third-party libraries reported in Section <A HREF="node7.html#sec:third-party">3.2</A>, can be applied
|
||||
as coarsest-level solvers by MLD2P4. Native inexact solvers based on
|
||||
incomplete LU factorizations, as well as Jacobi, hybrid (forward) Gauss-Seidel,
|
||||
and block Jacobi preconditioners are also available. Direct solvers usually
|
||||
lead to more effective preconditioners in terms of algorithmic scalability;
|
||||
however, this does not guarantee parallel efficiency.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html251"
|
||||
<A NAME="tex2html253"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html247"
|
||||
HREF="node11.html">
|
||||
<A NAME="tex2html249"
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html243"
|
||||
HREF="node13.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html249"
|
||||
<A NAME="tex2html251"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html252"
|
||||
HREF="node15.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html248"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<B> Next:</B> <A NAME="tex2html254"
|
||||
HREF="node15.html">Smoothers and coarsest-level solvers</A>
|
||||
<B> Up:</B> <A NAME="tex2html250"
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html244"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
<B> <A NAME="tex2html250"
|
||||
HREF="node13.html">AMG preconditioners</A>
|
||||
<B> <A NAME="tex2html252"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+219
-155
@@ -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>Smoothers and coarsest-level solvers</TITLE>
|
||||
<META NAME="description" CONTENT="Smoothers and coarsest-level solvers">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,9 +18,8 @@ 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="node11.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="previous" HREF="node14.html">
|
||||
<LINK REL="up" HREF="node12.html">
|
||||
<LINK REL="next" HREF="node16.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,9 +29,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html259"
|
||||
HREF="userhtml.html">
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html253"
|
||||
<A NAME="tex2html255"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html261"
|
||||
@@ -40,171 +39,236 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html264"
|
||||
HREF="node16.html">Examples</A>
|
||||
HREF="node16.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html260"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html254"
|
||||
HREF="node14.html">Smoothers and coarsest-level solvers</A>
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html256"
|
||||
HREF="node14.html">Smoothed Aggregation</A>
|
||||
<B> <A NAME="tex2html262"
|
||||
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="SECTION00063000000000000000"></A><A NAME="sec:smoothers"></A>
|
||||
<BR>
|
||||
Getting Started
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
Smoothers and coarsest-level solvers
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We describe the basics for building and applying MLD2P4 one-level and multi-level
|
||||
(i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS [<A
|
||||
HREF="node29.html#PSBLASGUIDE">13</A>].
|
||||
The following steps are required:
|
||||
</FONT></FONT></FONT>
|
||||
|
||||
<OL>
|
||||
<LI><I>Declare the preconditioner data structure</I>. It is a derived data type,
|
||||
<code>mld_</code><I>x</I><code>prec_</code> <code>type</code>, where <I>x</I> may be <code>s</code>, <code>d</code>, <code>c</code>
|
||||
or <code>z</code>, according to the basic data type of the sparse matrix
|
||||
(<code>s</code> = real single precision; <code>d</code> = real double precision;
|
||||
<code>c</code> = complex single precision; <code>z</code> = complex double precision).
|
||||
This data structure is accessed by the user only through the MLD2P4 routines,
|
||||
following an object-oriented approach.
|
||||
</LI>
|
||||
<LI><I>Allocate and initialize the preconditioner data structure, according to
|
||||
a preconditioner type chosen by the user</I>. This is performed by the routine
|
||||
<code>init</code>, which also sets defaults for each preconditioner
|
||||
type selected by the user. The preconditioner types and the defaults associated
|
||||
with them are given in Table <A HREF="#tab:precinit">1</A>, where the strings used by
|
||||
<code>init</code> to identify the preconditioner types are also given.
|
||||
Note that these strings are valid also if uppercase letters are substituted by
|
||||
corresponding lowercase ones.
|
||||
</LI>
|
||||
<LI><I>Modify the selected preconditioner type, by properly setting
|
||||
preconditioner parameters.</I> This is performed by the routine <code>set</code>.
|
||||
This routine must be called only if the user wants to modify the default values
|
||||
of the parameters associated with the selected preconditioner type, to obtain a variant
|
||||
of that preconditioner. Examples of use of <code>set</code> are given in
|
||||
Section <A HREF="node16.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="node17.html#sec:userinterface">6</A>, Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
</LI>
|
||||
<LI><I>Build the preconditioner for a given matrix</I>. If the selected preconditioner
|
||||
is multi-level, then two steps must be performed, as specified next.
|
||||
<DL COMPACT>
|
||||
<DT>4.1</DT>
|
||||
<DD><I>Build the aggregation hierarchy for a given matrix.</I> This is
|
||||
performed by the routine <code>hierarchy_build</code>.
|
||||
</DD>
|
||||
<DT>4.2</DT>
|
||||
<DD><I>Build the preconditioner for a given matrix.</I> This is performed
|
||||
by the routine <code>smoothers_build</code>.
|
||||
</DD>
|
||||
</DL>
|
||||
If the selected preconditioner is one-level, it is built in a single step,
|
||||
performed by the routine <code>bld</code>.
|
||||
</LI>
|
||||
<LI><I>Apply the preconditioner at each iteration of a Krylov solver.</I>
|
||||
This is performed by the routine <code>aply</code>. When using the PSBLAS Krylov solvers,
|
||||
this step is completely transparent to the user, since <code>aply</code> is called
|
||||
by the PSBLAS routine implementing the Krylov solver (<code>psb_krylov</code>).
|
||||
</LI>
|
||||
<LI><I>Free the preconditioner data structure</I>. This is performed by
|
||||
the routine <code>free</code>. This step is complementary to step 1 and should
|
||||
be performed when the preconditioner is no more used.
|
||||
</LI>
|
||||
</OL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">All the previous routines are available as methods of the preconditioner object.
|
||||
A detailed description of them is given in Section <A HREF="node17.html#sec:userinterface">6</A>.
|
||||
Examples showing the basic use of MLD2P4 are reported in Section <A HREF="node16.html#sec:examples">5.1</A>.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The smoothers implemented in MLD2P4 include the Jacobi and block-Jacobi methods,
|
||||
a hybrid version of the forward and backward Gauss-Seidel methods, and the
|
||||
additive Schwarz (AS) ones (see, e.g., [<A
|
||||
HREF="node30.html#Saad_book">20</A>,<A
|
||||
HREF="node30.html#dd2_96">21</A>]).
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The hybrid Gauss-Seidel
|
||||
version is considered because the original Gauss-Seidel method is inherently sequential.
|
||||
At each iteration of the hybrid version, each parallel process uses the most recent values
|
||||
of its own local variables and the values of the non-local variables computed at the
|
||||
previous iteration, obtained by exchanging data with other processes before
|
||||
the beginning of the current iteration.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In the AS methods, the index space <IMG
|
||||
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img9.png"
|
||||
ALT="$\Omega^k$"> is divided into <IMG
|
||||
WIDTH="28" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img50.png"
|
||||
ALT="$m_k$">
|
||||
subsets <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$\Omega^k_i$"> of size <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img52.png"
|
||||
ALT="$n_{k,i}$">, possibly
|
||||
overlapping. For each <IMG
|
||||
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img30.png"
|
||||
ALT="$i$"> we consider the restriction
|
||||
operator <!-- MATH
|
||||
$R_i^k \in \mathbb{R}^{n_{k,i} \times n_k}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="110" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img53.png"
|
||||
ALT="$R_i^k \in \mathbb{R}^{n_{k,i} \times n_k}$">
|
||||
that maps a vector <IMG
|
||||
WIDTH="23" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img54.png"
|
||||
ALT="$x^k$"> to the vector <IMG
|
||||
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img55.png"
|
||||
ALT="$x_i^k$"> made of the components of <IMG
|
||||
WIDTH="23" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img54.png"
|
||||
ALT="$x^k$">
|
||||
with indices in <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$\Omega^k_i$">, and the prolongation operator
|
||||
<!-- MATH
|
||||
$P^k_i = (R_i^k)^T$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img56.png"
|
||||
ALT="$P^k_i = (R_i^k)^T$">. These operators are then used to build
|
||||
<!-- MATH
|
||||
$A_i^k=R_i^kA^kP_i^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="113" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img57.png"
|
||||
ALT="$A_i^k=R_i^kA^kP_i^k$">, which is the restriction of <IMG
|
||||
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img41.png"
|
||||
ALT="$A^k$"> to the index
|
||||
space <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img51.png"
|
||||
ALT="$\Omega^k_i$">.
|
||||
The classical AS preconditioner <IMG
|
||||
WIDTH="41" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img58.png"
|
||||
ALT="$M^k_{AS}$"> is defined as
|
||||
</FONT></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="897"></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" VALIGN="TOP" WIDTH=51><SMALL>STRING</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232><SMALL>DEFAULT PRECONDITIONER</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">No preconditioner</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'NOPREC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Considered only to use the PSBLAS
|
||||
Krylov solvers with no preconditioner.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Diagonal</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'DIAG'</code> or <code>'JACOBI'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Diagonal preconditioner.
|
||||
For any zero diagonal entry of the matrix to be preconditioned,
|
||||
the corresponding entry of the preconditioner is set to 1.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Block Jacobi</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'BJAC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Block-Jacobi with ILU(0) on the local blocks.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Additive Schwarz</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'AS'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Restricted Additive Schwarz (RAS),
|
||||
with overlap 1 and ILU(0) on the local blocks.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Multilevel</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'ML'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>V-cycle with one hybrid forward Gauss-Seidel
|
||||
(GS) sweep as pre-smoother and one hybrid backward
|
||||
GS sweep as post-smoother, basic smoothed aggregation
|
||||
as coarsening algorithm, and LU (plus triangular solve)
|
||||
as coarsest-level solver. See the default values in
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>
|
||||
for further details of the preconditioner.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Note that the module <code>mld_prec_mod</code>, containing the definition of the
|
||||
preconditioner data type and the interfaces to the routines of MLD2P4,
|
||||
must be used in any program calling such routines.
|
||||
The modules <code>psb_base_mod</code>, for the sparse matrix and communication descriptor
|
||||
data types, and <code>psb_krylov_mod</code>, for interfacing with the
|
||||
Krylov solvers, must be also used (see Section <A HREF="node16.html#sec:examples">5.1</A>).
|
||||
<BR></FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Remark 1.</B> Coarsest-level solvers based on the LU factorization,
|
||||
such as those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU_Dist,
|
||||
usually lead to smaller numbers of preconditioned Krylov
|
||||
iterations than inexact solvers, when the linear system comes from
|
||||
a standard discretization of basic scalar elliptic PDE problems. However,
|
||||
this does not necessarily correspond to the smallest execution time
|
||||
on parallel computers. </FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
<!-- MATH
|
||||
\begin{displaymath}
|
||||
( M^k_{AS} )^{-1} = \sum_{i=1}^{m_k} P_i^k (A_i^k)^{-1} R_i^{k},
|
||||
\end{displaymath}
|
||||
-->
|
||||
|
||||
<IMG
|
||||
WIDTH="219" HEIGHT="59" BORDER="0"
|
||||
SRC="img59.png"
|
||||
ALT="\begin{displaymath}␍ ( M^k_{AS} )^{-1} = \sum_{i=1}^{m_k} P_i^k (A_i^k)^{-1} R_i^{k},␍\end{displaymath}">
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
where <IMG
|
||||
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$A_i^k$"> is supposed to be nonsingular. We observe that an approximate
|
||||
inverse of <IMG
|
||||
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$A_i^k$"> is usually considered instead of <IMG
|
||||
WIDTH="57" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img61.png"
|
||||
ALT="$(A_i^k)^{-1}$">.
|
||||
The setup of <IMG
|
||||
WIDTH="41" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img58.png"
|
||||
ALT="$M^k_{AS}$"> during the multilevel build phase
|
||||
involves
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html265"
|
||||
HREF="node16.html">Examples</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<LI>the definition of the index subspaces <IMG
|
||||
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img62.png"
|
||||
ALT="$\Omega_i^k$"> and of the corresponding
|
||||
operators <IMG
|
||||
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img63.png"
|
||||
ALT="$R_i^k$"> (and <IMG
|
||||
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img64.png"
|
||||
ALT="$P_i^k$">);
|
||||
</LI>
|
||||
<LI>the computation of the submatrices <IMG
|
||||
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img60.png"
|
||||
ALT="$A_i^k$">;
|
||||
</LI>
|
||||
<LI>the computation of their inverses (usually approximated
|
||||
through some form of incomplete factorization).
|
||||
</LI>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The computation of <!-- MATH
|
||||
$z^k=M^k_{AS}w^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="102" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img65.png"
|
||||
ALT="$z^k=M^k_{AS}w^k$">, with <!-- MATH
|
||||
$w^k \in \mathbb{R}^{n_k}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="76" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img66.png"
|
||||
ALT="$w^k \in \mathbb{R}^{n_k}$">, during the
|
||||
multilevel application phase, requires
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<LI>the restriction of <IMG
|
||||
WIDTH="25" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img67.png"
|
||||
ALT="$w^k$"> to the subspaces <!-- MATH
|
||||
$\mathbb{R}^{n_{k,i}}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="41" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img68.png"
|
||||
ALT="$\mathbb{R}^{n_{k,i}}$">,
|
||||
i.e. <!-- MATH
|
||||
$w_i^k = R_i^{k} w^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="91" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img69.png"
|
||||
ALT="$w_i^k = R_i^{k} w^k$">;
|
||||
</LI>
|
||||
<LI>the computation of the vectors <!-- MATH
|
||||
$z_i^k=(A_i^k)^{-1} w_i^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="119" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img70.png"
|
||||
ALT="$z_i^k=(A_i^k)^{-1} w_i^k$">;
|
||||
</LI>
|
||||
<LI>the prolongation and the sum of the previous vectors,
|
||||
i.e. <!-- MATH
|
||||
$z^k = \sum_{i=1}^{m_k} P_i^k z_i^k$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="127" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img71.png"
|
||||
ALT="$z^k = \sum_{i=1}^{m_k} P_i^k z_i^k$">.
|
||||
</LI>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
Variants of the classical AS method, which use modifications of the
|
||||
restriction and prolongation operators, are also implemented in MLD2P4.
|
||||
Among them, the Restricted AS (RAS) preconditioner usually
|
||||
outperforms the classical AS preconditioner in terms of convergence
|
||||
rate and of computation and communication time on parallel distributed-memory
|
||||
computers, and is therefore the most widely used among the AS
|
||||
preconditioners [<A
|
||||
HREF="node30.html#CAI_SARKIS">6</A>].
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Direct solvers based on sparse LU factorizations, implemented in the
|
||||
third-party libraries reported in Section <A HREF="node8.html#sec:third-party">3.2</A>, can be applied
|
||||
as coarsest-level solvers by MLD2P4. Native inexact solvers based on
|
||||
incomplete LU factorizations, as well as Jacobi, hybrid (forward) Gauss-Seidel,
|
||||
and block Jacobi preconditioners are also available. Direct solvers usually
|
||||
lead to more effective preconditioners in terms of algorithmic scalability;
|
||||
however, this does not guarantee parallel efficiency.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html263"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html259"
|
||||
HREF="userhtml.html">
|
||||
HREF="node12.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html253"
|
||||
<A NAME="tex2html255"
|
||||
HREF="node14.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html261"
|
||||
@@ -212,11 +276,11 @@ on parallel computers. </FONT></FONT></FONT>
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html264"
|
||||
HREF="node16.html">Examples</A>
|
||||
HREF="node16.html">Getting Started</A>
|
||||
<B> Up:</B> <A NAME="tex2html260"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html254"
|
||||
HREF="node14.html">Smoothers and coarsest-level solvers</A>
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<B> Previous:</B> <A NAME="tex2html256"
|
||||
HREF="node14.html">Smoothed Aggregation</A>
|
||||
<B> <A NAME="tex2html262"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+156
-247
@@ -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,297 +18,206 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="previous" HREF="node15.html">
|
||||
<LINK REL="up" HREF="node15.html">
|
||||
<LINK REL="next" HREF="node18.html">
|
||||
<LINK REL="previous" HREF="node12.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node17.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html274"
|
||||
<A NAME="tex2html275"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html270"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html271"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html266"
|
||||
<A NAME="tex2html265"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html272"
|
||||
<A NAME="tex2html273"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html275"
|
||||
HREF="node17.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html271"
|
||||
HREF="node15.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html267"
|
||||
HREF="node15.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html273"
|
||||
<B> Next:</B> <A NAME="tex2html276"
|
||||
HREF="node17.html">Examples</A>
|
||||
<B> Up:</B> <A NAME="tex2html272"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html266"
|
||||
HREF="node15.html">Smoothers and coarsest-level solvers</A>
|
||||
<B> <A NAME="tex2html274"
|
||||
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><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
Getting Started
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The code reported in Figure <A HREF="#fig:ex1">2</A> shows how to set and apply the default
|
||||
multi-level preconditioner available in the real double precision version
|
||||
of MLD2P4 (see Table <A HREF="#tab:precinit">1</A>). This preconditioner is chosen
|
||||
by simply specifying <code>'ML'</code> as the second argument of <code>P%init</code>
|
||||
(a call to <code>P%set</code> is not needed) and is applied with the CG
|
||||
solver provided by PSBLAS (the matrix of the system to be solved is
|
||||
assumed to be positive definite). As previously observed, the modules
|
||||
<code>psb_base_mod</code>, <code>mld_prec_mod</code> and <code>psb_krylov_mod</code>
|
||||
must be used by the example program.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We describe the basics for building and applying MLD2P4 one-level and multi-level
|
||||
(i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS [<A
|
||||
HREF="node30.html#PSBLASGUIDE">13</A>].
|
||||
The following steps are required:
|
||||
</FONT></FONT></FONT>
|
||||
|
||||
<OL>
|
||||
<LI><I>Declare the preconditioner data structure</I>. It is a derived data type,
|
||||
<code>mld_</code><I>x</I><code>prec_</code> <code>type</code>, where <I>x</I> may be <code>s</code>, <code>d</code>, <code>c</code>
|
||||
or <code>z</code>, according to the basic data type of the sparse matrix
|
||||
(<code>s</code> = real single precision; <code>d</code> = real double precision;
|
||||
<code>c</code> = complex single precision; <code>z</code> = complex double precision).
|
||||
This data structure is accessed by the user only through the MLD2P4 routines,
|
||||
following an object-oriented approach.
|
||||
</LI>
|
||||
<LI><I>Allocate and initialize the preconditioner data structure, according to
|
||||
a preconditioner type chosen by the user</I>. This is performed by the routine
|
||||
<code>init</code>, which also sets defaults for each preconditioner
|
||||
type selected by the user. The preconditioner types and the defaults associated
|
||||
with them are given in Table <A HREF="#tab:precinit">1</A>, where the strings used by
|
||||
<code>init</code> to identify the preconditioner types are also given.
|
||||
Note that these strings are valid also if uppercase letters are substituted by
|
||||
corresponding lowercase ones.
|
||||
</LI>
|
||||
<LI><I>Modify the selected preconditioner type, by properly setting
|
||||
preconditioner parameters.</I> This is performed by the routine <code>set</code>.
|
||||
This routine must be called only if the user wants to modify the default values
|
||||
of the parameters associated with the selected preconditioner type, to obtain a variant
|
||||
of that preconditioner. Examples of use of <code>set</code> are given in
|
||||
Section <A HREF="node17.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="node18.html#sec:userinterface">6</A>, Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
</LI>
|
||||
<LI><I>Build the preconditioner for a given matrix</I>. If the selected preconditioner
|
||||
is multi-level, then two steps must be performed, as specified next.
|
||||
<DL COMPACT>
|
||||
<DT>4.1</DT>
|
||||
<DD><I>Build the aggregation hierarchy for a given matrix.</I> This is
|
||||
performed by the routine <code>hierarchy_build</code>.
|
||||
</DD>
|
||||
<DT>4.2</DT>
|
||||
<DD><I>Build the preconditioner for a given matrix.</I> This is performed
|
||||
by the routine <code>smoothers_build</code>.
|
||||
</DD>
|
||||
</DL>
|
||||
If the selected preconditioner is one-level, it is built in a single step,
|
||||
performed by the routine <code>bld</code>.
|
||||
</LI>
|
||||
<LI><I>Apply the preconditioner at each iteration of a Krylov solver.</I>
|
||||
This is performed by the routine <code>aply</code>. When using the PSBLAS Krylov solvers,
|
||||
this step is completely transparent to the user, since <code>aply</code> is called
|
||||
by the PSBLAS routine implementing the Krylov solver (<code>psb_krylov</code>).
|
||||
</LI>
|
||||
<LI><I>Free the preconditioner data structure</I>. This is performed by
|
||||
the routine <code>free</code>. This step is complementary to step 1 and should
|
||||
be performed when the preconditioner is no more used.
|
||||
</LI>
|
||||
</OL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The part of the code concerning the
|
||||
reading and assembling of the sparse matrix and the right-hand side vector, performed
|
||||
through the PSBLAS routines for sparse matrix and vector management, is not reported
|
||||
here for brevity; the statements concerning the deallocation of the PSBLAS
|
||||
data structure are neglected too.
|
||||
The complete code can be found in the example program file <code>mld_dexample_ml.f90</code>,
|
||||
in the directory <code>examples/fileread</code> of the MLD2P4 implementation (see
|
||||
Section <A HREF="node10.html#sec:ex_and_test">3.5</A>). A sample test problem along with the relevant
|
||||
input data is available in <code>examples/fileread/runs</code>.
|
||||
For details on the use of the PSBLAS routines, see the PSBLAS User's
|
||||
Guide [<A
|
||||
HREF="node29.html#PSBLASGUIDE">13</A>].
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The setup and application of the default multi-level preconditioner
|
||||
for the real single precision and the complex, single and double
|
||||
precision, versions are obtained with straightforward modifications of the previous
|
||||
example (see Section <A HREF="node17.html#sec:userinterface">6</A> for details). If these versions are installed,
|
||||
the corresponding codes are available in <code>examples/fileread/</code>.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">All the previous routines are available as methods of the preconditioner object.
|
||||
A detailed description of them is given in Section <A HREF="node18.html#sec:userinterface">6</A>.
|
||||
Examples showing the basic use of MLD2P4 are reported in Section <A HREF="node17.html#sec:examples">5.1</A>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="900"></A>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="904"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
|
||||
setup and application of the default multi-level preconditioner (example 1).
|
||||
<CAPTION><STRONG>Table 1:</STRONG>
|
||||
Preconditioner types, corresponding strings and default choices.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
use psb_base_mod
|
||||
use mld_prec_mod
|
||||
use psb_krylov_mod
|
||||
... ...
|
||||
!
|
||||
! sparse matrix
|
||||
type(psb_dspmat_type) :: A
|
||||
! sparse matrix descriptor
|
||||
type(psb_desc_type) :: desc_A
|
||||
! preconditioner
|
||||
type(mld_dprec_type) :: P
|
||||
! right-hand side and solution vectors
|
||||
type(psb_d_vect_type) :: b, x
|
||||
... ...
|
||||
!
|
||||
! initialize the parallel environment
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the spd matrix A and the right-hand side b
|
||||
! using PSBLAS routines for sparse matrix / vector management
|
||||
... ...
|
||||
!
|
||||
! initialize the default multi-level preconditioner, i.e. V-cycle
|
||||
! with basic smoothed aggregation, 1 hybrid forward/backward
|
||||
! GS sweep as pre/post-smoother and UMFPACK as coarsest-level
|
||||
! solver
|
||||
call P%init('ML',info)
|
||||
!
|
||||
! build the preconditioner
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info)
|
||||
|
||||
!
|
||||
! set the solver parameters and the initial guess
|
||||
... ...
|
||||
!
|
||||
! solve Ax=b with preconditioned CG
|
||||
call psb_krylov('CG',A,P,b,x,tol,desc_A,info)
|
||||
... ...
|
||||
!
|
||||
! deallocate the preconditioner
|
||||
call P%free(info)
|
||||
!
|
||||
! deallocate other data structures
|
||||
... ...
|
||||
!
|
||||
! exit the parallel environment
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT"><SMALL>TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><SMALL>STRING</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232><SMALL>DEFAULT PRECONDITIONER</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">No preconditioner</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'NOPREC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Considered only to use the PSBLAS
|
||||
Krylov solvers with no preconditioner.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Diagonal</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'DIAG'</code> or <code>'JACOBI'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Diagonal preconditioner.
|
||||
For any zero diagonal entry of the matrix to be preconditioned,
|
||||
the corresponding entry of the preconditioner is set to 1.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Block Jacobi</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'BJAC'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Block-Jacobi with ILU(0) on the local blocks.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Additive Schwarz</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'AS'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Restricted Additive Schwarz (RAS),
|
||||
with overlap 1 and ILU(0) on the local blocks.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT">Multilevel</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'ML'</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>V-cycle with one hybrid forward Gauss-Seidel
|
||||
(GS) sweep as pre-smoother and one hybrid backward
|
||||
GS sweep as post-smoother, basic smoothed aggregation
|
||||
as coarsening algorithm, and LU (plus triangular solve)
|
||||
as coarsest-level solver. See the default values in
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>
|
||||
for further details of the preconditioner.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Different versions of the multi-level preconditioner can be obtained by changing
|
||||
the default values of the preconditioner parameters. The code reported in
|
||||
Figure <A HREF="#fig:ex2">3</A> shows how to set a V-cycle preconditioner
|
||||
which applies 1 block-Jacobi sweep as pre- and post-smoother,
|
||||
and solves the coarsest-level system with 8 block-Jacobi sweeps.
|
||||
Note that the ILU(0) factorization (plus triangular solve) is used as
|
||||
local solver for the block-Jacobi sweeps, since this is the default associated
|
||||
with block-Jacobi and set by <code>P%init</code>.
|
||||
Furthermore, specifying block-Jacobi as coarsest-level
|
||||
solver implies that the coarsest-level matrix is distributed
|
||||
among the processes.
|
||||
Figure <A HREF="#fig:ex3">4</A> shows how to set a W-cycle preconditioner which
|
||||
applies 2 hybrid Gauss-Seidel sweeps as pre- and post-smoother,
|
||||
and solves the coarsest-level system with the multifrontal LU factorization
|
||||
implemented in MUMPS. It is specified that the coarsest-level
|
||||
matrix is distributed, since MUMPS can be used on both
|
||||
replicated and distributed matrices, and by default
|
||||
it is used on replicated ones. The code fragments shown in Figures <A HREF="#fig:ex2">3</A> and <A HREF="#fig:ex3">4</A> are
|
||||
included in the example program file <code>mld_dexample_ml.f90</code> too.
|
||||
</FONT></FONT></FONT>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Note that the module <code>mld_prec_mod</code>, containing the definition of the
|
||||
preconditioner data type and the interfaces to the routines of MLD2P4,
|
||||
must be used in any program calling such routines.
|
||||
The modules <code>psb_base_mod</code>, for the sparse matrix and communication descriptor
|
||||
data types, and <code>psb_krylov_mod</code>, for interfacing with the
|
||||
Krylov solvers, must be also used (see Section <A HREF="node17.html#sec:examples">5.1</A>).
|
||||
<BR></FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Finally, Figure <A HREF="#fig:ex4">5</A> shows the setup of a one-level
|
||||
additive Schwarz preconditioner, i.e., RAS with overlap 2.
|
||||
Note also that a Krylov method different from CG must be used to solve
|
||||
the preconditioned system, since the preconditione in nonsymmetric.
|
||||
The corresponding example program is available in the file
|
||||
<code>mld_dexample_1lev.f90</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For all the previous preconditioners, example programs where the sparse matrix and
|
||||
the right-hand side are generated by discretizing a PDE with Dirichlet
|
||||
boundary conditions are also available in the directory <code>examples/pdegen</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Remark 1.</B> Coarsest-level solvers based on the LU factorization,
|
||||
such as those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU_Dist,
|
||||
usually lead to smaller numbers of preconditioned Krylov
|
||||
iterations than inexact solvers, when the linear system comes from
|
||||
a standard discretization of basic scalar elliptic PDE problems. However,
|
||||
this does not necessarily correspond to the smallest execution time
|
||||
on parallel computers. </FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="902"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
|
||||
setup of a multi-level preconditioner</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||
! ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi
|
||||
! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
||||
call P%init('ML',info)
|
||||
call_P%set('SMOOTHER_TYPE','BJAC',info)
|
||||
call P%set('COARSE_SOLVE','BJAC',info)
|
||||
call P%set('COARSE_SWEEPS',8,info)
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex3"></A><A NAME="904"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
|
||||
setup of a multi-level preconditioner</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
|
||||
! as pre- and post-smoother, a distributed coarsest
|
||||
! matrix, and MUMPS as coarsest-level solver
|
||||
call P%init('ML',info)
|
||||
call P%set('ML_CYCLE','WCYCLE',info)
|
||||
call P%set('SMOOTHER_TYPE','FBGS',info)
|
||||
call P%set('SMOOTHER_SWEEPS',2,info)
|
||||
call P%set('COARSE_SOLVE','MUMPS',info)
|
||||
call P%set('COARSE_MAT','DIST',info)
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="906"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
|
||||
setup of a one-level Schwarz preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! set RAS with overlap 2 and ILU(0) on the local blocks
|
||||
call P%init('AS',info)
|
||||
call P%set('SUB_OVR',2,info)
|
||||
call P%bld(A,desc_A,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html277"
|
||||
HREF="node17.html">Examples</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html274"
|
||||
<A NAME="tex2html275"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html270"
|
||||
HREF="node15.html">
|
||||
<A NAME="tex2html271"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html266"
|
||||
<A NAME="tex2html265"
|
||||
HREF="node15.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html272"
|
||||
<A NAME="tex2html273"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html275"
|
||||
HREF="node17.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html271"
|
||||
HREF="node15.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html267"
|
||||
HREF="node15.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html273"
|
||||
<B> Next:</B> <A NAME="tex2html276"
|
||||
HREF="node17.html">Examples</A>
|
||||
<B> Up:</B> <A NAME="tex2html272"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html266"
|
||||
HREF="node15.html">Smoothers and coarsest-level solvers</A>
|
||||
<B> <A NAME="tex2html274"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+245
-91
@@ -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,9 +18,8 @@ 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="node15.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="previous" HREF="node16.html">
|
||||
<LINK REL="up" HREF="node16.html">
|
||||
<LINK REL="next" HREF="node18.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,9 +29,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html282"
|
||||
HREF="userhtml.html">
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html276"
|
||||
<A NAME="tex2html278"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html284"
|
||||
@@ -40,108 +39,263 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html287"
|
||||
HREF="node18.html">Subroutine init</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html283"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html277"
|
||||
HREF="node16.html">Examples</A>
|
||||
HREF="node16.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html279"
|
||||
HREF="node16.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html285"
|
||||
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><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
Examples
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The basic user interface of MLD2P4 consists of eight routines. The six
|
||||
routines <code>init</code>, <code>set</code>,
|
||||
<code>hierarchy_build</code>, <code>smoothers_build</code>,
|
||||
<code>bld</code>, and <code>apply</code> encapsulate all the
|
||||
functionalities for the setup and the application of any multi-level and one-level
|
||||
preconditioner implemented in the package.
|
||||
The routine <code>free</code> deallocates the preconditioner data structure, while
|
||||
<code>descr</code> prints a description of the preconditioner setup by the user.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The code reported in Figure <A HREF="#fig:ex1">2</A> shows how to set and apply the default
|
||||
multi-level preconditioner available in the real double precision version
|
||||
of MLD2P4 (see Table <A HREF="#tab:precinit">1</A>). This preconditioner is chosen
|
||||
by simply specifying <code>'ML'</code> as the second argument of <code>P%init</code>
|
||||
(a call to <code>P%set</code> is not needed) and is applied with the CG
|
||||
solver provided by PSBLAS (the matrix of the system to be solved is
|
||||
assumed to be positive definite). As previously observed, the modules
|
||||
<code>psb_base_mod</code>, <code>mld_prec_mod</code> and <code>psb_krylov_mod</code>
|
||||
must be used by the example program.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">All the routines are available as methods of the preconditioner object.
|
||||
For each routine, the same user interface is overloaded with
|
||||
respect to the real/ complex case and the single/double precision;
|
||||
arguments with appropriate data types must be passed to the routine,
|
||||
i.e.,
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The part of the code concerning the
|
||||
reading and assembling of the sparse matrix and the right-hand side vector, performed
|
||||
through the PSBLAS routines for sparse matrix and vector management, is not reported
|
||||
here for brevity; the statements concerning the deallocation of the PSBLAS
|
||||
data structure are neglected too.
|
||||
The complete code can be found in the example program file <code>mld_dexample_ml.f90</code>,
|
||||
in the directory <code>examples/fileread</code> of the MLD2P4 implementation (see
|
||||
Section <A HREF="node11.html#sec:ex_and_test">3.5</A>). A sample test problem along with the relevant
|
||||
input data is available in <code>examples/fileread/runs</code>.
|
||||
For details on the use of the PSBLAS routines, see the PSBLAS User's
|
||||
Guide [<A
|
||||
HREF="node30.html#PSBLASGUIDE">13</A>].
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<LI>the sparse matrix data structure, containing the matrix to be
|
||||
preconditioned, must be of type <code>psb_</code><I>x</I><code>spmat_type</code>
|
||||
with <I>x</I> = <code>s</code> for real single precision, <I>x</I> = <code>d</code>
|
||||
for real double precision, <I>x</I> = <code>c</code> for complex single precision,
|
||||
<I>x</I> = <code>z</code> for complex double precision;
|
||||
</LI>
|
||||
<LI>the preconditioner data structure must be of type
|
||||
<code>mld_</code><I>x</I><code>prec_type</code>, with <I>x</I> =
|
||||
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, according to the sparse
|
||||
matrix data structure;
|
||||
</LI>
|
||||
<LI>the arrays containing the vectors <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img72.png"
|
||||
ALT="$v$"> and <IMG
|
||||
WIDTH="17" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img73.png"
|
||||
ALT="$w$"> involved in
|
||||
the preconditioner application <IMG
|
||||
WIDTH="82" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img23.png"
|
||||
ALT="$w=B^{-1}v$"> must be of type
|
||||
<code>psb_</code><I>x</I><code>vect_type</code> with <I>x</I> =
|
||||
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, in a manner completely
|
||||
analogous to the sparse matrix type;
|
||||
</LI>
|
||||
<LI>real parameters defining the preconditioner must be declared
|
||||
according to the precision of the sparse matrix and preconditioner
|
||||
data structures (see Section <A HREF="node19.html#sec:precset">6.2</A>).
|
||||
</LI>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
A description of each routine is given in the remainder of this section.
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The setup and application of the default multi-level preconditioner
|
||||
for the real single precision and the complex, single and double
|
||||
precision, versions are obtained with straightforward modifications of the previous
|
||||
example (see Section <A HREF="node18.html#sec:userinterface">6</A> for details). If these versions are installed,
|
||||
the corresponding codes are available in <code>examples/fileread/</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="907"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
|
||||
setup and application of the default multi-level preconditioner (example 1).
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
use psb_base_mod
|
||||
use mld_prec_mod
|
||||
use psb_krylov_mod
|
||||
... ...
|
||||
!
|
||||
! sparse matrix
|
||||
type(psb_dspmat_type) :: A
|
||||
! sparse matrix descriptor
|
||||
type(psb_desc_type) :: desc_A
|
||||
! preconditioner
|
||||
type(mld_dprec_type) :: P
|
||||
! right-hand side and solution vectors
|
||||
type(psb_d_vect_type) :: b, x
|
||||
... ...
|
||||
!
|
||||
! initialize the parallel environment
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the spd matrix A and the right-hand side b
|
||||
! using PSBLAS routines for sparse matrix / vector management
|
||||
... ...
|
||||
!
|
||||
! initialize the default multi-level preconditioner, i.e. V-cycle
|
||||
! with basic smoothed aggregation, 1 hybrid forward/backward
|
||||
! GS sweep as pre/post-smoother and UMFPACK as coarsest-level
|
||||
! solver
|
||||
call P%init('ML',info)
|
||||
!
|
||||
! build the preconditioner
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info)
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html288"
|
||||
HREF="node18.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html289"
|
||||
HREF="node19.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html290"
|
||||
HREF="node20.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html291"
|
||||
HREF="node21.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html292"
|
||||
HREF="node22.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html293"
|
||||
HREF="node23.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html294"
|
||||
HREF="node24.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html295"
|
||||
HREF="node25.html">Subroutine descr</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
!
|
||||
! set the solver parameters and the initial guess
|
||||
... ...
|
||||
!
|
||||
! solve Ax=b with preconditioned CG
|
||||
call psb_krylov('CG',A,P,b,x,tol,desc_A,info)
|
||||
... ...
|
||||
!
|
||||
! deallocate the preconditioner
|
||||
call P%free(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>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Different versions of the multi-level preconditioner can be obtained by changing
|
||||
the default values of the preconditioner parameters. The code reported in
|
||||
Figure <A HREF="#fig:ex2">3</A> shows how to set a V-cycle preconditioner
|
||||
which applies 1 block-Jacobi sweep as pre- and post-smoother,
|
||||
and solves the coarsest-level system with 8 block-Jacobi sweeps.
|
||||
Note that the ILU(0) factorization (plus triangular solve) is used as
|
||||
local solver for the block-Jacobi sweeps, since this is the default associated
|
||||
with block-Jacobi and set by <code>P%init</code>.
|
||||
Furthermore, specifying block-Jacobi as coarsest-level
|
||||
solver implies that the coarsest-level matrix is distributed
|
||||
among the processes.
|
||||
Figure <A HREF="#fig:ex3">4</A> shows how to set a W-cycle preconditioner which
|
||||
applies 2 hybrid Gauss-Seidel sweeps as pre- and post-smoother,
|
||||
and solves the coarsest-level system with the multifrontal LU factorization
|
||||
implemented in MUMPS. It is specified that the coarsest-level
|
||||
matrix is distributed, since MUMPS can be used on both
|
||||
replicated and distributed matrices, and by default
|
||||
it is used on replicated ones. The code fragments shown in Figures <A HREF="#fig:ex2">3</A> and <A HREF="#fig:ex3">4</A> are
|
||||
included in the example program file <code>mld_dexample_ml.f90</code> too.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Finally, Figure <A HREF="#fig:ex4">5</A> shows the setup of a one-level
|
||||
additive Schwarz preconditioner, i.e., RAS with overlap 2.
|
||||
Note also that a Krylov method different from CG must be used to solve
|
||||
the preconditioned system, since the preconditione in nonsymmetric.
|
||||
The corresponding example program is available in the file
|
||||
<code>mld_dexample_1lev.f90</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For all the previous preconditioners, example programs where the sparse matrix and
|
||||
the right-hand side are generated by discretizing a PDE with Dirichlet
|
||||
boundary conditions are also available in the directory <code>examples/pdegen</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="909"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
|
||||
setup of a multi-level preconditioner</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||
! ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi
|
||||
! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
||||
call P%init('ML',info)
|
||||
call_P%set('SMOOTHER_TYPE','BJAC',info)
|
||||
call P%set('COARSE_SOLVE','BJAC',info)
|
||||
call P%set('COARSE_SWEEPS',8,info)
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV>
|
||||
<P>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex3"></A><A NAME="911"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
|
||||
setup of a multi-level preconditioner</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
|
||||
! as pre- and post-smoother, a distributed coarsest
|
||||
! matrix, and MUMPS as coarsest-level solver
|
||||
call P%init('ML',info)
|
||||
call P%set('ML_CYCLE','WCYCLE',info)
|
||||
call P%set('SMOOTHER_TYPE','FBGS',info)
|
||||
call P%set('SMOOTHER_SWEEPS',2,info)
|
||||
call P%set('COARSE_SOLVE','MUMPS',info)
|
||||
call P%set('COARSE_MAT','DIST',info)
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info)
|
||||
... ...
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="913"></A>
|
||||
<TABLE>
|
||||
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
|
||||
setup of a one-level Schwarz preconditioner.</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
</DIV><TABLE WIDTH="90%">
|
||||
<TR><TD>
|
||||
<PRE>
|
||||
... ...
|
||||
! set RAS with overlap 2 and ILU(0) on the local blocks
|
||||
call P%init('AS',info)
|
||||
call P%set('SUB_OVR',2,info)
|
||||
call P%bld(A,desc_A,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
</PRE>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
<DIV ALIGN="CENTER">
|
||||
|
||||
</DIV></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html286"
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html282"
|
||||
HREF="userhtml.html">
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html276"
|
||||
<A NAME="tex2html278"
|
||||
HREF="node16.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html284"
|
||||
@@ -149,11 +303,11 @@ A description of each routine is given in the remainder of this section.
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html287"
|
||||
HREF="node18.html">Subroutine init</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Up:</B> <A NAME="tex2html283"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html277"
|
||||
HREF="node16.html">Examples</A>
|
||||
HREF="node16.html">Getting Started</A>
|
||||
<B> Previous:</B> <A NAME="tex2html279"
|
||||
HREF="node16.html">Getting Started</A>
|
||||
<B> <A NAME="tex2html285"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+103
-72
@@ -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 init</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine init">
|
||||
<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,112 +18,143 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node19.html">
|
||||
<LINK REL="previous" HREF="node17.html">
|
||||
<LINK REL="up" HREF="node17.html">
|
||||
<LINK REL="next" HREF="node27.html">
|
||||
<LINK REL="previous" HREF="node16.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node19.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html306"
|
||||
<A NAME="tex2html298"
|
||||
HREF="node19.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html302"
|
||||
HREF="node17.html">
|
||||
<A NAME="tex2html294"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html296"
|
||||
<A NAME="tex2html288"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html304"
|
||||
<A NAME="tex2html296"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html307"
|
||||
HREF="node19.html">Subroutine set</A>
|
||||
<B> Up:</B> <A NAME="tex2html303"
|
||||
HREF="node17.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html297"
|
||||
HREF="node17.html">User Interface</A>
|
||||
<B> <A NAME="tex2html305"
|
||||
<B> Next:</B> <A NAME="tex2html299"
|
||||
HREF="node19.html">Subroutine init</A>
|
||||
<B> Up:</B> <A NAME="tex2html295"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html289"
|
||||
HREF="node17.html">Examples</A>
|
||||
<B> <A NAME="tex2html297"
|
||||
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 init
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
User Interface
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%init(ptype,info)</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine allocates and initializes the preconditioner
|
||||
<code>p</code>, according to the preconditioner type chosen by the user.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The basic user interface of MLD2P4 consists of eight routines. The six
|
||||
routines <code>init</code>, <code>set</code>,
|
||||
<code>hierarchy_build</code>, <code>smoothers_build</code>,
|
||||
<code>bld</code>, and <code>apply</code> encapsulate all the
|
||||
functionalities for the setup and the application of any multi-level and one-level
|
||||
preconditioner implemented in the package.
|
||||
The routine <code>free</code> deallocates the preconditioner data structure, while
|
||||
<code>descr</code> prints a description of the preconditioner setup by the user.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
|
||||
<P></P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>ptype</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=*), intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The type of preconditioner. Its values are specified
|
||||
in Table <A HREF="#tab:precinit">1</A>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Note that the strings are case insensitive.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
|
||||
as follows:
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">All the routines are available as methods of the preconditioner object.
|
||||
For each routine, the same user interface is overloaded with
|
||||
respect to the real/ complex case and the single/double precision;
|
||||
arguments with appropriate data types must be passed to the routine,
|
||||
i.e.,
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<LI>the sparse matrix data structure, containing the matrix to be
|
||||
preconditioned, must be of type <code>psb_</code><I>x</I><code>spmat_type</code>
|
||||
with <I>x</I> = <code>s</code> for real single precision, <I>x</I> = <code>d</code>
|
||||
for real double precision, <I>x</I> = <code>c</code> for complex single precision,
|
||||
<I>x</I> = <code>z</code> for complex double precision;
|
||||
</LI>
|
||||
<LI>the preconditioner data structure must be of type
|
||||
<code>mld_</code><I>x</I><code>prec_type</code>, with <I>x</I> =
|
||||
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, according to the sparse
|
||||
matrix data structure;
|
||||
</LI>
|
||||
<LI>the arrays containing the vectors <IMG
|
||||
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img72.png"
|
||||
ALT="$v$"> and <IMG
|
||||
WIDTH="17" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img73.png"
|
||||
ALT="$w$"> involved in
|
||||
the preconditioner application <IMG
|
||||
WIDTH="82" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img23.png"
|
||||
ALT="$w=B^{-1}v$"> must be of type
|
||||
<code>psb_</code><I>x</I><code>vect_type</code> with <I>x</I> =
|
||||
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, in a manner completely
|
||||
analogous to the sparse matrix type;
|
||||
</LI>
|
||||
<LI>real parameters defining the preconditioner must be declared
|
||||
according to the precision of the sparse matrix and preconditioner
|
||||
data structures (see Section <A HREF="node20.html#sec:precset">6.2</A>).
|
||||
</LI>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
A description of each routine is given in the remainder of this section.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precinit(p,ptype,info)</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html300"
|
||||
HREF="node19.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html301"
|
||||
HREF="node20.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html302"
|
||||
HREF="node21.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html303"
|
||||
HREF="node22.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html304"
|
||||
HREF="node23.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html305"
|
||||
HREF="node24.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html306"
|
||||
HREF="node25.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html307"
|
||||
HREF="node26.html">Subroutine descr</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html306"
|
||||
<A NAME="tex2html298"
|
||||
HREF="node19.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html302"
|
||||
HREF="node17.html">
|
||||
<A NAME="tex2html294"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html296"
|
||||
<A NAME="tex2html288"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html304"
|
||||
<A NAME="tex2html296"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html307"
|
||||
HREF="node19.html">Subroutine set</A>
|
||||
<B> Up:</B> <A NAME="tex2html303"
|
||||
HREF="node17.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html297"
|
||||
HREF="node17.html">User Interface</A>
|
||||
<B> <A NAME="tex2html305"
|
||||
<B> Next:</B> <A NAME="tex2html299"
|
||||
HREF="node19.html">Subroutine init</A>
|
||||
<B> Up:</B> <A NAME="tex2html295"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html289"
|
||||
HREF="node17.html">Examples</A>
|
||||
<B> <A NAME="tex2html297"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+23
-799
@@ -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 set</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine set">
|
||||
<TITLE>Subroutine init</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine init">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,7 +20,7 @@ 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="node17.html">
|
||||
<LINK REL="up" HREF="node18.html">
|
||||
<LINK REL="next" HREF="node20.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node20.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html314"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html308"
|
||||
HREF="node18.html">
|
||||
@@ -40,30 +40,29 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html319"
|
||||
HREF="node20.html">Subroutine build</A>
|
||||
HREF="node20.html">Subroutine set</A>
|
||||
<B> Up:</B> <A NAME="tex2html315"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html309"
|
||||
HREF="node18.html">Subroutine init</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> <A NAME="tex2html317"
|
||||
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 set
|
||||
Subroutine init
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%set(what,val,info [,ilev, ilmax, pos])</code>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%init(ptype,info)</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine sets the parameters defining the preconditioner <code>p</code>. More
|
||||
precisely, the parameter identified by <code>what</code> is assigned the value
|
||||
contained in <code>val</code>.
|
||||
This routine allocates and initializes the preconditioner
|
||||
<code>p</code>, according to the preconditioner type chosen by the user.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
|
||||
@@ -71,28 +70,17 @@ contained in <code>val</code>.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>what</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=*)</code>. </FONT></FONT></FONT></TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>ptype</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=*), intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The parameter to be set. It can be specified through its name;
|
||||
the string is case-insensitive. See
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>val </code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer</code> <I>or</I> <code>character(len=*)</code> <I>or</I>
|
||||
<code>real(psb_spk_)</code> <I>or</I> <code>real(psb_dpk_)</code>,
|
||||
<code>intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The type of preconditioner. Its values are specified
|
||||
in Table <A HREF="#tab:precinit">1</A>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The value of the parameter to be set. The list of allowed
|
||||
values and the corresponding data types is given in
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
When the value is of type <code>character(len=*)</code>,
|
||||
it is also treated as case insensitive.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Note that the strings are case insensitive.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>info</code> </FONT></FONT></FONT></TD>
|
||||
@@ -100,49 +88,7 @@ contained in <code>val</code>.
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node27.html#sec:errors">8</A>
|
||||
for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>ilev</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, optional, intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> For the multi-level preconditioner, the level at which the
|
||||
preconditioner parameter has to be set.
|
||||
The levels are numbered in increasing
|
||||
order starting from the finest one, i.e., level 1 is the finest level.
|
||||
If <code>ilev</code> is not present, the parameter identified by <code>what</code>
|
||||
is set at all the appropriate levels (see
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>).</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>ilmax</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, optional, intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> For the multi-level preconditioner, when both
|
||||
<code>ilev</code> and <code>ilmax</code> are present, the settings
|
||||
are applied at all levels <code>ilev:ilmax</code>. When
|
||||
<code>ilev</code> is present but <code>ilmax</code> is not, then
|
||||
the default is <code>ilmax=ilev</code>.
|
||||
The levels are numbered in increasing
|
||||
order starting from the finest one, i.e., level 1 is the finest level. </FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>pos</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>charater(len=*), optional, intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Whether the other arguments apply only to the pre-smoother (<code>'PRE'</code>)
|
||||
or to the post-smoother (<code>'POST'</code>). If <code>pos</code> is not present,
|
||||
the other arguments are applied to both smoothers.
|
||||
If the preconditioner is one-level or the parameter identified by <code>what</code>
|
||||
does not concern the smoothers, <code>pos</code> is ignored.
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
@@ -151,731 +97,9 @@ as follows:
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precset(p,what,val,info)</code>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precinit(p,ptype,info)</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
However, in this case the optional arguments <code>ilev</code>, <code>ilmax</code>, and <code>pos</code>
|
||||
cannot be used.
|
||||
<BR></FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">A variety of preconditioners can be obtained
|
||||
by a suitable setting of the preconditioner parameters. These parameters
|
||||
can be logically divided into four groups, i.e., parameters defining
|
||||
</FONT></FONT></FONT>
|
||||
<OL>
|
||||
<LI>the type of multi-level cycle and how many cycles must be applied;
|
||||
</LI>
|
||||
<LI>the aggregation algorithm;
|
||||
</LI>
|
||||
<LI>the coarse-space correction at the coarsest level (for multi-level
|
||||
preconditioners only);
|
||||
</LI>
|
||||
<LI>the smoother of the multi-level preconditioners, or the one-level
|
||||
preconditioner.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
</OL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
A list of the parameters that can be set, along with their allowed and
|
||||
default values, is given in Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
For a description of the meaning of the parameters, please
|
||||
refer also to Section <A HREF="node11.html#sec:background">4</A>.
|
||||
<BR></FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Remark 2.</B> A smoother is usually obtained by combining two objects:
|
||||
a smoother (<code>SMOOTHER_TYPE</code>) and a local solver (<code>SUB_SOLVE</code>),
|
||||
as specified in Tables <A HREF="#tab:p_smoother">7</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
For example, the block-Jacobi smoother using
|
||||
ILU(0) on the blocks is obtained by combining the block-Jacobi smoother
|
||||
object with the ILU(0) solver object. Similarly,
|
||||
the hybrid Gauss-Seidel smoother (see Note in Table <A HREF="#tab:p_smoother">7</A>)
|
||||
is obtained by combining the block-Jacobi smoother object with a single sweep
|
||||
of the Gauss-Seidel solver object, while the point-Jacobi smoother is the
|
||||
result of combining the block-Jacobi smoother object with a single sweep
|
||||
of the pointwise-Jacobi solver object. However, for simplicity, shortcuts are
|
||||
provided to set point-Jacobi, hybrid (forward) Gauss-Seidel, and
|
||||
hybrid backward Gauss-Seidel, i.e., the previous smoothers can be defined
|
||||
by setting only <code>SMOOTHER_TYPE</code> to appropriate values (see
|
||||
Tables <A HREF="#tab:p_smoother">7</A>), i.e., without setting
|
||||
<code>SUB_SOLVE</code> too.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The smoother and solver objects are arranged in a
|
||||
hierarchical manner. When specifying a smoother object, its parameters,
|
||||
including the local solver, are set to their default values, and when a solver
|
||||
object is specified, its defaults are also set, overriding in both
|
||||
cases any previous settings even if explicitly specified. Therefore if
|
||||
the user sets a smoother, and wishes to use a solver
|
||||
different from the default one, the call to set the solver must come
|
||||
<I>after</I> the call to set the smoother.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Similar considerations apply to the point-Jacobi, Gauss-Seidel and block-Jacobi
|
||||
coarsest-level solvers, and shortcuts are available
|
||||
in this case too (see Table <A HREF="#tab:p_coarse">5</A>).
|
||||
<BR></FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Remark 3.</B> In general, a coarsest-level solver cannot be used with
|
||||
both the replicated and distributed coarsest-matrix layout;
|
||||
therefore, setting the solver after the layout may change the layout.
|
||||
Similarly, setting the layout after the solver may change the solver.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">More precisely, UMFPACK and SuperLU require the coarsest-level
|
||||
matrix to be replicated, while SuperLU_Dist requires it to be distributed.
|
||||
In these cases, setting the coarsest-level solver implies that
|
||||
the layout is redefined according to the solver, ovverriding any
|
||||
previous settings. MUMPS, point-Jacobi,
|
||||
hybrid Gauss-Seidel and block-Jacobi can be applied to
|
||||
replicated and distributed matrices, thus their choice
|
||||
does not modify any previously specified layout.
|
||||
It is worth noting that, when the matrix is replicated,
|
||||
the point-Jacobi, hybrid Gauss-Seidel and block-Jacobi solvers
|
||||
reduce to the corresponding local solver objects (see Remark 2).
|
||||
For the point-Jacobi and Gauss-Seidel solvers, these objects
|
||||
correspond to a <I>single</I> point-Jacobi sweep and a <I>single</I>
|
||||
Gauss-Seidel sweep, respectively, which are very poor solvers.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">On the other hand, the distributed layout can be used with any solver
|
||||
but UMFPACK and SuperLU; therefore, if any of these two solvers has already
|
||||
been selected, the coarsest-level solver is changed to block-Jacobi,
|
||||
with the previously chosen solver applied to the local blocks.
|
||||
Likewise, the replicated layout can be used with any solver but SuperLu_Dist;
|
||||
therefore, if SuperLu_Dist has been previously set, the coarsest-level
|
||||
solver is changed to the default sequential solver.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1330"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 2:</STRONG>
|
||||
Parameters defining the multi-level cycle and the number of cycles to
|
||||
be applied.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><code>val</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=204><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><code>'ML_CYCLE'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'VCYCLE'</TT>
|
||||
<P>
|
||||
<TT>'WCYCLE'</TT>
|
||||
<P>
|
||||
<TT>'KCYCLE'</TT>
|
||||
<P>
|
||||
<TT>'MULT'</TT>
|
||||
<P>
|
||||
<TT>'ADD'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'VCYCLE'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=204>Multi-level cycle: V-cycle, W-cycle, K-cycle, hybrid Multiplicative Schwarz,
|
||||
and Additive Schwarz.
|
||||
<P>
|
||||
Note that hybrid Multiplicative Schwarz is equivalent to V-cycle and
|
||||
is included for compatibility with previous versions of MLD2P4.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><code>'OUTER_SWEEPS'</code></TD>
|
||||
<TD ALIGN="LEFT"><TT>integer</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>Any integer
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img74.png"
|
||||
ALT="$\ge 1$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>1</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=204>Number of multi-level cycles.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1335"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 3:</STRONG>
|
||||
Parameters defining the aggregation algorithm.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><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=82><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'MIN_COARSE_SIZE'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any number
|
||||
<P>
|
||||
<IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img75.png"
|
||||
ALT="$> 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><!-- MATH
|
||||
$\lfloor 40 \sqrt[3]{n} \rfloor$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="63" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img76.png"
|
||||
ALT="$\lfloor 40 \sqrt[3]{n} \rfloor$">, where <IMG
|
||||
WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img77.png"
|
||||
ALT="$n$"> is the dimension
|
||||
of the matrix at the finest level</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Coarse size threshold. The aggregation stops
|
||||
if the global number of variables of the
|
||||
computed coarsest matrix
|
||||
is lower than or equal to this threshold
|
||||
(see Note).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'MIN_CR_RATIO'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any number
|
||||
<P>
|
||||
<IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img78.png"
|
||||
ALT="$> 1$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82>1.5</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Minimum coarsening ratio. The aggregation stops
|
||||
if the ratio between the matrix dimensions
|
||||
at two consecutive levels is lower than or equal to this
|
||||
threshold (see Note).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'MAX_LEVS'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any integer
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img78.png"
|
||||
ALT="$> 1$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82>20</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Maximum number of levels. The aggregation stops
|
||||
if the number of levels reaches this value (see Note).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'PAR_AGGR'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'DEC'</TT>, <TT>'SYMDEC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><TT>'DEC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Parallel aggregation algorithm.
|
||||
<P>
|
||||
Currently, only the
|
||||
decoupled aggregation (<code>DEC</code>) is available; the
|
||||
<code>SYMDEC</code> option applies decoupled
|
||||
aggregation to the sparsity pattern
|
||||
of <IMG
|
||||
WIDTH="63" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img79.png"
|
||||
ALT="$A+A^T$">.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'AGGR_TYPE'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><B><TT>'VMB'</TT></B></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><B><TT>'VMB'</TT></B></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Type of aggregation algorithm: currently, the scalar aggregation
|
||||
algorithm by Vanek, Mandel and Brezina is implemented
|
||||
[<A
|
||||
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>].</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'AGGR_PROL'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'SMOOTHED'</TT>, <TT>'UNSMOOTHED'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><TT>'SMOOTHED'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Prolongator used by the aggregation algorithm: smoothed or unsmoothed
|
||||
(i.e., tentative prolongator).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5><B>Note.</B> The aggregation algorithm stops when
|
||||
at least one of the following criteria is met:
|
||||
the coarse size threshold, the</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5>maximum coarsening ratio, or the maximum number
|
||||
of levels is reached. Therefore, the actual number of levels may be</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5>smaller than the specified maximum number
|
||||
of levels.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1339"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 4:</STRONG>
|
||||
Parameters defining the aggregation algorithm (continued).
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=108><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><code>val</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=108><code>'AGGR_ORD'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><TT>'NATURAL'</TT>
|
||||
<P>
|
||||
<TT>'DEGREE'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'NATURAL'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187>Initial ordering of indices for the aggregation
|
||||
algorithm: either natural ordering or sorted by
|
||||
descending degrees of the nodes in the
|
||||
matrix graph.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=108><code>'AGGR_THRESH'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71>Any real
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img80.png"
|
||||
ALT="$\in [0, 1]$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>0.05</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187>The threshold <IMG
|
||||
WIDTH="13" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img81.png"
|
||||
ALT="$\theta$"> in the aggregation algorithm,
|
||||
see (<A HREF="node13.html#eq:strongly_coup">3</A>) in Section <A HREF="node13.html#sec:aggregation">4.2</A>.
|
||||
See also the note at the bottom of this table.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=108><code>'AGGR_FILTER'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><TT>'FILTER'</TT>
|
||||
<P>
|
||||
<TT>'NOFILTER'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'NOFILTER'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187>Matrix used in computing the smoothed
|
||||
prolongator: filtered or unfiltered (see (<A HREF="node13.html#eq:filtered">5</A>) in Section <A HREF="node13.html#sec:aggregation">4.2</A>).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5><B>Note.</B> Different thresholds at different levels, such as
|
||||
those used in [<A
|
||||
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>, Section 5.1], can be easily set by
|
||||
invoking the rou-</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5>tine <TT>set</TT> with
|
||||
the parameter <TT>ilev</TT>.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1344"></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" VALIGN="TOP" WIDTH=111><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><code>val</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=244><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_MAT'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><TT>'DIST'</TT>
|
||||
<P>
|
||||
<TT>'REPL'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><TT>'REPL'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=244>Coarsest matrix layout: distributed among the processes or
|
||||
replicated on each of them.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_SOLVE'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><TT>'MUMPS'</TT>
|
||||
<P>
|
||||
<TT>'UMF'</TT>
|
||||
<P>
|
||||
<TT>'SLU'</TT>
|
||||
<P>
|
||||
<TT>'SLUDIST'</TT>
|
||||
<P>
|
||||
<TT>'JACOBI'</TT>
|
||||
<P>
|
||||
<TT>'GS'</TT>
|
||||
<P>
|
||||
<TT>'BJAC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48>See Note.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=244>Solver used at the coarsest level: sequential
|
||||
LU from MUMPS, UMFPACK, or SuperLU
|
||||
(plus triangular solve);
|
||||
distributed LU from MUMPS or SuperLU_Dist
|
||||
(plus triangular solve);
|
||||
point-Jacobi, hybrid Gauss-Seidel or block-Jacobi.
|
||||
<P>
|
||||
Note that <TT>UMF</TT> and <TT>SLU</TT> require the coarsest
|
||||
matrix to be replicated, <TT>SLUDIST</TT>, <TT>JACOBI</TT>,
|
||||
<TT>GS</TT> and <TT>BJAC</TT> require it to be
|
||||
distributed, <TT>MUMPS</TT> can be used with either
|
||||
a replicated or a distributed matrix. When any of the previous
|
||||
solvers is specified, the matrix layout is set to a default
|
||||
value
|
||||
which allows the use
|
||||
value UMFPACK and SuperLU_Dist
|
||||
are available only in double precision.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_SUBSOLVE'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><TT>'ILU'</TT>
|
||||
<P>
|
||||
<TT>'ILUT'</TT>
|
||||
<P>
|
||||
<TT>'MILU'</TT>
|
||||
<P>
|
||||
<TT>'MUMPS'</TT>
|
||||
<P>
|
||||
<TT>'SLU'</TT>
|
||||
<P>
|
||||
<TT>'UMF'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48>See Note.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=244>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="img82.png"
|
||||
ALT="$p$">), ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img83.png"
|
||||
ALT="$p,t$">),
|
||||
MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$p$">), LU from MUMPS, SuperLU or UMFPACK
|
||||
(plus triangular solve).
|
||||
Note that UMFPACK and SuperLU_Dist
|
||||
are available only in double precision.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5><B>Note.</B> Defaults for <TT>COARSE_SOLVE</TT> and
|
||||
<TT>COARSE_SUBSOLVE</TT> are chosen in the following order:</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5>single precision version - <TT>MUMPS</TT> if installed,
|
||||
then <TT>SLU</TT> if installed,
|
||||
<TT>ILU</TT> otherwise;</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5>double precision version - <TT>UMF</TT> if installed,
|
||||
then <TT>MUMPS</TT> if installed, then <TT>SLU</TT> if
|
||||
installed, <TT>ILU</TT> otherwise.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1346"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 6:</STRONG>
|
||||
Parameters defining the coarse-space correction at the coarsest
|
||||
level (continued).</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><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" VALIGN="TOP" WIDTH=43><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_SWEEPS'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57>Any integer
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img75.png"
|
||||
ALT="$> 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>10</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Number of sweeps when <code>JACOBI</code>, <code>GS</code> or <code>BJAC</code>
|
||||
is chosen as coarsest-level solver.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_FILLIN'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57>Any integer
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Fill-in level <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$p$"> of the ILU factorizations.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_ILUTHRS'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57>Any real
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Drop tolerance <IMG
|
||||
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img85.png"
|
||||
ALT="$t$"> in the ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img83.png"
|
||||
ALT="$p,t$">) factorization.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1348"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 7:</STRONG>
|
||||
Parameters defining the smoother or the details of the one-level preconditioner.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1">
|
||||
<code>what</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <SMALL>DATA TYPE</SMALL> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=54><FONT SIZE="-1"> <code>val</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <SMALL>DEFAULT</SMALL> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=184><FONT SIZE="-1">
|
||||
<SMALL>COMMENTS</SMALL> </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <code>'SMOOTHER_TYPE'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>character(len=*)</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=54><FONT SIZE="-1"> <code>'JACOBI'</code> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><code>'GS'</code> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><code>'BGS'</code> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><code>'BJAC'</code>
|
||||
</FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><code>'AS'</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <code>'FBGS'</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=184><FONT SIZE="-1"> Type of smoother used in the multi-level preconditioner:
|
||||
point-Jacobi, hybrid (forward) Gauss-Seidel,
|
||||
hybrid backward Gauss-Seidel, block-Jacobi, and
|
||||
Additive Schwarz. </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">It is ignored by one-level preconditioners. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <code>'SUB_SOLVE'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>character(len=*)</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=54><FONT SIZE="-1"> <TT>'JACOBI'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'GS'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'BGS'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'ILU'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'ILUT'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'MILU'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'MUMPS'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'SLU'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'UMF'</TT>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <TT>GS</TT> and <TT>BGS</TT> for pre- and post-smoothers
|
||||
of multi-level preconditioners, respectively </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>ILU</TT> for block-Jacobi and Additive Schwarz
|
||||
one-level preconditioners
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=184><FONT SIZE="-1"> The local solver to be used with the smoother or one-level
|
||||
preconditioner (see Remark 2, page 24): point-Jacobi,
|
||||
hybrid (forward) Gauss-Seidel, hybrid backward
|
||||
Gauss-Seidel, ILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$p$">), ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img83.png"
|
||||
ALT="$p,t$">), MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$p$">),
|
||||
LU from MUMPS, SuperLU or UMFPACK
|
||||
(plus triangular solve). See Note for details on hybrid
|
||||
Gauss-Seidel. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <code>'SMOOTHER_SWEEPS'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>integer</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=54><FONT SIZE="-1"> Any integer </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> 1
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=184><FONT SIZE="-1"> Number of sweeps of the smoother or one-level preconditioner.
|
||||
In the multi-level case, no pre-smother or
|
||||
post-smoother is used if this parameter is set to 0
|
||||
together with <code>pos='PRE'</code> or <code>pos='POST</code>,
|
||||
respectively. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <code>'SUB_OVR'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>integer</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=54><FONT SIZE="-1"> Any integer </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> 1
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=184><FONT SIZE="-1"> Number of overlap layers, for Additive Schwarz only. </FONT></TD>
|
||||
</TR>
|
||||
</TABLE></DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1350"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 8:</STRONG>
|
||||
Parameters defining the smoother or the details of the one-level preconditioner
|
||||
(continued).</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1">
|
||||
<code>what</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <SMALL>DATA TYPE</SMALL> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> <code>val</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> <SMALL>DEFAULT</SMALL> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1">
|
||||
<SMALL>COMMENTS</SMALL> </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> <code>'SUB_RESTR'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>character(len=*)</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> <TT>'HALO'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'NONE'</TT>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> <TT>'HALO'</TT>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Type of restriction operator, for Additive Schwarz only:
|
||||
<TT>HALO</TT> for taking into account the overlap, <TT>NONE</TT>
|
||||
for neglecting it. </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">Note that <TT>HALO</TT> must be chosen for
|
||||
the classical Addditive Schwarz smoother and its RAS variant.</FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> <code>'SUB_PROL'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>character(len=*)</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> <TT>'SUM'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'NONE'</TT>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> <TT>'NONE'</TT>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Type of prolongation operator, for Additive Schwarz only:
|
||||
<TT>SUM</TT> for adding the contributions from the overlap, <TT>NONE</TT>
|
||||
for neglecting them. </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">Note that <TT>SUM</TT> must be chosen for the classical Additive
|
||||
Schwarz smoother, and <TT>NONE</TT> for its RAS variant. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> <code>'SUB_FILLIN'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>integer</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> Any integer </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> 0
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Fill-in level <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$p$"> of the incomplete LU factorizations. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> <code>'SUB_ILUTHRS'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>real(</code><I>kind_parameter</I><code>)</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> Any real number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> 0
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Drop tolerance <IMG
|
||||
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img85.png"
|
||||
ALT="$t$"> in the ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img83.png"
|
||||
ALT="$p,t$">) factorization. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> </FONT></TD>
|
||||
<TD></TD>
|
||||
<TD></TD>
|
||||
<TD></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
</TABLE></DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
@@ -884,7 +108,7 @@ Parameters defining the smoother or the details of the one-level preconditioner
|
||||
HREF="node20.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html314"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html308"
|
||||
HREF="node18.html">
|
||||
@@ -894,11 +118,11 @@ Parameters defining the smoother or the details of the one-level preconditioner
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html319"
|
||||
HREF="node20.html">Subroutine build</A>
|
||||
HREF="node20.html">Subroutine set</A>
|
||||
<B> Up:</B> <A NAME="tex2html315"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html309"
|
||||
HREF="node18.html">Subroutine init</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> <A NAME="tex2html317"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+52
-52
@@ -26,21 +26,21 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html76"
|
||||
<A NAME="tex2html77"
|
||||
HREF="node3.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html74"
|
||||
<A NAME="tex2html75"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html68"
|
||||
<A NAME="tex2html69"
|
||||
HREF="node1.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html77"
|
||||
<B> Next:</B> <A NAME="tex2html78"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<B> Up:</B> <A NAME="tex2html75"
|
||||
<B> Up:</B> <A NAME="tex2html76"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html69"
|
||||
<B> Previous:</B> <A NAME="tex2html70"
|
||||
HREF="node1.html">Abstract</A>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -53,72 +53,72 @@ Contents</A>
|
||||
<!--Table of Contents-->
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html78"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<LI><A NAME="tex2html79"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
HREF="node3.html">General Overview</A>
|
||||
<LI><A NAME="tex2html80"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<UL>
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<LI><A NAME="tex2html81"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html82"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
HREF="node7.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html83"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
HREF="node8.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html84"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
HREF="node9.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html85"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node10.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html86"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<UL>
|
||||
HREF="node11.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html87"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html88"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
HREF="node13.html">AMG preconditioners</A>
|
||||
<LI><A NAME="tex2html89"
|
||||
HREF="node14.html">Smoothers and coarsest-level solvers</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node14.html">Smoothed Aggregation</A>
|
||||
<LI><A NAME="tex2html90"
|
||||
HREF="node15.html">Getting Started</A>
|
||||
<UL>
|
||||
HREF="node15.html">Smoothers and coarsest-level solvers</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html91"
|
||||
HREF="node16.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html92"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node16.html">Getting Started</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html93"
|
||||
HREF="node18.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html94"
|
||||
HREF="node19.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html95"
|
||||
HREF="node20.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html96"
|
||||
HREF="node21.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html97"
|
||||
HREF="node22.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html98"
|
||||
HREF="node23.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html99"
|
||||
HREF="node24.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html100"
|
||||
HREF="node25.html">Subroutine descr</A>
|
||||
<LI><A NAME="tex2html92"
|
||||
HREF="node17.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html93"
|
||||
HREF="node18.html">User Interface</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html94"
|
||||
HREF="node19.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html95"
|
||||
HREF="node20.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html96"
|
||||
HREF="node21.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html97"
|
||||
HREF="node22.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html98"
|
||||
HREF="node23.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html99"
|
||||
HREF="node24.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html100"
|
||||
HREF="node25.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html101"
|
||||
HREF="node26.html">Adding new smoother and solver objects to MLD2P4</A>
|
||||
HREF="node26.html">Subroutine descr</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html102"
|
||||
HREF="node27.html">Error Handling</A>
|
||||
HREF="node27.html">Adding new smoother and solver objects to MLD2P4</A>
|
||||
<LI><A NAME="tex2html103"
|
||||
HREF="node28.html">License</A>
|
||||
HREF="node28.html">Error Handling</A>
|
||||
<LI><A NAME="tex2html104"
|
||||
HREF="node29.html">Bibliography</A>
|
||||
HREF="node29.html">License</A>
|
||||
<LI><A NAME="tex2html105"
|
||||
HREF="node30.html">Bibliography</A>
|
||||
</UL>
|
||||
<!--End of Table of Contents-->
|
||||
</FONT></FONT></FONT>
|
||||
|
||||
+798
-36
@@ -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 build</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine build">
|
||||
<TITLE>Subroutine set</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine set">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,7 +20,7 @@ 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="node17.html">
|
||||
<LINK REL="up" HREF="node18.html">
|
||||
<LINK REL="next" HREF="node21.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node21.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html326"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html320"
|
||||
HREF="node19.html">
|
||||
@@ -40,30 +40,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html331"
|
||||
HREF="node21.html">Subroutine hierarchy_build</A>
|
||||
HREF="node21.html">Subroutine build</A>
|
||||
<B> Up:</B> <A NAME="tex2html327"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html321"
|
||||
HREF="node19.html">Subroutine set</A>
|
||||
HREF="node19.html">Subroutine init</A>
|
||||
<B> <A NAME="tex2html329"
|
||||
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 build
|
||||
Subroutine set
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%build(a,desc_a,info)</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%set(what,val,info [,ilev, ilmax, pos])</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine builds the one-level preconditioner <code>p</code> according to the requirements
|
||||
made by the user through the routines <code>init</code> and <code>set</code>
|
||||
(see Sections <A HREF="node21.html#sec:hier_bld">6.4</A> and <A HREF="node22.html#sec:smooth_bld">6.5</A> for multi-level preconditioners).
|
||||
This routine sets the parameters defining the preconditioner <code>p</code>. More
|
||||
precisely, the parameter identified by <code>what</code> is assigned the value
|
||||
contained in <code>val</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
|
||||
@@ -71,34 +71,78 @@ made by the user through the routines <code>init</code> and <code>set</code>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>a</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>. </FONT></FONT></FONT></TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>what</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=*)</code>. </FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.
|
||||
See the PSBLAS User's Guide for details [<A
|
||||
HREF="node29.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The parameter to be set. It can be specified through its name;
|
||||
the string is case-insensitive. See
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>desc_a</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_desc_type), intent(in)</code>. </FONT></FONT></FONT></TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>val </code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer</code> <I>or</I> <code>character(len=*)</code> <I>or</I>
|
||||
<code>real(psb_spk_)</code> <I>or</I> <code>real(psb_dpk_)</code>,
|
||||
<code>intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
details [<A
|
||||
HREF="node29.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The value of the parameter to be set. The list of allowed
|
||||
values and the corresponding data types is given in
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
When the value is of type <code>character(len=*)</code>,
|
||||
it is also treated as case insensitive.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node28.html#sec:errors">8</A>
|
||||
for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>ilev</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, optional, intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> For the multi-level preconditioner, the level at which the
|
||||
preconditioner parameter has to be set.
|
||||
The levels are numbered in increasing
|
||||
order starting from the finest one, i.e., level 1 is the finest level.
|
||||
If <code>ilev</code> is not present, the parameter identified by <code>what</code>
|
||||
is set at all the appropriate levels (see
|
||||
Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>).</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>ilmax</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, optional, intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> For the multi-level preconditioner, when both
|
||||
<code>ilev</code> and <code>ilmax</code> are present, the settings
|
||||
are applied at all levels <code>ilev:ilmax</code>. When
|
||||
<code>ilev</code> is present but <code>ilmax</code> is not, then
|
||||
the default is <code>ilmax=ilev</code>.
|
||||
The levels are numbered in increasing
|
||||
order starting from the finest one, i.e., level 1 is the finest level. </FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>pos</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>charater(len=*), optional, intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Whether the other arguments apply only to the pre-smoother (<code>'PRE'</code>)
|
||||
or to the post-smoother (<code>'POST'</code>). If <code>pos</code> is not present,
|
||||
the other arguments are applied to both smoothers.
|
||||
If the preconditioner is one-level or the parameter identified by <code>what</code>
|
||||
does not concern the smoothers, <code>pos</code> is ignored.
|
||||
</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
@@ -107,12 +151,730 @@ as follows:
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precbld(p,what,val,info)</code>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precset(p,what,val,info)</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
In this case, the routine can be used to build multi-level preconditioners too.
|
||||
However, in this case the optional arguments <code>ilev</code>, <code>ilmax</code>, and <code>pos</code>
|
||||
cannot be used.
|
||||
<BR></FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">A variety of preconditioners can be obtained
|
||||
by a suitable setting of the preconditioner parameters. These parameters
|
||||
can be logically divided into four groups, i.e., parameters defining
|
||||
</FONT></FONT></FONT>
|
||||
<OL>
|
||||
<LI>the type of multi-level cycle and how many cycles must be applied;
|
||||
</LI>
|
||||
<LI>the aggregation algorithm;
|
||||
</LI>
|
||||
<LI>the coarse-space correction at the coarsest level (for multi-level
|
||||
preconditioners only);
|
||||
</LI>
|
||||
<LI>the smoother of the multi-level preconditioners, or the one-level
|
||||
preconditioner.
|
||||
|
||||
<P>
|
||||
</LI>
|
||||
</OL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
A list of the parameters that can be set, along with their allowed and
|
||||
default values, is given in Tables <A HREF="#tab:p_cycle">2</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
For a description of the meaning of the parameters, please
|
||||
refer also to Section <A HREF="node12.html#sec:background">4</A>.
|
||||
<BR></FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Remark 2.</B> A smoother is usually obtained by combining two objects:
|
||||
a smoother (<code>SMOOTHER_TYPE</code>) and a local solver (<code>SUB_SOLVE</code>),
|
||||
as specified in Tables <A HREF="#tab:p_smoother">7</A>-<A HREF="#tab:p_smoother_1">8</A>.
|
||||
For example, the block-Jacobi smoother using
|
||||
ILU(0) on the blocks is obtained by combining the block-Jacobi smoother
|
||||
object with the ILU(0) solver object. Similarly,
|
||||
the hybrid Gauss-Seidel smoother (see Note in Table <A HREF="#tab:p_smoother">7</A>)
|
||||
is obtained by combining the block-Jacobi smoother object with a single sweep
|
||||
of the Gauss-Seidel solver object, while the point-Jacobi smoother is the
|
||||
result of combining the block-Jacobi smoother object with a single sweep
|
||||
of the pointwise-Jacobi solver object. However, for simplicity, shortcuts are
|
||||
provided to set point-Jacobi, hybrid (forward) Gauss-Seidel, and
|
||||
hybrid backward Gauss-Seidel, i.e., the previous smoothers can be defined
|
||||
by setting only <code>SMOOTHER_TYPE</code> to appropriate values (see
|
||||
Tables <A HREF="#tab:p_smoother">7</A>), i.e., without setting
|
||||
<code>SUB_SOLVE</code> too.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The smoother and solver objects are arranged in a
|
||||
hierarchical manner. When specifying a smoother object, its parameters,
|
||||
including the local solver, are set to their default values, and when a solver
|
||||
object is specified, its defaults are also set, overriding in both
|
||||
cases any previous settings even if explicitly specified. Therefore if
|
||||
the user sets a smoother, and wishes to use a solver
|
||||
different from the default one, the call to set the solver must come
|
||||
<I>after</I> the call to set the smoother.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Similar considerations apply to the point-Jacobi, Gauss-Seidel and block-Jacobi
|
||||
coarsest-level solvers, and shortcuts are available
|
||||
in this case too (see Table <A HREF="#tab:p_coarse">5</A>).
|
||||
<BR></FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Remark 3.</B> In general, a coarsest-level solver cannot be used with
|
||||
both the replicated and distributed coarsest-matrix layout;
|
||||
therefore, setting the solver after the layout may change the layout.
|
||||
Similarly, setting the layout after the solver may change the solver.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">More precisely, UMFPACK and SuperLU require the coarsest-level
|
||||
matrix to be replicated, while SuperLU_Dist requires it to be distributed.
|
||||
In these cases, setting the coarsest-level solver implies that
|
||||
the layout is redefined according to the solver, ovverriding any
|
||||
previous settings. MUMPS, point-Jacobi,
|
||||
hybrid Gauss-Seidel and block-Jacobi can be applied to
|
||||
replicated and distributed matrices, thus their choice
|
||||
does not modify any previously specified layout.
|
||||
It is worth noting that, when the matrix is replicated,
|
||||
the point-Jacobi, hybrid Gauss-Seidel and block-Jacobi solvers
|
||||
reduce to the corresponding local solver objects (see Remark 2).
|
||||
For the point-Jacobi and Gauss-Seidel solvers, these objects
|
||||
correspond to a <I>single</I> point-Jacobi sweep and a <I>single</I>
|
||||
Gauss-Seidel sweep, respectively, which are very poor solvers.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">On the other hand, the distributed layout can be used with any solver
|
||||
but UMFPACK and SuperLU; therefore, if any of these two solvers has already
|
||||
been selected, the coarsest-level solver is changed to block-Jacobi,
|
||||
with the previously chosen solver applied to the local blocks.
|
||||
Likewise, the replicated layout can be used with any solver but SuperLu_Dist;
|
||||
therefore, if SuperLu_Dist has been previously set, the coarsest-level
|
||||
solver is changed to the default sequential solver.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1337"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 2:</STRONG>
|
||||
Parameters defining the multi-level cycle and the number of cycles to
|
||||
be applied.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><code>val</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=204><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><code>'ML_CYCLE'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'VCYCLE'</TT>
|
||||
<P>
|
||||
<TT>'WCYCLE'</TT>
|
||||
<P>
|
||||
<TT>'KCYCLE'</TT>
|
||||
<P>
|
||||
<TT>'MULT'</TT>
|
||||
<P>
|
||||
<TT>'ADD'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'VCYCLE'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=204>Multi-level cycle: V-cycle, W-cycle, K-cycle, hybrid Multiplicative Schwarz,
|
||||
and Additive Schwarz.
|
||||
<P>
|
||||
Note that hybrid Multiplicative Schwarz is equivalent to V-cycle and
|
||||
is included for compatibility with previous versions of MLD2P4.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><code>'OUTER_SWEEPS'</code></TD>
|
||||
<TD ALIGN="LEFT"><TT>integer</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>Any integer
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img74.png"
|
||||
ALT="$\ge 1$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>1</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=204>Number of multi-level cycles.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1342"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 3:</STRONG>
|
||||
Parameters defining the aggregation algorithm.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><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=82><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'MIN_COARSE_SIZE'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any number
|
||||
<P>
|
||||
<IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img75.png"
|
||||
ALT="$> 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><!-- MATH
|
||||
$\lfloor 40 \sqrt[3]{n} \rfloor$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="63" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img76.png"
|
||||
ALT="$\lfloor 40 \sqrt[3]{n} \rfloor$">, where <IMG
|
||||
WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img77.png"
|
||||
ALT="$n$"> is the dimension
|
||||
of the matrix at the finest level</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Coarse size threshold. The aggregation stops
|
||||
if the global number of variables of the
|
||||
computed coarsest matrix
|
||||
is lower than or equal to this threshold
|
||||
(see Note).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'MIN_CR_RATIO'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any number
|
||||
<P>
|
||||
<IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img78.png"
|
||||
ALT="$> 1$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82>1.5</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Minimum coarsening ratio. The aggregation stops
|
||||
if the ratio between the matrix dimensions
|
||||
at two consecutive levels is lower than or equal to this
|
||||
threshold (see Note).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'MAX_LEVS'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>Any integer
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img78.png"
|
||||
ALT="$> 1$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82>20</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Maximum number of levels. The aggregation stops
|
||||
if the number of levels reaches this value (see Note).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'PAR_AGGR'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'DEC'</TT>, <TT>'SYMDEC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><TT>'DEC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Parallel aggregation algorithm.
|
||||
<P>
|
||||
Currently, only the
|
||||
decoupled aggregation (<code>DEC</code>) is available; the
|
||||
<code>SYMDEC</code> option applies decoupled
|
||||
aggregation to the sparsity pattern
|
||||
of <IMG
|
||||
WIDTH="63" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img79.png"
|
||||
ALT="$A+A^T$">.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'AGGR_TYPE'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><B><TT>'VMB'</TT></B></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><B><TT>'VMB'</TT></B></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Type of aggregation algorithm: currently, the scalar aggregation
|
||||
algorithm by Vanek, Mandel and Brezina is implemented
|
||||
[<A
|
||||
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>].</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'AGGR_PROL'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'SMOOTHED'</TT>, <TT>'UNSMOOTHED'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=82><TT>'SMOOTHED'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=196>Prolongator used by the aggregation algorithm: smoothed or unsmoothed
|
||||
(i.e., tentative prolongator).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5><B>Note.</B> The aggregation algorithm stops when
|
||||
at least one of the following criteria is met:
|
||||
the coarse size threshold, the</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5>maximum coarsening ratio, or the maximum number
|
||||
of levels is reached. Therefore, the actual number of levels may be</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5>smaller than the specified maximum number
|
||||
of levels.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1346"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 4:</STRONG>
|
||||
Parameters defining the aggregation algorithm (continued).
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=108><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><code>val</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=108><code>'AGGR_ORD'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><TT>'NATURAL'</TT>
|
||||
<P>
|
||||
<TT>'DEGREE'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'NATURAL'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187>Initial ordering of indices for the aggregation
|
||||
algorithm: either natural ordering or sorted by
|
||||
descending degrees of the nodes in the
|
||||
matrix graph.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=108><code>'AGGR_THRESH'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71>Any real
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img80.png"
|
||||
ALT="$\in [0, 1]$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65>0.05</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187>The threshold <IMG
|
||||
WIDTH="13" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img81.png"
|
||||
ALT="$\theta$"> in the aggregation algorithm,
|
||||
see (<A HREF="node14.html#eq:strongly_coup">3</A>) in Section <A HREF="node14.html#sec:aggregation">4.2</A>.
|
||||
See also the note at the bottom of this table.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=108><code>'AGGR_FILTER'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><TT>'FILTER'</TT>
|
||||
<P>
|
||||
<TT>'NOFILTER'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=65><TT>'NOFILTER'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=187>Matrix used in computing the smoothed
|
||||
prolongator: filtered or unfiltered (see (<A HREF="node14.html#eq:filtered">5</A>) in Section <A HREF="node14.html#sec:aggregation">4.2</A>).</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5><B>Note.</B> Different thresholds at different levels, such as
|
||||
those used in [<A
|
||||
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>, Section 5.1], can be easily set by
|
||||
invoking the rou-</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5>tine <TT>set</TT> with
|
||||
the parameter <TT>ilev</TT>.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1351"></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" VALIGN="TOP" WIDTH=111><code>what</code></TD>
|
||||
<TD ALIGN="LEFT"><SMALL>DATA TYPE</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><code>val</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=244><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_MAT'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><TT>'DIST'</TT>
|
||||
<P>
|
||||
<TT>'REPL'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><TT>'REPL'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=244>Coarsest matrix layout: distributed among the processes or
|
||||
replicated on each of them.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_SOLVE'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><TT>'MUMPS'</TT>
|
||||
<P>
|
||||
<TT>'UMF'</TT>
|
||||
<P>
|
||||
<TT>'SLU'</TT>
|
||||
<P>
|
||||
<TT>'SLUDIST'</TT>
|
||||
<P>
|
||||
<TT>'JACOBI'</TT>
|
||||
<P>
|
||||
<TT>'GS'</TT>
|
||||
<P>
|
||||
<TT>'BJAC'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48>See Note.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=244>Solver used at the coarsest level: sequential
|
||||
LU from MUMPS, UMFPACK, or SuperLU
|
||||
(plus triangular solve);
|
||||
distributed LU from MUMPS or SuperLU_Dist
|
||||
(plus triangular solve);
|
||||
point-Jacobi, hybrid Gauss-Seidel or block-Jacobi.
|
||||
<P>
|
||||
Note that <TT>UMF</TT> and <TT>SLU</TT> require the coarsest
|
||||
matrix to be replicated, <TT>SLUDIST</TT>, <TT>JACOBI</TT>,
|
||||
<TT>GS</TT> and <TT>BJAC</TT> require it to be
|
||||
distributed, <TT>MUMPS</TT> can be used with either
|
||||
a replicated or a distributed matrix. When any of the previous
|
||||
solvers is specified, the matrix layout is set to a default
|
||||
value
|
||||
which allows the use
|
||||
value UMFPACK and SuperLU_Dist
|
||||
are available only in double precision.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_SUBSOLVE'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48><TT>'ILU'</TT>
|
||||
<P>
|
||||
<TT>'ILUT'</TT>
|
||||
<P>
|
||||
<TT>'MILU'</TT>
|
||||
<P>
|
||||
<TT>'MUMPS'</TT>
|
||||
<P>
|
||||
<TT>'SLU'</TT>
|
||||
<P>
|
||||
<TT>'UMF'</TT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=48>See Note.</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=244>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="img82.png"
|
||||
ALT="$p$">), ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img83.png"
|
||||
ALT="$p,t$">),
|
||||
MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$p$">), LU from MUMPS, SuperLU or UMFPACK
|
||||
(plus triangular solve).
|
||||
Note that UMFPACK and SuperLU_Dist
|
||||
are available only in double precision.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5><B>Note.</B> Defaults for <TT>COARSE_SOLVE</TT> and
|
||||
<TT>COARSE_SUBSOLVE</TT> are chosen in the following order:</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5>single precision version - <TT>MUMPS</TT> if installed,
|
||||
then <TT>SLU</TT> if installed,
|
||||
<TT>ILU</TT> otherwise;</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" COLSPAN=5>double precision version - <TT>UMF</TT> if installed,
|
||||
then <TT>MUMPS</TT> if installed, then <TT>SLU</TT> if
|
||||
installed, <TT>ILU</TT> otherwise.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1353"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 6:</STRONG>
|
||||
Parameters defining the coarse-space correction at the coarsest
|
||||
level (continued).</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><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" VALIGN="TOP" WIDTH=43><SMALL>DEFAULT</SMALL></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213><SMALL>COMMENTS</SMALL></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_SWEEPS'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57>Any integer
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img75.png"
|
||||
ALT="$> 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>10</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Number of sweeps when <code>JACOBI</code>, <code>GS</code> or <code>BJAC</code>
|
||||
is chosen as coarsest-level solver.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_FILLIN'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>integer</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57>Any integer
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Fill-in level <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$p$"> of the ILU factorizations.</TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=111><code>'COARSE_ILUTHRS'</code></TD>
|
||||
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=57>Any real
|
||||
<P>
|
||||
number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$"></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=43>0</TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=213>Drop tolerance <IMG
|
||||
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img85.png"
|
||||
ALT="$t$"> in the ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img83.png"
|
||||
ALT="$p,t$">) factorization.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1355"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 7:</STRONG>
|
||||
Parameters defining the smoother or the details of the one-level preconditioner.
|
||||
</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1">
|
||||
<code>what</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <SMALL>DATA TYPE</SMALL> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=54><FONT SIZE="-1"> <code>val</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <SMALL>DEFAULT</SMALL> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=184><FONT SIZE="-1">
|
||||
<SMALL>COMMENTS</SMALL> </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <code>'SMOOTHER_TYPE'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>character(len=*)</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=54><FONT SIZE="-1"> <code>'JACOBI'</code> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><code>'GS'</code> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><code>'BGS'</code> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><code>'BJAC'</code>
|
||||
</FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><code>'AS'</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <code>'FBGS'</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=184><FONT SIZE="-1"> Type of smoother used in the multi-level preconditioner:
|
||||
point-Jacobi, hybrid (forward) Gauss-Seidel,
|
||||
hybrid backward Gauss-Seidel, block-Jacobi, and
|
||||
Additive Schwarz. </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">It is ignored by one-level preconditioners. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <code>'SUB_SOLVE'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>character(len=*)</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=54><FONT SIZE="-1"> <TT>'JACOBI'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'GS'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'BGS'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'ILU'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'ILUT'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'MILU'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'MUMPS'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'SLU'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'UMF'</TT>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <TT>GS</TT> and <TT>BGS</TT> for pre- and post-smoothers
|
||||
of multi-level preconditioners, respectively </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>ILU</TT> for block-Jacobi and Additive Schwarz
|
||||
one-level preconditioners
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=184><FONT SIZE="-1"> The local solver to be used with the smoother or one-level
|
||||
preconditioner (see Remark 2, page 24): point-Jacobi,
|
||||
hybrid (forward) Gauss-Seidel, hybrid backward
|
||||
Gauss-Seidel, ILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$p$">), ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img83.png"
|
||||
ALT="$p,t$">), MILU(<IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$p$">),
|
||||
LU from MUMPS, SuperLU or UMFPACK
|
||||
(plus triangular solve). See Note for details on hybrid
|
||||
Gauss-Seidel. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <code>'SMOOTHER_SWEEPS'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>integer</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=54><FONT SIZE="-1"> Any integer </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> 1
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=184><FONT SIZE="-1"> Number of sweeps of the smoother or one-level preconditioner.
|
||||
In the multi-level case, no pre-smother or
|
||||
post-smoother is used if this parameter is set to 0
|
||||
together with <code>pos='PRE'</code> or <code>pos='POST</code>,
|
||||
respectively. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> <code>'SUB_OVR'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>integer</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=54><FONT SIZE="-1"> Any integer </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=102><FONT SIZE="-1"> 1
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=184><FONT SIZE="-1"> Number of overlap layers, for Additive Schwarz only. </FONT></TD>
|
||||
</TR>
|
||||
</TABLE></DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><P></P>
|
||||
<DIV ALIGN="CENTER"><A NAME="1357"></A>
|
||||
<TABLE>
|
||||
<CAPTION><STRONG>Table 8:</STRONG>
|
||||
Parameters defining the smoother or the details of the one-level preconditioner
|
||||
(continued).</CAPTION>
|
||||
<TR><TD>
|
||||
<DIV ALIGN="CENTER">
|
||||
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1">
|
||||
<code>what</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <SMALL>DATA TYPE</SMALL> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> <code>val</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> <SMALL>DEFAULT</SMALL> </FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1">
|
||||
<SMALL>COMMENTS</SMALL> </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> <code>'SUB_RESTR'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>character(len=*)</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> <TT>'HALO'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'NONE'</TT>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> <TT>'HALO'</TT>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Type of restriction operator, for Additive Schwarz only:
|
||||
<TT>HALO</TT> for taking into account the overlap, <TT>NONE</TT>
|
||||
for neglecting it. </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">Note that <TT>HALO</TT> must be chosen for
|
||||
the classical Addditive Schwarz smoother and its RAS variant.</FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> <code>'SUB_PROL'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>character(len=*)</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> <TT>'SUM'</TT> </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1"><TT>'NONE'</TT>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> <TT>'NONE'</TT>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Type of prolongation operator, for Additive Schwarz only:
|
||||
<TT>SUM</TT> for adding the contributions from the overlap, <TT>NONE</TT>
|
||||
for neglecting them. </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">Note that <TT>SUM</TT> must be chosen for the classical Additive
|
||||
Schwarz smoother, and <TT>NONE</TT> for its RAS variant. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> <code>'SUB_FILLIN'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>integer</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> Any integer </FONT>
|
||||
<P>
|
||||
<FONT SIZE="-1">number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> 0
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Fill-in level <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img82.png"
|
||||
ALT="$p$"> of the incomplete LU factorizations. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> <code>'SUB_ILUTHRS'</code> </FONT></TD>
|
||||
<TD ALIGN="LEFT"><FONT SIZE="-1"> <code>real(</code><I>kind_parameter</I><code>)</code>
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=71><FONT SIZE="-1"> Any real number <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img84.png"
|
||||
ALT="$\ge 0$">
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=62><FONT SIZE="-1"> 0
|
||||
</FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=201><FONT SIZE="-1"> Drop tolerance <IMG
|
||||
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img85.png"
|
||||
ALT="$t$"> in the ILU(<IMG
|
||||
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img83.png"
|
||||
ALT="$p,t$">) factorization. </FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=85><FONT SIZE="-1"> </FONT></TD>
|
||||
<TD></TD>
|
||||
<TD></TD>
|
||||
<TD></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
</TABLE></DIV>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</DIV><P></P>
|
||||
<BR><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
@@ -122,7 +884,7 @@ In this case, the routine can be used to build multi-level preconditioners too.
|
||||
HREF="node21.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html326"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html320"
|
||||
HREF="node19.html">
|
||||
@@ -132,11 +894,11 @@ In this case, the routine can be used to build multi-level preconditioners too.
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html331"
|
||||
HREF="node21.html">Subroutine hierarchy_build</A>
|
||||
HREF="node21.html">Subroutine build</A>
|
||||
<B> Up:</B> <A NAME="tex2html327"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html321"
|
||||
HREF="node19.html">Subroutine set</A>
|
||||
HREF="node19.html">Subroutine init</A>
|
||||
<B> <A NAME="tex2html329"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+34
-23
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine hierarchy_build</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine hierarchy_build">
|
||||
<TITLE>Subroutine build</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine build">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node22.html">
|
||||
<LINK REL="previous" HREF="node20.html">
|
||||
<LINK REL="up" HREF="node17.html">
|
||||
<LINK REL="up" HREF="node18.html">
|
||||
<LINK REL="next" HREF="node22.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node22.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html338"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html332"
|
||||
HREF="node20.html">
|
||||
@@ -40,30 +40,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html343"
|
||||
HREF="node22.html">Subroutine smoothers_build</A>
|
||||
HREF="node22.html">Subroutine hierarchy_build</A>
|
||||
<B> Up:</B> <A NAME="tex2html339"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html333"
|
||||
HREF="node20.html">Subroutine build</A>
|
||||
HREF="node20.html">Subroutine set</A>
|
||||
<B> <A NAME="tex2html341"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:hier_bld"></A>
|
||||
<H2><A NAME="SECTION00083000000000000000"></A><A NAME="sec:precbld"></A>
|
||||
<BR>
|
||||
Subroutine hierarchy_build
|
||||
Subroutine build
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%hierarchy_build(a,desc_a,info)</code>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%build(a,desc_a,info)</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine builds the hierarchy of matrices and restriction/prolongation
|
||||
operators for the multi-level preconditioner <code>p</code>, according to the requirements
|
||||
made by the user through the routines <code>init</code> and <code>set</code>.
|
||||
This routine builds the one-level preconditioner <code>p</code> according to the requirements
|
||||
made by the user through the routines <code>init</code> and <code>set</code>
|
||||
(see Sections <A HREF="node22.html#sec:hier_bld">6.4</A> and <A HREF="node23.html#sec:smooth_bld">6.5</A> for multi-level preconditioners).
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
|
||||
@@ -72,17 +72,16 @@ made by the user through the routines <code>init</code> and <code>set</code>.
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>a</code> </FONT></FONT></FONT></TD>
|
||||
<code>a</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>. </FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that <I>x</I> must be chosen according
|
||||
to the real/complex,
|
||||
single/double precision version of MLD2P4 under use.
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.
|
||||
See the PSBLAS User's Guide for details [<A
|
||||
HREF="node29.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
HREF="node30.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>desc_a</code> </FONT></FONT></FONT></TD>
|
||||
@@ -92,17 +91,29 @@ single/double precision version of MLD2P4 under use.
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
details [<A
|
||||
HREF="node29.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
HREF="node30.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
|
||||
as follows:
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precbld(p,what,val,info)</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
In this case, the routine can be used to build multi-level preconditioners too.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
@@ -111,7 +122,7 @@ single/double precision version of MLD2P4 under use.
|
||||
HREF="node22.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html338"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html332"
|
||||
HREF="node20.html">
|
||||
@@ -121,11 +132,11 @@ single/double precision version of MLD2P4 under use.
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html343"
|
||||
HREF="node22.html">Subroutine smoothers_build</A>
|
||||
HREF="node22.html">Subroutine hierarchy_build</A>
|
||||
<B> Up:</B> <A NAME="tex2html339"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html333"
|
||||
HREF="node20.html">Subroutine build</A>
|
||||
HREF="node20.html">Subroutine set</A>
|
||||
<B> <A NAME="tex2html341"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+24
-23
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine smoothers_build</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine smoothers_build">
|
||||
<TITLE>Subroutine hierarchy_build</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine hierarchy_build">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node23.html">
|
||||
<LINK REL="previous" HREF="node21.html">
|
||||
<LINK REL="up" HREF="node17.html">
|
||||
<LINK REL="up" HREF="node18.html">
|
||||
<LINK REL="next" HREF="node23.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node23.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html350"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html344"
|
||||
HREF="node21.html">
|
||||
@@ -40,32 +40,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html355"
|
||||
HREF="node23.html">Subroutine apply</A>
|
||||
HREF="node23.html">Subroutine smoothers_build</A>
|
||||
<B> Up:</B> <A NAME="tex2html351"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html345"
|
||||
HREF="node21.html">Subroutine hierarchy_build</A>
|
||||
HREF="node21.html">Subroutine build</A>
|
||||
<B> <A NAME="tex2html353"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:smooth_bld"></A>
|
||||
<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:hier_bld"></A>
|
||||
<BR>
|
||||
Subroutine smoothers_build
|
||||
Subroutine hierarchy_build
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%smoothers_build(a,desc_a,p,info)</code>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%hierarchy_build(a,desc_a,info)</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine builds the smoothers and the coarsest-level solvers for the
|
||||
multi-level preconditioner <code>p</code>, according to the requirements made by
|
||||
the user through the routines <code>init</code> and <code>set</code>, and based on the aggregation
|
||||
hierarchy produced by a previous call to <code>hierarchy_build</code>
|
||||
(see Section <A HREF="node21.html#sec:hier_bld">6.4</A>).
|
||||
This routine builds the hierarchy of matrices and restriction/prolongation
|
||||
operators for the multi-level preconditioner <code>p</code>, according to the requirements
|
||||
made by the user through the routines <code>init</code> and <code>set</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
|
||||
@@ -81,9 +79,10 @@ hierarchy produced by a previous call to <code>hierarchy_build</code>
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.
|
||||
to the real/complex,
|
||||
single/double precision version of MLD2P4 under use.
|
||||
See the PSBLAS User's Guide for details [<A
|
||||
HREF="node29.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
HREF="node30.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>desc_a</code> </FONT></FONT></FONT></TD>
|
||||
@@ -93,24 +92,26 @@ hierarchy produced by a previous call to <code>hierarchy_build</code>
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
details [<A
|
||||
HREF="node29.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
HREF="node30.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html354"
|
||||
HREF="node23.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html350"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html344"
|
||||
HREF="node21.html">
|
||||
@@ -120,11 +121,11 @@ hierarchy produced by a previous call to <code>hierarchy_build</code>
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html355"
|
||||
HREF="node23.html">Subroutine apply</A>
|
||||
HREF="node23.html">Subroutine smoothers_build</A>
|
||||
<B> Up:</B> <A NAME="tex2html351"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html345"
|
||||
HREF="node21.html">Subroutine hierarchy_build</A>
|
||||
HREF="node21.html">Subroutine build</A>
|
||||
<B> <A NAME="tex2html353"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+32
-115
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine apply</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine apply">
|
||||
<TITLE>Subroutine smoothers_build</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine smoothers_build">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node24.html">
|
||||
<LINK REL="previous" HREF="node22.html">
|
||||
<LINK REL="up" HREF="node17.html">
|
||||
<LINK REL="up" HREF="node18.html">
|
||||
<LINK REL="next" HREF="node24.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node24.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html362"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html356"
|
||||
HREF="node22.html">
|
||||
@@ -40,46 +40,32 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html367"
|
||||
HREF="node24.html">Subroutine free</A>
|
||||
HREF="node24.html">Subroutine apply</A>
|
||||
<B> Up:</B> <A NAME="tex2html363"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html357"
|
||||
HREF="node22.html">Subroutine smoothers_build</A>
|
||||
HREF="node22.html">Subroutine hierarchy_build</A>
|
||||
<B> <A NAME="tex2html365"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precapply"></A>
|
||||
<H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:smooth_bld"></A>
|
||||
<BR>
|
||||
Subroutine apply
|
||||
Subroutine smoothers_build
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%apply(x,y,desc_a,info [,trans,work])</code>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%smoothers_build(a,desc_a,p,info)</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine computes <!-- MATH
|
||||
$y = op(B^{-1})\, x$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="112" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img86.png"
|
||||
ALT="$y = op(B^{-1}) x$">, where <IMG
|
||||
WIDTH="19" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img24.png"
|
||||
ALT="$B$"> is a previously built
|
||||
preconditioner, stored into <code>p</code>, and <IMG
|
||||
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img87.png"
|
||||
ALT="$op$">
|
||||
denotes the preconditioner itself or its transpose, according to
|
||||
the value of <code>trans</code>.
|
||||
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
|
||||
<code>p%apply</code> is called within the PSBLAS routine <code>psb_krylov</code>
|
||||
and hence it is completely transparent to the user.
|
||||
This routine builds the smoothers and the coarsest-level solvers for the
|
||||
multi-level preconditioner <code>p</code>, according to the requirements made by
|
||||
the user through the routines <code>init</code> and <code>set</code>, and based on the aggregation
|
||||
hierarchy produced by a previous call to <code>hierarchy_build</code>
|
||||
(see Section <A HREF="node22.html#sec:hier_bld">6.4</A>).
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
|
||||
@@ -87,30 +73,17 @@ and hence it is completely transparent to the user.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>x</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>a</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_</code><I>x</I><code>spmat_type), intent(in)</code>. </FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The local part of the vector <IMG
|
||||
WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img88.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.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>y</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The local part of the vector <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img89.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.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that <I>x</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.
|
||||
See the PSBLAS User's Guide for details [<A
|
||||
HREF="node30.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>desc_a</code> </FONT></FONT></FONT></TD>
|
||||
@@ -118,82 +91,26 @@ and hence it is completely transparent to the user.
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The communication descriptor associated to the matrix to be
|
||||
preconditioned.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The communication descriptor of <code>a</code>. See the PSBLAS User's Guide for
|
||||
details [<A
|
||||
HREF="node30.html#PSBLASGUIDE">13</A>].</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>trans</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=1), optional, intent(in).</code></FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> If <code>trans</code> = <code>'N','n'</code> then <!-- MATH
|
||||
$op(B^{-1}) = B^{-1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="123" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img90.png"
|
||||
ALT="$op(B^{-1}) = B^{-1}$">;
|
||||
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
|
||||
$op(B^{-1}) = B^{-T}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img91.png"
|
||||
ALT="$op(B^{-1}) = B^{-T}$">
|
||||
(transpose of <IMG
|
||||
WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img92.png"
|
||||
ALT="$B^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
|
||||
$op(B^{-1}) = B^{-C}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img93.png"
|
||||
ALT="$op(B^{-1}) = B^{-C}$">
|
||||
(conjugate transpose of <IMG
|
||||
WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img92.png"
|
||||
ALT="$B^{-1})$">.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>work</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), optional, target</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Workspace. Its size should be at
|
||||
least <code>4 * psb_cd_get_local_</code> <code>cols(desc_a)</code> (see the PSBLAS User's Guide).
|
||||
Note that <I>type</I> and <I>kind_parameter</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
|
||||
as follows:
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precaply(p,what,val,info)</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html366"
|
||||
HREF="node24.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html362"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html356"
|
||||
HREF="node22.html">
|
||||
@@ -203,11 +120,11 @@ as follows:
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html367"
|
||||
HREF="node24.html">Subroutine free</A>
|
||||
HREF="node24.html">Subroutine apply</A>
|
||||
<B> Up:</B> <A NAME="tex2html363"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html357"
|
||||
HREF="node22.html">Subroutine smoothers_build</A>
|
||||
HREF="node22.html">Subroutine hierarchy_build</A>
|
||||
<B> <A NAME="tex2html365"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+138
-17
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine free</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine free">
|
||||
<TITLE>Subroutine apply</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine apply">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node25.html">
|
||||
<LINK REL="previous" HREF="node23.html">
|
||||
<LINK REL="up" HREF="node17.html">
|
||||
<LINK REL="up" HREF="node18.html">
|
||||
<LINK REL="next" HREF="node25.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node25.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html374"
|
||||
HREF="node17.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html368"
|
||||
HREF="node23.html">
|
||||
@@ -40,28 +40,46 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html379"
|
||||
HREF="node25.html">Subroutine descr</A>
|
||||
HREF="node25.html">Subroutine free</A>
|
||||
<B> Up:</B> <A NAME="tex2html375"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html369"
|
||||
HREF="node23.html">Subroutine apply</A>
|
||||
HREF="node23.html">Subroutine smoothers_build</A>
|
||||
<B> <A NAME="tex2html377"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00087000000000000000"></A><A NAME="sec:precfree"></A>
|
||||
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precapply"></A>
|
||||
<BR>
|
||||
Subroutine free
|
||||
Subroutine apply
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%free(p,info)</code>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%apply(x,y,desc_a,info [,trans,work])</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine deallocates the preconditioner data structure <code>p</code>.
|
||||
This routine computes <!-- MATH
|
||||
$y = op(B^{-1})\, x$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="112" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img86.png"
|
||||
ALT="$y = op(B^{-1}) x$">, where <IMG
|
||||
WIDTH="19" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img24.png"
|
||||
ALT="$B$"> is a previously built
|
||||
preconditioner, stored into <code>p</code>, and <IMG
|
||||
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img87.png"
|
||||
ALT="$op$">
|
||||
denotes the preconditioner itself or its transpose, according to
|
||||
the value of <code>trans</code>.
|
||||
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
|
||||
<code>p%apply</code> is called within the PSBLAS routine <code>psb_krylov</code>
|
||||
and hence it is completely transparent to the user.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
|
||||
@@ -69,12 +87,93 @@ This routine deallocates the preconditioner data structure <code>p</code>.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>x</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(in)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The local part of the vector <IMG
|
||||
WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
|
||||
SRC="img88.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.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>y</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The local part of the vector <IMG
|
||||
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img89.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.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>desc_a</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>type(psb_desc_type), intent(in)</code>. </FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The communication descriptor associated to the matrix to be
|
||||
preconditioned.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>trans</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>character(len=1), optional, intent(in).</code></FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> If <code>trans</code> = <code>'N','n'</code> then <!-- MATH
|
||||
$op(B^{-1}) = B^{-1}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="123" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img90.png"
|
||||
ALT="$op(B^{-1}) = B^{-1}$">;
|
||||
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
|
||||
$op(B^{-1}) = B^{-T}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img91.png"
|
||||
ALT="$op(B^{-1}) = B^{-T}$">
|
||||
(transpose of <IMG
|
||||
WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img92.png"
|
||||
ALT="$B^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
|
||||
$op(B^{-1}) = B^{-C}$
|
||||
-->
|
||||
<IMG
|
||||
WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img93.png"
|
||||
ALT="$op(B^{-1}) = B^{-C}$">
|
||||
(conjugate transpose of <IMG
|
||||
WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img92.png"
|
||||
ALT="$B^{-1})$">.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>work</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <I>type</I><code>(</code><I>kind_parameter</I><code>), dimension(:), optional, target</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Workspace. Its size should be at
|
||||
least <code>4 * psb_cd_get_local_</code> <code>cols(desc_a)</code> (see the PSBLAS User's Guide).
|
||||
Note that <I>type</I> and <I>kind_parameter</I> must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
@@ -83,13 +182,35 @@ as follows:
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precfree(p,info)</code>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precaply(p,what,val,info)</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html378"
|
||||
HREF="node25.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html374"
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html368"
|
||||
HREF="node23.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html376"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html379"
|
||||
HREF="node25.html">Subroutine free</A>
|
||||
<B> Up:</B> <A NAME="tex2html375"
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html369"
|
||||
HREF="node23.html">Subroutine smoothers_build</A>
|
||||
<B> <A NAME="tex2html377"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+23
-57
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Subroutine descr</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine descr">
|
||||
<TITLE>Subroutine free</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine free">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,51 +18,50 @@ 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="node17.html">
|
||||
<LINK REL="up" HREF="node18.html">
|
||||
<LINK REL="next" HREF="node26.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html388"
|
||||
<A NAME="tex2html390"
|
||||
HREF="node26.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html384"
|
||||
HREF="node17.html">
|
||||
<A NAME="tex2html386"
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html380"
|
||||
HREF="node24.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html386"
|
||||
<A NAME="tex2html388"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html389"
|
||||
HREF="node26.html">Adding new smoother and</A>
|
||||
<B> Up:</B> <A NAME="tex2html385"
|
||||
HREF="node17.html">User Interface</A>
|
||||
<B> Next:</B> <A NAME="tex2html391"
|
||||
HREF="node26.html">Subroutine descr</A>
|
||||
<B> Up:</B> <A NAME="tex2html387"
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html381"
|
||||
HREF="node24.html">Subroutine free</A>
|
||||
<B> <A NAME="tex2html387"
|
||||
HREF="node24.html">Subroutine apply</A>
|
||||
<B> <A NAME="tex2html389"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00088000000000000000"></A><A NAME="sec:precdescr"></A>
|
||||
<H2><A NAME="SECTION00087000000000000000"></A><A NAME="sec:precfree"></A>
|
||||
<BR>
|
||||
Subroutine descr
|
||||
Subroutine free
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%descr(info, [iout])</code>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%free(p,info)</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine prints a description of the preconditioner <code>p</code> to the standard output or
|
||||
to a file. It must be called after <code>hierachy_build</code> and <code>smoothers_build</code>,
|
||||
or <code>build</code>, have been called.
|
||||
This routine deallocates the preconditioner data structure <code>p</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
|
||||
@@ -71,20 +70,11 @@ or <code>build</code>, have been called.
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node27.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>iout</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(in), optional</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The id of the file where the preconditioner description
|
||||
will be printed; the default is the standard output.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
@@ -93,37 +83,13 @@ as follows:
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precdescr(p,info [,iout])</code>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precfree(p,info)</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html388"
|
||||
HREF="node26.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html384"
|
||||
HREF="node17.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html380"
|
||||
HREF="node24.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html386"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html389"
|
||||
HREF="node26.html">Adding new smoother and</A>
|
||||
<B> Up:</B> <A NAME="tex2html385"
|
||||
HREF="node17.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html381"
|
||||
HREF="node24.html">Subroutine free</A>
|
||||
<B> <A NAME="tex2html387"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+56
-112
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Adding new smoother and solver objects to MLD2P4</TITLE>
|
||||
<META NAME="description" CONTENT="Adding new smoother and solver objects to MLD2P4">
|
||||
<TITLE>Subroutine descr</TITLE>
|
||||
<META NAME="description" CONTENT="Subroutine descr">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,9 +18,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node27.html">
|
||||
<LINK REL="previous" HREF="node17.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="previous" HREF="node25.html">
|
||||
<LINK REL="up" HREF="node18.html">
|
||||
<LINK REL="next" HREF="node27.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,9 +29,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node27.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html396"
|
||||
HREF="userhtml.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html390"
|
||||
<A NAME="tex2html392"
|
||||
HREF="node25.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html398"
|
||||
@@ -40,131 +39,76 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html401"
|
||||
HREF="node27.html">Error Handling</A>
|
||||
HREF="node27.html">Adding new smoother and</A>
|
||||
<B> Up:</B> <A NAME="tex2html397"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html391"
|
||||
HREF="node25.html">Subroutine descr</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html393"
|
||||
HREF="node25.html">Subroutine free</A>
|
||||
<B> <A NAME="tex2html399"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A>
|
||||
<H2><A NAME="SECTION00088000000000000000"></A><A NAME="sec:precdescr"></A>
|
||||
<BR>
|
||||
Adding new smoother and solver objects to MLD2P4
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
Subroutine descr
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Developers can add completely new smoother and/or solver classes
|
||||
derived from the base objects in the library (see Remark 2 in Section <A HREF="node19.html#sec:precset">6.2</A>),
|
||||
without recompiling the library itself.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call p%descr(info, [iout])</code>
|
||||
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
This routine prints a description of the preconditioner <code>p</code> to the standard output or
|
||||
to a file. It must be called after <code>hierachy_build</code> and <code>smoothers_build</code>,
|
||||
or <code>build</code>, have been called.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To do so, it is necessary first to select the base type to be extended.
|
||||
In our experience, it is quite likely that the new application needs
|
||||
only the definition of a ``solver'' object, which is almost
|
||||
always acting only on the local part of the distributed matrix.
|
||||
The parallel actions required to connect the various solver objects
|
||||
are most often already provided by the block-Jacobi or the additive
|
||||
Schwarz smoothers. To define a new solver, the developer will then
|
||||
have to define its components and methods, perhaps taking one of the
|
||||
predefined solvers as a starting point, if possible.
|
||||
</FONT></FONT></FONT>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
|
||||
<P></P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Once the new smoother/solver class has been developed, to use it in
|
||||
the context of the multilevel preconditioners it is necessary to:
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<LI>declare in the application program a variable of the new type;
|
||||
</LI>
|
||||
<LI>pass that variable as the argument to the <code>set</code> routine as in the
|
||||
following:
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%set(smoother,info [,ilev,ilmax,pos])</code>
|
||||
<BR><code>call p%set(solver,info [,ilev,ilmax,pos])</code>
|
||||
|
||||
</DIV>
|
||||
</LI>
|
||||
<LI>link the code implementing the various methods into the application executable.
|
||||
</LI>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The new solver object is then dynamically included in the
|
||||
preconditioner structure, and acts as a <I>mold</I> to which the
|
||||
preconditioner will conform, even though the MLD2P4 library has not
|
||||
been modified to account for this new development.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">It is possible to define new values for the keyword <code>WHAT</code> in the
|
||||
<code>set</code> routine; if the library code does not recognize a keyword,
|
||||
it passes it down the composition hierarchy (levels containing
|
||||
smoothers containing in turn solvers), so that it can be eventually caught by
|
||||
the new solver.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">An example is provided in the source code distribution under the
|
||||
folder <code>tests/newslv</code>. In this example we are implementing a new
|
||||
incomplete factorization variant (which is simply the ILU(0)
|
||||
factorization under a new name). Because of the specifics of this case, it is
|
||||
possible to reuse the basic structure of the ILU solver, with its
|
||||
L/D/U components and the methods needed to apply the solver; only a
|
||||
few methods, such as the description and most importantly the build,
|
||||
need to be ovverridden (rewritten).
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The interfaces for the calls shown above are defined using
|
||||
</FONT></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>smoother</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>class(mld_x_base_smoother_type)</code> </FONT></FONT></FONT></TD>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>info</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(out)</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The user-defined new smoother to be employed in the
|
||||
preconditioner.</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> Error code. If no error, 0 is returned. See Section <A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>solver</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>class(mld_x_base_solver_type)</code> </FONT></FONT></FONT></TD>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>iout</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>integer, intent(in), optional</code>.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The user-defined new solver to be employed in the
|
||||
preconditioner.
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The id of the file where the preconditioner description
|
||||
will be printed; the default is the standard output.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The other arguments are defined in the way described in
|
||||
Sec. <A HREF="node19.html#sec:precset">6.2</A>. As an example, in the <code>tests/newslv</code>
|
||||
code we define a new object of type <code>mld_d_tlu_solver_type</code>, and
|
||||
we pass it as follows:
|
||||
</FONT></FONT></FONT><PRE>
|
||||
! sparse matrix and preconditioner
|
||||
type(psb_dspmat_type) :: a
|
||||
type(mld_dprec_type) :: prec
|
||||
type(mld_d_tlu_solver_type) :: tlusv
|
||||
|
||||
......
|
||||
!
|
||||
! prepare the preconditioner: an ML with defaults, but with TLU solver at
|
||||
! intermediate levels. All other parameters are at default values.
|
||||
!
|
||||
call prec%init('ML', info)
|
||||
call prec%hierarchy_build(a,desc_a,info)
|
||||
nlv = prec%get_nlevs()
|
||||
call prec%set(tlusv, info,ilev=1,ilmax=max(1,nlv-1))
|
||||
call prec%smoothers_build(a,desc_a,info)
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT><HR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
|
||||
as follows:
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><code>call mld_precdescr(p,info [,iout])</code>
|
||||
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html400"
|
||||
HREF="node27.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html396"
|
||||
HREF="userhtml.html">
|
||||
HREF="node18.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html390"
|
||||
<A NAME="tex2html392"
|
||||
HREF="node25.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html398"
|
||||
@@ -172,11 +116,11 @@ we pass it as follows:
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html401"
|
||||
HREF="node27.html">Error Handling</A>
|
||||
HREF="node27.html">Adding new smoother and</A>
|
||||
<B> Up:</B> <A NAME="tex2html397"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html391"
|
||||
HREF="node25.html">Subroutine descr</A>
|
||||
HREF="node18.html">User Interface</A>
|
||||
<B> Previous:</B> <A NAME="tex2html393"
|
||||
HREF="node25.html">Subroutine free</A>
|
||||
<B> <A NAME="tex2html399"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+128
-21
@@ -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>Adding new smoother and solver objects to MLD2P4</TITLE>
|
||||
<META NAME="description" CONTENT="Adding new smoother and solver objects to MLD2P4">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -19,7 +19,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node28.html">
|
||||
<LINK REL="previous" HREF="node26.html">
|
||||
<LINK REL="previous" HREF="node18.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node28.html">
|
||||
</HEAD>
|
||||
@@ -40,39 +40,146 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html413"
|
||||
HREF="node28.html">License</A>
|
||||
HREF="node28.html">Error Handling</A>
|
||||
<B> Up:</B> <A NAME="tex2html409"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html403"
|
||||
HREF="node26.html">Adding new smoother and</A>
|
||||
HREF="node26.html">Subroutine descr</A>
|
||||
<B> <A NAME="tex2html411"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:errors"></A>
|
||||
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A>
|
||||
<BR>
|
||||
Error Handling
|
||||
Adding new smoother and solver objects to MLD2P4
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The error handling in MLD2P4 is based on the PSBLAS (version 2) error
|
||||
handling. Error conditions are signaled via an integer argument
|
||||
<code>info</code>; whenever an error condition is detected, an error trace
|
||||
stack is built by the library up to the top-level, user-callable
|
||||
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="node29.html#PSBLASGUIDE">13</A>].
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Developers can add completely new smoother and/or solver classes
|
||||
derived from the base objects in the library (see Remark 2 in Section <A HREF="node20.html#sec:precset">6.2</A>),
|
||||
without recompiling the library itself.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To do so, it is necessary first to select the base type to be extended.
|
||||
In our experience, it is quite likely that the new application needs
|
||||
only the definition of a ``solver'' object, which is almost
|
||||
always acting only on the local part of the distributed matrix.
|
||||
The parallel actions required to connect the various solver objects
|
||||
are most often already provided by the block-Jacobi or the additive
|
||||
Schwarz smoothers. To define a new solver, the developer will then
|
||||
have to define its components and methods, perhaps taking one of the
|
||||
predefined solvers as a starting point, if possible.
|
||||
</FONT></FONT></FONT>
|
||||
<BR><HR>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Once the new smoother/solver class has been developed, to use it in
|
||||
the context of the multilevel preconditioners it is necessary to:
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<LI>declare in the application program a variable of the new type;
|
||||
</LI>
|
||||
<LI>pass that variable as the argument to the <code>set</code> routine as in the
|
||||
following:
|
||||
<DIV ALIGN="CENTER">
|
||||
<code>call p%set(smoother,info [,ilev,ilmax,pos])</code>
|
||||
<BR><code>call p%set(solver,info [,ilev,ilmax,pos])</code>
|
||||
|
||||
</DIV>
|
||||
</LI>
|
||||
<LI>link the code implementing the various methods into the application executable.
|
||||
</LI>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The new solver object is then dynamically included in the
|
||||
preconditioner structure, and acts as a <I>mold</I> to which the
|
||||
preconditioner will conform, even though the MLD2P4 library has not
|
||||
been modified to account for this new development.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">It is possible to define new values for the keyword <code>WHAT</code> in the
|
||||
<code>set</code> routine; if the library code does not recognize a keyword,
|
||||
it passes it down the composition hierarchy (levels containing
|
||||
smoothers containing in turn solvers), so that it can be eventually caught by
|
||||
the new solver.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">An example is provided in the source code distribution under the
|
||||
folder <code>tests/newslv</code>. In this example we are implementing a new
|
||||
incomplete factorization variant (which is simply the ILU(0)
|
||||
factorization under a new name). Because of the specifics of this case, it is
|
||||
possible to reuse the basic structure of the ILU solver, with its
|
||||
L/D/U components and the methods needed to apply the solver; only a
|
||||
few methods, such as the description and most importantly the build,
|
||||
need to be ovverridden (rewritten).
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The interfaces for the calls shown above are defined using
|
||||
</FONT></FONT></FONT>
|
||||
<DIV ALIGN="CENTER"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><TABLE CELLPADDING=3>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>smoother</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>class(mld_x_base_smoother_type)</code> </FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The user-defined new smoother to be employed in the
|
||||
preconditioner.</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
<code>solver</code> </FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> <code>class(mld_x_base_solver_type)</code> </FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT></TD>
|
||||
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> The user-defined new solver to be employed in the
|
||||
preconditioner.
|
||||
</FONT></FONT></FONT></TD>
|
||||
</TR>
|
||||
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
The other arguments are defined in the way described in
|
||||
Sec. <A HREF="node20.html#sec:precset">6.2</A>. As an example, in the <code>tests/newslv</code>
|
||||
code we define a new object of type <code>mld_d_tlu_solver_type</code>, and
|
||||
we pass it as follows:
|
||||
</FONT></FONT></FONT><PRE>
|
||||
! sparse matrix and preconditioner
|
||||
type(psb_dspmat_type) :: a
|
||||
type(mld_dprec_type) :: prec
|
||||
type(mld_d_tlu_solver_type) :: tlusv
|
||||
|
||||
......
|
||||
!
|
||||
! prepare the preconditioner: an ML with defaults, but with TLU solver at
|
||||
! intermediate levels. All other parameters are at default values.
|
||||
!
|
||||
call prec%init('ML', info)
|
||||
call prec%hierarchy_build(a,desc_a,info)
|
||||
nlv = prec%get_nlevs()
|
||||
call prec%set(tlusv, info,ilev=1,ilmax=max(1,nlv-1))
|
||||
call prec%smoothers_build(a,desc_a,info)
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html412"
|
||||
HREF="node28.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html408"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html402"
|
||||
HREF="node26.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html410"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html413"
|
||||
HREF="node28.html">Error Handling</A>
|
||||
<B> Up:</B> <A NAME="tex2html409"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html403"
|
||||
HREF="node26.html">Subroutine descr</A>
|
||||
<B> <A NAME="tex2html411"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+21
-47
@@ -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">
|
||||
@@ -40,63 +40,37 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html425"
|
||||
HREF="node29.html">Bibliography</A>
|
||||
HREF="node29.html">License</A>
|
||||
<B> Up:</B> <A NAME="tex2html421"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html415"
|
||||
HREF="node27.html">Error Handling</A>
|
||||
HREF="node27.html">Adding new smoother and</A>
|
||||
<B> <A NAME="tex2html423"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION000110000000000000000"></A><A NAME="sec:license"></A>
|
||||
<H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:errors"></A>
|
||||
<BR>
|
||||
License
|
||||
Error Handling
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The MLD2P4 is freely distributable under the following copyright
|
||||
terms: </FONT></FONT></FONT><PRE>
|
||||
|
||||
|
||||
MLD2P4 version 2.1
|
||||
MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS (Parallel Sparse BLAS version 3.4)
|
||||
|
||||
(C) Copyright 2008, 2010, 2012, 2017
|
||||
|
||||
Salvatore Filippone Cranfield University, Cranfield, UK
|
||||
Ambra Abdullahi Hassan University of Rome Tor Vergata, Rome, IT
|
||||
Alfredo Buttari CNRS-IRIT, Toulouse, FR
|
||||
Pasqua D'Ambra IAC-CNR, Naples, IT
|
||||
Daniela di Serafino University of Campania L. Vanvitelli, Caserta, IT
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions, and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. The name of the MLD2P4 group or the names of its contributors may
|
||||
not be used to endorse or promote products derived from this
|
||||
software without specific written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The error handling in MLD2P4 is based on the PSBLAS (version 2) error
|
||||
handling. Error conditions are signaled via an integer argument
|
||||
<code>info</code>; whenever an error condition is detected, an error trace
|
||||
stack is built by the library up to the top-level, user-callable
|
||||
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="node30.html#PSBLASGUIDE">13</A>].
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
|
||||
+49
-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>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">
|
||||
@@ -40,140 +40,63 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html437"
|
||||
HREF="node30.html">About this document ...</A>
|
||||
HREF="node30.html">Bibliography</A>
|
||||
<B> Up:</B> <A NAME="tex2html433"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html427"
|
||||
HREF="node28.html">License</A>
|
||||
HREF="node28.html">Error Handling</A>
|
||||
<B> <A NAME="tex2html435"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR><BR>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
</FONT></FONT></FONT>
|
||||
<H2><A NAME="SECTION000120000000000000000">
|
||||
Bibliography</A>
|
||||
</H2><DL COMPACT><DD>
|
||||
|
||||
<H1><A NAME="SECTION000110000000000000000"></A><A NAME="sec:license"></A>
|
||||
<BR>
|
||||
License
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<P></P><DT><A NAME="MUMPS">1</A>
|
||||
<DD>
|
||||
P. R. Amestoy, C. Ashcraft, O. Boiteau, A. Buttari, J. L'Excellent, C. Weisbecker,
|
||||
<EM>Improving multifrontal methods by means of block low-rank representations</EM>,
|
||||
SIAM Journal on Scientific Computing, volume 37 (3), 2015, A1452-A1474.
|
||||
See also <TT>http://mumps.enseeiht.fr</TT>.
<P></P><DT><A NAME="BREZINA_VANEK">2</A>
|
||||
<DD>
|
||||
M. Brezina, P. Vanek,
|
||||
<EM>A Black-Box Iterative Solver Based on a Two-Level Schwarz Method</EM>,
|
||||
Computing, 63, 1999, 233-263.
<P></P><DT><A NAME="Briggs2000">3</A>
|
||||
<DD>
|
||||
W. L. Briggs, V. E. Henson, S. F. McCormick,
|
||||
<EM>A Multigrid Tutorial, Second Edition</EM>,
|
||||
SIAM, 2000.
<P></P><DT><A NAME="para_04">4</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">5</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="CAI_SARKIS">6</A>
|
||||
<DD>
|
||||
X. C. Cai, M. Sarkis,
|
||||
<EM>A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems</EM>,
|
||||
SIAM Journal on Scientific Computing, 21 (2), 1999, 792-797.
<P></P><DT><A NAME="apnum_07">7</A>
|
||||
<DD>
|
||||
P. D'Ambra, S. Filippone, D. di Serafino,
|
||||
<EM>On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners</EM>,
|
||||
Applied Numerical Mathematics, Elsevier Science,
|
||||
57 (11-12), 2007, 1181-1196.
<P></P><DT><A NAME="MLD2P4_TOMS">8</A>
|
||||
<DD>
|
||||
P. D'Ambra, D. di Serafino, S. Filippone,
|
||||
<I>MLD2P4: a Package of Parallel Multilevel
|
||||
Algebraic Domain Decomposition Preconditioners
|
||||
in Fortran 95</I>, ACM Trans. Math. Softw., 37(3), 2010, art. 30.
<P></P><DT><A NAME="UMFPACK">9</A>
|
||||
<DD>
|
||||
T. A. Davis,
|
||||
<EM>Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
|
||||
Method with a Column Pre-ordering Strategy</EM>,
|
||||
ACM Transactions on Mathematical Software, 30, 2004, 196-199.
|
||||
(See also <TT>http://www.cise.ufl.edu/ davis/</TT>)
<P></P><DT><A NAME="SUPERLU">10</A>
|
||||
<DD>
|
||||
J. W. Demmel, S. C. Eisenstat, J. R. Gilbert, X. S. Li, 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">11</A>
|
||||
<DD>
|
||||
J. J. Dongarra, J. Du Croz, I. S. Duff, S. Hammarling,
|
||||
<I>A set of Level 3 Basic Linear Algebra Subprograms</I>,
|
||||
ACM Transactions on Mathematical Software, 16 (1) 1990, 1-17.
<P></P><DT><A NAME="blas2">12</A>
|
||||
<DD>
|
||||
J. J. Dongarra, J. Du Croz, S. Hammarling, R. J. Hanson,
|
||||
<I>An extended set of FORTRAN Basic Linear Algebra Subprograms</I>,
|
||||
ACM Transactions on Mathematical Software, 14 (1) 1988, 1-17.
<P></P><DT><A NAME="PSBLASGUIDE">13</A>
|
||||
<DD>
|
||||
S. Filippone, A. Buttari,
|
||||
<EM>PSBLAS-3.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library</EM>, 2012,
|
||||
available from <TT>http://www.ce.uniroma2.it/psblas/</TT>.
<P></P><DT><A NAME="PSBLAS3">14</A>
|
||||
<DD>
|
||||
S. Filippone, A. Buttari,
|
||||
<EM>Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003</EM>.
|
||||
ACM Transactions on on Mathematical Software, 38 (4), 2012, art. 23.
<P></P><DT><A NAME="psblas_00">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 (3), 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="Notay2008">19</A>
|
||||
<DD>
|
||||
Y. Notay, P. S. Vassilevski,
|
||||
<EM>Recursive Krylov-based multigrid cycles</EM>,
|
||||
Numerical Linear Algebra with Applications, 15 (5), 2008, 473-487.
<P></P><DT><A NAME="Saad_book">20</A>
|
||||
<DD>
|
||||
Y. Saad,
|
||||
<EM>Iterative methods for sparse linear systems</EM>, 2nd edition, SIAM, 2003.
<P></P><DT><A NAME="dd2_96">21</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">22</A>
|
||||
<DD>
|
||||
M. Snir, S. Otto, S. Huss-Lederman, D. Walker, J. Dongarra,
|
||||
<EM>MPI: The Complete Reference. Volume 1 - The MPI Core</EM>, second edition,
|
||||
MIT Press, 1998.
<P></P><DT><A NAME="Stuben_01">23</A>
|
||||
<DD>
|
||||
K. Stüben,
|
||||
<EM>An Introduction to Algebraic Multigrid</EM>,
|
||||
in A. Schüller, U. Trottenberg, C. Oosterlee, Multigrid,
|
||||
Academic Press, 2001.
<P></P><DT><A NAME="TUMINARO_TONG">24</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">25</A>
|
||||
<DD>
|
||||
P. Vanek, J. Mandel, M. Brezina,
|
||||
<EM>Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems</EM>,
|
||||
Computing, 56 (3) 1996, 179-196.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The MLD2P4 is freely distributable under the following copyright
|
||||
terms: </FONT></FONT></FONT><PRE>
|
||||
|
||||
|
||||
MLD2P4 version 2.1
|
||||
MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS (Parallel Sparse BLAS version 3.4)
|
||||
|
||||
(C) Copyright 2008, 2010, 2012, 2017
|
||||
|
||||
Salvatore Filippone Cranfield University, Cranfield, UK
|
||||
Pasqua D'Ambra IAC-CNR, Naples, IT
|
||||
Daniela di Serafino University of Campania L. Vanvitelli, Caserta, IT
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions, and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. The name of the MLD2P4 group or the names of its contributors may
|
||||
not be used to endorse or promote products derived from this
|
||||
software without specific written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
|
||||
<P>
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><BR><HR>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+34
-34
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html115"
|
||||
<A NAME="tex2html116"
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html111"
|
||||
<A NAME="tex2html112"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html105"
|
||||
<A NAME="tex2html106"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html113"
|
||||
<A NAME="tex2html114"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html116"
|
||||
<B> Next:</B> <A NAME="tex2html117"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> Up:</B> <A NAME="tex2html112"
|
||||
<B> Up:</B> <A NAME="tex2html113"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html106"
|
||||
<B> Previous:</B> <A NAME="tex2html107"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> <A NAME="tex2html114"
|
||||
<B> <A NAME="tex2html115"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -59,9 +59,9 @@ General Overview
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The M<SMALL>ULTI-</SMALL>L<SMALL>EVEL </SMALL>D<SMALL>OMAIN </SMALL>D<SMALL>ECOMPOSITION </SMALL>P<SMALL>ARALLEL </SMALL>P<SMALL>RECONDITIONERS </SMALL>P<SMALL>ACKAGE BASED ON
|
||||
</SMALL>PSBLAS (MLD2P4) provides parallel Algebraic MultiGrid (AMG) and Domain
|
||||
Decomposition preconditioners (see, e.g., [<A
|
||||
HREF="node29.html#Briggs2000">3</A>,<A
|
||||
HREF="node29.html#Stuben_01">23</A>,<A
|
||||
HREF="node29.html#dd2_96">21</A>]),
|
||||
HREF="node30.html#Briggs2000">3</A>,<A
|
||||
HREF="node30.html#Stuben_01">23</A>,<A
|
||||
HREF="node30.html#dd2_96">21</A>]),
|
||||
to be used in the iterative solution of linear systems,
|
||||
</FONT></FONT></FONT>
|
||||
<BR>
|
||||
@@ -95,8 +95,8 @@ multi-level cycles and smoothers widely used in multigrid methods.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The multi-level preconditioners implemented in MLD2P4 are obtained by combining
|
||||
AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and
|
||||
K-cycles [<A
|
||||
HREF="node29.html#Briggs2000">3</A>,<A
|
||||
HREF="node29.html#Notay2008">19</A>] are available, which allow to define
|
||||
HREF="node30.html#Briggs2000">3</A>,<A
|
||||
HREF="node30.html#Notay2008">19</A>] are available, which allow to define
|
||||
almost all the preconditioners in the package, including the multi-level hybrid
|
||||
Schwarz ones; a specific cycle is implemented to obtain multi-level additive
|
||||
Schwarz preconditioners. The Jacobi, hybridforward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods
|
||||
@@ -104,8 +104,8 @@ are available as smoothers. An algebraic approach is used to generate a hierarch
|
||||
coarse-level matrices and operators, without explicitly using any information on the
|
||||
geometry of the original problem, e.g., the discretization of a PDE. To this end,
|
||||
the smoothed aggregation technique [<A
|
||||
HREF="node29.html#BREZINA_VANEK">2</A>,<A
|
||||
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>]
|
||||
HREF="node30.html#BREZINA_VANEK">2</A>,<A
|
||||
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>]
|
||||
is applied. Either exact or approximate solvers can be used on the coarsest-level
|
||||
system. Specifically, different sparse LU factorizations from external
|
||||
packages, and native incomplete LU factorizations and Jacobi, hybrid Gauss-Seidel,
|
||||
@@ -126,8 +126,8 @@ interface.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 has been designed to implement scalable and easy-to-use
|
||||
multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS)
|
||||
computational framework [<A
|
||||
HREF="node29.html#psblas_00">15</A>,<A
|
||||
HREF="node29.html#PSBLAS3">14</A>]. PSBLAS provides basic linear algebra
|
||||
HREF="node30.html#psblas_00">15</A>,<A
|
||||
HREF="node30.html#PSBLAS3">14</A>]. PSBLAS provides basic linear algebra
|
||||
operators and data management facilities for distributed sparse matrices,
|
||||
as well as parallel Krylov solvers which can be used with the MLD2P4 preconditioners.
|
||||
The choice of PSBLAS has been mainly motivated by the need of having
|
||||
@@ -150,55 +150,55 @@ few black-box routines at the upper layer allow all users to easily
|
||||
build and apply any preconditioner available in MLD2P4;
|
||||
facilities are also available allowing expert users to extend the set of smoothers
|
||||
and solvers for building new versions of the preconditioners (see
|
||||
Section <A HREF="node26.html#sec:adding">7</A>).
|
||||
Section <A HREF="node27.html#sec:adding">7</A>).
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We note that the user interface of MLD2P4 2.1 has been extended with respect to the
|
||||
previous versions in order to separate the construction of the multi-level hierarchy from
|
||||
the construction of the smoothers and solvers, and to allow for more flexibility
|
||||
at each level. The software architecture described in [<A
|
||||
HREF="node29.html#MLD2P4_TOMS">8</A>] has significantly
|
||||
HREF="node30.html#MLD2P4_TOMS">8</A>] has significantly
|
||||
evolved too, in order to fully exploit the Fortran 2003 features implemented in PSBLAS 3.
|
||||
However, compatibility with previous versions has been preserved.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">This guide is organized as follows. General information on the distribution of the source
|
||||
code is reported in Section <A HREF="node4.html#sec:distribution">2</A>, while details on the configuration
|
||||
and installation of the package are given in Section <A HREF="node5.html#sec:building">3</A>. A short description
|
||||
of the preconditioners implemented in MLD2P4 is provided in Section <A HREF="node11.html#sec:background">4</A>,
|
||||
and installation of the package are given in Section <A HREF="node6.html#sec:building">3</A>. A short description
|
||||
of the preconditioners implemented in MLD2P4 is provided in Section <A HREF="node12.html#sec:background">4</A>,
|
||||
to help the users in choosing among them. The basics for building and applying the
|
||||
preconditioners with the Krylov solvers implemented in PSBLAS are reported
|
||||
in Section <A HREF="node15.html#sec:started">5</A>, where the Fortran codes of a few sample programs
|
||||
in Section <A HREF="node16.html#sec:started">5</A>, where the Fortran codes of a few sample programs
|
||||
are also shown. A reference guide for the user interface routines is provided
|
||||
in Section <A HREF="node17.html#sec:userinterface">6</A>. Information on the extension of the package
|
||||
through the addition of new smoothers and solvers is reported in Section <A HREF="node26.html#sec:adding">7</A>.
|
||||
in Section <A HREF="node18.html#sec:userinterface">6</A>. Information on the extension of the package
|
||||
through the addition of new smoothers and solvers is reported in Section <A HREF="node27.html#sec:adding">7</A>.
|
||||
The error handling mechanism used by the package
|
||||
is briefly described in Section <A HREF="node27.html#sec:errors">8</A>. The copyright terms concerning the
|
||||
distribution and modification of MLD2P4 are reported in Appendix <A HREF="node28.html#sec:license">A</A>.
|
||||
is briefly described in Section <A HREF="node28.html#sec:errors">8</A>. The copyright terms concerning the
|
||||
distribution and modification of MLD2P4 are reported in Appendix <A HREF="node29.html#sec:license">A</A>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html115"
|
||||
<A NAME="tex2html116"
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html111"
|
||||
<A NAME="tex2html112"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html105"
|
||||
<A NAME="tex2html106"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html113"
|
||||
<A NAME="tex2html114"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html116"
|
||||
<B> Next:</B> <A NAME="tex2html117"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> Up:</B> <A NAME="tex2html112"
|
||||
<B> Up:</B> <A NAME="tex2html113"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html106"
|
||||
<B> Previous:</B> <A NAME="tex2html107"
|
||||
HREF="node2.html">Contents</A>
|
||||
<B> <A NAME="tex2html114"
|
||||
<B> <A NAME="tex2html115"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+136
-27
@@ -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,53 +18,162 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node31.html">
|
||||
<LINK REL="previous" HREF="node29.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node31.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png">
|
||||
<A NAME="tex2html442"
|
||||
<A NAME="tex2html448"
|
||||
HREF="node31.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html444"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html438"
|
||||
HREF="node29.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html444"
|
||||
<A NAME="tex2html446"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Up:</B> <A NAME="tex2html443"
|
||||
<B> Next:</B> <A NAME="tex2html449"
|
||||
HREF="node31.html">About this document ...</A>
|
||||
<B> Up:</B> <A NAME="tex2html445"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html439"
|
||||
HREF="node29.html">Bibliography</A>
|
||||
<B> <A NAME="tex2html445"
|
||||
HREF="node29.html">License</A>
|
||||
<B> <A NAME="tex2html447"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<BR><BR>
|
||||
<!--End of Navigation Panel-->
|
||||
</FONT></FONT></FONT>
|
||||
<H2><A NAME="SECTION000120000000000000000">
|
||||
Bibliography</A>
|
||||
</H2><DL COMPACT><DD>
|
||||
|
||||
<H1><A NAME="SECTION000130000000000000000">
|
||||
About this document ...</A>
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT><P>
|
||||
This document was generated using the
|
||||
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2012 (1.2)
|
||||
<P>
|
||||
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="MUMPS">1</A>
|
||||
<DD>
|
||||
P. R. Amestoy, C. Ashcraft, O. Boiteau, A. Buttari, J. L'Excellent, C. Weisbecker,
|
||||
<EM>Improving multifrontal methods by means of block low-rank representations</EM>,
|
||||
SIAM Journal on Scientific Computing, volume 37 (3), 2015, A1452-A1474.
|
||||
See also <TT>http://mumps.enseeiht.fr</TT>.
<P></P><DT><A NAME="BREZINA_VANEK">2</A>
|
||||
<DD>
|
||||
M. Brezina, P. Vanek,
|
||||
<EM>A Black-Box Iterative Solver Based on a Two-Level Schwarz Method</EM>,
|
||||
Computing, 63, 1999, 233-263.
<P></P><DT><A NAME="Briggs2000">3</A>
|
||||
<DD>
|
||||
W. L. Briggs, V. E. Henson, S. F. McCormick,
|
||||
<EM>A Multigrid Tutorial, Second Edition</EM>,
|
||||
SIAM, 2000.
<P></P><DT><A NAME="para_04">4</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">5</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="CAI_SARKIS">6</A>
|
||||
<DD>
|
||||
X. C. Cai, M. Sarkis,
|
||||
<EM>A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems</EM>,
|
||||
SIAM Journal on Scientific Computing, 21 (2), 1999, 792-797.
<P></P><DT><A NAME="apnum_07">7</A>
|
||||
<DD>
|
||||
P. D'Ambra, S. Filippone, D. di Serafino,
|
||||
<EM>On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners</EM>,
|
||||
Applied Numerical Mathematics, Elsevier Science,
|
||||
57 (11-12), 2007, 1181-1196.
<P></P><DT><A NAME="MLD2P4_TOMS">8</A>
|
||||
<DD>
|
||||
P. D'Ambra, D. di Serafino, S. Filippone,
|
||||
<I>MLD2P4: a Package of Parallel Multilevel
|
||||
Algebraic Domain Decomposition Preconditioners
|
||||
in Fortran 95</I>, ACM Trans. Math. Softw., 37(3), 2010, art. 30.
<P></P><DT><A NAME="UMFPACK">9</A>
|
||||
<DD>
|
||||
T. A. Davis,
|
||||
<EM>Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
|
||||
Method with a Column Pre-ordering Strategy</EM>,
|
||||
ACM Transactions on Mathematical Software, 30, 2004, 196-199.
|
||||
(See also <TT>http://www.cise.ufl.edu/ davis/</TT>)
<P></P><DT><A NAME="SUPERLU">10</A>
|
||||
<DD>
|
||||
J. W. Demmel, S. C. Eisenstat, J. R. Gilbert, X. S. Li, 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">11</A>
|
||||
<DD>
|
||||
J. J. Dongarra, J. Du Croz, I. S. Duff, S. Hammarling,
|
||||
<I>A set of Level 3 Basic Linear Algebra Subprograms</I>,
|
||||
ACM Transactions on Mathematical Software, 16 (1) 1990, 1-17.
<P></P><DT><A NAME="blas2">12</A>
|
||||
<DD>
|
||||
J. J. Dongarra, J. Du Croz, S. Hammarling, R. J. Hanson,
|
||||
<I>An extended set of FORTRAN Basic Linear Algebra Subprograms</I>,
|
||||
ACM Transactions on Mathematical Software, 14 (1) 1988, 1-17.
<P></P><DT><A NAME="PSBLASGUIDE">13</A>
|
||||
<DD>
|
||||
S. Filippone, A. Buttari,
|
||||
<EM>PSBLAS-3.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library</EM>, 2012,
|
||||
available from <TT>http://www.ce.uniroma2.it/psblas/</TT>.
<P></P><DT><A NAME="PSBLAS3">14</A>
|
||||
<DD>
|
||||
S. Filippone, A. Buttari,
|
||||
<EM>Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003</EM>.
|
||||
ACM Transactions on on Mathematical Software, 38 (4), 2012, art. 23.
<P></P><DT><A NAME="psblas_00">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 (3), 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="Notay2008">19</A>
|
||||
<DD>
|
||||
Y. Notay, P. S. Vassilevski,
|
||||
<EM>Recursive Krylov-based multigrid cycles</EM>,
|
||||
Numerical Linear Algebra with Applications, 15 (5), 2008, 473-487.
<P></P><DT><A NAME="Saad_book">20</A>
|
||||
<DD>
|
||||
Y. Saad,
|
||||
<EM>Iterative methods for sparse linear systems</EM>, 2nd edition, SIAM, 2003.
<P></P><DT><A NAME="dd2_96">21</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">22</A>
|
||||
<DD>
|
||||
M. Snir, S. Otto, S. Huss-Lederman, D. Walker, J. Dongarra,
|
||||
<EM>MPI: The Complete Reference. Volume 1 - The MPI Core</EM>, second edition,
|
||||
MIT Press, 1998.
<P></P><DT><A NAME="Stuben_01">23</A>
|
||||
<DD>
|
||||
K. Stüben,
|
||||
<EM>An Introduction to Algebraic Multigrid</EM>,
|
||||
in A. Schüller, U. Trottenberg, C. Oosterlee, Multigrid,
|
||||
Academic Press, 2001.
<P></P><DT><A NAME="TUMINARO_TONG">24</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">25</A>
|
||||
<DD>
|
||||
P. Vanek, J. Mandel, M. Brezina,
|
||||
<EM>Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems</EM>,
|
||||
Computing, 56 (3) 1996, 179-196.
|
||||
|
||||
<P>
|
||||
The command line arguments were: <BR>
|
||||
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
The translation was initiated by Salvatore Filippone on 2017-07-25<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><BR><HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+22
-30
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
|
||||
<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
|
||||
<!--Converted with LaTeX2HTML 2012 (1.2)
|
||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
||||
* with significant contributions from:
|
||||
@@ -13,7 +13,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
|
||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
@@ -23,39 +23,34 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
|
||||
<DIV CLASS="navigation"><!--Navigation Panel-->
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
|
||||
SRC="file:/usr/share/latex2html/icons/next_g.png">
|
||||
<A NAME="tex2html435"
|
||||
<!--Navigation Panel-->
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png">
|
||||
<A NAME="tex2html454"
|
||||
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="tex2html431"
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html450"
|
||||
HREF="node30.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
|
||||
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
|
||||
<A NAME="tex2html437"
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html456"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
|
||||
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Up:</B> <A NAME="tex2html436"
|
||||
<B> Up:</B> <A NAME="tex2html455"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html432"
|
||||
<B> Previous:</B> <A NAME="tex2html451"
|
||||
HREF="node30.html">Bibliography</A>
|
||||
<B> <A NAME="tex2html438"
|
||||
<B> <A NAME="tex2html457"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR></DIV>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION000120000000000000000">
|
||||
<H1><A NAME="SECTION000130000000000000000">
|
||||
About this document ...</A>
|
||||
</H1>
|
||||
<P>
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT><P>
|
||||
This document was generated using the
|
||||
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.71)
|
||||
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2012 (1.2)
|
||||
<P>
|
||||
Copyright © 1993, 1994, 1995, 1996,
|
||||
<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
|
||||
@@ -66,13 +61,10 @@ Copyright © 1997, 1998, 1999,
|
||||
Mathematics Department, Macquarie University, Sydney.
|
||||
<P>
|
||||
The command line arguments were: <BR>
|
||||
<STRONG>latex2html</STRONG> <TT>-html_version 4.0 -dir ../../html userhtml.tex</TT>
|
||||
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
|
||||
<P>
|
||||
The translation was initiated by Salvatore Filippone on 2008-07-23
|
||||
The translation was initiated by Salvatore Filippone on 2017-08-09<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<ADDRESS>
|
||||
Salvatore Filippone
|
||||
2008-07-23
|
||||
</ADDRESS>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+23
-12
@@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node5.html">
|
||||
<LINK REL="next" HREF="node6.html">
|
||||
<LINK REL="previous" HREF="node3.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node5.html">
|
||||
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html127"
|
||||
<A NAME="tex2html128"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html123"
|
||||
<A NAME="tex2html124"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html117"
|
||||
<A NAME="tex2html118"
|
||||
HREF="node3.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html125"
|
||||
<A NAME="tex2html126"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html128"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Up:</B> <A NAME="tex2html124"
|
||||
<B> Next:</B> <A NAME="tex2html129"
|
||||
HREF="node5.html">Contributors</A>
|
||||
<B> Up:</B> <A NAME="tex2html125"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html118"
|
||||
<B> Previous:</B> <A NAME="tex2html119"
|
||||
HREF="node3.html">General Overview</A>
|
||||
<B> <A NAME="tex2html126"
|
||||
<B> <A NAME="tex2html127"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
@@ -65,7 +65,7 @@ where contact points for further information can be also found.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The software is available under a modified BSD license, as specified
|
||||
in Appendix <A HREF="node28.html#sec:license">A</A>; please note that some of the optional
|
||||
in Appendix <A HREF="node29.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.
|
||||
@@ -89,8 +89,19 @@ constant
|
||||
</DIV>
|
||||
<BR CLEAR="ALL">
|
||||
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
whose current value is <code>2.1.0</code>
|
||||
whose current value is <code>2.1.0</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html130"
|
||||
HREF="node5.html">Contributors</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
|
||||
+35
-81
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Configuring and Building MLD2P4</TITLE>
|
||||
<META NAME="description" CONTENT="Configuring and Building MLD2P4">
|
||||
<TITLE>Contributors</TITLE>
|
||||
<META NAME="description" CONTENT="Contributors">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,9 +18,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node11.html">
|
||||
<LINK REL="previous" HREF="node4.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="up" HREF="node4.html">
|
||||
<LINK REL="next" HREF="node6.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,9 +29,9 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html135"
|
||||
HREF="userhtml.html">
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html129"
|
||||
<A NAME="tex2html131"
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html137"
|
||||
@@ -40,10 +39,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html140"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> Up:</B> <A NAME="tex2html136"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html130"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> Previous:</B> <A NAME="tex2html132"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> <A NAME="tex2html138"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
@@ -51,80 +50,35 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H1><A NAME="SECTION00050000000000000000"></A><A NAME="sec:building"></A>
|
||||
<BR>
|
||||
Configuring and Building MLD2P4
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
|
||||
In order to build MLD2P4 it is necessary to set up a Makefile with appropriate
|
||||
system-dependent variables; this is done by means of the <code>configure</code>
|
||||
script. The distribution also includes the autoconf and automake
|
||||
sources employed to generate the script, but usually this is not needed
|
||||
to build the software.
|
||||
<H2><A NAME="SECTION00041000000000000000">
|
||||
Contributors</A>
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
Contributors to version 2:
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 is implemented almost entirely in Fortran 2003, with some
|
||||
interfaces to external libraries in C; the Fortran compiler
|
||||
must support the Fortran 2003 standard plus the extension <code>MOLD=</code>
|
||||
feature, which enhances the usability of <code>ALLOCATE</code>.
|
||||
Many compilers do this; in particular, this is
|
||||
supported by the GNU Fortran compiler, for which we
|
||||
recommend to use at least version 4.8.
|
||||
The software defines data types and interfaces for
|
||||
real and complex data, in both single and double precision.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Building MLD2P4 requires some base libraries (see Section <A HREF="node6.html#sec:prerequisites">3.1</A>);
|
||||
interfaces to optional third-party libraries, which extend the functionalities of MLD2P4
|
||||
(see Section <A HREF="node7.html#sec:third-party">3.2</A>), are also available. Many Linux distributions
|
||||
(e.g., Ubuntu, Fedora, CentOS) provide precompiled packages for the prerequisite and
|
||||
optional software. In many cases these packages are split between a runtime part and a
|
||||
``developer'' part; in order to build MLD2P4 you need both. A description of the base and
|
||||
optional software used by MLD2P4 is given in the next sections.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html141"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html142"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html143"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html144"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html145"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html139"
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html135"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html129"
|
||||
HREF="node4.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html137"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html140"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
<B> Up:</B> <A NAME="tex2html136"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html130"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<B> <A NAME="tex2html138"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
<LI>Salvatore Filippone, Cranfield University, UK;
|
||||
</LI>
|
||||
<LI>Pasqua D'Ambra, IAC-CNR, Naples, IT;
|
||||
</LI>
|
||||
<LI>Daniela di Serafino, University of Campania ``L. Vanvitelli'', Caserta, IT;
|
||||
</LI>
|
||||
<LI>Ambra Abdullahi Hassan, University of Rome ``Tor Vergata'', IT.
|
||||
</LI>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
Contributors to version 1:
|
||||
</FONT></FONT></FONT>
|
||||
<UL>
|
||||
<LI>Salvatore Filippone;
|
||||
</LI>
|
||||
<LI>Pasqua D'Ambra;
|
||||
</LI>
|
||||
<LI>Daniela di Serafino;
|
||||
</LI>
|
||||
<LI>Alfredo Buttari, CNRS-IRIT, Toulouse, F.
|
||||
</LI>
|
||||
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
</FONT></FONT></FONT>
|
||||
<BR><HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+77
-82
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Prerequisites</TITLE>
|
||||
<META NAME="description" CONTENT="Prerequisites">
|
||||
<TITLE>Configuring and Building MLD2P4</TITLE>
|
||||
<META NAME="description" CONTENT="Configuring and Building MLD2P4">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -18,116 +18,111 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
||||
|
||||
<LINK REL="next" HREF="node7.html">
|
||||
<LINK REL="previous" HREF="node5.html">
|
||||
<LINK REL="up" HREF="node5.html">
|
||||
<LINK REL="next" HREF="node12.html">
|
||||
<LINK REL="previous" HREF="node4.html">
|
||||
<LINK REL="up" HREF="userhtml.html">
|
||||
<LINK REL="next" HREF="node7.html">
|
||||
</HEAD>
|
||||
|
||||
<BODY >
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html156"
|
||||
<A NAME="tex2html151"
|
||||
HREF="node7.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html152"
|
||||
HREF="node5.html">
|
||||
<A NAME="tex2html147"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html146"
|
||||
<A NAME="tex2html141"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html154"
|
||||
<A NAME="tex2html149"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html157"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<B> Up:</B> <A NAME="tex2html153"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html147"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> <A NAME="tex2html155"
|
||||
<B> Next:</B> <A NAME="tex2html152"
|
||||
HREF="node7.html">Prerequisites</A>
|
||||
<B> Up:</B> <A NAME="tex2html148"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html142"
|
||||
HREF="node5.html">Contributors</A>
|
||||
<B> <A NAME="tex2html150"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00051000000000000000"></A><A NAME="sec:prerequisites"></A>
|
||||
<H1><A NAME="SECTION00050000000000000000"></A><A NAME="sec:building"></A>
|
||||
<BR>
|
||||
Prerequisites
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The following base libraries are needed:
|
||||
</FONT></FONT></FONT><DL>
|
||||
<DT><STRONG>BLAS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node29.html#blas3">11</A>,<A
|
||||
HREF="node29.html#blas2">12</A>,<A
|
||||
HREF="node29.html#blas1">17</A>] Many vendors provide optimized versions
|
||||
of BLAS; if no vendor version is
|
||||
available for a given platform, the ATLAS software
|
||||
(<TT><A NAME="tex2html1"
|
||||
HREF="math-atlas.sourceforge.net">math-atlas.sourceforge.net</A></TT>)
|
||||
may be employed. The reference BLAS from Netlib
|
||||
(<TT><A NAME="tex2html2"
|
||||
HREF="www.netlib.org/blas">www.netlib.org/blas</A></TT>) are meant to define the standard
|
||||
behaviour of the BLAS interface, so they are not optimized for any
|
||||
particular plaftorm, and should only be used as a last
|
||||
resort. Note that BLAS computations form a relatively small part of
|
||||
the MLD2P4/PSBLAS computations; they are however critical when using
|
||||
preconditioners based on MUMPS, UMFPACK or SuperLU third party
|
||||
libraries. Note that UMFPACK requires a full LAPACK library; our
|
||||
experience is that configuring ATLAS for building full LAPACK does not
|
||||
work in the correct way. Our advice is first to download the LAPACK tarfile from
|
||||
<TT><A NAME="tex2html3"
|
||||
HREF="www.netlib.org/lapack">www.netlib.org/lapack</A></TT> and install it independently of ATLAS. In this case,
|
||||
you need to modify the OPTS and NOOPT definitions for including -fPIC compilation option
|
||||
in the make.inc file of the LAPACK library.
|
||||
</DD>
|
||||
<DT><STRONG>MPI</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node29.html#MPI2">16</A>,<A
|
||||
HREF="node29.html#MPI1">22</A>] A version of MPI is available on most
|
||||
high-performance computing systems.
|
||||
|
||||
</DD>
|
||||
<DT><STRONG>PSBLAS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node29.html#PSBLASGUIDE">13</A>,<A
|
||||
HREF="node29.html#psblas_00">15</A>] Parallel Sparse BLAS (PSBLAS) is
|
||||
available from <TT><A NAME="tex2html4"
|
||||
HREF="www.ce.uniroma2.it/psblas">www.ce.uniroma2.it/psblas</A></TT>; version
|
||||
3.5.0 (or later) is required. Indeed, all the prerequisites
|
||||
listed so far are also prerequisites of PSBLAS.
|
||||
</DD>
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
Please note that the four previous libraries must have Fortran
|
||||
interfaces compatible with MLD2P4;
|
||||
usually this means that they should all be built with the same
|
||||
compiler as MLD2P4.
|
||||
Configuring and Building MLD2P4
|
||||
</H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
|
||||
In order to build MLD2P4 it is necessary to set up a Makefile with appropriate
|
||||
system-dependent variables; this is done by means of the <code>configure</code>
|
||||
script. The distribution also includes the autoconf and automake
|
||||
sources employed to generate the script, but usually this is not needed
|
||||
to build the software.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 is implemented almost entirely in Fortran 2003, with some
|
||||
interfaces to external libraries in C; the Fortran compiler
|
||||
must support the Fortran 2003 standard plus the extension <code>MOLD=</code>
|
||||
feature, which enhances the usability of <code>ALLOCATE</code>.
|
||||
Many compilers do this; in particular, this is
|
||||
supported by the GNU Fortran compiler, for which we
|
||||
recommend to use at least version 4.8.
|
||||
The software defines data types and interfaces for
|
||||
real and complex data, in both single and double precision.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Building MLD2P4 requires some base libraries (see Section <A HREF="node7.html#sec:prerequisites">3.1</A>);
|
||||
interfaces to optional third-party libraries, which extend the functionalities of MLD2P4
|
||||
(see Section <A HREF="node8.html#sec:third-party">3.2</A>), are also available. Many Linux distributions
|
||||
(e.g., Ubuntu, Fedora, CentOS) provide precompiled packages for the prerequisite and
|
||||
optional software. In many cases these packages are split between a runtime part and a
|
||||
``developer'' part; in order to build MLD2P4 you need both. A description of the base and
|
||||
optional software used by MLD2P4 is given in the next sections.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<!--Table of Child-Links-->
|
||||
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
||||
|
||||
<UL>
|
||||
<LI><A NAME="tex2html153"
|
||||
HREF="node7.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html154"
|
||||
HREF="node8.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html155"
|
||||
HREF="node9.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html156"
|
||||
HREF="node10.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html157"
|
||||
HREF="node11.html">Example and test programs</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html156"
|
||||
<A NAME="tex2html151"
|
||||
HREF="node7.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html152"
|
||||
HREF="node5.html">
|
||||
<A NAME="tex2html147"
|
||||
HREF="userhtml.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html146"
|
||||
<A NAME="tex2html141"
|
||||
HREF="node5.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html154"
|
||||
<A NAME="tex2html149"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html157"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
<B> Up:</B> <A NAME="tex2html153"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html147"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<B> <A NAME="tex2html155"
|
||||
<B> Next:</B> <A NAME="tex2html152"
|
||||
HREF="node7.html">Prerequisites</A>
|
||||
<B> Up:</B> <A NAME="tex2html148"
|
||||
HREF="userhtml.html">userhtml</A>
|
||||
<B> Previous:</B> <A NAME="tex2html142"
|
||||
HREF="node5.html">Contributors</A>
|
||||
<B> <A NAME="tex2html150"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
|
||||
+55
-58
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Optional third party libraries</TITLE>
|
||||
<META NAME="description" CONTENT="Optional third party libraries">
|
||||
<TITLE>Prerequisites</TITLE>
|
||||
<META NAME="description" CONTENT="Prerequisites">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node8.html">
|
||||
<LINK REL="previous" HREF="node6.html">
|
||||
<LINK REL="up" HREF="node5.html">
|
||||
<LINK REL="up" HREF="node6.html">
|
||||
<LINK REL="next" HREF="node8.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node8.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html164"
|
||||
HREF="node5.html">
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html158"
|
||||
HREF="node6.html">
|
||||
@@ -40,74 +40,71 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html169"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
HREF="node8.html">Optional third party libraries</A>
|
||||
<B> Up:</B> <A NAME="tex2html165"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html159"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> <A NAME="tex2html167"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00052000000000000000"></A><A NAME="sec:third-party"></A>
|
||||
<H2><A NAME="SECTION00051000000000000000"></A><A NAME="sec:prerequisites"></A>
|
||||
<BR>
|
||||
Optional third party libraries
|
||||
Prerequisites
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We provide interfaces to the following third-party software libraries;
|
||||
note that these are optional, but if you enable them some defaults
|
||||
for multi-level preconditioners may change to reflect their presence.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><DL>
|
||||
<DT><STRONG>UMFPACK</STRONG></DT>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The following base libraries are needed:
|
||||
</FONT></FONT></FONT><DL>
|
||||
<DT><STRONG>BLAS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node29.html#UMFPACK">9</A>]
|
||||
A sparse LU factorization package included in the SuiteSparse library, available from
|
||||
<TT><A NAME="tex2html5"
|
||||
HREF="faculty.cse.tamu.edu/davis/suitesparse.html">faculty.cse.tamu.edu/davis/suitesparse.html</A></TT>;
|
||||
it provides sequential factorization and triangular system solution for double
|
||||
precision real and complex data. We tested version 4.5.4 of SuiteSparse.
|
||||
Note that for configuring SuiteSparse you should provide the right path to the BLAS
|
||||
and LAPACK libraries in the <code>SuiteSparse_config/SuiteSparse_config.mk</code> file.
|
||||
HREF="node30.html#blas3">11</A>,<A
|
||||
HREF="node30.html#blas2">12</A>,<A
|
||||
HREF="node30.html#blas1">17</A>] Many vendors provide optimized versions
|
||||
of BLAS; if no vendor version is
|
||||
available for a given platform, the ATLAS software
|
||||
(<TT><A NAME="tex2html1"
|
||||
HREF="math-atlas.sourceforge.net">math-atlas.sourceforge.net</A></TT>)
|
||||
may be employed. The reference BLAS from Netlib
|
||||
(<TT><A NAME="tex2html2"
|
||||
HREF="www.netlib.org/blas">www.netlib.org/blas</A></TT>) are meant to define the standard
|
||||
behaviour of the BLAS interface, so they are not optimized for any
|
||||
particular plaftorm, and should only be used as a last
|
||||
resort. Note that BLAS computations form a relatively small part of
|
||||
the MLD2P4/PSBLAS computations; they are however critical when using
|
||||
preconditioners based on MUMPS, UMFPACK or SuperLU third party
|
||||
libraries. Note that UMFPACK requires a full LAPACK library; our
|
||||
experience is that configuring ATLAS for building full LAPACK does not
|
||||
work in the correct way. Our advice is first to download the LAPACK tarfile from
|
||||
<TT><A NAME="tex2html3"
|
||||
HREF="www.netlib.org/lapack">www.netlib.org/lapack</A></TT> and install it independently of ATLAS. In this case,
|
||||
you need to modify the OPTS and NOOPT definitions for including -fPIC compilation option
|
||||
in the make.inc file of the LAPACK library.
|
||||
</DD>
|
||||
<DT><STRONG>MUMPS</STRONG></DT>
|
||||
<DT><STRONG>MPI</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node29.html#MUMPS">1</A>]
|
||||
A sparse LU factorization package available from <TT><A NAME="tex2html6"
|
||||
HREF="mumps.enseeiht.fr">mumps.enseeiht.fr</A></TT>;
|
||||
it provides sequential and parallel factorizations and triangular system solution
|
||||
for single and double precision, real and complex data.
|
||||
We tested versions 4.10.0 and 5.0.1.
|
||||
</DD>
|
||||
<DT><STRONG>SuperLU</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node29.html#SUPERLU">10</A>]
|
||||
A sparse LU factorization package available from
|
||||
<TT><A NAME="tex2html7"
|
||||
HREF="crd.lbl.gov/~xiaoye/SuperLU/">crd.lbl.gov/~xiaoye/SuperLU/</A></TT>; it provides sequential
|
||||
factorization and triangular system solution for single and double precision,
|
||||
real and complex data. We tested versions 4.3 and 5.0. If you installed BLAS from
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file.
|
||||
HREF="node30.html#MPI2">16</A>,<A
|
||||
HREF="node30.html#MPI1">22</A>] A version of MPI is available on most
|
||||
high-performance computing systems.
|
||||
|
||||
</DD>
|
||||
<DT><STRONG>SuperLU_Dist</STRONG></DT>
|
||||
<DT><STRONG>PSBLAS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node29.html#SUPERLUDIST">18</A>]
|
||||
A sparse LU factorization package available
|
||||
from the same site as SuperLU; it provides parallel factorization and
|
||||
triangular system solution for double precision real and complex data.
|
||||
We tested versions 3.3 and 4.2. If you installed BLAS from
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file and
|
||||
to add the <code>-std=c99</code> option to the C compiler options.
|
||||
Note that this library requires the ParMETIS
|
||||
library for parallel graph partitioning and fill-reducing matrix ordering, available from
|
||||
<TT><A NAME="tex2html8"
|
||||
HREF="glaros.dtc.umn.edu/gkhome/metis/parmetis/overview">glaros.dtc.umn.edu/gkhome/metis/parmetis/overview</A></TT>.
|
||||
HREF="node30.html#PSBLASGUIDE">13</A>,<A
|
||||
HREF="node30.html#psblas_00">15</A>] Parallel Sparse BLAS (PSBLAS) is
|
||||
available from <TT><A NAME="tex2html4"
|
||||
HREF="www.ce.uniroma2.it/psblas">www.ce.uniroma2.it/psblas</A></TT>; version
|
||||
3.5.0 (or later) is required. Indeed, all the prerequisites
|
||||
listed so far are also prerequisites of PSBLAS.
|
||||
</DD>
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
Please note that the four previous libraries must have Fortran
|
||||
interfaces compatible with MLD2P4;
|
||||
usually this means that they should all be built with the same
|
||||
compiler as MLD2P4.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
@@ -115,7 +112,7 @@ for multi-level preconditioners may change to reflect their presence.
|
||||
HREF="node8.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html164"
|
||||
HREF="node5.html">
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html158"
|
||||
HREF="node6.html">
|
||||
@@ -125,11 +122,11 @@ for multi-level preconditioners may change to reflect their presence.
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html169"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
HREF="node8.html">Optional third party libraries</A>
|
||||
<B> Up:</B> <A NAME="tex2html165"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html159"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> <A NAME="tex2html167"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+65
-214
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Configuration options</TITLE>
|
||||
<META NAME="description" CONTENT="Configuration options">
|
||||
<TITLE>Optional third party libraries</TITLE>
|
||||
<META NAME="description" CONTENT="Optional third party libraries">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node9.html">
|
||||
<LINK REL="previous" HREF="node7.html">
|
||||
<LINK REL="up" HREF="node5.html">
|
||||
<LINK REL="up" HREF="node6.html">
|
||||
<LINK REL="next" HREF="node9.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node9.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html176"
|
||||
HREF="node5.html">
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html170"
|
||||
HREF="node7.html">
|
||||
@@ -40,231 +40,82 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html181"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
HREF="node9.html">Configuration options</A>
|
||||
<B> Up:</B> <A NAME="tex2html177"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html171"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
HREF="node7.html">Prerequisites</A>
|
||||
<B> <A NAME="tex2html179"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00053000000000000000">
|
||||
Configuration options</A>
|
||||
<H2><A NAME="SECTION00052000000000000000"></A><A NAME="sec:third-party"></A>
|
||||
<BR>
|
||||
Optional third party libraries
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to build MLD2P4, the first step is to use the <code>configure</code> script
|
||||
in the main directory to generate the necessary makefile.
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We provide interfaces to the following third-party software libraries;
|
||||
note that these are optional, but if you enable them some defaults
|
||||
for multi-level preconditioners may change to reflect their presence.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">As a minimal example consider the following:
|
||||
</FONT></FONT></FONT><PRE>
|
||||
./configure --with-psblas=PSB-INSTALL-DIR
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
which assumes that the various MPI compilers and support libraries are
|
||||
available in the standard directories on the system, and specifies
|
||||
only the PSBLAS install directory (note that the latter directory must
|
||||
be specified with an <EM>absolute</EM> path).
|
||||
The full set of options may be looked at by issuing the command
|
||||
<code>./configure --help</code>, which produces:
|
||||
</FONT></FONT></FONT><PRE>
|
||||
`configure' configures MLD2P4 2.1 to adapt to many kinds of systems.
|
||||
|
||||
Usage: ./configure [OPTION]... [VAR=VALUE]...
|
||||
|
||||
To assign environment variables (e.g., CC, CFLAGS...), specify them as
|
||||
VAR=VALUE. See below for descriptions of some of the useful variables.
|
||||
|
||||
Defaults for the options are specified in brackets.
|
||||
|
||||
Configuration:
|
||||
-h, --help display this help and exit
|
||||
--help=short display options specific to this package
|
||||
--help=recursive display the short help of all the included packages
|
||||
-V, --version display version information and exit
|
||||
-q, --quiet, --silent do not print `checking...' messages
|
||||
--cache-file=FILE cache test results in FILE [disabled]
|
||||
-C, --config-cache alias for `--cache-file=config.cache'
|
||||
-n, --no-create do not create output files
|
||||
--srcdir=DIR find the sources in DIR [configure dir or `..']
|
||||
|
||||
Installation directories:
|
||||
--prefix=PREFIX install architecture-independent files in PREFIX
|
||||
[/usr/local]
|
||||
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
|
||||
[PREFIX]
|
||||
|
||||
By default, `make install' will install all the files in
|
||||
`/usr/local/bin', `/usr/local/lib' etc. You can specify
|
||||
an installation prefix other than `/usr/local' using `--prefix',
|
||||
for instance `--prefix=$HOME'.
|
||||
|
||||
For better control, use the options below.
|
||||
|
||||
Fine tuning of the installation directories:
|
||||
--bindir=DIR user executables [EPREFIX/bin]
|
||||
--sbindir=DIR system admin executables [EPREFIX/sbin]
|
||||
--libexecdir=DIR program executables [EPREFIX/libexec]
|
||||
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
||||
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
||||
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
||||
--libdir=DIR object code libraries [EPREFIX/lib]
|
||||
--includedir=DIR C header files [PREFIX/include]
|
||||
--oldincludedir=DIR C header files for non-gcc [/usr/include]
|
||||
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
|
||||
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
|
||||
--infodir=DIR info documentation [DATAROOTDIR/info]
|
||||
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
||||
--mandir=DIR man documentation [DATAROOTDIR/man]
|
||||
--docdir=DIR documentation root [DATAROOTDIR/doc/mld2p4]
|
||||
--htmldir=DIR html documentation [DOCDIR]
|
||||
--dvidir=DIR dvi documentation [DOCDIR]
|
||||
--pdfdir=DIR pdf documentation [DOCDIR]
|
||||
--psdir=DIR ps documentation [DOCDIR]
|
||||
|
||||
Program names:
|
||||
--program-prefix=PREFIX prepend PREFIX to installed program names
|
||||
--program-suffix=SUFFIX append SUFFIX to installed program names
|
||||
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
|
||||
|
||||
Optional Features:
|
||||
--disable-option-checking ignore unrecognized --enable/--with options
|
||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||
--disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors
|
||||
--enable-serial Specify whether to enable a fake mpi library to run
|
||||
in serial mode.
|
||||
--enable-long-integers Specify usage of 64 bits integers.
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--with-psblas=DIR The install directory for PSBLAS, for example,
|
||||
--with-psblas=/opt/packages/psblas-3.5
|
||||
--with-psblas-incdir=DIR
|
||||
Specify the directory for PSBLAS includes.
|
||||
--with-psblas-libdir=DIR
|
||||
Specify the directory for PSBLAS library.
|
||||
--with-ccopt additional CCOPT flags to be added: will prepend
|
||||
to CCOPT
|
||||
--with-fcopt additional FCOPT flags to be added: will prepend
|
||||
to FCOPT
|
||||
--with-libs List additional link flags here. For example,
|
||||
--with-libs=-lspecial_system_lib or
|
||||
--with-libs=-L/path/to/libs
|
||||
--with-clibs additional CLIBS flags to be added: will prepend
|
||||
to CLIBS
|
||||
--with-flibs additional FLIBS flags to be added: will prepend
|
||||
to FLIBS
|
||||
--with-library-path additional LIBRARYPATH flags to be added: will
|
||||
prepend to LIBRARYPATH
|
||||
--with-include-path additional INCLUDEPATH flags to be added: will
|
||||
prepend to INCLUDEPATH
|
||||
--with-module-path additional MODULE_PATH flags to be added: will
|
||||
prepend to MODULE_PATH
|
||||
--with-extra-libs List additional link flags here. For example,
|
||||
--with-extra-libs=-lspecial_system_lib or
|
||||
--with-extra-libs=-L/path/to/libs
|
||||
--with-blas=<lib> use BLAS library <lib>
|
||||
--with-blasdir=<dir> search for BLAS library in <dir>
|
||||
--with-lapack=<lib> use LAPACK library <lib>
|
||||
--with-mumps=LIBNAME Specify the libname for MUMPS. Default: autodetect
|
||||
with minimum "-lmumps_common -lpord"
|
||||
--with-mumpsdir=DIR Specify the directory for MUMPS library and
|
||||
includes. Note: you will need to add auxiliary
|
||||
libraries with --extra-libs; this depends on how
|
||||
MUMPS was configured and installed, at a minimum you
|
||||
will need SCALAPACK and BLAS
|
||||
--with-mumpsincdir=DIR Specify the directory for MUMPS includes.
|
||||
--with-mumpslibdir=DIR Specify the directory for MUMPS library.
|
||||
--with-umfpack=LIBNAME Specify the library name for UMFPACK and its support
|
||||
libraries. Default: "-lumfpack -lamd"
|
||||
--with-umfpackdir=DIR Specify the directory for UMFPACK library and
|
||||
includes.
|
||||
--with-umfpackincdir=DIR
|
||||
Specify the directory for UMFPACK includes.
|
||||
--with-umfpacklibdir=DIR
|
||||
Specify the directory for UMFPACK library.
|
||||
--with-superlu=LIBNAME Specify the library name for SUPERLU library.
|
||||
Default: "-lsuperlu"
|
||||
--with-superludir=DIR Specify the directory for SUPERLU library and
|
||||
includes.
|
||||
--with-superluincdir=DIR
|
||||
Specify the directory for SUPERLU includes.
|
||||
--with-superlulibdir=DIR
|
||||
Specify the directory for SUPERLU library.
|
||||
--with-superludist=LIBNAME
|
||||
Specify the libname for SUPERLUDIST library.
|
||||
Requires you also specify SuperLU. Default:
|
||||
"-lsuperlu_dist"
|
||||
--with-superludistdir=DIR
|
||||
Specify the directory for SUPERLUDIST library and
|
||||
includes.
|
||||
--with-superludistincdir=DIR
|
||||
Specify the directory for SUPERLUDIST includes.
|
||||
--with-superludistlibdir=DIR
|
||||
Specify the directory for SUPERLUDIST library.
|
||||
|
||||
Some influential environment variables:
|
||||
FC Fortran compiler command
|
||||
FCFLAGS Fortran compiler flags
|
||||
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
|
||||
nonstandard directory <lib dir>
|
||||
LIBS libraries to pass to the linker, e.g. -l<library>
|
||||
CC C compiler command
|
||||
CFLAGS C compiler flags
|
||||
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
|
||||
you have headers in a nonstandard directory <include dir>
|
||||
MPICC MPI C compiler command
|
||||
MPIFC MPI Fortran compiler command
|
||||
CPP C preprocessor
|
||||
|
||||
Use these variables to override the choices made by `configure' or to help
|
||||
it to find libraries and programs with nonstandard names/locations.
|
||||
|
||||
Report bugs to <bugreport@mld2p4.it>.
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><DL>
|
||||
<DT><STRONG>UMFPACK</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node30.html#UMFPACK">9</A>]
|
||||
A sparse LU factorization package included in the SuiteSparse library, available from
|
||||
<TT><A NAME="tex2html5"
|
||||
HREF="faculty.cse.tamu.edu/davis/suitesparse.html">faculty.cse.tamu.edu/davis/suitesparse.html</A></TT>;
|
||||
it provides sequential factorization and triangular system solution for double
|
||||
precision real and complex data. We tested version 4.5.4 of SuiteSparse.
|
||||
Note that for configuring SuiteSparse you should provide the right path to the BLAS
|
||||
and LAPACK libraries in the <code>SuiteSparse_config/SuiteSparse_config.mk</code> file.
|
||||
</DD>
|
||||
<DT><STRONG>MUMPS</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node30.html#MUMPS">1</A>]
|
||||
A sparse LU factorization package available from <TT><A NAME="tex2html6"
|
||||
HREF="mumps.enseeiht.fr">mumps.enseeiht.fr</A></TT>;
|
||||
it provides sequential and parallel factorizations and triangular system solution
|
||||
for single and double precision, real and complex data.
|
||||
We tested versions 4.10.0 and 5.0.1.
|
||||
</DD>
|
||||
<DT><STRONG>SuperLU</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node30.html#SUPERLU">10</A>]
|
||||
A sparse LU factorization package available from
|
||||
<TT><A NAME="tex2html7"
|
||||
HREF="crd.lbl.gov/~xiaoye/SuperLU/">crd.lbl.gov/~xiaoye/SuperLU/</A></TT>; it provides sequential
|
||||
factorization and triangular system solution for single and double precision,
|
||||
real and complex data. We tested versions 4.3 and 5.0. If you installed BLAS from
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file.
|
||||
|
||||
</DD>
|
||||
<DT><STRONG>SuperLU_Dist</STRONG></DT>
|
||||
<DD>[<A
|
||||
HREF="node30.html#SUPERLUDIST">18</A>]
|
||||
A sparse LU factorization package available
|
||||
from the same site as SuperLU; it provides parallel factorization and
|
||||
triangular system solution for double precision real and complex data.
|
||||
We tested versions 3.3 and 4.2. If you installed BLAS from
|
||||
ATLAS, remember to define the BLASLIB variable in the make.inc file and
|
||||
to add the <code>-std=c99</code> option to the C compiler options.
|
||||
Note that this library requires the ParMETIS
|
||||
library for parallel graph partitioning and fill-reducing matrix ordering, available from
|
||||
<TT><A NAME="tex2html8"
|
||||
HREF="glaros.dtc.umn.edu/gkhome/metis/parmetis/overview">glaros.dtc.umn.edu/gkhome/metis/parmetis/overview</A></TT>.
|
||||
</DD>
|
||||
</DL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For instance, if a user has built and installed PSBLAS 3.5 under the
|
||||
<code>/opt</code> directory and is
|
||||
using the SuiteSparse package (which includes UMFPACK), then MLD2P4
|
||||
might be configured with:
|
||||
</FONT></FONT></FONT><PRE>
|
||||
./configure --with-psblas=/opt/psblas-3.5/ \
|
||||
--with-umfpackincdir=/usr/include/suitesparse/
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
Once the configure script has completed execution, it will have
|
||||
generated the file <code>Make.inc</code> which will then be used by all
|
||||
Makefiles in the directory tree; this file will be copied in the
|
||||
install directory under the name <code>Make.inc.MLD2P4</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To use the MUMPS solver package,
|
||||
the user has to add the appropriate options to the configure script;
|
||||
by default we are looking for the libraries
|
||||
<code>-ldmumps -lsmumps</code> <code> -lzmumps -lcmumps -mumps_common -lpord</code>.
|
||||
MUMPS often uses additional packages such as ScaLAPACK, ParMETIS,
|
||||
SCOTCH, as well as enabling OpenMP; in such cases it is necessary to
|
||||
add linker options with the <code>--with-extra-libs</code> configure option.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To build the library the user will now enter
|
||||
</FONT></FONT></FONT><PRE>
|
||||
make
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
followed (optionally) by
|
||||
</FONT></FONT></FONT><PRE>
|
||||
make install
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html180"
|
||||
HREF="node9.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html176"
|
||||
HREF="node5.html">
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html170"
|
||||
HREF="node7.html">
|
||||
@@ -274,11 +125,11 @@ make install
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html181"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
HREF="node9.html">Configuration options</A>
|
||||
<B> Up:</B> <A NAME="tex2html177"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html171"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
HREF="node7.html">Prerequisites</A>
|
||||
<B> <A NAME="tex2html179"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
+236
-17
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Bug reporting</TITLE>
|
||||
<META NAME="description" CONTENT="Bug reporting">
|
||||
<TITLE>Configuration options</TITLE>
|
||||
<META NAME="description" CONTENT="Configuration options">
|
||||
<META NAME="keywords" CONTENT="userhtml">
|
||||
<META NAME="resource-type" CONTENT="document">
|
||||
<META NAME="distribution" CONTENT="global">
|
||||
@@ -20,7 +20,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
|
||||
<LINK REL="next" HREF="node10.html">
|
||||
<LINK REL="previous" HREF="node8.html">
|
||||
<LINK REL="up" HREF="node5.html">
|
||||
<LINK REL="up" HREF="node6.html">
|
||||
<LINK REL="next" HREF="node10.html">
|
||||
</HEAD>
|
||||
|
||||
@@ -30,7 +30,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
HREF="node10.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html188"
|
||||
HREF="node5.html">
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html182"
|
||||
HREF="node8.html">
|
||||
@@ -40,29 +40,248 @@ original version by: Nikos Drakos, CBLU, University of Leeds
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html193"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
HREF="node10.html">Bug reporting</A>
|
||||
<B> Up:</B> <A NAME="tex2html189"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html183"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
HREF="node8.html">Optional third party libraries</A>
|
||||
<B> <A NAME="tex2html191"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<BR>
|
||||
<BR>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
<H2><A NAME="SECTION00054000000000000000">
|
||||
Bug reporting</A>
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
If you find any bugs in our codes, please send an email to <BR><TT>pasqua.dambra@cnr.it</TT>
|
||||
<BR><TT>daniela.diserafino@unicampania.it</TT>
|
||||
<BR><TT>salvatore.filippone@cranfield.ac.uk</TT> <BR>
|
||||
You should be aware that the amount of information needed to reproduce a problem
|
||||
in a parallel program may vary quite a lot.
|
||||
<H2><A NAME="SECTION00053000000000000000">
|
||||
Configuration options</A>
|
||||
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to build MLD2P4, the first step is to use the <code>configure</code> script
|
||||
in the main directory to generate the necessary makefile.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<BR><HR>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">As a minimal example consider the following:
|
||||
</FONT></FONT></FONT><PRE>
|
||||
./configure --with-psblas=PSB-INSTALL-DIR
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
which assumes that the various MPI compilers and support libraries are
|
||||
available in the standard directories on the system, and specifies
|
||||
only the PSBLAS install directory (note that the latter directory must
|
||||
be specified with an <EM>absolute</EM> path).
|
||||
The full set of options may be looked at by issuing the command
|
||||
<code>./configure --help</code>, which produces:
|
||||
</FONT></FONT></FONT><PRE>
|
||||
`configure' configures MLD2P4 2.1 to adapt to many kinds of systems.
|
||||
|
||||
Usage: ./configure [OPTION]... [VAR=VALUE]...
|
||||
|
||||
To assign environment variables (e.g., CC, CFLAGS...), specify them as
|
||||
VAR=VALUE. See below for descriptions of some of the useful variables.
|
||||
|
||||
Defaults for the options are specified in brackets.
|
||||
|
||||
Configuration:
|
||||
-h, --help display this help and exit
|
||||
--help=short display options specific to this package
|
||||
--help=recursive display the short help of all the included packages
|
||||
-V, --version display version information and exit
|
||||
-q, --quiet, --silent do not print `checking...' messages
|
||||
--cache-file=FILE cache test results in FILE [disabled]
|
||||
-C, --config-cache alias for `--cache-file=config.cache'
|
||||
-n, --no-create do not create output files
|
||||
--srcdir=DIR find the sources in DIR [configure dir or `..']
|
||||
|
||||
Installation directories:
|
||||
--prefix=PREFIX install architecture-independent files in PREFIX
|
||||
[/usr/local]
|
||||
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
|
||||
[PREFIX]
|
||||
|
||||
By default, `make install' will install all the files in
|
||||
`/usr/local/bin', `/usr/local/lib' etc. You can specify
|
||||
an installation prefix other than `/usr/local' using `--prefix',
|
||||
for instance `--prefix=$HOME'.
|
||||
|
||||
For better control, use the options below.
|
||||
|
||||
Fine tuning of the installation directories:
|
||||
--bindir=DIR user executables [EPREFIX/bin]
|
||||
--sbindir=DIR system admin executables [EPREFIX/sbin]
|
||||
--libexecdir=DIR program executables [EPREFIX/libexec]
|
||||
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
||||
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
||||
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
||||
--libdir=DIR object code libraries [EPREFIX/lib]
|
||||
--includedir=DIR C header files [PREFIX/include]
|
||||
--oldincludedir=DIR C header files for non-gcc [/usr/include]
|
||||
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
|
||||
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
|
||||
--infodir=DIR info documentation [DATAROOTDIR/info]
|
||||
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
||||
--mandir=DIR man documentation [DATAROOTDIR/man]
|
||||
--docdir=DIR documentation root [DATAROOTDIR/doc/mld2p4]
|
||||
--htmldir=DIR html documentation [DOCDIR]
|
||||
--dvidir=DIR dvi documentation [DOCDIR]
|
||||
--pdfdir=DIR pdf documentation [DOCDIR]
|
||||
--psdir=DIR ps documentation [DOCDIR]
|
||||
|
||||
Program names:
|
||||
--program-prefix=PREFIX prepend PREFIX to installed program names
|
||||
--program-suffix=SUFFIX append SUFFIX to installed program names
|
||||
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
|
||||
|
||||
Optional Features:
|
||||
--disable-option-checking ignore unrecognized --enable/--with options
|
||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||
--disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors
|
||||
--enable-serial Specify whether to enable a fake mpi library to run
|
||||
in serial mode.
|
||||
--enable-long-integers Specify usage of 64 bits integers.
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--with-psblas=DIR The install directory for PSBLAS, for example,
|
||||
--with-psblas=/opt/packages/psblas-3.5
|
||||
--with-psblas-incdir=DIR
|
||||
Specify the directory for PSBLAS includes.
|
||||
--with-psblas-libdir=DIR
|
||||
Specify the directory for PSBLAS library.
|
||||
--with-ccopt additional CCOPT flags to be added: will prepend
|
||||
to CCOPT
|
||||
--with-fcopt additional FCOPT flags to be added: will prepend
|
||||
to FCOPT
|
||||
--with-libs List additional link flags here. For example,
|
||||
--with-libs=-lspecial_system_lib or
|
||||
--with-libs=-L/path/to/libs
|
||||
--with-clibs additional CLIBS flags to be added: will prepend
|
||||
to CLIBS
|
||||
--with-flibs additional FLIBS flags to be added: will prepend
|
||||
to FLIBS
|
||||
--with-library-path additional LIBRARYPATH flags to be added: will
|
||||
prepend to LIBRARYPATH
|
||||
--with-include-path additional INCLUDEPATH flags to be added: will
|
||||
prepend to INCLUDEPATH
|
||||
--with-module-path additional MODULE_PATH flags to be added: will
|
||||
prepend to MODULE_PATH
|
||||
--with-extra-libs List additional link flags here. For example,
|
||||
--with-extra-libs=-lspecial_system_lib or
|
||||
--with-extra-libs=-L/path/to/libs
|
||||
--with-blas=<lib> use BLAS library <lib>
|
||||
--with-blasdir=<dir> search for BLAS library in <dir>
|
||||
--with-lapack=<lib> use LAPACK library <lib>
|
||||
--with-mumps=LIBNAME Specify the libname for MUMPS. Default: autodetect
|
||||
with minimum "-lmumps_common -lpord"
|
||||
--with-mumpsdir=DIR Specify the directory for MUMPS library and
|
||||
includes. Note: you will need to add auxiliary
|
||||
libraries with --extra-libs; this depends on how
|
||||
MUMPS was configured and installed, at a minimum you
|
||||
will need SCALAPACK and BLAS
|
||||
--with-mumpsincdir=DIR Specify the directory for MUMPS includes.
|
||||
--with-mumpslibdir=DIR Specify the directory for MUMPS library.
|
||||
--with-umfpack=LIBNAME Specify the library name for UMFPACK and its support
|
||||
libraries. Default: "-lumfpack -lamd"
|
||||
--with-umfpackdir=DIR Specify the directory for UMFPACK library and
|
||||
includes.
|
||||
--with-umfpackincdir=DIR
|
||||
Specify the directory for UMFPACK includes.
|
||||
--with-umfpacklibdir=DIR
|
||||
Specify the directory for UMFPACK library.
|
||||
--with-superlu=LIBNAME Specify the library name for SUPERLU library.
|
||||
Default: "-lsuperlu"
|
||||
--with-superludir=DIR Specify the directory for SUPERLU library and
|
||||
includes.
|
||||
--with-superluincdir=DIR
|
||||
Specify the directory for SUPERLU includes.
|
||||
--with-superlulibdir=DIR
|
||||
Specify the directory for SUPERLU library.
|
||||
--with-superludist=LIBNAME
|
||||
Specify the libname for SUPERLUDIST library.
|
||||
Requires you also specify SuperLU. Default:
|
||||
"-lsuperlu_dist"
|
||||
--with-superludistdir=DIR
|
||||
Specify the directory for SUPERLUDIST library and
|
||||
includes.
|
||||
--with-superludistincdir=DIR
|
||||
Specify the directory for SUPERLUDIST includes.
|
||||
--with-superludistlibdir=DIR
|
||||
Specify the directory for SUPERLUDIST library.
|
||||
|
||||
Some influential environment variables:
|
||||
FC Fortran compiler command
|
||||
FCFLAGS Fortran compiler flags
|
||||
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
|
||||
nonstandard directory <lib dir>
|
||||
LIBS libraries to pass to the linker, e.g. -l<library>
|
||||
CC C compiler command
|
||||
CFLAGS C compiler flags
|
||||
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
|
||||
you have headers in a nonstandard directory <include dir>
|
||||
MPICC MPI C compiler command
|
||||
MPIFC MPI Fortran compiler command
|
||||
CPP C preprocessor
|
||||
|
||||
Use these variables to override the choices made by `configure' or to help
|
||||
it to find libraries and programs with nonstandard names/locations.
|
||||
|
||||
Report bugs to <bugreport@mld2p4.it>.
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For instance, if a user has built and installed PSBLAS 3.5 under the
|
||||
<code>/opt</code> directory and is
|
||||
using the SuiteSparse package (which includes UMFPACK), then MLD2P4
|
||||
might be configured with:
|
||||
</FONT></FONT></FONT><PRE>
|
||||
./configure --with-psblas=/opt/psblas-3.5/ \
|
||||
--with-umfpackincdir=/usr/include/suitesparse/
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
Once the configure script has completed execution, it will have
|
||||
generated the file <code>Make.inc</code> which will then be used by all
|
||||
Makefiles in the directory tree; this file will be copied in the
|
||||
install directory under the name <code>Make.inc.MLD2P4</code>.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To use the MUMPS solver package,
|
||||
the user has to add the appropriate options to the configure script;
|
||||
by default we are looking for the libraries
|
||||
<code>-ldmumps -lsmumps</code> <code> -lzmumps -lcmumps -mumps_common -lpord</code>.
|
||||
MUMPS often uses additional packages such as ScaLAPACK, ParMETIS,
|
||||
SCOTCH, as well as enabling OpenMP; in such cases it is necessary to
|
||||
add linker options with the <code>--with-extra-libs</code> configure option.
|
||||
</FONT></FONT></FONT>
|
||||
<P>
|
||||
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To build the library the user will now enter
|
||||
</FONT></FONT></FONT><PRE>
|
||||
make
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
|
||||
followed (optionally) by
|
||||
</FONT></FONT></FONT><PRE>
|
||||
make install
|
||||
</PRE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
|
||||
<!--Navigation Panel-->
|
||||
<A NAME="tex2html192"
|
||||
HREF="node10.html">
|
||||
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
||||
<A NAME="tex2html188"
|
||||
HREF="node6.html">
|
||||
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
||||
<A NAME="tex2html182"
|
||||
HREF="node8.html">
|
||||
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
||||
<A NAME="tex2html190"
|
||||
HREF="node2.html">
|
||||
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
||||
<BR>
|
||||
<B> Next:</B> <A NAME="tex2html193"
|
||||
HREF="node10.html">Bug reporting</A>
|
||||
<B> Up:</B> <A NAME="tex2html189"
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<B> Previous:</B> <A NAME="tex2html183"
|
||||
HREF="node8.html">Optional third party libraries</A>
|
||||
<B> <A NAME="tex2html191"
|
||||
HREF="node2.html">Contents</A></B>
|
||||
<!--End of Navigation Panel-->
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+49
-44
@@ -98,70 +98,75 @@ July 31, 2017
|
||||
HREF="node3.html">General Overview</A>
|
||||
<LI><A NAME="tex2html29"
|
||||
HREF="node4.html">Code Distribution</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html30"
|
||||
HREF="node5.html">Configuring and Building MLD2P4</A>
|
||||
<UL>
|
||||
HREF="node5.html">Contributors</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html31"
|
||||
HREF="node6.html">Prerequisites</A>
|
||||
HREF="node6.html">Configuring and Building MLD2P4</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html32"
|
||||
HREF="node7.html">Optional third party libraries</A>
|
||||
HREF="node7.html">Prerequisites</A>
|
||||
<LI><A NAME="tex2html33"
|
||||
HREF="node8.html">Configuration options</A>
|
||||
HREF="node8.html">Optional third party libraries</A>
|
||||
<LI><A NAME="tex2html34"
|
||||
HREF="node9.html">Bug reporting</A>
|
||||
HREF="node9.html">Configuration options</A>
|
||||
<LI><A NAME="tex2html35"
|
||||
HREF="node10.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node10.html">Bug reporting</A>
|
||||
<LI><A NAME="tex2html36"
|
||||
HREF="node11.html">Multigrid Background</A>
|
||||
<UL>
|
||||
HREF="node11.html">Example and test programs</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html37"
|
||||
HREF="node12.html">AMG preconditioners</A>
|
||||
HREF="node12.html">Multigrid Background</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html38"
|
||||
HREF="node13.html">Smoothed Aggregation</A>
|
||||
HREF="node13.html">AMG preconditioners</A>
|
||||
<LI><A NAME="tex2html39"
|
||||
HREF="node14.html">Smoothers and coarsest-level solvers</A>
|
||||
</UL>
|
||||
<BR>
|
||||
HREF="node14.html">Smoothed Aggregation</A>
|
||||
<LI><A NAME="tex2html40"
|
||||
HREF="node15.html">Getting Started</A>
|
||||
<UL>
|
||||
HREF="node15.html">Smoothers and coarsest-level solvers</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html41"
|
||||
HREF="node16.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html42"
|
||||
HREF="node17.html">User Interface</A>
|
||||
HREF="node16.html">Getting Started</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html43"
|
||||
HREF="node18.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html44"
|
||||
HREF="node19.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html45"
|
||||
HREF="node20.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html46"
|
||||
HREF="node21.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html47"
|
||||
HREF="node22.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html48"
|
||||
HREF="node23.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html49"
|
||||
HREF="node24.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html50"
|
||||
HREF="node25.html">Subroutine descr</A>
|
||||
<LI><A NAME="tex2html42"
|
||||
HREF="node17.html">Examples</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html43"
|
||||
HREF="node18.html">User Interface</A>
|
||||
<UL>
|
||||
<LI><A NAME="tex2html44"
|
||||
HREF="node19.html">Subroutine init</A>
|
||||
<LI><A NAME="tex2html45"
|
||||
HREF="node20.html">Subroutine set</A>
|
||||
<LI><A NAME="tex2html46"
|
||||
HREF="node21.html">Subroutine build</A>
|
||||
<LI><A NAME="tex2html47"
|
||||
HREF="node22.html">Subroutine hierarchy_build</A>
|
||||
<LI><A NAME="tex2html48"
|
||||
HREF="node23.html">Subroutine smoothers_build</A>
|
||||
<LI><A NAME="tex2html49"
|
||||
HREF="node24.html">Subroutine apply</A>
|
||||
<LI><A NAME="tex2html50"
|
||||
HREF="node25.html">Subroutine free</A>
|
||||
<LI><A NAME="tex2html51"
|
||||
HREF="node26.html">Adding new smoother and solver objects to MLD2P4</A>
|
||||
HREF="node26.html">Subroutine descr</A>
|
||||
</UL>
|
||||
<BR>
|
||||
<LI><A NAME="tex2html52"
|
||||
HREF="node27.html">Error Handling</A>
|
||||
HREF="node27.html">Adding new smoother and solver objects to MLD2P4</A>
|
||||
<LI><A NAME="tex2html53"
|
||||
HREF="node28.html">License</A>
|
||||
HREF="node28.html">Error Handling</A>
|
||||
<LI><A NAME="tex2html54"
|
||||
HREF="node29.html">Bibliography</A>
|
||||
HREF="node29.html">License</A>
|
||||
<LI><A NAME="tex2html55"
|
||||
HREF="node30.html">About this document ...</A>
|
||||
HREF="node30.html">Bibliography</A>
|
||||
<LI><A NAME="tex2html56"
|
||||
HREF="node31.html">About this document ...</A>
|
||||
</UL>
|
||||
<!--End of Table of Child-Links-->
|
||||
<BR><HR>
|
||||
|
||||
+1394
-1359
File diff suppressed because it is too large
Load Diff
@@ -14,8 +14,6 @@ terms: {\small
|
||||
(C) Copyright 2008, 2010, 2012, 2017
|
||||
|
||||
Salvatore Filippone Cranfield University, Cranfield, UK
|
||||
Ambra Abdullahi Hassan University of Rome Tor Vergata, Rome, IT
|
||||
Alfredo Buttari CNRS-IRIT, Toulouse, FR
|
||||
Pasqua D'Ambra IAC-CNR, Naples, IT
|
||||
Daniela di Serafino University of Campania L. Vanvitelli, Caserta, IT
|
||||
|
||||
|
||||
Reference in New Issue
Block a user