Changes to docs to highlight new stuff in MLD internals.

stopcriterion
Salvatore Filippone 7 years ago
parent 5783117209
commit 46355253a5

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>userhtml</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -22,7 +18,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html25"
HREF="node1.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
@ -37,30 +34,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
&nbsp; <B> <A NAME="tex2html24"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<FONT SIZE="+2"><B>MLD2P4
<BIG CLASS="XXLARGE"><B>MLD2P4
<BR>
<BR>
User's and Reference Guide</B></FONT>
<BR><I><FONT SIZE="+1">A guide for the MultiLevel Domain Decomposition
User's and Reference Guide</B></BIG>
<BR><SPAN CLASS="textit"><BIG CLASS="LARGE">A guide for the MultiLevel Domain Decomposition
Parallel Preconditioners Package
based on PSBLAS</FONT></I>
based on PSBLAS</BIG></SPAN>
<BR>
<BR>
<BR>
<BR><FONT SIZE="+1"><B>Pasqua D'Ambra</B></FONT>
<BR><FONT SIZE="+1">IAC-CNR, Naples, Italy
<BR><BIG CLASS="LARGE"><B>Pasqua D'Ambra</B></BIG>
<BR><BIG CLASS="LARGE">IAC-CNR, Naples, Italy
<BR>
<BR>
<BR>
<BR><FONT SIZE="+1"><B>Daniela di Serafino</B></FONT>
<BR><FONT SIZE="+1">University of Campania ``Luigi Vanvitelli'', Caserta, Italy
<BR><BIG CLASS="LARGE"><B>Daniela di Serafino</B></BIG>
<BR><BIG CLASS="LARGE">University of Campania &ldquo;Luigi Vanvitelli&rdquo;, Caserta, Italy
<BR>
<BR>
<BR>
<BR><FONT SIZE="+1"><B>Salvatore Filippone</B></FONT>
<BR><FONT SIZE="+1">Cranfield University, Cranfield, United Kingdom
<BR><BIG CLASS="LARGE"><B>Salvatore Filippone</B></BIG>
<BR><BIG CLASS="LARGE">Cranfield University, Cranfield, United Kingdom
<BR>
<BR>
<BR>
@ -78,18 +75,18 @@ July 31, 2017
<BR>
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG></BIG>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"></A>
<UL>
<UL CLASS="ChildLinks">
<LI><A NAME="tex2html27"
HREF="node1.html">Abstract</A>
<LI><A NAME="tex2html28"
@ -140,33 +137,47 @@ July 31, 2017
HREF="node18.html">User Interface</A>
<UL>
<LI><A NAME="tex2html45"
HREF="node19.html">Subroutine init</A>
HREF="node19.html">Method init</A>
<LI><A NAME="tex2html46"
HREF="node20.html">Subroutine set</A>
HREF="node20.html">Method set</A>
<LI><A NAME="tex2html47"
HREF="node21.html">Subroutine build</A>
HREF="node21.html">Method hierarchy_build</A>
<LI><A NAME="tex2html48"
HREF="node22.html">Subroutine hierarchy_build</A>
HREF="node22.html">Method smoothers_build</A>
<LI><A NAME="tex2html49"
HREF="node23.html">Subroutine smoothers_build</A>
HREF="node23.html">Method build</A>
<LI><A NAME="tex2html50"
HREF="node24.html">Subroutine apply</A>
HREF="node24.html">Method apply</A>
<LI><A NAME="tex2html51"
HREF="node25.html">Subroutine free</A>
HREF="node25.html">Method free</A>
<LI><A NAME="tex2html52"
HREF="node26.html">Subroutine descr</A>
</UL>
<BR>
HREF="node26.html">Method descr</A>
<LI><A NAME="tex2html53"
HREF="node27.html">Adding new smoother and solver objects to MLD2P4</A>
HREF="node27.html">Auxiliary Methods</A>
<UL>
<LI><A NAME="tex2html54"
HREF="node28.html">Error Handling</A>
HREF="node28.html">Method: dump</A>
<LI><A NAME="tex2html55"
HREF="node29.html">License</A>
HREF="node29.html">Method: clone</A>
<LI><A NAME="tex2html56"
HREF="node30.html">Bibliography</A>
HREF="node30.html">Method: sizeof</A>
<LI><A NAME="tex2html57"
HREF="node31.html">About this document ...</A>
HREF="node31.html">Method: allocate_wrk</A>
<LI><A NAME="tex2html58"
HREF="node32.html">Method: free_wrk</A>
</UL>
</UL>
<BR>
<LI><A NAME="tex2html59"
HREF="node33.html">Adding new smoother and solver objects to MLD2P4</A>
<LI><A NAME="tex2html60"
HREF="node34.html">Error Handling</A>
<LI><A NAME="tex2html61"
HREF="node35.html">License</A>
<LI><A NAME="tex2html62"
HREF="node36.html">Bibliography</A>
<LI><A NAME="tex2html63"
HREF="node37.html">About this document ...</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Abstract</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,35 +21,36 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html68"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html74"
HREF="node2.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html64"
<A NAME="tex2html70"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html58"
<A NAME="tex2html64"
HREF="userhtml.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html66"
<A NAME="tex2html72"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html69"
<B> Next:</B> <A NAME="tex2html75"
HREF="node2.html">Contents</A>
<B> Up:</B> <A NAME="tex2html65"
<B> Up:</B> <A NAME="tex2html71"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html59"
<B> Previous:</B> <A NAME="tex2html65"
HREF="userhtml.html">userhtml</A>
&nbsp; <B> <A NAME="tex2html67"
&nbsp; <B> <A NAME="tex2html73"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00010000000000000000">
Abstract</A>
</H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
MLD2P4 (M<SMALL>ULTI</SMALL>L<SMALL>EVEL </SMALL>D<SMALL>OMAIN </SMALL>D<SMALL>ECOMPOSITION </SMALL>P<SMALL>ARALLEL </SMALL>P<SMALL>RECONDITIONERS </SMALL>P<SMALL>ACKAGE
BASED ON </SMALL>PSBLAS) is a package of parallel algebraic multilevel preconditioners.
@ -64,55 +61,56 @@ multigrid methods. In the multilevel case, a purely algebraic approach is applie
generate coarse-level corrections, so that no geometric background is needed
concerning the matrix to be preconditioned. The matrix is assumed to be square,
real or complex.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 has been designed to provide scalable and easy-to-use preconditioners
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">MLD2P4 has been designed to provide scalable and easy-to-use preconditioners
in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)
computational framework and can be used in conjuction with the Krylov solvers
available in this framework. MLD2P4 enables the user to easily specify different
features of an algebraic multilevel preconditioner, thus allowing to search
for the ``best'' preconditioner for the problem at hand.
</FONT></FONT></FONT>
for the &ldquo;best&rdquo; preconditioner for the problem at hand.
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The package employs object-oriented design techniques in
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The package employs object-oriented design techniques in
Fortran&nbsp;2003, with interfaces to additional third party libraries
such as MUMPS, UMFPACK, SuperLU, and SuperLU_Dist, which
can be exploited in building multilevel preconditioners. The parallel
implementation is based on a Single Program Multiple Data (SPMD)
paradigm; the inter-process communication is based on MPI and
is managed mainly through PSBLAS.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">This guide provides a brief description of the functionalities and
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">This guide provides a brief description of the functionalities and
the user interface of MLD2P4.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
</FONT></FONT></FONT><HR>
</BIG></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html68"
<A NAME="tex2html74"
HREF="node2.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html64"
<A NAME="tex2html70"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html58"
<A NAME="tex2html64"
HREF="userhtml.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html66"
<A NAME="tex2html72"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html69"
<B> Next:</B> <A NAME="tex2html75"
HREF="node2.html">Contents</A>
<B> Up:</B> <A NAME="tex2html65"
<B> Up:</B> <A NAME="tex2html71"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html59"
<B> Previous:</B> <A NAME="tex2html65"
HREF="userhtml.html">userhtml</A>
&nbsp; <B> <A NAME="tex2html67"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html73"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Bug reporting</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,35 +21,36 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html205"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html212"
HREF="node11.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html201"
<A NAME="tex2html208"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html195"
<A NAME="tex2html202"
HREF="node9.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html203"
<A NAME="tex2html210"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html206"
<B> Next:</B> <A NAME="tex2html213"
HREF="node11.html">Example and test programs</A>
<B> Up:</B> <A NAME="tex2html202"
<B> Up:</B> <A NAME="tex2html209"
HREF="node6.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html196"
<B> Previous:</B> <A NAME="tex2html203"
HREF="node9.html">Configuration options</A>
&nbsp; <B> <A NAME="tex2html204"
&nbsp; <B> <A NAME="tex2html211"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00054000000000000000">
Bug reporting</A>
</H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
If you find any bugs in our codes, please report them through our
issues page on <BR><TT><A NAME="tex2html9"
HREF="https://github.com/sfilippone/mld2p4-2/issues">https://github.com/sfilippone/mld2p4-2/issues</A></TT>
@ -61,9 +58,9 @@ issues page on <BR><TT><A NAME="tex2html9"
To enable us to track the bug, please provide a log from the failing
application, the test conditions, and ideally a self-contained test
program reproducing the issue.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Example and test programs</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -24,40 +20,41 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html215"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html222"
HREF="node12.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html211"
<A NAME="tex2html218"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html207"
<A NAME="tex2html214"
HREF="node10.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html213"
<A NAME="tex2html220"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html216"
<B> Next:</B> <A NAME="tex2html223"
HREF="node12.html">Multigrid Background</A>
<B> Up:</B> <A NAME="tex2html212"
<B> Up:</B> <A NAME="tex2html219"
HREF="node6.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html208"
<B> Previous:</B> <A NAME="tex2html215"
HREF="node10.html">Bug reporting</A>
&nbsp; <B> <A NAME="tex2html214"
&nbsp; <B> <A NAME="tex2html221"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00055000000000000000"></A><A NAME="sec:ex_and_test"></A>
<BR>
Example and test programs
</H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
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>
</BIG></BIG></BIG><DL>
<DT><STRONG><TT>examples</TT></STRONG></DT>
<DD>contains a set of simple example programs with a
predefined choice of preconditioners, selectable via integer
@ -70,13 +67,13 @@ both of them are further divided into <code>fileread</code> and
subdirectories, to experiment with the full range of preconditioners
implemented in the package.
</DD>
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</DL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
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>
</BIG></BIG></BIG>
<BR><HR>
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Multigrid Background</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,49 +21,50 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html227"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html234"
HREF="node13.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html223"
<A NAME="tex2html230"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html217"
<A NAME="tex2html224"
HREF="node11.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html225"
<A NAME="tex2html232"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html228"
<B> Next:</B> <A NAME="tex2html235"
HREF="node13.html">AMG preconditioners</A>
<B> Up:</B> <A NAME="tex2html224"
<B> Up:</B> <A NAME="tex2html231"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html218"
<B> Previous:</B> <A NAME="tex2html225"
HREF="node11.html">Example and test programs</A>
&nbsp; <B> <A NAME="tex2html226"
&nbsp; <B> <A NAME="tex2html233"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00060000000000000000"></A><A NAME="sec:background"></A>
<BR>
Multigrid Background
</H1><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Multigrid preconditioners, coupled with Krylov iterative
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Multigrid preconditioners are based on a recursive application of a two-grid process
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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.
@ -90,75 +87,76 @@ interplay between fine and coarse levels, e.g., when matrices with highly varyin
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>
HREF="node36.html#Briggs2000">3</A>,<A
HREF="node36.html#Stuben_01">23</A>,<A
HREF="node36.html#dd2_96">21</A>] for details.)
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 uses a pure algebraic approach, based on the smoothed
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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>],
HREF="node36.html#BREZINA_VANEK">2</A>,<A
HREF="node36.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>].
HREF="node36.html#TUMINARO_TONG">24</A>].
A brief description of the AMG preconditioners implemented in MLD2P4 is given in
Sections&nbsp;<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>
HREF="node36.html#para_04">4</A>,<A
HREF="node36.html#aaecc_07">5</A>,<A
HREF="node36.html#apnum_07">7</A>,<A
HREF="node36.html#MLD2P4_TOMS">8</A>].
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We note that optimal multigrid preconditioners do not necessarily correspond
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html229"
<UL CLASS="ChildLinks">
<LI><A NAME="tex2html236"
HREF="node13.html">AMG preconditioners</A>
<LI><A NAME="tex2html230"
<LI><A NAME="tex2html237"
HREF="node14.html">Smoothed Aggregation</A>
<LI><A NAME="tex2html231"
<LI><A NAME="tex2html238"
HREF="node15.html">Smoothers and coarsest-level solvers</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html227"
<A NAME="tex2html234"
HREF="node13.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html223"
<A NAME="tex2html230"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html217"
<A NAME="tex2html224"
HREF="node11.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html225"
<A NAME="tex2html232"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html228"
<B> Next:</B> <A NAME="tex2html235"
HREF="node13.html">AMG preconditioners</A>
<B> Up:</B> <A NAME="tex2html224"
<B> Up:</B> <A NAME="tex2html231"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html218"
<B> Previous:</B> <A NAME="tex2html225"
HREF="node11.html">Example and test programs</A>
&nbsp; <B> <A NAME="tex2html226"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html233"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>AMG preconditioners</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,48 +21,50 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html242"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html249"
HREF="node14.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html238"
<A NAME="tex2html245"
HREF="node12.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html232"
<A NAME="tex2html239"
HREF="node12.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html240"
<A NAME="tex2html247"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html243"
<B> Next:</B> <A NAME="tex2html250"
HREF="node14.html">Smoothed Aggregation</A>
<B> Up:</B> <A NAME="tex2html239"
<B> Up:</B> <A NAME="tex2html246"
HREF="node12.html">Multigrid Background</A>
<B> Previous:</B> <A NAME="tex2html233"
<B> Previous:</B> <A NAME="tex2html240"
HREF="node12.html">Multigrid Background</A>
&nbsp; <B> <A NAME="tex2html241"
&nbsp; <B> <A NAME="tex2html248"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00061000000000000000"></A><A NAME="sec:multilevel"></A>
<BR>
AMG preconditioners
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to describe the AMG preconditioners available in MLD2P4, we consider a
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">In order to describe the AMG preconditioners available in MLD2P4, we consider a
linear system
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<BR>
<DIV ALIGN="RIGHT">
<DIV ALIGN="RIGHT" CLASS="mathdisplay">
<!-- MATH
\begin{equation}
Ax=b,
\end{equation}
-->
<A NAME="eq:system"></A>
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:system"></A><IMG
WIDTH="58" HEIGHT="30" BORDER="0"
@ -74,40 +72,40 @@ Ax=b,
ALT="\begin{displaymath}
Ax=b,
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(2)</TD></TR>
<TD CLASS="eqno" WIDTH=10 ALIGN="RIGHT">
(<SPAN CLASS="arabic">2</SPAN>)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<BR CLEAR="ALL"></DIV><P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
where <!-- MATH
$A=(a_{ij}) \in \mathbb{R}^{n \times n}$
-->
<IMG
<SPAN CLASS="MATH"><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
ALT="$A=(a_{ij}) \in \mathbb{R}^{n \times n}$"></SPAN> is a nonsingular sparse matrix;
for ease of presentation we assume <SPAN CLASS="MATH"><IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img3.png"
ALT="$A$"> has a symmetric sparsity
ALT="$A$"></SPAN> has a symmetric sparsity
pattern.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Let us consider as finest index space the set of row (column) indices of <IMG
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Let us consider as finest index space the set of row (column) indices of <SPAN CLASS="MATH"><IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img3.png"
ALT="$A$">, i.e.,
ALT="$A$"></SPAN>, i.e.,
<!-- MATH
$\Omega = \{1, 2, \ldots, n\}$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="132" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img6.png"
ALT="$\Omega = \{1, 2, \ldots, n\}$">.
ALT="$\Omega = \{1, 2, \ldots, n\}$"></SPAN>.
Any algebraic multilevel preconditioners implemented in MLD2P4 generates
a hierarchy of index spaces and a corresponding hierarchy of matrices,
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<BR><P></P>
<DIV ALIGN="CENTER">
<DIV ALIGN="CENTER" CLASS="mathdisplay">
<!-- MATH
\begin{displaymath}
\Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev},
@ -121,49 +119,49 @@ a hierarchy of index spaces and a corresponding hierarchy of matrices,
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
<P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
by using the information contained in <SPAN CLASS="MATH"><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
ALT="$A$"></SPAN>, without assuming any
knowledge of the geometry of the problem from which <SPAN CLASS="MATH"><IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img3.png"
ALT="$A$"> originates.
ALT="$A$"></SPAN> originates.
A vector space <!-- MATH
$\mathbb{R}^{n_{k}}$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="33" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img8.png"
ALT="$\mathbb{R}^{n_{k}}$"> is associated with <IMG
ALT="$\mathbb{R}^{n_{k}}$"></SPAN> is associated with <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\Omega^k$">,
where <IMG
ALT="$\Omega^k$"></SPAN>,
where <SPAN CLASS="MATH"><IMG
WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img10.png"
ALT="$n_k$"> is the size of <IMG
ALT="$n_k$"></SPAN> is the size of <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\Omega^k$">.
For all <IMG
ALT="$\Omega^k$"></SPAN>.
For all <SPAN CLASS="MATH"><IMG
WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img11.png"
ALT="$k &lt; nlev$">, a restriction operator and a prolongation one are built,
which connect two levels <IMG
ALT="$k &lt; nlev$"></SPAN>, a restriction operator and a prolongation one are built,
which connect two levels <SPAN CLASS="MATH"><IMG
WIDTH="14" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img12.png"
ALT="$k$"> and <IMG
ALT="$k$"></SPAN> and <SPAN CLASS="MATH"><IMG
WIDTH="44" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img13.png"
ALT="$k+1$">:
</FONT></FONT></FONT>
ALT="$k+1$"></SPAN>:
</BIG></BIG></BIG>
<BR><P></P>
<DIV ALIGN="CENTER">
<DIV ALIGN="CENTER" CLASS="mathdisplay">
<!-- MATH
\begin{displaymath}
P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad
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}
-->
@ -174,15 +172,15 @@ P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad
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
<P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
the matrix <SPAN CLASS="MATH"><IMG
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img15.png"
ALT="$A^{k+1}$"> is computed by using the previous operators according
ALT="$A^{k+1}$"></SPAN> is computed by using the previous operators according
to the Galerkin approach, i.e.,
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<BR><P></P>
<DIV ALIGN="CENTER">
<DIV ALIGN="CENTER" CLASS="mathdisplay">
<!-- MATH
\begin{displaymath}
A^{k+1}=R^kA^kP^k.
@ -195,34 +193,34 @@ A^{k+1}=R^kA^kP^k.
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
<P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
In the current implementation of MLD2P4 we have <SPAN CLASS="MATH"><IMG
WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img17.png"
ALT="$R^k=(P^k)^T$">
A smoother with iteration matrix <IMG
ALT="$R^k=(P^k)^T$"></SPAN>
A smoother with iteration matrix <SPAN CLASS="MATH"><IMG
WIDTH="32" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img18.png"
ALT="$M^k$"> is set up at each level <IMG
ALT="$M^k$"></SPAN> is set up at each level <SPAN CLASS="MATH"><IMG
WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img11.png"
ALT="$k &lt; nlev$">, and a solver
ALT="$k &lt; nlev$"></SPAN>, 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
(for example, setting up a solver based on the <SPAN CLASS="MATH"><IMG
WIDTH="30" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img19.png"
ALT="$LU$"> factorization means computing
and storing the <IMG
ALT="$LU$"></SPAN> factorization means computing
and storing the <SPAN CLASS="MATH"><IMG
WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$L$"> and <IMG
ALT="$L$"></SPAN> and <SPAN CLASS="MATH"><IMG
WIDTH="18" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png"
ALT="$U$"> factors). The construction of the hierarchy of AMG components
ALT="$U$"></SPAN> 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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><A NAME="fig:application_alg"></A><A NAME="524"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
@ -259,53 +257,54 @@ end
</DIV></TD></TR>
</TABLE>
</DIV>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The components produced in the build phase may be combined in several ways
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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
of type <SPAN CLASS="MATH"><IMG
WIDTH="82" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img23.png"
ALT="$w=B^{-1}v$">, where <IMG
ALT="$w=B^{-1}v$"></SPAN>, where <SPAN CLASS="MATH"><IMG
WIDTH="19" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img24.png"
ALT="$B$"> denotes the preconditioner, usually within an iteration
ALT="$B$"></SPAN> 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
HREF="node36.html#Saad_book">20</A>]. An example of such a combination, known as
V-cycle, is given in Figure&nbsp;<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&nbsp;[<A
HREF="node30.html#Briggs2000">3</A>], and a version of the K-cycle described
HREF="node36.html#Briggs2000">3</A>], and a version of the K-cycle described
in&nbsp;[<A
HREF="node30.html#Notay2008">19</A>].
</FONT></FONT></FONT>
HREF="node36.html#Notay2008">19</A>].
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html242"
<A NAME="tex2html249"
HREF="node14.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html238"
<A NAME="tex2html245"
HREF="node12.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html232"
<A NAME="tex2html239"
HREF="node12.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html240"
<A NAME="tex2html247"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html243"
<B> Next:</B> <A NAME="tex2html250"
HREF="node14.html">Smoothed Aggregation</A>
<B> Up:</B> <A NAME="tex2html239"
<B> Up:</B> <A NAME="tex2html246"
HREF="node12.html">Multigrid Background</A>
<B> Previous:</B> <A NAME="tex2html233"
<B> Previous:</B> <A NAME="tex2html240"
HREF="node12.html">Multigrid Background</A>
&nbsp; <B> <A NAME="tex2html241"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html248"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Smoothed Aggregation</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,130 +21,132 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html254"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html261"
HREF="node15.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html250"
<A NAME="tex2html257"
HREF="node12.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html244"
<A NAME="tex2html251"
HREF="node13.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html252"
<A NAME="tex2html259"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html255"
<B> Next:</B> <A NAME="tex2html262"
HREF="node15.html">Smoothers and coarsest-level solvers</A>
<B> Up:</B> <A NAME="tex2html251"
<B> Up:</B> <A NAME="tex2html258"
HREF="node12.html">Multigrid Background</A>
<B> Previous:</B> <A NAME="tex2html245"
<B> Previous:</B> <A NAME="tex2html252"
HREF="node13.html">AMG preconditioners</A>
&nbsp; <B> <A NAME="tex2html253"
&nbsp; <B> <A NAME="tex2html260"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00062000000000000000"></A><A NAME="sec:aggregation"></A>
<BR>
Smoothed Aggregation
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to define the prolongator <IMG
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">In order to define the prolongator <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img25.png"
ALT="$P^k$">, used to compute
the coarse-level matrix <IMG
ALT="$P^k$"></SPAN>, used to compute
the coarse-level matrix <SPAN CLASS="MATH"><IMG
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img15.png"
ALT="$A^{k+1}$">, MLD2P4 uses the smoothed aggregation
ALT="$A^{k+1}$"></SPAN>, 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>].
HREF="node36.html#BREZINA_VANEK">2</A>,<A
HREF="node36.html#VANEK_MANDEL_BREZINA">25</A>].
The basic idea of this algorithm is to build a coarse set of indices
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img26.png"
ALT="$\Omega^{k+1}$"> by suitably grouping the indices of <IMG
ALT="$\Omega^{k+1}$"></SPAN> by suitably grouping the indices of <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\Omega^k$"> into disjoint
ALT="$\Omega^k$"></SPAN> into disjoint
subsets (aggregates), and to define the coarse-to-fine space transfer operator
<IMG
<SPAN CLASS="MATH"><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
ALT="$P^k$"></SPAN> 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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Three main steps can be identified in the smoothed aggregation procedure:
</FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Three main steps can be identified in the smoothed aggregation procedure:
</BIG></BIG></BIG>
<OL>
<LI>aggregation of the indices of <IMG
<LI>aggregation of the indices of <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\Omega^k$"> to obtain <IMG
ALT="$\Omega^k$"></SPAN> to obtain <SPAN CLASS="MATH"><IMG
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img26.png"
ALT="$\Omega^{k+1}$">;
ALT="$\Omega^{k+1}$"></SPAN>;
</LI>
<LI>construction of the prolongator <IMG
<LI>construction of the prolongator <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img25.png"
ALT="$P^k$">;
ALT="$P^k$"></SPAN>;
</LI>
<LI>application of <IMG
<LI>application of <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img25.png"
ALT="$P^k$"> and <IMG
ALT="$P^k$"></SPAN> and <SPAN CLASS="MATH"><IMG
WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img17.png"
ALT="$R^k=(P^k)^T$"> to build <IMG
ALT="$R^k=(P^k)^T$"></SPAN> to build <SPAN CLASS="MATH"><IMG
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img15.png"
ALT="$A^{k+1}$">.
ALT="$A^{k+1}$"></SPAN>.
</LI>
</OL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</OL><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to perform the coarsening step, the smoothed aggregation algorithm
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">In order to perform the coarsening step, the smoothed aggregation algorithm
described in&nbsp;[<A
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>] is used. In this algorithm,
HREF="node36.html#VANEK_MANDEL_BREZINA">25</A>] is used. In this algorithm,
each index <!-- MATH
$j \in \Omega^{k+1}$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="72" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img27.png"
ALT="$j \in \Omega^{k+1}$"> corresponds to an aggregate <IMG
ALT="$j \in \Omega^{k+1}$"></SPAN> corresponds to an aggregate <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img28.png"
ALT="$\Omega^k_j$"> of <IMG
ALT="$\Omega^k_j$"></SPAN> of <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\Omega^k$">,
ALT="$\Omega^k$"></SPAN>,
consisting of a suitably chosen index <!-- MATH
$i \in \Omega^k$
-->
<IMG
<SPAN CLASS="MATH"><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
ALT="$i \in \Omega^k$"></SPAN> and indices that are (usually) contained in a
strongly-coupled neighborood of <SPAN CLASS="MATH"><IMG
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img30.png"
ALT="$i$">, i.e.,
</FONT></FONT></FONT>
ALT="$i$"></SPAN>, i.e.,
</BIG></BIG></BIG>
<BR>
<DIV ALIGN="RIGHT">
<DIV ALIGN="RIGHT" CLASS="mathdisplay">
<!-- MATH
\begin{equation}
\Omega^k_j \subset \mathcal{N}_i^k(\theta) =
\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}
-->
<A NAME="eq:strongly_coup"></A>
<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"
@ -156,59 +154,60 @@ strongly-coupled neighborood of <IMG
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>
<TD CLASS="eqno" WIDTH=10 ALIGN="RIGHT">
(<SPAN CLASS="arabic">3</SPAN>)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<BR CLEAR="ALL"></DIV><P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
for a given threshold <!-- MATH
$\theta \in [0,1]$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="69" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img32.png"
ALT="$\theta \in [0,1]$"> (see&nbsp;[<A
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>] for the details).
ALT="$\theta \in [0,1]$"></SPAN> (see&nbsp;[<A
HREF="node36.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
of the matrix <SPAN CLASS="MATH"><IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img3.png"
ALT="$A$">. Nevertheless, this parallel algorithm has been chosen for
ALT="$A$"></SPAN>. 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>
HREF="node36.html#aaecc_07">5</A>,<A
HREF="node36.html#apnum_07">7</A>,<A
HREF="node36.html#TUMINARO_TONG">24</A>].
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The prolongator <IMG
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The prolongator <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img25.png"
ALT="$P^k$"> is built starting from a tentative prolongator
ALT="$P^k$"></SPAN> is built starting from a tentative prolongator
<!-- MATH
$\bar{P}^k \in \mathbb{R}^{n_k \times n_{k+1}}$
-->
<IMG
<SPAN CLASS="MATH"><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>
ALT="$\bar{P}^k \in \mathbb{R}^{n_k \times n_{k+1}}$"></SPAN>, defined as
</BIG></BIG></BIG>
<BR>
<DIV ALIGN="RIGHT">
<DIV ALIGN="RIGHT" CLASS="mathdisplay">
<!-- MATH
\begin{equation}
\bar{P}^k =(\bar{p}_{ij}^k), \quad \bar{p}_{ij}^k =
\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}
-->
<A NAME="eq:tent_prol"></A>
<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"
@ -216,41 +215,41 @@ MLD2P4, since it has been shown to produce good results in practice
ALT="\begin{displaymath} \bar{P}^k =(\bar{p}_{ij}^k), \quad \bar{p}_{ij}^k = \left\{...
...ega^k_j, 0 &amp; \quad \mbox{otherwise}, \end{array} \right.
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(4)</TD></TR>
<TD CLASS="eqno" WIDTH=10 ALIGN="RIGHT">
(<SPAN CLASS="arabic">4</SPAN>)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
where <IMG
<BR CLEAR="ALL"></DIV><P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
where <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img28.png"
ALT="$\Omega^k_j$"> is the aggregate of <IMG
ALT="$\Omega^k_j$"></SPAN> is the aggregate of <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\Omega^k$">
ALT="$\Omega^k$"></SPAN>
corresponding to the index <!-- MATH
$j \in \Omega^{k+1}$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="72" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img27.png"
ALT="$j \in \Omega^{k+1}$">.
<IMG
ALT="$j \in \Omega^{k+1}$"></SPAN>.
<SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img25.png"
ALT="$P^k$"> is obtained by applying to <IMG
ALT="$P^k$"></SPAN> is obtained by applying to <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img35.png"
ALT="$\bar{P}^k$"> a smoother
ALT="$\bar{P}^k$"></SPAN> a smoother
<!-- MATH
$S^k \in \mathbb{R}^{n_k \times n_k}$
-->
<IMG
<SPAN CLASS="MATH"><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>
ALT="$S^k \in \mathbb{R}^{n_k \times n_k}$"></SPAN>:
</BIG></BIG></BIG>
<BR><P></P>
<DIV ALIGN="CENTER">
<DIV ALIGN="CENTER" CLASS="mathdisplay">
<!-- MATH
\begin{displaymath}
P^k = S^k \bar{P}^k,
@ -263,19 +262,19 @@ P^k = S^k \bar{P}^k,
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">
<P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
in order to remove nonsmooth components from the range of the prolongator,
and hence to improve the convergence properties of the multilevel
method&nbsp;[<A
HREF="node30.html#BREZINA_VANEK">2</A>,<A
HREF="node30.html#Stuben_01">23</A>].
A simple choice for <IMG
HREF="node36.html#BREZINA_VANEK">2</A>,<A
HREF="node36.html#Stuben_01">23</A>].
A simple choice for <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
SRC="img38.png"
ALT="$S^k$"> is the damped Jacobi smoother:
</FONT></FONT></FONT>
ALT="$S^k$"></SPAN> is the damped Jacobi smoother:
</BIG></BIG></BIG>
<BR><P></P>
<DIV ALIGN="CENTER">
<DIV ALIGN="CENTER" CLASS="mathdisplay">
<!-- MATH
\begin{displaymath}
S^k = I - \omega^k (D^k)^{-1} A^k_F ,
@ -288,24 +287,24 @@ S^k = I - \omega^k (D^k)^{-1} A^k_F ,
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
<P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
where <SPAN CLASS="MATH"><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
ALT="$D^k$"></SPAN> is the diagonal matrix with the same diagonal entries as <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img41.png"
ALT="$A^k$">,
ALT="$A^k$"></SPAN>,
<!-- MATH
$A^k_F = (\bar{a}_{ij}^k)$
-->
<IMG
<SPAN CLASS="MATH"><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>
ALT="$A^k_F = (\bar{a}_{ij}^k)$"></SPAN> is the filtered matrix defined as
</BIG></BIG></BIG>
<BR>
<DIV ALIGN="RIGHT">
<DIV ALIGN="RIGHT" CLASS="mathdisplay">
<!-- MATH
\begin{equation}
@ -319,6 +318,7 @@ where <IMG
\bar{a}_{ii}^k = a_{ii}^k - \sum_{j \ne i} (a_{ij}^k - \bar{a}_{ij}^k),
\end{equation}
-->
<A NAME="eq:filtered"></A>
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:filtered"></A><IMG
WIDTH="514" HEIGHT="74" BORDER="0"
@ -326,75 +326,76 @@ where <IMG
ALT="\begin{displaymath}
\bar{a}_{ij}^k = \left \{ \begin{array}{ll} a_{ij}^k &amp; ...
...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>
<TD CLASS="eqno" WIDTH=10 ALIGN="RIGHT">
(<SPAN CLASS="arabic">5</SPAN>)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
and <IMG
<BR CLEAR="ALL"></DIV><P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
and <SPAN CLASS="MATH"><IMG
WIDTH="24" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
SRC="img44.png"
ALT="$\omega^k$"> is an approximation of <IMG
ALT="$\omega^k$"></SPAN> is an approximation of <SPAN CLASS="MATH"><IMG
WIDTH="61" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img45.png"
ALT="$4/(3\rho^k)$">, where
<IMG
ALT="$4/(3\rho^k)$"></SPAN>, where
<SPAN CLASS="MATH"><IMG
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img46.png"
ALT="$\rho^k$"> is the spectral radius of <!-- MATH
ALT="$\rho^k$"></SPAN> is the spectral radius of <!-- MATH
$(D^k)^{-1}A^k_F$
-->
<IMG
<SPAN CLASS="MATH"><IMG
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>].
ALT="$(D^k)^{-1}A^k_F$"></SPAN> [<A
HREF="node36.html#BREZINA_VANEK">2</A>].
In MLD2P4 this approximation is obtained by using <!-- MATH
$\| A^k_F \|_\infty$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="61" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img48.png"
ALT="$\Vert A^k_F \Vert _\infty$"> as an estimate
of <IMG
ALT="$\Vert A^k_F \Vert _\infty$"></SPAN> as an estimate
of <SPAN CLASS="MATH"><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
ALT="$\rho^k$"></SPAN>. Note that for systems coming from uniformly elliptic
problems, filtering the matrix <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img41.png"
ALT="$A^k$"> has little or no effect, and
<IMG
ALT="$A^k$"></SPAN> has little or no effect, and
<SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img41.png"
ALT="$A^k$"> can be used instead of <IMG
ALT="$A^k$"></SPAN> can be used instead of <SPAN CLASS="MATH"><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>
ALT="$A^k_F$"></SPAN>. The latter choice is the default in MLD2P4.
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html254"
<A NAME="tex2html261"
HREF="node15.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html250"
<A NAME="tex2html257"
HREF="node12.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html244"
<A NAME="tex2html251"
HREF="node13.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html252"
<A NAME="tex2html259"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html255"
<B> Next:</B> <A NAME="tex2html262"
HREF="node15.html">Smoothers and coarsest-level solvers</A>
<B> Up:</B> <A NAME="tex2html251"
<B> Up:</B> <A NAME="tex2html258"
HREF="node12.html">Multigrid Background</A>
<B> Previous:</B> <A NAME="tex2html245"
<B> Previous:</B> <A NAME="tex2html252"
HREF="node13.html">AMG preconditioners</A>
&nbsp; <B> <A NAME="tex2html253"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html260"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Smoothers and coarsest-level solvers</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -24,119 +20,120 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html264"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html271"
HREF="node16.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html260"
<A NAME="tex2html267"
HREF="node12.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html256"
<A NAME="tex2html263"
HREF="node14.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html262"
<A NAME="tex2html269"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html265"
<B> Next:</B> <A NAME="tex2html272"
HREF="node16.html">Getting Started</A>
<B> Up:</B> <A NAME="tex2html261"
<B> Up:</B> <A NAME="tex2html268"
HREF="node12.html">Multigrid Background</A>
<B> Previous:</B> <A NAME="tex2html257"
<B> Previous:</B> <A NAME="tex2html264"
HREF="node14.html">Smoothed Aggregation</A>
&nbsp; <B> <A NAME="tex2html263"
&nbsp; <B> <A NAME="tex2html270"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00063000000000000000"></A><A NAME="sec:smoothers"></A>
<BR>
Smoothers and coarsest-level solvers
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The smoothers implemented in MLD2P4 include the Jacobi and block-Jacobi methods,
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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>
HREF="node36.html#Saad_book">20</A>,<A
HREF="node36.html#dd2_96">21</A>]).
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The hybrid Gauss-Seidel
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In the AS methods, the index space <IMG
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">In the AS methods, the index space <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\Omega^k$"> is divided into <IMG
ALT="$\Omega^k$"></SPAN> is divided into <SPAN CLASS="MATH"><IMG
WIDTH="28" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img50.png"
ALT="$m_k$">
subsets <IMG
ALT="$m_k$"></SPAN>
subsets <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img51.png"
ALT="$\Omega^k_i$"> of size <IMG
ALT="$\Omega^k_i$"></SPAN> of size <SPAN CLASS="MATH"><IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img52.png"
ALT="$n_{k,i}$">, possibly
overlapping. For each <IMG
ALT="$n_{k,i}$"></SPAN>, possibly
overlapping. For each <SPAN CLASS="MATH"><IMG
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img30.png"
ALT="$i$"> we consider the restriction
ALT="$i$"></SPAN> we consider the restriction
operator <!-- MATH
$R_i^k \in \mathbb{R}^{n_{k,i} \times n_k}$
-->
<IMG
<SPAN CLASS="MATH"><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
ALT="$R_i^k \in \mathbb{R}^{n_{k,i} \times n_k}$"></SPAN>
that maps a vector <SPAN CLASS="MATH"><IMG
WIDTH="23" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
SRC="img54.png"
ALT="$x^k$"> to the vector <IMG
ALT="$x^k$"></SPAN> to the vector <SPAN CLASS="MATH"><IMG
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img55.png"
ALT="$x_i^k$"> made of the components of <IMG
ALT="$x_i^k$"></SPAN> made of the components of <SPAN CLASS="MATH"><IMG
WIDTH="23" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
SRC="img54.png"
ALT="$x^k$">
with indices in <IMG
ALT="$x^k$"></SPAN>
with indices in <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img51.png"
ALT="$\Omega^k_i$">, and the prolongation operator
ALT="$\Omega^k_i$"></SPAN>, and the prolongation operator
<!-- MATH
$P^k_i = (R_i^k)^T$
-->
<IMG
<SPAN CLASS="MATH"><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
ALT="$P^k_i = (R_i^k)^T$"></SPAN>. These operators are then used to build
<!-- MATH
$A_i^k=R_i^kA^kP_i^k$
-->
<IMG
<SPAN CLASS="MATH"><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
ALT="$A_i^k=R_i^kA^kP_i^k$"></SPAN>, which is the restriction of <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img41.png"
ALT="$A^k$"> to the index
space <IMG
ALT="$A^k$"></SPAN> to the index
space <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img51.png"
ALT="$\Omega^k_i$">.
The classical AS preconditioner <IMG
ALT="$\Omega^k_i$"></SPAN>.
The classical AS preconditioner <SPAN CLASS="MATH"><IMG
WIDTH="41" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img58.png"
ALT="$M^k_{AS}$"> is defined as
</FONT></FONT></FONT>
ALT="$M^k_{AS}$"></SPAN> is defined as
</BIG></BIG></BIG>
<BR><P></P>
<DIV ALIGN="CENTER">
<DIV ALIGN="CENTER" CLASS="mathdisplay">
<!-- MATH
\begin{displaymath}
( M^k_{AS} )^{-1} = \sum_{i=1}^{m_k} P_i^k (A_i^k)^{-1} R_i^{k},
@ -149,98 +146,98 @@ The classical AS preconditioner <IMG
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
<P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
where <SPAN CLASS="MATH"><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
ALT="$A_i^k$"></SPAN> is supposed to be nonsingular. We observe that an approximate
inverse of <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img60.png"
ALT="$A_i^k$"> is usually considered instead of <IMG
ALT="$A_i^k$"></SPAN> is usually considered instead of <SPAN CLASS="MATH"><IMG
WIDTH="57" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img61.png"
ALT="$(A_i^k)^{-1}$">.
The setup of <IMG
ALT="$(A_i^k)^{-1}$"></SPAN>.
The setup of <SPAN CLASS="MATH"><IMG
WIDTH="41" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img58.png"
ALT="$M^k_{AS}$"> during the multilevel build phase
ALT="$M^k_{AS}$"></SPAN> during the multilevel build phase
involves
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<UL>
<LI>the definition of the index subspaces <IMG
<LI>the definition of the index subspaces <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img62.png"
ALT="$\Omega_i^k$"> and of the corresponding
operators <IMG
ALT="$\Omega_i^k$"></SPAN> and of the corresponding
operators <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img63.png"
ALT="$R_i^k$"> (and <IMG
ALT="$R_i^k$"></SPAN> (and <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img64.png"
ALT="$P_i^k$">);
ALT="$P_i^k$"></SPAN>);
</LI>
<LI>the computation of the submatrices <IMG
<LI>the computation of the submatrices <SPAN CLASS="MATH"><IMG
WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img60.png"
ALT="$A_i^k$">;
ALT="$A_i^k$"></SPAN>;
</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">
</UL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
The computation of <!-- MATH
$z^k=M^k_{AS}w^k$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="102" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img65.png"
ALT="$z^k=M^k_{AS}w^k$">, with <!-- MATH
ALT="$z^k=M^k_{AS}w^k$"></SPAN>, with <!-- MATH
$w^k \in \mathbb{R}^{n_k}$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="76" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img66.png"
ALT="$w^k \in \mathbb{R}^{n_k}$">, during the
ALT="$w^k \in \mathbb{R}^{n_k}$"></SPAN>, during the
multilevel application phase, requires
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<UL>
<LI>the restriction of <IMG
<LI>the restriction of <SPAN CLASS="MATH"><IMG
WIDTH="25" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
SRC="img67.png"
ALT="$w^k$"> to the subspaces <!-- MATH
ALT="$w^k$"></SPAN> to the subspaces <!-- MATH
$\mathbb{R}^{n_{k,i}}$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="41" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img68.png"
ALT="$\mathbb{R}^{n_{k,i}}$">,
ALT="$\mathbb{R}^{n_{k,i}}$"></SPAN>,
i.e. <!-- MATH
$w_i^k = R_i^{k} w^k$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="91" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img69.png"
ALT="$w_i^k = R_i^{k} w^k$">;
ALT="$w_i^k = R_i^{k} w^k$"></SPAN>;
</LI>
<LI>the computation of the vectors <!-- MATH
$z_i^k=(A_i^k)^{-1} w_i^k$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="119" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img70.png"
ALT="$z_i^k=(A_i^k)^{-1} w_i^k$">;
ALT="$z_i^k=(A_i^k)^{-1} w_i^k$"></SPAN>;
</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
<SPAN CLASS="MATH"><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$">.
ALT="$z^k = \sum_{i=1}^{m_k} P_i^k z_i^k$"></SPAN>.
</LI>
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</UL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
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
@ -248,41 +245,42 @@ 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&nbsp;[<A
HREF="node30.html#CAI_SARKIS">6</A>].
</FONT></FONT></FONT>
HREF="node36.html#CAI_SARKIS">6</A>].
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Direct solvers based on sparse LU factorizations, implemented in the
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Direct solvers based on sparse LU factorizations, implemented in the
third-party libraries reported in Section&nbsp;<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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html264"
<A NAME="tex2html271"
HREF="node16.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html260"
<A NAME="tex2html267"
HREF="node12.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html256"
<A NAME="tex2html263"
HREF="node14.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html262"
<A NAME="tex2html269"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html265"
<B> Next:</B> <A NAME="tex2html272"
HREF="node16.html">Getting Started</A>
<B> Up:</B> <A NAME="tex2html261"
<B> Up:</B> <A NAME="tex2html268"
HREF="node12.html">Multigrid Background</A>
<B> Previous:</B> <A NAME="tex2html257"
<B> Previous:</B> <A NAME="tex2html264"
HREF="node14.html">Smoothed Aggregation</A>
&nbsp; <B> <A NAME="tex2html263"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html270"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Getting Started</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,54 +21,55 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html276"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html283"
HREF="node17.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html272"
<A NAME="tex2html279"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html266"
<A NAME="tex2html273"
HREF="node15.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html274"
<A NAME="tex2html281"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html277"
<B> Next:</B> <A NAME="tex2html284"
HREF="node17.html">Examples</A>
<B> Up:</B> <A NAME="tex2html273"
<B> Up:</B> <A NAME="tex2html280"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html267"
<B> Previous:</B> <A NAME="tex2html274"
HREF="node15.html">Smoothers and coarsest-level solvers</A>
&nbsp; <B> <A NAME="tex2html275"
&nbsp; <B> <A NAME="tex2html282"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:started"></A>
<BR>
Getting Started
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We describe the basics for building and applying MLD2P4 one-level and multilevel
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">We describe the basics for building and applying MLD2P4 one-level and multilevel
(i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS [<A
HREF="node30.html#PSBLASGUIDE">13</A>].
HREF="node36.html#PSBLASGUIDE">13</A>].
The following steps are required:
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<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>
<LI><SPAN CLASS="textit">Declare the preconditioner data structure</SPAN>. It is a derived data type,
<code>mld_</code><SPAN CLASS="textit">x</SPAN><code>prec_</code> <code>type</code>, where <SPAN CLASS="textit">x</SPAN> 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
<LI><SPAN CLASS="textit">Allocate and initialize the preconditioner data structure, according to
a preconditioner type chosen by the user</SPAN>. 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&nbsp;<A HREF="#tab:precinit">1</A>, where the strings used by
@ -80,8 +77,8 @@ The following steps are required:
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>.
<LI><SPAN CLASS="textit">Modify the selected preconditioner type, by properly setting
preconditioner parameters.</SPAN> 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
@ -89,38 +86,38 @@ The following steps are required:
preconditioner parameters and their allowed and default values is provided in
Section&nbsp;<A HREF="node18.html#sec:userinterface">6</A>, Tables&nbsp;<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
<LI><SPAN CLASS="textit">Build the preconditioner for a given matrix</SPAN>. If the selected preconditioner
is multilevel, 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
<DD><SPAN CLASS="textit">Build the aggregation hierarchy for a given matrix.</SPAN> 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
<DD><SPAN CLASS="textit">Build the preconditioner for a given matrix.</SPAN> 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
<LI><SPAN CLASS="textit">Apply the preconditioner at each iteration of a Krylov solver.</SPAN>
This is performed by the method <code>apply</code>. When using the PSBLAS Krylov solvers,
this step is completely transparent to the user, since <code>apply</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
<LI><SPAN CLASS="textit">Free the preconditioner data structure</SPAN>. 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>
</OL><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">All the previous routines are available as methods of the preconditioner object.
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">All the previous routines are available as methods of the preconditioner object.
A detailed description of them is given in Section&nbsp;<A HREF="node18.html#sec:userinterface">6</A>.
Examples showing the basic use of MLD2P4 are reported in Section&nbsp;<A HREF="node17.html#sec:examples">5.1</A>.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="904"></A>
<TABLE>
@ -135,8 +132,8 @@ Preconditioner types, corresponding strings and default choices.
<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
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=51><code>'NONE'</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=232>Considered to use the PSBLAS
Krylov solvers with no preconditioner.</TD>
</TR>
<TR><TD ALIGN="LEFT">Diagonal</TD>
@ -177,60 +174,63 @@ Preconditioner types, corresponding strings and default choices.
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>
<BR><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Note that the module <code>mld_prec_mod</code>, containing the definition of the
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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&nbsp;<A HREF="node17.html#sec:examples">5.1</A>).
<BR></FONT></FONT></FONT>
<BR></BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Remark 1.</B> Coarsest-level solvers based on the LU factorization,
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><SPAN CLASS="textbf">Remark 1.</SPAN> 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>
on parallel computers.
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html278"
<UL CLASS="ChildLinks">
<LI><A NAME="tex2html285"
HREF="node17.html">Examples</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html276"
<A NAME="tex2html283"
HREF="node17.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html272"
<A NAME="tex2html279"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html266"
<A NAME="tex2html273"
HREF="node15.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html274"
<A NAME="tex2html281"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html277"
<B> Next:</B> <A NAME="tex2html284"
HREF="node17.html">Examples</A>
<B> Up:</B> <A NAME="tex2html273"
<B> Up:</B> <A NAME="tex2html280"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html267"
<B> Previous:</B> <A NAME="tex2html274"
HREF="node15.html">Smoothers and coarsest-level solvers</A>
&nbsp; <B> <A NAME="tex2html275"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html282"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Examples</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -24,38 +20,39 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html287"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html294"
HREF="node18.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html283"
<A NAME="tex2html290"
HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html279"
<A NAME="tex2html286"
HREF="node16.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html285"
<A NAME="tex2html292"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html288"
<B> Next:</B> <A NAME="tex2html295"
HREF="node18.html">User Interface</A>
<B> Up:</B> <A NAME="tex2html284"
<B> Up:</B> <A NAME="tex2html291"
HREF="node16.html">Getting Started</A>
<B> Previous:</B> <A NAME="tex2html280"
<B> Previous:</B> <A NAME="tex2html287"
HREF="node16.html">Getting Started</A>
&nbsp; <B> <A NAME="tex2html286"
&nbsp; <B> <A NAME="tex2html293"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00071000000000000000"></A><A NAME="sec:examples"></A>
<BR>
Examples
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The code reported in Figure&nbsp;<A HREF="#fig:ex1">2</A> shows how to set and apply the default
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The code reported in Figure&nbsp;<A HREF="#fig:ex1">2</A> shows how to set and apply the default
multilevel preconditioner available in the real double precision version
of MLD2P4 (see Table&nbsp;<A HREF="#tab:precinit">1</A>). This preconditioner is chosen
by simply specifying <code>'ML'</code> as the second argument of <code>P%init</code>
@ -64,9 +61,9 @@ solver provided by PSBLAS (the matrix of the system to be solved is
assumed to be positive definite). As previously observed, the modules
<code>psb_base_mod</code>, <code>mld_prec_mod</code> and <code>psb_krylov_mod</code>
must be used by the example program.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The part of the code concerning the
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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
@ -77,17 +74,17 @@ Section&nbsp;<A HREF="node11.html#sec:ex_and_test">3.5</A>). A sample test probl
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&nbsp;[<A
HREF="node30.html#PSBLASGUIDE">13</A>].
</FONT></FONT></FONT>
HREF="node36.html#PSBLASGUIDE">13</A>].
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The setup and application of the default multilevel preconditioner
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The setup and application of the default multilevel 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&nbsp;<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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="907"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
@ -157,9 +154,9 @@ setup and application of the default multilevel preconditioner (example 1).
</DIV></TD></TR>
</TABLE>
</DIV>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Different versions of the multilevel preconditioner can be obtained by changing
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Different versions of the multilevel preconditioner can be obtained by changing
the default values of the preconditioner parameters. The code reported in
Figure&nbsp;<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,
@ -176,24 +173,25 @@ 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&nbsp;<A HREF="#fig:ex2">3</A> and <A HREF="#fig:ex3">4</A> are
it is used on replicated ones.
The code fragments shown in Figures&nbsp;<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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Finally, Figure&nbsp;<A HREF="#fig:ex4">5</A> shows the setup of a one-level
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Finally, Figure&nbsp;<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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For all the previous preconditioners, example programs where the sparse matrix and
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="909"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
@ -224,9 +222,9 @@ setup of a multilevel preconditioner</CAPTION>
</DIV></TD></TR>
</TABLE>
</DIV>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><A NAME="fig:ex3"></A><A NAME="911"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
@ -257,9 +255,9 @@ setup of a multilevel preconditioner</CAPTION>
</DIV></TD></TR>
</TABLE>
</DIV>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="913"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
@ -285,31 +283,32 @@ setup of a one-level Schwarz preconditioner.</CAPTION>
</DIV></TD></TR>
</TABLE>
</DIV>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html287"
<A NAME="tex2html294"
HREF="node18.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html283"
<A NAME="tex2html290"
HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html279"
<A NAME="tex2html286"
HREF="node16.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html285"
<A NAME="tex2html292"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html288"
<B> Next:</B> <A NAME="tex2html295"
HREF="node18.html">User Interface</A>
<B> Up:</B> <A NAME="tex2html284"
<B> Up:</B> <A NAME="tex2html291"
HREF="node16.html">Getting Started</A>
<B> Previous:</B> <A NAME="tex2html280"
<B> Previous:</B> <A NAME="tex2html287"
HREF="node16.html">Getting Started</A>
&nbsp; <B> <A NAME="tex2html286"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html293"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>User Interface</TITLE>
@ -13,89 +9,91 @@ 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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node27.html">
<LINK REL="next" HREF="node33.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="tex2html299"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html306"
HREF="node19.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html295"
<A NAME="tex2html302"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html289"
<A NAME="tex2html296"
HREF="node17.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html297"
<A NAME="tex2html304"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html300"
HREF="node19.html">Subroutine init</A>
<B> Up:</B> <A NAME="tex2html296"
<B> Next:</B> <A NAME="tex2html307"
HREF="node19.html">Method init</A>
<B> Up:</B> <A NAME="tex2html303"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html290"
<B> Previous:</B> <A NAME="tex2html297"
HREF="node17.html">Examples</A>
&nbsp; <B> <A NAME="tex2html298"
&nbsp; <B> <A NAME="tex2html305"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00080000000000000000"></A><A NAME="sec:userinterface"></A>
<BR>
User Interface
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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 multilevel and one-level
preconditioner implemented in the package.
The routine <code>free</code> deallocates the preconditioner data structure, while
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The basic user interface of MLD2P4 consists of eight methods. The six
methods <code>init</code>, <code>set</code>, <code>build</code>,
<code>hierarchy_build</code>, <code>smoothers_build</code> and <code>apply</code>
encapsulate all the functionalities for the setup and the application
of any multilevel and one-level preconditioner implemented in the
package.
The method <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>
For backward compatibility, methods are also accessible as
stand-alone subroutines.
</BIG></BIG></BIG>
<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
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">For each method, 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,
arguments with appropriate data types must be passed to the method,
i.e.,
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<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;
preconditioned, must be of type <code>psb_</code><SPAN CLASS="textit">x</SPAN><code>spmat_type</code>
with <SPAN CLASS="textit">x</SPAN> = <code>s</code> for real single precision, <SPAN CLASS="textit">x</SPAN> = <code>d</code>
for real double precision, <SPAN CLASS="textit">x</SPAN> = <code>c</code> for complex single precision,
<SPAN CLASS="textit">x</SPAN> = <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>mld_</code><SPAN CLASS="textit">x</SPAN><code>prec_type</code>, with <SPAN CLASS="textit">x</SPAN> =
<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
<LI>the arrays containing the vectors <SPAN CLASS="MATH"><IMG
WIDTH="14" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img72.png"
ALT="$v$"> and <IMG
ALT="$v$"></SPAN> and <SPAN CLASS="MATH"><IMG
WIDTH="17" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img73.png"
ALT="$w$"> involved in
the preconditioner application <IMG
ALT="$w$"></SPAN> involved in
the preconditioner application <SPAN CLASS="MATH"><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> =
ALT="$w=B^{-1}v$"></SPAN> must be of type
<code>psb_</code><SPAN CLASS="textit">x</SPAN><code>vect_type</code> with <SPAN CLASS="textit">x</SPAN> =
<code>s</code>, <code>d</code>, <code>c</code>, <code>z</code>, in a manner completely
analogous to the sparse matrix type;
</LI>
@ -103,59 +101,73 @@ i.e.,
according to the precision of the sparse matrix and preconditioner
data structures (see Section&nbsp;<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>
</UL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
A description of each method is given in the remainder of this section.
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html301"
HREF="node19.html">Subroutine init</A>
<LI><A NAME="tex2html302"
HREF="node20.html">Subroutine set</A>
<LI><A NAME="tex2html303"
HREF="node21.html">Subroutine build</A>
<LI><A NAME="tex2html304"
HREF="node22.html">Subroutine hierarchy_build</A>
<LI><A NAME="tex2html305"
HREF="node23.html">Subroutine smoothers_build</A>
<LI><A NAME="tex2html306"
HREF="node24.html">Subroutine apply</A>
<LI><A NAME="tex2html307"
HREF="node25.html">Subroutine free</A>
<UL CLASS="ChildLinks">
<LI><A NAME="tex2html308"
HREF="node26.html">Subroutine descr</A>
</UL>
HREF="node19.html">Method init</A>
<LI><A NAME="tex2html309"
HREF="node20.html">Method set</A>
<LI><A NAME="tex2html310"
HREF="node21.html">Method hierarchy_build</A>
<LI><A NAME="tex2html311"
HREF="node22.html">Method smoothers_build</A>
<LI><A NAME="tex2html312"
HREF="node23.html">Method build</A>
<LI><A NAME="tex2html313"
HREF="node24.html">Method apply</A>
<LI><A NAME="tex2html314"
HREF="node25.html">Method free</A>
<LI><A NAME="tex2html315"
HREF="node26.html">Method descr</A>
<LI><A NAME="tex2html316"
HREF="node27.html">Auxiliary Methods</A>
<UL>
<LI><A NAME="tex2html317"
HREF="node28.html">Method: dump</A>
<LI><A NAME="tex2html318"
HREF="node29.html">Method: clone</A>
<LI><A NAME="tex2html319"
HREF="node30.html">Method: sizeof</A>
<LI><A NAME="tex2html320"
HREF="node31.html">Method: allocate_wrk</A>
<LI><A NAME="tex2html321"
HREF="node32.html">Method: free_wrk</A>
</UL></UL>
<!--End of Table of Child-Links-->
<HR>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html299"
<A NAME="tex2html306"
HREF="node19.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html295"
<A NAME="tex2html302"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html289"
<A NAME="tex2html296"
HREF="node17.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html297"
<A NAME="tex2html304"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html300"
HREF="node19.html">Subroutine init</A>
<B> Up:</B> <A NAME="tex2html296"
<B> Next:</B> <A NAME="tex2html307"
HREF="node19.html">Method init</A>
<B> Up:</B> <A NAME="tex2html303"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html290"
<B> Previous:</B> <A NAME="tex2html297"
HREF="node17.html">Examples</A>
&nbsp; <B> <A NAME="tex2html298"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html305"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,19 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Subroutine init</TITLE>
<META NAME="description" CONTENT="Subroutine init">
<TITLE>Method init</TITLE>
<META NAME="description" CONTENT="Method init">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,106 +21,109 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html319"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html332"
HREF="node20.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html315"
<A NAME="tex2html328"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html309"
<A NAME="tex2html322"
HREF="node18.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html317"
<A NAME="tex2html330"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html320"
HREF="node20.html">Subroutine set</A>
<B> Up:</B> <A NAME="tex2html316"
<B> Next:</B> <A NAME="tex2html333"
HREF="node20.html">Method set</A>
<B> Up:</B> <A NAME="tex2html329"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html310"
<B> Previous:</B> <A NAME="tex2html323"
HREF="node18.html">User Interface</A>
&nbsp; <B> <A NAME="tex2html318"
&nbsp; <B> <A NAME="tex2html331"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00081000000000000000"></A><A NAME="sec:precinit"></A>
<BR>
Subroutine init
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
Method init
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%init(ptype,info)</code>
</BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine allocates and initializes the preconditioner
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
This method allocates and initializes the preconditioner
<code>p</code>, according to the preconditioner type chosen by the user.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>ptype</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>character(len=*), intent(in)</code>.</BIG></BIG></BIG></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&nbsp;<A HREF="#tab:precinit">1</A>.</FONT></FONT></FONT></TD>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The type of preconditioner. Its values are specified
in Table&nbsp;<A HREF="#tab:precinit">1</A>.</BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Note that the strings are case insensitive.</BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></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&nbsp;<A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></TD>
</TR>
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call mld_precinit(p,ptype,info)</code>
</BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html319"
<A NAME="tex2html332"
HREF="node20.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html315"
<A NAME="tex2html328"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html309"
<A NAME="tex2html322"
HREF="node18.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html317"
<A NAME="tex2html330"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html320"
HREF="node20.html">Subroutine set</A>
<B> Up:</B> <A NAME="tex2html316"
<B> Next:</B> <A NAME="tex2html333"
HREF="node20.html">Method set</A>
<B> Up:</B> <A NAME="tex2html329"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html310"
<B> Previous:</B> <A NAME="tex2html323"
HREF="node18.html">User Interface</A>
&nbsp; <B> <A NAME="tex2html318"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html331"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Contents</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,25 +21,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html78"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html84"
HREF="node3.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html76"
<A NAME="tex2html82"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html70"
<A NAME="tex2html76"
HREF="node1.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html79"
<B> Next:</B> <A NAME="tex2html85"
HREF="node3.html">General Overview</A>
<B> Up:</B> <A NAME="tex2html77"
<B> Up:</B> <A NAME="tex2html83"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html71"
<B> Previous:</B> <A NAME="tex2html77"
HREF="node1.html">Abstract</A>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<BR>
@ -52,82 +49,84 @@ Contents</A>
</H2>
<!--Table of Contents-->
<UL>
<LI><A NAME="tex2html80"
<UL CLASS="TofC">
<LI><A NAME="tex2html86"
HREF="node3.html">General Overview</A>
<LI><A NAME="tex2html81"
<LI><A NAME="tex2html87"
HREF="node4.html">Code Distribution</A>
<LI><A NAME="tex2html82"
<LI><A NAME="tex2html88"
HREF="node6.html">Configuring and Building MLD2P4</A>
<UL>
<LI><A NAME="tex2html83"
<LI><A NAME="tex2html89"
HREF="node7.html">Prerequisites</A>
<LI><A NAME="tex2html84"
<LI><A NAME="tex2html90"
HREF="node8.html">Optional third party libraries</A>
<LI><A NAME="tex2html85"
<LI><A NAME="tex2html91"
HREF="node9.html">Configuration options</A>
<LI><A NAME="tex2html86"
<LI><A NAME="tex2html92"
HREF="node10.html">Bug reporting</A>
<LI><A NAME="tex2html87"
<LI><A NAME="tex2html93"
HREF="node11.html">Example and test programs</A>
</UL>
<BR>
<LI><A NAME="tex2html88"
<LI><A NAME="tex2html94"
HREF="node12.html">Multigrid Background</A>
<UL>
<LI><A NAME="tex2html89"
<LI><A NAME="tex2html95"
HREF="node13.html">AMG preconditioners</A>
<LI><A NAME="tex2html90"
<LI><A NAME="tex2html96"
HREF="node14.html">Smoothed Aggregation</A>
<LI><A NAME="tex2html91"
<LI><A NAME="tex2html97"
HREF="node15.html">Smoothers and coarsest-level solvers</A>
</UL>
<BR>
<LI><A NAME="tex2html92"
<LI><A NAME="tex2html98"
HREF="node16.html">Getting Started</A>
<UL>
<LI><A NAME="tex2html93"
<LI><A NAME="tex2html99"
HREF="node17.html">Examples</A>
</UL>
<BR>
<LI><A NAME="tex2html94"
<LI><A NAME="tex2html100"
HREF="node18.html">User Interface</A>
<UL>
<LI><A NAME="tex2html95"
HREF="node19.html">Subroutine init</A>
<LI><A NAME="tex2html96"
HREF="node20.html">Subroutine set</A>
<LI><A NAME="tex2html97"
HREF="node21.html">Subroutine build</A>
<LI><A NAME="tex2html98"
HREF="node22.html">Subroutine hierarchy_build</A>
<LI><A NAME="tex2html99"
HREF="node23.html">Subroutine smoothers_build</A>
<LI><A NAME="tex2html100"
HREF="node24.html">Subroutine apply</A>
<LI><A NAME="tex2html101"
HREF="node25.html">Subroutine free</A>
HREF="node19.html">Method init</A>
<LI><A NAME="tex2html102"
HREF="node26.html">Subroutine descr</A>
</UL>
<BR>
HREF="node20.html">Method set</A>
<LI><A NAME="tex2html103"
HREF="node27.html">Adding new smoother and solver objects to MLD2P4</A>
HREF="node21.html">Method hierarchy_build</A>
<LI><A NAME="tex2html104"
HREF="node28.html">Error Handling</A>
HREF="node22.html">Method smoothers_build</A>
<LI><A NAME="tex2html105"
HREF="node29.html">License</A>
HREF="node23.html">Method build</A>
<LI><A NAME="tex2html106"
HREF="node30.html">Bibliography</A>
HREF="node24.html">Method apply</A>
<LI><A NAME="tex2html107"
HREF="node25.html">Method free</A>
<LI><A NAME="tex2html108"
HREF="node26.html">Method descr</A>
<LI><A NAME="tex2html109"
HREF="node27.html">Auxiliary Methods</A>
</UL>
<BR>
<LI><A NAME="tex2html110"
HREF="node33.html">Adding new smoother and solver objects to MLD2P4</A>
<LI><A NAME="tex2html111"
HREF="node34.html">Error Handling</A>
<LI><A NAME="tex2html112"
HREF="node35.html">License</A>
<LI><A NAME="tex2html113"
HREF="node36.html">Bibliography</A>
</UL>
<!--End of Table of Contents-->
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG></BIG>
<BR><HR>
</BODY>

File diff suppressed because it is too large Load Diff

@ -1,19 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Subroutine build</TITLE>
<META NAME="description" CONTENT="Subroutine build">
<TITLE>Method hierarchy_build</TITLE>
<META NAME="description" CONTENT="Method hierarchy_build">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,120 +21,112 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html343"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html356"
HREF="node22.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html339"
<A NAME="tex2html352"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html333"
<A NAME="tex2html346"
HREF="node20.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html341"
<A NAME="tex2html354"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html344"
HREF="node22.html">Subroutine hierarchy_build</A>
<B> Up:</B> <A NAME="tex2html340"
<B> Next:</B> <A NAME="tex2html357"
HREF="node22.html">Method smoothers_build</A>
<B> Up:</B> <A NAME="tex2html353"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html334"
HREF="node20.html">Subroutine set</A>
&nbsp; <B> <A NAME="tex2html342"
<B> Previous:</B> <A NAME="tex2html347"
HREF="node20.html">Method set</A>
&nbsp; <B> <A NAME="tex2html355"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00083000000000000000"></A><A NAME="sec:precbld"></A>
<H2><A NAME="SECTION00083000000000000000"></A><A NAME="sec:hier_bld"></A>
<BR>
Subroutine build
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
Method hierarchy_build
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%hierarchy_build(a,desc_a,info)</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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&nbsp;<A HREF="node22.html#sec:hier_bld">6.4</A> and&nbsp;<A HREF="node23.html#sec:smooth_bld">6.5</A> for multilevel preconditioners).
</FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
This method builds the hierarchy of matrices and restriction/prolongation
operators for the multilevel preconditioner <code>p</code>, according to the requirements
made by the user through the methods <code>init</code> and <code>set</code>.
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>a</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>type(psb_</code><SPAN CLASS="textit">x</SPAN><code>spmat_type), intent(in)</code>. </BIG></BIG></BIG></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.
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that <SPAN CLASS="textit">x</SPAN> 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>
HREF="node36.html#PSBLASGUIDE">13</A>].</BIG></BIG></BIG></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><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>desc_a</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>type(psb_desc_type), intent(in)</code>. </BIG></BIG></BIG></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
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> 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>
HREF="node36.html#PSBLASGUIDE">13</A>].</BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></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&nbsp;<A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></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>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
In this case, the routine can be used to build multilevel preconditioners too.
</FONT></FONT></FONT>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html343"
<A NAME="tex2html356"
HREF="node22.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html339"
<A NAME="tex2html352"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html333"
<A NAME="tex2html346"
HREF="node20.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html341"
<A NAME="tex2html354"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html344"
HREF="node22.html">Subroutine hierarchy_build</A>
<B> Up:</B> <A NAME="tex2html340"
<B> Next:</B> <A NAME="tex2html357"
HREF="node22.html">Method smoothers_build</A>
<B> Up:</B> <A NAME="tex2html353"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html334"
HREF="node20.html">Subroutine set</A>
&nbsp; <B> <A NAME="tex2html342"
HREF="node2.html">Contents</A></B>
<B> Previous:</B> <A NAME="tex2html347"
HREF="node20.html">Method set</A>
&nbsp; <B> <A NAME="tex2html355"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,19 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Subroutine hierarchy_build</TITLE>
<META NAME="description" CONTENT="Subroutine hierarchy_build">
<TITLE>Method smoothers_build</TITLE>
<META NAME="description" CONTENT="Method smoothers_build">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,109 +21,143 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html355"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html368"
HREF="node23.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html351"
<A NAME="tex2html364"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html345"
<A NAME="tex2html358"
HREF="node21.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html353"
<A NAME="tex2html366"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html356"
HREF="node23.html">Subroutine smoothers_build</A>
<B> Up:</B> <A NAME="tex2html352"
<B> Next:</B> <A NAME="tex2html369"
HREF="node23.html">Method build</A>
<B> Up:</B> <A NAME="tex2html365"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html346"
HREF="node21.html">Subroutine build</A>
&nbsp; <B> <A NAME="tex2html354"
<B> Previous:</B> <A NAME="tex2html359"
HREF="node21.html">Method hierarchy_build</A>
&nbsp; <B> <A NAME="tex2html367"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:hier_bld"></A>
<H2><A NAME="SECTION00084000000000000000"></A><A NAME="sec:smooth_bld"></A>
<BR>
Subroutine hierarchy_build
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
Method smoothers_build
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine builds the hierarchy of matrices and restriction/prolongation
operators for the multilevel 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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
This method builds the smoothers and the coarsest-level solvers for the
multilevel preconditioner <code>p</code>, according to the requirements made by
the user through the methods <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&nbsp;<A HREF="node21.html#sec:hier_bld">6.3</A>).
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>a</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>type(psb_</code><SPAN CLASS="textit">x</SPAN><code>spmat_type), intent(in)</code>. </BIG></BIG></BIG></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.
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that <SPAN CLASS="textit">x</SPAN> 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>
HREF="node36.html#PSBLASGUIDE">13</A>].</BIG></BIG></BIG></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><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>desc_a</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>type(psb_desc_type), intent(in)</code>. </BIG></BIG></BIG></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
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> 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>
HREF="node36.html#PSBLASGUIDE">13</A>].</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>amold</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>class(psb_</code><SPAN CLASS="textit">x</SPAN><code>_base_sparse_mat), intent(in), optional</code>. </BIG></BIG></BIG></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&nbsp;<A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The desired dynamic type for internal matrix
components; this allows e.g. running on GPUs; it needs not be the
same on all processes. See the PSBLAS User's Guide for
details [<A
HREF="node36.html#PSBLASGUIDE">13</A>]. </BIG></BIG></BIG></TD>
</TR>
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>vmold</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>class(psb_</code><SPAN CLASS="textit">x</SPAN><code>_base_vect_type), intent(in), optional</code>. </BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The desired dynamic type for internal vector
components; this allows e.g. running on GPUs. </BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>imold</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>class(psb_i_base_vect_type), intent(in), optional</code>. </BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The desired dynamic type for internal integer vector
components; this allows e.g. running on GPUs. </BIG></BIG></BIG></TD>
</TR>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html355"
<A NAME="tex2html368"
HREF="node23.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html351"
<A NAME="tex2html364"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html345"
<A NAME="tex2html358"
HREF="node21.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html353"
<A NAME="tex2html366"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html356"
HREF="node23.html">Subroutine smoothers_build</A>
<B> Up:</B> <A NAME="tex2html352"
<B> Next:</B> <A NAME="tex2html369"
HREF="node23.html">Method build</A>
<B> Up:</B> <A NAME="tex2html365"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html346"
HREF="node21.html">Subroutine build</A>
&nbsp; <B> <A NAME="tex2html354"
HREF="node2.html">Contents</A></B>
<B> Previous:</B> <A NAME="tex2html359"
HREF="node21.html">Method hierarchy_build</A>
&nbsp; <B> <A NAME="tex2html367"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,19 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Subroutine smoothers_build</TITLE>
<META NAME="description" CONTENT="Subroutine smoothers_build">
<TITLE>Method build</TITLE>
<META NAME="description" CONTENT="Method build">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,108 +21,156 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html367"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html380"
HREF="node24.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html363"
<A NAME="tex2html376"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html357"
<A NAME="tex2html370"
HREF="node22.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html365"
<A NAME="tex2html378"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html368"
HREF="node24.html">Subroutine apply</A>
<B> Up:</B> <A NAME="tex2html364"
<B> Next:</B> <A NAME="tex2html381"
HREF="node24.html">Method apply</A>
<B> Up:</B> <A NAME="tex2html377"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html358"
HREF="node22.html">Subroutine hierarchy_build</A>
&nbsp; <B> <A NAME="tex2html366"
<B> Previous:</B> <A NAME="tex2html371"
HREF="node22.html">Method smoothers_build</A>
&nbsp; <B> <A NAME="tex2html379"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:smooth_bld"></A>
<H2><A NAME="SECTION00085000000000000000"></A><A NAME="sec:precbld"></A>
<BR>
Subroutine smoothers_build
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
Method build
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%build(a,desc_a,info[,amold,vmold,imold])</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine builds the smoothers and the coarsest-level solvers for the
multilevel 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&nbsp;<A HREF="node22.html#sec:hier_bld">6.4</A>).
</FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
This method builds the preconditioner <code>p</code> according to the requirements
made by the user through the methods <code>init</code> and <code>set</code>
(see Sections&nbsp;<A HREF="node21.html#sec:hier_bld">6.3</A> and&nbsp;<A HREF="node22.html#sec:smooth_bld">6.4</A> for
multilevel preconditioners). It is mostly provided for backward
compatibility; indeed, it is internally implemented by invoking the
two previous methods <code>hierarchy_build</code> and
<code>smoothers_build</code>, whose nomenclature would however be somewhat
unnatural when dealing with simple one-level preconditioners.
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>a</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>type(psb_</code><SPAN CLASS="textit">x</SPAN><code>spmat_type), intent(in)</code>. </BIG></BIG></BIG></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
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that <SPAN CLASS="textit">x</SPAN> 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>
HREF="node36.html#PSBLASGUIDE">13</A>].</BIG></BIG></BIG></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><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>desc_a</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>type(psb_desc_type), intent(in)</code>. </BIG></BIG></BIG></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
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> 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>
HREF="node36.html#PSBLASGUIDE">13</A>].</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>amold</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>class(psb_</code><SPAN CLASS="textit">x</SPAN><code>_base_sparse_mat), intent(in), optional</code>. </BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The desired dynamic type for internal matrix
components; this allows e.g. running on GPUs; it needs not be the
same on all processes. See the PSBLAS User's Guide for
details [<A
HREF="node36.html#PSBLASGUIDE">13</A>]. </BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>vmold</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>class(psb_</code><SPAN CLASS="textit">x</SPAN><code>_base_vect_type), intent(in), optional</code>. </BIG></BIG></BIG></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&nbsp;<A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The desired dynamic type for internal vector
components; this allows e.g. running on GPUs. </BIG></BIG></BIG></TD>
</TR>
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>imold</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>class(psb_i_base_vect_type), intent(in), optional</code>. </BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The desired dynamic type for internal integer vector
components; this allows e.g. running on GPUs. </BIG></BIG></BIG></TD>
</TR>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call mld_precbld(p,what,val,info[,amold,vmold,imold])</code>
</BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
The method can be used to build multilevel preconditioners too.
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html367"
<A NAME="tex2html380"
HREF="node24.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html363"
<A NAME="tex2html376"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html357"
<A NAME="tex2html370"
HREF="node22.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html365"
<A NAME="tex2html378"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html368"
HREF="node24.html">Subroutine apply</A>
<B> Up:</B> <A NAME="tex2html364"
<B> Next:</B> <A NAME="tex2html381"
HREF="node24.html">Method apply</A>
<B> Up:</B> <A NAME="tex2html377"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html358"
HREF="node22.html">Subroutine hierarchy_build</A>
&nbsp; <B> <A NAME="tex2html366"
HREF="node2.html">Contents</A></B>
<B> Previous:</B> <A NAME="tex2html371"
HREF="node22.html">Method smoothers_build</A>
&nbsp; <B> <A NAME="tex2html379"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,19 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Subroutine apply</TITLE>
<META NAME="description" CONTENT="Subroutine apply">
<TITLE>Method apply</TITLE>
<META NAME="description" CONTENT="Method apply">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,191 +21,194 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html379"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html392"
HREF="node25.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html375"
<A NAME="tex2html388"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html369"
<A NAME="tex2html382"
HREF="node23.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html377"
<A NAME="tex2html390"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html380"
HREF="node25.html">Subroutine free</A>
<B> Up:</B> <A NAME="tex2html376"
<B> Next:</B> <A NAME="tex2html393"
HREF="node25.html">Method free</A>
<B> Up:</B> <A NAME="tex2html389"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html370"
HREF="node23.html">Subroutine smoothers_build</A>
&nbsp; <B> <A NAME="tex2html378"
<B> Previous:</B> <A NAME="tex2html383"
HREF="node23.html">Method build</A>
&nbsp; <B> <A NAME="tex2html391"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00086000000000000000"></A><A NAME="sec:precapply"></A>
<BR>
Subroutine apply
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
Method apply
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%apply(x,y,desc_a,info [,trans,work])</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine computes <!-- MATH
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
This method computes <!-- MATH
$y = op(B^{-1})\, x$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="112" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img86.png"
ALT="$y = op(B^{-1}) x$">, where <IMG
ALT="$y = op(B^{-1}) x$"></SPAN>, where <SPAN CLASS="MATH"><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
ALT="$B$"></SPAN> is a previously built
preconditioner, stored into <code>p</code>, and <SPAN CLASS="MATH"><IMG
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img87.png"
ALT="$op$">
ALT="$op$"></SPAN>
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>
<code>p%apply</code> is called within the PSBLAS method <code>psb_krylov</code>
and hence it is completely transparent to the user.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>x</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <SPAN CLASS="textit">type</SPAN><code>(</code><SPAN CLASS="textit">kind_parameter</SPAN><code>), dimension(:), intent(in)</code>.</BIG></BIG></BIG></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
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The local part of the vector <SPAN CLASS="MATH"><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>
ALT="$x$"></SPAN>. Note that <SPAN CLASS="textit">type</SPAN> and
<SPAN CLASS="textit">kind_parameter</SPAN> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>y</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <SPAN CLASS="textit">type</SPAN><code>(</code><SPAN CLASS="textit">kind_parameter</SPAN><code>), dimension(:), intent(out)</code>.</BIG></BIG></BIG></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
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The local part of the vector <SPAN CLASS="MATH"><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>
ALT="$y$"></SPAN>. Note that <SPAN CLASS="textit">type</SPAN> and
<SPAN CLASS="textit">kind_parameter</SPAN> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</BIG></BIG></BIG></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><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>desc_a</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>type(psb_desc_type), intent(in)</code>. </BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The communication descriptor associated to the matrix to be
preconditioned.</BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></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&nbsp;<A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>trans</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>character(len=1), optional, intent(in).</code></BIG></BIG></BIG></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
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> If <code>trans</code> = <code>'N','n'</code> then <!-- MATH
$op(B^{-1}) = B^{-1}$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="123" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img90.png"
ALT="$op(B^{-1}) = B^{-1}$">;
ALT="$op(B^{-1}) = B^{-1}$"></SPAN>;
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
$op(B^{-1}) = B^{-T}$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img91.png"
ALT="$op(B^{-1}) = B^{-T}$">
(transpose of <IMG
ALT="$op(B^{-1}) = B^{-T}$"></SPAN>
(transpose of <SPAN CLASS="MATH"><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
ALT="$B^{-1})$"></SPAN>; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
$op(B^{-1}) = B^{-C}$
-->
<IMG
<SPAN CLASS="MATH"><IMG
WIDTH="126" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img93.png"
ALT="$op(B^{-1}) = B^{-C}$">
(conjugate transpose of <IMG
ALT="$op(B^{-1}) = B^{-C}$"></SPAN>
(conjugate transpose of <SPAN CLASS="MATH"><IMG
WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img92.png"
ALT="$B^{-1})$">.</FONT></FONT></FONT></TD>
ALT="$B^{-1})$"></SPAN>.</BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>work</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <SPAN CLASS="textit">type</SPAN><code>(</code><SPAN CLASS="textit">kind_parameter</SPAN><code>), dimension(:), optional, target</code>.</BIG></BIG></BIG></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
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> 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>
Note that <SPAN CLASS="textit">type</SPAN> and <SPAN CLASS="textit">kind_parameter</SPAN> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</BIG></BIG></BIG></TD>
</TR>
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call mld_precaply(p,what,val,info)</code>
</BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html379"
<A NAME="tex2html392"
HREF="node25.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html375"
<A NAME="tex2html388"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html369"
<A NAME="tex2html382"
HREF="node23.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html377"
<A NAME="tex2html390"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html380"
HREF="node25.html">Subroutine free</A>
<B> Up:</B> <A NAME="tex2html376"
<B> Next:</B> <A NAME="tex2html393"
HREF="node25.html">Method free</A>
<B> Up:</B> <A NAME="tex2html389"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html370"
HREF="node23.html">Subroutine smoothers_build</A>
&nbsp; <B> <A NAME="tex2html378"
HREF="node2.html">Contents</A></B>
<B> Previous:</B> <A NAME="tex2html383"
HREF="node23.html">Method build</A>
&nbsp; <B> <A NAME="tex2html391"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,19 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Subroutine free</TITLE>
<META NAME="description" CONTENT="Subroutine free">
<TITLE>Method free</TITLE>
<META NAME="description" CONTENT="Method free">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,70 +21,72 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html391"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html404"
HREF="node26.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html387"
<A NAME="tex2html400"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html381"
<A NAME="tex2html394"
HREF="node24.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html389"
<A NAME="tex2html402"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html392"
HREF="node26.html">Subroutine descr</A>
<B> Up:</B> <A NAME="tex2html388"
<B> Next:</B> <A NAME="tex2html405"
HREF="node26.html">Method descr</A>
<B> Up:</B> <A NAME="tex2html401"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html382"
HREF="node24.html">Subroutine apply</A>
&nbsp; <B> <A NAME="tex2html390"
<B> Previous:</B> <A NAME="tex2html395"
HREF="node24.html">Method apply</A>
&nbsp; <B> <A NAME="tex2html403"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00087000000000000000"></A><A NAME="sec:precfree"></A>
<BR>
Subroutine free
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
Method free
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%free(p,info)</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
This routine deallocates the preconditioner data structure <code>p</code>.
</FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
This method deallocates the preconditioner data structure <code>p</code>.
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></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&nbsp;<A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=298><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></TD>
</TR>
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<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>
</FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call mld_precfree(p,info)</code>
</BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
</BODY>

@ -1,128 +1,124 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Subroutine descr</TITLE>
<META NAME="description" CONTENT="Subroutine descr">
<TITLE>Method descr</TITLE>
<META NAME="description" CONTENT="Method descr">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node27.html">
<LINK REL="previous" HREF="node25.html">
<LINK REL="up" HREF="node18.html">
<LINK REL="next" HREF="node27.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html401"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html416"
HREF="node27.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html397"
<A NAME="tex2html412"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html393"
<A NAME="tex2html406"
HREF="node25.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html399"
<A NAME="tex2html414"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html402"
HREF="node27.html">Adding new smoother and</A>
<B> Up:</B> <A NAME="tex2html398"
<B> Next:</B> <A NAME="tex2html417"
HREF="node27.html">Auxiliary Methods</A>
<B> Up:</B> <A NAME="tex2html413"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html394"
HREF="node25.html">Subroutine free</A>
&nbsp; <B> <A NAME="tex2html400"
<B> Previous:</B> <A NAME="tex2html407"
HREF="node25.html">Method free</A>
&nbsp; <B> <A NAME="tex2html415"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00088000000000000000"></A><A NAME="sec:precdescr"></A>
<BR>
Subroutine descr
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
Method descr
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BR></FONT></FONT></FONT></DIV><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%descr(info, [iout])</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
This method 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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><B>Arguments</B></FONT> </FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></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&nbsp;<A HREF="node28.html#sec:errors">8</A> for details.</FONT></FONT></FONT></TD>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></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><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>iout</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(in), optional</code>.</BIG></BIG></BIG></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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The id of the file where the preconditioner description
will be printed; the default is the standard output.</BIG></BIG></BIG></TD>
</TR>
</TABLE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For compatibility with the previous versions of MLD2P4, this routine can be also invoked
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call mld_precdescr(p,info [,iout])</code>
</BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html401"
<A NAME="tex2html416"
HREF="node27.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html397"
<A NAME="tex2html412"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html393"
<A NAME="tex2html406"
HREF="node25.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html399"
<A NAME="tex2html414"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html402"
HREF="node27.html">Adding new smoother and</A>
<B> Up:</B> <A NAME="tex2html398"
<B> Next:</B> <A NAME="tex2html417"
HREF="node27.html">Auxiliary Methods</A>
<B> Up:</B> <A NAME="tex2html413"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html394"
HREF="node25.html">Subroutine free</A>
&nbsp; <B> <A NAME="tex2html400"
HREF="node2.html">Contents</A></B>
<B> Previous:</B> <A NAME="tex2html407"
HREF="node25.html">Method free</A>
&nbsp; <B> <A NAME="tex2html415"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,185 +1,79 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<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>Auxiliary Methods</TITLE>
<META NAME="description" CONTENT="Auxiliary Methods">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node28.html">
<LINK REL="previous" HREF="node18.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node26.html">
<LINK REL="up" HREF="node18.html">
<LINK REL="next" HREF="node28.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html413"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html426"
HREF="node28.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html409"
HREF="userhtml.html">
<A NAME="tex2html422"
HREF="node18.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html403"
<A NAME="tex2html418"
HREF="node26.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html411"
<A NAME="tex2html424"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html414"
HREF="node28.html">Error Handling</A>
<B> Up:</B> <A NAME="tex2html410"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html404"
HREF="node26.html">Subroutine descr</A>
&nbsp; <B> <A NAME="tex2html412"
<B> Next:</B> <A NAME="tex2html427"
HREF="node28.html">Method: dump</A>
<B> Up:</B> <A NAME="tex2html423"
HREF="node18.html">User Interface</A>
<B> Previous:</B> <A NAME="tex2html419"
HREF="node26.html">Method descr</A>
&nbsp; <B> <A NAME="tex2html425"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A>
<H2><A NAME="SECTION00089000000000000000"></A><A NAME="sec:auxil"></A>
<BR>
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">Developers can add completely new smoother and/or solver classes
derived from the base objects in the library (see Remark&nbsp;2 in Section&nbsp;<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">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>
Auxiliary Methods
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
Various functionalities are implemented as additional methods of the
preconditioner object.
</BIG></BIG></BIG>
<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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
</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.&nbsp;<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="tex2html413"
HREF="node28.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html409"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html403"
HREF="node26.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html411"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html414"
HREF="node28.html">Error Handling</A>
<B> Up:</B> <A NAME="tex2html410"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html404"
HREF="node26.html">Subroutine descr</A>
&nbsp; <B> <A NAME="tex2html412"
HREF="node2.html">Contents</A></B>
<!--End of Navigation Panel-->
<UL CLASS="ChildLinks">
<LI><A NAME="tex2html428"
HREF="node28.html">Method: dump</A>
<LI><A NAME="tex2html429"
HREF="node29.html">Method: clone</A>
<LI><A NAME="tex2html430"
HREF="node30.html">Method: sizeof</A>
<LI><A NAME="tex2html431"
HREF="node31.html">Method: allocate_wrk</A>
<LI><A NAME="tex2html432"
HREF="node32.html">Method: free_wrk</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
</BODY>
</HTML>

@ -1,77 +1,93 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Error Handling</TITLE>
<META NAME="description" CONTENT="Error Handling">
<TITLE>Method: dump</TITLE>
<META NAME="description" CONTENT="Method: dump">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node29.html">
<LINK REL="previous" HREF="node27.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="up" HREF="node27.html">
<LINK REL="next" HREF="node29.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html425"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html443"
HREF="node29.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html421"
HREF="userhtml.html">
<A NAME="tex2html439"
HREF="node27.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html415"
<A NAME="tex2html433"
HREF="node27.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html423"
<A NAME="tex2html441"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html426"
HREF="node29.html">License</A>
<B> Up:</B> <A NAME="tex2html422"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html416"
HREF="node27.html">Adding new smoother and</A>
&nbsp; <B> <A NAME="tex2html424"
<B> Next:</B> <A NAME="tex2html444"
HREF="node29.html">Method: clone</A>
<B> Up:</B> <A NAME="tex2html440"
HREF="node27.html">Auxiliary Methods</A>
<B> Previous:</B> <A NAME="tex2html434"
HREF="node27.html">Auxiliary Methods</A>
&nbsp; <B> <A NAME="tex2html442"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:errors"></A>
<BR>
Error Handling
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<H3><A NAME="SECTION00089100000000000000">
Method: dump</A>
</H3><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
Dump on file.
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The error handling in MLD2P4 is based on the PSBLAS 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>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>amold</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>class(psb_</code><SPAN CLASS="textit">x</SPAN><code>_base_sparse_mat), intent(in), optional</code>. </BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The desired dynamic type for internal matrix
components; this allows e.g. running on GPUs; it needs not be the
same on all processes. See the PSBLAS User's Guide for
details [<A
HREF="node36.html#PSBLASGUIDE">13</A>]. </BIG></BIG></BIG></TD>
</TR>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
</BODY>

@ -1,100 +1,91 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>License</TITLE>
<META NAME="description" CONTENT="License">
<TITLE>Method: clone</TITLE>
<META NAME="description" CONTENT="Method: clone">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node30.html">
<LINK REL="previous" HREF="node28.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="up" HREF="node27.html">
<LINK REL="next" HREF="node30.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html437"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html455"
HREF="node30.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html433"
HREF="userhtml.html">
<A NAME="tex2html451"
HREF="node27.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html427"
<A NAME="tex2html445"
HREF="node28.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html435"
<A NAME="tex2html453"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html438"
HREF="node30.html">Bibliography</A>
<B> Up:</B> <A NAME="tex2html434"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html428"
HREF="node28.html">Error Handling</A>
&nbsp; <B> <A NAME="tex2html436"
<B> Next:</B> <A NAME="tex2html456"
HREF="node30.html">Method: sizeof</A>
<B> Up:</B> <A NAME="tex2html452"
HREF="node27.html">Auxiliary Methods</A>
<B> Previous:</B> <A NAME="tex2html446"
HREF="node28.html">Method: dump</A>
&nbsp; <B> <A NAME="tex2html454"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000110000000000000000"></A><A NAME="sec:license"></A>
<BR>
License
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<H3><A NAME="SECTION00089200000000000000">
Method: clone</A>
</H3><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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.5)
(C) Copyright 2008, 2010, 2012, 2015, 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">
</FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%clone(pout,info)</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
Create a (deep) copy of the preconditioner object.
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>pout</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>type(mld_</code><SPAN CLASS="textit">x</SPAN><code>prec_type), intent(out)</code>.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The copy of the preconditioner data structure. Note
that <SPAN CLASS="textit">x</SPAN> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></TD>
</TR>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>General Overview</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,53 +21,55 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html117"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html124"
HREF="node4.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html113"
<A NAME="tex2html120"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html107"
<A NAME="tex2html114"
HREF="node2.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html115"
<A NAME="tex2html122"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html118"
<B> Next:</B> <A NAME="tex2html125"
HREF="node4.html">Code Distribution</A>
<B> Up:</B> <A NAME="tex2html114"
<B> Up:</B> <A NAME="tex2html121"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html108"
<B> Previous:</B> <A NAME="tex2html115"
HREF="node2.html">Contents</A>
&nbsp; <B> <A NAME="tex2html116"
&nbsp; <B> <A NAME="tex2html123"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00030000000000000000"></A><A NAME="sec:overview"></A>
<BR>
General Overview
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<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
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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="node30.html#Briggs2000">3</A>,<A
HREF="node30.html#Stuben_01">23</A>,<A
HREF="node30.html#dd2_96">21</A>]),
HREF="node36.html#Briggs2000">3</A>,<A
HREF="node36.html#Stuben_01">23</A>,<A
HREF="node36.html#dd2_96">21</A>]),
to be used in the iterative solution of linear systems,
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<BR>
<DIV ALIGN="RIGHT">
<DIV ALIGN="RIGHT" CLASS="mathdisplay">
<!-- MATH
\begin{equation}
Ax=b,
\end{equation}
-->
<A NAME="system1"></A>
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="system1"></A><IMG
WIDTH="58" HEIGHT="30" BORDER="0"
@ -79,69 +77,73 @@ Ax=b,
ALT="\begin{displaymath}
Ax=b,
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(1)</TD></TR>
<TD CLASS="eqno" WIDTH=10 ALIGN="RIGHT">
(<SPAN CLASS="arabic">1</SPAN>)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
where <IMG
<BR CLEAR="ALL"></DIV><P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
where <SPAN CLASS="MATH"><IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img3.png"
ALT="$A$"> is a square, real or complex, sparse matrix. The name of the package comes from its original implementation, containing
ALT="$A$"></SPAN> is a square, real or complex, sparse matrix.
The name of the package comes from its original implementation, containing
multilevel additive and hybrid Schwarz preconditioners, as well as one-level additive
Schwarz preconditioners. The current version extends the original plan by including
multilevel cycles and smoothers widely used in multigrid methods.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The multilevel preconditioners implemented in MLD2P4 are obtained by combining
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The multilevel preconditioners implemented in MLD2P4 are obtained by combining
AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and
K-cycles&nbsp;[<A
HREF="node30.html#Briggs2000">3</A>,<A
HREF="node30.html#Notay2008">19</A>] are available, which allow to define
HREF="node36.html#Briggs2000">3</A>,<A
HREF="node36.html#Notay2008">19</A>] are available, which allow to define
almost all the preconditioners in the package, including the multilevel hybrid
Schwarz ones; a specific cycle is implemented to obtain multilevel additive
Schwarz preconditioners. The Jacobi, hybridforward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods
Schwarz preconditioners. The Jacobi, hybrid
forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods
are available as smoothers. An algebraic approach is used to generate a hierarchy of
coarse-level matrices and operators, without explicitly using any information on the
geometry of the original problem, e.g., the discretization of a PDE. To this end,
the smoothed aggregation technique&nbsp;[<A
HREF="node30.html#BREZINA_VANEK">2</A>,<A
HREF="node30.html#VANEK_MANDEL_BREZINA">25</A>]
HREF="node36.html#BREZINA_VANEK">2</A>,<A
HREF="node36.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,
and block-Jacobi solvers are available. All smoothers can be also exploited as one-level
preconditioners.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 is written in Fortran&nbsp;2003, following an
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">MLD2P4 is written in Fortran&nbsp;2003, following an
object-oriented design through the exploitation of features
such as abstract data type creation, type extension, functional overloading, and
dynamic memory management. The parallel implementation is based on a Single Program Multiple Data
dynamic memory management.
The parallel implementation is based on a Single Program Multiple Data
(SPMD) paradigm. Single and
double precision implementations of MLD2P4 are available for both the
real and the complex case, which can be used through a single
interface.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 has been designed to implement scalable and easy-to-use
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">MLD2P4 has been designed to implement scalable and easy-to-use
multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS)
computational framework&nbsp;[<A
HREF="node30.html#psblas_00">15</A>,<A
HREF="node30.html#PSBLAS3">14</A>]. PSBLAS provides basic linear algebra
HREF="node36.html#psblas_00">15</A>,<A
HREF="node36.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
a portable and efficient software infrastructure implementing ``de facto'' standard
a portable and efficient software infrastructure implementing &ldquo;de facto&rdquo; standard
parallel sparse linear algebra kernels, to pursue goals such as performance,
portability, modularity ed extensibility in the development of the preconditioner
package. On the other hand, the implementation of MLD2P4 has led to some
revisions and extentions of the original PSBLAS kernels.
The inter-process comunication required by MLD2P4 is encapsulated
in the PSBLAS routines;therefore, MLD2P4 can be run on any parallel machine where PSBLAS
in the PSBLAS routines;
therefore, MLD2P4 can be run on any parallel machine where PSBLAS
implementations are available.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 has a layered and modular software architecture where three main layers can be
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">MLD2P4 has a layered and modular software architecture where three main layers can be
identified. The lower layer consists of the PSBLAS kernels, the middle one implements
the construction and application phases of the preconditioners, and the upper one
provides a uniform interface to all the preconditioners.
@ -150,19 +152,19 @@ 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&nbsp;<A HREF="node27.html#sec:adding">7</A>).
</FONT></FONT></FONT>
Section&nbsp;<A HREF="node33.html#sec:adding">7</A>).
</BIG></BIG></BIG>
<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
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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 multilevel hierarchy from
the construction of the smoothers and solvers, and to allow for more flexibility
at each level. The software architecture described in&nbsp;[<A
HREF="node30.html#MLD2P4_TOMS">8</A>] has significantly
HREF="node36.html#MLD2P4_TOMS">8</A>] has significantly
evolved too, in order to fully exploit the Fortran&nbsp;2003 features implemented in PSBLAS 3.
However, compatibility with previous versions has been preserved.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">This guide is organized as follows. General information on the distribution of the source
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">This guide is organized as follows. General information on the distribution of the source
code is reported in Section&nbsp;<A HREF="node4.html#sec:distribution">2</A>, while details on the configuration
and installation of the package are given in Section&nbsp;<A HREF="node6.html#sec:building">3</A>. A short description
of the preconditioners implemented in MLD2P4 is provided in Section&nbsp;<A HREF="node12.html#sec:background">4</A>,
@ -171,35 +173,36 @@ preconditioners with the Krylov solvers implemented in PSBLAS are reported
in&nbsp;Section&nbsp;<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&nbsp;<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&nbsp;<A HREF="node27.html#sec:adding">7</A>.
through the addition of new smoothers and solvers is reported in Section&nbsp;<A HREF="node33.html#sec:adding">7</A>.
The error handling mechanism used by the package
is briefly described in Section&nbsp;<A HREF="node28.html#sec:errors">8</A>. The copyright terms concerning the
distribution and modification of MLD2P4 are reported in Appendix&nbsp;<A HREF="node29.html#sec:license">A</A>.
</FONT></FONT></FONT>
is briefly described in Section&nbsp;<A HREF="node34.html#sec:errors">8</A>. The copyright terms concerning the
distribution and modification of MLD2P4 are reported in Appendix&nbsp;<A HREF="node35.html#sec:license">A</A>.
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html117"
<A NAME="tex2html124"
HREF="node4.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html113"
<A NAME="tex2html120"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html107"
<A NAME="tex2html114"
HREF="node2.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html115"
<A NAME="tex2html122"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html118"
<B> Next:</B> <A NAME="tex2html125"
HREF="node4.html">Code Distribution</A>
<B> Up:</B> <A NAME="tex2html114"
<B> Up:</B> <A NAME="tex2html121"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html108"
<B> Previous:</B> <A NAME="tex2html115"
HREF="node2.html">Contents</A>
&nbsp; <B> <A NAME="tex2html116"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html123"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,179 +1,67 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Bibliography</TITLE>
<META NAME="description" CONTENT="Bibliography">
<TITLE>Method: sizeof</TITLE>
<META NAME="description" CONTENT="Method: sizeof">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<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="up" HREF="node27.html">
<LINK REL="next" HREF="node31.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html449"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html467"
HREF="node31.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html445"
HREF="userhtml.html">
<A NAME="tex2html463"
HREF="node27.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html439"
<A NAME="tex2html457"
HREF="node29.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html447"
<A NAME="tex2html465"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html450"
HREF="node31.html">About this document ...</A>
<B> Up:</B> <A NAME="tex2html446"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html440"
HREF="node29.html">License</A>
&nbsp; <B> <A NAME="tex2html448"
<B> Next:</B> <A NAME="tex2html468"
HREF="node31.html">Method: allocate_wrk</A>
<B> Up:</B> <A NAME="tex2html464"
HREF="node27.html">Auxiliary Methods</A>
<B> Previous:</B> <A NAME="tex2html458"
HREF="node29.html">Method: clone</A>
&nbsp; <B> <A NAME="tex2html466"
HREF="node2.html">Contents</A></B>
<BR><BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
</FONT></FONT></FONT>
<H2><A NAME="SECTION000120000000000000000">
Bibliography</A>
</H2><DL COMPACT><DD>
<H3><A NAME="SECTION00089300000000000000">
Method: sizeof</A>
</H3><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<P></P><DT><A NAME="MUMPS">1</A>
<DD>
P.&nbsp;R.&nbsp;Amestoy, C.&nbsp;Ashcraft, O.&nbsp;Boiteau, A.&nbsp;Buttari, J.&nbsp;L'Excellent, C.&nbsp;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.&nbsp;Brezina, P.&nbsp;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.&nbsp;L.&nbsp;Briggs, V.&nbsp;E.&nbsp;Henson, S.&nbsp;F.&nbsp;McCormick,
<EM>A Multigrid Tutorial, Second Edition</EM>,
SIAM, 2000.<P></P><DT><A NAME="para_04">4</A>
<DD>
A.&nbsp;Buttari, P.&nbsp;D'Ambra, D.&nbsp;di Serafino, S.&nbsp;Filippone,
<EM>Extending PSBLAS to Build Parallel Schwarz Preconditioners</EM>,
in J.&nbsp;Dongarra, K.&nbsp;Madsen, J.&nbsp;Wasniewski, editors,
Proceedings of PARA&nbsp;04 Workshop on State of the Art
in Scientific Computing, Lecture Notes in Computer Science,
Springer, 2005, 593-602.<P></P><DT><A NAME="aaecc_07">5</A>
<DD>
A.&nbsp;Buttari, P.&nbsp;D'Ambra, D.&nbsp;di&nbsp;Serafino, S.&nbsp;Filippone,
<EM>2LEV-D2P4: a package of high-performance preconditioners
for scientific and engineering applications</EM>,
Applicable Algebra in Engineering, Communications and Computing,
18 (3) 2007, 223-239.<P></P><DT><A NAME="CAI_SARKIS">6</A>
<DD>
X.&nbsp;C.&nbsp;Cai, M.&nbsp;Sarkis,
<EM>A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems</EM>,
SIAM Journal on Scientific Computing, 21 (2), 1999, 792-797.<P></P><DT><A NAME="apnum_07">7</A>
<DD>
P.&nbsp;D'Ambra, S.&nbsp;Filippone, D.&nbsp;di&nbsp;Serafino,
<EM>On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners</EM>,
Applied Numerical Mathematics, Elsevier Science,
57 (11-12), 2007, 1181-1196.<P></P><DT><A NAME="MLD2P4_TOMS">8</A>
<DD>
P.&nbsp;D'Ambra, D.&nbsp;di&nbsp;Serafino, S.&nbsp;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.&nbsp;A.&nbsp;Davis,
<EM>Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
Method with a Column Pre-ordering Strategy</EM>,
ACM Transactions on Mathematical Software, 30, 2004, 196-199.
(See also <TT>http://www.cise.ufl.edu/~davis/</TT>)<P></P><DT><A NAME="SUPERLU">10</A>
<DD>
J.&nbsp;W.&nbsp;Demmel, S.&nbsp;C.&nbsp;Eisenstat, J.&nbsp;R.&nbsp;Gilbert, X.&nbsp;S.&nbsp;Li, J.&nbsp;W.&nbsp;H.&nbsp;Liu,
<EM>A supernodal approach to sparse partial pivoting</EM>,
SIAM Journal on Matrix Analysis and Applications, 20 (3), 1999, 720-755.<P></P><DT><A NAME="blas3">11</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra, J.&nbsp;Du Croz, I.&nbsp;S.&nbsp;Duff, S.&nbsp;Hammarling,
<I>A set of Level 3 Basic Linear Algebra Subprograms</I>,
ACM Transactions on Mathematical Software, 16 (1) 1990, 1-17.<P></P><DT><A NAME="blas2">12</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra, J.&nbsp;Du Croz, S.&nbsp;Hammarling, R.&nbsp;J.&nbsp;Hanson,
<I>An extended set of FORTRAN Basic Linear Algebra Subprograms</I>,
ACM Transactions on Mathematical Software, 14 (1) 1988, 1-17.<P></P><DT><A NAME="PSBLASGUIDE">13</A>
<DD>
S.&nbsp;Filippone, A.&nbsp;Buttari,
<EM>PSBLAS 3.5.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library</EM>, 2012,
available from <TT>https://github.com/sfilippone/psblas3/tree/master/docs</TT>.<P></P><DT><A NAME="PSBLAS3">14</A>
<DD>
S.&nbsp;Filippone, A.&nbsp;Buttari,
<EM>Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003</EM>.
ACM Transactions on on Mathematical Software, 38 (4), 2012, art.&nbsp;23.<P></P><DT><A NAME="psblas_00">15</A>
<DD>
S.&nbsp;Filippone, M.&nbsp;Colajanni,
<EM>PSBLAS: A Library for Parallel Linear Algebra
Computation on Sparse Matrices</EM>,
ACM Transactions on Mathematical Software, 26 (4), 2000, 527-550.<P></P><DT><A NAME="MPI2">16</A>
<DD>
W.&nbsp;Gropp, S.&nbsp;Huss-Lederman, A.&nbsp;Lumsdaine, E.&nbsp;Lusk, B.&nbsp;Nitzberg, W.&nbsp;Saphir, M.&nbsp;Snir,
<EM>MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions</EM>,
MIT Press, 1998.<P></P><DT><A NAME="blas1">17</A>
<DD>
C.&nbsp;L.&nbsp;Lawson, R.&nbsp;J.&nbsp;Hanson, D.&nbsp;Kincaid, F.&nbsp;T.&nbsp;Krogh,
<I>Basic Linear Algebra Subprograms for FORTRAN usage</I>,
ACM Transactions on Mathematical Software, 5 (3), 1979, 308-323.<P></P><DT><A NAME="SUPERLUDIST">18</A>
<DD>
X.&nbsp;S.&nbsp;Li, J.&nbsp;W.&nbsp;Demmel,
<EM>SuperLU_DIST: A Scalable Distributed-memory
Sparse Direct Solver for Unsymmetric Linear Systems</EM>,
ACM Transactions on Mathematical Software, 29 (2), 2003, 110-140.<P></P><DT><A NAME="Notay2008">19</A>
<DD>
Y.&nbsp;Notay, P.&nbsp;S.&nbsp;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.&nbsp;Saad,
<EM>Iterative methods for sparse linear systems</EM>, 2nd edition, SIAM, 2003.<P></P><DT><A NAME="dd2_96">21</A>
<DD>
B.&nbsp;Smith, P.&nbsp;Bjorstad, W.&nbsp;Gropp,
<EM>Domain Decomposition: Parallel Multilevel Methods for Elliptic
Partial Differential Equations</EM>,
Cambridge University Press, 1996.<P></P><DT><A NAME="MPI1">22</A>
<DD>
M.&nbsp;Snir, S.&nbsp;Otto, S.&nbsp;Huss-Lederman, D.&nbsp;Walker, J.&nbsp;Dongarra,
<EM>MPI: The Complete Reference. Volume 1 - The MPI Core</EM>, second edition,
MIT Press, 1998.<P></P><DT><A NAME="Stuben_01">23</A>
<DD>
K.&nbsp;St&#252;ben,
<EM>An Introduction to Algebraic Multigrid</EM>,
in A.&nbsp;Sch&#252;ller, U.&nbsp;Trottenberg, C.&nbsp;Oosterlee, Multigrid,
Academic Press, 2001.<P></P><DT><A NAME="TUMINARO_TONG">24</A>
<DD>
R.&nbsp;S.&nbsp;Tuminaro, C.&nbsp;Tong,
<EM>Parallel Smoothed Aggregation Multigrid: Aggregation Strategies on Massively Parallel Machines</EM>, in J. Donnelley, editor, Proceedings of SuperComputing 2000, Dallas, 2000.<P></P><DT><A NAME="VANEK_MANDEL_BREZINA">25</A>
<DD>
P.&nbsp;Vanek, J.&nbsp;Mandel, M.&nbsp;Brezina,
<EM>Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems</EM>,
Computing, 56 (3) 1996, 179-196.
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>sz = p%sizeof()</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
</DL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
Return memory footprint in bytes.
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><BR><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
</BODY>
</HTML>

@ -1,70 +1,127 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>About this document ...</TITLE>
<META NAME="description" CONTENT="About this document ...">
<TITLE>Method: allocate_wrk</TITLE>
<META NAME="description" CONTENT="Method: allocate_wrk">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node32.html">
<LINK REL="previous" HREF="node30.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="up" HREF="node27.html">
<LINK REL="next" HREF="node32.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png">
<A NAME="tex2html455"
HREF="userhtml.html">
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html479"
HREF="node32.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html475"
HREF="node27.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html451"
<A NAME="tex2html469"
HREF="node30.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html457"
<A NAME="tex2html477"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Up:</B> <A NAME="tex2html456"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html452"
HREF="node30.html">Bibliography</A>
&nbsp; <B> <A NAME="tex2html458"
<B> Next:</B> <A NAME="tex2html480"
HREF="node32.html">Method: free_wrk</A>
<B> Up:</B> <A NAME="tex2html476"
HREF="node27.html">Auxiliary Methods</A>
<B> Previous:</B> <A NAME="tex2html470"
HREF="node30.html">Method: sizeof</A>
&nbsp; <B> <A NAME="tex2html478"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<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)
<H3><A NAME="SECTION00089400000000000000">
Method: allocate_wrk</A>
</H3><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
Copyright &#169; 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 &#169; 1997, 1998, 1999,
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
Mathematics Department, Macquarie University, Sydney.
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%allocate_wrk(info[, vmold])</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
The command line arguments were: <BR>
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
Allocate internal work vectors. Each application of the preconditioner
uses a number of work vectors which are allocated internally as
necessary; therefore allocation and deallocation of memory occurs
multiple times during the execution of a Krylov method. In most cases
this strategy is perfectly acceptable, but
on some platforms, most notably GPUs, memory allocation is
a slow operation, and the default behaviour would lead to a
slowdown. This method allows to trade space for time by preallocating
the internal workspace outside of the invocation of a Krylov
method. When using GPUs or other specialized devices, the <code>vmold</code>
argument is also necessary to ensure the internal work vectors are of
the appropriate dynamic type to exploit the accelerator hardware; when
allocation occurs internally this is taken care of based on the dynamic
type of the <code>x</code> argument to the <code>apply</code> method.
</BIG></BIG></BIG>
<P>
The translation was initiated by Salvatore Filippone on 2017-10-23<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BR><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>vmold</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>class(psb_</code><SPAN CLASS="textit">x</SPAN><code>_base_vect_type), intent(in), optional</code>. </BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The desired dynamic type for internal vector
components; this allows e.g. running on GPUs. </BIG></BIG></BIG></TD>
</TR>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html479"
HREF="node32.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html475"
HREF="node27.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html469"
HREF="node30.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html477"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html480"
HREF="node32.html">Method: free_wrk</A>
<B> Up:</B> <A NAME="tex2html476"
HREF="node27.html">Auxiliary Methods</A>
<B> Previous:</B> <A NAME="tex2html470"
HREF="node30.html">Method: sizeof</A>
&nbsp; <B> <A NAME="tex2html478"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -0,0 +1,85 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Method: free_wrk</TITLE>
<META NAME="description" CONTENT="Method: free_wrk">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node31.html">
<LINK REL="up" HREF="node27.html">
<LINK REL="next" HREF="node33.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html489"
HREF="node33.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html485"
HREF="node27.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html481"
HREF="node31.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html487"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html490"
HREF="node33.html">Adding new smoother and</A>
<B> Up:</B> <A NAME="tex2html486"
HREF="node27.html">Auxiliary Methods</A>
<B> Previous:</B> <A NAME="tex2html482"
HREF="node31.html">Method: allocate_wrk</A>
&nbsp; <B> <A NAME="tex2html488"
HREF="node2.html">Contents</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00089500000000000000">
Method: free_wrk</A>
</H3><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><code>call p%free_wrk(info)</code>
<BR></BIG></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
Deallocate internal work vectors.
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><B>Arguments</B></BIG> </BIG></BIG></BIG>
<P></P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>info</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>integer, intent(out)</code>.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node34.html#sec:errors">8</A> for details.</BIG></BIG></BIG></TD>
</TR>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
</BODY>
</HTML>

@ -0,0 +1,183 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<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">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node34.html">
<LINK REL="previous" HREF="node18.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node34.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html501"
HREF="node34.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html497"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html491"
HREF="node32.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html499"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html502"
HREF="node34.html">Error Handling</A>
<B> Up:</B> <A NAME="tex2html498"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html492"
HREF="node32.html">Method: free_wrk</A>
&nbsp; <B> <A NAME="tex2html500"
HREF="node2.html">Contents</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00090000000000000000"></A><A NAME="sec:adding"></A>
<BR>
Adding new smoother and solver objects to MLD2P4
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Developers can add completely new smoother and/or solver classes
derived from the base objects in the library (see Remark&nbsp;2 in Section&nbsp;<A HREF="node20.html#sec:precset">6.2</A>),
without recompiling the library itself.
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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 &ldquo;solver&rdquo; 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.
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Once the new smoother/solver class has been developed, to use it in
the context of the multilevel preconditioners it is necessary to:
</BIG></BIG></BIG>
<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><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
The new solver object is then dynamically included in the
preconditioner structure, and acts as a <SPAN CLASS="textit">mold</SPAN> to which the
preconditioner will conform, even though the MLD2P4 library has not
been modified to account for this new development.
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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.
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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).
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The interfaces for the calls shown above are defined using
</BIG></BIG></BIG>
<DIV ALIGN="CENTER"><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><TABLE CELLPADDING=3>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>smoother</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>class(mld_x_base_smoother_type)</code> </BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The user-defined new smoother to be employed in the
preconditioner.</BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
<code>solver</code> </BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> <code>class(mld_x_base_solver_type)</code> </BIG></BIG></BIG></TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=40><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> The user-defined new solver to be employed in the
preconditioner.
</BIG></BIG></BIG></TD>
</TR>
</TABLE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG></DIV><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
The other arguments are defined in the way described in
Sec.&nbsp;<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:
</BIG></BIG></BIG><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><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html501"
HREF="node34.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html497"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html491"
HREF="node32.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html499"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html502"
HREF="node34.html">Error Handling</A>
<B> Up:</B> <A NAME="tex2html498"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html492"
HREF="node32.html">Method: free_wrk</A>
&nbsp; <B> <A NAME="tex2html500"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -0,0 +1,75 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<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">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node35.html">
<LINK REL="previous" HREF="node33.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node35.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html513"
HREF="node35.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html509"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html503"
HREF="node33.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html511"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html514"
HREF="node35.html">License</A>
<B> Up:</B> <A NAME="tex2html510"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html504"
HREF="node33.html">Adding new smoother and</A>
&nbsp; <B> <A NAME="tex2html512"
HREF="node2.html">Contents</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000100000000000000000"></A><A NAME="sec:errors"></A>
<BR>
Error Handling
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The error handling in MLD2P4 is based on the PSBLAS 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="node36.html#PSBLASGUIDE">13</A>].
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG>
<BR><HR>
</BODY>
</HTML>

@ -0,0 +1,98 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>License</TITLE>
<META NAME="description" CONTENT="License">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node36.html">
<LINK REL="previous" HREF="node34.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node36.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html525"
HREF="node36.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html521"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html515"
HREF="node34.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html523"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html526"
HREF="node36.html">Bibliography</A>
<B> Up:</B> <A NAME="tex2html522"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html516"
HREF="node34.html">Error Handling</A>
&nbsp; <B> <A NAME="tex2html524"
HREF="node2.html">Contents</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000110000000000000000"></A><A NAME="sec:license"></A>
<BR>
License
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The MLD2P4 is freely distributable under the following copyright
terms: </BIG></BIG></BIG><PRE>
MLD2P4 version 2.1
MultiLevel Domain Decomposition Parallel Preconditioners Package
based on PSBLAS (Parallel Sparse BLAS version 3.5)
(C) Copyright 2008, 2010, 2012, 2015, 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
&ldquo;AS IS&rdquo; 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><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG>
<BR><HR>
</BODY>
</HTML>

@ -0,0 +1,200 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Bibliography</TITLE>
<META NAME="description" CONTENT="Bibliography">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node37.html">
<LINK REL="previous" HREF="node35.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node37.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html537"
HREF="node37.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html533"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html527"
HREF="node35.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html535"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html538"
HREF="node37.html">About this document ...</A>
<B> Up:</B> <A NAME="tex2html534"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html528"
HREF="node35.html">License</A>
&nbsp; <B> <A NAME="tex2html536"
HREF="node2.html">Contents</A></B>
<BR><BR></DIV>
<!--End of Navigation Panel-->
</BIG></BIG></BIG>
<H2><A NAME="SECTION000120000000000000000">
Bibliography</A>
</H2><DL COMPACT><DD>
<P>
<P></P><DT><A NAME="MUMPS">1</A>
<DD>
P.&nbsp;R.&nbsp;Amestoy, C.&nbsp;Ashcraft, O.&nbsp;Boiteau, A.&nbsp;Buttari, J.&nbsp;L'Excellent, C.&nbsp;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.&nbsp;Brezina, P.&nbsp;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.&nbsp;L.&nbsp;Briggs, V.&nbsp;E.&nbsp;Henson, S.&nbsp;F.&nbsp;McCormick,
<EM>A Multigrid Tutorial, Second Edition</EM>,
SIAM, 2000.
<P></P><DT><A NAME="para_04">4</A>
<DD>
A.&nbsp;Buttari, P.&nbsp;D'Ambra, D.&nbsp;di Serafino, S.&nbsp;Filippone,
<EM>Extending PSBLAS to Build Parallel Schwarz Preconditioners</EM>,
in J.&nbsp;Dongarra, K.&nbsp;Madsen, J.&nbsp;Wasniewski, editors,
Proceedings of PARA&nbsp;04 Workshop on State of the Art
in Scientific Computing, Lecture Notes in Computer Science,
Springer, 2005, 593-602.
<P></P><DT><A NAME="aaecc_07">5</A>
<DD>
A.&nbsp;Buttari, P.&nbsp;D'Ambra, D.&nbsp;di&nbsp;Serafino, S.&nbsp;Filippone,
<EM>2LEV-D2P4: a package of high-performance preconditioners
for scientific and engineering applications</EM>,
Applicable Algebra in Engineering, Communications and Computing,
18 (3) 2007, 223-239.
<P></P><DT><A NAME="CAI_SARKIS">6</A>
<DD>
X.&nbsp;C.&nbsp;Cai, M.&nbsp;Sarkis,
<EM>A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems</EM>,
SIAM Journal on Scientific Computing, 21 (2), 1999, 792-797.
<P></P><DT><A NAME="apnum_07">7</A>
<DD>
P.&nbsp;D'Ambra, S.&nbsp;Filippone, D.&nbsp;di&nbsp;Serafino,
<EM>On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners</EM>,
Applied Numerical Mathematics, Elsevier Science,
57 (11-12), 2007, 1181-1196.
<P></P><DT><A NAME="MLD2P4_TOMS">8</A>
<DD>
P.&nbsp;D'Ambra, D.&nbsp;di&nbsp;Serafino, S.&nbsp;Filippone,
<SPAN CLASS="textit">MLD2P4: a Package of Parallel Multilevel
Algebraic Domain Decomposition Preconditioners
in Fortran 95</SPAN>, ACM Trans. Math. Softw., 37(3), 2010, art. 30.
<P></P><DT><A NAME="UMFPACK">9</A>
<DD>
T.&nbsp;A.&nbsp;Davis,
<EM>Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
Method with a Column Pre-ordering Strategy</EM>,
ACM Transactions on Mathematical Software, 30, 2004, 196-199.
(See also <TT>http://www.cise.ufl.edu/~davis/</TT>)
<P></P><DT><A NAME="SUPERLU">10</A>
<DD>
J.&nbsp;W.&nbsp;Demmel, S.&nbsp;C.&nbsp;Eisenstat, J.&nbsp;R.&nbsp;Gilbert, X.&nbsp;S.&nbsp;Li, J.&nbsp;W.&nbsp;H.&nbsp;Liu,
<EM>A supernodal approach to sparse partial pivoting</EM>,
SIAM Journal on Matrix Analysis and Applications, 20 (3), 1999, 720-755.
<P></P><DT><A NAME="blas3">11</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra, J.&nbsp;Du Croz, I.&nbsp;S.&nbsp;Duff, S.&nbsp;Hammarling,
<SPAN CLASS="textit">A set of Level 3 Basic Linear Algebra Subprograms</SPAN>,
ACM Transactions on Mathematical Software, 16 (1) 1990, 1-17.
<P></P><DT><A NAME="blas2">12</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra, J.&nbsp;Du Croz, S.&nbsp;Hammarling, R.&nbsp;J.&nbsp;Hanson,
<SPAN CLASS="textit">An extended set of FORTRAN Basic Linear Algebra Subprograms</SPAN>,
ACM Transactions on Mathematical Software, 14 (1) 1988, 1-17.
<P></P><DT><A NAME="PSBLASGUIDE">13</A>
<DD>
S.&nbsp;Filippone, A.&nbsp;Buttari,
<EM>PSBLAS 3.5.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library</EM>, 2012,
available from <TT>https://github.com/sfilippone/psblas3/tree/master/docs</TT>.
<P></P><DT><A NAME="PSBLAS3">14</A>
<DD>
S.&nbsp;Filippone, A.&nbsp;Buttari,
<EM>Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003</EM>.
ACM Transactions on on Mathematical Software, 38 (4), 2012, art.&nbsp;23.
<P></P><DT><A NAME="psblas_00">15</A>
<DD>
S.&nbsp;Filippone, M.&nbsp;Colajanni,
<EM>PSBLAS: A Library for Parallel Linear Algebra
Computation on Sparse Matrices</EM>,
ACM Transactions on Mathematical Software, 26 (4), 2000, 527-550.
<P></P><DT><A NAME="MPI2">16</A>
<DD>
W.&nbsp;Gropp, S.&nbsp;Huss-Lederman, A.&nbsp;Lumsdaine, E.&nbsp;Lusk, B.&nbsp;Nitzberg, W.&nbsp;Saphir, M.&nbsp;Snir,
<EM>MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions</EM>,
MIT Press, 1998.
<P></P><DT><A NAME="blas1">17</A>
<DD>
C.&nbsp;L.&nbsp;Lawson, R.&nbsp;J.&nbsp;Hanson, D.&nbsp;Kincaid, F.&nbsp;T.&nbsp;Krogh,
<SPAN CLASS="textit">Basic Linear Algebra Subprograms for FORTRAN usage</SPAN>,
ACM Transactions on Mathematical Software, 5 (3), 1979, 308-323.
<P></P><DT><A NAME="SUPERLUDIST">18</A>
<DD>
X.&nbsp;S.&nbsp;Li, J.&nbsp;W.&nbsp;Demmel,
<EM>SuperLU_DIST: A Scalable Distributed-memory
Sparse Direct Solver for Unsymmetric Linear Systems</EM>,
ACM Transactions on Mathematical Software, 29 (2), 2003, 110-140.
<P></P><DT><A NAME="Notay2008">19</A>
<DD>
Y.&nbsp;Notay, P.&nbsp;S.&nbsp;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.&nbsp;Saad,
<EM>Iterative methods for sparse linear systems</EM>, 2nd edition, SIAM, 2003.
<P></P><DT><A NAME="dd2_96">21</A>
<DD>
B.&nbsp;Smith, P.&nbsp;Bjorstad, W.&nbsp;Gropp,
<EM>Domain Decomposition: Parallel Multilevel Methods for Elliptic
Partial Differential Equations</EM>,
Cambridge University Press, 1996.
<P></P><DT><A NAME="MPI1">22</A>
<DD>
M.&nbsp;Snir, S.&nbsp;Otto, S.&nbsp;Huss-Lederman, D.&nbsp;Walker, J.&nbsp;Dongarra,
<EM>MPI: The Complete Reference. Volume 1 - The MPI Core</EM>, second edition,
MIT Press, 1998.
<P></P><DT><A NAME="Stuben_01">23</A>
<DD>
K.&nbsp;St&#252;ben,
<EM>An Introduction to Algebraic Multigrid</EM>,
in A.&nbsp;Sch&#252;ller, U.&nbsp;Trottenberg, C.&nbsp;Oosterlee, Multigrid,
Academic Press, 2001.
<P></P><DT><A NAME="TUMINARO_TONG">24</A>
<DD>
R.&nbsp;S.&nbsp;Tuminaro, C.&nbsp;Tong,
<EM>Parallel Smoothed Aggregation Multigrid: Aggregation Strategies on Massively Parallel Machines</EM>, in J. Donnelley, editor, Proceedings of SuperComputing 2000, Dallas, 2000.
<P></P><DT><A NAME="VANEK_MANDEL_BREZINA">25</A>
<DD>
P.&nbsp;Vanek, J.&nbsp;Mandel, M.&nbsp;Brezina,
<EM>Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems</EM>,
Computing, 56 (3) 1996, 179-196.
<P>
</DL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><BR><HR>
</BODY>
</HTML>

@ -0,0 +1,67 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>About this document ...</TITLE>
<META NAME="description" CONTENT="About this document ...">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node36.html">
<LINK REL="up" HREF="userhtml.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png">
<A NAME="tex2html543"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html539"
HREF="node36.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html545"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Up:</B> <A NAME="tex2html544"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html540"
HREF="node36.html">Bibliography</A>
&nbsp; <B> <A NAME="tex2html546"
HREF="node2.html">Contents</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000130000000000000000">
About this document ...</A>
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG><P>
This document was generated using the
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2017.2 (Released Jan 23, 2017)
<P>
Copyright &#169; 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
<BR>
Copyright &#169; 1997, 1998, 1999,
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
Mathematics Department, Macquarie University, Sydney.
<P>
The command line arguments were: <BR>
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
<P>
The translation was initiated on 2018-01-11<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
</BODY>
</HTML>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Code Distribution</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,57 +21,58 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html129"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html136"
HREF="node5.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html125"
<A NAME="tex2html132"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html119"
<A NAME="tex2html126"
HREF="node3.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html127"
<A NAME="tex2html134"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html130"
<B> Next:</B> <A NAME="tex2html137"
HREF="node5.html">Contributors</A>
<B> Up:</B> <A NAME="tex2html126"
<B> Up:</B> <A NAME="tex2html133"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html120"
<B> Previous:</B> <A NAME="tex2html127"
HREF="node3.html">General Overview</A>
&nbsp; <B> <A NAME="tex2html128"
&nbsp; <B> <A NAME="tex2html135"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00040000000000000000"></A><A NAME="sec:distribution"></A>
<BR>
Code Distribution
</H1><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
MLD2P4 is available from the web site
</FONT></FONT></FONT>
<BLOCKQUOTE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"><TT>https://github.com/sfilippone/mld2p4-2</TT>
</FONT></FONT></FONT></BLOCKQUOTE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</BIG></BIG></BIG>
<BLOCKQUOTE><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"><TT>https://github.com/sfilippone/mld2p4-2</TT>
</BIG></BIG></BIG></BLOCKQUOTE><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
where contact points for further information can be also found.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The software is available under a modified BSD license, as specified
in Appendix&nbsp;<A HREF="node29.html#sec:license">A</A>; please note that some of the optional
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The software is available under a modified BSD license, as specified
in Appendix&nbsp;<A HREF="node35.html#sec:license">A</A>; please note that some of the optional
third party libraries may be licensed under a different and more
stringent license, most notably the GPL, and this should be taken into
account when treating derived works.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The library defines a version string with the
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The library defines a version string with the
constant
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<BR><P></P>
<DIV ALIGN="CENTER">
<DIV ALIGN="CENTER" CLASS="mathdisplay">
<!-- MATH
\begin{displaymath}
\verb|mld_version_string_|
@ -88,17 +85,17 @@ constant
ALT="\begin{displaymath}\verb\vert mld_version_string_\vert\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
whose current value is <code>2.1.0</code>.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html131"
<UL CLASS="ChildLinks">
<LI><A NAME="tex2html138"
HREF="node5.html">Contributors</A>
</UL>
<!--End of Table of Child-Links-->

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Contributors</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -24,49 +20,50 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html140"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html147"
HREF="node6.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html136"
<A NAME="tex2html143"
HREF="node4.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html132"
<A NAME="tex2html139"
HREF="node4.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html138"
<A NAME="tex2html145"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html141"
<B> Next:</B> <A NAME="tex2html148"
HREF="node6.html">Configuring and Building MLD2P4</A>
<B> Up:</B> <A NAME="tex2html137"
<B> Up:</B> <A NAME="tex2html144"
HREF="node4.html">Code Distribution</A>
<B> Previous:</B> <A NAME="tex2html133"
<B> Previous:</B> <A NAME="tex2html140"
HREF="node4.html">Code Distribution</A>
&nbsp; <B> <A NAME="tex2html139"
&nbsp; <B> <A NAME="tex2html146"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00041000000000000000">
Contributors</A>
</H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
Contributors to version 2:
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<UL>
<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>Daniela di Serafino, University of Campania &ldquo;L. Vanvitelli&rdquo;, Caserta, IT;
</LI>
<LI>Ambra Abdullahi Hassan, University of Rome ``Tor Vergata'', IT.
<LI>Ambra Abdullahi Hassan, University of Rome &ldquo;Tor Vergata&rdquo;, IT.
</LI>
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</UL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
Contributors to version 1:
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<UL>
<LI>Salvatore Filippone;
</LI>
@ -76,8 +73,8 @@ Contributors to version 1:
</LI>
<LI>Alfredo Buttari, CNRS-IRIT, Toulouse, F.
</LI>
</UL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</FONT></FONT></FONT>
</UL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</BIG></BIG></BIG>
<BR><HR>
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Configuring and Building MLD2P4</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,45 +21,46 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html152"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html159"
HREF="node7.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html148"
<A NAME="tex2html155"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html142"
<A NAME="tex2html149"
HREF="node5.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html150"
<A NAME="tex2html157"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html153"
<B> Next:</B> <A NAME="tex2html160"
HREF="node7.html">Prerequisites</A>
<B> Up:</B> <A NAME="tex2html149"
<B> Up:</B> <A NAME="tex2html156"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html143"
<B> Previous:</B> <A NAME="tex2html150"
HREF="node5.html">Contributors</A>
&nbsp; <B> <A NAME="tex2html151"
&nbsp; <B> <A NAME="tex2html158"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--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">
</H1><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">MLD2P4 is implemented almost entirely in Fortran&nbsp;2003, with some
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">MLD2P4 is implemented almost entirely in Fortran&nbsp;2003, with some
interfaces to external libraries in C; the Fortran compiler
must support the Fortran&nbsp;2003 standard plus the extension <code>MOLD=</code>
feature, which enhances the usability of <code>ALLOCATE</code>.
@ -72,58 +69,59 @@ 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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Building MLD2P4 requires some base libraries (see Section&nbsp;<A HREF="node7.html#sec:prerequisites">3.1</A>);
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Building MLD2P4 requires some base libraries (see Section&nbsp;<A HREF="node7.html#sec:prerequisites">3.1</A>);
interfaces to optional third-party libraries, which extend the functionalities of MLD2P4
(see Section&nbsp;<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
&ldquo;developer&rdquo; 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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html154"
<UL CLASS="ChildLinks">
<LI><A NAME="tex2html161"
HREF="node7.html">Prerequisites</A>
<LI><A NAME="tex2html155"
<LI><A NAME="tex2html162"
HREF="node8.html">Optional third party libraries</A>
<LI><A NAME="tex2html156"
<LI><A NAME="tex2html163"
HREF="node9.html">Configuration options</A>
<LI><A NAME="tex2html157"
<LI><A NAME="tex2html164"
HREF="node10.html">Bug reporting</A>
<LI><A NAME="tex2html158"
<LI><A NAME="tex2html165"
HREF="node11.html">Example and test programs</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html152"
<A NAME="tex2html159"
HREF="node7.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html148"
<A NAME="tex2html155"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html142"
<A NAME="tex2html149"
HREF="node5.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html150"
<A NAME="tex2html157"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html153"
<B> Next:</B> <A NAME="tex2html160"
HREF="node7.html">Prerequisites</A>
<B> Up:</B> <A NAME="tex2html149"
<B> Up:</B> <A NAME="tex2html156"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html143"
<B> Previous:</B> <A NAME="tex2html150"
HREF="node5.html">Contributors</A>
&nbsp; <B> <A NAME="tex2html151"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html158"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Prerequisites</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,44 +21,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html169"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html176"
HREF="node8.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html165"
<A NAME="tex2html172"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html159"
<A NAME="tex2html166"
HREF="node6.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html167"
<A NAME="tex2html174"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html170"
<B> Next:</B> <A NAME="tex2html177"
HREF="node8.html">Optional third party libraries</A>
<B> Up:</B> <A NAME="tex2html166"
<B> Up:</B> <A NAME="tex2html173"
HREF="node6.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html160"
<B> Previous:</B> <A NAME="tex2html167"
HREF="node6.html">Configuring and Building MLD2P4</A>
&nbsp; <B> <A NAME="tex2html168"
&nbsp; <B> <A NAME="tex2html175"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00051000000000000000"></A><A NAME="sec:prerequisites"></A>
<BR>
Prerequisites
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The following base libraries are needed:
</FONT></FONT></FONT><DL>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The following base libraries are needed:
</BIG></BIG></BIG><DL>
<DT><STRONG>BLAS</STRONG></DT>
<DD>[<A
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
HREF="node36.html#blas3">11</A>,<A
HREF="node36.html#blas2">12</A>,<A
HREF="node36.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"
@ -85,50 +82,51 @@ in the make.inc file of the LAPACK library.
</DD>
<DT><STRONG>MPI</STRONG></DT>
<DD>[<A
HREF="node30.html#MPI2">16</A>,<A
HREF="node30.html#MPI1">22</A>] A version of MPI is available on most
HREF="node36.html#MPI2">16</A>,<A
HREF="node36.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="node30.html#PSBLASGUIDE">13</A>,<A
HREF="node30.html#psblas_00">15</A>] Parallel Sparse BLAS (PSBLAS) is
HREF="node36.html#PSBLASGUIDE">13</A>,<A
HREF="node36.html#psblas_00">15</A>] Parallel Sparse BLAS (PSBLAS) is
available from <TT><A NAME="tex2html4"
HREF="github.com/sfilippone/psblas3">github.com/sfilippone/psblas3</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">
</DL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html169"
<A NAME="tex2html176"
HREF="node8.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html165"
<A NAME="tex2html172"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html159"
<A NAME="tex2html166"
HREF="node6.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html167"
<A NAME="tex2html174"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html170"
<B> Next:</B> <A NAME="tex2html177"
HREF="node8.html">Optional third party libraries</A>
<B> Up:</B> <A NAME="tex2html166"
<B> Up:</B> <A NAME="tex2html173"
HREF="node6.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html160"
<B> Previous:</B> <A NAME="tex2html167"
HREF="node6.html">Configuring and Building MLD2P4</A>
&nbsp; <B> <A NAME="tex2html168"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html175"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Optional third party libraries</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,46 +21,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html181"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html188"
HREF="node9.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html177"
<A NAME="tex2html184"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html171"
<A NAME="tex2html178"
HREF="node7.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html179"
<A NAME="tex2html186"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html182"
<B> Next:</B> <A NAME="tex2html189"
HREF="node9.html">Configuration options</A>
<B> Up:</B> <A NAME="tex2html178"
<B> Up:</B> <A NAME="tex2html185"
HREF="node6.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html172"
<B> Previous:</B> <A NAME="tex2html179"
HREF="node7.html">Prerequisites</A>
&nbsp; <B> <A NAME="tex2html180"
&nbsp; <B> <A NAME="tex2html187"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<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>
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">We provide interfaces to the following third-party software libraries;
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">We provide interfaces to the following third-party software libraries;
note that these are optional, but if you enable them some defaults
for multilevel preconditioners may change to reflect their presence.
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><DL>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG><DL>
<DT><STRONG>UMFPACK</STRONG></DT>
<DD>[<A
HREF="node30.html#UMFPACK">9</A>]
HREF="node36.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>;
@ -75,7 +72,7 @@ for multilevel preconditioners may change to reflect their presence.
</DD>
<DT><STRONG>MUMPS</STRONG></DT>
<DD>[<A
HREF="node30.html#MUMPS">1</A>]
HREF="node36.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
@ -84,7 +81,7 @@ for multilevel preconditioners may change to reflect their presence.
</DD>
<DT><STRONG>SuperLU</STRONG></DT>
<DD>[<A
HREF="node30.html#SUPERLU">10</A>]
HREF="node36.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
@ -95,7 +92,7 @@ for multilevel preconditioners may change to reflect their presence.
</DD>
<DT><STRONG>SuperLU_Dist</STRONG></DT>
<DD>[<A
HREF="node30.html#SUPERLUDIST">18</A>]
HREF="node36.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.
@ -107,31 +104,32 @@ for multilevel preconditioners may change to reflect their presence.
<TT><A NAME="tex2html8"
HREF="glaros.dtc.umn.edu/gkhome/metis/parmetis/overview">glaros.dtc.umn.edu/gkhome/metis/parmetis/overview</A></TT>.
</DD>
</DL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</DL><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html181"
<A NAME="tex2html188"
HREF="node9.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html177"
<A NAME="tex2html184"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html171"
<A NAME="tex2html178"
HREF="node7.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html179"
<A NAME="tex2html186"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html182"
<B> Next:</B> <A NAME="tex2html189"
HREF="node9.html">Configuration options</A>
<B> Up:</B> <A NAME="tex2html178"
<B> Up:</B> <A NAME="tex2html185"
HREF="node6.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html172"
<B> Previous:</B> <A NAME="tex2html179"
HREF="node7.html">Prerequisites</A>
&nbsp; <B> <A NAME="tex2html180"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html187"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Configuration options</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -25,51 +21,52 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html193"
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html200"
HREF="node10.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html189"
<A NAME="tex2html196"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html183"
<A NAME="tex2html190"
HREF="node8.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html191"
<A NAME="tex2html198"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html194"
<B> Next:</B> <A NAME="tex2html201"
HREF="node10.html">Bug reporting</A>
<B> Up:</B> <A NAME="tex2html190"
<B> Up:</B> <A NAME="tex2html197"
HREF="node6.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html184"
<B> Previous:</B> <A NAME="tex2html191"
HREF="node8.html">Optional third party libraries</A>
&nbsp; <B> <A NAME="tex2html192"
&nbsp; <B> <A NAME="tex2html199"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00053000000000000000">
Configuration options</A>
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<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
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">As a minimal example consider the following:
</FONT></FONT></FONT><PRE>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">As a minimal example consider the following:
</BIG></BIG></BIG><PRE>
./configure --with-psblas=PSB-INSTALL-DIR
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</PRE><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
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>
</BIG></BIG></BIG><PRE>
`configure' configures MLD2P4 2.1 to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
@ -226,61 +223,62 @@ 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 &lt;https://github.com/sfilippone/mld2p4-2/issues&gt;.
</PRE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
</PRE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">For instance, if a user has built and installed PSBLAS 3.5 under the
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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>
</BIG></BIG></BIG><PRE>
./configure --with-psblas=/opt/psblas-3.5/ \
--with-umfpackincdir=/usr/include/suitesparse/
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</PRE><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To use the MUMPS solver package,
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">To build the library the user will now enter
</FONT></FONT></FONT><PRE>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">To build the library the user will now enter
</BIG></BIG></BIG><PRE>
make
</PRE><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
</PRE><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
followed (optionally) by
</FONT></FONT></FONT><PRE>
</BIG></BIG></BIG><PRE>
make install
</PRE><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
</PRE><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html193"
<A NAME="tex2html200"
HREF="node10.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html189"
<A NAME="tex2html196"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html183"
<A NAME="tex2html190"
HREF="node8.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html191"
<A NAME="tex2html198"
HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html194"
<B> Next:</B> <A NAME="tex2html201"
HREF="node10.html">Bug reporting</A>
<B> Up:</B> <A NAME="tex2html190"
<B> Up:</B> <A NAME="tex2html197"
HREF="node6.html">Configuring and Building MLD2P4</A>
<B> Previous:</B> <A NAME="tex2html184"
<B> Previous:</B> <A NAME="tex2html191"
HREF="node8.html">Optional third party libraries</A>
&nbsp; <B> <A NAME="tex2html192"
HREF="node2.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html199"
HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->
</BODY>

@ -1,10 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--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:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>userhtml</TITLE>
@ -13,7 +9,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 v2012">
<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
@ -22,7 +18,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
</HEAD>
<BODY >
<!--Navigation Panel-->
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html25"
HREF="node1.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
@ -37,30 +34,30 @@ original version by: Nikos Drakos, CBLU, University of Leeds
&nbsp; <B> <A NAME="tex2html24"
HREF="node2.html">Contents</A></B>
<BR>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<FONT SIZE="+2"><B>MLD2P4
<BIG CLASS="XXLARGE"><B>MLD2P4
<BR>
<BR>
User's and Reference Guide</B></FONT>
<BR><I><FONT SIZE="+1">A guide for the MultiLevel Domain Decomposition
User's and Reference Guide</B></BIG>
<BR><SPAN CLASS="textit"><BIG CLASS="LARGE">A guide for the MultiLevel Domain Decomposition
Parallel Preconditioners Package
based on PSBLAS</FONT></I>
based on PSBLAS</BIG></SPAN>
<BR>
<BR>
<BR>
<BR><FONT SIZE="+1"><B>Pasqua D'Ambra</B></FONT>
<BR><FONT SIZE="+1">IAC-CNR, Naples, Italy
<BR><BIG CLASS="LARGE"><B>Pasqua D'Ambra</B></BIG>
<BR><BIG CLASS="LARGE">IAC-CNR, Naples, Italy
<BR>
<BR>
<BR>
<BR><FONT SIZE="+1"><B>Daniela di Serafino</B></FONT>
<BR><FONT SIZE="+1">University of Campania ``Luigi Vanvitelli'', Caserta, Italy
<BR><BIG CLASS="LARGE"><B>Daniela di Serafino</B></BIG>
<BR><BIG CLASS="LARGE">University of Campania &ldquo;Luigi Vanvitelli&rdquo;, Caserta, Italy
<BR>
<BR>
<BR>
<BR><FONT SIZE="+1"><B>Salvatore Filippone</B></FONT>
<BR><FONT SIZE="+1">Cranfield University, Cranfield, United Kingdom
<BR><BIG CLASS="LARGE"><B>Salvatore Filippone</B></BIG>
<BR><BIG CLASS="LARGE">Cranfield University, Cranfield, United Kingdom
<BR>
<BR>
<BR>
@ -78,18 +75,18 @@ July 31, 2017
<BR>
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
</FONT></FONT></FONT>
</BIG></BIG></BIG>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT></FONT>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG></BIG>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"></A>
<UL>
<UL CLASS="ChildLinks">
<LI><A NAME="tex2html27"
HREF="node1.html">Abstract</A>
<LI><A NAME="tex2html28"
@ -140,33 +137,47 @@ July 31, 2017
HREF="node18.html">User Interface</A>
<UL>
<LI><A NAME="tex2html45"
HREF="node19.html">Subroutine init</A>
HREF="node19.html">Method init</A>
<LI><A NAME="tex2html46"
HREF="node20.html">Subroutine set</A>
HREF="node20.html">Method set</A>
<LI><A NAME="tex2html47"
HREF="node21.html">Subroutine build</A>
HREF="node21.html">Method hierarchy_build</A>
<LI><A NAME="tex2html48"
HREF="node22.html">Subroutine hierarchy_build</A>
HREF="node22.html">Method smoothers_build</A>
<LI><A NAME="tex2html49"
HREF="node23.html">Subroutine smoothers_build</A>
HREF="node23.html">Method build</A>
<LI><A NAME="tex2html50"
HREF="node24.html">Subroutine apply</A>
HREF="node24.html">Method apply</A>
<LI><A NAME="tex2html51"
HREF="node25.html">Subroutine free</A>
HREF="node25.html">Method free</A>
<LI><A NAME="tex2html52"
HREF="node26.html">Subroutine descr</A>
</UL>
<BR>
HREF="node26.html">Method descr</A>
<LI><A NAME="tex2html53"
HREF="node27.html">Adding new smoother and solver objects to MLD2P4</A>
HREF="node27.html">Auxiliary Methods</A>
<UL>
<LI><A NAME="tex2html54"
HREF="node28.html">Error Handling</A>
HREF="node28.html">Method: dump</A>
<LI><A NAME="tex2html55"
HREF="node29.html">License</A>
HREF="node29.html">Method: clone</A>
<LI><A NAME="tex2html56"
HREF="node30.html">Bibliography</A>
HREF="node30.html">Method: sizeof</A>
<LI><A NAME="tex2html57"
HREF="node31.html">About this document ...</A>
HREF="node31.html">Method: allocate_wrk</A>
<LI><A NAME="tex2html58"
HREF="node32.html">Method: free_wrk</A>
</UL>
</UL>
<BR>
<LI><A NAME="tex2html59"
HREF="node33.html">Adding new smoother and solver objects to MLD2P4</A>
<LI><A NAME="tex2html60"
HREF="node34.html">Error Handling</A>
<LI><A NAME="tex2html61"
HREF="node35.html">License</A>
<LI><A NAME="tex2html62"
HREF="node36.html">Bibliography</A>
<LI><A NAME="tex2html63"
HREF="node37.html">About this document ...</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>

File diff suppressed because one or more lines are too long

@ -48,8 +48,8 @@ by the routine \verb|smoothers_build|.
If the selected preconditioner is one-level, it is built in a single step,
performed by the routine \verb|bld|.
\item \emph{Apply the preconditioner at each iteration of a Krylov solver.}
This is performed by the routine \verb|aply|. When using the PSBLAS Krylov solvers,
this step is completely transparent to the user, since \verb|aply| is called
This is performed by the method \verb|apply|. When using the PSBLAS Krylov solvers,
this step is completely transparent to the user, since \verb|apply| is called
by the PSBLAS routine implementing the Krylov solver (\verb|psb_krylov|).
\item \emph{Free the preconditioner data structure}. This is performed by
the routine \verb|free|. This step is complementary to step 1 and should
@ -66,7 +66,7 @@ Examples showing the basic use of MLD2P4 are reported in Section~\ref{sec:exampl
\begin{tabular}{|l|p{1.8cm}|p{8.2cm}|}
\hline
\textsc{type} & \textsc{string} & \textsc{default preconditioner} \\ \hline
No preconditioner &\verb|'NOPREC'|& Considered only to use the PSBLAS
No preconditioner &\verb|'NONE'|& Considered to use the PSBLAS
Krylov solvers with no preconditioner. \\ \hline
Diagonal & \verb|'DIAG'| or \verb|'JACOBI'| & Diagonal preconditioner.
For any zero diagonal entry of the matrix to be preconditioned,

@ -2,19 +2,20 @@
\markboth{\textsc{MLD2P4 User's and Reference Guide}}
{\textsc{\ref{sec:userinterface} User Interface}}
The basic user interface of MLD2P4 consists of eight routines. The six
routines \verb|init|, \verb|set|,
\verb|hierarchy_build|, \verb|smoothers_build|,
\verb|bld|, and \verb|apply| encapsulate all the
functionalities for the setup and the application of any multilevel and one-level
preconditioner implemented in the package.
The routine \verb|free| deallocates the preconditioner data structure, while
The basic user interface of MLD2P4 consists of eight methods. The six
methods \verb|init|, \verb|set|, \verb|build|,
\verb|hierarchy_build|, \verb|smoothers_build| and \verb|apply|
encapsulate all the functionalities for the setup and the application
of any multilevel and one-level preconditioner implemented in the
package.
The method \verb|free| deallocates the preconditioner data structure, while
\verb|descr| prints a description of the preconditioner setup by the user.
For backward compatibility, methods are also accessible as
stand-alone subroutines.
All the routines are available as methods of the preconditioner object.
For each routine, the same user interface is overloaded with
For each method, 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,
arguments with appropriate data types must be passed to the method,
i.e.,
\begin{itemize}
\item the sparse matrix data structure, containing the matrix to be
@ -35,18 +36,18 @@ i.e.,
according to the precision of the sparse matrix and preconditioner
data structures (see Section~\ref{sec:precset}).
\end{itemize}
A description of each routine is given in the remainder of this section.
A description of each method is given in the remainder of this section.
\clearpage
\subsection{Subroutine init\label{sec:precinit}}
\subsection{Method init\label{sec:precinit}}
\begin{center}
\verb|call p%init(ptype,info)|
\end{center}
\noindent
This routine allocates and initializes the preconditioner
This method allocates and initializes the preconditioner
\verb|p|, according to the preconditioner type chosen by the user.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
@ -71,7 +72,7 @@ This routine allocates and initializes the preconditioner
\end{tabular}
\vskip1.5\baselineskip
For compatibility with the previous versions of MLD2P4, this routine can be also invoked
For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
\begin{center}
@ -81,14 +82,14 @@ as follows:
\clearpage
\subsection{Subroutine set\label{sec:precset}}
\subsection{Method set\label{sec:precset}}
\begin{center}
\verb|call p%set(what,val,info [,ilev, ilmax, pos])|
\end{center}
\noindent
This routine sets the parameters defining the preconditioner \verb|p|. More
This method sets the parameters defining the preconditioner \verb|p|. More
precisely, the parameter identified by \verb|what| is assigned the value
contained in \verb|val|.
@ -139,7 +140,7 @@ contained in \verb|val|.
\end{tabular}
\vskip1.5\baselineskip
For compatibility with the previous versions of MLD2P4, this routine can be also invoked
For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
\begin{center}
@ -623,60 +624,55 @@ level (continued).\label{tab:p_coarse_1}}
(continued).\label{tab:p_smoother_1}}
\esideways
\clearpage
\subsection{Subroutine build\label{sec:precbld}}
\subsection{Method hierarchy\_build\label{sec:hier_bld}}
\begin{center}
\verb|call p%build(a,desc_a,info)|\\
\verb|call p%hierarchy_build(a,desc_a,info)|\\
\end{center}
\noindent
This routine builds the one-level preconditioner \verb|p| according to the requirements
made by the user through the routines \verb|init| and \verb|set|
(see Sections~\ref{sec:hier_bld} and~\ref{sec:smooth_bld} for multilevel preconditioners).
This method builds the hierarchy of matrices and restriction/prolongation
operators for the multilevel preconditioner \verb|p|, according to the requirements
made by the user through the methods \verb|init| and \verb|set|.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}}
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\
& The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that \emph{x} 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 \cite{PSBLASGUIDE}.\\
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}.\\
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
% & The preconditioner data structure. Note that \emph{x} must be chosen according
% to the real/complex, single/double precision version of MLD2P4 under use.\\
\verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular}
\vskip1.5\baselineskip
For compatibility with the previous versions of MLD2P4, this routine can be also invoked
as follows:
\begin{center}
\verb|call mld_precbld(p,what,val,info)|
\end{center}
\noindent
In this case, the routine can be used to build multilevel preconditioners too.
\clearpage
\subsection{Subroutine hierarchy\_build\label{sec:hier_bld}}
\subsection{Method smoothers\_build\label{sec:smooth_bld}}
\begin{center}
\verb|call p%hierarchy_build(a,desc_a,info)|\\
\verb|call p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])|\\
\end{center}
\noindent
This routine builds the hierarchy of matrices and restriction/prolongation
operators for the multilevel preconditioner \verb|p|, according to the requirements
made by the user through the routines \verb|init| and \verb|set|.
This method builds the smoothers and the coarsest-level solvers for the
multilevel preconditioner \verb|p|, according to the requirements made by
the user through the methods \verb|init| and \verb|set|, and based on the aggregation
hierarchy produced by a previous call to \verb|hierarchy_build|
(see Section~\ref{sec:hier_bld}).
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
@ -684,40 +680,51 @@ made by the user through the routines \verb|init| and \verb|set|.
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\
& The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that \emph{x} 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 \cite{PSBLASGUIDE}.\\
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}.\\
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
% & The preconditioner data structure. Note that \emph{x} must be chosen according
% to the real/complex, single/double precision version of MLD2P4 under use.\\
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
% & The preconditioner data structure. Note that \emph{x} must be chosen according
% to the real/complex, single/double precision version of MLD2P4 under use.\\
\verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
& The desired dynamic type for internal matrix
components; this allows e.g. running on GPUs; it needs not be the
same on all processes. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}. \\
\verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\
& The desired dynamic type for internal vector
components; this allows e.g. running on GPUs. \\
\verb|imold| & \verb|class(psb_i_base_vect_type), intent(in), optional|. \\
& The desired dynamic type for internal integer vector
components; this allows e.g. running on GPUs. \\
\end{tabular}
\clearpage
\subsection{Subroutine smoothers\_build\label{sec:smooth_bld}}
\subsection{Method build\label{sec:precbld}}
\begin{center}
\verb|call p%smoothers_build(a,desc_a,p,info)|\\
\verb|call p%build(a,desc_a,info[,amold,vmold,imold])|\\
\end{center}
\noindent
This routine builds the smoothers and the coarsest-level solvers for the
multilevel preconditioner \verb|p|, according to the requirements made by
the user through the routines \verb|init| and \verb|set|, and based on the aggregation
hierarchy produced by a previous call to \verb|hierarchy_build|
(see Section~\ref{sec:hier_bld}).
This method builds the preconditioner \verb|p| according to the requirements
made by the user through the methods \verb|init| and \verb|set|
(see Sections~\ref{sec:hier_bld} and~\ref{sec:smooth_bld} for
multilevel preconditioners). It is mostly provided for backward
compatibility; indeed, it is internally implemented by invoking the
two previous methods \verb|hierarchy_build| and
\verb|smoothers_build|, whose nomenclature would however be somewhat
unnatural when dealing with simple one-level preconditioners.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}}
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\
& The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that \emph{x} must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.
@ -726,26 +733,49 @@ hierarchy produced by a previous call to \verb|hierarchy_build|
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}.\\
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
% & The preconditioner data structure. Note that \emph{x} must be chosen according
% to the real/complex, single/double precision version of MLD2P4 under use.\\
% & The preconditioner data structure. Note that \emph{x} must be chosen according
% to the real/complex, single/double precision version of MLD2P4 under use.\\
\verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
& The desired dynamic type for internal matrix
components; this allows e.g. running on GPUs; it needs not be the
same on all processes. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}. \\
\verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\
& The desired dynamic type for internal vector
components; this allows e.g. running on GPUs. \\
\verb|imold| & \verb|class(psb_i_base_vect_type), intent(in), optional|. \\
& The desired dynamic type for internal integer vector
components; this allows e.g. running on GPUs. \\
\end{tabular}
\vskip1.5\baselineskip
For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
\begin{center}
\verb|call mld_precbld(p,what,val,info[,amold,vmold,imold])|
\end{center}
\noindent
The method can be used to build multilevel preconditioners too.
\clearpage
\subsection{Subroutine apply\label{sec:precapply}}
\subsection{Method apply\label{sec:precapply}}
\begin{center}
\verb|call p%apply(x,y,desc_a,info [,trans,work])|\\
\end{center}
\noindent
This routine computes $y = op(B^{-1})\, x$, where $B$ is a previously built
This method computes $y = op(B^{-1})\, x$, where $B$ is a previously built
preconditioner, stored into \verb|p|, and $op$
denotes the preconditioner itself or its transpose, according to
the value of \verb|trans|.
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
\verb|p%apply| is called within the PSBLAS routine \verb|psb_krylov|
\verb|p%apply| is called within the PSBLAS method \verb|psb_krylov|
and hence it is completely transparent to the user.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
@ -781,7 +811,7 @@ and hence it is completely transparent to the user.
\end{tabular}
\vskip1.5\baselineskip
For compatibility with the previous versions of MLD2P4, this routine can be also invoked
For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
\begin{center}
@ -790,14 +820,14 @@ as follows:
\clearpage
\subsection{Subroutine free\label{sec:precfree}}
\subsection{Method free\label{sec:precfree}}
\begin{center}
\verb|call p%free(p,info)|\\
\end{center}
\noindent
This routine deallocates the preconditioner data structure \verb|p|.
This method deallocates the preconditioner data structure \verb|p|.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
@ -810,7 +840,7 @@ This routine deallocates the preconditioner data structure \verb|p|.
\end{tabular}
\vskip1.5\baselineskip
For compatibility with the previous versions of MLD2P4, this routine can be also invoked
For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
\begin{center}
@ -820,14 +850,14 @@ as follows:
\clearpage
\subsection{Subroutine descr\label{sec:precdescr}}
\subsection{Method descr\label{sec:precdescr}}
\begin{center}
\verb|call p%descr(info, [iout])|\\
\end{center}
\noindent
This routine prints a description of the preconditioner \verb|p| to the standard output or
This method prints a description of the preconditioner \verb|p| to the standard output or
to a file. It must be called after \verb|hierachy_build| and \verb|smoothers_build|,
or \verb|build|, have been called.
@ -845,7 +875,7 @@ or \verb|build|, have been called.
\end{tabular}
\vskip1.5\baselineskip
For compatibility with the previous versions of MLD2P4, this routine can be also invoked
For compatibility with the previous versions of MLD2P4, this method can be also invoked
as follows:
\begin{center}
@ -853,6 +883,136 @@ as follows:
\end{center}
\subsection{Auxiliary Methods\label{sec:auxil}}
Various functionalities are implemented as additional methods of the
preconditioner object.
\subsubsection{Method: dump}
\begin{center}
\verb|call p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])|\\
\end{center}
\noindent
Dump on file.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}}
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
% & The preconditioner data structure. Note that \emph{x} must be chosen according
% to the real/complex, single/double precision version of MLD2P4 under use.\\
\verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
& The desired dynamic type for internal matrix
components; this allows e.g. running on GPUs; it needs not be the
same on all processes. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}. \\
\end{tabular}
\subsubsection{Method: clone}
\begin{center}
\verb|call p%clone(pout,info)|\\
\end{center}
\noindent
Create a (deep) copy of the preconditioner object.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}}
\verb|pout| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(out)|.\\
& The copy of the preconditioner data structure. Note
that \emph{x} must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.\\
\verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular}
\subsubsection{Method: sizeof}
\begin{center}
\verb|sz = p%sizeof()|\\
\end{center}
\noindent
Return memory footprint in bytes.
% {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
% \begin{tabular}{p{1.2cm}p{12cm}}
% %\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
% % & The preconditioner data structure. Note that \emph{x} must be chosen according
% % to the real/complex, single/double precision version of MLD2P4 under use.\\
% \verb|info| & \verb|integer, intent(out)|.\\
% & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
% \end{tabular}
\subsubsection{Method: allocate\_wrk}
\begin{center}
\verb|call p%allocate_wrk(info[, vmold])|\\
\end{center}
\noindent
Allocate internal work vectors. Each application of the preconditioner
uses a number of work vectors which are allocated internally as
necessary; therefore allocation and deallocation of memory occurs
multiple times during the execution of a Krylov method. In most cases
this strategy is perfectly acceptable, but
on some platforms, most notably GPUs, memory allocation is
a slow operation, and the default behaviour would lead to a
slowdown. This method allows to trade space for time by preallocating
the internal workspace outside of the invocation of a Krylov
method. When using GPUs or other specialized devices, the \verb|vmold|
argument is also necessary to ensure the internal work vectors are of
the appropriate dynamic type to exploit the accelerator hardware; when
allocation occurs internally this is taken care of based on the dynamic
type of the \verb|x| argument to the \verb|apply| method.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}}
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
% & The preconditioner data structure. Note that \emph{x} must be chosen according
% to the real/complex, single/double precision version of MLD2P4 under use.\\
\verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\
& The desired dynamic type for internal vector
components; this allows e.g. running on GPUs. \\
\end{tabular}
\subsubsection{Method: free\_wrk}
\begin{center}
\verb|call p%free_wrk(info)|\\
\end{center}
\noindent
Deallocate internal work vectors.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}}
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
% & The preconditioner data structure. Note that \emph{x} must be chosen according
% to the real/complex, single/double precision version of MLD2P4 under use.\\
\verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "userguide"

Loading…
Cancel
Save