Implemented changes to AMG4PSBLAS

documentation
Cirdans-Home 4 years ago
parent 6541e3a95c
commit ea6a260253

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@ -71,7 +71,7 @@ class="cmr-12">Contributors</span></a></span>
<br /> <span class="sectionToc" ><span <br /> <span class="sectionToc" ><span
class="cmr-12">3 </span><a class="cmr-12">3 </span><a
href="userhtmlse3.html#x7-60003" id="QQ2-7-7"><span href="userhtmlse3.html#x7-60003" id="QQ2-7-7"><span
class="cmr-12">Configuring and Building MLD2P4</span></a></span> class="cmr-12">Configuring and Building AMG4PSBLAS</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.1 </span><a class="cmr-12">3.1 </span><a
@ -179,7 +179,7 @@ class="cmr-12">Auxiliary Methods</span></a></span>
<br /> <span class="sectionToc" ><span <br /> <span class="sectionToc" ><span
class="cmr-12">7 </span><a class="cmr-12">7 </span><a
href="userhtmlse7.html#x29-330007" id="QQ2-29-47"><span href="userhtmlse7.html#x29-330007" id="QQ2-29-47"><span
class="cmr-12">Adding new smoother and solver objects to MLD2P4</span></a></span> class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
<br /> <span class="sectionToc" ><span <br /> <span class="sectionToc" ><span
class="cmr-12">8 </span><a class="cmr-12">8 </span><a
href="userhtmlse8.html#x30-340008" id="QQ2-30-48"><span href="userhtmlse8.html#x30-340008" id="QQ2-30-48"><span

@ -26,6 +26,7 @@
.cmsy-8{font-size:72%;} .cmsy-8{font-size:72%;}
.cmex-10x-x-120{font-size:109%;} .cmex-10x-x-120{font-size:109%;}
.msbm-10x-x-120{font-size:109%;} .msbm-10x-x-120{font-size:109%;}
.cmbxti-10x-x-120{font-size:109%; font-weight: bold; font-style: italic;}
.cmmi-10x-x-109{font-style: italic;} .cmmi-10x-x-109{font-style: italic;}
.cmsy-10x-x-109{} .cmsy-10x-x-109{}
.cmex-10x-x-109{} .cmex-10x-x-109{}

@ -71,7 +71,7 @@ class="cmr-12">Contributors</span></a></span>
<br /> <span class="sectionToc" ><span <br /> <span class="sectionToc" ><span
class="cmr-12">3 </span><a class="cmr-12">3 </span><a
href="userhtmlse3.html#x7-60003" id="QQ2-7-7"><span href="userhtmlse3.html#x7-60003" id="QQ2-7-7"><span
class="cmr-12">Configuring and Building MLD2P4</span></a></span> class="cmr-12">Configuring and Building AMG4PSBLAS</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.1 </span><a class="cmr-12">3.1 </span><a
@ -179,7 +179,7 @@ class="cmr-12">Auxiliary Methods</span></a></span>
<br /> <span class="sectionToc" ><span <br /> <span class="sectionToc" ><span
class="cmr-12">7 </span><a class="cmr-12">7 </span><a
href="userhtmlse7.html#x29-330007" id="QQ2-29-47"><span href="userhtmlse7.html#x29-330007" id="QQ2-29-47"><span
class="cmr-12">Adding new smoother and solver objects to MLD2P4</span></a></span> class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
<br /> <span class="sectionToc" ><span <br /> <span class="sectionToc" ><span
class="cmr-12">8 </span><a class="cmr-12">8 </span><a
href="userhtmlse8.html#x30-340008" id="QQ2-30-48"><span href="userhtmlse8.html#x30-340008" id="QQ2-30-48"><span

Binary file not shown.

Before

Width:  |  Height:  |  Size: 894 B

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 800 B

After

Width:  |  Height:  |  Size: 818 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1023 B

After

Width:  |  Height:  |  Size: 1011 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

After

Width:  |  Height:  |  Size: 619 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 894 B

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -30,39 +30,22 @@ class="cmr-12">Abstract</span></h3>
<!--l. 5--><p class="noindent" ><span <!--l. 5--><p class="noindent" ><span
class="cmcsc-10x-x-120">MLD2P4 (M<span class="cmcsc-10x-x-120">AMG4PSBLAS (A<span
class="small-caps">u</span><span
class="small-caps">l</span><span class="small-caps">l</span><span
class="small-caps">t</span><span class="small-caps">g</span><span
class="small-caps">i</span>L<span
class="small-caps">e</span><span
class="small-caps">v</span><span
class="small-caps">e</span><span class="small-caps">e</span><span
class="small-caps">l</span> D<span class="small-caps">b</span><span
class="small-caps">o</span><span class="small-caps">r</span><span
class="small-caps">m</span><span
class="small-caps">a</span><span class="small-caps">a</span><span
class="small-caps">i</span><span class="small-caps">i</span><span
class="small-caps">n</span> D<span class="small-caps">c</span> M<span
class="small-caps">e</span><span class="small-caps">u</span><span
class="small-caps">c</span><span class="small-caps">l</span><span
class="small-caps">o</span><span
class="small-caps">m</span><span
class="small-caps">p</span><span
class="small-caps">o</span><span
class="small-caps">s</span><span
class="small-caps">i</span><span
class="small-caps">t</span><span class="small-caps">t</span><span
class="small-caps">i</span><span class="small-caps">i</span>G<span
class="small-caps">o</span><span
class="small-caps">n</span> P<span
class="small-caps">a</span><span
class="small-caps">r</span><span class="small-caps">r</span><span
class="small-caps">a</span><span class="small-caps">i</span><span
class="small-caps">l</span><span class="small-caps">d</span> P<span
class="small-caps">l</span><span
class="small-caps">e</span><span
class="small-caps">l</span> P<span
class="small-caps">r</span><span class="small-caps">r</span><span
class="small-caps">e</span><span class="small-caps">e</span><span
class="small-caps">c</span><span class="small-caps">c</span><span
@ -76,9 +59,7 @@ class="small-caps">o</span><span
class="small-caps">n</span><span class="small-caps">n</span><span
class="small-caps">e</span><span class="small-caps">e</span><span
class="small-caps">r</span><span class="small-caps">r</span><span
class="small-caps">s</span></span> class="small-caps">s</span> P<span
<span
class="cmcsc-10x-x-120">P<span
class="small-caps">a</span><span class="small-caps">a</span><span
class="small-caps">c</span><span class="small-caps">c</span><span
class="small-caps">k</span><span class="small-caps">k</span><span
@ -91,34 +72,54 @@ class="small-caps">s</span><span
class="small-caps">e</span><span class="small-caps">e</span><span
class="small-caps">d</span> <span class="small-caps">d</span> <span
class="small-caps">o</span><span class="small-caps">o</span><span
class="small-caps">n</span> PSBLAS</span><span class="small-caps">n</span></span>
class="cmr-12">) is a package of parallel algebraic multilevel</span> <span
class="cmcsc-10x-x-120">PSBLAS</span><span
class="cmr-12">) is a package of parallel algebraic multilevel preconditioners included in the</span>
<span
class="cmr-12">PSCToolkit (Parallel Sparse Computation Toolkit) software framework. It is a progress</span>
<span
class="cmr-12">of a software development project started in 2007, named MLD2P4, which</span>
<span
class="cmr-12">implemented a multilevel version of some domain decomposition preconditioners of</span>
<span
class="cmr-12">additive-Schwarz type and was based on a parallel decoupled version of the well known</span>
<span
class="cmr-12">smoothed aggregation method to generate the multilevel hierarchy of coarser</span>
<span
class="cmr-12">matrices. In the last years, within the context of the EU-H2020 EoCoE project</span>
<span
class="cmr-12">(Energy Oriented Center of Excellence), the package was extended including</span>
<span
class="cmr-12">new algorithms and functionalities for setup and application of new AMG</span>
<span
class="cmr-12">preconditioners with the final aims of improving efficiency and scalability when tens of</span>
<span <span
class="cmr-12">preconditioners. The first release of MLD2P4 made available multilevel additive and</span> class="cmr-12">thousands cores are used and of boosting reliability in dealing with general</span>
<span <span
class="cmr-12">hybrid Schwarz preconditioners, as well as one-level additive Schwarz preconditioners.</span> class="cmr-12">symmetric positive definite linear systems. Due to the significant number</span>
<span <span
class="cmr-12">The package has been extended to include further multilevel cycles and smoothers</span> class="cmr-12">of changes and the increase in scope, we decided to rename the package as</span>
<span <span
class="cmr-12">widely used in multigrid methods. In the multilevel case, a purely algebraic approach is</span> class="cmr-12">AMG4PSBLAS.</span>
<!--l. 10--><p class="indent" > <span
class="cmr-12">AMG4PSBLAS has been designed to provide scalable and easy-to-use</span>
<span <span
class="cmr-12">applied to generate coarse-level corrections, so that no geometric background is needed</span> class="cmr-12">preconditioners in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra</span>
<span <span
class="cmr-12">concerning the matrix to be preconditioned. The matrix is assumed to be square, real</span> class="cmr-12">Subprograms) computational framework and can be used in conjuction with the Krylov</span>
<span <span
class="cmr-12">or complex.</span> class="cmr-12">solvers available in this framework. Our package is based on a completely algebraic</span>
<!--l. 14--><p class="indent" > <span
class="cmr-12">MLD2P4 has been designed to provide scalable and easy-to-use preconditioners in</span>
<span <span
class="cmr-12">the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)</span> class="cmr-12">approach and users level interfaces assume that the system matrix and preconditioners</span>
<span <span
class="cmr-12">computational framework and can be used in conjuction with the Krylov solvers</span> class="cmr-12">are represented as PSBLAS distributed sparse matrices. AMG4PSBLAS enables the</span>
<span <span
class="cmr-12">available in this framework. MLD2P4 enables the user to easily specify different</span> class="cmr-12">user to easily specify different features of an algebraic multilevel preconditioner, thus</span>
<span <span
class="cmr-12">features of an algebraic multilevel preconditioner, thus allowing to search for the &#8220;best&#8221;</span> class="cmr-12">allowing to experiment with different preconditioners for the problem and parallel</span>
<span <span
class="cmr-12">preconditioner for the problem at hand.</span> class="cmr-12">computers at hand.</span>
<!--l. 21--><p class="indent" > <span <!--l. 21--><p class="indent" > <span
class="cmr-12">The package employs object-oriented design techniques in Fortran</span><span class="cmr-12">The package employs object-oriented design techniques in Fortran</span><span
class="cmr-12">&#x00A0;2003, with</span> class="cmr-12">&#x00A0;2003, with</span>
@ -136,7 +137,7 @@ class="cmr-12">through PSBLAS.</span>
<!--l. 29--><p class="indent" > <span <!--l. 29--><p class="indent" > <span
class="cmr-12">This guide provides a brief description of the functionalities and the user interface</span> class="cmr-12">This guide provides a brief description of the functionalities and the user interface</span>
<span <span
class="cmr-12">of MLD2P4.</span> class="cmr-12">of AMG4PSBLAS.</span>

@ -45,7 +45,7 @@ class="cmr-12">Code Distribution</span></a></span>
<br /> <span class="sectionToc" ><span <br /> <span class="sectionToc" ><span
class="cmr-12">3 </span><a class="cmr-12">3 </span><a
href="userhtmlse3.html#x7-60003"><span href="userhtmlse3.html#x7-60003"><span
class="cmr-12">Configuring and Building MLD2P4</span></a></span> class="cmr-12">Configuring and Building AMG4PSBLAS</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">3.1 </span><a class="cmr-12">3.1 </span><a
@ -185,7 +185,7 @@ class="cmr-12">_wrk</span></a></span>
<br /> <span class="sectionToc" ><span <br /> <span class="sectionToc" ><span
class="cmr-12">7 </span><a class="cmr-12">7 </span><a
href="userhtmlse7.html#x29-330007"><span href="userhtmlse7.html#x29-330007"><span
class="cmr-12">Adding new smoother and solver objects to MLD2P4</span></a></span> class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
<br /> <span class="sectionToc" ><span <br /> <span class="sectionToc" ><span
class="cmr-12">8 </span><a class="cmr-12">8 </span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span

@ -21,37 +21,15 @@ class="cmr-12">] </span></p></div>
<h4 class="likesubsectionHead"><a <h4 class="likesubsectionHead"><a
id="x6-50002"></a><span id="x6-50002"></a><span
class="cmr-12">Contributors</span></h4> class="cmr-12">Contributors</span></h4>
<!--l. 24--><p class="noindent" ><span
class="cmr-12">Contributors to version 2:</span>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">Salvatore Filippone, Cranfield University, UK;</span> class="cmr-12">Pasqua D&#8217;Ambra, IAC-CNR, IT;</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">Pasqua D&#8217;Ambra, IAC-CNR, Naples, IT;</span> class="cmr-12">Fabio Durastante, University of Pisa and IAC-CNR, IT;</span>
</li>
<li class="itemize"><span
class="cmr-12">Daniela di Serafino, University of Campania &#8220;L. Vanvitelli&#8221;, Caserta, IT;</span>
</li>
<li class="itemize"><span
class="cmr-12">Ambra Abdullahi Hassan, University of Rome &#8220;Tor Vergata&#8221;, IT.</span></li></ul>
<!--l. 31--><p class="noindent" ><span
class="cmr-12">Contributors to version 1:</span>
<ul class="itemize1">
<li class="itemize"><span
class="cmr-12">Salvatore Filippone;</span>
</li>
<li class="itemize"><span
class="cmr-12">Pasqua D&#8217;Ambra;</span>
</li>
<li class="itemize"><span
class="cmr-12">Daniela di Serafino;</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">Alfredo Buttari, CNRS-IRIT, Toulouse, F.</span></li></ul> class="cmr-12">Salvatore Filippone, University of Rome Tor-Vergata and IAC-CNR, IT;</span></li></ul>

File diff suppressed because it is too large Load Diff

@ -33,39 +33,22 @@ class="cmr-12">1 </span></span> <a
class="cmr-12">General Overview</span></h3> class="cmr-12">General Overview</span></h3>
<!--l. 5--><p class="noindent" ><span <!--l. 5--><p class="noindent" ><span
class="cmr-12">The </span><span class="cmr-12">The </span><span
class="cmcsc-10x-x-120">M<span class="cmcsc-10x-x-120">A<span
class="small-caps">u</span><span
class="small-caps">l</span><span class="small-caps">l</span><span
class="small-caps">t</span><span class="small-caps">g</span><span
class="small-caps">i</span>L<span
class="small-caps">e</span><span
class="small-caps">v</span><span
class="small-caps">e</span><span class="small-caps">e</span><span
class="small-caps">l</span> D<span class="small-caps">b</span><span
class="small-caps">o</span><span class="small-caps">r</span><span
class="small-caps">m</span><span
class="small-caps">a</span><span class="small-caps">a</span><span
class="small-caps">i</span><span class="small-caps">i</span><span
class="small-caps">n</span> D<span class="small-caps">c</span> M<span
class="small-caps">e</span><span class="small-caps">u</span><span
class="small-caps">c</span><span class="small-caps">l</span><span
class="small-caps">o</span><span
class="small-caps">m</span><span
class="small-caps">p</span><span
class="small-caps">o</span><span
class="small-caps">s</span><span
class="small-caps">i</span><span
class="small-caps">t</span><span class="small-caps">t</span><span
class="small-caps">i</span><span class="small-caps">i</span>G<span
class="small-caps">o</span><span
class="small-caps">n</span> P<span
class="small-caps">a</span><span
class="small-caps">r</span><span class="small-caps">r</span><span
class="small-caps">a</span><span class="small-caps">i</span><span
class="small-caps">l</span><span class="small-caps">d</span> P<span
class="small-caps">l</span><span
class="small-caps">e</span><span
class="small-caps">l</span> P<span
class="small-caps">r</span><span class="small-caps">r</span><span
class="small-caps">e</span><span class="small-caps">e</span><span
class="small-caps">c</span><span class="small-caps">c</span><span
@ -79,9 +62,7 @@ class="small-caps">o</span><span
class="small-caps">n</span><span class="small-caps">n</span><span
class="small-caps">e</span><span class="small-caps">e</span><span
class="small-caps">r</span><span class="small-caps">r</span><span
class="small-caps">s</span></span> class="small-caps">s</span> P<span
<span
class="cmcsc-10x-x-120">P<span
class="small-caps">a</span><span class="small-caps">a</span><span
class="small-caps">c</span><span class="small-caps">c</span><span
class="small-caps">k</span><span class="small-caps">k</span><span
@ -94,25 +75,21 @@ class="small-caps">s</span><span
class="small-caps">e</span><span class="small-caps">e</span><span
class="small-caps">d</span> <span class="small-caps">d</span> <span
class="small-caps">o</span><span class="small-caps">o</span><span
class="small-caps">n</span> PSBLAS (MLD2P4</span><span class="small-caps">n</span> PSBLAS</span>
class="cmr-12">) provides parallel Algebraic MultiGrid</span>
<span <span
class="cmr-12">(AMG) and Domain Decomposition preconditioners (see, e.g., </span><span class="cite"><span class="cmcsc-10x-x-120">(AMG4PSBLAS) </span><span
class="cmr-12">provides parallel Algebraic MultiGrid (AMG) preconditioners (see,</span>
<span
class="cmr-12">e.g., </span><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XBriggs2000"><span href="userhtmlli4.html#XBriggs2000"><span
class="cmr-12">3</span></a><span class="cmr-12">3</span></a><span
class="cmr-12">,</span><span class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XStuben_01"><span href="userhtmlli4.html#XStuben_01"><span
class="cmr-12">24</span></a><span class="cmr-12">26</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xdd2_96"><span
class="cmr-12">22</span></a><span
class="cmr-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmr-12">), to be used</span> class="cmr-12">), to be used in the iterative solution of linear systems,</span>
<span
class="cmr-12">in the iterative solution of linear systems,</span>
<table <table
class="equation"><tr><td> class="equation"><tr><td>
<center class="math-display" > <center class="math-display" >
@ -121,25 +98,19 @@ src="userhtml0x.png" alt="Ax = b,
" class="math-display" ><a " class="math-display" ><a
id="x4-3001r1"></a></center></td><td class="equation-label"><span id="x4-3001r1"></a></center></td><td class="equation-label"><span
class="cmr-12">(1)</span></td></tr></table> class="cmr-12">(1)</span></td></tr></table>
<!--l. 12--><p class="nopar" > <!--l. 11--><p class="nopar" >
<span <span
class="cmr-12">where </span><span class="cmr-12">where </span><span
class="cmmi-12">A </span><span class="cmmi-12">A </span><span
class="cmr-12">is a square, real or complex, sparse matrix. The name of the package comes</span> class="cmr-12">is a square, real or complex, sparse symmetric positive definite (s.p.d)</span>
<span
class="cmr-12">from its original implementation, containing multilevel additive and hybrid Schwarz</span>
<span <span
class="cmr-12">preconditioners, as well as one-level additive Schwarz preconditioners. The current</span> class="cmr-12">matrix.</span>
<!--l. 19--><p class="indent" > <span
class="cmr-12">The preconditioners implemented in AMG4PSBLAS are obtained by combining 3</span>
<span <span
class="cmr-12">version extends the original plan by including multilevel cycles and smoothers widely</span> class="cmr-12">different types of AMG cycles with smoothers and coarsest-level solvers. The V-, W-,</span>
<span <span
class="cmr-12">used in multigrid methods.</span> class="cmr-12">and a version of a Krylov-type cycle (K-cycle)</span><span
<!--l. 24--><p class="indent" > <span
class="cmr-12">The multilevel preconditioners implemented in MLD2P4 are obtained by</span>
<span
class="cmr-12">combining AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and</span>
<span
class="cmr-12">K-cycles</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XBriggs2000"><span href="userhtmlli4.html#XBriggs2000"><span
@ -147,23 +118,26 @@ class="cmr-12">3</span></a><span
class="cmr-12">,</span><span class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XNotay2008"><span href="userhtmlli4.html#XNotay2008"><span
class="cmr-12">20</span></a><span class="cmr-12">22</span></a><span
class="cmr-12">]</span></span> <span class="cmr-12">]</span></span> <span
class="cmr-12">are available, which allow to define almost all the preconditioners in</span> class="cmr-12">are available, which can be</span>
<span <span
class="cmr-12">the package, including the multilevel hybrid Schwarz ones; a specific cycle is</span> class="cmr-12">combined with weighted versions of Jacobi, hybrid forward/backward Gauss-Seidel,</span>
<span <span
class="cmr-12">implemented to obtain multilevel additive Schwarz preconditioners. The Jacobi,</span> class="cmr-12">block-Jacobi, and additive Schwarz smoothers. An algebraic approach is used to</span>
<span <span
class="cmr-12">hybrid forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz</span> class="cmr-12">generate a hierarchy of coarse-level matrices and operators, without explicitly using</span>
<span <span
class="cmr-12">methods are available as smoothers. An algebraic approach is used to generate a</span> class="cmr-12">any information on the geometry of the original problem, e.g., the discretization of a</span>
<span <span
class="cmr-12">hierarchy of coarse-level matrices and operators, without explicitly using any</span> class="cmr-12">PDE. To this end, two different coarsening strategies, based on aggregation, are</span>
<span <span
class="cmr-12">information on the geometry of the original problem, e.g., the discretization of a</span> class="cmr-12">available:</span>
<span <ul class="itemize1">
class="cmr-12">PDE. To this end, the smoothed aggregation technique</span><span <li class="itemize"><span
class="cmr-12">a decoupled version of the well known smoothed aggregation procedure</span>
<span
class="cmr-12">proposed in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XBREZINA_VANEK"><span href="userhtmlli4.html#XBREZINA_VANEK"><span
@ -171,39 +145,74 @@ class="cmr-12">2</span></a><span
class="cmr-12">,</span><span class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">26</span></a><span class="cmr-12">28</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">, and already included in the previous versions of the</span>
<span
class="cmr-12">package</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XBDDF2007"><span
class="cmr-12">9</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XMLD2P4_TOMS"><span
class="cmr-12">8</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">;</span>
</li>
<li class="itemize"><span
class="cmr-12">the first parallel implementation of a coupled version of Coarsening based</span>
<span
class="cmr-12">on Compatible Weighted Matching introduced in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XDV2013"><span
class="cmr-12">29</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XDFV2018"><span
class="cmr-12">30</span></a><span
class="cmr-12">]</span></span> <span class="cmr-12">]</span></span> <span
class="cmr-12">is applied.</span> class="cmr-12">and described in</span>
<span
class="cmr-12">Either exact or approximate solvers can be used on the coarsest-level system.</span>
<span
class="cmr-12">Specifically, different sparse LU factorizations from external packages, and</span>
<span
class="cmr-12">native incomplete LU factorizations and Jacobi, hybrid Gauss-Seidel, and</span>
<span
class="cmr-12">details in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XDDF2020"><span
class="cmr-12">10</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">;</span></li></ul>
<!--l. 31--><p class="indent" > <span
class="cmr-12">Either exact or approximate solvers can be used on the coarsest-level system.</span>
<span
class="cmr-12">Specifically, different sparse LU factorizations from external packages, native</span>
<span <span
class="cmr-12">block-Jacobi solvers are available. All smoothers can be also exploited as one-level</span> class="cmr-12">incomplete LU factorizations, weighted Jacobi, hybrid Gauss-Seidel, and block-Jacobi</span>
<span
class="cmr-12">solvers are available. All the smoothers can be also exploited as one-level</span>
<span <span
class="cmr-12">preconditioners.</span> class="cmr-12">preconditioners.</span>
<!--l. 42--><p class="indent" > <span <!--l. 36--><p class="indent" > <span
class="cmr-12">MLD2P4 is written in Fortran</span><span class="cmr-12">AMG4PSBLAS is written in Fortran</span><span
class="cmr-12">&#x00A0;2003, following an object-oriented design</span> class="cmr-12">&#x00A0;2003, following an object-oriented design</span>
<span <span
class="cmr-12">through the exploitation of features such as abstract data type creation, type</span> class="cmr-12">through the exploitation of features such as abstract data type creation, type</span>
<span <span
class="cmr-12">extension, functional overloading, and dynamic memory management. The</span> class="cmr-12">extension, functional overloading, and dynamic memory management. The parallel</span>
<span <span
class="cmr-12">parallel implementation is based on a Single Program Multiple Data (SPMD)</span> class="cmr-12">implementation is based on a Single Program Multiple Data (SPMD) paradigm.</span>
<span <span
class="cmr-12">paradigm. Single and double precision implementations of MLD2P4 are available</span> class="cmr-12">Single and double precision implementations of AMG4PSBLAS are available</span>
<span <span
class="cmr-12">for both the real and the complex case, which can be used through a single</span> class="cmr-12">for both the real and the complex case, which can be used through a single</span>
<span <span
class="cmr-12">interface.</span> class="cmr-12">interface.</span>
<!--l. 53--><p class="indent" > <span <!--l. 46--><p class="indent" > <span
class="cmr-12">MLD2P4 has been designed to implement scalable and easy-to-use multilevel</span> class="cmr-12">AMG4PSBLAS has been designed to implement scalable and easy-to-use multilevel</span>
<span <span
class="cmr-12">preconditioners in the context of the PSBLAS (Parallel Sparse BLAS) computational</span> class="cmr-12">preconditioners in the context of the PSBLAS (Parallel Sparse BLAS) computational</span>
<span <span
@ -211,39 +220,43 @@ class="cmr-12">framework</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#Xpsblas_00"><span href="userhtmlli4.html#Xpsblas_00"><span
class="cmr-12">15</span></a><span class="cmr-12">17</span></a><span
class="cmr-12">,</span><span class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XPSBLAS3"><span href="userhtmlli4.html#XPSBLAS3"><span
class="cmr-12">14</span></a><span class="cmr-12">16</span></a><span
class="cmr-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmr-12">. PSBLAS provides basic linear algebra operators and data</span> class="cmr-12">. PSBLAS provides basic linear algebra operators and data</span>
<span <span
class="cmr-12">management facilities for distributed sparse matrices, as well as parallel Krylov solvers</span> class="cmr-12">management facilities for distributed sparse matrices, as well as parallel Krylov solvers</span>
<span <span
class="cmr-12">which can be used with the MLD2P4 preconditioners. The choice of PSBLAS has been</span> class="cmr-12">which can be used with the AMG4PSBLAS preconditioners. The choice of PSBLAS</span>
<span
class="cmr-12">has been mainly motivated by the need of having a portable and efficient</span>
<span
class="cmr-12">software infrastructure implementing &#8220;de facto&#8221; standard parallel sparse linear</span>
<span <span
class="cmr-12">mainly motivated by the need of having a portable and efficient software infrastructure</span> class="cmr-12">algebra kernels, to pursue goals such as performance, portability, modularity</span>
<span <span
class="cmr-12">implementing &#8220;de facto&#8221; standard parallel sparse linear algebra kernels, to pursue goals</span> class="cmr-12">ed extensibility in the development of the preconditioner package. On the</span>
<span <span
class="cmr-12">such as performance, portability, modularity ed extensibility in the development of the</span> class="cmr-12">other hand, the implementation of AMG4PSBLAS, which was driven by the</span>
<span <span
class="cmr-12">preconditioner package. On the other hand, the implementation of MLD2P4 has led to</span> class="cmr-12">need to face the exascale challenge, has led to some important revisions and</span>
<span <span
class="cmr-12">some revisions and extentions of the original PSBLAS kernels. The inter-process</span> class="cmr-12">extentions of the PSBLAS infrastructure. The inter-process comunication</span>
<span <span
class="cmr-12">comunication required by MLD2P4 is encapsulated in the PSBLAS routines; therefore,</span> class="cmr-12">required by AMG4PSBLAS is encapsulated in the PSBLAS routines; therefore,</span>
<span <span
class="cmr-12">MLD2P4 can be run on any parallel machine where PSBLAS implementations are</span> class="cmr-12">AMG4PSBLAS can be run on any parallel machine where PSBLAS implementations</span>
<span <span
class="cmr-12">available.</span> class="cmr-12">are available.</span>
<!--l. 70--><p class="indent" > <span <!--l. 61--><p class="indent" > <span
class="cmr-12">MLD2P4 has a layered and modular software architecture where three main layers</span> class="cmr-12">AMG4PSBLAS has a layered and modular software architecture where three main</span>
<span <span
class="cmr-12">can be identified. The lower layer consists of the PSBLAS kernels, the middle one</span> class="cmr-12">layers can be identified. The lower layer consists of the PSBLAS kernels, the middle</span>
<span <span
class="cmr-12">implements the construction and application phases of the preconditioners, and the</span> class="cmr-12">one implements the construction and application phases of the preconditioners, and the</span>
<span <span
class="cmr-12">upper one provides a uniform interface to all the preconditioners. This architecture</span> class="cmr-12">upper one provides a uniform interface to all the preconditioners. This architecture</span>
<span <span
@ -251,7 +264,7 @@ class="cmr-12">allows for different levels of use of the package: few black-box
<span <span
class="cmr-12">layer allow all users to easily build and apply any preconditioner available in</span> class="cmr-12">layer allow all users to easily build and apply any preconditioner available in</span>
<span <span
class="cmr-12">MLD2P4; facilities are also available allowing expert users to extend the set of</span> class="cmr-12">AMG4PSBLAS; facilities are also available allowing expert users to extend the set of</span>
<span <span
class="cmr-12">smoothers and solvers for building new versions of the preconditioners (see</span> class="cmr-12">smoothers and solvers for building new versions of the preconditioners (see</span>
<span <span
@ -260,28 +273,7 @@ class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x29-330007"><span href="userhtmlse7.html#x29-330007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:adding --></a><span class="cmr-12">7</span><!--tex4ht:ref: sec:adding --></a><span
class="cmr-12">).</span> class="cmr-12">).</span>
<!--l. 81--><p class="indent" > <span <!--l. 72--><p class="indent" > <span
class="cmr-12">We note that the user interface of MLD2P4 2.1 has been extended with respect to</span>
<span
class="cmr-12">the previous versions in order to separate the construction of the multilevel</span>
<span
class="cmr-12">hierarchy from the construction of the smoothers and solvers, and to allow for</span>
<span
class="cmr-12">more flexibility at each level. The software architecture described in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli4.html#XMLD2P4_TOMS"><span
class="cmr-12">8</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">has</span>
<span
class="cmr-12">significantly evolved too, in order to fully exploit the Fortran</span><span
class="cmr-12">&#x00A0;2003 features</span>
<span
class="cmr-12">implemented in PSBLAS 3. However, compatibility with previous versions has been</span>
<span
class="cmr-12">preserved.</span>
<!--l. 88--><p class="indent" > <span
class="cmr-12">This guide is organized as follows. General information on the distribution of the</span> class="cmr-12">This guide is organized as follows. General information on the distribution of the</span>
<span <span
class="cmr-12">source code is reported in Section</span><span class="cmr-12">source code is reported in Section</span><span
@ -294,47 +286,41 @@ class="cmr-12">of the package are given in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse3.html#x7-60003"><span href="userhtmlse3.html#x7-60003"><span
class="cmr-12">3</span><!--tex4ht:ref: sec:building --></a><span class="cmr-12">3</span><!--tex4ht:ref: sec:building --></a><span
class="cmr-12">. A short description of the preconditioners</span> class="cmr-12">. The basics for building and applying the</span>
<span
class="cmr-12">implemented in MLD2P4 is provided in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse4.html#x13-120004"><span
class="cmr-12">4</span><!--tex4ht:ref: sec:background --></a><span
class="cmr-12">, to help the users in choosing among</span>
<span <span
class="cmr-12">them. The basics for building and applying the preconditioners with the Krylov solvers</span> class="cmr-12">preconditioners with the Krylov solvers implemented in PSBLAS are reported</span>
<span <span
class="cmr-12">implemented in PSBLAS are reported in</span><span class="cmr-12">in</span><span
class="cmr-12">&#x00A0;Section</span><span class="cmr-12">&#x00A0;Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse5.html#x17-160005"><span href="userhtmlse5.html#x17-160005"><span
class="cmr-12">5</span><!--tex4ht:ref: sec:started --></a><span class="cmr-12">5</span><!--tex4ht:ref: sec:started --></a><span
class="cmr-12">, where the Fortran codes of a few</span> class="cmr-12">, where the Fortran codes of a few sample programs are also shown.</span>
<span
class="cmr-12">sample programs are also shown. A reference guide for the user interface routines is</span>
<span <span
class="cmr-12">provided in Section</span><span class="cmr-12">A reference guide for the user interface routines is provided in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse6.html#x19-180006"><span href="userhtmlse6.html#x19-180006"><span
class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span
class="cmr-12">. Information on the extension of the package through the</span> class="cmr-12">.</span>
<span
class="cmr-12">Information on the extension of the package through the addition of new</span>
<span <span
class="cmr-12">addition of new smoothers and solvers is reported in Section</span><span class="cmr-12">smoothers and solvers is reported in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x29-330007"><span href="userhtmlse7.html#x29-330007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:adding --></a><span class="cmr-12">7</span><!--tex4ht:ref: sec:adding --></a><span
class="cmr-12">. The error handling</span> class="cmr-12">. The error handling mechanism</span>
<span <span
class="cmr-12">mechanism used by the package is briefly described in Section</span><span class="cmr-12">used by the package is briefly described in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a><span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a><span
class="cmr-12">. The copyright</span> class="cmr-12">. The copyright terms</span>
<span <span
class="cmr-12">terms concerning the distribution and modification of MLD2P4 are reported in</span> class="cmr-12">concerning the distribution and modification of AMG4PSBLAS are reported in</span>
<span <span
class="cmr-12">Appendix</span><span class="cmr-12">Appendix</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a

@ -32,10 +32,10 @@ class="cmr-12">2 </span></span> <a
id="x5-40002"></a><span id="x5-40002"></a><span
class="cmr-12">Code Distribution</span></h3> class="cmr-12">Code Distribution</span></h3>
<!--l. 5--><p class="noindent" ><span <!--l. 5--><p class="noindent" ><span
class="cmr-12">MLD2P4 is available from the web site</span> class="cmr-12">AMG4PSBLAS is available from the web site</span>
<div class="quotation"> <div class="quotation">
<!--l. 8--><p class="indent" > <span <!--l. 8--><p class="indent" > <span
class="cmtt-12">https://github.com/sfilippone/mld2p4-2</span></div> class="cmtt-12">https://github.com/psctoolkit/amg4psblas</span></div>
<!--l. 10--><p class="noindent" ><span <!--l. 10--><p class="noindent" ><span
class="cmr-12">where contact points for further information can be also found.</span> class="cmr-12">where contact points for further information can be also found.</span>
<!--l. 12--><p class="indent" > <span <!--l. 12--><p class="indent" > <span
@ -54,11 +54,11 @@ class="cmr-12">into account when treating derived works.</span>
class="cmr-12">The library defines a version string with the constant</span> class="cmr-12">The library defines a version string with the constant</span>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml1x.png" alt="mld_version_string_ src="userhtml1x.png" alt="amg_version_string_
" class="math-display" ></center> " class="math-display" ></center>
<!--l. 20--><p class="nopar" > <span <!--l. 20--><p class="nopar" > <span
class="cmr-12">whose current value is </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">whose current value is </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">2.1.0</span></span></span><span class="cmtt-12">1.0</span></span></span><span
class="cmr-12">.</span> class="cmr-12">.</span>
<!--l. 23--><p class="noindent" > <!--l. 23--><p class="noindent" >
<div class="likesubsectionTOCS"> <div class="likesubsectionTOCS">

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html > <html >
<head><title>Configuring and Building MLD2P4</title> <head><title>Configuring and Building AMG4PSBLAS</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)"> <meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)"> <meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
@ -30,9 +30,9 @@ class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">3 </span></span> <a class="cmr-12">3 </span></span> <a
id="x7-60003"></a><span id="x7-60003"></a><span
class="cmr-12">Configuring and Building MLD2P4</span></h3> class="cmr-12">Configuring and Building AMG4PSBLAS</span></h3>
<!--l. 4--><p class="noindent" ><span <!--l. 4--><p class="noindent" ><span
class="cmr-12">In order to build MLD2P4 it is necessary to set up a Makefile with appropriate</span> class="cmr-12">In order to build AMG4PSBLAS it is necessary to set up a Makefile with appropriate</span>
<span <span
class="cmr-12">system-dependent variables; this is done by means of the </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">system-dependent variables; this is done by means of the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">configure</span></span></span> <span class="cmtt-12">configure</span></span></span> <span
@ -42,47 +42,49 @@ class="cmr-12">distribution also includes the autoconf and automake sources empl
<span <span
class="cmr-12">script, but usually this is not needed to build the software.</span> class="cmr-12">script, but usually this is not needed to build the software.</span>
<!--l. 10--><p class="indent" > <span <!--l. 10--><p class="indent" > <span
class="cmr-12">MLD2P4 is implemented almost entirely in Fortran</span><span class="cmr-12">AMG4PSBLAS is implemented almost entirely in Fortran</span><span
class="cmr-12">&#x00A0;2003, with some interfaces to</span> class="cmr-12">&#x00A0;2003, with some</span>
<span <span
class="cmr-12">external libraries in C; the Fortran compiler must support the Fortran</span><span class="cmr-12">interfaces to external libraries in C; the Fortran compiler must support the</span>
class="cmr-12">&#x00A0;2003 standard</span>
<span <span
class="cmr-12">plus the extension </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">Fortran</span><span
class="cmr-12">&#x00A0;2003 standard plus the extension </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">MOLD=</span></span></span> <span class="cmtt-12">MOLD=</span></span></span> <span
class="cmr-12">feature, which enhances the usability of </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">feature, which enhances the usability</span>
class="cmtt-12">ALLOCATE</span></span></span><span
class="cmr-12">. Many</span>
<span <span
class="cmr-12">compilers do this; in particular, this is supported by the GNU Fortran compiler, for</span> class="cmr-12">of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">ALLOCATE</span></span></span><span
class="cmr-12">. Many compilers do this; in particular, this is supported by the GNU</span>
<span <span
class="cmr-12">which we recommend to use at least version 4.8. The software defines data</span> class="cmr-12">Fortran compiler, for which we recommend to use at least version 4.8. The software</span>
<span <span
class="cmr-12">types and interfaces for real and complex data, in both single and double</span> class="cmr-12">defines data types and interfaces for real and complex data, in both single and double</span>
<span <span
class="cmr-12">precision.</span> class="cmr-12">precision.</span>
<!--l. 20--><p class="indent" > <span <!--l. 20--><p class="indent" > <span
class="cmr-12">Building MLD2P4 requires some base libraries (see Section</span><span class="cmr-12">Building AMG4PSBLAS requires some base libraries (see Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu1.html#x8-70003.1"><span href="userhtmlsu1.html#x8-70003.1"><span
class="cmr-12">3.1</span><!--tex4ht:ref: sec:prerequisites --></a><span class="cmr-12">3.1</span><!--tex4ht:ref: sec:prerequisites --></a><span
class="cmr-12">); interfaces to</span> class="cmr-12">); interfaces to</span>
<span <span
class="cmr-12">optional third-party libraries, which extend the functionalities of MLD2P4 (see</span> class="cmr-12">optional third-party libraries, which extend the functionalities of AMG4PSBLAS</span>
<span <span
class="cmr-12">Section</span><span class="cmr-12">(see Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu2.html#x9-80003.2"><span href="userhtmlsu2.html#x9-80003.2"><span
class="cmr-12">3.2</span><!--tex4ht:ref: sec:third-party --></a><span class="cmr-12">3.2</span><!--tex4ht:ref: sec:third-party --></a><span
class="cmr-12">), are also available. Many Linux distributions (e.g., Ubuntu, Fedora,</span> class="cmr-12">), are also available. Many Linux distributions (e.g., Ubuntu,</span>
<span <span
class="cmr-12">CentOS) provide precompiled packages for the prerequisite and optional software. In</span> class="cmr-12">Fedora, CentOS) provide precompiled packages for the prerequisite and optional</span>
<span <span
class="cmr-12">many cases these packages are split between a runtime part and a &#8220;developer&#8221; part; in</span> class="cmr-12">software. In many cases these packages are split between a runtime part and a</span>
<span <span
class="cmr-12">order to build MLD2P4 you need both. A description of the base and optional software</span> class="cmr-12">&#8220;developer&#8221; part; in order to build AMG4PSBLAS you need both. A description of</span>
<span <span
class="cmr-12">used by MLD2P4 is given in the next sections.</span> class="cmr-12">the base and optional software used by AMG4PSBLAS is given in the next</span>
<span
class="cmr-12">sections.</span>
<!--l. 28--><p class="noindent" > <!--l. 28--><p class="noindent" >
<div class="subsectionTOCS"> <div class="subsectionTOCS">
<span <span
@ -115,22 +117,22 @@ class="cmr-12">Example and test programs</span></a></span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse4.html" ><span href="userhtmlse4.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse2.html" ><span href="userhtmlse2.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse2.html#tailuserhtmlse2.html" ><span href="userhtmlse2.html#tailuserhtmlse2.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse3.html" ><span href="userhtmlse3.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse3.html" ><span href="userhtml.html#userhtmlse3.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlse3.html"></a> id="tailuserhtmlse3.html"></a>
</body></html> </body></html>

@ -11,188 +11,199 @@
</head><body </head><body
> >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse5.html" ><span href="userhtmlse5.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse3.html" ><span href="userhtmlse3.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse3.html#tailuserhtmlse3.html" ><span href="userhtmlse3.html#tailuserhtmlse3.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlse4.html"><span href="#tailuserhtmlse4.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse4.html" ><span href="userhtml.html#userhtmlse4.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">4 </span></span> <a class="cmbx-12">4 </span></span> <a
id="x13-120004"></a><span id="x13-120004"></a><span
class="cmr-12">Multigrid Background</span></h3> class="cmbx-12">Multigrid Background</span></h3>
<!--l. 5--><p class="noindent" ><span <!--l. 5--><p class="noindent" ><span
class="cmr-12">Multigrid preconditioners, coupled with Krylov iterative solvers, are widely used in the</span> class="cmbx-12">Multigrid preconditioners, coupled with Krylov iterative solvers, are widely</span>
<span <span
class="cmr-12">parallel solution of large and sparse linear systems, because of their optimality in the</span> class="cmbx-12">used in the parallel solution of large and sparse linear systems, because of</span>
<span <span
class="cmr-12">solution of linear systems arising from the discretization of scalar elliptic Partial</span> class="cmbx-12">their optimality in the solution of linear systems arising from the</span>
<span <span
class="cmr-12">Differential Equations (PDEs) on regular grids. Optimality, also known as algorithmic</span> class="cmbx-12">discretization of scalar elliptic Partial Differential Equations (PDEs) on</span>
<span <span
class="cmr-12">scalability, is the property of having a computational cost per iteration that depends</span> class="cmbx-12">regular grids. Optimality, also known as algorithmic scalability, is the</span>
<span <span
class="cmr-12">linearly on the problem size, and a convergence rate that is independent of the problem</span> class="cmbx-12">property of having a computational cost per iteration that depends linearly</span>
<span <span
class="cmr-12">size.</span> class="cmbx-12">on the problem size, and a convergence rate that is independent of the</span>
<span
class="cmbx-12">problem size.</span>
<!--l. 13--><p class="indent" > <span <!--l. 13--><p class="indent" > <span
class="cmr-12">Multigrid preconditioners are based on a recursive application of a two-grid process</span> class="cmbx-12">Multigrid preconditioners are based on a recursive application of a</span>
<span
class="cmbx-12">two-grid process consisting of smoother iterations and a coarse-space (or</span>
<span
class="cmbx-12">coarse-level) correction. The smoothers may be either basic iterative</span>
<span <span
class="cmr-12">consisting of smoother iterations and a coarse-space (or coarse-level) correction. The</span> class="cmbx-12">methods, such as the Jacobi and Gauss-Seidel ones, or more complex</span>
<span <span
class="cmr-12">smoothers may be either basic iterative methods, such as the Jacobi and Gauss-Seidel</span> class="cmbx-12">subspace-correction methods, such as the Schwarz ones. The coarse-space</span>
<span <span
class="cmr-12">ones, or more complex subspace-correction methods, such as the Schwarz ones. The</span> class="cmbx-12">correction consists of solving, in an appropriately chosen coarse space, the</span>
<span <span
class="cmr-12">coarse-space correction consists of solving, in an appropriately chosen coarse space, the</span> class="cmbx-12">residual equation associated with the approximate solution computed by</span>
<span <span
class="cmr-12">residual equation associated with the approximate solution computed by the</span> class="cmbx-12">the smoother, and of using the solution of this equation to correct the</span>
<span <span
class="cmr-12">smoother, and of using the solution of this equation to correct the previous</span> class="cmbx-12">previous approximation. The transfer of information between the original</span>
<span <span
class="cmr-12">approximation. The transfer of information between the original (fine) space and</span> class="cmbx-12">(fine) space and the coarse one is performed by using suitable restriction</span>
<span <span
class="cmr-12">the coarse one is performed by using suitable restriction and prolongation</span> class="cmbx-12">and prolongation operators. The construction of the coarse space and the</span>
<span <span
class="cmr-12">operators. The construction of the coarse space and the corresponding transfer</span> class="cmbx-12">corresponding transfer operators is carried out by applying a so-called</span>
<span <span
class="cmr-12">operators is carried out by applying a so-called coarsening algorithm to the</span> class="cmbx-12">coarsening algorithm to the system matrix. Two main approaches</span>
<span <span
class="cmr-12">system matrix. Two main approaches can be used to perform coarsening:</span> class="cmbx-12">can be used to perform coarsening: the geometric approach, which</span>
<span <span
class="cmr-12">the geometric approach, which exploits the knowledge of some physical grid</span> class="cmbx-12">exploits the knowledge of some physical grid associated with the</span>
<span <span
class="cmr-12">associated with the matrix and requires the user to define transfer operators</span> class="cmbx-12">matrix and requires the user to define transfer operators from the</span>
<span <span
class="cmr-12">from the fine to the coarse level and vice versa, and the algebraic approach,</span> class="cmbx-12">fine to the coarse level and vice versa, and the algebraic approach,</span>
<span <span
class="cmr-12">which builds the coarse-space correction and the associate transfer operators</span> class="cmbx-12">which builds the coarse-space correction and the associate transfer</span>
<span <span
class="cmr-12">using only matrix information. The first approach may be difficult when the</span> class="cmbx-12">operators using only matrix information. The first approach may be</span>
<span <span
class="cmr-12">system comes from discretizations on complex geometries; furthermore, ad hoc</span> class="cmbx-12">difficult when the system comes from discretizations on complex</span>
<span <span
class="cmr-12">one-level smoothers may be required to get an efficient interplay between</span> class="cmbx-12">geometries; furthermore, ad hoc one-level smoothers may be required to</span>
<span <span
class="cmr-12">fine and coarse levels, e.g., when matrices with highly varying coefficients are</span> class="cmbx-12">get an efficient interplay between fine and coarse levels, e.g., when</span>
<span <span
class="cmr-12">considered. The second approach performs a fully automatic coarsening and</span> class="cmbx-12">matrices with highly varying coefficients are considered. The second</span>
<span <span
class="cmr-12">enforces the interplay between fine and coarse level by suitably choosing the</span> class="cmbx-12">approach performs a fully automatic coarsening and enforces the</span>
<span <span
class="cmr-12">coarse space and the coarse-to-fine interpolation (see, e.g., </span><span class="cite"><span class="cmbx-12">interplay between fine and coarse level by suitably choosing the coarse</span>
class="cmr-12">[</span><a <span
class="cmbx-12">space and the coarse-to-fine interpolation (see, e.g., </span><span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XBriggs2000"><span href="userhtmlli4.html#XBriggs2000"><span
class="cmr-12">3</span></a><span class="cmbx-12">3</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#XStuben_01"><span href="userhtmlli4.html#XStuben_01"><span
class="cmr-12">24</span></a><span class="cmbx-12">26</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#Xdd2_96"><span href="userhtmlli4.html#Xdd2_96"><span
class="cmr-12">22</span></a><span class="cmbx-12">24</span></a><span
class="cmr-12">]</span></span> <span class="cmbx-12">]</span></span> <span
class="cmr-12">for</span> class="cmbx-12">for</span>
<span <span
class="cmr-12">details.)</span> class="cmbx-12">details.)</span>
<!--l. 37--><p class="indent" > <span <!--l. 37--><p class="indent" > <span
class="cmr-12">MLD2P4 uses a pure algebraic approach, based on the smoothed aggregation</span> class="cmbx-12">MLD2P4 uses a pure algebraic approach, based on the smoothed</span>
<span <span
class="cmr-12">algorithm </span><span class="cite"><span class="cmbx-12">aggregation algorithm </span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XBREZINA_VANEK"><span href="userhtmlli4.html#XBREZINA_VANEK"><span
class="cmr-12">2</span></a><span class="cmbx-12">2</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">26</span></a><span class="cmbx-12">28</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">, for building the sequence of coarse matrices and transfer</span> class="cmbx-12">, for building the sequence of coarse matrices</span>
<span <span
class="cmr-12">operators, starting from the original one. A decoupled version of this algorithm</span> class="cmbx-12">and transfer operators, starting from the original one. A decoupled version</span>
<span <span
class="cmr-12">is implemented, where the smoothed aggregation is applied locally to each</span> class="cmbx-12">of this algorithm is implemented, where the smoothed aggregation is</span>
<span <span
class="cmr-12">submatrix </span><span class="cite"><span class="cmbx-12">applied locally to each submatrix </span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XTUMINARO_TONG"><span href="userhtmlli4.html#XTUMINARO_TONG"><span
class="cmr-12">25</span></a><span class="cmbx-12">27</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">. A brief description of the AMG preconditioners implemented in</span> class="cmbx-12">. A brief description of the AMG</span>
<span <span
class="cmr-12">MLD2P4 is given in Sections</span><span class="cmbx-12">preconditioners implemented in MLD2P4 is given in Sections</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu6.html#x14-130004.1"><span href="userhtmlsu6.html#x14-130004.1"><span
class="cmr-12">4.1</span><!--tex4ht:ref: sec:multilevel --></a><span class="cmbx-12">4.1</span><!--tex4ht:ref: sec:multilevel --></a><span
class="cmr-12">-</span><a class="cmbx-12">-</span><a
href="userhtmlsu8.html#x16-150004.3"><span href="userhtmlsu8.html#x16-150004.3"><span
class="cmr-12">4.3</span><!--tex4ht:ref: sec:smoothers --></a><span class="cmbx-12">4.3</span><!--tex4ht:ref: sec:smoothers --></a><span
class="cmr-12">. For further details the reader is referred to</span> class="cmbx-12">. For</span>
<span class="cite"><span <span
class="cmr-12">[</span><a class="cmbx-12">further details the reader is referred to </span><span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#Xpara_04"><span href="userhtmlli4.html#Xpara_04"><span
class="cmr-12">4</span></a><span class="cmbx-12">4</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#Xaaecc_07"><span href="userhtmlli4.html#Xaaecc_07"><span
class="cmr-12">5</span></a><span class="cmbx-12">5</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#Xapnum_07"><span href="userhtmlli4.html#Xapnum_07"><span
class="cmr-12">7</span></a><span class="cmbx-12">7</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#XMLD2P4_TOMS"><span href="userhtmlli4.html#XMLD2P4_TOMS"><span
class="cmr-12">8</span></a><span class="cmbx-12">8</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<!--l. 47--><p class="indent" > <span <!--l. 47--><p class="indent" > <span
class="cmr-12">We note that optimal multigrid preconditioners do not necessarily correspond to</span> class="cmbx-12">We note that optimal multigrid preconditioners do not necessarily</span>
<span
class="cmbx-12">correspond to minimum execution times in a parallel setting. Indeed, to</span>
<span <span
class="cmr-12">minimum execution times in a parallel setting. Indeed, to obtain effective parallel</span> class="cmbx-12">obtain effective parallel multigrid preconditioners, a tradeoff between the</span>
<span <span
class="cmr-12">multigrid preconditioners, a tradeoff between the optimality and the cost of</span> class="cmbx-12">optimality and the cost of building and applying the smoothers and</span>
<span <span
class="cmr-12">building and applying the smoothers and the coarse-space corrections must be</span> class="cmbx-12">the coarse-space corrections must be achieved. Effective parallel</span>
<span <span
class="cmr-12">achieved. Effective parallel preconditioners require algorithmic scalability to</span> class="cmbx-12">preconditioners require algorithmic scalability to be coupled with</span>
<span <span
class="cmr-12">be coupled with implementation scalability, i.e., a computational cost per</span> class="cmbx-12">implementation scalability, i.e., a computational cost per iteration</span>
<span <span
class="cmr-12">iteration which remains (almost) constant as the number of parallel processors</span> class="cmbx-12">which remains (almost) constant as the number of parallel processors</span>
<span <span
class="cmr-12">increases.</span> class="cmbx-12">increases.</span>
<!--l. 56--><p class="noindent" > <!--l. 56--><p class="noindent" >
<div class="subsectionTOCS"> <div class="subsectionTOCS">
<span <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.1 </span><a class="cmbx-12">4.1 </span><a
href="userhtmlsu6.html#x14-130004.1"><span href="userhtmlsu6.html#x14-130004.1"><span
class="cmr-12">AMG preconditioners</span></a></span> class="cmbx-12">AMG preconditioners</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.2 </span><a class="cmbx-12">4.2 </span><a
href="userhtmlsu7.html#x15-140004.2"><span href="userhtmlsu7.html#x15-140004.2"><span
class="cmr-12">Smoothed Aggregation</span></a></span> class="cmbx-12">Smoothed Aggregation</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">4.3 </span><a class="cmbx-12">4.3 </span><a
href="userhtmlsu8.html#x16-150004.3"><span href="userhtmlsu8.html#x16-150004.3"><span
class="cmr-12">Smoothers and coarsest-level solvers</span></a></span> class="cmbx-12">Smoothers and coarsest-level solvers</span></a></span>
</div> </div>
@ -200,22 +211,22 @@ class="cmr-12">Smoothers and coarsest-level solvers</span></a></span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse5.html" ><span href="userhtmlse5.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse3.html" ><span href="userhtmlse3.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse3.html#tailuserhtmlse3.html" ><span href="userhtmlse3.html#tailuserhtmlse3.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html" ><span href="userhtmlse4.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse4.html" ><span href="userhtml.html#userhtmlse4.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlse4.html"></a> id="tailuserhtmlse4.html"></a>
</body></html> </body></html>

@ -11,215 +11,227 @@
</head><body </head><body
> >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse6.html" ><span href="userhtmlse6.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html" ><span href="userhtmlse4.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html#tailuserhtmlse4.html" ><span href="userhtmlse4.html#tailuserhtmlse4.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlse5.html"><span href="#tailuserhtmlse5.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse5.html" ><span href="userhtml.html#userhtmlse5.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">5 </span></span> <a class="cmbx-12">5 </span></span> <a
id="x17-160005"></a><span id="x17-160005"></a><span
class="cmr-12">Getting Started</span></h3> class="cmbx-12">Getting Started</span></h3>
<!--l. 5--><p class="noindent" ><span <!--l. 5--><p class="noindent" ><span
class="cmr-12">We describe the basics for building and applying MLD2P4 one-level and multilevel</span> class="cmbx-12">We describe the basics for building and applying AMG4PSBLAS one-level</span>
<span <span
class="cmr-12">(i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS </span><span class="cite"><span class="cmbx-12">and multilevel (i.e., AMG) preconditioners with the Krylov solvers included</span>
class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">. The</span>
<span <span
class="cmr-12">following steps are required:</span> class="cmbx-12">in PSBLAS </span><span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span
class="cmbx-12">]</span></span><span
class="cmbx-12">. The following steps are required:</span>
<ol class="enumerate1" > <ol class="enumerate1" >
<li <li
class="enumerate" id="x17-16002x1"><span class="enumerate" id="x17-16002x1"><span
class="cmti-12">Declare the preconditioner data structure</span><span class="cmbxti-10x-x-120">Declare the preconditioner data structure</span><span
class="cmr-12">. It is a derived data type,</span> class="cmbx-12">. It is a derived data</span>
<span class="obeylines-h"><span class="verb"><span <span
class="cmtt-12">mld_</span></span></span><span class="cmbx-12">type, </span><span class="obeylines-h"><span class="verb"><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">amg_</span></span></span><span
class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">prec_</span></span></span> <span class="obeylines-h"><span class="verb"><span class="cmtt-12">prec_</span></span></span> <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type</span></span></span><span class="cmtt-12">type</span></span></span><span
class="cmr-12">, where </span><span class="cmbx-12">, where </span><span
class="cmti-12">x </span><span class="cmbxti-10x-x-120">x </span><span
class="cmr-12">may be </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">may be </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span><span class="cmtt-12">s</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span><span class="cmtt-12">d</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span> <span class="cmtt-12">c</span></span></span> <span
class="cmr-12">or </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">or </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span><span class="cmtt-12">z</span></span></span><span
class="cmr-12">, according to the basic</span> class="cmbx-12">, according to the</span>
<span <span
class="cmr-12">data type of the sparse matrix (</span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">basic data type of the sparse matrix (</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span> <span class="cmtt-12">s</span></span></span> <span
class="cmr-12">= real single precision; </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">= real single precision; </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span> <span class="cmtt-12">d</span></span></span> <span
class="cmr-12">= real double</span> class="cmbx-12">=</span>
<span <span
class="cmr-12">precision; </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">real double precision; </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span> <span class="cmtt-12">c</span></span></span> <span
class="cmr-12">= complex single precision; </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">= complex single precision; </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span> <span class="cmtt-12">z</span></span></span> <span
class="cmr-12">= complex double precision). This</span> class="cmbx-12">= complex</span>
<span <span
class="cmr-12">data structure is accessed by the user only through the MLD2P4 routines,</span> class="cmbx-12">double precision). This data structure is accessed by the user only</span>
<span <span
class="cmr-12">following an object-oriented approach.</span> class="cmbx-12">through the AMG4PSBLAS routines, following an object-oriented</span>
<span
class="cmbx-12">approach.</span>
</li> </li>
<li <li
class="enumerate" id="x17-16004x2"><span class="enumerate" id="x17-16004x2"><span
class="cmti-12">Allocate and initialize the preconditioner data structure, according to a</span> class="cmbxti-10x-x-120">Allocate and initialize the preconditioner data structure,</span>
<span
class="cmbxti-10x-x-120">according to a preconditioner type chosen by the user</span><span
class="cmbx-12">. This is</span>
<span <span
class="cmti-12">preconditioner type chosen by the user</span><span class="cmbx-12">performed by the routine </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">. This is performed by the routine</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">init</span></span></span><span class="cmtt-12">init</span></span></span><span
class="cmr-12">, which also sets defaults for each preconditioner type selected by</span> class="cmbx-12">, which also sets defaults for each</span>
<span <span
class="cmr-12">the user. The preconditioner types and the defaults associated with them</span> class="cmbx-12">preconditioner type selected by the user. The preconditioner types</span>
<span <span
class="cmr-12">are given in Table</span><span class="cmbx-12">and the defaults associated with them are given in Table</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="#x17-160151"><span href="#x17-160151"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span class="cmbx-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">, where the strings used by </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, where</span>
<span
class="cmbx-12">the strings used by </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">init</span></span></span> <span class="cmtt-12">init</span></span></span> <span
class="cmr-12">to identify the</span> class="cmbx-12">to identify the preconditioner types are</span>
<span <span
class="cmr-12">preconditioner types are also given. Note that these strings are valid also if</span> class="cmbx-12">also given. Note that these strings are valid also if uppercase letters</span>
<span <span
class="cmr-12">uppercase letters are substituted by corresponding lowercase ones.</span> class="cmbx-12">are substituted by corresponding lowercase ones.</span>
</li> </li>
<li <li
class="enumerate" id="x17-16006x3"><span class="enumerate" id="x17-16006x3"><span
class="cmti-12">Modify the selected preconditioner type, by properly setting preconditioner</span> class="cmbxti-10x-x-120">Modify the selected preconditioner type, by properly setting</span>
<span <span
class="cmti-12">parameters. </span><span class="cmbxti-10x-x-120">preconditioner parameters. </span><span
class="cmr-12">This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span><span class="cmtt-12">set</span></span></span><span
class="cmr-12">. This routine must be</span> class="cmbx-12">.</span>
<span <span
class="cmr-12">called only if the user wants to modify the default values of the parameters</span> class="cmbx-12">This routine must be called only if the user wants to modify</span>
<span <span
class="cmr-12">associated with the selected preconditioner type, to obtain a variant of that</span> class="cmbx-12">the default values of the parameters associated with the selected</span>
<span <span
class="cmr-12">preconditioner. Examples of use of </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">preconditioner type, to obtain a variant of that preconditioner.</span>
<span
class="cmbx-12">Examples of use of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span> <span class="cmtt-12">set</span></span></span> <span
class="cmr-12">are given in Section</span><span class="cmbx-12">are given in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu9.html#x18-170005.1"><span href="userhtmlsu9.html#x18-170005.1"><span
class="cmr-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span class="cmbx-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
class="cmr-12">; a complete</span> class="cmbx-12">; a complete list</span>
<span <span
class="cmr-12">list of all the preconditioner parameters and their allowed and default values</span> class="cmbx-12">of all the preconditioner parameters and their allowed and default</span>
<span <span
class="cmr-12">is provided in Section</span><span class="cmbx-12">values is provided in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse6.html#x19-180006"><span href="userhtmlse6.html#x19-180006"><span
class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span class="cmbx-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span
class="cmr-12">, Tables</span><span class="cmbx-12">, Tables</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu11.html#x21-200092"><span href="userhtmlsu11.html#x21-200092"><span
class="cmr-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span class="cmbx-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span
class="cmr-12">-</span><a class="cmbx-12">-</span><a
href="userhtmlsu11.html#x21-200158"><span href="userhtmlsu11.html#x21-200158"><span
class="cmr-12">8</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span class="cmbx-12">8</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span
class="cmr-12">.</span> class="cmbx-12">.</span>
</li> </li>
<li <li
class="enumerate" id="x17-16008x4"><span class="enumerate" id="x17-16008x4"><span
class="cmti-12">Build the preconditioner for a given matrix</span><span class="cmbxti-10x-x-120">Build the preconditioner for a given matrix</span><span
class="cmr-12">. If the selected preconditioner is</span> class="cmbx-12">. If the selected</span>
<span
class="cmbx-12">preconditioner is multilevel, then two steps must be performed, as</span>
<span <span
class="cmr-12">multilevel, then two steps must be performed, as specified next.</span> class="cmbx-12">specified next.</span>
<ol class="enumerate2" > <ol class="enumerate2" >
<li <li
class="enumerate" id="x17-16009x0"><span class="enumerate" id="x17-16009x0"><span
class="cmti-12">Build the aggregation hierarchy for a given matrix. </span><span class="cmbxti-10x-x-120">Build the aggregation hierarchy for a given matrix. </span><span
class="cmr-12">This is performed</span> class="cmbx-12">This is</span>
<span <span
class="cmr-12">by the routine </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">performed by the routine </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">hierarchy_build</span></span></span><span class="cmtt-12">hierarchy_build</span></span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
</li> </li>
<li <li
class="enumerate" id="x17-16010x0"><span class="enumerate" id="x17-16010x0"><span
class="cmti-12">Build the preconditioner for a given matrix. </span><span class="cmbxti-10x-x-120">Build the preconditioner for a given matrix. </span><span
class="cmr-12">This is performed by the</span> class="cmbx-12">This is</span>
<span <span
class="cmr-12">routine </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">performed by the routine </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">smoothers_build</span></span></span><span class="cmtt-12">smoothers_build</span></span></span><span
class="cmr-12">.</span></li></ol> class="cmbx-12">.</span></li></ol>
<!--l. 48--><p class="noindent" ><span <!--l. 41--><p class="noindent" ><span
class="cmr-12">If the selected preconditioner is one-level, it is built in a single step, performed by</span> class="cmbx-12">If the selected preconditioner is one-level, it is built in a single step,</span>
<span <span
class="cmr-12">the routine </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">performed by the routine </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">bld</span></span></span><span class="cmtt-12">bld</span></span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
</li> </li>
<li <li
class="enumerate" id="x17-16012x5"><span class="enumerate" id="x17-16012x5"><span
class="cmti-12">Apply the preconditioner at each iteration of a Krylov solver. </span><span class="cmbxti-10x-x-120">Apply the preconditioner at each iteration of a Krylov solver. </span><span
class="cmr-12">This is performed by</span> class="cmbx-12">This is</span>
<span <span
class="cmr-12">the method </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">performed by the method </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">apply</span></span></span><span class="cmtt-12">apply</span></span></span><span
class="cmr-12">. When using the PSBLAS Krylov solvers, this step is</span> class="cmbx-12">. When using the PSBLAS Krylov</span>
<span <span
class="cmr-12">completely transparent to the user, since </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">solvers, this step is completely transparent to the user, since </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">apply</span></span></span> <span class="cmtt-12">apply</span></span></span> <span
class="cmr-12">is called by the PSBLAS routine</span> class="cmbx-12">is</span>
<span
class="cmbx-12">called by the PSBLAS routine implementing the Krylov solver</span>
<span <span
class="cmr-12">implementing the Krylov solver (</span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">(</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_krylov</span></span></span><span class="cmtt-12">psb_krylov</span></span></span><span
class="cmr-12">).</span> class="cmbx-12">).</span>
</li> </li>
<li <li
class="enumerate" id="x17-16014x6"><span class="enumerate" id="x17-16014x6"><span
class="cmti-12">Free the preconditioner data structure</span><span class="cmbxti-10x-x-120">Free the preconditioner data structure</span><span
class="cmr-12">. This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">. This is performed by the</span>
class="cmtt-12">free</span></span></span><span
class="cmr-12">.</span>
<span <span
class="cmr-12">This step is complementary to step 1 and should be performed when the</span> class="cmbx-12">routine </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">free</span></span></span><span
class="cmbx-12">. This step is complementary to step 1 and should be</span>
<span <span
class="cmr-12">preconditioner is no more used.</span></li></ol> class="cmbx-12">performed when the preconditioner is no more used.</span></li></ol>
<!--l. 59--><p class="indent" > <span <!--l. 52--><p class="indent" > <span
class="cmr-12">All the previous routines are available as methods of the preconditioner object. A</span> class="cmbx-12">All the previous routines are available as methods of the preconditioner</span>
<span <span
class="cmr-12">detailed description of them is given in Section</span><span class="cmbx-12">object. A detailed description of them is given in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse6.html#x19-180006"><span href="userhtmlse6.html#x19-180006"><span
class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span class="cmbx-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span
class="cmr-12">. Examples showing the basic use of</span> class="cmbx-12">. Examples</span>
<span <span
class="cmr-12">MLD2P4 are reported in Section</span><span class="cmbx-12">showing the basic use of AMG4PSBLAS are reported in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu9.html#x18-170005.1"><span href="userhtmlsu9.html#x18-170005.1"><span
class="cmr-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span class="cmbx-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<div class="table"> <div class="table">
<!--l. 63--><p class="indent" > <a <!--l. 56--><p class="indent" > <a
id="x17-160151"></a><hr class="float"><div class="float" id="x17-160151"></a><hr class="float"><div class="float"
> >
@ -227,7 +239,7 @@ class="cmr-12">.</span>
<div class="center" <div class="center"
> >
<!--l. 64--><p class="noindent" > <!--l. 57--><p class="noindent" >
<div class="tabular"> <table id="TBL-1" class="tabular" <div class="tabular"> <table id="TBL-1" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
><colgroup id="TBL-1-1g"><col ><colgroup id="TBL-1-1g"><col
@ -242,7 +254,7 @@ class="small-caps">t</span><span
class="small-caps">y</span><span class="small-caps">y</span><span
class="small-caps">p</span><span class="small-caps">p</span><span
class="small-caps">e</span> </span></td><td style="white-space:wrap; text-align:left;" id="TBL-1-1-2" class="small-caps">e</span> </span></td><td style="white-space:wrap; text-align:left;" id="TBL-1-1-2"
class="td11"><!--l. 68--><p class="noindent" ><span class="td11"><!--l. 61--><p class="noindent" ><span
class="cmcsc-10x-x-109"><span class="cmcsc-10x-x-109"><span
class="small-caps">s</span><span class="small-caps">s</span><span
class="small-caps">t</span><span class="small-caps">t</span><span
@ -250,7 +262,7 @@ class="small-caps">r</span><span
class="small-caps">i</span><span class="small-caps">i</span><span
class="small-caps">n</span><span class="small-caps">n</span><span
class="small-caps">g</span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-1-3" class="small-caps">g</span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-1-3"
class="td11"><!--l. 68--><p class="noindent" ><span class="td11"><!--l. 61--><p class="noindent" ><span
class="cmcsc-10x-x-109"><span class="cmcsc-10x-x-109"><span
class="small-caps">d</span><span class="small-caps">d</span><span
class="small-caps">e</span><span class="small-caps">e</span><span
@ -276,19 +288,19 @@ class="small-caps">r</span></span> </td></tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-1" style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-1"
class="td11">No preconditioner </td><td style="white-space:wrap; text-align:left;" id="TBL-1-2-2" class="td11">No preconditioner </td><td style="white-space:wrap; text-align:left;" id="TBL-1-2-2"
class="td11"><!--l. 69--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 62--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;NONE&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-2-3" class="cmtt-10x-x-109">&#8217;NONE&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-2-3"
class="td11"><!--l. 69--><p class="noindent" >Considered to use the PSBLAS Krylov solvers class="td11"><!--l. 62--><p class="noindent" >Considered to use the PSBLAS Krylov solvers
with no preconditioner. </td> with no preconditioner. </td>
</tr><tr </tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-1" style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-1"
class="td11">Diagonal </td><td style="white-space:wrap; text-align:left;" id="TBL-1-3-2" class="td11">Diagonal </td><td style="white-space:wrap; text-align:left;" id="TBL-1-3-2"
class="td11"><!--l. 71--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 64--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;DIAG&#8217;</span></span></span> or class="cmtt-10x-x-109">&#8217;DIAG&#8217;</span></span></span> or
<span class="obeylines-h"><span class="verb"><span <span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;JACOBI&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-3-3" class="cmtt-10x-x-109">&#8217;JACOBI&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-3-3"
class="td11"><!--l. 71--><p class="noindent" >Diagonal preconditioner. For any zero diagonal class="td11"><!--l. 64--><p class="noindent" >Diagonal preconditioner. For any zero diagonal
entry of the matrix to be preconditioned, the entry of the matrix to be preconditioned, the
corresponding entry of the preconditioner is set corresponding entry of the preconditioner is set
to&#x00A0;1. </td> to&#x00A0;1. </td>
@ -296,41 +308,41 @@ to&#x00A0;1. </td>
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-1" style="vertical-align:baseline;" id="TBL-1-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-1"
class="td11">Gauss-Seidel </td><td style="white-space:wrap; text-align:left;" id="TBL-1-4-2" class="td11">Gauss-Seidel </td><td style="white-space:wrap; text-align:left;" id="TBL-1-4-2"
class="td11"><!--l. 74--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 67--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;GS&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-4-3" class="cmtt-10x-x-109">&#8217;GS&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-4-3"
class="td11"><!--l. 74--><p class="noindent" >Hybrid Gauss-Seidel (forward), that is, global class="td11"><!--l. 67--><p class="noindent" >Hybrid Gauss-Seidel (forward), that is, global
block Jacobi with Gauss-Seidel as local solver. </td> block Jacobi with Gauss-Seidel as local solver. </td>
</tr><tr </tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-1" style="vertical-align:baseline;" id="TBL-1-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-1"
class="td11">Symmetrized Gauss-Seidel</td><td style="white-space:wrap; text-align:left;" id="TBL-1-5-2" class="td11">Symmetrized Gauss-Seidel</td><td style="white-space:wrap; text-align:left;" id="TBL-1-5-2"
class="td11"><!--l. 77--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 70--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;FBGS&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-5-3" class="cmtt-10x-x-109">&#8217;FBGS&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-5-3"
class="td11"><!--l. 77--><p class="noindent" >Symmetrized class="td11"><!--l. 70--><p class="noindent" >Symmetrized
hybrid Gauss-Seidel,that is, forward Gauss-Seidel hybrid Gauss-Seidel,that is, forward Gauss-Seidel
followed by backward Gauss-Seidel. </td> followed by backward Gauss-Seidel. </td>
</tr><tr </tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-6-1" style="vertical-align:baseline;" id="TBL-1-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-6-1"
class="td11">Block Jacobi </td><td style="white-space:wrap; text-align:left;" id="TBL-1-6-2" class="td11">Block Jacobi </td><td style="white-space:wrap; text-align:left;" id="TBL-1-6-2"
class="td11"><!--l. 80--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 73--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;BJAC&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-6-3" class="cmtt-10x-x-109">&#8217;BJAC&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-6-3"
class="td11"><!--l. 80--><p class="noindent" >Block-Jacobi with ILU(0) on the local blocks. </td> class="td11"><!--l. 73--><p class="noindent" >Block-Jacobi with ILU(0) on the local blocks. </td>
</tr><tr </tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-7-1" style="vertical-align:baseline;" id="TBL-1-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-7-1"
class="td11">Additive Schwarz </td><td style="white-space:wrap; text-align:left;" id="TBL-1-7-2" class="td11">Additive Schwarz </td><td style="white-space:wrap; text-align:left;" id="TBL-1-7-2"
class="td11"><!--l. 81--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 74--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;AS&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-7-3" class="cmtt-10x-x-109">&#8217;AS&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-7-3"
class="td11"><!--l. 81--><p class="noindent" >Additive Schwarz (AS), with overlap&#x00A0;1 and class="td11"><!--l. 74--><p class="noindent" >Additive Schwarz (AS), with overlap&#x00A0;1 and
ILU(0) on the local blocks. </td> ILU(0) on the local blocks. </td>
</tr><tr </tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-8-1" style="vertical-align:baseline;" id="TBL-1-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-8-1"
class="td11">Multilevel </td><td style="white-space:wrap; text-align:left;" id="TBL-1-8-2" class="td11">Multilevel </td><td style="white-space:wrap; text-align:left;" id="TBL-1-8-2"
class="td11"><!--l. 83--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 76--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;ML&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-8-3" class="cmtt-10x-x-109">&#8217;ML&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-8-3"
class="td11"><!--l. 83--><p class="noindent" >V-cycle with one hybrid forward Gauss-Seidel class="td11"><!--l. 76--><p class="noindent" >V-cycle with one hybrid forward Gauss-Seidel
(GS) sweep as pre-smoother and one hybrid (GS) sweep as pre-smoother and one hybrid
backward GS sweep as post-smoother, basic backward GS sweep as post-smoother, basic
smoothed aggregation as coarsening algorithm, smoothed aggregation as coarsening algorithm,
@ -352,68 +364,73 @@ class="content">Preconditioner types, corresponding strings and default choices.
</div><hr class="endfloat" /> </div><hr class="endfloat" />
</div> </div>
<!--l. 98--><p class="indent" > <span <!--l. 91--><p class="indent" > <span
class="cmr-12">Note that the module </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">Note that the module </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">mld_prec_mod</span></span></span><span class="cmtt-12">amg_prec_mod</span></span></span><span
class="cmr-12">, containing the definition of the preconditioner</span> class="cmbx-12">, containing the definition of</span>
<span
class="cmbx-12">the preconditioner data type and the interfaces to the routines of</span>
<span <span
class="cmr-12">data type and the interfaces to the routines of MLD2P4, must be used in any program</span> class="cmbx-12">AMG4PSBLAS, must be used in any program calling such routines. The</span>
<span <span
class="cmr-12">calling such routines. The modules </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">modules </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_base_mod</span></span></span><span class="cmtt-12">psb_base_mod</span></span></span><span
class="cmr-12">, for the sparse matrix and</span> class="cmbx-12">, for the sparse matrix and communication descriptor</span>
<span <span
class="cmr-12">communication descriptor data types, and </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">data types, and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_krylov_mod</span></span></span><span class="cmtt-12">psb_krylov_mod</span></span></span><span
class="cmr-12">, for interfacing with the</span> class="cmbx-12">, for interfacing with the Krylov solvers,</span>
<span <span
class="cmr-12">Krylov solvers, must be also used (see Section</span><span class="cmbx-12">must be also used (see Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu9.html#x18-170005.1"><span href="userhtmlsu9.html#x18-170005.1"><span
class="cmr-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span class="cmbx-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
class="cmr-12">). </span><br class="cmbx-12">). </span><br
class="newline" /> class="newline" />
<!--l. 105--><p class="indent" > <span <!--l. 98--><p class="indent" > <span
class="cmbx-12">Remark 1. </span><span class="cmbx-12">Remark 1. Coarsest-level solvers based on the LU factorization, such as</span>
class="cmr-12">Coarsest-level solvers based on the LU factorization, such as those</span> <span
class="cmbx-12">those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU</span><span
class="cmbx-12">_Dist,</span>
<span <span
class="cmr-12">implemented in UMFPACK, MUMPS, SuperLU, and SuperLU</span><span class="cmbx-12">usually lead to smaller numbers of preconditioned Krylov iterations</span>
class="cmr-12">_Dist, usually lead to</span>
<span <span
class="cmr-12">smaller numbers of preconditioned Krylov iterations than inexact solvers, when the</span> class="cmbx-12">than inexact solvers, when the linear system comes from a standard</span>
<span <span
class="cmr-12">linear system comes from a standard discretization of basic scalar elliptic PDE</span> class="cmbx-12">discretization of basic scalar elliptic PDE problems. However, this does not</span>
<span <span
class="cmr-12">problems. However, this does not necessarily correspond to the smallest execution time</span> class="cmbx-12">necessarily correspond to the smallest execution time on parallel</span>
<span <span
class="cmr-12">on parallel computers.</span> class="cmbx-12">computers.</span>
<!--l. 107--><p class="indent" > <span
class="cmbxti-10x-x-120">DA MODIFICARE PER INSERIRE TIPO DI AGGREGAZIONE</span>
<div class="subsectionTOCS"> <div class="subsectionTOCS">
<span <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">5.1 </span><a class="cmbx-12">5.1 </span><a
href="userhtmlsu9.html#x18-170005.1"><span href="userhtmlsu9.html#x18-170005.1"><span
class="cmr-12">Examples</span></a></span> class="cmbx-12">Examples</span></a></span>
</div> </div>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse6.html" ><span href="userhtmlse6.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html" ><span href="userhtmlse4.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html#tailuserhtmlse4.html" ><span href="userhtmlse4.html#tailuserhtmlse4.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse5.html" ><span href="userhtmlse5.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse5.html" ><span href="userhtml.html#userhtmlse5.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlse5.html"></a> id="tailuserhtmlse5.html"></a>
</body></html> </body></html>

@ -11,234 +11,239 @@
</head><body </head><body
> >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse7.html" ><span href="userhtmlse7.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse5.html" ><span href="userhtmlse5.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse5.html#tailuserhtmlse5.html" ><span href="userhtmlse5.html#tailuserhtmlse5.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlse6.html"><span href="#tailuserhtmlse6.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse6.html" ><span href="userhtml.html#userhtmlse6.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">6 </span></span> <a class="cmbx-12">6 </span></span> <a
id="x19-180006"></a><span id="x19-180006"></a><span
class="cmr-12">User Interface</span></h3> class="cmbx-12">User Interface</span></h3>
<!--l. 5--><p class="noindent" ><span <!--l. 5--><p class="noindent" ><span
class="cmr-12">The basic user interface of MLD2P4 consists of eight methods. The six methods </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">The basic user interface of AMG4PBLAS consists of eight methods. The six</span>
<span
class="cmbx-12">methods </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">init</span></span></span><span class="cmtt-12">init</span></span></span><span
class="cmr-12">,</span> class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span><span class="cmtt-12">set</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">build</span></span></span><span class="cmtt-12">build</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">hierarchy_build</span></span></span><span class="cmtt-12">hierarchy_build</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">smoothers_build</span></span></span> <span class="cmtt-12">smoothers_build</span></span></span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">apply</span></span></span> <span class="cmtt-12">apply</span></span></span>
class="cmr-12">encapsulate all the</span> <span
class="cmbx-12">encapsulate all the functionalities for the setup and the application of any</span>
<span <span
class="cmr-12">functionalities for the setup and the application of any multilevel and one-level</span> class="cmbx-12">multilevel and one-level preconditioner implemented in the package. The</span>
<span <span
class="cmr-12">preconditioner implemented in the package. The method </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">method </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">free</span></span></span> <span class="cmtt-12">free</span></span></span> <span
class="cmr-12">deallocates the</span> class="cmbx-12">deallocates the preconditioner data structure, while </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">descr</span></span></span>
<span <span
class="cmr-12">preconditioner data structure, while </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">prints a description of the preconditioner setup by the user. For</span>
class="cmtt-12">descr</span></span></span> <span
class="cmr-12">prints a description of the preconditioner</span>
<span <span
class="cmr-12">setup by the user. For backward compatibility, methods are also accessible as</span> class="cmbx-12">backward compatibility, methods are also accessible as stand-alone</span>
<span <span
class="cmr-12">stand-alone subroutines.</span> class="cmbx-12">subroutines.</span>
<!--l. 16--><p class="indent" > <span <!--l. 16--><p class="indent" > <span
class="cmr-12">For each method, the same user interface is overloaded with respect to the real/</span> class="cmbx-12">For each method, the same user interface is overloaded with respect to</span>
<span <span
class="cmr-12">complex case and the single/double precision; arguments with appropriate data types</span> class="cmbx-12">the real/ complex case and the single/double precision; arguments with</span>
<span <span
class="cmr-12">must be passed to the method, i.e.,</span> class="cmbx-12">appropriate data types must be passed to the method, i.e.,</span>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">the sparse matrix data structure, containing the matrix to be preconditioned,</span> class="cmbx-12">the sparse matrix data structure, containing the matrix to be</span>
<span <span
class="cmr-12">must be of type </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">preconditioned, must be of type </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_</span></span></span><span class="cmtt-12">psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">spmat_type</span></span></span> <span class="cmtt-12">spmat_type</span></span></span> <span
class="cmr-12">with </span><span class="cmbx-12">with </span><span
class="cmti-12">x </span><span class="cmbxti-10x-x-120">x </span><span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span> <span class="cmtt-12">s</span></span></span> <span
class="cmr-12">for real single precision, </span><span class="cmbx-12">for</span>
class="cmti-12">x</span>
<span <span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">real single precision, </span><span
class="cmbxti-10x-x-120">x </span><span
class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span> <span class="cmtt-12">d</span></span></span> <span
class="cmr-12">for real double precision, </span><span class="cmbx-12">for real double precision, </span><span
class="cmti-12">x </span><span class="cmbxti-10x-x-120">x </span><span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span> <span class="cmtt-12">c</span></span></span> <span
class="cmr-12">for complex single precision, </span><span class="cmbx-12">for</span>
class="cmti-12">x </span><span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span> <span
class="cmr-12">for</span>
<span <span
class="cmr-12">complex double precision;</span> class="cmbx-12">complex single precision, </span><span
class="cmbxti-10x-x-120">x </span><span
class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span> <span
class="cmbx-12">for complex double precision;</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">the preconditioner data structure must be of type </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">the preconditioner data structure must be of type </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">mld_</span></span></span><span class="cmtt-12">amg_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">prec_type</span></span></span><span class="cmtt-12">prec_type</span></span></span><span
class="cmr-12">, with </span><span class="cmbx-12">,</span>
class="cmti-12">x</span>
<span <span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">with </span><span
class="cmbxti-10x-x-120">x </span><span
class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span><span class="cmtt-12">s</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span><span class="cmtt-12">d</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span><span class="cmtt-12">c</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span><span class="cmtt-12">z</span></span></span><span
class="cmr-12">, according to the sparse matrix data structure;</span> class="cmbx-12">, according to the sparse matrix data structure;</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">the arrays containing the vectors </span><span class="cmbx-12">the arrays containing the vectors </span><span
class="cmmi-12">v </span><span class="cmmi-12">v </span><span
class="cmr-12">and </span><span class="cmbx-12">and </span><span
class="cmmi-12">w </span><span class="cmmi-12">w </span><span
class="cmr-12">involved in the preconditioner</span> class="cmbx-12">involved in</span>
<span <span
class="cmr-12">application </span><span class="cmbx-12">the preconditioner application </span><span
class="cmmi-12">w </span><span class="cmmi-12">w </span><span
class="cmr-12">= </span><span class="cmr-12">= </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmmi-12">v </span><span class="cmmi-12">v </span><span
class="cmr-12">must be of type </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">must be of type</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_</span></span></span><span class="cmtt-12">psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">vect_type</span></span></span> <span class="cmtt-12">vect_type</span></span></span> <span
class="cmr-12">with </span><span class="cmbx-12">with </span><span
class="cmti-12">x </span><span class="cmbxti-10x-x-120">x </span><span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span><span class="cmtt-12">s</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span><span class="cmtt-12">d</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span><span class="cmtt-12">c</span></span></span><span
class="cmr-12">,</span> class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span><span class="cmtt-12">z</span></span></span><span
class="cmr-12">, in a manner completely analogous to the sparse matrix type;</span> class="cmbx-12">, in a manner completely</span>
<span
class="cmbx-12">analogous to the sparse matrix type;</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">real parameters defining the preconditioner must be declared according to</span> class="cmbx-12">real parameters defining the preconditioner must be declared</span>
<span <span
class="cmr-12">the precision of the sparse matrix and preconditioner data structures (see</span> class="cmbx-12">according to the precision of the sparse matrix and preconditioner</span>
<span <span
class="cmr-12">Section</span><span class="cmbx-12">data structures (see Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu11.html#x21-200006.2"><span href="userhtmlsu11.html#x21-200006.2"><span
class="cmr-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span class="cmbx-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmr-12">).</span></li></ul> class="cmbx-12">).</span></li></ul>
<!--l. 39--><p class="noindent" ><span <!--l. 39--><p class="noindent" ><span
class="cmr-12">A description of each method is given in the remainder of this section.</span> class="cmbx-12">A description of each method is given in the remainder of this section.</span>
<div class="subsectionTOCS"> <div class="subsectionTOCS">
<span <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">6.1 </span><a class="cmbx-12">6.1 </span><a
href="userhtmlsu10.html#x20-190006.1"><span href="userhtmlsu10.html#x20-190006.1"><span
class="cmr-12">Method init</span></a></span> class="cmbx-12">Method init</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">6.2 </span><a class="cmbx-12">6.2 </span><a
href="userhtmlsu11.html#x21-200006.2"><span href="userhtmlsu11.html#x21-200006.2"><span
class="cmr-12">Method set</span></a></span> class="cmbx-12">Method set</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">6.3 </span><a class="cmbx-12">6.3 </span><a
href="userhtmlsu12.html#x22-210006.3"><span href="userhtmlsu12.html#x22-210006.3"><span
class="cmr-12">Method hierarchy</span><span class="cmbx-12">Method hierarchy</span><span
class="cmr-12">_build</span></a></span> class="cmbx-12">_build</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">6.4 </span><a class="cmbx-12">6.4 </span><a
href="userhtmlsu13.html#x23-220006.4"><span href="userhtmlsu13.html#x23-220006.4"><span
class="cmr-12">Method smoothers</span><span class="cmbx-12">Method smoothers</span><span
class="cmr-12">_build</span></a></span> class="cmbx-12">_build</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">6.5 </span><a class="cmbx-12">6.5 </span><a
href="userhtmlsu14.html#x24-230006.5"><span href="userhtmlsu14.html#x24-230006.5"><span
class="cmr-12">Method build</span></a></span> class="cmbx-12">Method build</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">6.6 </span><a class="cmbx-12">6.6 </span><a
href="userhtmlsu15.html#x25-240006.6"><span href="userhtmlsu15.html#x25-240006.6"><span
class="cmr-12">Method apply</span></a></span> class="cmbx-12">Method apply</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">6.7 </span><a class="cmbx-12">6.7 </span><a
href="userhtmlsu16.html#x26-250006.7"><span href="userhtmlsu16.html#x26-250006.7"><span
class="cmr-12">Method free</span></a></span> class="cmbx-12">Method free</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">6.8 </span><a class="cmbx-12">6.8 </span><a
href="userhtmlsu17.html#x27-260006.8"><span href="userhtmlsu17.html#x27-260006.8"><span
class="cmr-12">Method descr</span></a></span> class="cmbx-12">Method descr</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmr-12">6.9 </span><a class="cmbx-12">6.9 </span><a
href="userhtmlsu18.html#x28-270006.9"><span href="userhtmlsu18.html#x28-270006.9"><span
class="cmr-12">Auxiliary Methods</span></a></span> class="cmbx-12">Auxiliary Methods</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="cmbx-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmr-12">6.9.1 </span><a class="cmbx-12">6.9.1 </span><a
href="userhtmlsu18.html#x28-280006.9.1"><span href="userhtmlsu18.html#x28-280006.9.1"><span
class="cmr-12">Method: dump</span></a></span> class="cmbx-12">Method: dump</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="cmbx-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmr-12">6.9.2 </span><a class="cmbx-12">6.9.2 </span><a
href="userhtmlsu18.html#x28-290006.9.2"><span href="userhtmlsu18.html#x28-290006.9.2"><span
class="cmr-12">Method: clone</span></a></span> class="cmbx-12">Method: clone</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="cmbx-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmr-12">6.9.3 </span><a class="cmbx-12">6.9.3 </span><a
href="userhtmlsu18.html#x28-300006.9.3"><span href="userhtmlsu18.html#x28-300006.9.3"><span
class="cmr-12">Method: sizeof</span></a></span> class="cmbx-12">Method: sizeof</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="cmbx-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmr-12">6.9.4 </span><a class="cmbx-12">6.9.4 </span><a
href="userhtmlsu18.html#x28-310006.9.4"><span href="userhtmlsu18.html#x28-310006.9.4"><span
class="cmr-12">Method: allocate</span><span class="cmbx-12">Method: allocate</span><span
class="cmr-12">_wrk</span></a></span> class="cmbx-12">_wrk</span></a></span>
<br /> <span <br /> <span
class="cmr-12">&#x00A0;</span><span class="cmbx-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span class="cmbx-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmr-12">6.9.5 </span><a class="cmbx-12">6.9.5 </span><a
href="userhtmlsu18.html#x28-320006.9.5"><span href="userhtmlsu18.html#x28-320006.9.5"><span
class="cmr-12">Method: free</span><span class="cmbx-12">Method: free</span><span
class="cmr-12">_wrk</span></a></span> class="cmbx-12">_wrk</span></a></span>
</div> </div>
@ -252,22 +257,22 @@ class="cmr-12">_wrk</span></a></span>
<!--l. 4--><div class="crosslinks"><p class="noindent"><span <!--l. 4--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse7.html" ><span href="userhtmlse7.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse5.html" ><span href="userhtmlse5.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse5.html#tailuserhtmlse5.html" ><span href="userhtmlse5.html#tailuserhtmlse5.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html" ><span href="userhtmlse6.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse6.html" ><span href="userhtml.html#userhtmlse6.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 4--><p class="indent" > <a <!--l. 4--><p class="indent" > <a
id="tailuserhtmlse6.html"></a> id="tailuserhtmlse6.html"></a>
</body></html> </body></html>

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html > <html >
<head><title>Adding new smoother and solver objects to MLD2P4</title> <head><title>Adding new smoother and solver objects to AMG4PSBLAS</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)"> <meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)"> <meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
@ -11,65 +11,71 @@
</head><body </head><body
> >
<!--l. 4--><div class="crosslinks"><p class="noindent"><span <!--l. 4--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html" ><span href="userhtmlse6.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#tailuserhtmlse6.html" ><span href="userhtmlse6.html#tailuserhtmlse6.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlse7.html"><span href="#tailuserhtmlse7.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse7.html" ><span href="userhtml.html#userhtmlse7.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">7 </span></span> <a class="cmbx-12">7 </span></span> <a
id="x29-330007"></a><span id="x29-330007"></a><span
class="cmr-12">Adding new smoother and solver objects to MLD2P4</span></h3> class="cmbx-12">Adding new smoother and solver objects to AMG4PSBLAS</span></h3>
<!--l. 6--><p class="noindent" ><span <!--l. 6--><p class="noindent" ><span
class="cmr-12">Developers can add completely new smoother and/or solver classes derived from the</span> class="cmbx-12">Developers can add completely new smoother and/or solver classes derived</span>
<span <span
class="cmr-12">base objects in the library (see Remark</span><span class="cmbx-12">from the base objects in the library (see Remark</span><span
class="cmr-12">&#x00A0;2 in Section</span><span class="cmbx-12">&#x00A0;2 in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu11.html#x21-200006.2"><span href="userhtmlsu11.html#x21-200006.2"><span
class="cmr-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span class="cmbx-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmr-12">), without recompiling the</span> class="cmbx-12">), without</span>
<span <span
class="cmr-12">library itself.</span> class="cmbx-12">recompiling the library itself.</span>
<!--l. 10--><p class="indent" > <span <!--l. 10--><p class="indent" > <span
class="cmr-12">To do so, it is necessary first to select the base type to be extended. In our</span> class="cmbx-12">To do so, it is necessary first to select the base type to be extended. In</span>
<span <span
class="cmr-12">experience, it is quite likely that the new application needs only the definition of a</span> class="cmbx-12">our experience, it is quite likely that the new application needs only the</span>
<span <span
class="cmr-12">&#8220;solver&#8221; object, which is almost always acting only on the local part of the distributed</span> class="cmbx-12">definition of a &#8220;solver&#8221; object, which is almost always acting only on the</span>
<span <span
class="cmr-12">matrix. The parallel actions required to connect the various solver objects are most</span> class="cmbx-12">local part of the distributed matrix. The parallel actions required to</span>
<span <span
class="cmr-12">often already provided by the block-Jacobi or the additive Schwarz smoothers. To</span> class="cmbx-12">connect the various solver objects are most often already provided by the</span>
<span <span
class="cmr-12">define a new solver, the developer will then have to define its components and</span> class="cmbx-12">block-Jacobi or the additive Schwarz smoothers. To define a new solver, the</span>
<span <span
class="cmr-12">methods, perhaps taking one of the predefined solvers as a starting point, if</span> class="cmbx-12">developer will then have to define its components and methods,</span>
<span <span
class="cmr-12">possible.</span> class="cmbx-12">perhaps taking one of the predefined solvers as a starting point, if</span>
<span
class="cmbx-12">possible.</span>
<!--l. 20--><p class="indent" > <span <!--l. 20--><p class="indent" > <span
class="cmr-12">Once the new smoother/solver class has been developed, to use it in the context of</span> class="cmbx-12">Once the new smoother/solver class has been developed, to use</span>
<span
class="cmbx-12">it in the context of the multilevel preconditioners it is necessary</span>
<span <span
class="cmr-12">the multilevel preconditioners it is necessary to:</span> class="cmbx-12">to:</span>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">declare in the application program a variable of the new type;</span> class="cmbx-12">declare in the application program a variable of the new type;</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">pass that variable as the argument to the </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">pass that variable as the argument to the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span> <span class="cmtt-12">set</span></span></span> <span
class="cmr-12">routine as in the following:</span> class="cmbx-12">routine as in the</span>
<span
class="cmbx-12">following:</span>
<div class="center" <div class="center"
> >
<!--l. 26--><p class="noindent" > <!--l. 26--><p class="noindent" >
@ -83,55 +89,60 @@ class="cmtt-12">&#x00A0;p%set(solver,info</span><span
class="cmtt-12">&#x00A0;[,ilev,ilmax,pos])</span></span></span></div> class="cmtt-12">&#x00A0;[,ilev,ilmax,pos])</span></span></span></div>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">link the code implementing the various methods into the application</span> class="cmbx-12">link the code implementing the various methods into the application</span>
<span <span
class="cmr-12">executable.</span></li></ul> class="cmbx-12">executable.</span></li></ul>
<!--l. 32--><p class="noindent" ><span <!--l. 32--><p class="noindent" ><span
class="cmr-12">The new solver object is then dynamically included in the preconditioner structure, and</span> class="cmbx-12">The new solver object is then dynamically included in the preconditioner</span>
<span <span
class="cmr-12">acts as a </span><span class="cmbx-12">structure, and acts as a </span><span
class="cmti-12">mold </span><span class="cmbxti-10x-x-120">mold </span><span
class="cmr-12">to which the preconditioner will conform, even though the MLD2P4</span> class="cmbx-12">to which the preconditioner will conform,</span>
<span <span
class="cmr-12">library has not been modified to account for this new development.</span> class="cmbx-12">even though the AMG4PSBLAS library has not been modified to account</span>
<!--l. 37--><p class="indent" > <span
class="cmr-12">It is possible to define new values for the keyword </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">WHAT</span></span></span> <span
class="cmr-12">in the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span> <span
class="cmr-12">routine; if the</span>
<span
class="cmr-12">library code does not recognize a keyword, it passes it down the composition hierarchy</span>
<span <span
class="cmr-12">(levels containing smoothers containing in turn solvers), so that it can be eventually</span> class="cmbx-12">for this new development.</span>
<!--l. 37--><p class="indent" > <span
class="cmbx-12">It is possible to define new values for the keyword </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">WHAT</span></span></span> <span
class="cmbx-12">in the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span>
<span <span
class="cmr-12">caught by the new solver. By the same token, any keyword/value pair that does not</span> class="cmbx-12">routine; if the library code does not recognize a keyword, it passes it down</span>
<span <span
class="cmr-12">pertain to a given smoother should be passed down to the contained solver, and</span> class="cmbx-12">the composition hierarchy (levels containing smoothers containing in turn</span>
<span <span
class="cmr-12">any keyword/value pair that does not pertain to a given solver is by default</span> class="cmbx-12">solvers), so that it can be eventually caught by the new solver. By the</span>
<span <span
class="cmr-12">ignored.</span> class="cmbx-12">same token, any keyword/value pair that does not pertain to a given</span>
<span
class="cmbx-12">smoother should be passed down to the contained solver, and any</span>
<span
class="cmbx-12">keyword/value pair that does not pertain to a given solver is by default</span>
<span
class="cmbx-12">ignored.</span>
<!--l. 46--><p class="indent" > <span <!--l. 46--><p class="indent" > <span
class="cmr-12">An example is provided in the source code distribution under the folder</span> class="cmbx-12">An example is provided in the source code distribution under the folder</span>
<span class="obeylines-h"><span class="verb"><span <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">tests/newslv</span></span></span><span class="cmtt-12">tests/newslv</span></span></span><span
class="cmr-12">. In this example we are implementing a new incomplete factorization</span> class="cmbx-12">. In this example we are implementing a new incomplete</span>
<span <span
class="cmr-12">variant (which is simply the ILU(0) factorization under a new name). Because of the</span> class="cmbx-12">factorization variant (which is simply the ILU(0) factorization under a new</span>
<span <span
class="cmr-12">specifics of this case, it is possible to reuse the basic structure of the ILU solver, with</span> class="cmbx-12">name). Because of the specifics of this case, it is possible to reuse the basic</span>
<span <span
class="cmr-12">its L/D/U components and the methods needed to apply the solver; only a few</span> class="cmbx-12">structure of the ILU solver, with its L/D/U components and the</span>
<span <span
class="cmr-12">methods, such as the description and most importantly the build, need to be</span> class="cmbx-12">methods needed to apply the solver; only a few methods, such as the</span>
<span <span
class="cmr-12">ovverridden (rewritten).</span> class="cmbx-12">description and most importantly the build, need to be ovverridden</span>
<span
class="cmbx-12">(rewritten).</span>
<!--l. 55--><p class="indent" > <span <!--l. 55--><p class="indent" > <span
class="cmr-12">The interfaces for the calls shown above are defined using</span> class="cmbx-12">The interfaces for the calls shown above are defined using</span>
<div class="center" <div class="center"
> >
<!--l. 56--><p class="noindent" > <!--l. 56--><p class="noindent" >
@ -144,46 +155,49 @@ id="TBL-21-2"></colgroup><tr
class="td11"><!--l. 58--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 58--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">smoother</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-21-1-2" class="cmtt-12">smoother</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-21-1-2"
class="td11"><!--l. 58--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 58--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(mld_x_base_smoother_type)</span></span></span> </td> class="cmtt-12">class(amg_x_base_smoother_type)</span></span></span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:wrap; text-align:left;" id="TBL-21-2-1" style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:wrap; text-align:left;" id="TBL-21-2-1"
class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-21-2-2" class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-21-2-2"
class="td11"><!--l. 59--><p class="noindent" ><span class="td11"><!--l. 59--><p class="noindent" ><span
class="cmr-12">The user-defined new smoother to be employed in the</span> class="cmbx-12">The user-defined new smoother to be employed in the</span>
<span <span
class="cmr-12">preconditioner.</span> </td> class="cmbx-12">preconditioner.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:wrap; text-align:left;" id="TBL-21-3-1" style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:wrap; text-align:left;" id="TBL-21-3-1"
class="td11"><!--l. 61--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 61--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">solver</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-21-3-2" class="cmtt-12">solver</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-21-3-2"
class="td11"><!--l. 61--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 61--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(mld_x_base_solver_type)</span></span></span> </td> class="cmtt-12">class(amg_x_base_solver_type)</span></span></span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-21-4-"><td style="white-space:wrap; text-align:left;" id="TBL-21-4-1" style="vertical-align:baseline;" id="TBL-21-4-"><td style="white-space:wrap; text-align:left;" id="TBL-21-4-1"
class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-21-4-2" class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-21-4-2"
class="td11"><!--l. 62--><p class="noindent" ><span class="td11"><!--l. 62--><p class="noindent" ><span
class="cmr-12">The user-defined new solver to be employed in the preconditioner.</span></td></tr></table></div></div> class="cmbx-12">The user-defined new solver to be employed in the</span>
<span
class="cmbx-12">preconditioner.</span> </td>
</tr></table></div></div>
<!--l. 66--><p class="noindent" ><span <!--l. 66--><p class="noindent" ><span
class="cmr-12">The other arguments are defined in the way described in Sec.</span><span class="cmbx-12">The other arguments are defined in the way described in Sec.</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu11.html#x21-200006.2"><span href="userhtmlsu11.html#x21-200006.2"><span
class="cmr-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span class="cmbx-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmr-12">. As an example, in the</span> class="cmbx-12">. As an</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">tests/newslv</span></span></span> <span
class="cmr-12">code we define a new object of type </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">mld_d_tlu_solver_type</span></span></span><span
class="cmr-12">, and we</span>
<span <span
class="cmr-12">pass it as follows:</span> class="cmbx-12">example, in the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">tests/newslv</span></span></span> <span
class="cmbx-12">code we define a new object of type</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_d_tlu_solver_type</span></span></span><span
class="cmbx-12">, and we pass it as follows:</span>
<div class="verbatim" id="verbatim-10"> <div class="verbatim" id="verbatim-10">
&#x00A0;<br />&#x00A0;&#x00A0;!&#x00A0;sparse&#x00A0;matrix&#x00A0;and&#x00A0;preconditioner &#x00A0;<br />&#x00A0;&#x00A0;!&#x00A0;sparse&#x00A0;matrix&#x00A0;and&#x00A0;preconditioner
&#x00A0;<br />&#x00A0;&#x00A0;type(psb_dspmat_type)&#x00A0;::&#x00A0;a &#x00A0;<br />&#x00A0;&#x00A0;type(psb_dspmat_type)&#x00A0;::&#x00A0;a
&#x00A0;<br />&#x00A0;&#x00A0;type(mld_dprec_type)&#x00A0;&#x00A0;::&#x00A0;prec &#x00A0;<br />&#x00A0;&#x00A0;type(amg_dprec_type)&#x00A0;&#x00A0;::&#x00A0;prec
&#x00A0;<br />&#x00A0;&#x00A0;type(mld_d_tlu_solver_type)&#x00A0;::&#x00A0;tlusv &#x00A0;<br />&#x00A0;&#x00A0;type(amg_d_tlu_solver_type)&#x00A0;::&#x00A0;tlusv
&#x00A0;<br /> &#x00A0;<br />
&#x00A0;<br />...... &#x00A0;<br />......
&#x00A0;<br />&#x00A0;&#x00A0;! &#x00A0;<br />&#x00A0;&#x00A0;!
@ -208,22 +222,22 @@ class="cmr-12">pass it as follows:</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html" ><span href="userhtmlse6.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#tailuserhtmlse6.html" ><span href="userhtmlse6.html#tailuserhtmlse6.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse7.html" ><span href="userhtmlse7.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse7.html" ><span href="userhtml.html#userhtmlse7.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlse7.html"></a> id="tailuserhtmlse7.html"></a>
</body></html> </body></html>

@ -11,50 +11,52 @@
</head><body </head><body
> >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse9.html" ><span href="userhtmlse9.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse7.html" ><span href="userhtmlse7.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse7.html#tailuserhtmlse7.html" ><span href="userhtmlse7.html#tailuserhtmlse7.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlse8.html"><span href="#tailuserhtmlse8.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse8.html" ><span href="userhtml.html#userhtmlse8.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">8 </span></span> <a class="cmbx-12">8 </span></span> <a
id="x30-340008"></a><span id="x30-340008"></a><span
class="cmr-12">Error Handling</span></h3> class="cmbx-12">Error Handling</span></h3>
<!--l. 5--><p class="noindent" ><span <!--l. 5--><p class="noindent" ><span
class="cmr-12">The error handling in MLD2P4 is based on the PSBLAS error handling. Error</span> class="cmbx-12">The error handling in AMG4PSBLAS is based on the PSBLAS error</span>
<span <span
class="cmr-12">conditions are signaled via an integer argument </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">handling. Error conditions are signaled via an integer argument </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span><span class="cmtt-12">info</span></span></span><span
class="cmr-12">; whenever an error condition is</span> class="cmbx-12">;</span>
<span <span
class="cmr-12">detected, an error trace stack is built by the library up to the top-level, user-callable</span> class="cmbx-12">whenever an error condition is detected, an error trace stack is built by the</span>
<span <span
class="cmr-12">routine. This routine will then decide, according to the user preferences, whether</span> class="cmbx-12">library up to the top-level, user-callable routine. This routine will then</span>
<span <span
class="cmr-12">the error should be handled by terminating the program or by returning the</span> class="cmbx-12">decide, according to the user preferences, whether the error should be</span>
<span <span
class="cmr-12">error condition to the user code, which will then take action, and whether</span> class="cmbx-12">handled by terminating the program or by returning the error condition to</span>
<span <span
class="cmr-12">an error message should be printed. These options may be set by using the</span> class="cmbx-12">the user code, which will then take action, and whether an error message</span>
<span <span
class="cmr-12">PSBLAS error handling routines; for further details see the PSBLAS User&#8217;s Guide</span> class="cmbx-12">should be printed. These options may be set by using the PSBLAS error</span>
<span
class="cmbx-12">handling routines; for further details see the PSBLAS User&#8217;s Guide</span>
<span class="cite"><span <span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
@ -68,22 +70,22 @@ class="cmr-12">.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlse9.html" ><span href="userhtmlse9.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse7.html" ><span href="userhtmlse7.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse7.html#tailuserhtmlse7.html" ><span href="userhtmlse7.html#tailuserhtmlse7.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse8.html" ><span href="userhtml.html#userhtmlse8.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlse8.html"></a> id="tailuserhtmlse8.html"></a>
</body></html> </body></html>

@ -11,41 +11,47 @@
</head><body </head><body
> >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html" ><span href="userhtmlli4.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse8.html#tailuserhtmlse8.html" ><span href="userhtmlse8.html#tailuserhtmlse8.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlse9.html"><span href="#tailuserhtmlse9.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse9.html" ><span href="userhtml.html#userhtmlse9.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <h3 class="sectionHead"><span class="titlemark"><span
class="cmr-12">A </span></span> <a class="cmbx-12">A </span></span> <a
id="x31-35000A"></a><span id="x31-35000A"></a><span
class="cmr-12">License</span></h3> class="cmbx-12">License</span></h3>
<!--l. 5--><p class="noindent" ><span <!--l. 5--><p class="noindent" ><span
class="cmr-12">The MLD2P4 is freely distributable under the following copyright terms:</span> class="cmbx-12">DA CONTROLLARE E MODIFICARE INCLUDENDO I CREDITS A</span>
<span
class="cmbx-12">MLD2P4</span>
<!--l. 7--><p class="indent" > <span
class="cmbx-12">The AMG4PSBLAS is freely distributable under the following copyright</span>
<span
class="cmbx-12">terms:</span>
<div class="verbatim" id="verbatim-11"> <div class="verbatim" id="verbatim-11">
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;MLD2P4&#x00A0;&#x00A0;version&#x00A0;2.1 &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;AMG4PSBLAS&#x00A0;&#x00A0;version&#x00A0;1.0
&#x00A0;<br />&#x00A0;&#x00A0;MultiLevel&#x00A0;Domain&#x00A0;Decomposition&#x00A0;Parallel&#x00A0;Preconditioners&#x00A0;Package &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Algebraic&#x00A0;MultiGrid&#x00A0;Preconditioners&#x00A0;Package
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;based&#x00A0;on&#x00A0;PSBLAS&#x00A0;(Parallel&#x00A0;Sparse&#x00A0;BLAS&#x00A0;version&#x00A0;3.5) &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;based&#x00A0;on&#x00A0;PSBLAS&#x00A0;(Parallel&#x00A0;Sparse&#x00A0;BLAS&#x00A0;version&#x00A0;3.5)
&#x00A0;<br /> &#x00A0;<br />
&#x00A0;<br />&#x00A0;&#x00A0;(C)&#x00A0;Copyright&#x00A0;2008,&#x00A0;2010,&#x00A0;2012,&#x00A0;2015,&#x00A0;2017 &#x00A0;<br />&#x00A0;&#x00A0;(C)&#x00A0;Copyright&#x00A0;2008,&#x00A0;2010,&#x00A0;2012,&#x00A0;2015,&#x00A0;2017
&#x00A0;<br /> &#x00A0;<br />
&#x00A0;<br />&#x00A0;&#x00A0;Salvatore&#x00A0;Filippone&#x00A0;&#x00A0;&#x00A0;&#x00A0;Cranfield&#x00A0;University,&#x00A0;Cranfield,&#x00A0;UK &#x00A0;<br />&#x00A0;&#x00A0;Pasqua&#x00A0;D&#8217;Ambra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;<br />&#x00A0;&#x00A0;Pasqua&#x00A0;D&#8217;Ambra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;IAC-CNR,&#x00A0;Naples,&#x00A0;IT &#x00A0;<br />&#x00A0;&#x00A0;Fabio&#x00A0;Durastante&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;University&#x00A0;of&#x00A0;Pisa&#x00A0;and&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;<br />&#x00A0;&#x00A0;Daniela&#x00A0;di&#x00A0;Serafino&#x00A0;&#x00A0;&#x00A0;&#x00A0;University&#x00A0;of&#x00A0;Campania&#x00A0;L.&#x00A0;Vanvitelli,&#x00A0;Caserta,&#x00A0;IT &#x00A0;<br />&#x00A0;&#x00A0;Salvatore&#x00A0;Filippone&#x00A0;&#x00A0;&#x00A0;&#x00A0;University&#x00A0;of&#x00A0;Rome&#x00A0;Tor-Vergata&#x00A0;and&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;<br /> &#x00A0;<br />
&#x00A0;<br />&#x00A0;&#x00A0;Redistribution&#x00A0;and&#x00A0;use&#x00A0;in&#x00A0;source&#x00A0;and&#x00A0;binary&#x00A0;forms,&#x00A0;with&#x00A0;or&#x00A0;without &#x00A0;<br />&#x00A0;&#x00A0;Redistribution&#x00A0;and&#x00A0;use&#x00A0;in&#x00A0;source&#x00A0;and&#x00A0;binary&#x00A0;forms,&#x00A0;with&#x00A0;or&#x00A0;without
&#x00A0;<br />&#x00A0;&#x00A0;modification,&#x00A0;are&#x00A0;permitted&#x00A0;provided&#x00A0;that&#x00A0;the&#x00A0;following&#x00A0;conditions &#x00A0;<br />&#x00A0;&#x00A0;modification,&#x00A0;are&#x00A0;permitted&#x00A0;provided&#x00A0;that&#x00A0;the&#x00A0;following&#x00A0;conditions
@ -72,7 +78,7 @@ class="cmr-12">The MLD2P4 is freely distributable under the following copyright
&#x00A0;<br />&#x00A0;&#x00A0;POSSIBILITY&#x00A0;OF&#x00A0;SUCH&#x00A0;DAMAGE. &#x00A0;<br />&#x00A0;&#x00A0;POSSIBILITY&#x00A0;OF&#x00A0;SUCH&#x00A0;DAMAGE.
&#x00A0;<br /> &#x00A0;<br />
</div> </div>
<!--l. 43--><p class="nopar" > <!--l. 45--><p class="nopar" >
@ -90,22 +96,22 @@ class="cmr-12">The MLD2P4 is freely distributable under the following copyright
<!--l. 2--><div class="crosslinks"><p class="noindent"><span <!--l. 2--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html" ><span href="userhtmlli4.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse8.html#tailuserhtmlse8.html" ><span href="userhtmlse8.html#tailuserhtmlse8.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse9.html" ><span href="userhtmlse9.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtml.html#userhtmlse9.html" ><span href="userhtml.html#userhtmlse9.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 2--><p class="indent" > <a <!--l. 2--><p class="indent" > <a
id="tailuserhtmlse9.html"></a> id="tailuserhtmlse9.html"></a>
</body></html> </body></html>

@ -36,15 +36,15 @@ class="cmbx-12">BLAS</span> </dt><dd
class="description"><span class="cite"><span class="description"><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#Xblas3"><span href="userhtmlli4.html#Xblas3"><span
class="cmr-12">11</span></a><span class="cmr-12">13</span></a><span
class="cmr-12">,</span><span class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xblas2"><span href="userhtmlli4.html#Xblas2"><span
class="cmr-12">12</span></a><span class="cmr-12">14</span></a><span
class="cmr-12">,</span><span class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xblas1"><span href="userhtmlli4.html#Xblas1"><span
class="cmr-12">18</span></a><span class="cmr-12">20</span></a><span
class="cmr-12">]</span></span> <span class="cmr-12">]</span></span> <span
class="cmr-12">Many vendors provide optimized versions of BLAS; if no</span> class="cmr-12">Many vendors provide optimized versions of BLAS; if no</span>
<span <span
@ -60,11 +60,11 @@ href="www.netlib.org/blas" class="url" ><span
class="cmtt-12">www.netlib.org/blas</span></a><span class="cmtt-12">www.netlib.org/blas</span></a><span
class="cmr-12">) are meant to define the standard</span> class="cmr-12">) are meant to define the standard</span>
<span <span
class="cmr-12">behaviour of the BLAS interface, so they are not optimized for any</span> class="cmr-12">behaviour of the BLAS interface, so they are not optimized for any particular</span>
<span <span
class="cmr-12">particular plaftorm, and should only be used as a last resort. Note that</span> class="cmr-12">platform, and should only be used as a last resort. Note that BLAS</span>
<span <span
class="cmr-12">BLAS computations form a relatively small part of the MLD2P4/PSBLAS</span> class="cmr-12">computations form a relatively small part of the AMG4PSBLAS/PSBLAS</span>
<span <span
class="cmr-12">computations; they are however critical when using preconditioners based</span> class="cmr-12">computations; they are however critical when using preconditioners based</span>
<span <span
@ -89,11 +89,11 @@ class="cmbx-12">MPI</span> </dt><dd
class="description"><span class="cite"><span class="description"><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XMPI2"><span href="userhtmlli4.html#XMPI2"><span
class="cmr-12">17</span></a><span class="cmr-12">19</span></a><span
class="cmr-12">,</span><span class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XMPI1"><span href="userhtmlli4.html#XMPI1"><span
class="cmr-12">23</span></a><span class="cmr-12">25</span></a><span
class="cmr-12">]</span></span> <span class="cmr-12">]</span></span> <span
class="cmr-12">A version of MPI is available on most high-performance computing</span> class="cmr-12">A version of MPI is available on most high-performance computing</span>
<span <span
@ -104,25 +104,29 @@ class="cmbx-12">PSBLAS</span> </dt><dd
class="description"><span class="cite"><span class="description"><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmr-12">15</span></a><span
class="cmr-12">,</span><span class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xpsblas_00"><span href="userhtmlli4.html#Xpsblas_00"><span
class="cmr-12">15</span></a><span class="cmr-12">17</span></a><span
class="cmr-12">]</span></span> <span class="cmr-12">]</span></span> <span
class="cmr-12">Parallel Sparse BLAS (PSBLAS) is available from</span> class="cmr-12">Parallel Sparse BLAS (PSBLAS) is available from</span>
<a <a
href="github.com/sfilippone/psblas3" class="url" ><span href="github.com/sfilippone/psblas3" class="url" ><span
class="cmtt-12">github.com/sfilippone/psblas3</span></a><span class="cmtt-12">github.com/sfilippone/psblas3</span></a> <span
class="cmr-12">; version 3.5.0 (or later) is required.</span> class="cmr-12">?? </span><span
class="cmbx-12">Mettere tutto sotto psctoolkit</span><span
class="cmr-12">;</span>
<span
class="cmr-12">version 3.5.0 (or later) is required. Indeed, all the prerequisites listed so far</span>
<span <span
class="cmr-12">Indeed, all the prerequisites listed so far are also prerequisites of PSBLAS.</span></dd></dl> class="cmr-12">are also prerequisites of PSBLAS.</span></dd></dl>
<!--l. 56--><p class="noindent" ><span <!--l. 56--><p class="noindent" ><span
class="cmr-12">Please note that the four previous libraries must have Fortran interfaces compatible with</span> class="cmr-12">Please note that the four previous libraries must have Fortran interfaces compatible with</span>
<span <span
class="cmr-12">MLD2P4; usually this means that they should all be built with the same compiler as</span> class="cmr-12">AMG4PSBLAS; usually this means that they should all be built with the same</span>
<span <span
class="cmr-12">MLD2P4.</span> class="cmr-12">compiler as AMG4PSBLAS.</span>

@ -11,20 +11,20 @@
</head><body </head><body
> >
<!--l. 43--><div class="crosslinks"><p class="noindent"><span <!--l. 43--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu11.html" ><span href="userhtmlsu11.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu10.html"><span href="#tailuserhtmlsu10.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu10.html" ><span href="userhtmlse6.html#userhtmlsu10.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">6.1 </span></span> <a class="cmbx-12">6.1 </span></span> <a
id="x20-190006.1"></a><span id="x20-190006.1"></a><span
class="cmr-12">Method init</span></h4> class="cmbx-12">Method init</span></h4>
<div class="center" <div class="center"
> >
<!--l. 45--><p class="noindent" > <!--l. 45--><p class="noindent" >
@ -32,11 +32,11 @@ class="cmr-12">Method init</span></h4>
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%init(icontx,ptype,info)</span></span></span></div> class="cmtt-12">&#x00A0;p%init(icontx,ptype,info)</span></span></span></div>
<!--l. 49--><p class="noindent" ><span <!--l. 49--><p class="noindent" ><span
class="cmr-12">This method allocates and initializes the preconditioner </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">This method allocates and initializes the preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span><span class="cmtt-12">p</span></span></span><span
class="cmr-12">, according to the</span> class="cmbx-12">, according to the</span>
<span <span
class="cmr-12">preconditioner type chosen by the user.</span> class="cmbx-12">preconditioner type chosen by the user.</span>
<!--l. 53--><p class="noindent" ><span <!--l. 53--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-2" class="tabular" <div class="tabular"> <table id="TBL-2" class="tabular"
@ -45,88 +45,92 @@ cellspacing="0" cellpadding="0"
id="TBL-2-1"><col id="TBL-2-1"><col
id="TBL-2-2"></colgroup><tr id="TBL-2-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:wrap; text-align:left;" id="TBL-2-1-1" style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:wrap; text-align:left;" id="TBL-2-1-1"
class="td11"><!--l. 60--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 57--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">icontxt</span></span></span> </td> <td style="white-space:wrap; text-align:left;" id="TBL-2-1-2" class="cmtt-12">icontxt</span></span></span> </td> <td style="white-space:wrap; text-align:left;" id="TBL-2-1-2"
class="td11"><!--l. 60--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 57--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:wrap; text-align:left;" id="TBL-2-2-1" style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:wrap; text-align:left;" id="TBL-2-2-1"
class="td11"><!--l. 61--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-2-2" class="td11"><!--l. 58--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-2-2"
class="td11"><!--l. 61--><p class="noindent" ><span class="td11"><!--l. 58--><p class="noindent" ><span
class="cmr-12">The communication context.</span> </td></tr><tr class="cmbx-12">The communication context.</span> </td></tr><tr
style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:wrap; text-align:left;" id="TBL-2-3-1" style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:wrap; text-align:left;" id="TBL-2-3-1"
class="td11"><!--l. 62--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 59--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">ptype</span></span></span> </td> <td style="white-space:wrap; text-align:left;" id="TBL-2-3-2" class="cmtt-12">ptype</span></span></span> </td> <td style="white-space:wrap; text-align:left;" id="TBL-2-3-2"
class="td11"><!--l. 62--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 59--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">character(len=*),</span><span class="cmtt-12">character(len=*),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span></td> class="cmbx-12">.</span></td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:wrap; text-align:left;" id="TBL-2-4-1" style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:wrap; text-align:left;" id="TBL-2-4-1"
class="td11"><!--l. 63--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-4-2" class="td11"><!--l. 60--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-4-2"
class="td11"><!--l. 63--><p class="noindent" ><span class="td11"><!--l. 60--><p class="noindent" ><span
class="cmr-12">The type of preconditioner. Its values are specified in Table</span><span class="cmbx-12">The type of preconditioner. Its values are specified in</span>
class="cmr-12">&#x00A0;</span><a <span
class="cmbx-12">Table</span><span
class="cmbx-12">&#x00A0;</span><a
href="userhtmlse5.html#x17-160151"><span href="userhtmlse5.html#x17-160151"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span class="cmbx-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:wrap; text-align:left;" id="TBL-2-5-1" style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:wrap; text-align:left;" id="TBL-2-5-1"
class="td11"><!--l. 65--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-5-2" class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-5-2"
class="td11"><!--l. 65--><p class="noindent" ><span class="td11"><!--l. 62--><p class="noindent" ><span
class="cmr-12">Note that the strings are case insensitive.</span> </td> class="cmbx-12">Note that the strings are case insensitive.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:wrap; text-align:left;" id="TBL-2-6-1" style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:wrap; text-align:left;" id="TBL-2-6-1"
class="td11"><!--l. 66--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 63--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-2-6-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-2-6-2"
class="td11"><!--l. 66--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 63--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:wrap; text-align:left;" id="TBL-2-7-1" style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:wrap; text-align:left;" id="TBL-2-7-1"
class="td11"><!--l. 67--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-7-2" class="td11"><!--l. 64--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-7-2"
class="td11"><!--l. 67--><p class="noindent" ><span class="td11"><!--l. 64--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:wrap; text-align:left;" id="TBL-2-8-1" style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:wrap; text-align:left;" id="TBL-2-8-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 77--><p class="indent" > <span <!--l. 69--><p class="indent" > <span
class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span> class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<span <span
class="cmr-12">invoked as follows:</span> class="cmbx-12">can be also invoked as follows:</span>
<div class="center" <div class="center"
> >
<!--l. 80--><p class="noindent" > <!--l. 72--><p class="noindent" >
<!--l. 81--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 73--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;mld_precinit(p,ptype,info)</span></span></span></div> class="cmtt-12">&#x00A0;amg_precinit(p,ptype,info)</span></span></span></div>
<!--l. 87--><div class="crosslinks"><p class="noindent"><span <!--l. 79--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu11.html" ><span href="userhtmlsu11.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu10.html" ><span href="userhtmlsu10.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu10.html" ><span href="userhtmlse6.html#userhtmlsu10.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 87--><p class="indent" > <a <!--l. 79--><p class="indent" > <a
id="tailuserhtmlsu10.html"></a> id="tailuserhtmlsu10.html"></a>
</body></html> </body></html>

File diff suppressed because it is too large Load Diff

@ -10,48 +10,48 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 662--><div class="crosslinks"><p class="noindent"><span <!--l. 567--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu13.html" ><span href="userhtmlsu13.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu11.html" ><span href="userhtmlsu11.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu11.html#tailuserhtmlsu11.html" ><span href="userhtmlsu11.html#tailuserhtmlsu11.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu12.html"><span href="#tailuserhtmlsu12.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu12.html" ><span href="userhtmlse6.html#userhtmlsu12.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">6.3 </span></span> <a class="cmbx-12">6.3 </span></span> <a
id="x22-210006.3"></a><span id="x22-210006.3"></a><span
class="cmr-12">Method hierarchy</span><span class="cmbx-12">Method hierarchy</span><span
class="cmr-12">_build</span></h4> class="cmbx-12">_build</span></h4>
<div class="center" <div class="center"
> >
<!--l. 664--><p class="noindent" > <!--l. 569--><p class="noindent" >
<!--l. 665--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 570--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%hierarchy_build(a,desc_a,info)</span></span></span><br /> class="cmtt-12">&#x00A0;p%hierarchy_build(a,desc_a,info)</span></span></span><br />
</div> </div>
<!--l. 668--><p class="noindent" ><span <!--l. 573--><p class="noindent" ><span
class="cmr-12">This method builds the hierarchy of matrices and restriction/prolongation operators for</span> class="cmbx-12">This method builds the hierarchy of matrices and restriction/prolongation</span>
<span <span
class="cmr-12">the multilevel preconditioner </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">operators for the multilevel preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span><span class="cmtt-12">p</span></span></span><span
class="cmr-12">, according to the requirements made by the user</span> class="cmbx-12">, according to the requirements</span>
<span <span
class="cmr-12">through the methods </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">made by the user through the methods </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">init</span></span></span> <span class="cmtt-12">init</span></span></span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span><span class="cmtt-12">set</span></span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<!--l. 673--><p class="noindent" ><span <!--l. 578--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-11" class="tabular" <div class="tabular"> <table id="TBL-11" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -59,71 +59,75 @@ cellspacing="0" cellpadding="0"
id="TBL-11-1"><col id="TBL-11-1"><col
id="TBL-11-2"></colgroup><tr id="TBL-11-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:wrap; text-align:left;" id="TBL-11-1-1" style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:wrap; text-align:left;" id="TBL-11-1-1"
class="td11"><!--l. 676--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 581--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-11-1-2" class="cmtt-12">a</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-11-1-2"
class="td11"><!--l. 676--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 581--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_</span></span></span><span class="cmtt-12">type(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">spmat_type),</span><span class="cmtt-12">spmat_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:wrap; text-align:left;" id="TBL-11-2-1" style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:wrap; text-align:left;" id="TBL-11-2-1"
class="td11"><!--l. 677--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-2-2" class="td11"><!--l. 582--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-2-2"
class="td11"><!--l. 677--><p class="noindent" ><span class="td11"><!--l. 582--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span> class="cmbx-12">The sparse matrix structure containing the local part</span>
<span <span
class="cmr-12">to be preconditioned. Note that </span><span class="cmbx-12">of the matrix to be preconditioned. Note that </span><span
class="cmti-12">x </span><span class="cmbxti-10x-x-120">x </span><span
class="cmr-12">must be chosen according to</span> class="cmbx-12">must</span>
<span <span
class="cmr-12">the real/complex, single/double precision version of MLD2P4 under</span> class="cmbx-12">be chosen according to the real/complex, single/double</span>
<span <span
class="cmr-12">use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span class="cmbx-12">precision version of MLD2P4 under use. See the PSBLAS</span>
class="cmr-12">[</span><a <span
class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:wrap; text-align:left;" id="TBL-11-3-1" style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:wrap; text-align:left;" id="TBL-11-3-1"
class="td11"><!--l. 682--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 587--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:wrap; text-align:left;" id="TBL-11-3-2" class="cmtt-12">desc_a</span></span></span></td><td style="white-space:wrap; text-align:left;" id="TBL-11-3-2"
class="td11"><!--l. 682--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 587--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:wrap; text-align:left;" id="TBL-11-4-1" style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:wrap; text-align:left;" id="TBL-11-4-1"
class="td11"><!--l. 683--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-4-2" class="td11"><!--l. 588--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-4-2"
class="td11"><!--l. 683--><p class="noindent" ><span class="td11"><!--l. 588--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span><span class="cmtt-12">a</span></span></span><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span> class="cmbx-12">. See the PSBLAS</span>
<span <span
class="cmr-12">for details </span><span class="cite"><span class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:wrap; text-align:left;" id="TBL-11-5-1" style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:wrap; text-align:left;" id="TBL-11-5-1"
class="td11"><!--l. 688--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 591--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-11-5-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-11-5-2"
class="td11"><!--l. 688--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 591--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:wrap; text-align:left;" id="TBL-11-6-1" style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:wrap; text-align:left;" id="TBL-11-6-1"
class="td11"><!--l. 689--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-6-2" class="td11"><!--l. 592--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-6-2"
class="td11"><!--l. 689--><p class="noindent" ><span class="td11"><!--l. 592--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:wrap; text-align:left;" id="TBL-11-7-1" style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:wrap; text-align:left;" id="TBL-11-7-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
@ -133,23 +137,23 @@ class="td11"> </td> </tr></table></div>
<!--l. 695--><div class="crosslinks"><p class="noindent"><span <!--l. 598--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu13.html" ><span href="userhtmlsu13.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu11.html" ><span href="userhtmlsu11.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu11.html#tailuserhtmlsu11.html" ><span href="userhtmlsu11.html#tailuserhtmlsu11.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu12.html" ><span href="userhtmlsu12.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu12.html" ><span href="userhtmlse6.html#userhtmlsu12.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 695--><p class="indent" > <a <!--l. 598--><p class="indent" > <a
id="tailuserhtmlsu12.html"></a> id="tailuserhtmlsu12.html"></a>
</body></html> </body></html>

@ -10,54 +10,58 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 695--><div class="crosslinks"><p class="noindent"><span <!--l. 598--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu12.html" ><span href="userhtmlsu12.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu13.html"><span href="#tailuserhtmlsu13.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu13.html" ><span href="userhtmlse6.html#userhtmlsu13.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">6.4 </span></span> <a class="cmbx-12">6.4 </span></span> <a
id="x23-220006.4"></a><span id="x23-220006.4"></a><span
class="cmr-12">Method smoothers</span><span class="cmbx-12">Method smoothers</span><span
class="cmr-12">_build</span></h4> class="cmbx-12">_build</span></h4>
<div class="center" <div class="center"
> >
<!--l. 698--><p class="noindent" > <!--l. 601--><p class="noindent" >
<!--l. 699--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 602--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])</span></span></span><br /> class="cmtt-12">&#x00A0;p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])</span></span></span><br />
</div> </div>
<!--l. 702--><p class="noindent" ><span <!--l. 605--><p class="noindent" ><span
class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span> class="cmbx-12">This method builds the smoothers and the coarsest-level solvers for the</span>
<span <span
class="cmr-12">preconditioner </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">multilevel preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span><span class="cmtt-12">p</span></span></span><span
class="cmr-12">, according to the requirements made by the user through the methods</span> class="cmbx-12">, according to the requirements made</span>
<span class="obeylines-h"><span class="verb"><span <span
class="cmbx-12">by the user through the methods </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">init</span></span></span> <span class="cmtt-12">init</span></span></span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span><span class="cmtt-12">set</span></span></span><span
class="cmr-12">, and based on the aggregation hierarchy produced by a previous call to</span> class="cmbx-12">, and based on the</span>
<span class="obeylines-h"><span class="verb"><span <span
class="cmbx-12">aggregation hierarchy produced by a previous call to </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">hierarchy_build</span></span></span> <span class="cmtt-12">hierarchy_build</span></span></span> <span
class="cmr-12">(see Section</span><span class="cmbx-12">(see</span>
class="cmr-12">&#x00A0;</span><a <span
class="cmbx-12">Section</span><span
class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu12.html#x22-210006.3"><span href="userhtmlsu12.html#x22-210006.3"><span
class="cmr-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a><span class="cmbx-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
class="cmr-12">).</span> class="cmbx-12">).</span>
<!--l. 709--><p class="noindent" ><span <!--l. 612--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-12" class="tabular" <div class="tabular"> <table id="TBL-12" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -65,130 +69,135 @@ cellspacing="0" cellpadding="0"
id="TBL-12-1"><col id="TBL-12-1"><col
id="TBL-12-2"></colgroup><tr id="TBL-12-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:wrap; text-align:left;" id="TBL-12-1-1" style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:wrap; text-align:left;" id="TBL-12-1-1"
class="td11"><!--l. 712--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 615--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-1-2" class="cmtt-12">a</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-1-2"
class="td11"><!--l. 712--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 615--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_</span></span></span><span class="cmtt-12">type(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">spmat_type),</span><span class="cmtt-12">spmat_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:wrap; text-align:left;" id="TBL-12-2-1" style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:wrap; text-align:left;" id="TBL-12-2-1"
class="td11"><!--l. 713--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-2-2" class="td11"><!--l. 616--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-2-2"
class="td11"><!--l. 713--><p class="noindent" ><span class="td11"><!--l. 616--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span> class="cmbx-12">The sparse matrix structure containing the local part</span>
<span
class="cmbx-12">of the matrix to be preconditioned. Note that </span><span
class="cmbxti-10x-x-120">x </span><span
class="cmbx-12">must</span>
<span <span
class="cmr-12">to be preconditioned. Note that </span><span class="cmbx-12">be chosen according to the real/complex, single/double</span>
class="cmti-12">x </span><span
class="cmr-12">must be chosen according to</span>
<span <span
class="cmr-12">the real/complex, single/double precision version of MLD2P4 under</span> class="cmbx-12">precision version of MLD2P4 under use. See the PSBLAS</span>
<span <span
class="cmr-12">use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:wrap; text-align:left;" id="TBL-12-3-1" style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:wrap; text-align:left;" id="TBL-12-3-1"
class="td11"><!--l. 717--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 620--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:wrap; text-align:left;" id="TBL-12-3-2" class="cmtt-12">desc_a</span></span></span></td><td style="white-space:wrap; text-align:left;" id="TBL-12-3-2"
class="td11"><!--l. 717--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 620--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:wrap; text-align:left;" id="TBL-12-4-1" style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:wrap; text-align:left;" id="TBL-12-4-1"
class="td11"><!--l. 718--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-4-2" class="td11"><!--l. 621--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-4-2"
class="td11"><!--l. 718--><p class="noindent" ><span class="td11"><!--l. 621--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span><span class="cmtt-12">a</span></span></span><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span> class="cmbx-12">. See the PSBLAS</span>
<span <span
class="cmr-12">for details </span><span class="cite"><span class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:wrap; text-align:left;" id="TBL-12-5-1" style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:wrap; text-align:left;" id="TBL-12-5-1"
class="td11"><!--l. 723--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 623--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-5-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-5-2"
class="td11"><!--l. 723--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 623--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:wrap; text-align:left;" id="TBL-12-6-1" style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:wrap; text-align:left;" id="TBL-12-6-1"
class="td11"><!--l. 724--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-6-2" class="td11"><!--l. 624--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-6-2"
class="td11"><!--l. 724--><p class="noindent" ><span class="td11"><!--l. 624--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:wrap; text-align:left;" id="TBL-12-7-1" style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:wrap; text-align:left;" id="TBL-12-7-1"
class="td11"><!--l. 725--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 625--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-7-2" class="cmtt-12">amold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-7-2"
class="td11"><!--l. 725--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 625--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_sparse_mat),</span><span class="cmtt-12">_base_sparse_mat),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:wrap; text-align:left;" id="TBL-12-8-1" style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:wrap; text-align:left;" id="TBL-12-8-1"
class="td11"><!--l. 726--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-8-2" class="td11"><!--l. 626--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-8-2"
class="td11"><!--l. 726--><p class="noindent" ><span class="td11"><!--l. 626--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span> class="cmbx-12">The desired dynamic type for internal matrix components;</span>
<span <span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span> class="cmbx-12">this allows e.g. running on GPUs; it needs not be the same</span>
<span <span
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span class="cmbx-12">on all processes. See the PSBLAS User&#8217;s Guide for details</span>
class="cmr-12">[</span><a <span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:wrap; text-align:left;" id="TBL-12-9-1" style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:wrap; text-align:left;" id="TBL-12-9-1"
class="td11"><!--l. 730--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 630--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">vmold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-9-2" class="cmtt-12">vmold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-9-2"
class="td11"><!--l. 730--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 630--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_vect_type),</span><span class="cmtt-12">_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:wrap; text-align:left;" id="TBL-12-10-1" style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:wrap; text-align:left;" id="TBL-12-10-1"
class="td11"><!--l. 731--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-10-2" class="td11"><!--l. 631--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-10-2"
class="td11"><!--l. 731--><p class="noindent" ><span class="td11"><!--l. 631--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span> class="cmbx-12">The desired dynamic type for internal vector components;</span>
<span <span
class="cmr-12">allows e.g. running on GPUs.</span> </td> class="cmbx-12">this allows e.g. running on GPUs.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:wrap; text-align:left;" id="TBL-12-11-1" style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:wrap; text-align:left;" id="TBL-12-11-1"
class="td11"><!--l. 733--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 633--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">imold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-11-2" class="cmtt-12">imold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-11-2"
class="td11"><!--l. 733--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 633--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_i_base_vect_type),</span><span class="cmtt-12">class(psb_i_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:wrap; text-align:left;" id="TBL-12-12-1" style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:wrap; text-align:left;" id="TBL-12-12-1"
class="td11"><!--l. 734--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-12-2" class="td11"><!--l. 634--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-12-2"
class="td11"><!--l. 734--><p class="noindent" ><span class="td11"><!--l. 634--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal integer vector components;</span> class="cmbx-12">The desired dynamic type for internal integer vector</span>
<span <span
class="cmr-12">this allows e.g. running on GPUs.</span> </td> class="cmbx-12">components; this allows e.g. running on GPUs.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:wrap; text-align:left;" id="TBL-12-13-1" style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:wrap; text-align:left;" id="TBL-12-13-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
@ -198,23 +207,26 @@ class="td11"> </td> </tr></table></div>
<!--l. 740--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
<!--l. 640--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu12.html" ><span href="userhtmlsu12.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu13.html" ><span href="userhtmlsu13.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu13.html" ><span href="userhtmlse6.html#userhtmlsu13.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 740--><p class="indent" > <a <!--l. 640--><p class="indent" > <a
id="tailuserhtmlsu13.html"></a> id="tailuserhtmlsu13.html"></a>
</body></html> </body></html>

@ -10,236 +10,243 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 740--><div class="crosslinks"><p class="noindent"><span <!--l. 640--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu13.html" ><span href="userhtmlsu13.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu14.html"><span href="#tailuserhtmlsu14.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu14.html" ><span href="userhtmlse6.html#userhtmlsu14.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">6.5 </span></span> <a class="cmbx-12">6.5 </span></span> <a
id="x24-230006.5"></a><span id="x24-230006.5"></a><span
class="cmr-12">Method build</span></h4> class="cmbx-12">Method build</span></h4>
<div class="center" <div class="center"
> >
<!--l. 742--><p class="noindent" > <!--l. 642--><p class="noindent" >
<!--l. 743--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 643--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%build(a,desc_a,info[,amold,vmold,imold])</span></span></span><br /> class="cmtt-12">&#x00A0;p%build(a,desc_a,info[,amold,vmold,imold])</span></span></span><br />
</div> </div>
<!--l. 746--><p class="noindent" ><span <!--l. 646--><p class="noindent" ><span
class="cmr-12">This method builds the preconditioner </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">This method builds the preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span> <span class="cmtt-12">p</span></span></span> <span
class="cmr-12">according to the requirements made by the</span> class="cmbx-12">according to the requirements</span>
<span <span
class="cmr-12">user through the methods </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">made by the user through the methods </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">init</span></span></span> <span class="cmtt-12">init</span></span></span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span> <span class="cmtt-12">set</span></span></span> <span
class="cmr-12">(see Sections</span><span class="cmbx-12">(see Sections</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu12.html#x22-210006.3"><span href="userhtmlsu12.html#x22-210006.3"><span
class="cmr-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a> <span class="cmbx-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a>
class="cmr-12">and</span><span <span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">and</span><span
class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu13.html#x23-220006.4"><span href="userhtmlsu13.html#x23-220006.4"><span
class="cmr-12">6.4</span><!--tex4ht:ref: sec:smooth_bld --></a> <span class="cmbx-12">6.4</span><!--tex4ht:ref: sec:smooth_bld --></a> <span
class="cmr-12">for multilevel</span> class="cmbx-12">for multilevel preconditioners). It is mostly provided for backward</span>
<span <span
class="cmr-12">preconditioners). It is mostly provided for backward compatibility; indeed, it is</span> class="cmbx-12">compatibility; indeed, it is internally implemented by invoking the</span>
<span <span
class="cmr-12">internally implemented by invoking the two previous methods </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">two previous methods </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">hierarchy_build</span></span></span> <span class="cmtt-12">hierarchy_build</span></span></span> <span
class="cmr-12">and</span> class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">smoothers_build</span></span></span><span class="cmtt-12">smoothers_build</span></span></span><span
class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span> class="cmbx-12">, whose</span>
<span
class="cmbx-12">nomenclature would however be somewhat unnatural when dealing with</span>
<span <span
class="cmr-12">dealing with simple one-level preconditioners.</span> class="cmbx-12">simple one-level preconditioners.</span>
<!--l. 756--><p class="noindent" ><span <!--l. 656--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-13" class="tabular" <div class="tabular"> <table id="TBL-13" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
><colgroup id="TBL-13-1g"><col ><colgroup id="TBL-13-1g"><col
id="TBL-13-1"><col id="TBL-13-1"><col
id="TBL-13-2"></colgroup><tr id="TBL-13-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:wrap; text-align:left;" id="TBL-13-1-1" style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:wrap; text-align:left;" id="TBL-13-1-1"
class="td11"><!--l. 759--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 659--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-1-2" class="cmtt-12">a</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-1-2"
class="td11"><!--l. 759--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 659--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_</span></span></span><span class="cmtt-12">type(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">spmat_type),</span><span class="cmtt-12">spmat_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:wrap; text-align:left;" id="TBL-13-2-1" style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:wrap; text-align:left;" id="TBL-13-2-1"
class="td11"><!--l. 760--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-2-2" class="td11"><!--l. 660--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-2-2"
class="td11"><!--l. 760--><p class="noindent" ><span class="td11"><!--l. 660--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span> class="cmbx-12">The sparse matrix structure containing the local part</span>
<span <span
class="cmr-12">to be preconditioned. Note that </span><span class="cmbx-12">of the matrix to be preconditioned. Note that </span><span
class="cmti-12">x </span><span class="cmbxti-10x-x-120">x </span><span
class="cmr-12">must be chosen according to</span> class="cmbx-12">must</span>
<span <span
class="cmr-12">the real/complex, single/double precision version of MLD2P4 under</span> class="cmbx-12">be chosen according to the real/complex, single/double</span>
<span <span
class="cmr-12">use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span class="cmbx-12">precision version of MLD2P4 under use. See the PSBLAS</span>
class="cmr-12">[</span><a <span
class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:wrap; text-align:left;" id="TBL-13-3-1" style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:wrap; text-align:left;" id="TBL-13-3-1"
class="td11"><!--l. 764--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 664--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:wrap; text-align:left;" id="TBL-13-3-2" class="cmtt-12">desc_a</span></span></span></td><td style="white-space:wrap; text-align:left;" id="TBL-13-3-2"
class="td11"><!--l. 764--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 664--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:wrap; text-align:left;" id="TBL-13-4-1" style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:wrap; text-align:left;" id="TBL-13-4-1"
class="td11"><!--l. 765--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-4-2" class="td11"><!--l. 665--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-4-2"
class="td11"><!--l. 765--><p class="noindent" ><span class="td11"><!--l. 665--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span><span class="cmtt-12">a</span></span></span><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span> class="cmbx-12">. See the PSBLAS</span>
<span <span
class="cmr-12">for details </span><span class="cite"><span class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:wrap; text-align:left;" id="TBL-13-5-1" style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:wrap; text-align:left;" id="TBL-13-5-1"
class="td11"><!--l. 770--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 667--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-5-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-5-2"
class="td11"><!--l. 770--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 667--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:wrap; text-align:left;" id="TBL-13-6-1" style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:wrap; text-align:left;" id="TBL-13-6-1"
class="td11"><!--l. 771--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-6-2" class="td11"><!--l. 668--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-6-2"
class="td11"><!--l. 771--><p class="noindent" ><span class="td11"><!--l. 668--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:wrap; text-align:left;" id="TBL-13-7-1" style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:wrap; text-align:left;" id="TBL-13-7-1"
class="td11"><!--l. 772--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 669--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-7-2" class="cmtt-12">amold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-7-2"
class="td11"><!--l. 772--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 669--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_sparse_mat),</span><span class="cmtt-12">_base_sparse_mat),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:wrap; text-align:left;" id="TBL-13-8-1" style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:wrap; text-align:left;" id="TBL-13-8-1"
class="td11"><!--l. 773--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-8-2" class="td11"><!--l. 670--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-8-2"
class="td11"><!--l. 773--><p class="noindent" ><span class="td11"><!--l. 670--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span> class="cmbx-12">The desired dynamic type for internal matrix components;</span>
<span <span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span> class="cmbx-12">this allows e.g. running on GPUs; it needs not be the same</span>
<span <span
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span class="cmbx-12">on all processes. See the PSBLAS User&#8217;s Guide for details</span>
class="cmr-12">[</span><a <span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:wrap; text-align:left;" id="TBL-13-9-1" style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:wrap; text-align:left;" id="TBL-13-9-1"
class="td11"><!--l. 777--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 674--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">vmold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-9-2" class="cmtt-12">vmold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-9-2"
class="td11"><!--l. 777--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 674--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_vect_type),</span><span class="cmtt-12">_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:wrap; text-align:left;" id="TBL-13-10-1" style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:wrap; text-align:left;" id="TBL-13-10-1"
class="td11"><!--l. 778--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-10-2" class="td11"><!--l. 675--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-10-2"
class="td11"><!--l. 778--><p class="noindent" ><span class="td11"><!--l. 675--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span> class="cmbx-12">The desired dynamic type for internal vector components;</span>
<span <span
class="cmr-12">allows e.g. running on GPUs.</span> </td> class="cmbx-12">this allows e.g. running on GPUs.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:wrap; text-align:left;" id="TBL-13-11-1" style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:wrap; text-align:left;" id="TBL-13-11-1"
class="td11"><!--l. 780--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 677--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">imold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-11-2" class="cmtt-12">imold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-11-2"
class="td11"><!--l. 780--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 677--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_i_base_vect_type),</span><span class="cmtt-12">class(psb_i_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:wrap; text-align:left;" id="TBL-13-12-1" style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:wrap; text-align:left;" id="TBL-13-12-1"
class="td11"><!--l. 781--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-12-2" class="td11"><!--l. 678--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-12-2"
class="td11"><!--l. 781--><p class="noindent" ><span class="td11"><!--l. 678--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal integer vector components;</span> class="cmbx-12">The desired dynamic type for internal integer vector</span>
<span <span
class="cmr-12">this allows e.g. running on GPUs.</span> </td> class="cmbx-12">components; this allows e.g. running on GPUs.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:wrap; text-align:left;" id="TBL-13-13-1" style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:wrap; text-align:left;" id="TBL-13-13-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 683--><p class="indent" > <span
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<!--l. 786--><p class="indent" > <span
class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span>
<span <span
class="cmr-12">invoked as follows:</span> class="cmbx-12">can be also invoked as follows:</span>
<div class="center" <div class="center"
> >
<!--l. 789--><p class="noindent" > <!--l. 686--><p class="noindent" >
<!--l. 790--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 687--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;mld_precbld(p,what,val,info[,amold,vmold,imold])</span></span></span></div> class="cmtt-12">&#x00A0;amg_precbld(p,what,val,info[,amold,vmold,imold])</span></span></span></div>
<!--l. 793--><p class="noindent" ><span <!--l. 690--><p class="noindent" ><span
class="cmr-12">The method can be used to build multilevel preconditioners too.</span> class="cmbx-12">The method can be used to build multilevel preconditioners too.</span>
<!--l. 798--><div class="crosslinks"><p class="noindent"><span <!--l. 695--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu13.html" ><span href="userhtmlsu13.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu14.html" ><span href="userhtmlse6.html#userhtmlsu14.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 798--><p class="indent" > <a <!--l. 695--><p class="indent" > <a
id="tailuserhtmlsu14.html"></a> id="tailuserhtmlsu14.html"></a>
</body></html> </body></html>

@ -10,37 +10,37 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 798--><div class="crosslinks"><p class="noindent"><span <!--l. 695--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu16.html" ><span href="userhtmlsu16.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu15.html"><span href="#tailuserhtmlsu15.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu15.html" ><span href="userhtmlse6.html#userhtmlsu15.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">6.6 </span></span> <a class="cmbx-12">6.6 </span></span> <a
id="x25-240006.6"></a><span id="x25-240006.6"></a><span
class="cmr-12">Method apply</span></h4> class="cmbx-12">Method apply</span></h4>
<div class="center" <div class="center"
> >
<!--l. 800--><p class="noindent" > <!--l. 697--><p class="noindent" >
<!--l. 801--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 698--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%apply(x,y,desc_a,info</span><span class="cmtt-12">&#x00A0;p%apply(x,y,desc_a,info</span><span
class="cmtt-12">&#x00A0;[,trans,work])</span></span></span><br /> class="cmtt-12">&#x00A0;[,trans,work])</span></span></span><br />
</div> </div>
<!--l. 804--><p class="noindent" ><span <!--l. 701--><p class="noindent" ><span
class="cmr-12">This method computes </span><span class="cmbx-12">This method computes </span><span
class="cmmi-12">y </span><span class="cmmi-12">y </span><span
class="cmr-12">= </span><span class="cmr-12">= </span><span
class="cmmi-12">op</span><span class="cmmi-12">op</span><span
@ -50,137 +50,149 @@ class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmr-12">) </span><span class="cmr-12">) </span><span
class="cmmi-12">x</span><span class="cmmi-12">x</span><span
class="cmr-12">, where </span><span class="cmbx-12">, where </span><span
class="cmmi-12">B </span><span class="cmmi-12">B </span><span
class="cmr-12">is a previously built preconditioner,</span> class="cmbx-12">is a previously built</span>
<span <span
class="cmr-12">stored into </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">preconditioner, stored into </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span><span class="cmtt-12">p</span></span></span><span
class="cmr-12">, and </span><span class="cmbx-12">, and </span><span
class="cmmi-12">op </span><span class="cmmi-12">op </span><span
class="cmr-12">denotes the preconditioner itself or its transpose, according to the</span> class="cmbx-12">denotes the preconditioner itself or its</span>
<span <span
class="cmr-12">value of </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">transpose, according to the value of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span><span class="cmtt-12">trans</span></span></span><span
class="cmr-12">. Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,</span> class="cmbx-12">. Note that, when MLD2P4 is</span>
<span class="obeylines-h"><span class="verb"><span <span
class="cmbx-12">used with a Krylov solver from PSBLAS, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p%apply</span></span></span> <span class="cmtt-12">p%apply</span></span></span> <span
class="cmr-12">is called within the PSBLAS method </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">is called within the</span>
<span
class="cmbx-12">PSBLAS method </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_krylov</span></span></span> <span class="cmtt-12">psb_krylov</span></span></span> <span
class="cmr-12">and hence it is completely</span> class="cmbx-12">and hence it is completely transparent to the</span>
<span <span
class="cmr-12">transparent to the user.</span> class="cmbx-12">user.</span>
<!--l. 813--><p class="noindent" ><span <!--l. 710--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-14" class="tabular" <div class="tabular"> <table id="TBL-14" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
><colgroup id="TBL-14-1g"><col ><colgroup id="TBL-14-1g"><col
id="TBL-14-1"><col id="TBL-14-1"><col
id="TBL-14-2"></colgroup><tr id="TBL-14-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:wrap; text-align:left;" id="TBL-14-1-1" style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:wrap; text-align:left;" id="TBL-14-1-1"
class="td11"><!--l. 820--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 713--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">x</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-1-2" class="cmtt-12">x</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-1-2"
class="td11"><!--l. 820--><p class="noindent" ><span class="td11"><!--l. 713--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><span class="cmtt-12">(</span></span></span><span
class="cmti-12">kind</span><span class="cmbxti-10x-x-120">kind</span><span
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">_parameter</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">),</span><span class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span class="cmtt-12">&#x00A0;dimension(:),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:wrap; text-align:left;" id="TBL-14-2-1" style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:wrap; text-align:left;" id="TBL-14-2-1"
class="td11"><!--l. 821--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-2-2" class="td11"><!--l. 714--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-2-2"
class="td11"><!--l. 821--><p class="noindent" ><span class="td11"><!--l. 714--><p class="noindent" ><span
class="cmr-12">The local part of the vector </span><span class="cmbx-12">The local part of the vector </span><span
class="cmmi-12">x</span><span class="cmmi-12">x</span><span
class="cmr-12">. Note that </span><span class="cmbx-12">. Note that </span><span
class="cmti-12">type </span><span class="cmbxti-10x-x-120">type</span>
class="cmr-12">and </span><span <span
class="cmti-12">kind</span><span class="cmbx-12">and </span><span
class="cmti-12">_parameter</span> class="cmbxti-10x-x-120">kind</span><span
class="cmbxti-10x-x-120">_parameter </span><span
class="cmbx-12">must be chosen according to the</span>
<span <span
class="cmr-12">must be chosen according to the real/complex, single/double</span> class="cmbx-12">real/complex, single/double precision version of MLD2P4</span>
<span <span
class="cmr-12">precision version of MLD2P4 under use.</span> </td> class="cmbx-12">under use.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:wrap; text-align:left;" id="TBL-14-3-1" style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:wrap; text-align:left;" id="TBL-14-3-1"
class="td11"><!--l. 824--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 717--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">y</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-3-2" class="cmtt-12">y</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-3-2"
class="td11"><!--l. 824--><p class="noindent" ><span class="td11"><!--l. 717--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><span class="cmtt-12">(</span></span></span><span
class="cmti-12">kind</span><span class="cmbxti-10x-x-120">kind</span><span
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">_parameter</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">),</span><span class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span class="cmtt-12">&#x00A0;dimension(:),</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:wrap; text-align:left;" id="TBL-14-4-1" style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:wrap; text-align:left;" id="TBL-14-4-1"
class="td11"><!--l. 825--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-4-2" class="td11"><!--l. 718--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-4-2"
class="td11"><!--l. 825--><p class="noindent" ><span class="td11"><!--l. 718--><p class="noindent" ><span
class="cmr-12">The local part of the vector </span><span class="cmbx-12">The local part of the vector </span><span
class="cmmi-12">y</span><span class="cmmi-12">y</span><span
class="cmr-12">. Note that </span><span class="cmbx-12">. Note that </span><span
class="cmti-12">type </span><span class="cmbxti-10x-x-120">type</span>
class="cmr-12">and </span><span <span
class="cmti-12">kind</span><span class="cmbx-12">and </span><span
class="cmti-12">_parameter</span> class="cmbxti-10x-x-120">kind</span><span
class="cmbxti-10x-x-120">_parameter </span><span
class="cmbx-12">must be chosen according to the</span>
<span <span
class="cmr-12">must be chosen according to the real/complex, single/double</span> class="cmbx-12">real/complex, single/double precision version of MLD2P4</span>
<span <span
class="cmr-12">precision version of MLD2P4 under use.</span> </td> class="cmbx-12">under use.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:wrap; text-align:left;" id="TBL-14-5-1" style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:wrap; text-align:left;" id="TBL-14-5-1"
class="td11"><!--l. 828--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 721--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:wrap; text-align:left;" id="TBL-14-5-2" class="cmtt-12">desc_a</span></span></span></td><td style="white-space:wrap; text-align:left;" id="TBL-14-5-2"
class="td11"><!--l. 828--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 721--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:wrap; text-align:left;" id="TBL-14-6-1" style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:wrap; text-align:left;" id="TBL-14-6-1"
class="td11"><!--l. 829--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-6-2" class="td11"><!--l. 722--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-6-2"
class="td11"><!--l. 829--><p class="noindent" ><span class="td11"><!--l. 722--><p class="noindent" ><span
class="cmr-12">The communication descriptor associated to the matrix to be</span> class="cmbx-12">The communication descriptor associated to the matrix to</span>
<span <span
class="cmr-12">preconditioned.</span> </td> class="cmbx-12">be preconditioned.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:wrap; text-align:left;" id="TBL-14-7-1" style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:wrap; text-align:left;" id="TBL-14-7-1"
class="td11"><!--l. 831--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 724--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-7-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-7-2"
class="td11"><!--l. 831--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 724--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:wrap; text-align:left;" id="TBL-14-8-1" style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:wrap; text-align:left;" id="TBL-14-8-1"
class="td11"><!--l. 832--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-8-2" class="td11"><!--l. 725--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-8-2"
class="td11"><!--l. 832--><p class="noindent" ><span class="td11"><!--l. 725--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:wrap; text-align:left;" id="TBL-14-9-1" style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:wrap; text-align:left;" id="TBL-14-9-1"
class="td11"><!--l. 833--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 726--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-9-2" class="cmtt-12">trans</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-9-2"
class="td11"><!--l. 833--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 726--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">character(len=1),</span><span class="cmtt-12">character(len=1),</span><span
class="cmtt-12">&#x00A0;optional,</span><span class="cmtt-12">&#x00A0;optional,</span><span
class="cmtt-12">&#x00A0;intent(in).</span></span></span> </td> class="cmtt-12">&#x00A0;intent(in).</span></span></span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:wrap; text-align:left;" id="TBL-14-10-1" style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:wrap; text-align:left;" id="TBL-14-10-1"
class="td11"><!--l. 834--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-10-2" class="td11"><!--l. 727--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-10-2"
class="td11"><!--l. 834--><p class="noindent" ><span class="td11"><!--l. 727--><p class="noindent" ><span
class="cmr-12">If </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">If </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span> <span class="cmtt-12">trans</span></span></span> <span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#8217;N&#8217;,&#8217;n&#8217;</span></span></span> <span class="cmtt-12">&#8217;N&#8217;,&#8217;n&#8217;</span></span></span> <span
class="cmr-12">then </span><span class="cmbx-12">then </span><span
class="cmmi-12">op</span><span class="cmmi-12">op</span><span
class="cmr-12">(</span><span class="cmr-12">(</span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
@ -190,12 +202,12 @@ class="cmr-12">) = </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmr-12">; if </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">; if </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span> <span class="cmtt-12">trans</span></span></span> <span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#8217;T&#8217;,&#8217;t&#8217;</span></span></span> class="cmtt-12">&#8217;T&#8217;,&#8217;t&#8217;</span></span></span>
<span <span
class="cmr-12">then </span><span class="cmbx-12">then </span><span
class="cmmi-12">op</span><span class="cmmi-12">op</span><span
class="cmr-12">(</span><span class="cmr-12">(</span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
@ -205,16 +217,17 @@ class="cmr-12">) = </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmmi-8">T</span> </sup> <span class="cmmi-8">T</span> </sup> <span
class="cmr-12">(transpose of </span><span class="cmbx-12">(transpose of </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmr-12">); if </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">)</span><span
class="cmbx-12">; if </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span> <span class="cmtt-12">trans</span></span></span> <span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#8217;C&#8217;,&#8217;c&#8217;</span></span></span> <span class="cmtt-12">&#8217;C&#8217;,&#8217;c&#8217;</span></span></span>
class="cmr-12">then</span>
<span <span
class="cmbx-12">then </span><span
class="cmmi-12">op</span><span class="cmmi-12">op</span><span
class="cmr-12">(</span><span class="cmr-12">(</span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
@ -224,83 +237,85 @@ class="cmr-12">) = </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmmi-8">C</span></sup> <span class="cmmi-8">C</span></sup> <span
class="cmr-12">(conjugate transpose of </span><span class="cmbx-12">(conjugate transpose of </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmr-12">).</span> </td> class="cmr-12">)</span><span
class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:wrap; text-align:left;" id="TBL-14-11-1" style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:wrap; text-align:left;" id="TBL-14-11-1"
class="td11"><!--l. 838--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 731--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">work</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-11-2" class="cmtt-12">work</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-11-2"
class="td11"><!--l. 838--><p class="noindent" ><span class="td11"><!--l. 731--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><span class="cmtt-12">(</span></span></span><span
class="cmti-12">kind</span><span class="cmbxti-10x-x-120">kind</span><span
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">_parameter</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">),</span><span class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span class="cmtt-12">&#x00A0;dimension(:),</span><span
class="cmtt-12">&#x00A0;optional,</span><span class="cmtt-12">&#x00A0;optional,</span><span
class="cmtt-12">&#x00A0;target</span></span></span><span class="cmtt-12">&#x00A0;target</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:wrap; text-align:left;" id="TBL-14-12-1" style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:wrap; text-align:left;" id="TBL-14-12-1"
class="td11"><!--l. 839--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-12-2" class="td11"><!--l. 732--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-12-2"
class="td11"><!--l. 839--><p class="noindent" ><span class="td11"><!--l. 732--><p class="noindent" ><span
class="cmr-12">Workspace. Its size should be at least </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">Workspace. Its size should be at</span>
<span
class="cmbx-12">least </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">4</span><span class="cmtt-12">4</span><span
class="cmtt-12">&#x00A0;*</span><span class="cmtt-12">&#x00A0;*</span><span
class="cmtt-12">&#x00A0;psb_cd_get_local_</span></span></span> class="cmtt-12">&#x00A0;psb_cd_get_local_</span></span></span> <span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">cols(desc_a)</span></span></span> <span class="cmtt-12">cols(desc_a)</span></span></span> <span
class="cmr-12">(see the PSBLAS User&#8217;s Guide). Note that </span><span class="cmbx-12">(see the PSBLAS</span>
class="cmti-12">type</span> <span
class="cmbx-12">User&#8217;s Guide). Note that </span><span
class="cmbxti-10x-x-120">type </span><span
class="cmbx-12">and </span><span
class="cmbxti-10x-x-120">kind</span><span
class="cmbxti-10x-x-120">_parameter </span><span
class="cmbx-12">must</span>
<span <span
class="cmr-12">and </span><span class="cmbx-12">be chosen according to the real/complex, single/double</span>
class="cmti-12">kind</span><span
class="cmti-12">_parameter </span><span
class="cmr-12">must be chosen according to the real/complex,</span>
<span <span
class="cmr-12">single/double precision version of MLD2P4 under use.</span> </td> class="cmbx-12">precision version of MLD2P4 under use.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:wrap; text-align:left;" id="TBL-14-13-1" style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:wrap; text-align:left;" id="TBL-14-13-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 739--><p class="indent" > <span
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<!--l. 846--><p class="indent" > <span
class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span>
<span <span
class="cmr-12">invoked as follows:</span> class="cmbx-12">can be also invoked as follows:</span>
<div class="center" <div class="center"
> >
<!--l. 849--><p class="noindent" > <!--l. 742--><p class="noindent" >
<!--l. 850--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 743--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;mld_precaply(p,what,val,info)</span></span></span></div> class="cmtt-12">&#x00A0;amg_precaply(p,what,val,info)</span></span></span></div>
<!--l. 855--><div class="crosslinks"><p class="noindent"><span <!--l. 748--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu16.html" ><span href="userhtmlsu16.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu15.html" ><span href="userhtmlse6.html#userhtmlsu15.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 855--><p class="indent" > <a <!--l. 748--><p class="indent" > <a
id="tailuserhtmlsu15.html"></a> id="tailuserhtmlsu15.html"></a>
</body></html> </body></html>

@ -10,39 +10,39 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 855--><div class="crosslinks"><p class="noindent"><span <!--l. 748--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu17.html" ><span href="userhtmlsu17.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu16.html"><span href="#tailuserhtmlsu16.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu16.html" ><span href="userhtmlse6.html#userhtmlsu16.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">6.7 </span></span> <a class="cmbx-12">6.7 </span></span> <a
id="x26-250006.7"></a><span id="x26-250006.7"></a><span
class="cmr-12">Method free</span></h4> class="cmbx-12">Method free</span></h4>
<div class="center" <div class="center"
> >
<!--l. 857--><p class="noindent" > <!--l. 750--><p class="noindent" >
<!--l. 858--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%free(p,info)</span></span></span><br /> class="cmtt-12">&#x00A0;p%free(p,info)</span></span></span><br />
</div> </div>
<!--l. 861--><p class="noindent" ><span <!--l. 754--><p class="noindent" ><span
class="cmr-12">This method deallocates the preconditioner data structure </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">This method deallocates the preconditioner data structure </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span><span class="cmtt-12">p</span></span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<!--l. 864--><p class="noindent" ><span <!--l. 757--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-15" class="tabular" <div class="tabular"> <table id="TBL-15" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -50,59 +50,58 @@ cellspacing="0" cellpadding="0"
id="TBL-15-1"><col id="TBL-15-1"><col
id="TBL-15-2"></colgroup><tr id="TBL-15-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:wrap; text-align:left;" id="TBL-15-1-1" style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:wrap; text-align:left;" id="TBL-15-1-1"
class="td11"><!--l. 870--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 760--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-15-1-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-15-1-2"
class="td11"><!--l. 870--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 760--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:wrap; text-align:left;" id="TBL-15-2-1" style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:wrap; text-align:left;" id="TBL-15-2-1"
class="td11"><!--l. 871--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-15-2-2" class="td11"><!--l. 761--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-15-2-2"
class="td11"><!--l. 871--><p class="noindent" ><span class="td11"><!--l. 761--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a>
class="cmr-12">for</span>
<span <span
class="cmr-12">details.</span> </td> class="cmbx-12">for details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:wrap; text-align:left;" id="TBL-15-3-1" style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:wrap; text-align:left;" id="TBL-15-3-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 875--><p class="indent" > <span <!--l. 765--><p class="indent" > <span
class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span> class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<span <span
class="cmr-12">invoked as follows:</span> class="cmbx-12">can be also invoked as follows:</span>
<div class="center" <div class="center"
> >
<!--l. 878--><p class="noindent" > <!--l. 768--><p class="noindent" >
<!--l. 879--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 769--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;mld_precfree(p,info)</span></span></span></div> class="cmtt-12">&#x00A0;amg_precfree(p,info)</span></span></span></div>
<!--l. 885--><div class="crosslinks"><p class="noindent"><span <!--l. 775--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu17.html" ><span href="userhtmlsu17.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu16.html" ><span href="userhtmlsu16.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu16.html" ><span href="userhtmlse6.html#userhtmlsu16.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 885--><p class="indent" > <a <!--l. 775--><p class="indent" > <a
id="tailuserhtmlsu16.html"></a> id="tailuserhtmlsu16.html"></a>
</body></html> </body></html>

@ -10,50 +10,50 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 885--><div class="crosslinks"><p class="noindent"><span <!--l. 775--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu18.html" ><span href="userhtmlsu18.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu16.html" ><span href="userhtmlsu16.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu17.html"><span href="#tailuserhtmlsu17.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu17.html" ><span href="userhtmlse6.html#userhtmlsu17.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">6.8 </span></span> <a class="cmbx-12">6.8 </span></span> <a
id="x27-260006.8"></a><span id="x27-260006.8"></a><span
class="cmr-12">Method descr</span></h4> class="cmbx-12">Method descr</span></h4>
<div class="center" <div class="center"
> >
<!--l. 887--><p class="noindent" > <!--l. 777--><p class="noindent" >
<!--l. 888--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 778--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%descr(info,</span><span class="cmtt-12">&#x00A0;p%descr(info,</span><span
class="cmtt-12">&#x00A0;[iout])</span></span></span><br /> class="cmtt-12">&#x00A0;[iout])</span></span></span><br />
</div> </div>
<!--l. 891--><p class="noindent" ><span <!--l. 781--><p class="noindent" ><span
class="cmr-12">This method prints a description of the preconditioner </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">This method prints a description of the preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span> <span class="cmtt-12">p</span></span></span> <span
class="cmr-12">to the standard output or to a</span> class="cmbx-12">to the standard</span>
<span <span
class="cmr-12">file. It must be called after </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">output or to a file. It must be called after </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">hierachy_build</span></span></span> <span class="cmtt-12">hierachy_build</span></span></span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">smoothers_build</span></span></span><span class="cmtt-12">smoothers_build</span></span></span><span
class="cmr-12">, or </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">,</span>
class="cmtt-12">build</span></span></span><span
class="cmr-12">, have</span>
<span <span
class="cmr-12">been called.</span> class="cmbx-12">or </span><span class="obeylines-h"><span class="verb"><span
<!--l. 896--><p class="noindent" ><span class="cmtt-12">build</span></span></span><span
class="cmbx-12">, have been called.</span>
<!--l. 786--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-16" class="tabular" <div class="tabular"> <table id="TBL-16" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -61,71 +61,73 @@ cellspacing="0" cellpadding="0"
id="TBL-16-1"><col id="TBL-16-1"><col
id="TBL-16-2"></colgroup><tr id="TBL-16-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:wrap; text-align:left;" id="TBL-16-1-1" style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:wrap; text-align:left;" id="TBL-16-1-1"
class="td11"><!--l. 902--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 789--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-16-1-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-16-1-2"
class="td11"><!--l. 902--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 789--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:wrap; text-align:left;" id="TBL-16-2-1" style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:wrap; text-align:left;" id="TBL-16-2-1"
class="td11"><!--l. 903--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-2-2" class="td11"><!--l. 790--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-2-2"
class="td11"><!--l. 903--><p class="noindent" ><span class="td11"><!--l. 790--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:wrap; text-align:left;" id="TBL-16-3-1" style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:wrap; text-align:left;" id="TBL-16-3-1"
class="td11"><!--l. 904--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 791--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">iout</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-16-3-2" class="cmtt-12">iout</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-16-3-2"
class="td11"><!--l. 904--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 791--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:wrap; text-align:left;" id="TBL-16-4-1" style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:wrap; text-align:left;" id="TBL-16-4-1"
class="td11"><!--l. 905--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-4-2" class="td11"><!--l. 792--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-4-2"
class="td11"><!--l. 905--><p class="noindent" ><span class="td11"><!--l. 792--><p class="noindent" ><span
class="cmr-12">The id of the file where the preconditioner description will be</span> class="cmbx-12">The id of the file where the preconditioner description will</span>
<span <span
class="cmr-12">printed; the default is the standard output.</span> </td> class="cmbx-12">be printed; the default is the standard output.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:wrap; text-align:left;" id="TBL-16-5-1" style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:wrap; text-align:left;" id="TBL-16-5-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 910--><p class="indent" > <span <!--l. 797--><p class="indent" > <span
class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span> class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<span <span
class="cmr-12">invoked as follows:</span> class="cmbx-12">can be also invoked as follows:</span>
<div class="center" <div class="center"
> >
<!--l. 913--><p class="noindent" > <!--l. 800--><p class="noindent" >
<!--l. 914--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 801--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;mld_precdescr(p,info</span><span class="cmtt-12">&#x00A0;amg_precdescr(p,info</span><span
class="cmtt-12">&#x00A0;[,iout])</span></span></span></div> class="cmtt-12">&#x00A0;[,iout])</span></span></span></div>
<!--l. 918--><div class="crosslinks"><p class="noindent"><span <!--l. 805--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu18.html" ><span href="userhtmlsu18.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu16.html" ><span href="userhtmlsu16.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu17.html" ><span href="userhtmlsu17.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu17.html" ><span href="userhtmlse6.html#userhtmlsu17.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 918--><p class="indent" > <a <!--l. 805--><p class="indent" > <a
id="tailuserhtmlsu17.html"></a> id="tailuserhtmlsu17.html"></a>
</body></html> </body></html>

@ -10,43 +10,43 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 918--><div class="crosslinks"><p class="noindent"><span <!--l. 805--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu17.html" ><span href="userhtmlsu17.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu18.html"><span href="#tailuserhtmlsu18.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu18.html" ><span href="userhtmlse6.html#userhtmlsu18.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">6.9 </span></span> <a class="cmbx-12">6.9 </span></span> <a
id="x28-270006.9"></a><span id="x28-270006.9"></a><span
class="cmr-12">Auxiliary Methods</span></h4> class="cmbx-12">Auxiliary Methods</span></h4>
<!--l. 919--><p class="noindent" ><span <!--l. 806--><p class="noindent" ><span
class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span> class="cmbx-12">Various functionalities are implemented as additional methods of the</span>
<span <span
class="cmr-12">object.</span> class="cmbx-12">preconditioner object.</span>
<!--l. 922--><p class="noindent" > <!--l. 809--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">6.9.1 </span></span> <a class="cmbx-12">6.9.1 </span></span> <a
id="x28-280006.9.1"></a><span id="x28-280006.9.1"></a><span
class="cmr-12">Method: dump</span></h5> class="cmbx-12">Method: dump</span></h5>
<div class="center" <div class="center"
> >
<!--l. 924--><p class="noindent" > <!--l. 811--><p class="noindent" >
<!--l. 925--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 812--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])</span></span></span><br /> class="cmtt-12">&#x00A0;p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])</span></span></span><br />
</div> </div>
<!--l. 928--><p class="noindent" ><span <!--l. 815--><p class="noindent" ><span
class="cmr-12">Dump on file.</span> class="cmbx-12">Dump on file.</span>
<!--l. 931--><p class="noindent" ><span <!--l. 818--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-17" class="tabular" <div class="tabular"> <table id="TBL-17" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -54,67 +54,70 @@ cellspacing="0" cellpadding="0"
id="TBL-17-1"><col id="TBL-17-1"><col
id="TBL-17-2"></colgroup><tr id="TBL-17-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:wrap; text-align:left;" id="TBL-17-1-1" style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:wrap; text-align:left;" id="TBL-17-1-1"
class="td11"><!--l. 937--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 821--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-17-1-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-17-1-2"
class="td11"><!--l. 937--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 821--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:wrap; text-align:left;" id="TBL-17-2-1" style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:wrap; text-align:left;" id="TBL-17-2-1"
class="td11"><!--l. 938--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-2-2" class="td11"><!--l. 822--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-2-2"
class="td11"><!--l. 938--><p class="noindent" ><span class="td11"><!--l. 822--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:wrap; text-align:left;" id="TBL-17-3-1" style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:wrap; text-align:left;" id="TBL-17-3-1"
class="td11"><!--l. 939--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 823--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-17-3-2" class="cmtt-12">amold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-17-3-2"
class="td11"><!--l. 939--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 823--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_sparse_mat),</span><span class="cmtt-12">_base_sparse_mat),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:wrap; text-align:left;" id="TBL-17-4-1" style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:wrap; text-align:left;" id="TBL-17-4-1"
class="td11"><!--l. 940--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-4-2" class="td11"><!--l. 824--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-4-2"
class="td11"><!--l. 940--><p class="noindent" ><span class="td11"><!--l. 824--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span> class="cmbx-12">The desired dynamic type for internal matrix components;</span>
<span <span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span> class="cmbx-12">this allows e.g. running on GPUs; it needs not be the same</span>
<span <span
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span class="cmbx-12">on all processes. See the PSBLAS User&#8217;s Guide for details</span>
class="cmr-12">[</span><a <span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:wrap; text-align:left;" id="TBL-17-5-1" style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:wrap; text-align:left;" id="TBL-17-5-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 947--><p class="noindent" > <!--l. 831--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">6.9.2 </span></span> <a class="cmbx-12">6.9.2 </span></span> <a
id="x28-290006.9.2"></a><span id="x28-290006.9.2"></a><span
class="cmr-12">Method: clone</span></h5> class="cmbx-12">Method: clone</span></h5>
<div class="center" <div class="center"
> >
<!--l. 949--><p class="noindent" > <!--l. 833--><p class="noindent" >
<!--l. 950--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 834--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%clone(pout,info)</span></span></span><br /> class="cmtt-12">&#x00A0;p%clone(pout,info)</span></span></span><br />
</div> </div>
<!--l. 953--><p class="noindent" ><span <!--l. 837--><p class="noindent" ><span
class="cmr-12">Create a (deep) copy of the preconditioner object.</span> class="cmbx-12">Create a (deep) copy of the preconditioner object.</span>
<!--l. 956--><p class="noindent" ><span <!--l. 840--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-18" class="tabular" <div class="tabular"> <table id="TBL-18" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -122,108 +125,114 @@ cellspacing="0" cellpadding="0"
id="TBL-18-1"><col id="TBL-18-1"><col
id="TBL-18-2"></colgroup><tr id="TBL-18-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:wrap; text-align:left;" id="TBL-18-1-1" style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:wrap; text-align:left;" id="TBL-18-1-1"
class="td11"><!--l. 959--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 843--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">pout</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-1-2" class="cmtt-12">pout</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-1-2"
class="td11"><!--l. 959--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 843--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(mld_</span></span></span><span class="cmtt-12">type(amg_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">prec_type),</span><span class="cmtt-12">prec_type),</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:wrap; text-align:left;" id="TBL-18-2-1" style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:wrap; text-align:left;" id="TBL-18-2-1"
class="td11"><!--l. 960--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-2-2" class="td11"><!--l. 844--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-2-2"
class="td11"><!--l. 960--><p class="noindent" ><span class="td11"><!--l. 844--><p class="noindent" ><span
class="cmr-12">The copy of the preconditioner data structure. Note that </span><span class="cmbx-12">The copy of the preconditioner data structure. Note</span>
class="cmti-12">x </span><span
class="cmr-12">must</span>
<span <span
class="cmr-12">be chosen according to the real/complex, single/double precision</span> class="cmbx-12">that </span><span
class="cmbxti-10x-x-120">x </span><span
class="cmbx-12">must be chosen according to the real/complex,</span>
<span <span
class="cmr-12">version of MLD2P4 under use.</span> </td> class="cmbx-12">single/double precision version of MLD2P4 under use.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:wrap; text-align:left;" id="TBL-18-3-1" style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:wrap; text-align:left;" id="TBL-18-3-1"
class="td11"><!--l. 963--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 847--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-3-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-3-2"
class="td11"><!--l. 963--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 847--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:wrap; text-align:left;" id="TBL-18-4-1" style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:wrap; text-align:left;" id="TBL-18-4-1"
class="td11"><!--l. 964--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-4-2" class="td11"><!--l. 848--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-4-2"
class="td11"><!--l. 964--><p class="noindent" ><span class="td11"><!--l. 848--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:wrap; text-align:left;" id="TBL-18-5-1" style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:wrap; text-align:left;" id="TBL-18-5-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 969--><p class="noindent" > <!--l. 853--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">6.9.3 </span></span> <a class="cmbx-12">6.9.3 </span></span> <a
id="x28-300006.9.3"></a><span id="x28-300006.9.3"></a><span
class="cmr-12">Method: sizeof</span></h5> class="cmbx-12">Method: sizeof</span></h5>
<div class="center" <div class="center"
> >
<!--l. 971--><p class="noindent" > <!--l. 855--><p class="noindent" >
<!--l. 972--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 856--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">sz</span><span class="cmtt-12">sz</span><span
class="cmtt-12">&#x00A0;=</span><span class="cmtt-12">&#x00A0;=</span><span
class="cmtt-12">&#x00A0;</span><span class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">&#x00A0;p%sizeof()</span></span></span><br /> class="cmtt-12">&#x00A0;p%sizeof()</span></span></span><br />
</div> </div>
<!--l. 975--><p class="noindent" ><span <!--l. 859--><p class="noindent" ><span
class="cmr-12">Return memory footprint in bytes.</span> class="cmbx-12">Return memory footprint in bytes.</span>
<!--l. 988--><p class="noindent" > <!--l. 862--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">6.9.4 </span></span> <a class="cmbx-12">6.9.4 </span></span> <a
id="x28-310006.9.4"></a><span id="x28-310006.9.4"></a><span
class="cmr-12">Method: allocate</span><span class="cmbx-12">Method: allocate</span><span
class="cmr-12">_wrk</span></h5> class="cmbx-12">_wrk</span></h5>
<div class="center" <div class="center"
> >
<!--l. 990--><p class="noindent" > <!--l. 864--><p class="noindent" >
<!--l. 991--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 865--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%allocate_wrk(info[,</span><span class="cmtt-12">&#x00A0;p%allocate_wrk(info[,</span><span
class="cmtt-12">&#x00A0;vmold])</span></span></span><br /> class="cmtt-12">&#x00A0;vmold])</span></span></span><br />
</div> </div>
<!--l. 994--><p class="noindent" ><span <!--l. 868--><p class="noindent" ><span
class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span> class="cmbx-12">Allocate internal work vectors. Each application of the preconditioner</span>
<span <span
class="cmr-12">work vectors which are allocated internally as necessary; therefore allocation and</span> class="cmbx-12">uses a number of work vectors which are allocated internally as</span>
<span <span
class="cmr-12">deallocation of memory occurs multiple times during the execution of a Krylov method.</span> class="cmbx-12">necessary; therefore allocation and deallocation of memory occurs</span>
<span <span
class="cmr-12">In most cases this strategy is perfectly acceptable, but on some platforms, most</span> class="cmbx-12">multiple times during the execution of a Krylov method. In most cases</span>
<span <span
class="cmr-12">notably GPUs, memory allocation is a slow operation, and the default behaviour would</span> class="cmbx-12">this strategy is perfectly acceptable, but on some platforms, most</span>
<span <span
class="cmr-12">lead to a slowdown. This method allows to trade space for time by preallocating</span> class="cmbx-12">notably GPUs, memory allocation is a slow operation, and the default</span>
<span <span
class="cmr-12">the internal workspace outside of the invocation of a Krylov method. When</span> class="cmbx-12">behaviour would lead to a slowdown. This method allows to trade</span>
<span <span
class="cmr-12">using GPUs or other specialized devices, the </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">space for time by preallocating the internal workspace outside of the</span>
class="cmtt-12">vmold</span></span></span> <span
class="cmr-12">argument is also necessary</span>
<span
class="cmr-12">to ensure the internal work vectors are of the appropriate dynamic type to</span>
<span <span
class="cmr-12">exploit the accelerator hardware; when allocation occurs internally this is</span> class="cmbx-12">invocation of a Krylov method. When using GPUs or other specialized</span>
<span
class="cmbx-12">devices, the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">vmold</span></span></span> <span
class="cmbx-12">argument is also necessary to ensure the internal</span>
<span
class="cmbx-12">work vectors are of the appropriate dynamic type to exploit the</span>
<span
class="cmbx-12">accelerator hardware; when allocation occurs internally this is taken</span>
<span <span
class="cmr-12">taken care of based on the dynamic type of the </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">care of based on the dynamic type of the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">x</span></span></span> <span class="cmtt-12">x</span></span></span> <span
class="cmr-12">argument to the </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">argument to the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">apply</span></span></span> class="cmtt-12">apply</span></span></span>
<span <span
class="cmr-12">method.</span> class="cmbx-12">method.</span>
<!--l. 1010--><p class="noindent" ><span <!--l. 884--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-19" class="tabular" <div class="tabular"> <table id="TBL-19" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -231,58 +240,60 @@ cellspacing="0" cellpadding="0"
id="TBL-19-1"><col id="TBL-19-1"><col
id="TBL-19-2"></colgroup><tr id="TBL-19-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:wrap; text-align:left;" id="TBL-19-1-1" style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:wrap; text-align:left;" id="TBL-19-1-1"
class="td11"><!--l. 1016--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 887--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-1-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-1-2"
class="td11"><!--l. 1016--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 887--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:wrap; text-align:left;" id="TBL-19-2-1" style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:wrap; text-align:left;" id="TBL-19-2-1"
class="td11"><!--l. 1017--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-2-2" class="td11"><!--l. 888--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-2-2"
class="td11"><!--l. 1017--><p class="noindent" ><span class="td11"><!--l. 888--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:wrap; text-align:left;" id="TBL-19-3-1" style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:wrap; text-align:left;" id="TBL-19-3-1"
class="td11"><!--l. 1018--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 889--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">vmold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-3-2" class="cmtt-12">vmold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-3-2"
class="td11"><!--l. 1018--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 889--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class(psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_vect_type),</span><span class="cmtt-12">_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-19-4-"><td style="white-space:wrap; text-align:left;" id="TBL-19-4-1" style="vertical-align:baseline;" id="TBL-19-4-"><td style="white-space:wrap; text-align:left;" id="TBL-19-4-1"
class="td11"><!--l. 1019--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-4-2" class="td11"><!--l. 890--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-4-2"
class="td11"><!--l. 1019--><p class="noindent" ><span class="td11"><!--l. 890--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span> class="cmbx-12">The desired dynamic type for internal vector components;</span>
<span <span
class="cmr-12">allows e.g. running on GPUs.</span> </td> class="cmbx-12">this allows e.g. running on GPUs.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:wrap; text-align:left;" id="TBL-19-5-1" style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:wrap; text-align:left;" id="TBL-19-5-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 1025--><p class="noindent" > <!--l. 896--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">6.9.5 </span></span> <a class="cmbx-12">6.9.5 </span></span> <a
id="x28-320006.9.5"></a><span id="x28-320006.9.5"></a><span
class="cmr-12">Method: free</span><span class="cmbx-12">Method: free</span><span
class="cmr-12">_wrk</span></h5> class="cmbx-12">_wrk</span></h5>
<div class="center" <div class="center"
> >
<!--l. 1027--><p class="noindent" > <!--l. 898--><p class="noindent" >
<!--l. 1028--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 899--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%free_wrk(info)</span></span></span><br /> class="cmtt-12">&#x00A0;p%free_wrk(info)</span></span></span><br />
</div> </div>
<!--l. 1031--><p class="noindent" ><span <!--l. 902--><p class="noindent" ><span
class="cmr-12">Deallocate internal work vectors.</span> class="cmbx-12">Deallocate internal work vectors.</span>
<!--l. 1034--><p class="noindent" ><span <!--l. 905--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-20" class="tabular" <div class="tabular"> <table id="TBL-20" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -290,21 +301,23 @@ cellspacing="0" cellpadding="0"
id="TBL-20-1"><col id="TBL-20-1"><col
id="TBL-20-2"></colgroup><tr id="TBL-20-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:wrap; text-align:left;" id="TBL-20-1-1" style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:wrap; text-align:left;" id="TBL-20-1-1"
class="td11"><!--l. 1040--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 908--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-20-1-2" class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-20-1-2"
class="td11"><!--l. 1040--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 908--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmr-12">.</span> </td> class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:wrap; text-align:left;" id="TBL-20-2-1" style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:wrap; text-align:left;" id="TBL-20-2-1"
class="td11"><!--l. 1041--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-20-2-2" class="td11"><!--l. 909--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-20-2-2"
class="td11"><!--l. 1041--><p class="noindent" ><span class="td11"><!--l. 909--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:wrap; text-align:left;" id="TBL-20-3-1" style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:wrap; text-align:left;" id="TBL-20-3-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
@ -318,19 +331,19 @@ class="td11"> </td> </tr></table></div>
<!--l. 4--><div class="crosslinks"><p class="noindent"><span <!--l. 4--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu17.html" ><span href="userhtmlsu17.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu18.html" ><span href="userhtmlsu18.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse6.html#userhtmlsu18.html" ><span href="userhtmlse6.html#userhtmlsu18.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 4--><p class="indent" > <a <!--l. 4--><p class="indent" > <a
id="tailuserhtmlsu18.html"></a> id="tailuserhtmlsu18.html"></a>
</body></html> </body></html>

@ -44,7 +44,7 @@ class="cmbx-12">UMFPACK</span> </dt><dd
class="description"><span class="cite"><span class="description"><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XUMFPACK"><span href="userhtmlli4.html#XUMFPACK"><span
class="cmr-12">9</span></a><span class="cmr-12">11</span></a><span
class="cmr-12">]</span></span> <span class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package included in the SuiteSparse</span> class="cmr-12">A sparse LU factorization package included in the SuiteSparse</span>
<span <span
@ -86,7 +86,7 @@ class="cmbx-12">SuperLU</span> </dt><dd
class="description"><span class="cite"><span class="description"><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XSUPERLU"><span href="userhtmlli4.html#XSUPERLU"><span
class="cmr-12">10</span></a><span class="cmr-12">12</span></a><span
class="cmr-12">]</span></span> <span class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from</span> class="cmr-12">A sparse LU factorization package available from</span>
<a <a
@ -108,7 +108,7 @@ class="cmbx-12">_Dist</span> </dt><dd
class="description"><span class="cite"><span class="description"><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XSUPERLUDIST"><span href="userhtmlli4.html#XSUPERLUDIST"><span
class="cmr-12">19</span></a><span class="cmr-12">21</span></a><span
class="cmr-12">]</span></span> <span class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from the same</span> class="cmr-12">A sparse LU factorization package available from the same</span>
<span <span

@ -32,34 +32,38 @@ class="cmr-12">3.3 </span></span> <a
id="x10-90003.3"></a><span id="x10-90003.3"></a><span
class="cmr-12">Configuration options</span></h4> class="cmr-12">Configuration options</span></h4>
<!--l. 100--><p class="noindent" ><span <!--l. 100--><p class="noindent" ><span
class="cmr-12">In order to build MLD2P4, the first step is to use the </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">In order to build AMG4PSBLAS, the first step is to use the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">configure</span></span></span> <span class="cmtt-12">configure</span></span></span> <span
class="cmr-12">script in the main</span> class="cmr-12">script in the</span>
<span <span
class="cmr-12">directory to generate the necessary makefile.</span> class="cmr-12">main directory to generate the necessary makefile.</span>
<!--l. 104--><p class="indent" > <span <!--l. 105--><p class="indent" > <span
class="cmr-12">As a minimal example consider the following:</span> class="cmbx-12">DA RISCRIVERE</span>
<!--l. 107--><p class="indent" > <span
class="cmbx-12">As a minimal example consider the following:</span>
<div class="verbatim" id="verbatim-1"> <div class="verbatim" id="verbatim-1">
./configure&#x00A0;--with-psblas=PSB-INSTALL-DIR ./configure&#x00A0;--with-psblas=PSB-INSTALL-DIR
</div> </div>
<!--l. 107--><p class="nopar" > <span <!--l. 110--><p class="nopar" > <span
class="cmr-12">which assumes that the various MPI compilers and support libraries are available in</span> class="cmbx-12">which assumes that the various MPI compilers and support libraries are</span>
<span <span
class="cmr-12">the standard directories on the system, and specifies only the PSBLAS install directory</span> class="cmbx-12">available in the standard directories on the system, and specifies only</span>
<span <span
class="cmr-12">(note that the latter directory must be specified with an </span><span class="cmbx-12">the PSBLAS install directory (note that the latter directory must</span>
class="cmti-12">absolute </span><span
class="cmr-12">path). The full set of</span>
<span <span
class="cmr-12">options may be looked at by issuing the command </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">be specified with an </span><span
class="cmbxti-10x-x-120">absolute </span><span
class="cmbx-12">path). The full set of options may</span>
<span
class="cmbx-12">be looked at by issuing the command </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">./configure</span><span class="cmtt-12">./configure</span><span
class="cmtt-12">&#x00A0;--help</span></span></span><span class="cmtt-12">&#x00A0;--help</span></span></span><span
class="cmr-12">, which</span> class="cmbx-12">, which</span>
<span <span
class="cmr-12">produces:</span> class="cmbx-12">produces:</span>
@ -237,18 +241,17 @@ class="cmr-12">produces:</span>
&#x00A0;<br /> &#x00A0;<br />
&#x00A0;<br />Report&#x00A0;bugs&#x00A0;to&#x00A0;&#x003C;https://github.com/sfilippone/mld2p4-2/issues&#x003E;. &#x00A0;<br />Report&#x00A0;bugs&#x00A0;to&#x00A0;&#x003C;https://github.com/sfilippone/mld2p4-2/issues&#x003E;.
</div> </div>
<!--l. 278--><p class="nopar" > <!--l. 281--><p class="nopar" >
<!--l. 280--><p class="indent" > <span <!--l. 283--><p class="indent" > <span
class="cmr-12">For instance, if a user has built and installed PSBLAS 3.5 under the </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">For instance, if a user has built and installed PSBLAS 3.5 under the</span>
class="cmtt-12">/opt</span></span></span> <span
class="cmr-12">directory</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">/opt</span></span></span> <span
class="cmbx-12">directory and is using the SuiteSparse package (which includes</span>
<span <span
class="cmr-12">and is using the SuiteSparse package (which includes UMFPACK), then MLD2P4</span> class="cmbx-12">UMFPACK), then MLD2P4 might be configured with:</span>
<span
class="cmr-12">might be configured with:</span>
@ -256,72 +259,74 @@ class="cmr-12">might be configured with:</span>
&#x00A0;./configure&#x00A0;--with-psblas=/opt/psblas-3.5/&#x00A0;\ &#x00A0;./configure&#x00A0;--with-psblas=/opt/psblas-3.5/&#x00A0;\
&#x00A0;<br />&#x00A0;--with-umfpackincdir=/usr/include/suitesparse/ &#x00A0;<br />&#x00A0;--with-umfpackincdir=/usr/include/suitesparse/
</div> </div>
<!--l. 287--><p class="nopar" > <span <!--l. 290--><p class="nopar" > <span
class="cmr-12">Once the configure script has completed execution, it will have generated the file</span> class="cmbx-12">Once the configure script has completed execution, it will have generated</span>
<span class="obeylines-h"><span class="verb"><span <span
class="cmbx-12">the file </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">Make.inc</span></span></span> <span class="cmtt-12">Make.inc</span></span></span> <span
class="cmr-12">which will then be used by all Makefiles in the directory tree; this file will be</span> class="cmbx-12">which will then be used by all Makefiles in the directory</span>
<span <span
class="cmr-12">copied in the install directory under the name </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">tree; this file will be copied in the install directory under the name</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">Make.inc.MLD2P4</span></span></span><span class="cmtt-12">Make.inc.MLD2P4</span></span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<!--l. 293--><p class="indent" > <span <!--l. 296--><p class="indent" > <span
class="cmr-12">To use the MUMPS solver package, the user has to add the appropriate options to</span> class="cmbx-12">To use the MUMPS solver package, the user has to add the appropriate</span>
<span <span
class="cmr-12">the configure script; by default we are looking for the libraries </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">options to the configure script; by default we are looking for the libraries</span>
class="cmtt-12">-ldmumps</span><span
class="cmtt-12">&#x00A0;-lsmumps</span></span></span>
<span class="obeylines-h"><span class="verb"><span <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">-ldmumps</span><span
class="cmtt-12">&#x00A0;-lsmumps</span></span></span> <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#x00A0;-lzmumps</span><span class="cmtt-12">&#x00A0;-lzmumps</span><span
class="cmtt-12">&#x00A0;-lcmumps</span><span class="cmtt-12">&#x00A0;-lcmumps</span><span
class="cmtt-12">&#x00A0;-mumps_common</span><span class="cmtt-12">&#x00A0;-mumps_common</span><span
class="cmtt-12">&#x00A0;-lpord</span></span></span><span class="cmtt-12">&#x00A0;-lpord</span></span></span><span
class="cmr-12">. MUMPS often uses additional</span> class="cmbx-12">. MUMPS often</span>
<span <span
class="cmr-12">packages such as ScaLAPACK, ParMETIS, SCOTCH, as well as enabling OpenMP; in</span> class="cmbx-12">uses additional packages such as ScaLAPACK, ParMETIS, SCOTCH, as</span>
<span <span
class="cmr-12">such cases it is necessary to add linker options with the </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">well as enabling OpenMP; in such cases it is necessary to add linker options</span>
class="cmtt-12">--with-extra-libs</span></span></span> <span
class="cmr-12">configure</span>
<span <span
class="cmr-12">option.</span> class="cmbx-12">with the </span><span class="obeylines-h"><span class="verb"><span
<!--l. 301--><p class="indent" > <span class="cmtt-12">--with-extra-libs</span></span></span> <span
class="cmr-12">To build the library the user will now enter</span> class="cmbx-12">configure option.</span>
<!--l. 304--><p class="indent" > <span
class="cmbx-12">To build the library the user will now enter</span>
<div class="verbatim" id="verbatim-4"> <div class="verbatim" id="verbatim-4">
make make
</div> </div>
<!--l. 304--><p class="nopar" > <span <!--l. 307--><p class="nopar" > <span
class="cmr-12">followed (optionally) by</span> class="cmbx-12">followed (optionally) by</span>
<div class="verbatim" id="verbatim-5"> <div class="verbatim" id="verbatim-5">
make&#x00A0;install make&#x00A0;install
</div> </div>
<!--l. 308--><p class="nopar" > <!--l. 311--><p class="nopar" >
<!--l. 309--><div class="crosslinks"><p class="noindent"><span <!--l. 312--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu4.html" ><span href="userhtmlsu4.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu2.html" ><span href="userhtmlsu2.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu2.html#tailuserhtmlsu2.html" ><span href="userhtmlsu2.html#tailuserhtmlsu2.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu3.html" ><span href="userhtmlsu3.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse3.html#userhtmlsu3.html" ><span href="userhtmlse3.html#userhtmlsu3.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 309--><p class="indent" > <a <!--l. 312--><p class="indent" > <a
id="tailuserhtmlsu3.html"></a> id="tailuserhtmlsu3.html"></a>
</body></html> </body></html>

@ -10,60 +10,61 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 309--><div class="crosslinks"><p class="noindent"><span <!--l. 312--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu5.html" ><span href="userhtmlsu5.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu3.html" ><span href="userhtmlsu3.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu4.html"><span href="#tailuserhtmlsu4.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse3.html#userhtmlsu4.html" ><span href="userhtmlse3.html#userhtmlsu4.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">3.4 </span></span> <a class="cmbx-12">3.4 </span></span> <a
id="x11-100003.4"></a><span id="x11-100003.4"></a><span
class="cmr-12">Bug reporting</span></h4> class="cmbx-12">Bug reporting</span></h4>
<!--l. 310--><p class="noindent" ><span <!--l. 313--><p class="noindent" ><span
class="cmr-12">If you find any bugs in our codes, please report them through our issues page</span> class="cmbx-12">If you find any bugs in our codes, please report them through our issues</span>
<span <span
class="cmr-12">on</span><br class="cmbx-12">page on</span><br
class="newline" /> <a class="newline" /> <a
href="https://github.com/sfilippone/mld2p4-2/issues" class="url" ><span href="https://github.com/psctoolkit/amg4psblas/issues" class="url" ><span
class="cmtt-12">https://github.com/sfilippone/mld2p4-2/issues</span></a><br class="cmtt-12">https://github.com/psctoolkit/amg4psblas/issues</span></a><br
class="newline" /><span class="newline" />
class="cmr-12">To enable us to track the bug, please provide a log from the failing application, the</span> <!--l. 317--><p class="indent" > <span
class="cmbx-12">To enable us to track the bug, please provide a log from the failing</span>
<span <span
class="cmr-12">test conditions, and ideally a self-contained test program reproducing the</span> class="cmbx-12">application, the test conditions, and ideally a self-contained test program</span>
<span <span
class="cmr-12">issue.</span> class="cmbx-12">reproducing the issue.</span>
<!--l. 326--><div class="crosslinks"><p class="noindent"><span <!--l. 321--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu5.html" ><span href="userhtmlsu5.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu3.html" ><span href="userhtmlsu3.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu4.html" ><span href="userhtmlsu4.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse3.html#userhtmlsu4.html" ><span href="userhtmlse3.html#userhtmlsu4.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 326--><p class="indent" > <a <!--l. 321--><p class="indent" > <a
id="tailuserhtmlsu4.html"></a> id="tailuserhtmlsu4.html"></a>
</body></html> </body></html>

@ -10,69 +10,72 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 326--><div class="crosslinks"><p class="noindent"><span <!--l. 321--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu4.html" ><span href="userhtmlsu4.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu4.html#tailuserhtmlsu4.html" ><span href="userhtmlsu4.html#tailuserhtmlsu4.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu5.html"><span href="#tailuserhtmlsu5.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse3.html#userhtmlsu5.html" ><span href="userhtmlse3.html#userhtmlsu5.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">3.5 </span></span> <a class="cmbx-12">3.5 </span></span> <a
id="x12-110003.5"></a><span id="x12-110003.5"></a><span
class="cmr-12">Example and test programs</span></h4> class="cmbx-12">Example and test programs</span></h4>
<!--l. 327--><p class="noindent" ><span <!--l. 322--><p class="noindent" ><span
class="cmr-12">The package contains the </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">The package contains the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">examples</span></span></span> <span class="cmtt-12">examples</span></span></span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">tests</span></span></span> <span class="cmtt-12">tests</span></span></span> <span
class="cmr-12">directories; both of them are</span> class="cmbx-12">directories; both of them are</span>
<span <span
class="cmr-12">further divided into </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">further divided into </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">fileread</span></span></span> <span class="cmtt-12">fileread</span></span></span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">pdegen</span></span></span> <span class="cmtt-12">pdegen</span></span></span> <span
class="cmr-12">subdirectories. Their purpose is as</span> class="cmbx-12">subdirectories. Their purpose is as</span>
<span <span
class="cmr-12">follows:</span> class="cmbx-12">follows:</span>
<dl class="description"><dt class="description"> <dl class="description"><dt class="description">
<span <span
class="cmtt-12">examples</span> </dt><dd class="cmtt-12">examples</span> </dt><dd
class="description"><span class="description"><span
class="cmr-12">contains a set of simple example programs with a predefined choice of</span> class="cmbx-12">contains a set of simple example programs with a predefined</span>
<span <span
class="cmr-12">preconditioners, selectable via integer values. These are intended to get an</span> class="cmbx-12">choice of preconditioners, selectable via integer values. These</span>
<span <span
class="cmr-12">acquaintance with the multilevel preconditioners available in MLD2P4.</span> class="cmbx-12">are intended to get an acquaintance with the multilevel</span>
<span
class="cmbx-12">preconditioners available in AMG4PSBLAS.</span>
</dd><dt class="description"> </dd><dt class="description">
<span <span
class="cmtt-12">tests</span> </dt><dd class="cmtt-12">tests</span> </dt><dd
class="description"><span class="description"><span
class="cmr-12">contains a set of more sophisticated examples that will allow the user, via</span> class="cmbx-12">contains a set of more sophisticated examples that will allow the</span>
<span <span
class="cmr-12">the input files in the </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">user, via the input files in the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">runs</span></span></span> <span class="cmtt-12">runs</span></span></span> <span
class="cmr-12">subdirectories, to experiment with the full range</span> class="cmbx-12">subdirectories, to experiment</span>
<span <span
class="cmr-12">of preconditioners implemented in the package.</span></dd></dl> class="cmbx-12">with the full range of preconditioners implemented in the package.</span></dd></dl>
<!--l. 340--><p class="noindent" ><span <!--l. 335--><p class="noindent" ><span
class="cmr-12">The </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">The </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">fileread</span></span></span> <span class="cmtt-12">fileread</span></span></span> <span
class="cmr-12">directories contain sample programs that read sparse matrices from files,</span> class="cmbx-12">directories contain sample programs that read sparse matrices</span>
<span <span
class="cmr-12">according to the Matrix Market or the Harwell-Boeing storage format; the </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">from files, according to the Matrix Market or the Harwell-Boeing storage</span>
class="cmtt-12">pdegen</span></span></span>
<span <span
class="cmr-12">programs generate matrices in full parallel mode from the discretization of a sample</span> class="cmbx-12">format; the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">pdegen</span></span></span> <span
class="cmbx-12">programs generate matrices in full parallel mode from</span>
<span <span
class="cmr-12">partial differential equation.</span> class="cmbx-12">the discretization of a sample partial differential equation.</span>
@ -80,19 +83,19 @@ class="cmr-12">partial differential equation.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu4.html" ><span href="userhtmlsu4.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu4.html#tailuserhtmlsu4.html" ><span href="userhtmlsu4.html#tailuserhtmlsu4.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu5.html" ><span href="userhtmlsu5.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse3.html#userhtmlsu5.html" ><span href="userhtmlse3.html#userhtmlsu5.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlsu5.html"></a> id="tailuserhtmlsu5.html"></a>
</body></html> </body></html>

@ -11,35 +11,38 @@
</head><body </head><body
> >
<!--l. 56--><div class="crosslinks"><p class="noindent"><span <!--l. 56--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu7.html" ><span href="userhtmlsu7.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu6.html"><span href="#tailuserhtmlsu6.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html#userhtmlsu6.html" ><span href="userhtmlse4.html#userhtmlsu6.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">4.1 </span></span> <a class="cmbx-12">4.1 </span></span> <a
id="x14-130004.1"></a><span id="x14-130004.1"></a><span
class="cmr-12">AMG preconditioners</span></h4> class="cmbx-12">AMG preconditioners</span></h4>
<!--l. 58--><p class="noindent" ><span <!--l. 58--><p class="noindent" ><span
class="cmr-12">In order to describe the AMG preconditioners available in MLD2P4, we consider a</span> class="cmbx-12">In order to describe the AMG preconditioners available in MLD2P4, we</span>
<span <span
class="cmr-12">linear system</span> class="cmbx-12">consider a linear system</span>
<table <table
class="equation"><tr><td> class="equation"><tr><td>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml2x.png" alt="Ax = b, src="userhtml2x.png" alt="Ax = b,
" class="math-display" ><a " class="math-display" ><a
id="x14-13001r2"></a></center></td><td class="equation-label"><span id="x14-13001r2"></a></center></td><td class="equation-label"><span
class="cmr-12">(2)</span></td></tr></table> class="cmr-12">(2)</span></td></tr></table>
<!--l. 62--><p class="nopar" > <!--l. 62--><p class="nopar" >
<span <span
class="cmr-12">where </span><span class="cmbx-12">where </span><span
class="cmmi-12">A </span><span class="cmmi-12">A </span><span
class="cmr-12">= (</span><span class="cmr-12">= (</span><span
class="cmmi-12">a</span><sub><span class="cmmi-12">a</span><sub><span
@ -50,20 +53,18 @@ class="msbm-10x-x-120">&#x211D;</span><sup><span
class="cmmi-8">n</span><span class="cmmi-8">n</span><span
class="cmsy-8">&#x00D7;</span><span class="cmsy-8">&#x00D7;</span><span
class="cmmi-8">n</span></sup> <span class="cmmi-8">n</span></sup> <span
class="cmr-12">is a nonsingular sparse matrix; for ease of presentation we</span> class="cmbx-12">is a nonsingular sparse matrix; for ease of</span>
<span <span
class="cmr-12">assume </span><span class="cmbx-12">presentation we assume </span><span
class="cmmi-12">A </span><span class="cmmi-12">A </span><span
class="cmr-12">has a symmetric sparsity pattern.</span> class="cmbx-12">has a symmetric sparsity pattern.</span>
<!--l. 67--><p class="indent" > <span <!--l. 67--><p class="indent" > <span
class="cmr-12">Let us consider as finest index space the set of row (column) indices of </span><span class="cmbx-12">Let us consider as finest index space the set of row (column) indices of </span><span
class="cmmi-12">A</span><span class="cmmi-12">A</span><span
class="cmr-12">,</span> class="cmbx-12">,</span>
<span <span
class="cmr-12">i.e., &#x03A9; = </span><span class="cmbx-12">i.e., </span><span
class="cmr-12">&#x03A9; = </span><span
class="cmsy-10x-x-120">{</span><span class="cmsy-10x-x-120">{</span><span
class="cmr-12">1</span><span class="cmr-12">1</span><span
class="cmmi-12">, </span><span class="cmmi-12">, </span><span
@ -72,66 +73,68 @@ class="cmmi-12">,</span><span
class="cmmi-12">&#x2026;</span><span class="cmmi-12">&#x2026;</span><span
class="cmmi-12">,n</span><span class="cmmi-12">,n</span><span
class="cmsy-10x-x-120">}</span><span class="cmsy-10x-x-120">}</span><span
class="cmr-12">. Any algebraic multilevel preconditioners implemented in</span> class="cmbx-12">. Any algebraic multilevel preconditioners implemented in</span>
<span <span
class="cmr-12">MLD2P4 generates a hierarchy of index spaces and a corresponding hierarchy of</span> class="cmbx-12">MLD2P4 generates a hierarchy of index spaces and a corresponding</span>
<span <span
class="cmr-12">matrices,</span> class="cmbx-12">hierarchy of matrices,</span>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml3x.png" alt=" 1 2 nlev 1 2 nlev src="userhtml3x.png" alt="&#x03A9;1 &#x2261; &#x03A9; &#x2283; &#x03A9;2 &#x2283; ...&#x2283; &#x03A9;nlev, A1 &#x2261; A, A2, ...,Anlev,
&#x03A9; &#x2261; &#x03A9; &#x2283; &#x03A9; &#x2283; ...&#x2283; &#x03A9; , A &#x2261; A, A ,...,A ,
" class="math-display" ></center> " class="math-display" ></center>
<!--l. 72--><p class="nopar" > <span <!--l. 72--><p class="nopar" > <span
class="cmr-12">by using the information contained in </span><span class="cmbx-12">by using the information contained in </span><span
class="cmmi-12">A</span><span class="cmmi-12">A</span><span
class="cmr-12">, without assuming any knowledge of</span> class="cmbx-12">, without assuming any knowledge</span>
<span <span
class="cmr-12">the geometry of the problem from which </span><span class="cmbx-12">of the geometry of the problem from which </span><span
class="cmmi-12">A </span><span class="cmmi-12">A </span><span
class="cmr-12">originates. A vector space </span><span class="cmbx-12">originates. A vector space </span><span
class="msbm-10x-x-120">&#x211D;</span><sup><span class="msbm-10x-x-120">&#x211D;</span><sup><span
class="cmmi-8">n</span><sub><span class="cmmi-8">n</span><sub><span
class="cmmi-6">k</span></sub></sup> <span class="cmmi-6">k</span></sub></sup>
class="cmr-12">is</span>
<span <span
class="cmr-12">associated with &#x03A9;</span><sup><span class="cmbx-12">is associated with </span><span
class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">, where </span><span class="cmbx-12">, where </span><span
class="cmmi-12">n</span><sub> class="cmmi-12">n</span><sub>
<span <span
class="cmmi-8">k</span></sub> <span class="cmmi-8">k</span></sub> <span
class="cmr-12">is the size of &#x03A9;</span><sup><span class="cmbx-12">is the size of </span><span
class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">. For all </span><span class="cmbx-12">. For all </span><span
class="cmmi-12">k &#x003C; nlev</span><span class="cmmi-12">k &#x003C; nlev</span><span
class="cmr-12">, a restriction</span> class="cmbx-12">, a</span>
<span <span
class="cmr-12">operator and a prolongation one are built, which connect two levels </span><span class="cmbx-12">restriction operator and a prolongation one are built, which connect two</span>
class="cmmi-12">k </span><span
class="cmr-12">and</span>
<span <span
class="cmbx-12">levels </span><span
class="cmmi-12">k </span><span
class="cmbx-12">and </span><span
class="cmmi-12">k </span><span class="cmmi-12">k </span><span
class="cmr-12">+ 1:</span> class="cmr-12">+ 1</span><span
class="cmbx-12">:</span>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml4x.png" alt="P k &#x2208; &#x211D;nk&#x00D7;nk+1, Rk &#x2208; &#x211D;nk+1&#x00D7;nk ; src="userhtml4x.png" alt=" k nk&#x00D7;nk+1 k nk+1&#x00D7;nk
P &#x2208; &#x211D; , R &#x2208; &#x211D; ;
" class="math-display" ></center> " class="math-display" ></center>
<!--l. 82--><p class="nopar" > <span <!--l. 82--><p class="nopar" > <span
class="cmr-12">the matrix </span><span class="cmbx-12">the matrix </span><span
class="cmmi-12">A</span><sup><span class="cmmi-12">A</span><sup><span
class="cmmi-8">k</span><span class="cmmi-8">k</span><span
class="cmr-8">+1</span></sup> <span class="cmr-8">+1</span></sup> <span
class="cmr-12">is computed by using the previous operators according to the</span> class="cmbx-12">is computed by using the previous operators according to</span>
<span <span
class="cmr-12">Galerkin approach, i.e.,</span> class="cmbx-12">the Galerkin approach, i.e.,</span>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml5x.png" alt=" k+1 k k k src="userhtml5x.png" alt="Ak+1 = RkAkP k.
A = R A P .
" class="math-display" ></center> " class="math-display" ></center>
<!--l. 87--><p class="nopar" > <span <!--l. 87--><p class="nopar" > <span
class="cmr-12">In the current implementation of MLD2P4 we have </span><span class="cmbx-12">In the current implementation of MLD2P4 we have </span><span
class="cmmi-12">R</span><sup><span class="cmmi-12">R</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">= (</span><span class="cmr-12">= (</span><span
@ -139,28 +142,30 @@ class="cmmi-12">P</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">)</span><sup><span class="cmr-12">)</span><sup><span
class="cmmi-8">T</span> </sup> <span class="cmmi-8">T</span> </sup> <span
class="cmr-12">A smoother with</span> class="cmbx-12">A smoother</span>
<span <span
class="cmr-12">iteration matrix </span><span class="cmbx-12">with iteration matrix </span><span
class="cmmi-12">M</span><sup><span class="cmmi-12">M</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is set up at each level </span><span class="cmbx-12">is set up at each level </span><span
class="cmmi-12">k &#x003C; nlev</span><span class="cmmi-12">k &#x003C; nlev</span><span
class="cmr-12">, and a solver is set up at the</span> class="cmbx-12">, and a solver is set</span>
<span <span
class="cmr-12">coarsest level, so that they are ready for application (for example, setting up a solver</span> class="cmbx-12">up at the coarsest level, so that they are ready for application (for example,</span>
<span <span
class="cmr-12">based on the </span><span class="cmbx-12">setting up a solver based on the </span><span
class="cmmi-12">LU </span><span class="cmmi-12">LU </span><span
class="cmr-12">factorization means computing and storing the </span><span class="cmbx-12">factorization means computing and</span>
<span
class="cmbx-12">storing the </span><span
class="cmmi-12">L </span><span class="cmmi-12">L </span><span
class="cmr-12">and </span><span class="cmbx-12">and </span><span
class="cmmi-12">U </span><span class="cmmi-12">U </span><span
class="cmr-12">factors). The</span> class="cmbx-12">factors). The construction of the hierarchy of AMG</span>
<span <span
class="cmr-12">construction of the hierarchy of AMG components described so far corresponds to the</span> class="cmbx-12">components described so far corresponds to the so-called build phase of the</span>
<span <span
class="cmr-12">so-called build phase of the preconditioner.</span> class="cmbx-12">preconditioner.</span>
<!--l. 95--><p class="indent" > <hr class="figure"><div class="figure" <!--l. 95--><p class="indent" > <hr class="figure"><div class="figure"
> >
@ -331,69 +336,71 @@ class="content">Application phase of a V-cycle preconditioner.</span></div><!--t
<!--l. 118--><p class="indent" > </div><hr class="endfigure"> <!--l. 118--><p class="indent" > </div><hr class="endfigure">
<!--l. 120--><p class="indent" > <span <!--l. 120--><p class="indent" > <span
class="cmr-12">The components produced in the build phase may be combined in several ways to</span> class="cmbx-12">The components produced in the build phase may be combined in</span>
<span <span
class="cmr-12">obtain different multilevel preconditioners; this is done in the application phase, i.e., in</span> class="cmbx-12">several ways to obtain different multilevel preconditioners; this is done in</span>
<span <span
class="cmr-12">the computation of a vector of type </span><span class="cmbx-12">the application phase, i.e., in the computation of a vector of type </span><span
class="cmmi-12">w </span><span class="cmmi-12">w </span><span
class="cmr-12">= </span><span class="cmr-12">= </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmmi-12">v</span><span class="cmmi-12">v</span><span
class="cmr-12">, where </span><span class="cmbx-12">,</span>
<span
class="cmbx-12">where </span><span
class="cmmi-12">B </span><span class="cmmi-12">B </span><span
class="cmr-12">denotes the preconditioner,</span> class="cmbx-12">denotes the preconditioner, usually within an iteration of a Krylov</span>
<span <span
class="cmr-12">usually within an iteration of a Krylov solver </span><span class="cite"><span class="cmbx-12">solver </span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XSaad_book"><span href="userhtmlli4.html#XSaad_book"><span
class="cmr-12">21</span></a><span class="cmbx-12">23</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">. An example of such a combination,</span> class="cmbx-12">. An example of such a combination, known as V-cycle, is given in</span>
<span <span
class="cmr-12">known as V-cycle, is given in Figure</span><span class="cmbx-12">Figure</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="#x14-130021"><span href="#x14-130021"><span
class="cmr-12">1</span><!--tex4ht:ref: fig:application_alg --></a><span class="cmbx-12">1</span><!--tex4ht:ref: fig:application_alg --></a><span
class="cmr-12">. In this case, a single iteration of the same</span> class="cmbx-12">. In this case, a single iteration of the same smoother is used before</span>
<span <span
class="cmr-12">smoother is used before and after the the recursive call to the V-cycle (i.e., in the</span> class="cmbx-12">and after the the recursive call to the V-cycle (i.e., in the pre-smoothing</span>
<span <span
class="cmr-12">pre-smoothing and post-smoothing phases); however, different choices can be</span> class="cmbx-12">and post-smoothing phases); however, different choices can be performed.</span>
<span <span
class="cmr-12">performed. Other cycles can be defined; in MLD2P4, we implemented the</span> class="cmbx-12">Other cycles can be defined; in MLD2P4, we implemented the standard</span>
<span <span
class="cmr-12">standard V-cycle and W-cycle</span><span class="cmbx-12">V-cycle and W-cycle</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span class="cmbx-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XBriggs2000"><span href="userhtmlli4.html#XBriggs2000"><span
class="cmr-12">3</span></a><span class="cmbx-12">3</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">, and a version of the K-cycle described</span> class="cmbx-12">, and a version of the K-cycle described</span>
<span <span
class="cmr-12">in</span><span class="cmbx-12">in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span class="cmbx-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XNotay2008"><span href="userhtmlli4.html#XNotay2008"><span
class="cmr-12">20</span></a><span class="cmbx-12">22</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<!--l. 133--><div class="crosslinks"><p class="noindent"><span <!--l. 133--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu7.html" ><span href="userhtmlsu7.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu6.html" ><span href="userhtmlsu6.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html#userhtmlsu6.html" ><span href="userhtmlse4.html#userhtmlsu6.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 133--><p class="indent" > <a <!--l. 133--><p class="indent" > <a
id="tailuserhtmlsu6.html"></a> id="tailuserhtmlsu6.html"></a>
</body></html> </body></html>

@ -11,89 +11,96 @@
</head><body </head><body
> >
<!--l. 133--><div class="crosslinks"><p class="noindent"><span <!--l. 133--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu8.html" ><span href="userhtmlsu8.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu6.html" ><span href="userhtmlsu6.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu6.html#tailuserhtmlsu6.html" ><span href="userhtmlsu6.html#tailuserhtmlsu6.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu7.html"><span href="#tailuserhtmlsu7.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html#userhtmlsu7.html" ><span href="userhtmlse4.html#userhtmlsu7.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">4.2 </span></span> <a class="cmbx-12">4.2 </span></span> <a
id="x15-140004.2"></a><span id="x15-140004.2"></a><span
class="cmr-12">Smoothed Aggregation</span></h4> class="cmbx-12">Smoothed Aggregation</span></h4>
<!--l. 135--><p class="noindent" ><span <!--l. 135--><p class="noindent" ><span
class="cmr-12">In order to define the prolongator </span><span class="cmbx-12">In order to define the prolongator </span><span
class="cmmi-12">P</span><sup><span class="cmmi-12">P</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">, used to compute the coarse-level matrix </span><span class="cmbx-12">, used to compute the coarse-level</span>
<span
class="cmbx-12">matrix </span><span
class="cmmi-12">A</span><sup><span class="cmmi-12">A</span><sup><span
class="cmmi-8">k</span><span class="cmmi-8">k</span><span
class="cmr-8">+1</span></sup><span class="cmr-8">+1</span></sup><span
class="cmr-12">,</span> class="cmbx-12">, MLD2P4 uses the smoothed aggregation algorithm described</span>
<span <span
class="cmr-12">MLD2P4 uses the smoothed aggregation algorithm described in </span><span class="cite"><span class="cmbx-12">in </span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XBREZINA_VANEK"><span href="userhtmlli4.html#XBREZINA_VANEK"><span
class="cmr-12">2</span></a><span class="cmbx-12">2</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">26</span></a><span class="cmbx-12">28</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">. The basic idea</span> class="cmbx-12">. The basic idea of this algorithm is to build a coarse set of indices</span>
<span <span
class="cmr-12">of this algorithm is to build a coarse set of indices &#x03A9;</span><sup><span class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span><span class="cmmi-8">k</span><span
class="cmr-8">+1</span></sup> <span class="cmr-8">+1</span></sup> <span
class="cmr-12">by suitably grouping the</span> class="cmbx-12">by suitably grouping the indices of </span><span
<span class="cmr-12">&#x03A9;</span><sup><span
class="cmr-12">indices of &#x03A9;</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">into disjoint subsets (aggregates), and to define the coarse-to-fine space</span> class="cmbx-12">into disjoint subsets</span>
<span <span
class="cmr-12">transfer operator </span><span class="cmbx-12">(aggregates), and to define the coarse-to-fine space transfer operator </span><span
class="cmmi-12">P</span><sup><span class="cmmi-12">P</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">by applying a suitable smoother to a simple piecewise constant</span> class="cmbx-12">by</span>
<span <span
class="cmr-12">prolongation operator, with the aim of improving the quality of the coarse-space</span> class="cmbx-12">applying a suitable smoother to a simple piecewise constant prolongation</span>
<span <span
class="cmr-12">correction.</span> class="cmbx-12">operator, with the aim of improving the quality of the coarse-space</span>
<span
class="cmbx-12">correction.</span>
<!--l. 144--><p class="indent" > <span <!--l. 144--><p class="indent" > <span
class="cmr-12">Three main steps can be identified in the smoothed aggregation procedure:</span> class="cmbx-12">Three main steps can be identified in the smoothed aggregation</span>
<span
class="cmbx-12">procedure:</span>
<ol class="enumerate1" > <ol class="enumerate1" >
<li <li
class="enumerate" id="x15-14002x1"><span class="enumerate" id="x15-14002x1"><span
class="cmr-12">aggregation of the indices of &#x03A9;</span><sup><span class="cmbx-12">aggregation of the indices of </span><span
class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">to obtain &#x03A9;</span><sup><span class="cmbx-12">to obtain </span><span
class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span><span class="cmmi-8">k</span><span
class="cmr-8">+1</span></sup><span class="cmr-8">+1</span></sup><span
class="cmr-12">;</span> class="cmbx-12">;</span>
</li> </li>
<li <li
class="enumerate" id="x15-14004x2"><span class="enumerate" id="x15-14004x2"><span
class="cmr-12">construction of the prolongator </span><span class="cmbx-12">construction of the prolongator </span><span
class="cmmi-12">P</span><sup><span class="cmmi-12">P</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">;</span> class="cmbx-12">;</span>
</li> </li>
<li <li
class="enumerate" id="x15-14006x3"><span class="enumerate" id="x15-14006x3"><span
class="cmr-12">application of </span><span class="cmbx-12">application of </span><span
class="cmmi-12">P</span><sup><span class="cmmi-12">P</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">and </span><span class="cmbx-12">and </span><span
class="cmmi-12">R</span><sup><span class="cmmi-12">R</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">= (</span><span class="cmr-12">= (</span><span
@ -101,50 +108,50 @@ class="cmmi-12">P</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">)</span><sup><span class="cmr-12">)</span><sup><span
class="cmmi-8">T</span> </sup> <span class="cmmi-8">T</span> </sup> <span
class="cmr-12">to build </span><span class="cmbx-12">to build </span><span
class="cmmi-12">A</span><sup><span class="cmmi-12">A</span><sup><span
class="cmmi-8">k</span><span class="cmmi-8">k</span><span
class="cmr-8">+1</span></sup><span class="cmr-8">+1</span></sup><span
class="cmr-12">.</span></li></ol> class="cmbx-12">.</span></li></ol>
<!--l. 151--><p class="indent" > <span <!--l. 151--><p class="indent" > <span
class="cmr-12">In order to perform the coarsening step, the smoothed aggregation algorithm</span> class="cmbx-12">In order to perform the coarsening step, the smoothed aggregation</span>
<span <span
class="cmr-12">described in</span><span class="cmbx-12">algorithm described in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span class="cmbx-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">26</span></a><span class="cmbx-12">28</span></a><span
class="cmr-12">]</span></span> <span class="cmbx-12">]</span></span> <span
class="cmr-12">is used. In this algorithm, each index </span><span class="cmbx-12">is used. In this algorithm, each index </span><span
class="cmmi-12">j </span><span class="cmmi-12">j </span><span
class="cmsy-10x-x-120">&#x2208; </span><span class="cmsy-10x-x-120">&#x2208; </span><span
class="cmr-12">&#x03A9;</span><sup><span class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span><span class="cmmi-8">k</span><span
class="cmr-8">+1</span></sup> <span class="cmr-8">+1</span></sup>
class="cmr-12">corresponds</span>
<span <span
class="cmr-12">to an aggregate &#x03A9;</span><sub><span class="cmbx-12">corresponds to an aggregate </span><span
class="cmr-12">&#x03A9;</span><sub><span
class="cmmi-8">j</span></sub><sup><span class="cmmi-8">j</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">of &#x03A9;</span><sup><span class="cmbx-12">of </span><span
class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">, consisting of a suitably chosen index </span><span class="cmbx-12">, consisting of a suitably chosen index</span>
<span
class="cmmi-12">i </span><span class="cmmi-12">i </span><span
class="cmsy-10x-x-120">&#x2208; </span><span class="cmsy-10x-x-120">&#x2208; </span><span
class="cmr-12">&#x03A9;</span><sup><span class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">and</span> class="cmbx-12">and indices that are (usually) contained in a strongly-coupled</span>
<span <span
class="cmr-12">indices that are (usually) contained in a strongly-coupled neighborood of </span><span class="cmbx-12">neighborood of </span><span
class="cmmi-12">i</span><span class="cmmi-12">i</span><span
class="cmr-12">,</span> class="cmbx-12">, i.e.,</span>
<span
class="cmr-12">i.e.,</span>
<table <table
class="equation"><tr><td> class="equation"><tr><td>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml13x.png" alt=" { &#x2218; -------} src="userhtml13x.png" alt=" { &#x2218; ------}
&#x03A9;kj &#x2282; N ki (&#x03B8;) = r &#x2208; &#x03A9;k : |akir| &#x003E; &#x03B8; |akiiakrr| &#x222A; {i} , &#x03A9;kj &#x2282; N ki (&#x03B8;) = r &#x2208; &#x03A9;k : |akir| &#x003E; &#x03B8; |akiiakrr| &#x222A; {i} ,
" class="math-display" ><a " class="math-display" ><a
id="x15-14007r3"></a></center></td><td class="equation-label"><span id="x15-14007r3"></a></center></td><td class="equation-label"><span
@ -154,53 +161,57 @@ class="cmr-12">(3)</span></td></tr></table>
<!--l. 160--><p class="nopar" > <!--l. 160--><p class="nopar" >
<span <span
class="cmr-12">for a given threshold </span><span class="cmbx-12">for a given threshold </span><span
class="cmmi-12">&#x03B8; </span><span class="cmmi-12">&#x03B8; </span><span
class="cmsy-10x-x-120">&#x2208; </span><span class="cmsy-10x-x-120">&#x2208; </span><span
class="cmr-12">[0</span><span class="cmr-12">[0</span><span
class="cmmi-12">, </span><span class="cmmi-12">, </span><span
class="cmr-12">1] (see</span><span class="cmr-12">1] </span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span class="cmbx-12">(see</span><span
class="cmr-12">[</span><a class="cmbx-12">&#x00A0;</span><span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">26</span></a><span class="cmbx-12">28</span></a><span
class="cmr-12">]</span></span> <span class="cmbx-12">]</span></span> <span
class="cmr-12">for the details). Since this algorithm has a</span> class="cmbx-12">for the details). Since this algorithm</span>
<span <span
class="cmr-12">sequential nature, a decoupled version of it is applied, where each processor</span> class="cmbx-12">has a sequential nature, a decoupled version of it is applied, where each</span>
<span <span
class="cmr-12">independently executes the algorithm on the set of indices assigned to it in the initial</span> class="cmbx-12">processor independently executes the algorithm on the set of indices</span>
<span <span
class="cmr-12">data distribution. This version is embarrassingly parallel, since it does not require any</span> class="cmbx-12">assigned to it in the initial data distribution. This version is embarrassingly</span>
<span <span
class="cmr-12">data communication. On the other hand, it may produce some nonuniform aggregates</span> class="cmbx-12">parallel, since it does not require any data communication. On the other</span>
<span <span
class="cmr-12">and is strongly dependent on the number of processors and on the initial</span> class="cmbx-12">hand, it may produce some nonuniform aggregates and is strongly</span>
<span <span
class="cmr-12">partitioning of the matrix </span><span class="cmbx-12">dependent on the number of processors and on the initial partitioning of</span>
<span
class="cmbx-12">the matrix </span><span
class="cmmi-12">A</span><span class="cmmi-12">A</span><span
class="cmr-12">. Nevertheless, this parallel algorithm has been chosen</span> class="cmbx-12">. Nevertheless, this parallel algorithm has been chosen for</span>
<span <span
class="cmr-12">for MLD2P4, since it has been shown to produce good results in practice</span> class="cmbx-12">MLD2P4, since it has been shown to produce good results in practice</span>
<span class="cite"><span <span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#Xaaecc_07"><span href="userhtmlli4.html#Xaaecc_07"><span
class="cmr-12">5</span></a><span class="cmbx-12">5</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#Xapnum_07"><span href="userhtmlli4.html#Xapnum_07"><span
class="cmr-12">7</span></a><span class="cmbx-12">7</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#XTUMINARO_TONG"><span href="userhtmlli4.html#XTUMINARO_TONG"><span
class="cmr-12">25</span></a><span class="cmbx-12">27</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<!--l. 172--><p class="indent" > <span <!--l. 172--><p class="indent" > <span
class="cmr-12">The prolongator </span><span class="cmbx-12">The prolongator </span><span
class="cmmi-12">P</span><sup><span class="cmmi-12">P</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is built starting from a tentative prolongator</span> <span class="bar-css"><span class="cmbx-12">is built starting from a tentative prolongator</span>
<span class="bar-css"><span
class="cmmi-12">P</span></span><sup><span class="cmmi-12">P</span></span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmsy-10x-x-120">&#x2208; </span><span class="cmsy-10x-x-120">&#x2208; </span><span
@ -211,41 +222,41 @@ class="cmsy-8">&#x00D7;</span><span
class="cmmi-8">n</span><sub><span class="cmmi-8">n</span><sub><span
class="cmmi-6">k</span><span class="cmmi-6">k</span><span
class="cmr-6">+1</span></sub></sup><span class="cmr-6">+1</span></sub></sup><span
class="cmr-12">,</span> class="cmbx-12">, defined as</span>
<span
class="cmr-12">defined as</span>
<table <table
class="equation"><tr><td> class="equation"><tr><td>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml14x.png" alt=" { k src="userhtml14x.png" alt=" { k
P¯k = (¯pkij), p¯kij = 1 if i &#x2208; &#x03A9; j, P¯k = (¯pk), ¯pk = 1 if i &#x2208; &#x03A9; j,
0 otherwise, ij ij 0 otherwise,
" class="math-display" ><a " class="math-display" ><a
id="x15-14008r4"></a></center></td><td class="equation-label"><span id="x15-14008r4"></a></center></td><td class="equation-label"><span
class="cmr-12">(4)</span></td></tr></table> class="cmr-12">(4)</span></td></tr></table>
<!--l. 181--><p class="nopar" > <!--l. 181--><p class="nopar" >
<span <span
class="cmr-12">where &#x03A9;</span><sub><span class="cmbx-12">where </span><span
class="cmr-12">&#x03A9;</span><sub><span
class="cmmi-8">j</span></sub><sup><span class="cmmi-8">j</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is the aggregate of &#x03A9;</span><sup><span class="cmbx-12">is the aggregate of </span><span
class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">corresponding to the index </span><span class="cmbx-12">corresponding to the index </span><span
class="cmmi-12">j </span><span class="cmmi-12">j </span><span
class="cmsy-10x-x-120">&#x2208; </span><span class="cmsy-10x-x-120">&#x2208; </span><span
class="cmr-12">&#x03A9;</span><sup><span class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span><span class="cmmi-8">k</span><span
class="cmr-8">+1</span></sup><span class="cmr-8">+1</span></sup><span
class="cmr-12">. </span><span class="cmbx-12">. </span><span
class="cmmi-12">P</span><sup><span class="cmmi-12">P</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is obtained</span> class="cmbx-12">is</span>
<span <span
class="cmr-12">by applying to</span> <span class="bar-css"><span class="cmbx-12">obtained by applying to</span> <span class="bar-css"><span
class="cmmi-12">P</span></span><sup><span class="cmmi-12">P</span></span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">a smoother </span><span class="cmbx-12">a smoother </span><span
class="cmmi-12">S</span><sup><span class="cmmi-12">S</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmsy-10x-x-120">&#x2208; </span><span class="cmsy-10x-x-120">&#x2208; </span><span
@ -255,45 +266,48 @@ class="cmmi-6">k</span></sub><span
class="cmsy-8">&#x00D7;</span><span class="cmsy-8">&#x00D7;</span><span
class="cmmi-8">n</span><sub><span class="cmmi-8">n</span><sub><span
class="cmmi-6">k</span></sub></sup><span class="cmmi-6">k</span></sub></sup><span
class="cmr-12">:</span> class="cmbx-12">:</span>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml15x.png" alt="Pk = Sk ¯Pk, " class="math-display" ></center> <span src="userhtml15x.png" alt="Pk = Sk ¯P k, " class="math-display" ></center>
class="cmr-12">in</span> <span
class="cmbx-12">in order to remove nonsmooth components from the range of the</span>
<span <span
class="cmr-12">order to remove nonsmooth components from the range of the prolongator, and hence</span> class="cmbx-12">prolongator, and hence to improve the convergence properties of the</span>
<span <span
class="cmr-12">to improve the convergence properties of the multilevel method</span><span class="cmbx-12">multilevel method</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span class="cmbx-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XBREZINA_VANEK"><span href="userhtmlli4.html#XBREZINA_VANEK"><span
class="cmr-12">2</span></a><span class="cmbx-12">2</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#XStuben_01"><span href="userhtmlli4.html#XStuben_01"><span
class="cmr-12">24</span></a><span class="cmbx-12">26</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">. A simple</span> class="cmbx-12">. A simple choice for </span><span
<span
class="cmr-12">choice for </span><span
class="cmmi-12">S</span><sup><span class="cmmi-12">S</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is the damped Jacobi smoother:</span> class="cmbx-12">is the damped Jacobi</span>
<span
class="cmbx-12">smoother:</span>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml16x.png" alt=" k k k -1 k src="userhtml16x.png" alt="Sk = I - &#x03C9;k(Dk )-1AkF,
S = I - &#x03C9; (D ) A F,
" class="math-display" ></center> " class="math-display" ></center>
<!--l. 195--><p class="nopar" > <span <!--l. 195--><p class="nopar" > <span
class="cmr-12">where </span><span class="cmbx-12">where </span><span
class="cmmi-12">D</span><sup><span class="cmmi-12">D</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is the diagonal matrix with the same diagonal entries as </span><span class="cmbx-12">is the diagonal matrix with the same diagonal entries as </span><span
class="cmmi-12">A</span><sup><span class="cmmi-12">A</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">, </span><span class="cmbx-12">,</span>
class="cmmi-12">A</span><sub>
<span <span
class="cmmi-12">A</span><sub><span
class="cmmi-8">F</span> </sub><sup><span class="cmmi-8">F</span> </sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">= (</span><span class="bar-css"><span class="cmr-12">= (</span><span class="bar-css"><span
@ -301,33 +315,37 @@ class="cmmi-12">a</span></span><sub>
<span <span
class="cmmi-8">ij</span></sub><sup><span class="cmmi-8">ij</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">) is</span> class="cmr-12">) </span><span
<span class="cmbx-12">is the filtered matrix defined as</span>
class="cmr-12">the filtered matrix defined as</span>
<table <table
class="equation"><tr><td> class="equation"><tr><td>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml17x.png" alt=" { k k &#x2211; src="userhtml17x.png" alt=" {
a¯kij = aij if j &#x2208; N i (&#x03B8;), (j &#x2044;= i), ¯akii = akii - (akij - ¯akij), ¯ak = akij if j &#x2208; N ki (&#x03B8;), (j &#x2044;= i), ¯ak = ak - &#x2211; (ak - ¯ak),
0 otherwise, j&#x2044;=i ij 0 otherwise, ii ii ij ij
j&#x2044;=i
" class="math-display" ><a " class="math-display" ><a
id="x15-14009r5"></a></center></td><td class="equation-label"><span id="x15-14009r5"></a></center></td><td class="equation-label"><span
class="cmr-12">(5)</span></td></tr></table> class="cmr-12">(5)</span></td></tr></table>
<!--l. 208--><p class="nopar" > <!--l. 208--><p class="nopar" >
<span <span
class="cmr-12">and </span><span class="cmbx-12">and </span><span
class="cmmi-12">&#x03C9;</span><sup><span class="cmmi-12">&#x03C9;</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is an approximation of 4</span><span class="cmbx-12">is an approximation of </span><span
class="cmr-12">4</span><span
class="cmmi-12">&#x2215;</span><span class="cmmi-12">&#x2215;</span><span
class="cmr-12">(3</span><span class="cmr-12">(3</span><span
class="cmmi-12">&#x03C1;</span><sup><span class="cmmi-12">&#x03C1;</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">), where </span><span class="cmr-12">)</span><span
class="cmbx-12">, where </span><span
class="cmmi-12">&#x03C1;</span><sup><span class="cmmi-12">&#x03C1;</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is the spectral radius of (</span><span class="cmbx-12">is the spectral radius of</span>
<span
class="cmr-12">(</span><span
class="cmmi-12">D</span><sup><span class="cmmi-12">D</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">)</span><sup><span class="cmr-12">)</span><sup><span
@ -336,60 +354,61 @@ class="cmr-8">1</span></sup><span
class="cmmi-12">A</span><sub> class="cmmi-12">A</span><sub>
<span <span
class="cmmi-8">F</span> </sub><sup><span class="cmmi-8">F</span> </sub><sup><span
class="cmmi-8">k</span></sup> class="cmmi-8">k</span></sup> <span class="cite"><span
<span class="cite"><span class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlli4.html#XBREZINA_VANEK"><span href="userhtmlli4.html#XBREZINA_VANEK"><span
class="cmr-12">2</span></a><span class="cmbx-12">2</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">. In MLD2P4 this approximation is obtained by using </span><span class="cmbx-12">. In MLD2P4 this approximation is obtained by using </span><span
class="cmsy-10x-x-120">&#x2225;</span><span class="cmsy-10x-x-120">&#x2225;</span><span
class="cmmi-12">A</span><sub><span class="cmmi-12">A</span><sub>
<span
class="cmmi-8">F</span> </sub><sup><span class="cmmi-8">F</span> </sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmsy-10x-x-120">&#x2225;</span><sub> class="cmsy-10x-x-120">&#x2225;</span><sub>
<span <span
class="cmsy-8">&#x221E;</span></sub> <span class="cmsy-8">&#x221E;</span></sub>
class="cmr-12">as an estimate of </span><span <span
class="cmbx-12">as an estimate of </span><span
class="cmmi-12">&#x03C1;</span><sup><span class="cmmi-12">&#x03C1;</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">.</span> class="cmbx-12">. Note that for systems coming from uniformly</span>
<span <span
class="cmr-12">Note that for systems coming from uniformly elliptic problems, filtering the matrix </span><span class="cmbx-12">elliptic problems, filtering the matrix </span><span
class="cmmi-12">A</span><sup><span class="cmmi-12">A</span><sup><span
class="cmmi-8">k</span></sup> class="cmmi-8">k</span></sup> <span
class="cmbx-12">has little or no effect, and</span>
<span <span
class="cmr-12">has little or no effect, and </span><span
class="cmmi-12">A</span><sup><span class="cmmi-12">A</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">can be used instead of </span><span class="cmbx-12">can be used instead of </span><span
class="cmmi-12">A</span><sub> class="cmmi-12">A</span><sub>
<span <span
class="cmmi-8">F</span> </sub><sup><span class="cmmi-8">F</span> </sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">. The latter choice is the</span> class="cmbx-12">. The latter choice is the default in</span>
<span <span
class="cmr-12">default in MLD2P4.</span> class="cmbx-12">MLD2P4.</span>
<!--l. 216--><div class="crosslinks"><p class="noindent"><span <!--l. 216--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu8.html" ><span href="userhtmlsu8.html" ><span
class="cmr-12">next</span></a><span class="cmbx-12">next</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu6.html" ><span href="userhtmlsu6.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu6.html#tailuserhtmlsu6.html" ><span href="userhtmlsu6.html#tailuserhtmlsu6.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu7.html" ><span href="userhtmlsu7.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html#userhtmlsu7.html" ><span href="userhtmlse4.html#userhtmlsu7.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 216--><p class="indent" > <a <!--l. 216--><p class="indent" > <a
id="tailuserhtmlsu7.html"></a> id="tailuserhtmlsu7.html"></a>
</body></html> </body></html>

@ -11,69 +11,73 @@
</head><body </head><body
> >
<!--l. 216--><div class="crosslinks"><p class="noindent"><span <!--l. 216--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu7.html" ><span href="userhtmlsu7.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="#tailuserhtmlsu8.html"><span href="#tailuserhtmlsu8.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html#userhtmlsu8.html" ><span href="userhtmlse4.html#userhtmlsu8.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">4.3 </span></span> <a class="cmbx-12">4.3 </span></span> <a
id="x16-150004.3"></a><span id="x16-150004.3"></a><span
class="cmr-12">Smoothers and coarsest-level solvers</span></h4> class="cmbx-12">Smoothers and coarsest-level solvers</span></h4>
<!--l. 218--><p class="noindent" ><span <!--l. 218--><p class="noindent" ><span
class="cmr-12">The smoothers implemented in MLD2P4 include the Jacobi and block-Jacobi methods,</span> class="cmbx-12">The smoothers implemented in MLD2P4 include the Jacobi and</span>
<span <span
class="cmr-12">a hybrid version of the forward and backward Gauss-Seidel methods, and the additive</span> class="cmbx-12">block-Jacobi methods, a hybrid version of the forward and backward</span>
<span <span
class="cmr-12">Schwarz (AS) ones (see, e.g., </span><span class="cite"><span class="cmbx-12">Gauss-Seidel methods, and the additive Schwarz (AS) ones (see, e.g.,</span>
class="cmr-12">[</span><a <span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XSaad_book"><span href="userhtmlli4.html#XSaad_book"><span
class="cmr-12">21</span></a><span class="cmbx-12">23</span></a><span
class="cmr-12">,</span><span class="cmbx-12">,</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlli4.html#Xdd2_96"><span href="userhtmlli4.html#Xdd2_96"><span
class="cmr-12">22</span></a><span class="cmbx-12">24</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">).</span> class="cmbx-12">).</span>
<!--l. 222--><p class="indent" > <span <!--l. 222--><p class="indent" > <span
class="cmr-12">The hybrid Gauss-Seidel version is considered because the original Gauss-Seidel</span> class="cmbx-12">The hybrid Gauss-Seidel version is considered because the original</span>
<span <span
class="cmr-12">method is inherently sequential. At each iteration of the hybrid version, each parallel</span> class="cmbx-12">Gauss-Seidel method is inherently sequential. At each iteration of the</span>
<span <span
class="cmr-12">process uses the most recent values of its own local variables and the values</span> class="cmbx-12">hybrid version, each parallel process uses the most recent values of its own</span>
<span <span
class="cmr-12">of the non-local variables computed at the previous iteration, obtained by</span> class="cmbx-12">local variables and the values of the non-local variables computed at the</span>
<span <span
class="cmr-12">exchanging data with other processes before the beginning of the current</span> class="cmbx-12">previous iteration, obtained by exchanging data with other processes before</span>
<span <span
class="cmr-12">iteration.</span> class="cmbx-12">the beginning of the current iteration.</span>
<!--l. 229--><p class="indent" > <span <!--l. 229--><p class="indent" > <span
class="cmr-12">In the AS methods, the index space &#x03A9;</span><sup><span class="cmbx-12">In the AS methods, the index space </span><span
class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is divided into </span><span class="cmbx-12">is divided into </span><span
class="cmmi-12">m</span><sub> class="cmmi-12">m</span><sub>
<span <span
class="cmmi-8">k</span></sub> <span class="cmmi-8">k</span></sub> <span
class="cmr-12">subsets &#x03A9;</span><sub><span class="cmbx-12">subsets </span><span
class="cmr-12">&#x03A9;</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">of</span> class="cmbx-12">of</span>
<span <span
class="cmr-12">size </span><span class="cmbx-12">size </span><span
class="cmmi-12">n</span><sub><span class="cmmi-12">n</span><sub><span
class="cmmi-8">k,i</span></sub><span class="cmmi-8">k,i</span></sub><span
class="cmr-12">, possibly overlapping. For each </span><span class="cmbx-12">, possibly overlapping. For each </span><span
class="cmmi-12">i </span><span class="cmmi-12">i </span><span
class="cmr-12">we consider the restriction operator</span> class="cmbx-12">we consider the restriction</span>
<span <span
class="cmbx-12">operator </span><span
class="cmmi-12">R</span><sub><span class="cmmi-12">R</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
@ -84,25 +88,27 @@ class="cmmi-6">k,i</span></sub><span
class="cmsy-8">&#x00D7;</span><span class="cmsy-8">&#x00D7;</span><span
class="cmmi-8">n</span><sub><span class="cmmi-8">n</span><sub><span
class="cmmi-6">k</span></sub></sup> <span class="cmmi-6">k</span></sub></sup> <span
class="cmr-12">that maps a vector </span><span class="cmbx-12">that maps a vector </span><span
class="cmmi-12">x</span><sup><span class="cmmi-12">x</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">to the vector </span><span class="cmbx-12">to the vector </span><span
class="cmmi-12">x</span><sub> class="cmmi-12">x</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">made of the components of</span> class="cmbx-12">made of the</span>
<span <span
class="cmbx-12">components of </span><span
class="cmmi-12">x</span><sup><span class="cmmi-12">x</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">with indices in &#x03A9;</span><sub> class="cmbx-12">with indices in </span><span
class="cmr-12">&#x03A9;</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">, and the prolongation operator </span><span class="cmbx-12">, and the prolongation operator</span>
class="cmmi-12">P</span><sub>
<span <span
class="cmmi-12">P</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">= (</span><span class="cmr-12">= (</span><span
@ -112,10 +118,9 @@ class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">)</span><sup><span class="cmr-12">)</span><sup><span
class="cmmi-8">T</span> </sup><span class="cmmi-8">T</span> </sup><span
class="cmr-12">. These</span> class="cmbx-12">. These operators are then used to build </span><span
class="cmmi-12">A</span><sub>
<span <span
class="cmr-12">operators are then used to build </span><span
class="cmmi-12">A</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">= </span><span class="cmr-12">= </span><span
@ -129,39 +134,41 @@ class="cmmi-12">P</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">, which is the restriction of</span> class="cmbx-12">, which is</span>
<span <span
class="cmbx-12">the restriction of </span><span
class="cmmi-12">A</span><sup><span class="cmmi-12">A</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">to the index space &#x03A9;</span><sub> class="cmbx-12">to the index space </span><span
class="cmr-12">&#x03A9;</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">. The classical AS preconditioner </span><span class="cmbx-12">. The classical AS preconditioner</span>
class="cmmi-12">M</span><sub>
<span <span
class="cmmi-12">M</span><sub><span
class="cmmi-8">AS</span></sub><sup><span class="cmmi-8">AS</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is defined</span> class="cmbx-12">is defined as</span>
<span
class="cmr-12">as</span>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml18x.png" alt=" m&#x2211;k src="userhtml18x.png" alt=" k -1 m&#x2211;k k k -1 k
(M AkS )-1 = Pki (Aki)-1Rki, (M AS) = Pi (A i) R i,
i=1 i=1
" class="math-display" ></center> " class="math-display" ></center>
<!--l. 241--><p class="nopar" > <span <!--l. 241--><p class="nopar" > <span
class="cmr-12">where </span><span class="cmbx-12">where </span><span
class="cmmi-12">A</span><sub><span class="cmmi-12">A</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is supposed to be nonsingular. We observe that an approximate inverse of</span> class="cmbx-12">is supposed to be nonsingular. We observe that an approximate</span>
<span <span
class="cmbx-12">inverse of </span><span
class="cmmi-12">A</span><sub><span class="cmmi-12">A</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">is usually considered instead of (</span><span class="cmbx-12">is usually considered instead of </span><span
class="cmr-12">(</span><span
class="cmmi-12">A</span><sub> class="cmmi-12">A</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
@ -169,47 +176,48 @@ class="cmmi-8">k</span></sup><span
class="cmr-12">)</span><sup><span class="cmr-12">)</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmr-12">. The setup of </span><span class="cmbx-12">. The setup of </span><span
class="cmmi-12">M</span><sub> class="cmmi-12">M</span><sub>
<span <span
class="cmmi-8">AS</span></sub><sup><span class="cmmi-8">AS</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup>
class="cmr-12">during the multilevel</span>
<span <span
class="cmr-12">build phase involves</span> class="cmbx-12">during the multilevel build phase involves</span>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">the definition of the index subspaces &#x03A9;</span><sub><span class="cmbx-12">the definition of the index subspaces </span><span
class="cmr-12">&#x03A9;</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">and of the corresponding operators</span> class="cmbx-12">and of the corresponding</span>
<span <span
class="cmbx-12">operators </span><span
class="cmmi-12">R</span><sub><span class="cmmi-12">R</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">(and </span><span class="cmbx-12">(and </span><span
class="cmmi-12">P</span><sub> class="cmmi-12">P</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">);</span> class="cmbx-12">);</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">the computation of the submatrices </span><span class="cmbx-12">the computation of the submatrices </span><span
class="cmmi-12">A</span><sub><span class="cmmi-12">A</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">;</span> class="cmbx-12">;</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">the computation of their inverses (usually approximated through some form</span> class="cmbx-12">the computation of their inverses (usually approximated through</span>
<span <span
class="cmr-12">of incomplete factorization).</span></li></ul> class="cmbx-12">some form of incomplete factorization).</span></li></ul>
<!--l. 253--><p class="noindent" ><span <!--l. 253--><p class="noindent" ><span
class="cmr-12">The computation of </span><span class="cmbx-12">The computation of </span><span
class="cmmi-12">z</span><sup><span class="cmmi-12">z</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">= </span><span class="cmr-12">= </span><span
@ -219,27 +227,27 @@ class="cmmi-8">AS</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmmi-12">w</span><sup><span class="cmmi-12">w</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">, with </span><span class="cmbx-12">, with </span><span
class="cmmi-12">w</span><sup><span class="cmmi-12">w</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmsy-10x-x-120">&#x2208; </span><span class="cmsy-10x-x-120">&#x2208; </span><span
class="msbm-10x-x-120">&#x211D;</span><sup><span class="msbm-10x-x-120">&#x211D;</span><sup><span
class="cmmi-8">n</span><sub><span class="cmmi-8">n</span><sub><span
class="cmmi-6">k</span></sub></sup><span class="cmmi-6">k</span></sub></sup><span
class="cmr-12">, during the multilevel application</span> class="cmbx-12">, during the multilevel</span>
<span <span
class="cmr-12">phase, requires</span> class="cmbx-12">application phase, requires</span>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">the restriction of </span><span class="cmbx-12">the restriction of </span><span
class="cmmi-12">w</span><sup><span class="cmmi-12">w</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">to the subspaces </span><span class="cmbx-12">to the subspaces </span><span
class="msbm-10x-x-120">&#x211D;</span><sup><span class="msbm-10x-x-120">&#x211D;</span><sup><span
class="cmmi-8">n</span><sub><span class="cmmi-8">n</span><sub><span
class="cmmi-6">k,i</span></sub></sup><span class="cmmi-6">k,i</span></sub></sup><span
class="cmr-12">, i.e.</span><span class="cmbx-12">, i.e.</span><span
class="cmr-12">&#x00A0;</span><span class="cmbx-12">&#x00A0;</span><span
class="cmmi-12">w</span><sub> class="cmmi-12">w</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
@ -251,10 +259,10 @@ class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmmi-12">w</span><sup><span class="cmmi-12">w</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">;</span> class="cmbx-12">;</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">the computation of the vectors </span><span class="cmbx-12">the computation of the vectors </span><span
class="cmmi-12">z</span><sub><span class="cmmi-12">z</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
@ -270,11 +278,11 @@ class="cmmi-12">w</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">;</span> class="cmbx-12">;</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmr-12">the prolongation and the sum of the previous vectors, i.e.</span><span class="cmbx-12">the prolongation and the sum of the previous vectors, i.e.</span><span
class="cmr-12">&#x00A0;</span><span class="cmbx-12">&#x00A0;</span><span
class="cmmi-12">z</span><sup><span class="cmmi-12">z</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">=</span> class="cmr-12">=</span>
@ -293,43 +301,47 @@ class="cmmi-12">z</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">.</span></li></ul> class="cmbx-12">.</span></li></ul>
<!--l. 262--><p class="noindent" ><span <!--l. 262--><p class="noindent" ><span
class="cmr-12">Variants of the classical AS method, which use modifications of the restriction and</span> class="cmbx-12">Variants of the classical AS method, which use modifications of the restriction</span>
<span <span
class="cmr-12">prolongation operators, are also implemented in MLD2P4. Among them, the Restricted</span> class="cmbx-12">and prolongation operators, are also implemented in MLD2P4. Among</span>
<span <span
class="cmr-12">AS (RAS) preconditioner usually outperforms the classical AS preconditioner in terms</span> class="cmbx-12">them, the Restricted AS (RAS) preconditioner usually outperforms</span>
<span <span
class="cmr-12">of convergence rate and of computation and communication time on parallel</span> class="cmbx-12">the classical AS preconditioner in terms of convergence rate and of</span>
<span <span
class="cmr-12">distributed-memory computers, and is therefore the most widely used among the AS</span> class="cmbx-12">computation and communication time on parallel distributed-memory</span>
<span <span
class="cmr-12">preconditioners</span><span class="cmbx-12">computers, and is therefore the most widely used among the AS</span>
class="cmr-12">&#x00A0;</span><span class="cite"><span <span
class="cmr-12">[</span><a class="cmbx-12">preconditioners</span><span
class="cmbx-12">&#x00A0;</span><span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XCAI_SARKIS"><span href="userhtmlli4.html#XCAI_SARKIS"><span
class="cmr-12">6</span></a><span class="cmbx-12">6</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<!--l. 270--><p class="indent" > <span <!--l. 270--><p class="indent" > <span
class="cmr-12">Direct solvers based on sparse LU factorizations, implemented in the third-party</span> class="cmbx-12">Direct solvers based on sparse LU factorizations, implemented in</span>
<span <span
class="cmr-12">libraries reported in Section</span><span class="cmbx-12">the third-party libraries reported in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu2.html#x9-80003.2"><span href="userhtmlsu2.html#x9-80003.2"><span
class="cmr-12">3.2</span><!--tex4ht:ref: sec:third-party --></a><span class="cmbx-12">3.2</span><!--tex4ht:ref: sec:third-party --></a><span
class="cmr-12">, can be applied as coarsest-level solvers by</span> class="cmbx-12">, can be applied as</span>
<span
class="cmbx-12">coarsest-level solvers by MLD2P4. Native inexact solvers based on</span>
<span <span
class="cmr-12">MLD2P4. Native inexact solvers based on incomplete LU factorizations, as well as</span> class="cmbx-12">incomplete LU factorizations, as well as Jacobi, hybrid (forward)</span>
<span <span
class="cmr-12">Jacobi, hybrid (forward) Gauss-Seidel, and block Jacobi preconditioners are</span> class="cmbx-12">Gauss-Seidel, and block Jacobi preconditioners are also available. Direct</span>
<span <span
class="cmr-12">also available. Direct solvers usually lead to more effective preconditioners in</span> class="cmbx-12">solvers usually lead to more effective preconditioners in terms of</span>
<span <span
class="cmr-12">terms of algorithmic scalability; however, this does not guarantee parallel</span> class="cmbx-12">algorithmic scalability; however, this does not guarantee parallel</span>
<span <span
class="cmr-12">efficiency.</span> class="cmbx-12">efficiency.</span>
@ -337,19 +349,19 @@ class="cmr-12">efficiency.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu7.html" ><span href="userhtmlsu7.html" ><span
class="cmr-12">prev</span></a><span class="cmbx-12">prev</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span
class="cmr-12">prev-tail</span></a><span class="cmbx-12">prev-tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlsu8.html" ><span href="userhtmlsu8.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse4.html#userhtmlsu8.html" ><span href="userhtmlse4.html#userhtmlsu8.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlsu8.html"></a> id="tailuserhtmlsu8.html"></a>
</body></html> </body></html>

@ -10,102 +10,107 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 122--><div class="crosslinks"><p class="noindent"><span <!--l. 109--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="#tailuserhtmlsu9.html"><span href="#tailuserhtmlsu9.html"><span
class="cmr-12">tail</span></a><span class="cmbx-12">tail</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse5.html#userhtmlsu9.html" ><span href="userhtmlse5.html#userhtmlsu9.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <h4 class="subsectionHead"><span class="titlemark"><span
class="cmr-12">5.1 </span></span> <a class="cmbx-12">5.1 </span></span> <a
id="x18-170005.1"></a><span id="x18-170005.1"></a><span
class="cmr-12">Examples</span></h4> class="cmbx-12">Examples</span></h4>
<!--l. 124--><p class="noindent" ><span <!--l. 111--><p class="noindent" ><span
class="cmr-12">The code reported in Figure</span><span class="cmbx-12">The code reported in Figure</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="#x18-170012"><span href="#x18-170012"><span
class="cmr-12">2</span><!--tex4ht:ref: fig:ex1 --></a> <span class="cmbx-12">2</span><!--tex4ht:ref: fig:ex1 --></a> <span
class="cmr-12">shows how to set and apply the default multilevel</span> class="cmbx-12">shows how to set and apply the default</span>
<span <span
class="cmr-12">preconditioner available in the real double precision version of MLD2P4 (see Table</span><span class="cmbx-12">multilevel preconditioner available in the real double precision version of</span>
class="cmr-12">&#x00A0;</span><a <span
class="cmbx-12">AMG4PSBLAS (see Table</span><span
class="cmbx-12">&#x00A0;</span><a
href="userhtmlse5.html#x17-160151"><span href="userhtmlse5.html#x17-160151"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span class="cmbx-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">).</span> class="cmbx-12">). This preconditioner is chosen by simply</span>
<span <span
class="cmr-12">This preconditioner is chosen by simply specifying </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">specifying </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#8217;ML&#8217;</span></span></span> <span class="cmtt-12">&#8217;ML&#8217;</span></span></span> <span
class="cmr-12">as the second argument of</span> class="cmbx-12">as the second argument of </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">P%init</span></span></span> <span class="cmtt-12">P%init</span></span></span> <span
class="cmr-12">(a call to </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">(a call to </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">P%set</span></span></span> <span class="cmtt-12">P%set</span></span></span> <span
class="cmr-12">is not needed) and is applied with the CG solver provided by</span> class="cmbx-12">is not</span>
<span <span
class="cmr-12">PSBLAS (the matrix of the system to be solved is assumed to be positive definite). As</span> class="cmbx-12">needed) and is applied with the CG solver provided by PSBLAS (the</span>
<span <span
class="cmr-12">previously observed, the modules </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">matrix of the system to be solved is assumed to be positive definite). As</span>
class="cmtt-12">psb_base_mod</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">mld_prec_mod</span></span></span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_krylov_mod</span></span></span>
<span <span
class="cmr-12">must be used by the example program.</span> class="cmbx-12">previously observed, the modules </span><span class="obeylines-h"><span class="verb"><span
<!--l. 134--><p class="indent" > <span class="cmtt-12">psb_base_mod</span></span></span><span
class="cmr-12">The part of the code concerning the reading and assembling of the sparse matrix</span> class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_prec_mod</span></span></span> <span
class="cmbx-12">and</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_krylov_mod</span></span></span> <span
class="cmbx-12">must be used by the example program.</span>
<!--l. 121--><p class="indent" > <span
class="cmbx-12">The part of the code concerning the reading and assembling of the</span>
<span <span
class="cmr-12">and the right-hand side vector, performed through the PSBLAS routines for sparse</span> class="cmbx-12">sparse matrix and the right-hand side vector, performed through the</span>
<span <span
class="cmr-12">matrix and vector management, is not reported here for brevity; the statements</span> class="cmbx-12">PSBLAS routines for sparse matrix and vector management, is not</span>
<span <span
class="cmr-12">concerning the deallocation of the PSBLAS data structure are neglected too. The</span> class="cmbx-12">reported here for brevity; the statements concerning the deallocation of the</span>
<span <span
class="cmr-12">complete code can be found in the example program file </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">PSBLAS data structure are neglected too. The complete code can be found</span>
class="cmtt-12">mld_dexample_ml.f90</span></span></span><span
class="cmr-12">,</span>
<span <span
class="cmr-12">in the directory </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">in the example program file </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_ml.f90</span></span></span><span
class="cmbx-12">, in the directory</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">examples/fileread</span></span></span> <span class="cmtt-12">examples/fileread</span></span></span> <span
class="cmr-12">of the MLD2P4 implementation (see</span> class="cmbx-12">of the AMG4PSBLAS implementation (see Section</span><span
<span class="cmbx-12">&#x00A0;</span><a
class="cmr-12">Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu5.html#x12-110003.5"><span href="userhtmlsu5.html#x12-110003.5"><span
class="cmr-12">3.5</span><!--tex4ht:ref: sec:ex_and_test --></a><span class="cmbx-12">3.5</span><!--tex4ht:ref: sec:ex_and_test --></a><span
class="cmr-12">). A sample test problem along with the relevant input data is available in</span> class="cmbx-12">).</span>
<span
class="cmbx-12">A sample test problem along with the relevant input data is available in</span>
<span class="obeylines-h"><span class="verb"><span <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">examples/fileread/runs</span></span></span><span class="cmtt-12">examples/fileread/runs</span></span></span><span
class="cmr-12">. For details on the use of the PSBLAS routines, see the</span> class="cmbx-12">. For details on the use of the PSBLAS routines, see</span>
<span <span
class="cmr-12">PSBLAS User&#8217;s Guide</span><span class="cmbx-12">the PSBLAS User&#8217;s Guide</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span class="cmbx-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmr-12">13</span></a><span class="cmbx-12">15</span></a><span
class="cmr-12">]</span></span><span class="cmbx-12">]</span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<!--l. 146--><p class="indent" > <span <!--l. 133--><p class="indent" > <span
class="cmr-12">The setup and application of the default multilevel preconditioner for the real single</span> class="cmbx-12">The setup and application of the default multilevel preconditioner for</span>
<span <span
class="cmr-12">precision and the complex, single and double precision, versions are obtained</span> class="cmbx-12">the real single precision and the complex, single and double precision,</span>
<span <span
class="cmr-12">with straightforward modifications of the previous example (see Section</span><span class="cmbx-12">versions are obtained with straightforward modifications of the previous</span>
class="cmr-12">&#x00A0;</span><a <span
class="cmbx-12">example (see Section</span><span
class="cmbx-12">&#x00A0;</span><a
href="userhtmlse6.html#x19-180006"><span href="userhtmlse6.html#x19-180006"><span
class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a> <span class="cmbx-12">6</span><!--tex4ht:ref: sec:userinterface --></a> <span
class="cmr-12">for</span> class="cmbx-12">for details). If these versions are installed, the</span>
<span <span
class="cmr-12">details). If these versions are installed, the corresponding codes are available in</span> class="cmbx-12">corresponding codes are available in </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">examples/fileread/</span></span></span><span class="cmtt-12">examples/fileread/</span></span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<!--l. 152--><p class="indent" > <hr class="figure"><div class="figure" <!--l. 139--><p class="indent" > <hr class="figure"><div class="figure"
> >
@ -117,13 +122,13 @@ class="cmr-12">.</span>
<div class="center" <div class="center"
> >
<!--l. 153--><p class="noindent" > <!--l. 140--><p class="noindent" >
<div class="minipage"><div class="verbatim" id="verbatim-6"> <div class="minipage"><div class="verbatim" id="verbatim-6">
&#x00A0;&#x00A0;use&#x00A0;psb_base_mod &#x00A0;&#x00A0;use&#x00A0;psb_base_mod
&#x00A0;<br />&#x00A0;&#x00A0;use&#x00A0;mld_prec_mod &#x00A0;<br />&#x00A0;&#x00A0;use&#x00A0;amg_prec_mod
&#x00A0;<br />&#x00A0;&#x00A0;use&#x00A0;psb_krylov_mod &#x00A0;<br />&#x00A0;&#x00A0;use&#x00A0;psb_krylov_mod
&#x00A0;<br />...&#x00A0;... &#x00A0;<br />...&#x00A0;...
&#x00A0;<br />! &#x00A0;<br />!
@ -132,7 +137,7 @@ class="cmr-12">.</span>
&#x00A0;<br />!&#x00A0;sparse&#x00A0;matrix&#x00A0;descriptor &#x00A0;<br />!&#x00A0;sparse&#x00A0;matrix&#x00A0;descriptor
&#x00A0;<br />&#x00A0;&#x00A0;type(psb_desc_type)&#x00A0;&#x00A0;&#x00A0;::&#x00A0;desc_A &#x00A0;<br />&#x00A0;&#x00A0;type(psb_desc_type)&#x00A0;&#x00A0;&#x00A0;::&#x00A0;desc_A
&#x00A0;<br />!&#x00A0;preconditioner &#x00A0;<br />!&#x00A0;preconditioner
&#x00A0;<br />&#x00A0;&#x00A0;type(mld_dprec_type)&#x00A0;&#x00A0;::&#x00A0;P &#x00A0;<br />&#x00A0;&#x00A0;type(amg_dprec_type)&#x00A0;&#x00A0;::&#x00A0;P
&#x00A0;<br />!&#x00A0;right-hand&#x00A0;side&#x00A0;and&#x00A0;solution&#x00A0;vectors &#x00A0;<br />!&#x00A0;right-hand&#x00A0;side&#x00A0;and&#x00A0;solution&#x00A0;vectors
&#x00A0;<br />&#x00A0;&#x00A0;type(psb_d_vect_type)&#x00A0;::&#x00A0;b,&#x00A0;x &#x00A0;<br />&#x00A0;&#x00A0;type(psb_d_vect_type)&#x00A0;::&#x00A0;b,&#x00A0;x
&#x00A0;<br />...&#x00A0;... &#x00A0;<br />...&#x00A0;...
@ -174,7 +179,7 @@ class="cmr-12">.</span>
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_exit(ictxt) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_exit(ictxt)
&#x00A0;<br />&#x00A0;&#x00A0;stop &#x00A0;<br />&#x00A0;&#x00A0;stop
</div> </div>
<!--l. 208--><p class="nopar" > <!--l. 195--><p class="nopar" >
</div> </div>
@ -185,80 +190,86 @@ class="content">setup and application of the default multilevel preconditioner (
<!--l. 214--><p class="indent" > </div><hr class="endfigure"> <!--l. 201--><p class="indent" > </div><hr class="endfigure">
<!--l. 216--><p class="indent" > <span <!--l. 203--><p class="indent" > <span
class="cmr-12">Different versions of the multilevel preconditioner can be obtained by changing the</span> class="cmbx-12">Different versions of the multilevel preconditioner can be obtained by</span>
<span
class="cmbx-12">changing the default values of the preconditioner parameters. The code</span>
<span <span
class="cmr-12">default values of the preconditioner parameters. The code reported in Figure</span><span class="cmbx-12">reported in Figure</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="#x18-170023"><span href="#x18-170023"><span
class="cmr-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span class="cmbx-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmr-12">shows</span> class="cmbx-12">shows how to set a V-cycle preconditioner which</span>
<span <span
class="cmr-12">how to set a V-cycle preconditioner which applies 1 block-Jacobi sweep as pre- and</span> class="cmbx-12">applies 1 block-Jacobi sweep as pre- and post-smoother, and solves the</span>
<span <span
class="cmr-12">post-smoother, and solves the coarsest-level system with 8 block-Jacobi sweeps. Note</span> class="cmbx-12">coarsest-level system with 8 block-Jacobi sweeps. Note that the ILU(0)</span>
<span <span
class="cmr-12">that the ILU(0) factorization (plus triangular solve) is used as local solver for the</span> class="cmbx-12">factorization (plus triangular solve) is used as local solver for the</span>
<span <span
class="cmr-12">block-Jacobi sweeps, since this is the default associated with block-Jacobi and set</span> class="cmbx-12">block-Jacobi sweeps, since this is the default associated with block-Jacobi</span>
<span <span
class="cmr-12">by</span><span class="cmbx-12">and set by</span><span
class="cmr-12">&#x00A0;</span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">&#x00A0;</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">P%init</span></span></span><span class="cmtt-12">P%init</span></span></span><span
class="cmr-12">. Furthermore, specifying block-Jacobi as coarsest-level solver implies that</span> class="cmbx-12">. Furthermore, specifying block-Jacobi as coarsest-level</span>
<span <span
class="cmr-12">the coarsest-level matrix is distributed among the processes. Figure</span><span class="cmbx-12">solver implies that the coarsest-level matrix is distributed among the</span>
class="cmr-12">&#x00A0;</span><a <span
class="cmbx-12">processes. Figure</span><span
class="cmbx-12">&#x00A0;</span><a
href="#x18-170034"><span href="#x18-170034"><span
class="cmr-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span class="cmbx-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmr-12">shows how to set</span> class="cmbx-12">shows how to set a W-cycle preconditioner which</span>
<span <span
class="cmr-12">a W-cycle preconditioner which applies 2 hybrid Gauss-Seidel sweeps as pre- and</span> class="cmbx-12">applies 2 hybrid Gauss-Seidel sweeps as pre- and post-smoother, and solves</span>
<span <span
class="cmr-12">post-smoother, and solves the coarsest-level system with the multifrontal LU</span> class="cmbx-12">the coarsest-level system with the multifrontal LU factorization</span>
<span <span
class="cmr-12">factorization implemented in MUMPS. It is specified that the coarsest-level matrix is</span> class="cmbx-12">implemented in MUMPS. It is specified that the coarsest-level matrix is</span>
<span <span
class="cmr-12">distributed, since MUMPS can be used on both replicated and distributed matrices,</span> class="cmbx-12">distributed, since MUMPS can be used on both replicated and distributed</span>
<span <span
class="cmr-12">and by default it is used on replicated ones. The code fragments shown in</span> class="cmbx-12">matrices, and by default it is used on replicated ones. The code fragments</span>
<span <span
class="cmr-12">Figures</span><span class="cmbx-12">shown in Figures</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="#x18-170023"><span href="#x18-170023"><span
class="cmr-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span class="cmbx-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmr-12">and </span><a class="cmbx-12">and </span><a
href="#x18-170034"><span href="#x18-170034"><span
class="cmr-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span class="cmbx-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmr-12">are included in the example program file </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">are included in the example program file</span>
class="cmtt-12">mld_dexample_ml.f90</span></span></span> <span class="obeylines-h"><span class="verb"><span
<span class="cmtt-12">amg_dexample_ml.f90</span></span></span> <span
class="cmr-12">too.</span> class="cmbx-12">too.</span>
<!--l. 240--><p class="indent" > <span <!--l. 227--><p class="indent" > <span
class="cmr-12">Finally, Figure</span><span class="cmbx-12">Finally, Figure</span><span
class="cmr-12">&#x00A0;</span><a class="cmbx-12">&#x00A0;</span><a
href="#x18-170045"><span href="#x18-170045"><span
class="cmr-12">5</span><!--tex4ht:ref: fig:ex4 --></a> <span class="cmbx-12">5</span><!--tex4ht:ref: fig:ex4 --></a> <span
class="cmr-12">shows the setup of a one-level additive Schwarz preconditioner,</span> class="cmbx-12">shows the setup of a one-level additive Schwarz</span>
<span <span
class="cmr-12">i.e., RAS with overlap 2. Note also that a Krylov method different from CG</span> class="cmbx-12">preconditioner, i.e., RAS with overlap 2. Note also that a Krylov method</span>
<span <span
class="cmr-12">must be used to solve the preconditioned system, since the preconditione in</span> class="cmbx-12">different from CG must be used to solve the preconditioned system, since</span>
<span <span
class="cmr-12">nonsymmetric. The corresponding example program is available in the file</span> class="cmbx-12">the preconditione in nonsymmetric. The corresponding example program is</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">mld_dexample_1lev.f90</span></span></span><span
class="cmr-12">.</span>
<!--l. 247--><p class="indent" > <span
class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix and</span>
<span <span
class="cmr-12">the right-hand side are generated by discretizing a PDE with Dirichlet boundary</span> class="cmbx-12">available in the file </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_1lev.f90</span></span></span><span
class="cmbx-12">.</span>
<!--l. 234--><p class="indent" > <span
class="cmbx-12">For all the previous preconditioners, example programs where the sparse</span>
<span <span
class="cmr-12">conditions are also available in the directory </span><span class="obeylines-h"><span class="verb"><span class="cmbx-12">matrix and the right-hand side are generated by discretizing a PDE with</span>
<span
class="cmbx-12">Dirichlet boundary conditions are also available in the directory</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">examples/pdegen</span></span></span><span class="cmtt-12">examples/pdegen</span></span></span><span
class="cmr-12">.</span> class="cmbx-12">.</span>
<!--l. 261--><p class="indent" > <hr class="figure"><div class="figure" <!--l. 238--><p class="indent" > <hr class="figure"><div class="figure"
> >
@ -270,7 +281,7 @@ class="cmr-12">.</span>
<div class="center" <div class="center"
> >
<!--l. 262--><p class="noindent" > <!--l. 239--><p class="noindent" >
<div class="minipage"><div class="verbatim" id="verbatim-7"> <div class="minipage"><div class="verbatim" id="verbatim-7">
...&#x00A0;... ...&#x00A0;...
&#x00A0;<br />!&#x00A0;build&#x00A0;a&#x00A0;V-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;1&#x00A0;block-Jacobi&#x00A0;sweep&#x00A0;(with &#x00A0;<br />!&#x00A0;build&#x00A0;a&#x00A0;V-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;1&#x00A0;block-Jacobi&#x00A0;sweep&#x00A0;(with
@ -284,7 +295,7 @@ class="cmr-12">.</span>
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
&#x00A0;<br />...&#x00A0;... &#x00A0;<br />...&#x00A0;...
</div> </div>
<!--l. 277--><p class="nopar" ></div> <!--l. 254--><p class="nopar" ></div>
<br /> <div class="caption" <br /> <div class="caption"
><span class="id">Figure&#x00A0;3: </span><span ><span class="id">Figure&#x00A0;3: </span><span
class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:label?: x18-170023 --> class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:label?: x18-170023 -->
@ -292,8 +303,8 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
<!--l. 283--><p class="indent" > </div><hr class="endfigure"> <!--l. 260--><p class="indent" > </div><hr class="endfigure">
<!--l. 285--><p class="indent" > <hr class="figure"><div class="figure" <!--l. 262--><p class="indent" > <hr class="figure"><div class="figure"
> >
@ -305,7 +316,7 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
<div class="center" <div class="center"
> >
<!--l. 286--><p class="noindent" > <!--l. 263--><p class="noindent" >
<div class="minipage"><div class="verbatim" id="verbatim-8"> <div class="minipage"><div class="verbatim" id="verbatim-8">
...&#x00A0;... ...&#x00A0;...
&#x00A0;<br />!&#x00A0;build&#x00A0;a&#x00A0;W-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;2&#x00A0;hybrid&#x00A0;Gauss-Seidel&#x00A0;sweeps &#x00A0;<br />!&#x00A0;build&#x00A0;a&#x00A0;W-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;2&#x00A0;hybrid&#x00A0;Gauss-Seidel&#x00A0;sweeps
@ -321,7 +332,7 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
&#x00A0;<br />...&#x00A0;... &#x00A0;<br />...&#x00A0;...
</div> </div>
<!--l. 303--><p class="nopar" ></div> <!--l. 280--><p class="nopar" ></div>
<br /> <div class="caption" <br /> <div class="caption"
><span class="id">Figure&#x00A0;4: </span><span ><span class="id">Figure&#x00A0;4: </span><span
class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:label?: x18-170034 --> class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:label?: x18-170034 -->
@ -329,8 +340,8 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
<!--l. 308--><p class="indent" > </div><hr class="endfigure"> <!--l. 285--><p class="indent" > </div><hr class="endfigure">
<!--l. 310--><p class="indent" > <hr class="figure"><div class="figure" <!--l. 287--><p class="indent" > <hr class="figure"><div class="figure"
> >
@ -342,7 +353,7 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
<div class="center" <div class="center"
> >
<!--l. 311--><p class="noindent" > <!--l. 288--><p class="noindent" >
<div class="minipage"><div class="verbatim" id="verbatim-9"> <div class="minipage"><div class="verbatim" id="verbatim-9">
...&#x00A0;... ...&#x00A0;...
&#x00A0;<br />!&#x00A0;set&#x00A0;RAS&#x00A0;with&#x00A0;overlap&#x00A0;2&#x00A0;and&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;local&#x00A0;blocks &#x00A0;<br />!&#x00A0;set&#x00A0;RAS&#x00A0;with&#x00A0;overlap&#x00A0;2&#x00A0;and&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;local&#x00A0;blocks
@ -353,7 +364,7 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
&#x00A0;<br />!&#x00A0;solve&#x00A0;Ax=b&#x00A0;with&#x00A0;preconditioned&#x00A0;BiCGSTAB &#x00A0;<br />!&#x00A0;solve&#x00A0;Ax=b&#x00A0;with&#x00A0;preconditioned&#x00A0;BiCGSTAB
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_krylov(&#8217;BICGSTAB&#8217;,A,P,b,x,tol,desc_A,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_krylov(&#8217;BICGSTAB&#8217;,A,P,b,x,tol,desc_A,info)
</div> </div>
<!--l. 323--><p class="nopar" ></div> <!--l. 300--><p class="nopar" ></div>
<br /> <div class="caption" <br /> <div class="caption"
><span class="id">Figure&#x00A0;5: </span><span ><span class="id">Figure&#x00A0;5: </span><span
class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x18-170045 --> class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x18-170045 -->
@ -361,7 +372,7 @@ class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex
<!--l. 328--><p class="indent" > </div><hr class="endfigure"> <!--l. 305--><p class="indent" > </div><hr class="endfigure">
@ -369,13 +380,13 @@ class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmbx-12">[</span><a
href="userhtmlsu9.html" ><span href="userhtmlsu9.html" ><span
class="cmr-12">front</span></a><span class="cmbx-12">front</span></a><span
class="cmr-12">] [</span><a class="cmbx-12">] [</span><a
href="userhtmlse5.html#userhtmlsu9.html" ><span href="userhtmlse5.html#userhtmlsu9.html" ><span
class="cmr-12">up</span></a><span class="cmbx-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmbx-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlsu9.html"></a> id="tailuserhtmlsu9.html"></a>
</body></html> </body></html>

File diff suppressed because one or more lines are too long

@ -140,7 +140,7 @@ PDF = $(join $(BASEFILE),.pdf)
PS = $(join $(BASEFILE),.ps) PS = $(join $(BASEFILE),.ps)
GXS = $(join $(BASEFILE),.gxs) GXS = $(join $(BASEFILE),.gxs)
GLX = $(join $(BASEFILE),.glx) GLX = $(join $(BASEFILE),.glx)
TARGETPDF= ../mld2p4-2.2-guide.pdf TARGETPDF= ../amg4psblas_1.0-guide.pdf
BASEHTML = $(patsubst %.tex,%,$(HTMLFILE)) BASEHTML = $(patsubst %.tex,%,$(HTMLFILE))
HTML = $(join $(BASEHTML),.html) HTML = $(join $(BASEHTML),.html)
HTMLDIR = ../html HTMLDIR = ../html

@ -1,22 +1,22 @@
\section*{Abstract} \section*{Abstract}
\addcontentsline{toc}{section}{Abstract} \addcontentsline{toc}{section}{Abstract}
\textsc{MLD2P4 (MultiLevel Domain Decomposition Parallel Preconditioners Package \textsc{AMG4PSBLAS (Algebraic MultiGrid Preconditioners Package
based on PSBLAS}) is a package of parallel algebraic multilevel preconditioners. based on PSBLAS}) is a package of parallel algebraic multilevel preconditioners included in the PSCToolkit (Parallel Sparse Computation Toolkit) software framework.
The first release of MLD2P4 made available multilevel additive and hybrid Schwarz It is a progress of a software development project started in 2007, named MLD2P4, which implemented a multilevel version of some domain decomposition preconditioners of additive-Schwarz type and was based on a parallel decoupled version of the well known smoothed
preconditioners, as well as one-level additive Schwarz preconditioners. The package aggregation method to generate the multilevel hierarchy of coarser matrices. In the last years, within the context of the EU-H2020 EoCoE project (Energy Oriented Center of Excellence), the package was extended including new algorithms and functionalities for setup and application of new AMG preconditioners with the final aims of improving efficiency and scalability when tens of thousands cores are
has been extended to include further multilevel cycles and smoothers widely used in used and of boosting reliability in dealing with general symmetric positive definite linear systems. Due to the significant number of changes and the increase in scope, we decided to rename the package as AMG4PSBLAS.
multigrid methods. In the multilevel case, a purely algebraic approach is applied to
generate coarse-level corrections, so that no geometric background is needed
concerning the matrix to be preconditioned. The matrix is assumed to be square,
real or complex.
MLD2P4 has been designed to provide scalable and easy-to-use preconditioners AMG4PSBLAS has been designed to provide scalable and easy-to-use preconditioners
in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms) in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)
computational framework and can be used in conjuction with the Krylov solvers computational framework and can be used in conjuction with the Krylov solvers
available in this framework. MLD2P4 enables the user to easily specify different available in this framework.
features of an algebraic multilevel preconditioner, thus allowing to search Our package is based on a completely algebraic approach and users level interfaces
for the ``best'' preconditioner for the problem at hand. assume that the system matrix and preconditioners are represented as PSBLAS
distributed sparse matrices.
AMG4PSBLAS enables the user to easily specify different
features of an algebraic multilevel preconditioner, thus allowing to experiment
with different preconditioners for the problem and parallel computers at hand.
The package employs object-oriented design techniques in The package employs object-oriented design techniques in
Fortran~2003, with interfaces to additional third party libraries Fortran~2003, with interfaces to additional third party libraries
@ -27,4 +27,4 @@ paradigm; the inter-process communication is based on MPI and
is managed mainly through PSBLAS. is managed mainly through PSBLAS.
This guide provides a brief description of the functionalities and This guide provides a brief description of the functionalities and
the user interface of MLD2P4. the user interface of AMG4PSBLAS.

@ -68,6 +68,16 @@ P.~D'Ambra, D.~di~Serafino, S.~Filippone,
Algebraic Domain Decomposition Preconditioners Algebraic Domain Decomposition Preconditioners
in Fortran 95}, ACM Trans. Math. Softw., 37(3), 2010, art. 30. in Fortran 95}, ACM Trans. Math. Softw., 37(3), 2010, art. 30.
% %
\bibitem{BDDF2007}
A.~Buttari, P.~D'Ambra, D.~di Serafino, S.~Filippone,
\emph{2{LEV}-{D}2{P}4: a Package of High-Performance Preconditioners
for Scientific and Engineering Applications}, Appl. Algebra Engrg. Comm. Comput.,
18(3), 2007, 223--239.
%
\bibitem{DDF2020}
P.~D'Ambra, F~Durastante, S.~Filippone,
\emph{AMG preconditioners for Linear Solvers towards Extreme Scale}, 2020, arXiv:2006.16147v2.
%
\bibitem{UMFPACK} \bibitem{UMFPACK}
T.~A.~Davis, T.~A.~Davis,
{\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal {\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
@ -173,5 +183,15 @@ R.~S.~Tuminaro, C.~Tong,
P.~Van\v{e}k, J.~Mandel, M.~Brezina, P.~Van\v{e}k, J.~Mandel, M.~Brezina,
{\em Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems}, {\em Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems},
Computing, 56 (3) 1996, 179--196. Computing, 56 (3) 1996, 179--196.
%
\bibitem{DV2013}
P.~D'Ambra and P.\,S.~Vassilevski,
{\em Adaptive AMG with coarsening based on compatible weighted matching},
Computing and Visualization in Science, 16, (2013) 59--76.
%
\bibitem{DFV2018}
P.~D'Ambra, S.~Filippone and P.\,S.~Vassilevski,
{\em BootCMatch: a software package for bootstrap AMG based on graph weighted matching},
ACM Transactions on Mathematical Software, 44, (2018) 39:1--39:25.
%
\end{thebibliography} \end{thebibliography}

@ -1,13 +1,13 @@
\section{Configuring and Building MLD2P4\label{sec:building}} \section{Configuring and Building AMG4PSBLAS\label{sec:building}}
\markboth{\textsc{MLD2P4 User's and Reference Guide}} \markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
{\textsc{\ref{sec:building} Configuring and Building MLD2P4}} {\textsc{\ref{sec:building} Configuring and Building AMG4PSBLAS}}
In order to build MLD2P4 it is necessary to set up a Makefile with appropriate In order to build AMG4PSBLAS it is necessary to set up a Makefile with appropriate
system-dependent variables; this is done by means of the \verb|configure| system-dependent variables; this is done by means of the \verb|configure|
script. The distribution also includes the autoconf and automake script. The distribution also includes the autoconf and automake
sources employed to generate the script, but usually this is not needed sources employed to generate the script, but usually this is not needed
to build the software. to build the software.
MLD2P4 is implemented almost entirely in Fortran~2003, with some AMG4PSBLAS is implemented almost entirely in Fortran~2003, with some
interfaces to external libraries in C; the Fortran compiler interfaces to external libraries in C; the Fortran compiler
must support the Fortran~2003 standard plus the extension \verb|MOLD=| must support the Fortran~2003 standard plus the extension \verb|MOLD=|
feature, which enhances the usability of \verb|ALLOCATE|. feature, which enhances the usability of \verb|ALLOCATE|.
@ -17,13 +17,13 @@ recommend to use at least version 4.8.
The software defines data types and interfaces for The software defines data types and interfaces for
real and complex data, in both single and double precision. real and complex data, in both single and double precision.
Building MLD2P4 requires some base libraries (see Section~\ref{sec:prerequisites}); Building AMG4PSBLAS requires some base libraries (see Section~\ref{sec:prerequisites});
interfaces to optional third-party libraries, which extend the functionalities of MLD2P4 interfaces to optional third-party libraries, which extend the functionalities of AMG4PSBLAS
(see Section~\ref{sec:third-party}), are also available. Many Linux distributions (see Section~\ref{sec:third-party}), are also available. Many Linux distributions
(e.g., Ubuntu, Fedora, CentOS) provide precompiled packages for the prerequisite and (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 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 ``developer'' part; in order to build AMG4PSBLAS you need both. A description of the base and
optional software used by MLD2P4 is given in the next sections. optional software used by AMG4PSBLAS is given in the next sections.
\subsection{Prerequisites\label{sec:prerequisites}} \subsection{Prerequisites\label{sec:prerequisites}}
@ -36,9 +36,9 @@ The following base libraries are needed:
may be employed. The reference BLAS from Netlib may be employed. The reference BLAS from Netlib
(\url{www.netlib.org/blas}) are meant to define the standard (\url{www.netlib.org/blas}) are meant to define the standard
behaviour of the BLAS interface, so they are not optimized for any behaviour of the BLAS interface, so they are not optimized for any
particular plaftorm, and should only be used as a last particular platform, and should only be used as a last
resort. Note that BLAS computations form a relatively small part of resort. Note that BLAS computations form a relatively small part of
the MLD2P4/PSBLAS computations; they are however critical when using the AMG4PSBLAS/PSBLAS computations; they are however critical when using
preconditioners based on MUMPS, UMFPACK or SuperLU third party preconditioners based on MUMPS, UMFPACK or SuperLU third party
libraries. Note that UMFPACK requires a full LAPACK library; our libraries. Note that UMFPACK requires a full LAPACK library; our
experience is that configuring ATLAS for building full LAPACK does not experience is that configuring ATLAS for building full LAPACK does not
@ -49,14 +49,14 @@ in the make.inc file of the LAPACK library.
\item[MPI] \cite{MPI2,MPI1} A version of MPI is available on most \item[MPI] \cite{MPI2,MPI1} A version of MPI is available on most
high-performance computing systems. high-performance computing systems.
\item[PSBLAS] \cite{PSBLASGUIDE,psblas_00} Parallel Sparse BLAS (PSBLAS) is \item[PSBLAS] \cite{PSBLASGUIDE,psblas_00} Parallel Sparse BLAS (PSBLAS) is
available from \url{github.com/sfilippone/psblas3}; version available from \url{github.com/sfilippone/psblas3} ?? {\bf Mettere tutto sotto psctoolkit}; version
3.5.0 (or later) is required. Indeed, all the prerequisites 3.5.0 (or later) is required. Indeed, all the prerequisites
listed so far are also prerequisites of PSBLAS. listed so far are also prerequisites of PSBLAS.
\end{description} \end{description}
Please note that the four previous libraries must have Fortran Please note that the four previous libraries must have Fortran
interfaces compatible with MLD2P4; interfaces compatible with AMG4PSBLAS;
usually this means that they should all be built with the same usually this means that they should all be built with the same
compiler as MLD2P4. compiler as AMG4PSBLAS.
\subsection{Optional third party libraries\label{sec:third-party}} \subsection{Optional third party libraries\label{sec:third-party}}
@ -97,10 +97,13 @@ for multilevel preconditioners may change to reflect their presence.
\subsection{Configuration options} \subsection{Configuration options}
In order to build MLD2P4, the first step is to use the \verb|configure| script In order to build AMG4PSBLAS, the first step is to use the \verb|configure| script
in the main directory to generate the necessary makefile. in the main directory to generate the necessary makefile.
%\textbf{Sono necessarie le parentesi intorno a s?} %\textbf{Sono necessarie le parentesi intorno a s?}
\bf{DA RISCRIVERE}
As a minimal example consider the following: As a minimal example consider the following:
\begin{verbatim} \begin{verbatim}
./configure --with-psblas=PSB-INSTALL-DIR ./configure --with-psblas=PSB-INSTALL-DIR
@ -309,16 +312,8 @@ make install
\subsection{Bug reporting} \subsection{Bug reporting}
If you find any bugs in our codes, please report them through our If you find any bugs in our codes, please report them through our
issues page on \\[2mm] issues page on \\[2mm]
\url{https://github.com/sfilippone/mld2p4-2/issues}\\ \url{https://github.com/psctoolkit/amg4psblas/issues}\\
% please let us know at
%\begin{rawhtml}
%<a href="mailto:bugreport@mld2p4.it">
%\end{rawhtml}
%\texttt{bugreport@mld2p4.it}
%\begin{rawhtml}
%</a>
%\end{rawhtml}
%;
To enable us to track the bug, please provide a log from the failing To enable us to track the bug, please provide a log from the failing
application, the test conditions, and ideally a self-contained test application, the test conditions, and ideally a self-contained test
program reproducing the issue. program reproducing the issue.
@ -331,7 +326,7 @@ both of them are further divided into \verb|fileread| and
\item[\tt examples] contains a set of simple example programs with a \item[\tt examples] contains a set of simple example programs with a
predefined choice of preconditioners, selectable via integer predefined choice of preconditioners, selectable via integer
values. These are intended to get an acquaintance with the values. These are intended to get an acquaintance with the
multilevel preconditioners available in MLD2P4. multilevel preconditioners available in AMG4PSBLAS.
\item[\tt tests] contains a set of more sophisticated examples that \item[\tt tests] contains a set of more sophisticated examples that
will allow the user, via the input files in the \verb|runs| will allow the user, via the input files in the \verb|runs|
subdirectories, to experiment with the full range of preconditioners subdirectories, to experiment with the full range of preconditioners

@ -1,11 +1,11 @@
\section{Code Distribution\label{sec:distribution}} \section{Code Distribution\label{sec:distribution}}
\markboth{\textsc{MLD2P4 User's and Reference Guide}} \markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
{\textsc{\ref{sec:distribution} Code Distribution}} {\textsc{\ref{sec:distribution} Code Distribution}}
\noindent \noindent
MLD2P4 is available from the web site AMG4PSBLAS is available from the web site
\begin{quotation} \begin{quotation}
\texttt{https://github.com/sfilippone/mld2p4-2} \texttt{https://github.com/psctoolkit/amg4psblas}
\end{quotation} \end{quotation}
where contact points for further information can be also found. where contact points for further information can be also found.
@ -17,21 +17,12 @@ account when treating derived works.
The library defines a version string with the The library defines a version string with the
constant constant
\[ \verb|mld_version_string_|\] \[ \verb|amg_version_string_|\]
whose current value is \verb|2.1.0|. whose current value is \verb|1.0|.
\subsection*{Contributors} \subsection*{Contributors}
Contributors to version 2:
\begin{itemize} \begin{itemize}
\item Salvatore Filippone, Cranfield University, UK; \item Pasqua D'Ambra, IAC-CNR, IT;
\item Pasqua D'Ambra, IAC-CNR, Naples, IT; \item Fabio Durastante, University of Pisa and IAC-CNR, IT;
\item Daniela di Serafino, University of Campania ``L. Vanvitelli'', Caserta, IT; \item Salvatore Filippone, University of Rome Tor-Vergata and IAC-CNR, IT;
\item Ambra Abdullahi Hassan, University of Rome ``Tor Vergata'', IT.
\end{itemize}
Contributors to version 1:
\begin{itemize}
\item Salvatore Filippone;
\item Pasqua D'Ambra;
\item Daniela di Serafino;
\item Alfredo Buttari, CNRS-IRIT, Toulouse, F.
\end{itemize} \end{itemize}

@ -1,8 +1,8 @@
\section{Error Handling\label{sec:errors}} \section{Error Handling\label{sec:errors}}
\markboth{\textsc{MLD2P4 User's and Reference Guide}} \markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
{\textsc{\ref{sec:errors} Error handling}} {\textsc{\ref{sec:errors} Error handling}}
The error handling in MLD2P4 is based on the PSBLAS error The error handling in AMG4PSBLAS is based on the PSBLAS error
handling. Error conditions are signaled via an integer argument handling. Error conditions are signaled via an integer argument
\verb|info|; whenever an error condition is detected, an error trace \verb|info|; whenever an error condition is detected, an error trace
stack is built by the library up to the top-level, user-callable stack is built by the library up to the top-level, user-callable

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@ -1,17 +1,17 @@
\section{Getting Started\label{sec:started}} \section{Getting Started\label{sec:started}}
\markboth{\textsc{MLD2P4 User's and Reference Guide}} \markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
{\textsc{\ref{sec:started} Getting Started}} {\textsc{\ref{sec:started} Getting Started}}
We describe the basics for building and applying MLD2P4 one-level and multilevel We describe the basics for building and applying AMG4PSBLAS one-level and multilevel
(i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS \cite{PSBLASGUIDE}. (i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS \cite{PSBLASGUIDE}.
The following steps are required: The following steps are required:
\begin{enumerate} \begin{enumerate}
\item \emph{Declare the preconditioner data structure}. It is a derived data type, \item \emph{Declare the preconditioner data structure}. It is a derived data type,
\verb|mld_|\-\emph{x}\verb|prec_| \verb|type|, where \emph{x} may be \verb|s|, \verb|d|, \verb|c| \verb|amg_|\-\emph{x}\verb|prec_| \verb|type|, where \emph{x} may be \verb|s|, \verb|d|, \verb|c|
or \verb|z|, according to the basic data type of the sparse matrix or \verb|z|, according to the basic data type of the sparse matrix
(\verb|s| = real single precision; \verb|d| = real double precision; (\verb|s| = real single precision; \verb|d| = real double precision;
\verb|c| = complex single precision; \verb|z| = complex double precision). \verb|c| = complex single precision; \verb|z| = complex double precision).
This data structure is accessed by the user only through the MLD2P4 routines, This data structure is accessed by the user only through the AMG4PSBLAS routines,
following an object-oriented approach. following an object-oriented approach.
\item \emph{Allocate and initialize the preconditioner data structure, according to \item \emph{Allocate and initialize the preconditioner data structure, according to
a preconditioner type chosen by the user}. This is performed by the routine a preconditioner type chosen by the user}. This is performed by the routine
@ -21,14 +21,7 @@ The following steps are required:
\verb|init| to identify the preconditioner types are also given. \verb|init| to identify the preconditioner types are also given.
Note that these strings are valid also if uppercase letters are substituted by Note that these strings are valid also if uppercase letters are substituted by
corresponding lowercase ones. corresponding lowercase ones.
%\item \emph{Modify the aggregation parameters (for multilevel preconditioners only).}
% This is performed by the routine \verb|mld_precset|.
% This routine must be called only if the user wants to modify the default values
% of the parameters associated with the aggregation hierarchy construction.
% Examples of use of \verb|mld_precset| are given in
% Section~\ref{sec:examples}; a complete list of all the
% preconditioner parameters and their allowed and default values is provided in
% Section~\ref{sec:userinterface}, Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.
\item \emph{Modify the selected preconditioner type, by properly setting \item \emph{Modify the selected preconditioner type, by properly setting
preconditioner parameters.} This is performed by the routine \verb|set|. preconditioner parameters.} This is performed by the routine \verb|set|.
This routine must be called only if the user wants to modify the default values This routine must be called only if the user wants to modify the default values
@ -58,7 +51,7 @@ performed by the routine \verb|bld|.
All the previous routines are available as methods of the preconditioner object. All the previous routines are available as methods of the preconditioner object.
A detailed description of them is given in Section~\ref{sec:userinterface}. A detailed description of them is given in Section~\ref{sec:userinterface}.
Examples showing the basic use of MLD2P4 are reported in Section~\ref{sec:examples}. Examples showing the basic use of AMG4PSBLAS are reported in Section~\ref{sec:examples}.
\begin{table}[h!] \begin{table}[h!]
\begin{center} \begin{center}
@ -95,8 +88,8 @@ Multilevel &\verb|'ML'| & V-cycle with one hybrid forward Gauss-Seidel
\end{center} \end{center}
\end{table} \end{table}
Note that the module \verb|mld_prec_mod|, containing the definition of the Note that the module \verb|amg_prec_mod|, containing the definition of the
preconditioner data type and the interfaces to the routines of MLD2P4, preconditioner data type and the interfaces to the routines of AMG4PSBLAS,
must be used in any program calling such routines. must be used in any program calling such routines.
The modules \verb|psb_base_mod|, for the sparse matrix and communication descriptor The modules \verb|psb_base_mod|, for the sparse matrix and communication descriptor
data types, and \verb|psb_krylov_mod|, for interfacing with the data types, and \verb|psb_krylov_mod|, for interfacing with the
@ -109,26 +102,20 @@ iterations than inexact solvers, when the linear system comes from
a standard discretization of basic scalar elliptic PDE problems. However, a standard discretization of basic scalar elliptic PDE problems. However,
this does not necessarily correspond to the smallest execution time this does not necessarily correspond to the smallest execution time
on parallel computers. on parallel computers.
% \ \\
% \textbf{Remark 2.} The include path for MLD2P4 must override
% those for PSBLAS, i.e.\ the former must come first in the sequence
% passed to the compiler, as the MLD2P4 version of the Krylov solver
% interfaces must override that of PSBLAS. This will change in the future
% when the support for the \verb|class| statement becomes widespread in Fortran
% compilers.
{\em DA MODIFICARE PER INSERIRE TIPO DI AGGREGAZIONE}
\subsection{Examples\label{sec:examples}} \subsection{Examples\label{sec:examples}}
The code reported in Figure~\ref{fig:ex1} shows how to set and apply the default The code reported in Figure~\ref{fig:ex1} shows how to set and apply the default
multilevel preconditioner available in the real double precision version multilevel preconditioner available in the real double precision version
of MLD2P4 (see Table~\ref{tab:precinit}). This preconditioner is chosen of AMG4PSBLAS (see Table~\ref{tab:precinit}). This preconditioner is chosen
by simply specifying \verb|'ML'| as the second argument of \verb|P%init| by simply specifying \verb|'ML'| as the second argument of \verb|P%init|
(a call to \verb|P%set| is not needed) and is applied with the CG (a call to \verb|P%set| is not needed) and is applied with the CG
solver provided by PSBLAS (the matrix of the system to be solved is solver provided by PSBLAS (the matrix of the system to be solved is
assumed to be positive definite). As previously observed, the modules assumed to be positive definite). As previously observed, the modules
\verb|psb_base_mod|, \verb|mld_prec_mod| and \verb|psb_krylov_mod| \verb|psb_base_mod|, \verb|amg_prec_mod| and \verb|psb_krylov_mod|
must be used by the example program. must be used by the example program.
The part of the code concerning the The part of the code concerning the
@ -136,8 +123,8 @@ reading and assembling of the sparse matrix and the right-hand side vector, perf
through the PSBLAS routines for sparse matrix and vector management, is not reported through the PSBLAS routines for sparse matrix and vector management, is not reported
here for brevity; the statements concerning the deallocation of the PSBLAS here for brevity; the statements concerning the deallocation of the PSBLAS
data structure are neglected too. data structure are neglected too.
The complete code can be found in the example program file \verb|mld_dexample_ml.f90|, The complete code can be found in the example program file \verb|amg_dexample_ml.f90|,
in the directory \verb|examples/fileread| of the MLD2P4 implementation (see in the directory \verb|examples/fileread| of the AMG4PSBLAS implementation (see
Section~\ref{sec:ex_and_test}). A sample test problem along with the relevant Section~\ref{sec:ex_and_test}). A sample test problem along with the relevant
input data is available in \verb|examples/fileread/runs|. input data is available in \verb|examples/fileread/runs|.
For details on the use of the PSBLAS routines, see the PSBLAS User's For details on the use of the PSBLAS routines, see the PSBLAS User's
@ -155,7 +142,7 @@ the corresponding codes are available in \verb|examples/fileread/|.
{\small {\small
\begin{verbatim} \begin{verbatim}
use psb_base_mod use psb_base_mod
use mld_prec_mod use amg_prec_mod
use psb_krylov_mod use psb_krylov_mod
... ... ... ...
! !
@ -164,7 +151,7 @@ the corresponding codes are available in \verb|examples/fileread/|.
! sparse matrix descriptor ! sparse matrix descriptor
type(psb_desc_type) :: desc_A type(psb_desc_type) :: desc_A
! preconditioner ! preconditioner
type(mld_dprec_type) :: P type(amg_dprec_type) :: P
! right-hand side and solution vectors ! right-hand side and solution vectors
type(psb_d_vect_type) :: b, x type(psb_d_vect_type) :: b, x
... ... ... ...
@ -235,29 +222,19 @@ it is used on replicated ones.
%to specify a property only for the pre-smoother or the post-smoother %to specify a property only for the pre-smoother or the post-smoother
%(see Section~\ref{sec:precset} for more details). %(see Section~\ref{sec:precset} for more details).
The code fragments shown in Figures~\ref{fig:ex2} and \ref{fig:ex3} are The code fragments shown in Figures~\ref{fig:ex2} and \ref{fig:ex3} are
included in the example program file \verb|mld_dexample_ml.f90| too. included in the example program file \verb|amg_dexample_ml.f90| too.
Finally, Figure~\ref{fig:ex4} shows the setup of a one-level Finally, Figure~\ref{fig:ex4} shows the setup of a one-level
additive Schwarz preconditioner, i.e., RAS with overlap 2. additive Schwarz preconditioner, i.e., RAS with overlap 2.
Note also that a Krylov method different from CG must be used to solve Note also that a Krylov method different from CG must be used to solve
the preconditioned system, since the preconditione in nonsymmetric. the preconditioned system, since the preconditione in nonsymmetric.
The corresponding example program is available in the file The corresponding example program is available in the file
\verb|mld_dexample_1lev.f90|. \verb|amg_dexample_1lev.f90|.
For all the previous preconditioners, example programs where the sparse matrix and For all the previous preconditioners, example programs where the sparse matrix and
the right-hand side are generated by discretizing a PDE with Dirichlet the right-hand side are generated by discretizing a PDE with Dirichlet
boundary conditions are also available in the directory \verb|examples/pdegen|. boundary conditions are also available in the directory \verb|examples/pdegen|.
% \ \\
% \textbf{Remark 2.} Any PSBLAS-based program using the basic preconditioners
% implemented in PSBLAS 3.0, i.e.\ the diagonal and block-Jacobi ones,
% can use the diagonal and block-Jacobi preconditioners
% implemented in MLD2P4 without change in the code.
% The PSBLAS-based program must be only recompiled
% and linked to the MLD2P4 library.
% \\
\begin{figure}[tbh] \begin{figure}[tbh]
\begin{center} \begin{center}
\begin{minipage}{.90\textwidth} \begin{minipage}{.90\textwidth}

@ -1,20 +1,22 @@
\section{License\label{sec:license}} \section{License\label{sec:license}}
\markboth{\textsc{MLD2P4 User's and Reference Guide}} \markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
{\textsc{\ref{sec:license} License}} {\textsc{\ref{sec:license} License}}
The MLD2P4 is freely distributable under the following copyright {\bf DA CONTROLLARE E MODIFICARE INCLUDENDO I CREDITS A MLD2P4}
The AMG4PSBLAS is freely distributable under the following copyright
terms: {\small terms: {\small
\begin{verbatim} \begin{verbatim}
MLD2P4 version 2.1 AMG4PSBLAS version 1.0
MultiLevel Domain Decomposition Parallel Preconditioners Package Algebraic MultiGrid Preconditioners Package
based on PSBLAS (Parallel Sparse BLAS version 3.5) based on PSBLAS (Parallel Sparse BLAS version 3.5)
(C) Copyright 2008, 2010, 2012, 2015, 2017 (C) Copyright 2008, 2010, 2012, 2015, 2017
Salvatore Filippone Cranfield University, Cranfield, UK Pasqua D'Ambra IAC-CNR, IT
Pasqua D'Ambra IAC-CNR, Naples, IT Fabio Durastante University of Pisa and IAC-CNR, IT
Daniela di Serafino University of Campania L. Vanvitelli, Caserta, IT Salvatore Filippone University of Rome Tor-Vergata and IAC-CNR, IT
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions modification, are permitted provided that the following conditions

@ -1,7 +1,7 @@
\clearpage \clearpage
\section{Adding new smoother and solver objects to MLD2P4\label{sec:adding}} \section{Adding new smoother and solver objects to AMG4PSBLAS\label{sec:adding}}
Developers can add completely new smoother and/or solver classes Developers can add completely new smoother and/or solver classes
derived from the base objects in the library (see Remark~2 in Section~\ref{sec:precset}), derived from the base objects in the library (see Remark~2 in Section~\ref{sec:precset}),
@ -31,7 +31,7 @@ following:
\end{itemize} \end{itemize}
The new solver object is then dynamically included in the The new solver object is then dynamically included in the
preconditioner structure, and acts as a \emph{mold} to which the preconditioner structure, and acts as a \emph{mold} to which the
preconditioner will conform, even though the MLD2P4 library has not preconditioner will conform, even though the AMG4PSBLAS library has not
been modified to account for this new development. been modified to account for this new development.
It is possible to define new values for the keyword \verb|WHAT| in the It is possible to define new values for the keyword \verb|WHAT| in the
@ -55,24 +55,24 @@ need to be ovverridden (rewritten).
The interfaces for the calls shown above are defined using The interfaces for the calls shown above are defined using
\begin{center} \begin{center}
\begin{tabular}{p{1.4cm}p{12cm}} \begin{tabular}{p{1.4cm}p{12cm}}
\verb|smoother| & \verb|class(mld_x_base_smoother_type)| \\ \verb|smoother| & \verb|class(amg_x_base_smoother_type)| \\
& The user-defined new smoother to be employed in the & The user-defined new smoother to be employed in the
preconditioner.\\ preconditioner.\\
\verb|solver| & \verb|class(mld_x_base_solver_type)| \\ \verb|solver| & \verb|class(amg_x_base_solver_type)| \\
& The user-defined new solver to be employed in the & The user-defined new solver to be employed in the
preconditioner. preconditioner.
\end{tabular} \end{tabular}
\end{center} \end{center}
The other arguments are defined in the way described in The other arguments are defined in the way described in
Sec.~\ref{sec:precset}. As an example, in the \verb|tests/newslv| Sec.~\ref{sec:precset}. As an example, in the \verb|tests/newslv|
code we define a new object of type \verb|mld_d_tlu_solver_type|, and code we define a new object of type \verb|amg_d_tlu_solver_type|, and
we pass it as follows: we pass it as follows:
\begin{verbatim} \begin{verbatim}
! sparse matrix and preconditioner ! sparse matrix and preconditioner
type(psb_dspmat_type) :: a type(psb_dspmat_type) :: a
type(mld_dprec_type) :: prec type(amg_dprec_type) :: prec
type(mld_d_tlu_solver_type) :: tlusv type(amg_d_tlu_solver_type) :: tlusv
...... ......
! !

@ -1,95 +1,77 @@
\section{General Overview\label{sec:overview}} \section{General Overview\label{sec:overview}}
\markboth{\textsc{MLD2P4 User's and Reference Guide}} \markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
{\textsc{\ref{sec:overview} General Overview}} {\textsc{\ref{sec:overview} General Overview}}
The \textsc{MultiLevel Domain Decomposition Parallel Preconditioners Package based on The \textsc{Algebraic MultiGrid Preconditioners Package based on
PSBLAS (MLD2P4}) provides parallel Algebraic MultiGrid (AMG) and Domain PSBLAS (AMG4PSBLAS)} provides parallel Algebraic MultiGrid (AMG) preconditioners (see, e.g., \cite{Briggs2000,Stuben_01}),
Decomposition preconditioners (see, e.g., \cite{Briggs2000,Stuben_01,dd2_96}),
to be used in the iterative solution of linear systems, to be used in the iterative solution of linear systems,
\begin{equation} \begin{equation}
Ax=b, Ax=b,
\label{system1} \label{system1}
\end{equation} \end{equation}
where $A$ is a square, real or complex, sparse matrix. where $A$ is a square, real or complex, sparse symmetric positive definite (s.p.d) matrix.
% %
%\textbf{NOTA: Caso non simmetrico, aggregazione con $(A+A^T)$ fatta! %\textbf{NOTA: Caso non simmetrico, aggregazione con $(A+A^T)$ fatta!
%Dovremmo implementare uno smoothed prolongator %Dovremmo implementare uno smoothed prolongator
%adeguato e fare qualcosa di consistente anche con 1-lev Schwarz.} %adeguato e fare qualcosa di consistente anche con 1-lev Schwarz.}
% %
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.
The multilevel preconditioners implemented in MLD2P4 are obtained by combining The preconditioners implemented in AMG4PSBLAS are obtained by combining
AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and 3 different types of AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and a version of a Krylov-type cycle (K-cycle)~\cite{Briggs2000,Notay2008} are available, which can be combined with weighted versions of Jacobi, hybrid
K-cycles~\cite{Briggs2000,Notay2008} 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, hybrid
%\footnote{see Note 2 in Table~\ref{tab:p_coarse}, p.~28.} %\footnote{see Note 2 in Table~\ref{tab:p_coarse}, p.~28.}
forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz smoothers. An algebraic approach is used to generate a hierarchy of
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 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, geometry of the original problem, e.g., the discretization of a PDE. To this end,
the smoothed aggregation technique~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA} two different coarsening strategies, based on aggregation, are available:
is applied. Either exact or approximate solvers can be used on the coarsest-level \begin{itemize}
system. Specifically, different sparse LU factorizations from external \item a decoupled version of the well known smoothed aggregation procedure proposed in~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}, and already included in the previous versions of the package~\cite{BDDF2007,MLD2P4_TOMS};
packages, and native incomplete LU factorizations and Jacobi, hybrid Gauss-Seidel, \item the first parallel implementation of a coupled version of Coarsening based on Compatible Weighted Matching introduced in~\cite{DV2013,DFV2018} and described in details in~\cite{DDF2020};
and block-Jacobi solvers are available. All smoothers can be also exploited as one-level \end{itemize}
Either exact or approximate solvers can be used on the coarsest-level system. Specifically, different sparse LU factorizations from external
packages, native incomplete LU factorizations, weighted Jacobi, hybrid Gauss-Seidel,
and block-Jacobi solvers are available. All the smoothers can be also exploited as one-level
preconditioners. preconditioners.
MLD2P4 is written in Fortran~2003, following an AMG4PSBLAS is written in Fortran~2003, following an
object-oriented design through the exploitation of features object-oriented design through the exploitation of features
such as abstract data type creation, type extension, functional overloading, and such as abstract data type creation, type extension, functional overloading, and
dynamic memory management. % \textbf{Va bene cos\'{i} o \`e meglio dynamic memory management.
% fare riferimento alle classi?}
The parallel implementation is based on a Single Program Multiple Data The parallel implementation is based on a Single Program Multiple Data
(SPMD) paradigm. Single and (SPMD) paradigm. Single and
double precision implementations of MLD2P4 are available for both the double precision implementations of AMG4PSBLAS are available for both the
real and the complex case, which can be used through a single real and the complex case, which can be used through a single
interface. interface.
MLD2P4 has been designed to implement scalable and easy-to-use AMG4PSBLAS has been designed to implement scalable and easy-to-use
multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS) multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS)
computational framework~\cite{psblas_00,PSBLAS3}. PSBLAS provides basic linear algebra computational framework~\cite{psblas_00,PSBLAS3}. PSBLAS provides basic linear algebra
operators and data management facilities for distributed sparse matrices, operators and data management facilities for distributed sparse matrices,
as well as parallel Krylov solvers which can be used with the MLD2P4 preconditioners. as well as parallel Krylov solvers which can be used with the AMG4PSBLAS preconditioners.
The choice of PSBLAS has been mainly motivated by the need of having 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 ``de facto'' standard
parallel sparse linear algebra kernels, to pursue goals such as performance, parallel sparse linear algebra kernels, to pursue goals such as performance,
portability, modularity ed extensibility in the development of the preconditioner portability, modularity ed extensibility in the development of the preconditioner
package. On the other hand, the implementation of MLD2P4 has led to some package. On the other hand, the implementation of AMG4PSBLAS, which was driven by the need to face the exascale challenge, has led to some important revisions and extentions of the PSBLAS infrastructure.
revisions and extentions of the original PSBLAS kernels. The inter-process comunication required by AMG4PSBLAS is encapsulated
The inter-process comunication required by MLD2P4 is encapsulated
in the PSBLAS routines; in the PSBLAS routines;
% , except few cases where MPI~\cite{MPI1} is explicitly called. therefore, AMG4PSBLAS can be run on any parallel machine where PSBLAS
therefore, MLD2P4 can be run on any parallel machine where PSBLAS
implementations are available. implementations are available.
MLD2P4 has a layered and modular software architecture where three main layers can be AMG4PSBLAS 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 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 the construction and application phases of the preconditioners, and the upper one
provides a uniform interface to all the preconditioners. provides a uniform interface to all the preconditioners.
This architecture allows for different levels of use of the package: This architecture allows for different levels of use of the package:
few black-box routines at the upper layer allow all users to easily few black-box routines at the upper layer allow all users to easily
build and apply any preconditioner available in MLD2P4; build and apply any preconditioner available in AMG4PSBLAS;
facilities are also available allowing expert users to extend the set of smoothers facilities are also available allowing expert users to extend the set of smoothers
and solvers for building new versions of the preconditioners (see and solvers for building new versions of the preconditioners (see
Section~\ref{sec:adding}). Section~\ref{sec:adding}).
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~\cite{MLD2P4_TOMS} has significantly
evolved too, in order to fully exploit the Fortran~2003 features implemented in PSBLAS 3.
However, compatibility with previous versions has been preserved.
This guide is organized as follows. General information on the distribution of the source This guide is organized as follows. General information on the distribution of the source
code is reported in Section~\ref{sec:distribution}, while details on the configuration code is reported in Section~\ref{sec:distribution}, while details on the configuration
and installation of the package are given in Section~\ref{sec:building}. A short description and installation of the package are given in Section~\ref{sec:building}. The basics for building and applying the
of the preconditioners implemented in MLD2P4 is provided in Section~\ref{sec:background},
to help the users in choosing among them. The basics for building and applying the
preconditioners with the Krylov solvers implemented in PSBLAS are reported preconditioners with the Krylov solvers implemented in PSBLAS are reported
in~Section~\ref{sec:started}, where the Fortran codes of a few sample programs in~Section~\ref{sec:started}, where the Fortran codes of a few sample programs
are also shown. A reference guide for the user interface routines is provided are also shown. A reference guide for the user interface routines is provided
@ -97,7 +79,7 @@ in Section~\ref{sec:userinterface}. Information on the extension of the package
through the addition of new smoothers and solvers is reported in Section~\ref{sec:adding}. through the addition of new smoothers and solvers is reported in Section~\ref{sec:adding}.
The error handling mechanism used by the package The error handling mechanism used by the package
is briefly described in Section~\ref{sec:errors}. The copyright terms concerning the is briefly described in Section~\ref{sec:errors}. The copyright terms concerning the
distribution and modification of MLD2P4 are reported in Appendix~\ref{sec:license}. distribution and modification of AMG4PSBLAS are reported in Appendix~\ref{sec:license}.
%%% Local Variables: %%% Local Variables:
%%% mode: latex %%% mode: latex

@ -26,12 +26,12 @@
\relax \relax
\pdfcompresslevel=0 %-- 0 = none, 9 = best \pdfcompresslevel=0 %-- 0 = none, 9 = best
\pdfinfo{ %-- Info dictionary of PDF output /Author (PD, DdS, SF) \pdfinfo{ %-- Info dictionary of PDF output /Author (PD, DdS, SF)
/Title (MultiLevel Domain Decomposition Parallel Preconditioners Package /Title (Algebraic MultiGrid Preconditioners Package
based on PSBLAS, V. 2.2) based on PSBLAS, V. 1.0)
/Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package) /Subject (MultiGrid Parallel Preconditioners Package)
/Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI) /Keywords (Parallel Numerical Software, Algebraic MultiGrid Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI)
/Creator (pdfLaTeX) /Creator (pdfLaTeX)
/Producer ($Id: userguide.tex 2008-04-08 Pasqua D'Ambra, Daniela di Serafino, /Producer ($Id: userguide.tex 2021-03-01 Pasqua D'Ambra, Fabio Durastante,
Salvatore Filippone$) Salvatore Filippone$)
} }
\pdfcatalog{ %-- Catalog dictionary of PDF output. \pdfcatalog{ %-- Catalog dictionary of PDF output.
@ -92,7 +92,7 @@
\newcommand{\Ref}[1]{\mbox{(\ref{#1})}} \newcommand{\Ref}[1]{\mbox{(\ref{#1})}}
\begin{document} \begin{document}
\pdfbookmark{MLD2P4 User's and Reference Guide}{title} \pdfbookmark{AMG4PSBLAS User's and Reference Guide}{title}
\newlength{\centeroffset} \newlength{\centeroffset}
%\setlength{\centeroffset}{-0.5\oddsidemargin} %\setlength{\centeroffset}{-0.5\oddsidemargin}
%\addtolength{\centeroffset}{0.5\evensidemargin} %\addtolength{\centeroffset}{0.5\evensidemargin}
@ -101,23 +101,30 @@
\vspace*{\stretch{1}} \vspace*{\stretch{1}}
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth} \noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
\flushright \flushright
{\Huge\bfseries MLD2P4\\[.8ex] User's and Reference Guide {\Huge\bfseries AMG4PSBLAS\\[.8ex] User's and Reference Guide
} }
\noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex] \noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex]
\hfill\emph{\Large A guide for the MultiLevel Domain Decomposition \\[.6ex] \hfill\emph{\Large A guide for the Algebraic MultiGrid \\[.6ex]
Parallel Preconditioners Package Preconditioners Package based on PSBLAS}
based on PSBLAS}
\end{minipage}} \end{minipage}}
\vspace{\stretch{1}}
\flushleft
\begin{figure*}[htb]
\begin{center}
\includegraphics[width=0.6\textwidth]{amg4psblaslibrary.png}
\end{center}
\end{figure*}
\vspace{\stretch{1}} \vspace{\stretch{1}}
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth} \noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
\flushright \flushright
{\large\bfseries Pasqua D'Ambra}\\ {\large\bfseries Pasqua D'Ambra}\\
\large IAC-CNR, Naples, Italy\\[3ex] \large IAC-CNR, Italy\\[3ex]
{\large\bfseries Daniela di Serafino}\\ {\large\bfseries Fabio Durastante}\\
\large University of Campania ``Luigi Vanvitelli'', Caserta, Italy\\[3ex] \large University of Pisa and IAC-CNR\\[3ex]
{\large\bfseries Salvatore Filippone} \\ {\large\bfseries Salvatore Filippone} \\
\large Cranfield University, Cranfield, United Kingdom \large University of Rome Tor-Vergata and IAC-CNR
%\\[10ex] %\\[10ex]
%\today %\today
\end{minipage}} \end{minipage}}
@ -125,9 +132,9 @@ based on PSBLAS}
\vspace{\stretch{1}} \vspace{\stretch{1}}
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth} \noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
\flushright \flushright
\large Software version: 2.2\\ \large Software version: 1.0\\
%\today %\today
\large July 31, 2018 \large March 31, 2021
\end{minipage}} \end{minipage}}
%\addtolength{\textwidth}{\centeroffset} %\addtolength{\textwidth}{\centeroffset}
\vspace{\stretch{2}} \vspace{\stretch{2}}
@ -165,7 +172,7 @@ based on PSBLAS}
\include{overview} \include{overview}
\include{distribution} \include{distribution}
\include{building} \include{building}
\include{background} %\include{background}
\include{gettingstarted} \include{gettingstarted}
\include{userinterface} \include{userinterface}
\include{newobjects} \include{newobjects}

@ -1,8 +1,8 @@
\section{User Interface\label{sec:userinterface}} \section{User Interface\label{sec:userinterface}}
\markboth{\textsc{MLD2P4 User's and Reference Guide}} \markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
{\textsc{\ref{sec:userinterface} User Interface}} {\textsc{\ref{sec:userinterface} User Interface}}
The basic user interface of MLD2P4 consists of eight methods. The six The basic user interface of AMG4PBLAS consists of eight methods. The six
methods \verb|init|, \verb|set|, \verb|build|, methods \verb|init|, \verb|set|, \verb|build|,
\verb|hierarchy_build|, \verb|smoothers_build| and \verb|apply| \verb|hierarchy_build|, \verb|smoothers_build| and \verb|apply|
encapsulate all the functionalities for the setup and the application encapsulate all the functionalities for the setup and the application
@ -24,7 +24,7 @@ i.e.,
for real double precision, \emph{x} = \verb|c| for complex single precision, for real double precision, \emph{x} = \verb|c| for complex single precision,
\emph{x} = \verb|z| for complex double precision; \emph{x} = \verb|z| for complex double precision;
\item the preconditioner data structure must be of type \item the preconditioner data structure must be of type
\verb|mld_|\emph{x}\verb|prec_type|, with \emph{x} = \verb|amg_|\emph{x}\verb|prec_type|, with \emph{x} =
\verb|s|, \verb|d|, \verb|c|, \verb|z|, according to the sparse \verb|s|, \verb|d|, \verb|c|, \verb|z|, according to the sparse
matrix data structure; matrix data structure;
\item the arrays containing the vectors $v$ and $w$ involved in \item the arrays containing the vectors $v$ and $w$ involved in
@ -53,10 +53,7 @@ This method allocates and initializes the preconditioner
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \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|icontxt| & \verb|integer, intent(in)|.\\ \verb|icontxt| & \verb|integer, intent(in)|.\\
& The communication context.\\ & The communication context.\\
\verb|ptype| & \verb|character(len=*), intent(in)|.\\ \verb|ptype| & \verb|character(len=*), intent(in)|.\\
@ -65,12 +62,7 @@ This method allocates and initializes the preconditioner
& Note that the strings are case insensitive.\\ & Note that the strings are case insensitive.\\
\verb|info| & \verb|integer, intent(out)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
%\verb|nlev| & \verb|integer, optional, intent(in)|.\\
% & The number of levels of the multilevel
% preconditioner. This optional argument is deprecated,
% new codes should set the number of levels with \verb|mld_precset|.\\
% If \verb|nlev| is not present and \verb|ptype|=\verb|'ML'|, \verb|'ml'|,
% then \verb|nlev|=2 is assumed. Otherwise, \verb|nlev| is ignored.\\
\end{tabular} \end{tabular}
\vskip1.5\baselineskip \vskip1.5\baselineskip
@ -78,7 +70,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
as follows: as follows:
\begin{center} \begin{center}
\verb|call mld_precinit(p,ptype,info)| \verb|call amg_precinit(p,ptype,info)|
\end{center} \end{center}
@ -98,10 +90,6 @@ contained in \verb|val|.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \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|what| & \verb|character(len=*)|. \\ \verb|what| & \verb|character(len=*)|. \\
& The parameter to be set. It can be specified through its name; & The parameter to be set. It can be specified through its name;
the string is case-insensitive. See the string is case-insensitive. See
@ -149,7 +137,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
as follows: as follows:
\begin{center} \begin{center}
\verb|call mld_precset(p,what,val,info)| \verb|call amg_precset(p,what,val,info)|
\end{center} \end{center}
\noindent \noindent
@ -249,8 +237,6 @@ See also Sec.~\ref{sec:adding}.
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
%\multicolumn{5}{|c|}{\emph{type of the multilevel preconditioner}}\\ \hline
%\verb|mld_ml_cycle_| \par
\verb|'ML_CYCLE'| & \verb|character(len=*)| \verb|'ML_CYCLE'| & \verb|character(len=*)|
& \texttt{'VCYCLE'} \par \texttt{'WCYCLE'} \par \texttt{'KCYCLE'} \par & \texttt{'VCYCLE'} \par \texttt{'WCYCLE'} \par \texttt{'KCYCLE'} \par
\texttt{'MULT'} \par \texttt{'ADD'} \texttt{'MULT'} \par \texttt{'ADD'}
@ -259,21 +245,10 @@ See also Sec.~\ref{sec:adding}.
and Additive Schwarz. \par and Additive Schwarz. \par
Note that hybrid Multiplicative Schwarz is equivalent to V-cycle and Note that hybrid Multiplicative Schwarz is equivalent to V-cycle and
is included for compatibility with previous versions of MLD2P4. \\ \hline is included for compatibility with previous versions of MLD2P4. \\ \hline
%\verb|mld_outer_sweeps_| \par
\verb|'OUTER_SWEEPS'| & \texttt{integer} & \verb|'OUTER_SWEEPS'| & \texttt{integer} &
Any integer \par number $\ge 1$ & 1 & Any integer \par number $\ge 1$ & 1 &
Number of multilevel cycles. \\ \hline Number of multilevel cycles. \\ \hline
%\verb|mld_smoother_type_| \par \verb|SMOOTHER_TYPE| & \verb|character(len=*)|
% & \texttt{'JACOBI'} \ \ \ \texttt{'BJAC'} \ \ \ \texttt{'AS'}
% & \texttt{'AS'}
% & Basic predefined one-level preconditioner
% (i.e., smoother): Jacobi, block Jacobi, AS. \\ \hline
%\verb|mld_smoother_pos_| \par \verb|SMOOTHER_POS| & \verb|character(len=*)|
% & \texttt{'PRE'} \ \ \ \texttt{'POST'} \ \ \ \texttt{'TWOSIDE'}
% & \texttt{'TWOSIDE'}
% & ``Position'' of the smoother: pre-smoother, post-smoother,
% pre- and post-smoother. \\
%\hline
\end{tabular} \end{tabular}
\end{center} \end{center}
\caption{Parameters defining the multilevel cycle and the number of cycles to \caption{Parameters defining the multilevel cycle and the number of cycles to
@ -288,8 +263,6 @@ be applied.
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
%\multicolumn{5}{|c|}{\emph{aggregation algorithm}} \\ \hline
%\verb|mld_min_coarse_size_| \par
\verb|'MIN_COARSE_SIZE'| & \verb|integer| \verb|'MIN_COARSE_SIZE'| & \verb|integer|
& Any number \par $> 0$ & Any number \par $> 0$
& $\lfloor 40 \sqrt[3]{n} \rfloor$, where $n$ is the dimension & $\lfloor 40 \sqrt[3]{n} \rfloor$, where $n$ is the dimension
@ -299,13 +272,9 @@ be applied.
computed coarsest matrix computed coarsest matrix
is lower than or equal to this threshold is lower than or equal to this threshold
(see Note). (see Note).
% or \par
% the coarsening ratio is lower than or equal to
% its value (see \verb|mld_min_aggr_ratio_|), or \par
% the maximum number of levels is reached
% (see \verb|mld_n_prec_levs_|).
\\ \hline \\ \hline
%\verb|mld_min_cr_ratio_| \par
\verb|'MIN_CR_RATIO'| & \verb|real| \verb|'MIN_CR_RATIO'| & \verb|real|
& Any number \par $> 1$ & Any number \par $> 1$
& 1.5 & 1.5
@ -313,13 +282,13 @@ be applied.
if the ratio between the matrix dimensions if the ratio between the matrix dimensions
at two consecutive levels is lower than or equal to this at two consecutive levels is lower than or equal to this
threshold (see Note).\\ \hline threshold (see Note).\\ \hline
%\verb|mld_max_levs_| \par
\verb|'MAX_LEVS'| & \verb|integer| \verb|'MAX_LEVS'| & \verb|integer|
& Any integer \par number $> 1$ & Any integer \par number $> 1$
& 20 & 20
& Maximum number of levels. The aggregation stops & Maximum number of levels. The aggregation stops
if the number of levels reaches this value (see Note). \\ \hline if the number of levels reaches this value (see Note). \\ \hline
%\verb|mld_par_aggr_alg_| \par
\verb|'PAR_AGGR_ALG'| & \verb|character(len=*)| \hspace*{-3mm} \verb|'PAR_AGGR_ALG'| & \verb|character(len=*)| \hspace*{-3mm}
& \texttt{'DEC'}, \texttt{'SYMDEC'} & \texttt{'DEC'}, \texttt{'SYMDEC'}
& \texttt{'DEC'} & \texttt{'DEC'}
@ -328,17 +297,17 @@ be applied.
\verb|SYMDEC| option applies decoupled \verb|SYMDEC| option applies decoupled
aggregation to the sparsity pattern aggregation to the sparsity pattern
of $A+A^T$.\\ \hline of $A+A^T$.\\ \hline
%\verb|mld_aggr_type_| \par
\verb|'AGGR_TYPE'| & \verb|character(len=*)| \hspace*{-3mm} \verb|'AGGR_TYPE'| & \verb|character(len=*)| \hspace*{-3mm}
& \textbf{\texttt{'SOC1'}} & & \textbf{\texttt{'SOC1'}} &
\textbf{\texttt{'SOC1'}}, \textbf{\texttt{'SOC1'}},
\textbf{\texttt{'SOC2'}} \textbf{\texttt{'SOC2'}}
& Type of aggregation algorithm: currently, & Type of aggregation algorithm: currently,
we implement two measures of strength of we implement to measures of strength of
connection, the one by Van\v{e}k, Mandel connection, the one by Van\v{e}k, Mandel
and Brezina~\cite{VANEK_MANDEL_BREZINA}, and Brezina~\cite{VANEK_MANDEL_BREZINA},
and the one by Gratton et al~\cite{GrHeJi:16}. \\ \hline and the one by Gratton et al~\cite{GrHeJi:16}. \\ \hline
%\verb|mld_aggr_prol_| \par
\verb|'AGGR_PROL'| & \verb|character(len=*)| \hspace*{-3mm} \verb|'AGGR_PROL'| & \verb|character(len=*)| \hspace*{-3mm}
& \texttt{'SMOOTHED'}, \texttt{'UNSMOOTHED'} & \texttt{'SMOOTHED'} & \texttt{'SMOOTHED'}, \texttt{'UNSMOOTHED'} & \texttt{'SMOOTHED'}
& Prolongator used by the aggregation algorithm: smoothed or unsmoothed & Prolongator used by the aggregation algorithm: smoothed or unsmoothed
@ -365,7 +334,7 @@ of levels. } \\
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
%\verb|mld_aggr_ord_| \par
\verb|'AGGR_ORD'| & \verb|character(len=*)| \verb|'AGGR_ORD'| & \verb|character(len=*)|
& \texttt{'NATURAL'} \par \texttt{'DEGREE'} & \texttt{'NATURAL'} \par \texttt{'DEGREE'}
& \texttt{'NATURAL'} & \texttt{'NATURAL'}
@ -375,49 +344,13 @@ of levels. } \\
matrix graph. \\ \hline matrix graph. \\ \hline
%Since aggregation is %Since aggregation is
%heuristic, results will be different. %heuristic, results will be different.
%\verb|mld_aggr_thresh_| \par
\verb|'AGGR_THRESH'| & \verb|real(|\emph{kind\_parameter}\verb|)| \verb|'AGGR_THRESH'| & \verb|real(|\emph{kind\_parameter}\verb|)|
& Any~real \par number~$\in [0, 1]$ & Any~real \par number~$\in [0, 1]$
& 0.01 & 0.01
& The threshold $\theta$ in the aggregation algorithm, & The threshold $\theta$ in the aggregation algorithm,
see (\ref{eq:strongly_coup}) in Section~\ref{sec:aggregation}. see (\ref{eq:strongly_coup}) in Section~\ref{sec:aggregation}.
See also the note at the bottom of this table. \\ \hline See also the note at the bottom of this table. \\ \hline
%%\verb|mld_aggr_scale_| \par
% \verb|AGGR_SCALE| & \verb|real(|\emph{kind\_parameter}\verb|)|
% & Any~real \par number~$\in [0, 1]$
% & 1.0
% & Scale factor applied to the threshold in going
% from level $ilev$ to level $ilev+1$. \\ \hline
%\verb|mld_aggr_omega_alg_| \par
%\verb|'AGGR_OMEGA_ALG'|& \verb|character(len=*)|
% & \texttt{'EIG\_EST'} \par \texttt{'USER\_CHOICE'}
% & \texttt{'EIG\_EST'}
% & How the damping parameter $\omega$ in the
% smoothed aggregation is obtained:
% either via an estimate of the spectral radius of
% $D^{-1}A$, where $A$ is the matrix at the current
% level and $D$ is the diagonal matrix with
% the same diagonal entires as $A$, or explicily
% specified by the user. \\ \hline
%\verb|mld_aggr_eig_| \par
%\verb|'AGGR_EIG'| & \verb|character(len=*)|
% & \texttt{'A\_NORMI'}
% & \texttt{'A\_NORMI'}
% & How to estimate the spectral radius of $D^{-1}A$.
% Currently only the infinity norm estimate
% is available. \\ \hline
%\verb|mld_aggr_omega_val_| \par
%\verb|'AGGR_OMEGA_VAL'| & \verb|real(|\emph{kind\_parameter}\verb|)|
% & Any real \par number $>0$
% & $4/(3\rho(D^{-1}A))$
% & Damping parameter $\omega$ in the smoothed aggregation algorithm.
% It must be set by the user if
% \verb|USER_CHOICE| was specified for
% \verb|mld_aggr_omega_alg_|,
% otherwise it is computed by the library, using the
% selected estimate of the spectral radius $\rho(D^{-1}A)$ of
% $D^{-1}A$.\\ \hline
%\verb|mld_aggr_filter_| \par
\verb|'AGGR_FILTER'| \verb|'AGGR_FILTER'|
& \verb|character(len=*)| & \verb|character(len=*)|
& \texttt{'FILTER'} \par \texttt{'NOFILTER'} & \texttt{'FILTER'} \par \texttt{'NOFILTER'}
@ -442,14 +375,11 @@ the parameter \texttt{ilev}.} \\
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
%\multicolumn{5}{|c|}{\emph{coarse-space correction at the coarsest level}}\\ \hline
%\verb|mld_coarse_mat_| \par
\verb|'COARSE_MAT'| & \verb|character(len=*)| \verb|'COARSE_MAT'| & \verb|character(len=*)|
& \texttt{'DIST'} \par \texttt{'REPL'} & \texttt{'DIST'} \par \texttt{'REPL'}
& \texttt{'REPL'} & \texttt{'REPL'}
& Coarsest matrix layout: distributed among the processes or & Coarsest matrix layout: distributed among the processes or
replicated on each of them. \\ \hline replicated on each of them. \\ \hline
%\verb|mld_coarse_solve_| \par
\verb|'COARSE_SOLVE'| & \verb|character(len=*)| \verb|'COARSE_SOLVE'| & \verb|character(len=*)|
& \texttt{'MUMPS'} \par \texttt{'UMF'} \par & \texttt{'MUMPS'} \par \texttt{'UMF'} \par
\texttt{'SLU'} \par \texttt{'SLUDIST'} \par \texttt{'SLU'} \par \texttt{'SLUDIST'} \par
@ -470,7 +400,6 @@ the parameter \texttt{ilev}.} \\
value which allows the use of the solver (see Remark 3, p.~24). value which allows the use of the solver (see Remark 3, p.~24).
Note also that UMFPACK and SuperLU\_Dist Note also that UMFPACK and SuperLU\_Dist
are available only in double precision. \\ \hline are available only in double precision. \\ \hline
%\verb|mld_coarse_subsolve_| \par
\verb|'COARSE_SUBSOLVE'| & \verb|character(len=*)| \verb|'COARSE_SUBSOLVE'| & \verb|character(len=*)|
& \texttt{'ILU'} \par \texttt{'ILUT'} \par \texttt{'MILU'} \par & \texttt{'ILU'} \par \texttt{'ILUT'} \par \texttt{'MILU'} \par
\texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'} \texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'}
@ -504,19 +433,15 @@ level.\label{tab:p_coarse}}
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
%\multicolumn{5}{|c|}{\emph{coarse-space correction at the coarsest level}}\\ \hline
%\verb|mld_coarse_sweeps_| \par
\verb|'COARSE_SWEEPS'| & \verb|integer| \verb|'COARSE_SWEEPS'| & \verb|integer|
& Any integer \par number $> 0$ & Any integer \par number $> 0$
& 10 & 10
& Number of sweeps when \verb|JACOBI|, \verb|GS| or \verb|BJAC| & Number of sweeps when \verb|JACOBI|, \verb|GS| or \verb|BJAC|
is chosen as coarsest-level solver. \\ \hline is chosen as coarsest-level solver. \\ \hline
%\verb|mld_coarse_fillin_| \par
\verb|'COARSE_FILLIN'| & \verb|integer| \verb|'COARSE_FILLIN'| & \verb|integer|
& Any integer \par number $\ge 0$ & Any integer \par number $\ge 0$
& 0 & 0
& Fill-in level $p$ of the ILU factorizations. \\ \hline & Fill-in level $p$ of the ILU factorizations. \\ \hline
%\verb|mld_coarse_iluthrs_| \par
\verb|'COARSE_ILUTHRS'| \verb|'COARSE_ILUTHRS'|
& \verb|real(|\emph{kind\_parameter}\verb|)| & \verb|real(|\emph{kind\_parameter}\verb|)|
& Any real \par number $\ge 0$ & Any real \par number $\ge 0$
@ -536,8 +461,7 @@ level (continued).\label{tab:p_coarse_1}}
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
%\multicolumn{5}{|c|}{\emph{basic one-level preconditioner (smoother)}} \\ \hline
%\verb|mld_smoother_type_| \par
\verb|'SMOOTHER_TYPE'| & \verb|character(len=*)| \verb|'SMOOTHER_TYPE'| & \verb|character(len=*)|
& \verb|'JACOBI'| \par \verb|'GS'| \par \verb|'BGS'| \par \verb|'BJAC'| & \verb|'JACOBI'| \par \verb|'GS'| \par \verb|'BGS'| \par \verb|'BJAC'|
\par \verb|'AS'| \par \verb|'AS'|
@ -547,7 +471,6 @@ level (continued).\label{tab:p_coarse_1}}
hybrid backward Gauss-Seidel, block-Jacobi, and hybrid backward Gauss-Seidel, block-Jacobi, and
Additive Schwarz. \par Additive Schwarz. \par
It is ignored by one-level preconditioners. \\ \hline It is ignored by one-level preconditioners. \\ \hline
%\verb|mld_sub_solve_| \par
\verb|'SUB_SOLVE'| & \verb|character(len=*)| \verb|'SUB_SOLVE'| & \verb|character(len=*)|
& \texttt{'JACOBI'} \par & \texttt{'JACOBI'} \par
\texttt{'GS'} \par \texttt{'BGS'} \par \texttt{'ILU'} \par \texttt{'GS'} \par \texttt{'BGS'} \par \texttt{'ILU'} \par
@ -564,7 +487,6 @@ level (continued).\label{tab:p_coarse_1}}
LU from MUMPS, SuperLU or UMFPACK LU from MUMPS, SuperLU or UMFPACK
(plus triangular solve). See Note for details on hybrid (plus triangular solve). See Note for details on hybrid
Gauss-Seidel. \\ \hline Gauss-Seidel. \\ \hline
%\verb|mld_moother_sweeps_| \par
\verb|'SMOOTHER_SWEEPS'| & \verb|integer| \verb|'SMOOTHER_SWEEPS'| & \verb|integer|
& Any integer \par number~$\ge 0$ & Any integer \par number~$\ge 0$
& 1 & 1
@ -573,7 +495,6 @@ level (continued).\label{tab:p_coarse_1}}
post-smoother is used if this parameter is set to 0 post-smoother is used if this parameter is set to 0
together with \verb|pos='PRE'| or \verb|pos='POST|, together with \verb|pos='PRE'| or \verb|pos='POST|,
respectively. \\ \hline respectively. \\ \hline
%\verb|mld_sub_ovr_| \par
\verb|'SUB_OVR'| & \verb|integer| \verb|'SUB_OVR'| & \verb|integer|
& Any integer \par number~$\ge 0$ & Any integer \par number~$\ge 0$
& 1 & 1
@ -592,7 +513,6 @@ level (continued).\label{tab:p_coarse_1}}
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
%\verb|mld_sub_restr_| \par
\verb|'SUB_RESTR'| & \verb|character(len=*)| \verb|'SUB_RESTR'| & \verb|character(len=*)|
& \texttt{'HALO'} \par \texttt{'NONE'} & \texttt{'HALO'} \par \texttt{'NONE'}
& \texttt{'HALO'} & \texttt{'HALO'}
@ -601,7 +521,6 @@ level (continued).\label{tab:p_coarse_1}}
for neglecting it. \par for neglecting it. \par
Note that \texttt{HALO} must be chosen for Note that \texttt{HALO} must be chosen for
the classical Addditive Schwarz smoother and its RAS variant.\\ \hline the classical Addditive Schwarz smoother and its RAS variant.\\ \hline
%\verb|mld_sub_prol_| \par
\verb|'SUB_PROL'| & \verb|character(len=*)| \verb|'SUB_PROL'| & \verb|character(len=*)|
& \texttt{'SUM'} \par \texttt{'NONE'} & \texttt{'SUM'} \par \texttt{'NONE'}
& \texttt{'NONE'} & \texttt{'NONE'}
@ -610,12 +529,10 @@ level (continued).\label{tab:p_coarse_1}}
for neglecting them. \par for neglecting them. \par
Note that \texttt{SUM} must be chosen for the classical Additive Note that \texttt{SUM} must be chosen for the classical Additive
Schwarz smoother, and \texttt{NONE} for its RAS variant. \\ \hline Schwarz smoother, and \texttt{NONE} for its RAS variant. \\ \hline
%\verb|mld_sub_fillin_| \par
\verb|'SUB_FILLIN'| & \verb|integer| \verb|'SUB_FILLIN'| & \verb|integer|
& Any integer \par number~$\ge 0$ & Any integer \par number~$\ge 0$
& 0 & 0
& Fill-in level $p$ of the incomplete LU factorizations. \\ \hline & Fill-in level $p$ of the incomplete LU factorizations. \\ \hline
%\verb|mld_sub_iluthrs_| \par
\verb|'SUB_ILUTHRS'| & \verb|real(|\emph{kind\_parameter}\verb|)| \verb|'SUB_ILUTHRS'| & \verb|real(|\emph{kind\_parameter}\verb|)|
& Any real number~$\ge 0$ & Any real number~$\ge 0$
& 0 & 0
@ -637,18 +554,6 @@ level (continued).\label{tab:p_coarse_1}}
& 0 & 0
& Set an entry in the MUMPS real control array, as & Set an entry in the MUMPS real control array, as
chosen via the \verb|idx| optional argument. \\ %\hline chosen via the \verb|idx| optional argument. \\ %\hline
%\verb|mld_sub_ren_| \par \verb|SUB_REN| & \verb|character(len=*)|
% & \texttt{'RENUM\_NONE'} \texttt{'RENUM\_GLOBAL'} %, \texttt{'RENUM_GPS'}
% & \texttt{'RENUM\_NONE'}
% & Row and column reordering of the local submatrices: no reordering,
% or reordering according to the global numbering of the rows and
% columns of the whole matrix. \\
% \verb|mld_solver_eps_| \par \verb|SOLVER_EPS| & \verb|real|
% & Any~real number
% & 0
% & Stopping tolerance for iterative local solver
% (currently only Gauss-Seidel); if $\le0$, then
% perform prespecified number of iterations. \\ \hline
\hline \hline
\end{tabular} \end{tabular}
\end{center} \end{center}
@ -682,9 +587,7 @@ single/double precision version of MLD2P4 under use.
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\ \verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for & The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}.\\ 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|info| & \verb|integer, intent(out)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular} \end{tabular}
@ -717,9 +620,6 @@ hierarchy produced by a previous call to \verb|hierarchy_build|
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\ \verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for & The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}.\\ 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|info| & \verb|integer, intent(out)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & 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|. \\ \verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
@ -764,9 +664,6 @@ unnatural when dealing with simple one-level preconditioners.
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\ \verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for & The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}.\\ 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|info| & \verb|integer, intent(out)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & 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|. \\ \verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
@ -787,7 +684,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
as follows: as follows:
\begin{center} \begin{center}
\verb|call mld_precbld(p,what,val,info[,amold,vmold,imold])| \verb|call amg_precbld(p,what,val,info[,amold,vmold,imold])|
\end{center} \end{center}
\noindent \noindent
@ -813,10 +710,6 @@ and hence it is completely transparent to the user.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
% & The preconditioner data structure, containing the local part of $M$.
% Note that \emph{x} must be chosen according
% to the real/complex, single/double precision version of MLD2P4 under use.\\
\verb|x| & \emph{type}\verb|(|\emph{kind\_parameter}\verb|), dimension(:), intent(in)|.\\ \verb|x| & \emph{type}\verb|(|\emph{kind\_parameter}\verb|), dimension(:), intent(in)|.\\
& The local part of the vector $x$. Note that \emph{type} and & The local part of the vector $x$. Note that \emph{type} and
\emph{kind\_parameter} must be chosen according \emph{kind\_parameter} must be chosen according
@ -847,7 +740,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
as follows: as follows:
\begin{center} \begin{center}
\verb|call mld_precaply(p,what,val,info)| \verb|call amg_precaply(p,what,val,info)|
\end{center} \end{center}
\clearpage \clearpage
@ -864,9 +757,6 @@ This method deallocates the preconditioner data structure \verb|p|.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{10.5cm}} \begin{tabular}{p{1.2cm}p{10.5cm}}
%\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)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular} \end{tabular}
@ -876,7 +766,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
as follows: as follows:
\begin{center} \begin{center}
\verb|call mld_precfree(p,info)| \verb|call amg_precfree(p,info)|
\end{center} \end{center}
@ -896,9 +786,6 @@ or \verb|build|, have been called.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(in)|.\\
% & 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)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|iout| & \verb|integer, intent(in), optional|.\\ \verb|iout| & \verb|integer, intent(in), optional|.\\
@ -911,7 +798,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
as follows: as follows:
\begin{center} \begin{center}
\verb|call mld_precdescr(p,info [,iout])| \verb|call amg_precdescr(p,info [,iout])|
\end{center} \end{center}
@ -931,9 +818,6 @@ Dump on file.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \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)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & 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|. \\ \verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
@ -956,7 +840,7 @@ Create a (deep) copy of the preconditioner object.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|pout| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(out)|.\\ \verb|pout| & \verb|type(amg_|\emph{x}\verb|prec_type), intent(out)|.\\
& The copy of the preconditioner data structure. Note & The copy of the preconditioner data structure. Note
that \emph{x} must be chosen according 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.\\
@ -975,16 +859,6 @@ Create a (deep) copy of the preconditioner object.
\noindent \noindent
Return memory footprint in bytes. 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} \subsubsection{Method: allocate\_wrk}
\begin{center} \begin{center}
@ -1010,9 +884,6 @@ type of the \verb|x| argument to the \verb|apply| method.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \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)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & 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|. \\ \verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\
@ -1034,9 +905,6 @@ Deallocate internal work vectors.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \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)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular} \end{tabular}

Loading…
Cancel
Save