Implemented changes to AMG4PSBLAS
|
After Width: | Height: | Size: 40 KiB |
@@ -71,7 +71,7 @@ class="cmr-12">Contributors</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">3 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">3.1 </span><a
|
||||
@@ -179,7 +179,7 @@ class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">7 </span><a
|
||||
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
|
||||
class="cmr-12">8 </span><a
|
||||
href="userhtmlse8.html#x30-340008" id="QQ2-30-48"><span
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
.cmsy-8{font-size:72%;}
|
||||
.cmex-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;}
|
||||
.cmsy-10x-x-109{}
|
||||
.cmex-10x-x-109{}
|
||||
|
||||
@@ -71,7 +71,7 @@ class="cmr-12">Contributors</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">3 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">3.1 </span><a
|
||||
@@ -179,7 +179,7 @@ class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">7 </span><a
|
||||
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
|
||||
class="cmr-12">8 </span><a
|
||||
href="userhtmlse8.html#x30-340008" id="QQ2-30-48"><span
|
||||
|
||||
|
Before Width: | Height: | Size: 894 B After Width: | Height: | Size: 905 B |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 800 B After Width: | Height: | Size: 818 B |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 1023 B After Width: | Height: | Size: 1011 B |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 619 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 894 B After Width: | Height: | Size: 905 B |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
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
|
||||
class="cmcsc-10x-x-120">MLD2P4 (M<span
|
||||
class="cmcsc-10x-x-120">AMG4PSBLAS (A<span
|
||||
class="small-caps">l</span><span
|
||||
class="small-caps">g</span><span
|
||||
class="small-caps">e</span><span
|
||||
class="small-caps">b</span><span
|
||||
class="small-caps">r</span><span
|
||||
class="small-caps">a</span><span
|
||||
class="small-caps">i</span><span
|
||||
class="small-caps">c</span> M<span
|
||||
class="small-caps">u</span><span
|
||||
class="small-caps">l</span><span
|
||||
class="small-caps">t</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">l</span> D<span
|
||||
class="small-caps">o</span><span
|
||||
class="small-caps">m</span><span
|
||||
class="small-caps">a</span><span
|
||||
class="small-caps">i</span><span
|
||||
class="small-caps">n</span> D<span
|
||||
class="small-caps">e</span><span
|
||||
class="small-caps">c</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">i</span><span
|
||||
class="small-caps">o</span><span
|
||||
class="small-caps">n</span> P<span
|
||||
class="small-caps">a</span><span
|
||||
class="small-caps">i</span>G<span
|
||||
class="small-caps">r</span><span
|
||||
class="small-caps">a</span><span
|
||||
class="small-caps">l</span><span
|
||||
class="small-caps">l</span><span
|
||||
class="small-caps">e</span><span
|
||||
class="small-caps">l</span> P<span
|
||||
class="small-caps">i</span><span
|
||||
class="small-caps">d</span> P<span
|
||||
class="small-caps">r</span><span
|
||||
class="small-caps">e</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">e</span><span
|
||||
class="small-caps">r</span><span
|
||||
class="small-caps">s</span></span>
|
||||
<span
|
||||
class="cmcsc-10x-x-120">P<span
|
||||
class="small-caps">s</span> P<span
|
||||
class="small-caps">a</span><span
|
||||
class="small-caps">c</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">d</span> <span
|
||||
class="small-caps">o</span><span
|
||||
class="small-caps">n</span> PSBLAS</span><span
|
||||
class="cmr-12">) is a package of parallel algebraic multilevel</span>
|
||||
class="small-caps">n</span></span>
|
||||
<span
|
||||
class="cmr-12">preconditioners. The first release of MLD2P4 made available multilevel additive and</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">hybrid Schwarz preconditioners, as well as one-level additive Schwarz preconditioners.</span>
|
||||
class="cmr-12">PSCToolkit (Parallel Sparse Computation Toolkit) software framework. It is a progress</span>
|
||||
<span
|
||||
class="cmr-12">The package has been extended to include further multilevel cycles and smoothers</span>
|
||||
class="cmr-12">of a software development project started in 2007, named MLD2P4, which</span>
|
||||
<span
|
||||
class="cmr-12">widely used in multigrid methods. In the multilevel case, a purely algebraic approach is</span>
|
||||
class="cmr-12">implemented a multilevel version of some domain decomposition preconditioners of</span>
|
||||
<span
|
||||
class="cmr-12">applied to generate coarse-level corrections, so that no geometric background is needed</span>
|
||||
class="cmr-12">additive-Schwarz type and was based on a parallel decoupled version of the well known</span>
|
||||
<span
|
||||
class="cmr-12">concerning the matrix to be preconditioned. The matrix is assumed to be square, real</span>
|
||||
class="cmr-12">smoothed aggregation method to generate the multilevel hierarchy of coarser</span>
|
||||
<span
|
||||
class="cmr-12">or complex.</span>
|
||||
<!--l. 14--><p class="indent" > <span
|
||||
class="cmr-12">MLD2P4 has been designed to provide scalable and easy-to-use preconditioners in</span>
|
||||
class="cmr-12">matrices. In the last years, within the context of the EU-H2020 EoCoE project</span>
|
||||
<span
|
||||
class="cmr-12">the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms)</span>
|
||||
class="cmr-12">(Energy Oriented Center of Excellence), the package was extended including</span>
|
||||
<span
|
||||
class="cmr-12">computational framework and can be used in conjuction with the Krylov solvers</span>
|
||||
class="cmr-12">new algorithms and functionalities for setup and application of new AMG</span>
|
||||
<span
|
||||
class="cmr-12">available in this framework. MLD2P4 enables the user to easily specify different</span>
|
||||
class="cmr-12">preconditioners with the final aims of improving efficiency and scalability when tens of</span>
|
||||
<span
|
||||
class="cmr-12">features of an algebraic multilevel preconditioner, thus allowing to search for the “best”</span>
|
||||
class="cmr-12">thousands cores are used and of boosting reliability in dealing with general</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner for the problem at hand.</span>
|
||||
class="cmr-12">symmetric positive definite linear systems. Due to the significant number</span>
|
||||
<span
|
||||
class="cmr-12">of changes and the increase in scope, we decided to rename the package as</span>
|
||||
<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
|
||||
class="cmr-12">preconditioners in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra</span>
|
||||
<span
|
||||
class="cmr-12">Subprograms) computational framework and can be used in conjuction with the Krylov</span>
|
||||
<span
|
||||
class="cmr-12">solvers available in this framework. Our package is based on a completely algebraic</span>
|
||||
<span
|
||||
class="cmr-12">approach and users level interfaces assume that the system matrix and preconditioners</span>
|
||||
<span
|
||||
class="cmr-12">are represented as PSBLAS distributed sparse matrices. AMG4PSBLAS enables the</span>
|
||||
<span
|
||||
class="cmr-12">user to easily specify different features of an algebraic multilevel preconditioner, thus</span>
|
||||
<span
|
||||
class="cmr-12">allowing to experiment with different preconditioners for the problem and parallel</span>
|
||||
<span
|
||||
class="cmr-12">computers at hand.</span>
|
||||
<!--l. 21--><p class="indent" > <span
|
||||
class="cmr-12">The package employs object-oriented design techniques in Fortran</span><span
|
||||
class="cmr-12"> 2003, with</span>
|
||||
@@ -136,7 +137,7 @@ class="cmr-12">through PSBLAS.</span>
|
||||
<!--l. 29--><p class="indent" > <span
|
||||
class="cmr-12">This guide provides a brief description of the functionalities and the user interface</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
|
||||
class="cmr-12">3 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">3.1 </span><a
|
||||
@@ -185,7 +185,7 @@ class="cmr-12">_wrk</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">7 </span><a
|
||||
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
|
||||
class="cmr-12">8 </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
|
||||
@@ -21,37 +21,15 @@ class="cmr-12">] </span></p></div>
|
||||
<h4 class="likesubsectionHead"><a
|
||||
id="x6-50002"></a><span
|
||||
class="cmr-12">Contributors</span></h4>
|
||||
<!--l. 24--><p class="noindent" ><span
|
||||
class="cmr-12">Contributors to version 2:</span>
|
||||
<ul class="itemize1">
|
||||
<li class="itemize"><span
|
||||
class="cmr-12">Salvatore Filippone, Cranfield University, UK;</span>
|
||||
class="cmr-12">Pasqua D’Ambra, IAC-CNR, IT;</span>
|
||||
</li>
|
||||
<li class="itemize"><span
|
||||
class="cmr-12">Pasqua D’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 “L. Vanvitelli”, Caserta, IT;</span>
|
||||
</li>
|
||||
<li class="itemize"><span
|
||||
class="cmr-12">Ambra Abdullahi Hassan, University of Rome “Tor Vergata”, 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’Ambra;</span>
|
||||
</li>
|
||||
<li class="itemize"><span
|
||||
class="cmr-12">Daniela di Serafino;</span>
|
||||
</li>
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -33,39 +33,22 @@ class="cmr-12">1 </span></span> <a
|
||||
class="cmr-12">General Overview</span></h3>
|
||||
<!--l. 5--><p class="noindent" ><span
|
||||
class="cmr-12">The </span><span
|
||||
class="cmcsc-10x-x-120">M<span
|
||||
class="cmcsc-10x-x-120">A<span
|
||||
class="small-caps">l</span><span
|
||||
class="small-caps">g</span><span
|
||||
class="small-caps">e</span><span
|
||||
class="small-caps">b</span><span
|
||||
class="small-caps">r</span><span
|
||||
class="small-caps">a</span><span
|
||||
class="small-caps">i</span><span
|
||||
class="small-caps">c</span> M<span
|
||||
class="small-caps">u</span><span
|
||||
class="small-caps">l</span><span
|
||||
class="small-caps">t</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">l</span> D<span
|
||||
class="small-caps">o</span><span
|
||||
class="small-caps">m</span><span
|
||||
class="small-caps">a</span><span
|
||||
class="small-caps">i</span><span
|
||||
class="small-caps">n</span> D<span
|
||||
class="small-caps">e</span><span
|
||||
class="small-caps">c</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">i</span><span
|
||||
class="small-caps">o</span><span
|
||||
class="small-caps">n</span> P<span
|
||||
class="small-caps">a</span><span
|
||||
class="small-caps">i</span>G<span
|
||||
class="small-caps">r</span><span
|
||||
class="small-caps">a</span><span
|
||||
class="small-caps">l</span><span
|
||||
class="small-caps">l</span><span
|
||||
class="small-caps">e</span><span
|
||||
class="small-caps">l</span> P<span
|
||||
class="small-caps">i</span><span
|
||||
class="small-caps">d</span> P<span
|
||||
class="small-caps">r</span><span
|
||||
class="small-caps">e</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">e</span><span
|
||||
class="small-caps">r</span><span
|
||||
class="small-caps">s</span></span>
|
||||
<span
|
||||
class="cmcsc-10x-x-120">P<span
|
||||
class="small-caps">s</span> P<span
|
||||
class="small-caps">a</span><span
|
||||
class="small-caps">c</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">d</span> <span
|
||||
class="small-caps">o</span><span
|
||||
class="small-caps">n</span> PSBLAS (MLD2P4</span><span
|
||||
class="cmr-12">) provides parallel Algebraic MultiGrid</span>
|
||||
class="small-caps">n</span> PSBLAS</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
|
||||
href="userhtmlli4.html#XBriggs2000"><span
|
||||
class="cmr-12">3</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#XStuben_01"><span
|
||||
class="cmr-12">24</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#Xdd2_96"><span
|
||||
class="cmr-12">22</span></a><span
|
||||
class="cmr-12">26</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">), to be used</span>
|
||||
<span
|
||||
class="cmr-12">in the iterative solution of linear systems,</span>
|
||||
class="cmr-12">), to be used in the iterative solution of linear systems,</span>
|
||||
<table
|
||||
class="equation"><tr><td>
|
||||
<center class="math-display" >
|
||||
@@ -121,25 +98,19 @@ src="userhtml0x.png" alt="Ax = b,
|
||||
" class="math-display" ><a
|
||||
id="x4-3001r1"></a></center></td><td class="equation-label"><span
|
||||
class="cmr-12">(1)</span></td></tr></table>
|
||||
<!--l. 12--><p class="nopar" >
|
||||
<!--l. 11--><p class="nopar" >
|
||||
<span
|
||||
class="cmr-12">where </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>
|
||||
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
|
||||
class="cmr-12">preconditioners, as well as one-level additive Schwarz preconditioners. The current</span>
|
||||
class="cmr-12">different types of AMG cycles with smoothers and coarsest-level solvers. The V-, W-,</span>
|
||||
<span
|
||||
class="cmr-12">version extends the original plan by including multilevel cycles and smoothers widely</span>
|
||||
<span
|
||||
class="cmr-12">used in multigrid methods.</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">and a version of a Krylov-type cycle (K-cycle)</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
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><a
|
||||
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">are available, which allow to define almost all the preconditioners in</span>
|
||||
class="cmr-12">are available, which can be</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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
class="cmr-12">information on the geometry of the original problem, e.g., the discretization of a</span>
|
||||
<span
|
||||
class="cmr-12">PDE. To this end, the smoothed aggregation technique</span><span
|
||||
class="cmr-12">available:</span>
|
||||
<ul class="itemize1">
|
||||
<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"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
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><a
|
||||
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"> </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"> </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"> </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"> </span><a
|
||||
href="userhtmlli4.html#XDFV2018"><span
|
||||
class="cmr-12">30</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">is applied.</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>
|
||||
class="cmr-12">and described in</span>
|
||||
|
||||
|
||||
|
||||
<span
|
||||
class="cmr-12">details in</span><span
|
||||
class="cmr-12"> </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">block-Jacobi solvers are available. All smoothers can be also exploited as one-level</span>
|
||||
class="cmr-12">Specifically, different sparse LU factorizations from external packages, native</span>
|
||||
<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
|
||||
class="cmr-12">preconditioners.</span>
|
||||
<!--l. 42--><p class="indent" > <span
|
||||
class="cmr-12">MLD2P4 is written in Fortran</span><span
|
||||
<!--l. 36--><p class="indent" > <span
|
||||
class="cmr-12">AMG4PSBLAS is written in Fortran</span><span
|
||||
class="cmr-12"> 2003, following an object-oriented design</span>
|
||||
<span
|
||||
class="cmr-12">through the exploitation of features such as abstract data type creation, type</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
|
||||
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
|
||||
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
|
||||
class="cmr-12">for both the real and the complex case, which can be used through a single</span>
|
||||
<span
|
||||
class="cmr-12">interface.</span>
|
||||
<!--l. 53--><p class="indent" > <span
|
||||
class="cmr-12">MLD2P4 has been designed to implement scalable and easy-to-use multilevel</span>
|
||||
<!--l. 46--><p class="indent" > <span
|
||||
class="cmr-12">AMG4PSBLAS has been designed to implement scalable and easy-to-use multilevel</span>
|
||||
<span
|
||||
class="cmr-12">preconditioners in the context of the PSBLAS (Parallel Sparse BLAS) computational</span>
|
||||
<span
|
||||
@@ -211,39 +220,43 @@ class="cmr-12">framework</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
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><a
|
||||
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">. PSBLAS provides basic linear algebra operators and data</span>
|
||||
<span
|
||||
class="cmr-12">management facilities for distributed sparse matrices, as well as parallel Krylov solvers</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">mainly motivated by the need of having a portable and efficient software infrastructure</span>
|
||||
class="cmr-12">has been mainly motivated by the need of having a portable and efficient</span>
|
||||
<span
|
||||
class="cmr-12">implementing “de facto” standard parallel sparse linear algebra kernels, to pursue goals</span>
|
||||
class="cmr-12">software infrastructure implementing “de facto” standard parallel sparse linear</span>
|
||||
<span
|
||||
class="cmr-12">such as performance, portability, modularity ed extensibility in the development of the</span>
|
||||
class="cmr-12">algebra kernels, to pursue goals such as performance, portability, modularity</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner package. On the other hand, the implementation of MLD2P4 has led to</span>
|
||||
class="cmr-12">ed extensibility in the development of the preconditioner package. On the</span>
|
||||
<span
|
||||
class="cmr-12">some revisions and extentions of the original PSBLAS kernels. The inter-process</span>
|
||||
class="cmr-12">other hand, the implementation of AMG4PSBLAS, which was driven by the</span>
|
||||
<span
|
||||
class="cmr-12">comunication required by MLD2P4 is encapsulated in the PSBLAS routines; therefore,</span>
|
||||
class="cmr-12">need to face the exascale challenge, has led to some important revisions and</span>
|
||||
<span
|
||||
class="cmr-12">MLD2P4 can be run on any parallel machine where PSBLAS implementations are</span>
|
||||
class="cmr-12">extentions of the PSBLAS infrastructure. The inter-process comunication</span>
|
||||
<span
|
||||
class="cmr-12">available.</span>
|
||||
<!--l. 70--><p class="indent" > <span
|
||||
class="cmr-12">MLD2P4 has a layered and modular software architecture where three main layers</span>
|
||||
class="cmr-12">required by AMG4PSBLAS is encapsulated in the PSBLAS routines; therefore,</span>
|
||||
<span
|
||||
class="cmr-12">can be identified. The lower layer consists of the PSBLAS kernels, the middle one</span>
|
||||
class="cmr-12">AMG4PSBLAS can be run on any parallel machine where PSBLAS implementations</span>
|
||||
<span
|
||||
class="cmr-12">implements the construction and application phases of the preconditioners, and the</span>
|
||||
class="cmr-12">are available.</span>
|
||||
<!--l. 61--><p class="indent" > <span
|
||||
class="cmr-12">AMG4PSBLAS has a layered and modular software architecture where three main</span>
|
||||
<span
|
||||
class="cmr-12">layers can be identified. The lower layer consists of the PSBLAS kernels, the middle</span>
|
||||
<span
|
||||
class="cmr-12">one implements the construction and application phases of the preconditioners, and the</span>
|
||||
<span
|
||||
class="cmr-12">upper one provides a uniform interface to all the preconditioners. This architecture</span>
|
||||
<span
|
||||
@@ -251,7 +264,7 @@ class="cmr-12">allows for different levels of use of the package: few black-box
|
||||
<span
|
||||
class="cmr-12">layer allow all users to easily build and apply any preconditioner available in</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
|
||||
class="cmr-12">smoothers and solvers for building new versions of the preconditioners (see</span>
|
||||
<span
|
||||
@@ -260,28 +273,7 @@ class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x29-330007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:adding --></a><span
|
||||
class="cmr-12">).</span>
|
||||
<!--l. 81--><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"> </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"> 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
|
||||
<!--l. 72--><p class="indent" > <span
|
||||
class="cmr-12">This guide is organized as follows. General information on the distribution of the</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"> </span><a
|
||||
href="userhtmlse3.html#x7-60003"><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"> </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>
|
||||
|
||||
|
||||
|
||||
class="cmr-12">preconditioners with the Krylov solvers implemented in PSBLAS are reported</span>
|
||||
<span
|
||||
class="cmr-12">them. The basics for building and applying the preconditioners with the Krylov solvers</span>
|
||||
<span
|
||||
class="cmr-12">implemented in PSBLAS are reported in</span><span
|
||||
class="cmr-12">in</span><span
|
||||
class="cmr-12"> Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse5.html#x17-160005"><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
|
||||
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"> </span><a
|
||||
href="userhtmlse6.html#x19-180006"><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">addition of new smoothers and solvers is reported in Section</span><span
|
||||
class="cmr-12">Information on the extension of the package through the addition of new</span>
|
||||
<span
|
||||
class="cmr-12">smoothers and solvers is reported in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x29-330007"><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
|
||||
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"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><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
|
||||
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
|
||||
class="cmr-12">Appendix</span><span
|
||||
class="cmr-12"> </span><a
|
||||
|
||||
@@ -32,10 +32,10 @@ class="cmr-12">2 </span></span> <a
|
||||
id="x5-40002"></a><span
|
||||
class="cmr-12">Code Distribution</span></h3>
|
||||
<!--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">
|
||||
<!--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
|
||||
class="cmr-12">where contact points for further information can be also found.</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>
|
||||
<center class="math-display" >
|
||||
<img
|
||||
src="userhtml1x.png" alt="mld_version_string_
|
||||
src="userhtml1x.png" alt="amg_version_string_
|
||||
" class="math-display" ></center>
|
||||
<!--l. 20--><p class="nopar" > <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>
|
||||
<!--l. 23--><p class="noindent" >
|
||||
<div class="likesubsectionTOCS">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<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 name="generator" 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
|
||||
class="cmr-12">3 </span></span> <a
|
||||
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
|
||||
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
|
||||
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
|
||||
@@ -42,47 +42,49 @@ class="cmr-12">distribution also includes the autoconf and automake sources empl
|
||||
<span
|
||||
class="cmr-12">script, but usually this is not needed to build the software.</span>
|
||||
<!--l. 10--><p class="indent" > <span
|
||||
class="cmr-12">MLD2P4 is implemented almost entirely in Fortran</span><span
|
||||
class="cmr-12"> 2003, with some interfaces to</span>
|
||||
class="cmr-12">AMG4PSBLAS is implemented almost entirely in Fortran</span><span
|
||||
class="cmr-12"> 2003, with some</span>
|
||||
<span
|
||||
class="cmr-12">external libraries in C; the Fortran compiler must support the Fortran</span><span
|
||||
class="cmr-12"> 2003 standard</span>
|
||||
class="cmr-12">interfaces to external libraries in C; the Fortran compiler must support the</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"> 2003 standard plus the extension </span><span class="obeylines-h"><span class="verb"><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>
|
||||
<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</span>
|
||||
class="cmr-12">. Many compilers do this; in particular, this is supported by the GNU</span>
|
||||
<span
|
||||
class="cmr-12">compilers do this; in particular, this is supported by the GNU Fortran compiler, for</span>
|
||||
class="cmr-12">Fortran compiler, for which we recommend to use at least version 4.8. The software</span>
|
||||
<span
|
||||
class="cmr-12">which we recommend to use at least version 4.8. The software defines data</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
|
||||
class="cmr-12">precision.</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"> </span><a
|
||||
href="userhtmlsu1.html#x8-70003.1"><span
|
||||
class="cmr-12">3.1</span><!--tex4ht:ref: sec:prerequisites --></a><span
|
||||
class="cmr-12">); interfaces to</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
|
||||
class="cmr-12">Section</span><span
|
||||
class="cmr-12">(see Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu2.html#x9-80003.2"><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
|
||||
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
|
||||
class="cmr-12">many cases these packages are split between a runtime part and a “developer” part; in</span>
|
||||
class="cmr-12">software. In many cases these packages are split between a runtime part and a</span>
|
||||
<span
|
||||
class="cmr-12">order to build MLD2P4 you need both. A description of the base and optional software</span>
|
||||
class="cmr-12">“developer” part; in order to build AMG4PSBLAS you need both. A description of</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" >
|
||||
<div class="subsectionTOCS">
|
||||
<span
|
||||
@@ -115,22 +117,22 @@ class="cmr-12">Example and test programs</span></a></span>
|
||||
|
||||
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse4.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse2.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse2.html#tailuserhtmlse2.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse3.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse3.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 1--><p class="indent" > <a
|
||||
id="tailuserhtmlse3.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -11,188 +11,199 @@
|
||||
</head><body
|
||||
>
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse5.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse3.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse3.html#tailuserhtmlse3.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlse4.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse4.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Multigrid Background</span></h3>
|
||||
class="cmbx-12">Multigrid Background</span></h3>
|
||||
<!--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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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="cmr-12">consisting of smoother iterations and a coarse-space (or coarse-level) correction. The</span>
|
||||
class="cmbx-12">two-grid process consisting of smoother iterations and a coarse-space (or</span>
|
||||
<span
|
||||
class="cmr-12">smoothers may be either basic iterative methods, such as the Jacobi and Gauss-Seidel</span>
|
||||
class="cmbx-12">coarse-level) correction. The smoothers may be either basic iterative</span>
|
||||
<span
|
||||
class="cmr-12">ones, or more complex subspace-correction methods, such as the Schwarz ones. The</span>
|
||||
class="cmbx-12">methods, such as the Jacobi and Gauss-Seidel ones, or more complex</span>
|
||||
<span
|
||||
class="cmr-12">coarse-space correction consists of solving, in an appropriately chosen coarse space, the</span>
|
||||
class="cmbx-12">subspace-correction methods, such as the Schwarz ones. The coarse-space</span>
|
||||
<span
|
||||
class="cmr-12">residual equation associated with the approximate solution computed by the</span>
|
||||
class="cmbx-12">correction consists of solving, in an appropriately chosen coarse space, the</span>
|
||||
<span
|
||||
class="cmr-12">smoother, and of using the solution of this equation to correct the previous</span>
|
||||
class="cmbx-12">residual equation associated with the approximate solution computed by</span>
|
||||
<span
|
||||
class="cmr-12">approximation. The transfer of information between the original (fine) space and</span>
|
||||
class="cmbx-12">the smoother, and of using the solution of this equation to correct the</span>
|
||||
<span
|
||||
class="cmr-12">the coarse one is performed by using suitable restriction and prolongation</span>
|
||||
class="cmbx-12">previous approximation. The transfer of information between the original</span>
|
||||
<span
|
||||
class="cmr-12">operators. The construction of the coarse space and the corresponding transfer</span>
|
||||
class="cmbx-12">(fine) space and the coarse one is performed by using suitable restriction</span>
|
||||
<span
|
||||
class="cmr-12">operators is carried out by applying a so-called coarsening algorithm to the</span>
|
||||
class="cmbx-12">and prolongation operators. The construction of the coarse space and the</span>
|
||||
<span
|
||||
class="cmr-12">system matrix. Two main approaches can be used to perform coarsening:</span>
|
||||
class="cmbx-12">corresponding transfer operators is carried out by applying a so-called</span>
|
||||
<span
|
||||
class="cmr-12">the geometric approach, which exploits the knowledge of some physical grid</span>
|
||||
class="cmbx-12">coarsening algorithm to the system matrix. Two main approaches</span>
|
||||
<span
|
||||
class="cmr-12">associated with the matrix and requires the user to define transfer operators</span>
|
||||
class="cmbx-12">can be used to perform coarsening: the geometric approach, which</span>
|
||||
<span
|
||||
class="cmr-12">from the fine to the coarse level and vice versa, and the algebraic approach,</span>
|
||||
class="cmbx-12">exploits the knowledge of some physical grid associated with the</span>
|
||||
<span
|
||||
class="cmr-12">which builds the coarse-space correction and the associate transfer operators</span>
|
||||
class="cmbx-12">matrix and requires the user to define transfer operators from the</span>
|
||||
<span
|
||||
class="cmr-12">using only matrix information. The first approach may be difficult when the</span>
|
||||
class="cmbx-12">fine to the coarse level and vice versa, and the algebraic approach,</span>
|
||||
<span
|
||||
class="cmr-12">system comes from discretizations on complex geometries; furthermore, ad hoc</span>
|
||||
class="cmbx-12">which builds the coarse-space correction and the associate transfer</span>
|
||||
<span
|
||||
class="cmr-12">one-level smoothers may be required to get an efficient interplay between</span>
|
||||
class="cmbx-12">operators using only matrix information. The first approach may be</span>
|
||||
<span
|
||||
class="cmr-12">fine and coarse levels, e.g., when matrices with highly varying coefficients are</span>
|
||||
class="cmbx-12">difficult when the system comes from discretizations on complex</span>
|
||||
<span
|
||||
class="cmr-12">considered. The second approach performs a fully automatic coarsening and</span>
|
||||
class="cmbx-12">geometries; furthermore, ad hoc one-level smoothers may be required to</span>
|
||||
<span
|
||||
class="cmr-12">enforces the interplay between fine and coarse level by suitably choosing the</span>
|
||||
class="cmbx-12">get an efficient interplay between fine and coarse levels, e.g., when</span>
|
||||
<span
|
||||
class="cmr-12">coarse space and the coarse-to-fine interpolation (see, e.g., </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">matrices with highly varying coefficients are considered. The second</span>
|
||||
<span
|
||||
class="cmbx-12">approach performs a fully automatic coarsening and enforces the</span>
|
||||
<span
|
||||
class="cmbx-12">interplay between fine and coarse level by suitably choosing the coarse</span>
|
||||
<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
|
||||
class="cmr-12">3</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">3</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlli4.html#XStuben_01"><span
|
||||
class="cmr-12">24</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">26</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlli4.html#Xdd2_96"><span
|
||||
class="cmr-12">22</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">for</span>
|
||||
<span
|
||||
class="cmr-12">details.)</span>
|
||||
<!--l. 37--><p class="indent" > <span
|
||||
class="cmr-12">MLD2P4 uses a pure algebraic approach, based on the smoothed aggregation</span>
|
||||
<span
|
||||
class="cmr-12">algorithm </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XBREZINA_VANEK"><span
|
||||
class="cmr-12">2</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
|
||||
class="cmr-12">26</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">, for building the sequence of coarse matrices and transfer</span>
|
||||
<span
|
||||
class="cmr-12">operators, starting from the original one. A decoupled version of this algorithm</span>
|
||||
class="cmbx-12">24</span></a><span
|
||||
class="cmbx-12">]</span></span> <span
|
||||
class="cmbx-12">for</span>
|
||||
|
||||
|
||||
|
||||
<span
|
||||
class="cmr-12">is implemented, where the smoothed aggregation is applied locally to each</span>
|
||||
class="cmbx-12">details.)</span>
|
||||
<!--l. 37--><p class="indent" > <span
|
||||
class="cmbx-12">MLD2P4 uses a pure algebraic approach, based on the smoothed</span>
|
||||
<span
|
||||
class="cmr-12">submatrix </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">aggregation algorithm </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XBREZINA_VANEK"><span
|
||||
class="cmbx-12">2</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
|
||||
class="cmbx-12">28</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">, for building the sequence of coarse matrices</span>
|
||||
<span
|
||||
class="cmbx-12">and transfer operators, starting from the original one. A decoupled version</span>
|
||||
<span
|
||||
class="cmbx-12">of this algorithm is implemented, where the smoothed aggregation is</span>
|
||||
<span
|
||||
class="cmbx-12">applied locally to each submatrix </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XTUMINARO_TONG"><span
|
||||
class="cmr-12">25</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">. A brief description of the AMG preconditioners implemented in</span>
|
||||
class="cmbx-12">27</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">. A brief description of the AMG</span>
|
||||
<span
|
||||
class="cmr-12">MLD2P4 is given in Sections</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">preconditioners implemented in MLD2P4 is given in Sections</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu6.html#x14-130004.1"><span
|
||||
class="cmr-12">4.1</span><!--tex4ht:ref: sec:multilevel --></a><span
|
||||
class="cmr-12">-</span><a
|
||||
class="cmbx-12">4.1</span><!--tex4ht:ref: sec:multilevel --></a><span
|
||||
class="cmbx-12">-</span><a
|
||||
href="userhtmlsu8.html#x16-150004.3"><span
|
||||
class="cmr-12">4.3</span><!--tex4ht:ref: sec:smoothers --></a><span
|
||||
class="cmr-12">. For further details the reader is referred to</span>
|
||||
<span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">4.3</span><!--tex4ht:ref: sec:smoothers --></a><span
|
||||
class="cmbx-12">. For</span>
|
||||
<span
|
||||
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
|
||||
class="cmr-12">4</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">4</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlli4.html#Xaaecc_07"><span
|
||||
class="cmr-12">5</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">5</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlli4.html#Xapnum_07"><span
|
||||
class="cmr-12">7</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">7</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-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">.</span>
|
||||
class="cmbx-12">8</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</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="cmr-12">minimum execution times in a parallel setting. Indeed, to obtain effective parallel</span>
|
||||
class="cmbx-12">correspond to minimum execution times in a parallel setting. Indeed, to</span>
|
||||
<span
|
||||
class="cmr-12">multigrid preconditioners, a tradeoff between the optimality and the cost of</span>
|
||||
class="cmbx-12">obtain effective parallel multigrid preconditioners, a tradeoff between the</span>
|
||||
<span
|
||||
class="cmr-12">building and applying the smoothers and the coarse-space corrections must be</span>
|
||||
class="cmbx-12">optimality and the cost of building and applying the smoothers and</span>
|
||||
<span
|
||||
class="cmr-12">achieved. Effective parallel preconditioners require algorithmic scalability to</span>
|
||||
class="cmbx-12">the coarse-space corrections must be achieved. Effective parallel</span>
|
||||
<span
|
||||
class="cmr-12">be coupled with implementation scalability, i.e., a computational cost per</span>
|
||||
class="cmbx-12">preconditioners require algorithmic scalability to be coupled with</span>
|
||||
<span
|
||||
class="cmr-12">iteration which remains (almost) constant as the number of parallel processors</span>
|
||||
class="cmbx-12">implementation scalability, i.e., a computational cost per iteration</span>
|
||||
<span
|
||||
class="cmr-12">increases.</span>
|
||||
class="cmbx-12">which remains (almost) constant as the number of parallel processors</span>
|
||||
<span
|
||||
class="cmbx-12">increases.</span>
|
||||
<!--l. 56--><p class="noindent" >
|
||||
<div class="subsectionTOCS">
|
||||
<span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.1 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">4.1 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.2 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">4.2 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.3 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">4.3 </span><a
|
||||
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>
|
||||
|
||||
|
||||
@@ -200,22 +211,22 @@ class="cmr-12">Smoothers and coarsest-level solvers</span></a></span>
|
||||
|
||||
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse5.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse3.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse3.html#tailuserhtmlse3.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse4.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 1--><p class="indent" > <a
|
||||
id="tailuserhtmlse4.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -11,215 +11,227 @@
|
||||
</head><body
|
||||
>
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse6.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html#tailuserhtmlse4.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlse5.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse5.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Getting Started</span></h3>
|
||||
class="cmbx-12">Getting Started</span></h3>
|
||||
<!--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
|
||||
class="cmr-12">(i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">and multilevel (i.e., AMG) preconditioners with the Krylov solvers included</span>
|
||||
<span
|
||||
class="cmbx-12">in PSBLAS </span><span class="cite"><span
|
||||
class="cmbx-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
|
||||
class="cmr-12">following steps are required:</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" >
|
||||
<li
|
||||
class="enumerate" id="x17-16002x1"><span
|
||||
class="cmti-12">Declare the preconditioner data structure</span><span
|
||||
class="cmr-12">. It is a derived data type,</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">mld_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbxti-10x-x-120">Declare the preconditioner data structure</span><span
|
||||
class="cmbx-12">. It is a derived data</span>
|
||||
<span
|
||||
class="cmbx-12">type, </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">type</span></span></span><span
|
||||
class="cmr-12">, where </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">may be </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">, where </span><span
|
||||
class="cmbxti-10x-x-120">x </span><span
|
||||
class="cmbx-12">may be </span><span class="obeylines-h"><span class="verb"><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="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="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="cmr-12">, according to the basic</span>
|
||||
class="cmbx-12">, according to the</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="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="cmr-12">= real double</span>
|
||||
class="cmbx-12">=</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="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="cmr-12">= complex double precision). This</span>
|
||||
class="cmbx-12">= complex</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
|
||||
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
|
||||
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="cmti-12">preconditioner type chosen by the user</span><span
|
||||
class="cmr-12">. This is performed by the routine</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbxti-10x-x-120">according to a preconditioner type chosen by the user</span><span
|
||||
class="cmbx-12">. This is</span>
|
||||
<span
|
||||
class="cmbx-12">performed by the routine </span><span class="obeylines-h"><span class="verb"><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
|
||||
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
|
||||
class="cmr-12">are given in Table</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">and the defaults associated with them are given in Table</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="#x17-160151"><span
|
||||
class="cmr-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">1</span><!--tex4ht:ref: tab:precinit --></a><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="cmr-12">to identify the</span>
|
||||
class="cmbx-12">to identify the preconditioner types are</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
|
||||
class="cmr-12">uppercase letters are substituted by corresponding lowercase ones.</span>
|
||||
class="cmbx-12">are substituted by corresponding lowercase ones.</span>
|
||||
</li>
|
||||
<li
|
||||
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
|
||||
class="cmti-12">parameters. </span><span
|
||||
class="cmr-12">This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbxti-10x-x-120">preconditioner parameters. </span><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="cmr-12">. This routine must be</span>
|
||||
class="cmbx-12">.</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
|
||||
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
|
||||
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="cmr-12">are given in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">are given in Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu9.html#x18-170005.1"><span
|
||||
class="cmr-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
|
||||
class="cmr-12">; a complete</span>
|
||||
class="cmbx-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
|
||||
class="cmbx-12">; a complete list</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
|
||||
class="cmr-12">is provided in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">values is provided in Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse6.html#x19-180006"><span
|
||||
class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span
|
||||
class="cmr-12">, Tables</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span
|
||||
class="cmbx-12">, Tables</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu11.html#x21-200092"><span
|
||||
class="cmr-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span
|
||||
class="cmr-12">-</span><a
|
||||
class="cmbx-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span
|
||||
class="cmbx-12">-</span><a
|
||||
href="userhtmlsu11.html#x21-200158"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span
|
||||
class="cmr-12">.</span>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span
|
||||
class="cmbx-12">.</span>
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x17-16008x4"><span
|
||||
class="cmti-12">Build the preconditioner for a given matrix</span><span
|
||||
class="cmr-12">. If the selected preconditioner is</span>
|
||||
class="cmbxti-10x-x-120">Build the preconditioner for a given matrix</span><span
|
||||
class="cmbx-12">. If the selected</span>
|
||||
<span
|
||||
class="cmr-12">multilevel, then two steps must be performed, as specified next.</span>
|
||||
<ol class="enumerate2" >
|
||||
<li
|
||||
class="enumerate" id="x17-16009x0"><span
|
||||
class="cmti-12">Build the aggregation hierarchy for a given matrix. </span><span
|
||||
class="cmr-12">This is performed</span>
|
||||
<span
|
||||
class="cmr-12">by the routine </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">hierarchy_build</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
class="cmbx-12">preconditioner is multilevel, then two steps must be performed, as</span>
|
||||
<span
|
||||
class="cmbx-12">specified next.</span>
|
||||
|
||||
|
||||
|
||||
<ol class="enumerate2" >
|
||||
<li
|
||||
class="enumerate" id="x17-16009x0"><span
|
||||
class="cmbxti-10x-x-120">Build the aggregation hierarchy for a given matrix. </span><span
|
||||
class="cmbx-12">This is</span>
|
||||
<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="cmbx-12">.</span>
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x17-16010x0"><span
|
||||
class="cmti-12">Build the preconditioner for a given matrix. </span><span
|
||||
class="cmr-12">This is performed by the</span>
|
||||
class="cmbxti-10x-x-120">Build the preconditioner for a given matrix. </span><span
|
||||
class="cmbx-12">This is</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="cmr-12">.</span></li></ol>
|
||||
<!--l. 48--><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">.</span></li></ol>
|
||||
<!--l. 41--><p class="noindent" ><span
|
||||
class="cmbx-12">If the selected preconditioner is one-level, it is built in a single step,</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="cmr-12">.</span>
|
||||
class="cmbx-12">.</span>
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x17-16012x5"><span
|
||||
class="cmti-12">Apply the preconditioner at each iteration of a Krylov solver. </span><span
|
||||
class="cmr-12">This is performed by</span>
|
||||
class="cmbxti-10x-x-120">Apply the preconditioner at each iteration of a Krylov solver. </span><span
|
||||
class="cmbx-12">This is</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="cmr-12">. When using the PSBLAS Krylov solvers, this step is</span>
|
||||
class="cmbx-12">. When using the PSBLAS Krylov</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="cmr-12">is called by the PSBLAS routine</span>
|
||||
class="cmbx-12">is</span>
|
||||
<span
|
||||
class="cmr-12">implementing the Krylov solver (</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">called by the PSBLAS routine implementing the Krylov solver</span>
|
||||
<span
|
||||
class="cmbx-12">(</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">psb_krylov</span></span></span><span
|
||||
class="cmr-12">).</span>
|
||||
class="cmbx-12">).</span>
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x17-16014x6"><span
|
||||
class="cmti-12">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="cmbxti-10x-x-120">Free the preconditioner data structure</span><span
|
||||
class="cmbx-12">. This is performed by the</span>
|
||||
<span
|
||||
class="cmbx-12">routine </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">free</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
class="cmbx-12">. This step is complementary to step 1 and should be</span>
|
||||
<span
|
||||
class="cmr-12">This step is complementary to step 1 and should be performed when the</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner is no more used.</span></li></ol>
|
||||
<!--l. 59--><p class="indent" > <span
|
||||
class="cmr-12">All the previous routines are available as methods of the preconditioner object. A</span>
|
||||
class="cmbx-12">performed when the preconditioner is no more used.</span></li></ol>
|
||||
<!--l. 52--><p class="indent" > <span
|
||||
class="cmbx-12">All the previous routines are available as methods of the preconditioner</span>
|
||||
<span
|
||||
class="cmr-12">detailed description of them is given in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">object. A detailed description of them is given in Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse6.html#x19-180006"><span
|
||||
class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span
|
||||
class="cmr-12">. Examples showing the basic use of</span>
|
||||
class="cmbx-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span
|
||||
class="cmbx-12">. Examples</span>
|
||||
<span
|
||||
class="cmr-12">MLD2P4 are reported in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">showing the basic use of AMG4PSBLAS are reported in Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu9.html#x18-170005.1"><span
|
||||
class="cmr-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
|
||||
class="cmr-12">.</span>
|
||||
class="cmbx-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
|
||||
class="cmbx-12">.</span>
|
||||
<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"
|
||||
>
|
||||
|
||||
@@ -227,7 +239,7 @@ class="cmr-12">.</span>
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 64--><p class="noindent" >
|
||||
<!--l. 57--><p class="noindent" >
|
||||
<div class="tabular"> <table id="TBL-1" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><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">p</span><span
|
||||
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="small-caps">s</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">n</span><span
|
||||
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="small-caps">d</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
|
||||
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"><!--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">’NONE’</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>
|
||||
</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"
|
||||
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">’DIAG’</span></span></span> or
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’JACOBI’</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
|
||||
corresponding entry of the preconditioner is set
|
||||
to 1. </td>
|
||||
@@ -296,41 +308,41 @@ to 1. </td>
|
||||
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"
|
||||
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">’GS’</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>
|
||||
</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"
|
||||
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">’FBGS’</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
|
||||
followed by backward Gauss-Seidel. </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"
|
||||
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">’BJAC’</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
|
||||
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"
|
||||
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">’AS’</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 1 and
|
||||
class="td11"><!--l. 74--><p class="noindent" >Additive Schwarz (AS), with overlap 1 and
|
||||
ILU(0) on the local blocks. </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"
|
||||
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">’ML’</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
|
||||
backward GS sweep as post-smoother, basic
|
||||
smoothed aggregation as coarsening algorithm,
|
||||
@@ -352,68 +364,73 @@ class="content">Preconditioner types, corresponding strings and default choices.
|
||||
|
||||
</div><hr class="endfloat" />
|
||||
</div>
|
||||
<!--l. 98--><p class="indent" > <span
|
||||
class="cmr-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="cmr-12">, containing the definition of the preconditioner</span>
|
||||
<!--l. 91--><p class="indent" > <span
|
||||
class="cmbx-12">Note that the module </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">amg_prec_mod</span></span></span><span
|
||||
class="cmbx-12">, containing the definition of</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">the preconditioner data type and the interfaces to the routines of</span>
|
||||
<span
|
||||
class="cmr-12">calling such routines. The modules </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">AMG4PSBLAS, must be used in any program calling such routines. The</span>
|
||||
<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="cmr-12">, for the sparse matrix and</span>
|
||||
class="cmbx-12">, for the sparse matrix and communication descriptor</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="cmr-12">, for interfacing with the</span>
|
||||
class="cmbx-12">, for interfacing with the Krylov solvers,</span>
|
||||
<span
|
||||
class="cmr-12">Krylov solvers, must be also used (see Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">must be also used (see Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu9.html#x18-170005.1"><span
|
||||
class="cmr-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
|
||||
class="cmr-12">). </span><br
|
||||
class="cmbx-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
|
||||
class="cmbx-12">). </span><br
|
||||
class="newline" />
|
||||
<!--l. 105--><p class="indent" > <span
|
||||
class="cmbx-12">Remark 1. </span><span
|
||||
class="cmr-12">Coarsest-level solvers based on the LU factorization, such as those</span>
|
||||
<!--l. 98--><p class="indent" > <span
|
||||
class="cmbx-12">Remark 1. Coarsest-level solvers based on the LU factorization, such as</span>
|
||||
<span
|
||||
class="cmr-12">implemented in UMFPACK, MUMPS, SuperLU, and SuperLU</span><span
|
||||
class="cmr-12">_Dist, usually lead to</span>
|
||||
class="cmbx-12">those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU</span><span
|
||||
class="cmbx-12">_Dist,</span>
|
||||
<span
|
||||
class="cmr-12">smaller numbers of preconditioned Krylov iterations than inexact solvers, when the</span>
|
||||
class="cmbx-12">usually lead to smaller numbers of preconditioned Krylov iterations</span>
|
||||
<span
|
||||
class="cmr-12">linear system comes from a standard discretization of basic scalar elliptic PDE</span>
|
||||
class="cmbx-12">than inexact solvers, when the linear system comes from a standard</span>
|
||||
<span
|
||||
class="cmr-12">problems. However, this does not necessarily correspond to the smallest execution time</span>
|
||||
class="cmbx-12">discretization of basic scalar elliptic PDE problems. However, this does not</span>
|
||||
<span
|
||||
class="cmr-12">on parallel computers.</span>
|
||||
class="cmbx-12">necessarily correspond to the smallest execution time on parallel</span>
|
||||
<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">
|
||||
<span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.1 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">5.1 </span><a
|
||||
href="userhtmlsu9.html#x18-170005.1"><span
|
||||
class="cmr-12">Examples</span></a></span>
|
||||
class="cmbx-12">Examples</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse6.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html#tailuserhtmlse4.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse5.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse5.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 1--><p class="indent" > <a
|
||||
id="tailuserhtmlse5.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -11,234 +11,239 @@
|
||||
</head><body
|
||||
>
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse7.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse5.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse5.html#tailuserhtmlse5.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlse6.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse6.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">User Interface</span></h3>
|
||||
class="cmbx-12">User Interface</span></h3>
|
||||
<!--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="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">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="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="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="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">apply</span></span></span> <span
|
||||
class="cmr-12">encapsulate all the</span>
|
||||
class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">apply</span></span></span>
|
||||
<span
|
||||
class="cmr-12">functionalities for the setup and the application of any multilevel and one-level</span>
|
||||
class="cmbx-12">encapsulate all the functionalities for the setup and the application of any</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner implemented in the package. The method </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">multilevel and one-level preconditioner implemented in the package. The</span>
|
||||
<span
|
||||
class="cmbx-12">method </span><span class="obeylines-h"><span class="verb"><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
|
||||
class="cmr-12">preconditioner data structure, while </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">descr</span></span></span> <span
|
||||
class="cmr-12">prints a description of the preconditioner</span>
|
||||
class="cmbx-12">prints a description of the preconditioner setup by the user. For</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
|
||||
class="cmr-12">stand-alone subroutines.</span>
|
||||
class="cmbx-12">subroutines.</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
|
||||
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
|
||||
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">
|
||||
<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
|
||||
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="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="cmr-12">with </span><span
|
||||
class="cmti-12">x </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="cmr-12">for real single precision, </span><span
|
||||
class="cmti-12">x</span>
|
||||
class="cmbx-12">for</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="cmr-12">for real double precision, </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">for real double 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">c</span></span></span> <span
|
||||
class="cmr-12">for complex single precision, </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">for</span>
|
||||
<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="cmr-12">for</span>
|
||||
<span
|
||||
class="cmr-12">complex double precision;</span>
|
||||
class="cmbx-12">for complex double precision;</span>
|
||||
</li>
|
||||
<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="cmtt-12">mld_</span></span></span><span
|
||||
class="cmti-12">x</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">amg_</span></span></span><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="cmr-12">, with </span><span
|
||||
class="cmti-12">x</span>
|
||||
class="cmbx-12">,</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="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="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="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="cmr-12">, according to the sparse matrix data structure;</span>
|
||||
class="cmbx-12">, according to the sparse matrix data structure;</span>
|
||||
</li>
|
||||
<li class="itemize"><span
|
||||
class="cmr-12">the arrays containing the vectors </span><span
|
||||
class="cmmi-12">v </span><span
|
||||
class="cmr-12">and </span><span
|
||||
class="cmmi-12">w </span><span
|
||||
class="cmr-12">involved in the preconditioner</span>
|
||||
class="cmbx-12">the arrays containing the vectors </span><span
|
||||
class="cmmi-12">v </span><span
|
||||
class="cmbx-12">and </span><span
|
||||
class="cmmi-12">w </span><span
|
||||
class="cmbx-12">involved in</span>
|
||||
<span
|
||||
class="cmr-12">application </span><span
|
||||
class="cmmi-12">w </span><span
|
||||
class="cmr-12">= </span><span
|
||||
class="cmbx-12">the preconditioner application </span><span
|
||||
class="cmmi-12">w </span><span
|
||||
class="cmr-12">= </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmmi-12">v </span><span
|
||||
class="cmr-12">must be of type </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">psb_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">vect_type</span></span></span> <span
|
||||
class="cmr-12">with </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">s</span></span></span><span
|
||||
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">d</span></span></span><span
|
||||
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">c</span></span></span><span
|
||||
class="cmr-12">,</span>
|
||||
class="cmmi-12">v </span><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="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">vect_type</span></span></span> <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="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">d</span></span></span><span
|
||||
class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">c</span></span></span><span
|
||||
class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><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 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
|
||||
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
|
||||
class="cmr-12">Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">data structures (see Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu11.html#x21-200006.2"><span
|
||||
class="cmr-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
|
||||
class="cmr-12">).</span></li></ul>
|
||||
class="cmbx-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
|
||||
class="cmbx-12">).</span></li></ul>
|
||||
<!--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">
|
||||
<span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">6.1 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">6.1 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">6.2 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">6.2 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">6.3 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">6.3 </span><a
|
||||
href="userhtmlsu12.html#x22-210006.3"><span
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
class="cmbx-12">Method hierarchy</span><span
|
||||
class="cmbx-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">6.4 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">6.4 </span><a
|
||||
href="userhtmlsu13.html#x23-220006.4"><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
class="cmbx-12">Method smoothers</span><span
|
||||
class="cmbx-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">6.5 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">6.5 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">6.6 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">6.6 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">6.7 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">6.7 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">6.8 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">6.8 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">6.9 </span><a
|
||||
class="cmbx-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmbx-12">6.9 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">6.9.1 </span><a
|
||||
class="cmbx-12"> </span><span
|
||||
class="cmbx-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmbx-12">6.9.1 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">6.9.2 </span><a
|
||||
class="cmbx-12"> </span><span
|
||||
class="cmbx-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmbx-12">6.9.2 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">6.9.3 </span><a
|
||||
class="cmbx-12"> </span><span
|
||||
class="cmbx-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmbx-12">6.9.3 </span><a
|
||||
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
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">6.9.4 </span><a
|
||||
class="cmbx-12"> </span><span
|
||||
class="cmbx-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmbx-12">6.9.4 </span><a
|
||||
href="userhtmlsu18.html#x28-310006.9.4"><span
|
||||
class="cmr-12">Method: allocate</span><span
|
||||
class="cmr-12">_wrk</span></a></span>
|
||||
class="cmbx-12">Method: allocate</span><span
|
||||
class="cmbx-12">_wrk</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">6.9.5 </span><a
|
||||
class="cmbx-12"> </span><span
|
||||
class="cmbx-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmbx-12">6.9.5 </span><a
|
||||
href="userhtmlsu18.html#x28-320006.9.5"><span
|
||||
class="cmr-12">Method: free</span><span
|
||||
class="cmr-12">_wrk</span></a></span>
|
||||
class="cmbx-12">Method: free</span><span
|
||||
class="cmbx-12">_wrk</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -252,22 +257,22 @@ class="cmr-12">_wrk</span></a></span>
|
||||
|
||||
|
||||
<!--l. 4--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse7.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse5.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse5.html#tailuserhtmlse5.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse6.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 4--><p class="indent" > <a
|
||||
id="tailuserhtmlse6.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<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 name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
|
||||
@@ -11,65 +11,71 @@
|
||||
</head><body
|
||||
>
|
||||
<!--l. 4--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse8.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#tailuserhtmlse6.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlse7.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse7.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
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
|
||||
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
|
||||
class="cmr-12">base objects in the library (see Remark</span><span
|
||||
class="cmr-12"> 2 in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">from the base objects in the library (see Remark</span><span
|
||||
class="cmbx-12"> 2 in Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu11.html#x21-200006.2"><span
|
||||
class="cmr-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
|
||||
class="cmr-12">), without recompiling the</span>
|
||||
class="cmbx-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
|
||||
class="cmbx-12">), without</span>
|
||||
<span
|
||||
class="cmr-12">library itself.</span>
|
||||
class="cmbx-12">recompiling the library itself.</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
|
||||
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
|
||||
class="cmr-12">“solver” object, which is almost always acting only on the local part of the distributed</span>
|
||||
class="cmbx-12">definition of a “solver” object, which is almost always acting only on the</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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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="cmr-12">the multilevel preconditioners it is necessary to:</span>
|
||||
class="cmbx-12">it in the context of the multilevel preconditioners it is necessary</span>
|
||||
<span
|
||||
class="cmbx-12">to:</span>
|
||||
<ul class="itemize1">
|
||||
<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 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="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"
|
||||
>
|
||||
<!--l. 26--><p class="noindent" >
|
||||
@@ -83,55 +89,60 @@ class="cmtt-12"> p%set(solver,info</span><span
|
||||
class="cmtt-12"> [,ilev,ilmax,pos])</span></span></span></div>
|
||||
</li>
|
||||
<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
|
||||
class="cmr-12">executable.</span></li></ul>
|
||||
class="cmbx-12">executable.</span></li></ul>
|
||||
<!--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
|
||||
class="cmr-12">acts as a </span><span
|
||||
class="cmti-12">mold </span><span
|
||||
class="cmr-12">to which the preconditioner will conform, even though the MLD2P4</span>
|
||||
class="cmbx-12">structure, and acts as a </span><span
|
||||
class="cmbxti-10x-x-120">mold </span><span
|
||||
class="cmbx-12">to which the preconditioner will conform,</span>
|
||||
<span
|
||||
class="cmr-12">library has not been modified to account for this new development.</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>
|
||||
class="cmbx-12">even though the AMG4PSBLAS library has not been modified to account</span>
|
||||
<span
|
||||
class="cmr-12">library code does not recognize a keyword, it passes it down the composition hierarchy</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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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"
|
||||
>
|
||||
<!--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="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="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
|
||||
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" ><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
|
||||
class="cmr-12">preconditioner.</span> </td>
|
||||
class="cmbx-12">preconditioner.</span> </td>
|
||||
</tr><tr
|
||||
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="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="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
|
||||
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" ><span
|
||||
class="cmr-12">The user-defined new solver to be employed in the preconditioner.</span></td></tr></table></div></div>
|
||||
<!--l. 66--><p class="noindent" ><span
|
||||
class="cmr-12">The other arguments are defined in the way described in Sec.</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu11.html#x21-200006.2"><span
|
||||
class="cmr-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
|
||||
class="cmr-12">. As an example, in the</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>
|
||||
class="cmbx-12">The user-defined new solver to be employed in the</span>
|
||||
<span
|
||||
class="cmr-12">pass it as follows:</span>
|
||||
class="cmbx-12">preconditioner.</span> </td>
|
||||
</tr></table></div></div>
|
||||
<!--l. 66--><p class="noindent" ><span
|
||||
class="cmbx-12">The other arguments are defined in the way described in Sec.</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu11.html#x21-200006.2"><span
|
||||
class="cmbx-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
|
||||
class="cmbx-12">. As an</span>
|
||||
<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">
|
||||
 <br />  ! sparse matrix and preconditioner
|
||||
 <br />  type(psb_dspmat_type) :: a
|
||||
 <br />  type(mld_dprec_type)  :: prec
|
||||
 <br />  type(mld_d_tlu_solver_type) :: tlusv
|
||||
 <br />  type(amg_dprec_type)  :: prec
|
||||
 <br />  type(amg_d_tlu_solver_type) :: tlusv
|
||||
 <br />
|
||||
 <br />......
|
||||
 <br />  !
|
||||
@@ -208,22 +222,22 @@ class="cmr-12">pass it as follows:</span>
|
||||
|
||||
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse8.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#tailuserhtmlse6.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse7.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse7.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 1--><p class="indent" > <a
|
||||
id="tailuserhtmlse7.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -11,50 +11,52 @@
|
||||
</head><body
|
||||
>
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse9.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse7.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse7.html#tailuserhtmlse7.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlse8.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse8.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Error Handling</span></h3>
|
||||
class="cmbx-12">Error Handling</span></h3>
|
||||
<!--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
|
||||
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="cmr-12">; whenever an error condition is</span>
|
||||
class="cmbx-12">;</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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
class="cmr-12">PSBLAS error handling routines; for further details see the PSBLAS User’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’s Guide</span>
|
||||
<span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span>
|
||||
class="cmbx-12">15</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span>
|
||||
|
||||
|
||||
|
||||
@@ -68,22 +70,22 @@ class="cmr-12">.</span>
|
||||
|
||||
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlse9.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse7.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse7.html#tailuserhtmlse7.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse8.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse8.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 1--><p class="indent" > <a
|
||||
id="tailuserhtmlse8.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -11,41 +11,47 @@
|
||||
</head><body
|
||||
>
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse8.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse8.html#tailuserhtmlse8.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlse9.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse9.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">License</span></h3>
|
||||
class="cmbx-12">License</span></h3>
|
||||
<!--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">
|
||||
 <br />                           MLD2P4  version 2.1
|
||||
 <br />  MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
 <br />                           AMG4PSBLAS  version 1.0
|
||||
 <br />              Algebraic MultiGrid Preconditioners Package
|
||||
 <br />             based on PSBLAS (Parallel Sparse BLAS version 3.5)
|
||||
 <br />
|
||||
 <br />  (C) Copyright 2008, 2010, 2012, 2015, 2017
|
||||
 <br />
|
||||
 <br />  Salvatore Filippone    Cranfield University, Cranfield, UK
|
||||
 <br />  Pasqua D’Ambra         IAC-CNR, Naples, IT
|
||||
 <br />  Daniela di Serafino    University of Campania L. Vanvitelli, Caserta, IT
|
||||
 <br />  Pasqua D’Ambra         IAC-CNR, IT
|
||||
 <br />  Fabio Durastante       University of Pisa and IAC-CNR, IT
|
||||
 <br />  Salvatore Filippone    University of Rome Tor-Vergata and IAC-CNR, IT
|
||||
 <br />
|
||||
 <br />  Redistribution and use in source and binary forms, with or without
|
||||
 <br />  modification, are permitted provided that the following conditions
|
||||
@@ -72,7 +78,7 @@ class="cmr-12">The MLD2P4 is freely distributable under the following copyright
|
||||
 <br />  POSSIBILITY OF SUCH DAMAGE.
|
||||
 <br />
|
||||
</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
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse8.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse8.html#tailuserhtmlse8.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse9.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtml.html#userhtmlse9.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 2--><p class="indent" > <a
|
||||
id="tailuserhtmlse9.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -36,15 +36,15 @@ class="cmbx-12">BLAS</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
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><a
|
||||
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><a
|
||||
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">Many vendors provide optimized versions of BLAS; if no</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="cmr-12">) are meant to define the standard</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
|
||||
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
|
||||
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
|
||||
class="cmr-12">computations; they are however critical when using preconditioners based</span>
|
||||
<span
|
||||
@@ -89,11 +89,11 @@ class="cmbx-12">MPI</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
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><a
|
||||
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">A version of MPI is available on most high-performance computing</span>
|
||||
<span
|
||||
@@ -104,25 +104,29 @@ class="cmbx-12">PSBLAS</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
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><a
|
||||
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">Parallel Sparse BLAS (PSBLAS) is available from</span>
|
||||
<a
|
||||
href="github.com/sfilippone/psblas3" class="url" ><span
|
||||
class="cmtt-12">github.com/sfilippone/psblas3</span></a><span
|
||||
class="cmr-12">; version 3.5.0 (or later) is required.</span>
|
||||
class="cmtt-12">github.com/sfilippone/psblas3</span></a> <span
|
||||
class="cmr-12">?? </span><span
|
||||
class="cmbx-12">Mettere tutto sotto psctoolkit</span><span
|
||||
class="cmr-12">;</span>
|
||||
<span
|
||||
class="cmr-12">Indeed, all the prerequisites listed so far are also prerequisites of PSBLAS.</span></dd></dl>
|
||||
class="cmr-12">version 3.5.0 (or later) is required. Indeed, all the prerequisites listed so far</span>
|
||||
<span
|
||||
class="cmr-12">are also prerequisites of PSBLAS.</span></dd></dl>
|
||||
<!--l. 56--><p class="noindent" ><span
|
||||
class="cmr-12">Please note that the four previous libraries must have Fortran interfaces compatible with</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
|
||||
class="cmr-12">MLD2P4.</span>
|
||||
class="cmr-12">compiler as AMG4PSBLAS.</span>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -11,20 +11,20 @@
|
||||
</head><body
|
||||
>
|
||||
<!--l. 43--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu11.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu10.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu10.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Method init</span></h4>
|
||||
class="cmbx-12">Method init</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--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"> p%init(icontx,ptype,info)</span></span></span></div>
|
||||
<!--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="cmr-12">, according to the</span>
|
||||
class="cmbx-12">, according to the</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
|
||||
class="cmbx-12">Arguments</span>
|
||||
<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-2"></colgroup><tr
|
||||
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="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"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 61--><p class="noindent" ><span
|
||||
class="cmr-12">The communication context.</span> </td></tr><tr
|
||||
class="td11"><!--l. 58--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-2-2"
|
||||
class="td11"><!--l. 58--><p class="noindent" ><span
|
||||
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"
|
||||
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="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"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span></td>
|
||||
class="cmbx-12">.</span></td>
|
||||
</tr><tr
|
||||
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. 63--><p class="noindent" ><span
|
||||
class="cmr-12">The type of preconditioner. Its values are specified in Table</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 60--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-4-2"
|
||||
class="td11"><!--l. 60--><p class="noindent" ><span
|
||||
class="cmbx-12">The type of preconditioner. Its values are specified in</span>
|
||||
<span
|
||||
class="cmbx-12">Table</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse5.html#x17-160151"><span
|
||||
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 65--><p class="noindent" ><span
|
||||
class="cmr-12">Note that the strings are case insensitive.</span> </td>
|
||||
class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-5-2"
|
||||
class="td11"><!--l. 62--><p class="noindent" ><span
|
||||
class="cmbx-12">Note that the strings are case insensitive.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 67--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 64--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-7-2"
|
||||
class="td11"><!--l. 64--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmbx-12">for</span>
|
||||
<span
|
||||
class="cmbx-12">details.</span> </td>
|
||||
</tr><tr
|
||||
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>
|
||||
<!--l. 77--><p class="indent" > <span
|
||||
class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span>
|
||||
<!--l. 69--><p class="indent" > <span
|
||||
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
|
||||
<span
|
||||
class="cmr-12">invoked as follows:</span>
|
||||
class="cmbx-12">can be also invoked as follows:</span>
|
||||
|
||||
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 80--><p class="noindent" >
|
||||
<!--l. 81--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 72--><p class="noindent" >
|
||||
<!--l. 73--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> mld_precinit(p,ptype,info)</span></span></span></div>
|
||||
class="cmtt-12"> amg_precinit(p,ptype,info)</span></span></span></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 87--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 79--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu11.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu10.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu10.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 87--><p class="indent" > <a
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 79--><p class="indent" > <a
|
||||
id="tailuserhtmlsu10.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,48 +10,48 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 662--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 567--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu11.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu11.html#tailuserhtmlsu11.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu12.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu12.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></h4>
|
||||
class="cmbx-12">Method hierarchy</span><span
|
||||
class="cmbx-12">_build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 664--><p class="noindent" >
|
||||
<!--l. 665--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 569--><p class="noindent" >
|
||||
<!--l. 570--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%hierarchy_build(a,desc_a,info)</span></span></span><br />
|
||||
</div>
|
||||
<!--l. 668--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the hierarchy of matrices and restriction/prolongation operators for</span>
|
||||
<!--l. 573--><p class="noindent" ><span
|
||||
class="cmbx-12">This method builds the hierarchy of matrices and restriction/prolongation</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="cmr-12">, according to the requirements made by the user</span>
|
||||
class="cmbx-12">, according to the requirements</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="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="cmr-12">.</span>
|
||||
<!--l. 673--><p class="noindent" ><span
|
||||
class="cmbx-12">.</span>
|
||||
<!--l. 578--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-11" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -59,71 +59,75 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-11-1"><col
|
||||
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"
|
||||
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="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="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"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 677--><p class="noindent" ><span
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
class="td11"><!--l. 582--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-2-2"
|
||||
class="td11"><!--l. 582--><p class="noindent" ><span
|
||||
class="cmbx-12">The sparse matrix structure containing the local part</span>
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must be chosen according to</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
|
||||
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
|
||||
class="cmr-12">use. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">precision version of MLD2P4 under use. See the PSBLAS</span>
|
||||
<span
|
||||
class="cmbx-12">User’s Guide for details </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">15</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 683--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="td11"><!--l. 588--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-4-2"
|
||||
class="td11"><!--l. 588--><p class="noindent" ><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="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
class="cmbx-12">. See the PSBLAS</span>
|
||||
<span
|
||||
class="cmr-12">for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">User’s Guide for details </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">15</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 689--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 592--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-6-2"
|
||||
class="td11"><!--l. 592--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmbx-12">for</span>
|
||||
<span
|
||||
class="cmbx-12">details.</span> </td>
|
||||
</tr><tr
|
||||
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>
|
||||
@@ -133,23 +137,23 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 695--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 598--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu11.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu11.html#tailuserhtmlsu11.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu12.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu12.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 695--><p class="indent" > <a
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 598--><p class="indent" > <a
|
||||
id="tailuserhtmlsu12.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,54 +10,58 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 695--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 598--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu12.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu13.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu13.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></h4>
|
||||
class="cmbx-12">Method smoothers</span><span
|
||||
class="cmbx-12">_build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 698--><p class="noindent" >
|
||||
<!--l. 699--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 601--><p class="noindent" >
|
||||
<!--l. 602--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])</span></span></span><br />
|
||||
</div>
|
||||
<!--l. 702--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span>
|
||||
<!--l. 605--><p class="noindent" ><span
|
||||
class="cmbx-12">This method builds the smoothers and the coarsest-level solvers for the</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="cmr-12">, according to the requirements made by the user through the methods</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">, according to the requirements made</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="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="cmr-12">, and based on the aggregation hierarchy produced by a previous call to</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">, and based on the</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="cmr-12">(see Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">(see</span>
|
||||
<span
|
||||
class="cmbx-12">Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu12.html#x22-210006.3"><span
|
||||
class="cmr-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
|
||||
class="cmr-12">).</span>
|
||||
<!--l. 709--><p class="noindent" ><span
|
||||
class="cmbx-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
|
||||
class="cmbx-12">).</span>
|
||||
<!--l. 612--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-12" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -65,130 +69,135 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-12-1"><col
|
||||
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"
|
||||
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="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="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"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 713--><p class="noindent" ><span
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
class="td11"><!--l. 616--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-2-2"
|
||||
class="td11"><!--l. 616--><p class="noindent" ><span
|
||||
class="cmbx-12">The sparse matrix structure containing the local part</span>
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must be chosen according to</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
|
||||
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
|
||||
class="cmr-12">use. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">precision version of MLD2P4 under use. See the PSBLAS</span>
|
||||
<span
|
||||
class="cmbx-12">User’s Guide for details </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">15</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 718--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="td11"><!--l. 621--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-4-2"
|
||||
class="td11"><!--l. 621--><p class="noindent" ><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="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
class="cmbx-12">. See the PSBLAS</span>
|
||||
<span
|
||||
class="cmr-12">for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">User’s Guide for details </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">15</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 724--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 624--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-6-2"
|
||||
class="td11"><!--l. 624--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmbx-12">for</span>
|
||||
<span
|
||||
class="cmbx-12">details.</span> </td>
|
||||
</tr><tr
|
||||
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="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="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"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 726--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
class="td11"><!--l. 626--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-8-2"
|
||||
class="td11"><!--l. 626--><p class="noindent" ><span
|
||||
class="cmbx-12">The desired dynamic type for internal matrix components;</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
|
||||
class="cmr-12">processes. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">on all processes. See the PSBLAS User’s Guide for details</span>
|
||||
<span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">15</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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="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="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"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 731--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
class="td11"><!--l. 631--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-10-2"
|
||||
class="td11"><!--l. 631--><p class="noindent" ><span
|
||||
class="cmbx-12">The desired dynamic type for internal vector components;</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
|
||||
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="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"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 734--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
|
||||
class="td11"><!--l. 634--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-12-2"
|
||||
class="td11"><!--l. 634--><p class="noindent" ><span
|
||||
class="cmbx-12">The desired dynamic type for internal integer vector</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
|
||||
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>
|
||||
@@ -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
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu12.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu13.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 740--><p class="indent" > <a
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 640--><p class="indent" > <a
|
||||
id="tailuserhtmlsu13.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,236 +10,243 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--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="userhtmlsu15.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu14.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu14.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Method build</span></h4>
|
||||
class="cmbx-12">Method build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 742--><p class="noindent" >
|
||||
<!--l. 743--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 642--><p class="noindent" >
|
||||
<!--l. 643--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%build(a,desc_a,info[,amold,vmold,imold])</span></span></span><br />
|
||||
</div>
|
||||
<!--l. 746--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the preconditioner </span><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 646--><p class="noindent" ><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="cmr-12">according to the requirements made by the</span>
|
||||
class="cmbx-12">according to the requirements</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="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="cmr-12">(see Sections</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">(see Sections</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu12.html#x22-210006.3"><span
|
||||
class="cmr-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a> <span
|
||||
class="cmr-12">and</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a>
|
||||
<span
|
||||
class="cmbx-12">and</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu13.html#x23-220006.4"><span
|
||||
class="cmr-12">6.4</span><!--tex4ht:ref: sec:smooth_bld --></a> <span
|
||||
class="cmr-12">for multilevel</span>
|
||||
class="cmbx-12">6.4</span><!--tex4ht:ref: sec:smooth_bld --></a> <span
|
||||
class="cmbx-12">for multilevel preconditioners). It is mostly provided for backward</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
|
||||
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="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="cmr-12">, whose nomenclature would however be somewhat unnatural when</span>
|
||||
class="cmbx-12">, whose</span>
|
||||
<span
|
||||
class="cmr-12">dealing with simple one-level preconditioners.</span>
|
||||
<!--l. 756--><p class="noindent" ><span
|
||||
class="cmbx-12">nomenclature would however be somewhat unnatural when dealing with</span>
|
||||
<span
|
||||
class="cmbx-12">simple one-level preconditioners.</span>
|
||||
<!--l. 656--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
|
||||
|
||||
|
||||
<div class="tabular"> <table id="TBL-13" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-13-1g"><col
|
||||
id="TBL-13-1"><col
|
||||
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"
|
||||
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="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="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"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 760--><p class="noindent" ><span
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
class="td11"><!--l. 660--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-2-2"
|
||||
class="td11"><!--l. 660--><p class="noindent" ><span
|
||||
class="cmbx-12">The sparse matrix structure containing the local part</span>
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must be chosen according to</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
|
||||
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
|
||||
class="cmr-12">use. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">precision version of MLD2P4 under use. See the PSBLAS</span>
|
||||
<span
|
||||
class="cmbx-12">User’s Guide for details </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">15</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 765--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="td11"><!--l. 665--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-4-2"
|
||||
class="td11"><!--l. 665--><p class="noindent" ><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="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
class="cmbx-12">. See the PSBLAS</span>
|
||||
<span
|
||||
class="cmr-12">for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">User’s Guide for details </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">15</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 771--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 668--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-6-2"
|
||||
class="td11"><!--l. 668--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmbx-12">for</span>
|
||||
<span
|
||||
class="cmbx-12">details.</span> </td>
|
||||
</tr><tr
|
||||
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="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="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"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 773--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
class="td11"><!--l. 670--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-8-2"
|
||||
class="td11"><!--l. 670--><p class="noindent" ><span
|
||||
class="cmbx-12">The desired dynamic type for internal matrix components;</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
|
||||
class="cmr-12">processes. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">on all processes. See the PSBLAS User’s Guide for details</span>
|
||||
<span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">15</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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="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="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"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 778--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
class="td11"><!--l. 675--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-10-2"
|
||||
class="td11"><!--l. 675--><p class="noindent" ><span
|
||||
class="cmbx-12">The desired dynamic type for internal vector components;</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
|
||||
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="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"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 781--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
|
||||
class="td11"><!--l. 678--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-12-2"
|
||||
class="td11"><!--l. 678--><p class="noindent" ><span
|
||||
class="cmbx-12">The desired dynamic type for internal integer vector</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
|
||||
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>
|
||||
|
||||
|
||||
|
||||
<!--l. 786--><p class="indent" > <span
|
||||
class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span>
|
||||
<!--l. 683--><p class="indent" > <span
|
||||
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
|
||||
<span
|
||||
class="cmr-12">invoked as follows:</span>
|
||||
class="cmbx-12">can be also invoked as follows:</span>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 789--><p class="noindent" >
|
||||
<!--l. 790--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 686--><p class="noindent" >
|
||||
<!--l. 687--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> mld_precbld(p,what,val,info[,amold,vmold,imold])</span></span></span></div>
|
||||
<!--l. 793--><p class="noindent" ><span
|
||||
class="cmr-12">The method can be used to build multilevel preconditioners too.</span>
|
||||
class="cmtt-12"> amg_precbld(p,what,val,info[,amold,vmold,imold])</span></span></span></div>
|
||||
<!--l. 690--><p class="noindent" ><span
|
||||
class="cmbx-12">The method can be used to build multilevel preconditioners too.</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 798--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 695--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu14.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 798--><p class="indent" > <a
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 695--><p class="indent" > <a
|
||||
id="tailuserhtmlsu14.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,37 +10,37 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 798--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 695--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu16.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu15.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu15.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Method apply</span></h4>
|
||||
class="cmbx-12">Method apply</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 800--><p class="noindent" >
|
||||
<!--l. 801--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 697--><p class="noindent" >
|
||||
<!--l. 698--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%apply(x,y,desc_a,info</span><span
|
||||
class="cmtt-12"> [,trans,work])</span></span></span><br />
|
||||
</div>
|
||||
<!--l. 804--><p class="noindent" ><span
|
||||
class="cmr-12">This method computes </span><span
|
||||
<!--l. 701--><p class="noindent" ><span
|
||||
class="cmbx-12">This method computes </span><span
|
||||
class="cmmi-12">y </span><span
|
||||
class="cmr-12">= </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
@@ -50,152 +50,164 @@ class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">) </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="cmr-12">is a previously built preconditioner,</span>
|
||||
class="cmbx-12">is a previously built</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="cmr-12">, and </span><span
|
||||
class="cmbx-12">, and </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
|
||||
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="cmr-12">. Note that, when MLD2P4 is 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="cmr-12">is called within the PSBLAS method </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">psb_krylov</span></span></span> <span
|
||||
class="cmr-12">and hence it is completely</span>
|
||||
class="cmbx-12">. Note that, when MLD2P4 is</span>
|
||||
<span
|
||||
class="cmr-12">transparent to the user.</span>
|
||||
<!--l. 813--><p class="noindent" ><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="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="cmbx-12">and hence it is completely transparent to the</span>
|
||||
<span
|
||||
class="cmbx-12">user.</span>
|
||||
<!--l. 710--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
|
||||
|
||||
|
||||
<div class="tabular"> <table id="TBL-14" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-14-1g"><col
|
||||
id="TBL-14-1"><col
|
||||
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"
|
||||
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="td11"><!--l. 820--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="td11"><!--l. 713--><p class="noindent" ><span
|
||||
class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">(</span></span></span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbxti-10x-x-120">kind</span><span
|
||||
class="cmbxti-10x-x-120">_parameter</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> dimension(:),</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 821--><p class="noindent" ><span
|
||||
class="cmr-12">The local part of the vector </span><span
|
||||
class="td11"><!--l. 714--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-2-2"
|
||||
class="td11"><!--l. 714--><p class="noindent" ><span
|
||||
class="cmbx-12">The local part of the vector </span><span
|
||||
class="cmmi-12">x</span><span
|
||||
class="cmr-12">. Note that </span><span
|
||||
class="cmti-12">type </span><span
|
||||
class="cmr-12">and </span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span>
|
||||
class="cmbx-12">. Note that </span><span
|
||||
class="cmbxti-10x-x-120">type</span>
|
||||
<span
|
||||
class="cmr-12">must be chosen according to the real/complex, single/double</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 be chosen according to the</span>
|
||||
<span
|
||||
class="cmr-12">precision version of MLD2P4 under use.</span> </td>
|
||||
class="cmbx-12">real/complex, single/double precision version of MLD2P4</span>
|
||||
<span
|
||||
class="cmbx-12">under use.</span> </td>
|
||||
</tr><tr
|
||||
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="td11"><!--l. 824--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="td11"><!--l. 717--><p class="noindent" ><span
|
||||
class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">(</span></span></span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbxti-10x-x-120">kind</span><span
|
||||
class="cmbxti-10x-x-120">_parameter</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> dimension(:),</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 825--><p class="noindent" ><span
|
||||
class="cmr-12">The local part of the vector </span><span
|
||||
class="td11"><!--l. 718--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-4-2"
|
||||
class="td11"><!--l. 718--><p class="noindent" ><span
|
||||
class="cmbx-12">The local part of the vector </span><span
|
||||
class="cmmi-12">y</span><span
|
||||
class="cmr-12">. Note that </span><span
|
||||
class="cmti-12">type </span><span
|
||||
class="cmr-12">and </span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span>
|
||||
class="cmbx-12">. Note that </span><span
|
||||
class="cmbxti-10x-x-120">type</span>
|
||||
<span
|
||||
class="cmr-12">must be chosen according to the real/complex, single/double</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 be chosen according to the</span>
|
||||
<span
|
||||
class="cmr-12">precision version of MLD2P4 under use.</span> </td>
|
||||
class="cmbx-12">real/complex, single/double precision version of MLD2P4</span>
|
||||
<span
|
||||
class="cmbx-12">under use.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 829--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor associated to the matrix to be</span>
|
||||
class="td11"><!--l. 722--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-6-2"
|
||||
class="td11"><!--l. 722--><p class="noindent" ><span
|
||||
class="cmbx-12">The communication descriptor associated to the matrix to</span>
|
||||
<span
|
||||
class="cmr-12">preconditioned.</span> </td>
|
||||
class="cmbx-12">be preconditioned.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 832--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 725--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-8-2"
|
||||
class="td11"><!--l. 725--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmbx-12">for</span>
|
||||
<span
|
||||
class="cmbx-12">details.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> optional,</span><span
|
||||
class="cmtt-12"> intent(in).</span></span></span> </td>
|
||||
</tr><tr
|
||||
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. 834--><p class="noindent" ><span
|
||||
class="cmr-12">If </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="td11"><!--l. 727--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-10-2"
|
||||
class="td11"><!--l. 727--><p class="noindent" ><span
|
||||
class="cmbx-12">If </span><span class="obeylines-h"><span class="verb"><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">’N’,’n’</span></span></span> <span
|
||||
class="cmr-12">then </span><span
|
||||
class="cmbx-12">then </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">) = </span><span
|
||||
class="cmr-12">) = </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><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="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">’T’,’t’</span></span></span>
|
||||
<span
|
||||
class="cmr-12">then </span><span
|
||||
class="cmbx-12">then </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><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="cmsy-8">-</span><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="cmsy-8">-</span><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="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">’C’,’c’</span></span></span> <span
|
||||
class="cmr-12">then</span>
|
||||
class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">’C’,’c’</span></span></span>
|
||||
<span
|
||||
class="cmbx-12">then </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><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="cmsy-8">-</span><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="cmsy-8">-</span><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
|
||||
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="td11"><!--l. 838--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="td11"><!--l. 731--><p class="noindent" ><span
|
||||
class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">(</span></span></span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbxti-10x-x-120">kind</span><span
|
||||
class="cmbxti-10x-x-120">_parameter</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> dimension(:),</span><span
|
||||
class="cmtt-12"> optional,</span><span
|
||||
class="cmtt-12"> target</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 839--><p class="noindent" ><span
|
||||
class="cmr-12">Workspace. Its size should be at least </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="td11"><!--l. 732--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-12-2"
|
||||
class="td11"><!--l. 732--><p class="noindent" ><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"> *</span><span
|
||||
class="cmtt-12"> psb_cd_get_local_</span></span></span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12"> psb_cd_get_local_</span></span></span> <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">cols(desc_a)</span></span></span> <span
|
||||
class="cmr-12">(see the PSBLAS User’s Guide). Note that </span><span
|
||||
class="cmti-12">type</span>
|
||||
class="cmbx-12">(see the PSBLAS</span>
|
||||
<span
|
||||
class="cmr-12">and </span><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>
|
||||
class="cmbx-12">User’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
|
||||
class="cmr-12">single/double precision version of MLD2P4 under use.</span> </td>
|
||||
class="cmbx-12">be chosen according to the real/complex, single/double</span>
|
||||
<span
|
||||
class="cmbx-12">precision version of MLD2P4 under use.</span> </td>
|
||||
</tr><tr
|
||||
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>
|
||||
|
||||
|
||||
|
||||
<!--l. 846--><p class="indent" > <span
|
||||
class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span>
|
||||
<!--l. 739--><p class="indent" > <span
|
||||
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
|
||||
<span
|
||||
class="cmr-12">invoked as follows:</span>
|
||||
class="cmbx-12">can be also invoked as follows:</span>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 849--><p class="noindent" >
|
||||
<!--l. 850--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 742--><p class="noindent" >
|
||||
<!--l. 743--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> mld_precaply(p,what,val,info)</span></span></span></div>
|
||||
class="cmtt-12"> amg_precaply(p,what,val,info)</span></span></span></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 855--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 748--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu16.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu15.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 855--><p class="indent" > <a
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 748--><p class="indent" > <a
|
||||
id="tailuserhtmlsu15.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,39 +10,39 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 855--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 748--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu17.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu16.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu16.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Method free</span></h4>
|
||||
class="cmbx-12">Method free</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 857--><p class="noindent" >
|
||||
<!--l. 858--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 750--><p class="noindent" >
|
||||
<!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%free(p,info)</span></span></span><br />
|
||||
</div>
|
||||
<!--l. 861--><p class="noindent" ><span
|
||||
class="cmr-12">This method deallocates the preconditioner data structure </span><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 754--><p class="noindent" ><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="cmr-12">.</span>
|
||||
<!--l. 864--><p class="noindent" ><span
|
||||
class="cmbx-12">.</span>
|
||||
<!--l. 757--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-15" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -50,59 +50,58 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-15-1"><col
|
||||
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"
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 871--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 761--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-15-2-2"
|
||||
class="td11"><!--l. 761--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for</span>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a>
|
||||
<span
|
||||
class="cmr-12">details.</span> </td>
|
||||
class="cmbx-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
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>
|
||||
<!--l. 875--><p class="indent" > <span
|
||||
class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span>
|
||||
<!--l. 765--><p class="indent" > <span
|
||||
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
|
||||
<span
|
||||
class="cmr-12">invoked as follows:</span>
|
||||
class="cmbx-12">can be also invoked as follows:</span>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 878--><p class="noindent" >
|
||||
<!--l. 879--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 768--><p class="noindent" >
|
||||
<!--l. 769--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> mld_precfree(p,info)</span></span></span></div>
|
||||
class="cmtt-12"> amg_precfree(p,info)</span></span></span></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 885--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 775--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu17.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu16.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu16.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 885--><p class="indent" > <a
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 775--><p class="indent" > <a
|
||||
id="tailuserhtmlsu16.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,50 +10,50 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 885--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 775--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu18.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu16.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu17.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu17.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Method descr</span></h4>
|
||||
class="cmbx-12">Method descr</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 887--><p class="noindent" >
|
||||
<!--l. 888--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 777--><p class="noindent" >
|
||||
<!--l. 778--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%descr(info,</span><span
|
||||
class="cmtt-12"> [iout])</span></span></span><br />
|
||||
</div>
|
||||
<!--l. 891--><p class="noindent" ><span
|
||||
class="cmr-12">This method prints a description of the preconditioner </span><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 781--><p class="noindent" ><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="cmr-12">to the standard output or to a</span>
|
||||
class="cmbx-12">to the standard</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="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="cmr-12">, or </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">build</span></span></span><span
|
||||
class="cmr-12">, have</span>
|
||||
class="cmbx-12">,</span>
|
||||
<span
|
||||
class="cmr-12">been called.</span>
|
||||
<!--l. 896--><p class="noindent" ><span
|
||||
class="cmbx-12">or </span><span class="obeylines-h"><span class="verb"><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>
|
||||
<div class="tabular"> <table id="TBL-16" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -61,71 +61,73 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-16-1"><col
|
||||
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"
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 903--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 790--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-2-2"
|
||||
class="td11"><!--l. 790--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmbx-12">for</span>
|
||||
<span
|
||||
class="cmbx-12">details.</span> </td>
|
||||
</tr><tr
|
||||
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="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"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 905--><p class="noindent" ><span
|
||||
class="cmr-12">The id of the file where the preconditioner description will be</span>
|
||||
class="td11"><!--l. 792--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-4-2"
|
||||
class="td11"><!--l. 792--><p class="noindent" ><span
|
||||
class="cmbx-12">The id of the file where the preconditioner description will</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
|
||||
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>
|
||||
<!--l. 910--><p class="indent" > <span
|
||||
class="cmr-12">For compatibility with the previous versions of MLD2P4, this method can be also</span>
|
||||
<!--l. 797--><p class="indent" > <span
|
||||
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
|
||||
<span
|
||||
class="cmr-12">invoked as follows:</span>
|
||||
class="cmbx-12">can be also invoked as follows:</span>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 913--><p class="noindent" >
|
||||
<!--l. 914--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 800--><p class="noindent" >
|
||||
<!--l. 801--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> mld_precdescr(p,info</span><span
|
||||
class="cmtt-12"> amg_precdescr(p,info</span><span
|
||||
class="cmtt-12"> [,iout])</span></span></span></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 918--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 805--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu18.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu16.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu17.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu17.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 918--><p class="indent" > <a
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 805--><p class="indent" > <a
|
||||
id="tailuserhtmlsu17.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,43 +10,43 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 918--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 805--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu17.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu18.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu18.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Auxiliary Methods</span></h4>
|
||||
<!--l. 919--><p class="noindent" ><span
|
||||
class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span>
|
||||
class="cmbx-12">Auxiliary Methods</span></h4>
|
||||
<!--l. 806--><p class="noindent" ><span
|
||||
class="cmbx-12">Various functionalities are implemented as additional methods of the</span>
|
||||
<span
|
||||
class="cmr-12">object.</span>
|
||||
<!--l. 922--><p class="noindent" >
|
||||
class="cmbx-12">preconditioner object.</span>
|
||||
<!--l. 809--><p class="noindent" >
|
||||
<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
|
||||
class="cmr-12">Method: dump</span></h5>
|
||||
class="cmbx-12">Method: dump</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 924--><p class="noindent" >
|
||||
<!--l. 925--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 811--><p class="noindent" >
|
||||
<!--l. 812--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])</span></span></span><br />
|
||||
</div>
|
||||
<!--l. 928--><p class="noindent" ><span
|
||||
class="cmr-12">Dump on file.</span>
|
||||
<!--l. 931--><p class="noindent" ><span
|
||||
<!--l. 815--><p class="noindent" ><span
|
||||
class="cmbx-12">Dump on file.</span>
|
||||
<!--l. 818--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-17" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -54,67 +54,70 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-17-1"><col
|
||||
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"
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 938--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 822--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-2-2"
|
||||
class="td11"><!--l. 822--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmbx-12">for</span>
|
||||
<span
|
||||
class="cmbx-12">details.</span> </td>
|
||||
</tr><tr
|
||||
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="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="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"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 940--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
class="td11"><!--l. 824--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-4-2"
|
||||
class="td11"><!--l. 824--><p class="noindent" ><span
|
||||
class="cmbx-12">The desired dynamic type for internal matrix components;</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
|
||||
class="cmr-12">processes. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">on all processes. See the PSBLAS User’s Guide for details</span>
|
||||
<span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">15</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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>
|
||||
<!--l. 947--><p class="noindent" >
|
||||
<!--l. 831--><p class="noindent" >
|
||||
<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
|
||||
class="cmr-12">Method: clone</span></h5>
|
||||
class="cmbx-12">Method: clone</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 949--><p class="noindent" >
|
||||
<!--l. 950--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 833--><p class="noindent" >
|
||||
<!--l. 834--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%clone(pout,info)</span></span></span><br />
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!--l. 953--><p class="noindent" ><span
|
||||
class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
|
||||
<!--l. 956--><p class="noindent" ><span
|
||||
<!--l. 837--><p class="noindent" ><span
|
||||
class="cmbx-12">Create a (deep) copy of the preconditioner object.</span>
|
||||
<!--l. 840--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-18" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -122,108 +125,114 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-18-1"><col
|
||||
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"
|
||||
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="td11"><!--l. 959--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">type(mld_</span></span></span><span
|
||||
class="cmti-12">x</span><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(amg_</span></span></span><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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 960--><p class="noindent" ><span
|
||||
class="cmr-12">The copy of the preconditioner data structure. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must</span>
|
||||
class="td11"><!--l. 844--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-2-2"
|
||||
class="td11"><!--l. 844--><p class="noindent" ><span
|
||||
class="cmbx-12">The copy of the preconditioner data structure. Note</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
|
||||
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
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 964--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 848--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-4-2"
|
||||
class="td11"><!--l. 848--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmbx-12">for</span>
|
||||
<span
|
||||
class="cmbx-12">details.</span> </td>
|
||||
</tr><tr
|
||||
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>
|
||||
<!--l. 969--><p class="noindent" >
|
||||
<!--l. 853--><p class="noindent" >
|
||||
<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
|
||||
class="cmr-12">Method: sizeof</span></h5>
|
||||
class="cmbx-12">Method: sizeof</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 971--><p class="noindent" >
|
||||
<!--l. 972--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 855--><p class="noindent" >
|
||||
<!--l. 856--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">sz</span><span
|
||||
class="cmtt-12"> =</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12"> p%sizeof()</span></span></span><br />
|
||||
</div>
|
||||
<!--l. 975--><p class="noindent" ><span
|
||||
class="cmr-12">Return memory footprint in bytes.</span>
|
||||
<!--l. 988--><p class="noindent" >
|
||||
<!--l. 859--><p class="noindent" ><span
|
||||
class="cmbx-12">Return memory footprint in bytes.</span>
|
||||
<!--l. 862--><p class="noindent" >
|
||||
<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
|
||||
class="cmr-12">Method: allocate</span><span
|
||||
class="cmr-12">_wrk</span></h5>
|
||||
class="cmbx-12">Method: allocate</span><span
|
||||
class="cmbx-12">_wrk</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 990--><p class="noindent" >
|
||||
<!--l. 991--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 864--><p class="noindent" >
|
||||
<!--l. 865--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%allocate_wrk(info[,</span><span
|
||||
class="cmtt-12"> vmold])</span></span></span><br />
|
||||
</div>
|
||||
<!--l. 994--><p class="noindent" ><span
|
||||
class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span>
|
||||
<!--l. 868--><p class="noindent" ><span
|
||||
class="cmbx-12">Allocate internal work vectors. Each application of the preconditioner</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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
class="cmr-12">using GPUs or other specialized devices, the </span><span class="obeylines-h"><span class="verb"><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>
|
||||
class="cmbx-12">space for time by preallocating the internal workspace outside of the</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="cmr-12">taken care of based on the dynamic type of the </span><span class="obeylines-h"><span class="verb"><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
|
||||
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="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>
|
||||
<span
|
||||
class="cmr-12">method.</span>
|
||||
<!--l. 1010--><p class="noindent" ><span
|
||||
class="cmbx-12">method.</span>
|
||||
<!--l. 884--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-19" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -231,58 +240,60 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-19-1"><col
|
||||
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"
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 1017--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 888--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-2-2"
|
||||
class="td11"><!--l. 888--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmbx-12">for</span>
|
||||
<span
|
||||
class="cmbx-12">details.</span> </td>
|
||||
</tr><tr
|
||||
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="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="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"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 1019--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
class="td11"><!--l. 890--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-4-2"
|
||||
class="td11"><!--l. 890--><p class="noindent" ><span
|
||||
class="cmbx-12">The desired dynamic type for internal vector components;</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
|
||||
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>
|
||||
<!--l. 1025--><p class="noindent" >
|
||||
<!--l. 896--><p class="noindent" >
|
||||
<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
|
||||
class="cmr-12">Method: free</span><span
|
||||
class="cmr-12">_wrk</span></h5>
|
||||
class="cmbx-12">Method: free</span><span
|
||||
class="cmbx-12">_wrk</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 1027--><p class="noindent" >
|
||||
<!--l. 1028--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 898--><p class="noindent" >
|
||||
<!--l. 899--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%free_wrk(info)</span></span></span><br />
|
||||
</div>
|
||||
<!--l. 1031--><p class="noindent" ><span
|
||||
class="cmr-12">Deallocate internal work vectors.</span>
|
||||
<!--l. 1034--><p class="noindent" ><span
|
||||
<!--l. 902--><p class="noindent" ><span
|
||||
class="cmbx-12">Deallocate internal work vectors.</span>
|
||||
<!--l. 905--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-20" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
@@ -290,21 +301,23 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-20-1"><col
|
||||
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"
|
||||
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="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"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmbx-12">.</span> </td>
|
||||
</tr><tr
|
||||
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. 1041--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="td11"><!--l. 909--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-20-2-2"
|
||||
class="td11"><!--l. 909--><p class="noindent" ><span
|
||||
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmbx-12">for</span>
|
||||
<span
|
||||
class="cmbx-12">details.</span> </td>
|
||||
</tr><tr
|
||||
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>
|
||||
@@ -318,19 +331,19 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
<!--l. 4--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu17.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu18.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu18.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 4--><p class="indent" > <a
|
||||
id="tailuserhtmlsu18.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -44,7 +44,7 @@ class="cmbx-12">UMFPACK</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
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">A sparse LU factorization package included in the SuiteSparse</span>
|
||||
<span
|
||||
@@ -86,7 +86,7 @@ class="cmbx-12">SuperLU</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
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">A sparse LU factorization package available from</span>
|
||||
<a
|
||||
@@ -108,7 +108,7 @@ class="cmbx-12">_Dist</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
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">A sparse LU factorization package available from the same</span>
|
||||
<span
|
||||
|
||||
@@ -32,34 +32,38 @@ class="cmr-12">3.3 </span></span> <a
|
||||
id="x10-90003.3"></a><span
|
||||
class="cmr-12">Configuration options</span></h4>
|
||||
<!--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="cmr-12">script in the main</span>
|
||||
class="cmr-12">script in the</span>
|
||||
<span
|
||||
class="cmr-12">directory to generate the necessary makefile.</span>
|
||||
<!--l. 104--><p class="indent" > <span
|
||||
class="cmr-12">As a minimal example consider the following:</span>
|
||||
class="cmr-12">main directory to generate the necessary makefile.</span>
|
||||
<!--l. 105--><p class="indent" > <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">
|
||||
./configure --with-psblas=PSB-INSTALL-DIR
|
||||
</div>
|
||||
<!--l. 107--><p class="nopar" > <span
|
||||
class="cmr-12">which assumes that the various MPI compilers and support libraries are available in</span>
|
||||
<!--l. 110--><p class="nopar" > <span
|
||||
class="cmbx-12">which assumes that the various MPI compilers and support libraries are</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
|
||||
class="cmr-12">(note that the latter directory must be specified with an </span><span
|
||||
class="cmti-12">absolute </span><span
|
||||
class="cmr-12">path). The full set of</span>
|
||||
class="cmbx-12">the PSBLAS install directory (note that the latter directory must</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"> --help</span></span></span><span
|
||||
class="cmr-12">, which</span>
|
||||
class="cmbx-12">, which</span>
|
||||
<span
|
||||
class="cmr-12">produces:</span>
|
||||
class="cmbx-12">produces:</span>
|
||||
|
||||
|
||||
|
||||
@@ -237,18 +241,17 @@ class="cmr-12">produces:</span>
|
||||
 <br />
|
||||
 <br />Report bugs to <https://github.com/sfilippone/mld2p4-2/issues>.
|
||||
</div>
|
||||
<!--l. 278--><p class="nopar" >
|
||||
<!--l. 280--><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="cmtt-12">/opt</span></span></span> <span
|
||||
class="cmr-12">directory</span>
|
||||
<!--l. 281--><p class="nopar" >
|
||||
<!--l. 283--><p class="indent" > <span
|
||||
class="cmbx-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="cmtt-12">/opt</span></span></span> <span
|
||||
class="cmbx-12">directory and is using the SuiteSparse package (which includes</span>
|
||||
<span
|
||||
class="cmr-12">and is using the SuiteSparse package (which includes UMFPACK), then MLD2P4</span>
|
||||
<span
|
||||
class="cmr-12">might be configured with:</span>
|
||||
class="cmbx-12">UMFPACK), then MLD2P4 might be configured with:</span>
|
||||
|
||||
|
||||
|
||||
@@ -256,72 +259,74 @@ class="cmr-12">might be configured with:</span>
|
||||
 ./configure --with-psblas=/opt/psblas-3.5/ \
|
||||
 <br /> --with-umfpackincdir=/usr/include/suitesparse/
|
||||
</div>
|
||||
<!--l. 287--><p class="nopar" > <span
|
||||
class="cmr-12">Once the configure script has completed execution, it will have generated the file</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 290--><p class="nopar" > <span
|
||||
class="cmbx-12">Once the configure script has completed execution, it will have generated</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="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
|
||||
class="cmr-12">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="cmr-12">.</span>
|
||||
<!--l. 293--><p class="indent" > <span
|
||||
class="cmr-12">To use the MUMPS solver package, the user has to add the appropriate options to</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="cmtt-12">-ldmumps</span><span
|
||||
class="cmtt-12"> -lsmumps</span></span></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="cmbx-12">.</span>
|
||||
<!--l. 296--><p class="indent" > <span
|
||||
class="cmbx-12">To use the MUMPS solver package, the user has to add the appropriate</span>
|
||||
<span
|
||||
class="cmbx-12">options to the configure script; by default we are looking for the libraries</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">-ldmumps</span><span
|
||||
class="cmtt-12"> -lsmumps</span></span></span> <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12"> -lzmumps</span><span
|
||||
class="cmtt-12"> -lcmumps</span><span
|
||||
class="cmtt-12"> -mumps_common</span><span
|
||||
class="cmtt-12"> -lpord</span></span></span><span
|
||||
class="cmr-12">. MUMPS often uses additional</span>
|
||||
class="cmbx-12">. MUMPS often</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
|
||||
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>
|
||||
<span
|
||||
class="cmbx-12">with the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">--with-extra-libs</span></span></span> <span
|
||||
class="cmr-12">configure</span>
|
||||
<span
|
||||
class="cmr-12">option.</span>
|
||||
<!--l. 301--><p class="indent" > <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">
|
||||
make
|
||||
</div>
|
||||
<!--l. 304--><p class="nopar" > <span
|
||||
class="cmr-12">followed (optionally) by</span>
|
||||
<!--l. 307--><p class="nopar" > <span
|
||||
class="cmbx-12">followed (optionally) by</span>
|
||||
|
||||
|
||||
|
||||
<div class="verbatim" id="verbatim-5">
|
||||
make install
|
||||
</div>
|
||||
<!--l. 308--><p class="nopar" >
|
||||
<!--l. 311--><p class="nopar" >
|
||||
|
||||
|
||||
|
||||
<!--l. 309--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 312--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu4.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu2.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu2.html#tailuserhtmlsu2.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu3.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu3.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 309--><p class="indent" > <a
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 312--><p class="indent" > <a
|
||||
id="tailuserhtmlsu3.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,60 +10,61 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 309--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 312--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu5.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu3.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu4.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu4.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Bug reporting</span></h4>
|
||||
<!--l. 310--><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">Bug reporting</span></h4>
|
||||
<!--l. 313--><p class="noindent" ><span
|
||||
class="cmbx-12">If you find any bugs in our codes, please report them through our issues</span>
|
||||
<span
|
||||
class="cmr-12">on</span><br
|
||||
class="cmbx-12">page on</span><br
|
||||
class="newline" /> <a
|
||||
href="https://github.com/sfilippone/mld2p4-2/issues" class="url" ><span
|
||||
class="cmtt-12">https://github.com/sfilippone/mld2p4-2/issues</span></a><br
|
||||
class="newline" /><span
|
||||
class="cmr-12">To enable us to track the bug, please provide a log from the failing application, the</span>
|
||||
href="https://github.com/psctoolkit/amg4psblas/issues" class="url" ><span
|
||||
class="cmtt-12">https://github.com/psctoolkit/amg4psblas/issues</span></a><br
|
||||
class="newline" />
|
||||
<!--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
|
||||
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
|
||||
class="cmr-12">issue.</span>
|
||||
class="cmbx-12">reproducing the issue.</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 326--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 321--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu5.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu3.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu4.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu4.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 326--><p class="indent" > <a
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 321--><p class="indent" > <a
|
||||
id="tailuserhtmlsu4.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,69 +10,72 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 326--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 321--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu4.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu4.html#tailuserhtmlsu4.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu5.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu5.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Example and test programs</span></h4>
|
||||
<!--l. 327--><p class="noindent" ><span
|
||||
class="cmr-12">The package contains the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">Example and test programs</span></h4>
|
||||
<!--l. 322--><p class="noindent" ><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="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="cmr-12">directories; both of them are</span>
|
||||
class="cmbx-12">directories; both of them are</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="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="cmr-12">subdirectories. Their purpose is as</span>
|
||||
class="cmbx-12">subdirectories. Their purpose is as</span>
|
||||
<span
|
||||
class="cmr-12">follows:</span>
|
||||
class="cmbx-12">follows:</span>
|
||||
<dl class="description"><dt class="description">
|
||||
<span
|
||||
class="cmtt-12">examples</span> </dt><dd
|
||||
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
|
||||
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
|
||||
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">
|
||||
<span
|
||||
class="cmtt-12">tests</span> </dt><dd
|
||||
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
|
||||
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="cmr-12">subdirectories, to experiment with the full range</span>
|
||||
class="cmbx-12">subdirectories, to experiment</span>
|
||||
<span
|
||||
class="cmr-12">of preconditioners implemented in the package.</span></dd></dl>
|
||||
<!--l. 340--><p class="noindent" ><span
|
||||
class="cmr-12">The </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">with the full range of preconditioners implemented in the package.</span></dd></dl>
|
||||
<!--l. 335--><p class="noindent" ><span
|
||||
class="cmbx-12">The </span><span class="obeylines-h"><span class="verb"><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
|
||||
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="cmtt-12">pdegen</span></span></span>
|
||||
class="cmbx-12">from files, according to the Matrix Market or the Harwell-Boeing storage</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
|
||||
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
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu4.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu4.html#tailuserhtmlsu4.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu5.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu5.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 1--><p class="indent" > <a
|
||||
id="tailuserhtmlsu5.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -11,35 +11,38 @@
|
||||
</head><body
|
||||
>
|
||||
<!--l. 56--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu7.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu6.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html#userhtmlsu6.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">AMG preconditioners</span></h4>
|
||||
class="cmbx-12">AMG preconditioners</span></h4>
|
||||
<!--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
|
||||
class="cmr-12">linear system</span>
|
||||
class="cmbx-12">consider a linear system</span>
|
||||
<table
|
||||
class="equation"><tr><td>
|
||||
<center class="math-display" >
|
||||
<img
|
||||
src="userhtml2x.png" alt="Ax = b,
|
||||
|
||||
|
||||
|
||||
" class="math-display" ><a
|
||||
id="x14-13001r2"></a></center></td><td class="equation-label"><span
|
||||
class="cmr-12">(2)</span></td></tr></table>
|
||||
<!--l. 62--><p class="nopar" >
|
||||
<span
|
||||
class="cmr-12">where </span><span
|
||||
class="cmbx-12">where </span><span
|
||||
class="cmmi-12">A </span><span
|
||||
class="cmr-12">= (</span><span
|
||||
class="cmmi-12">a</span><sub><span
|
||||
@@ -50,20 +53,18 @@ class="msbm-10x-x-120">ℝ</span><sup><span
|
||||
class="cmmi-8">n</span><span
|
||||
class="cmsy-8">×</span><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
|
||||
class="cmr-12">assume </span><span
|
||||
class="cmbx-12">presentation we assume </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
|
||||
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="cmr-12">,</span>
|
||||
class="cmbx-12">,</span>
|
||||
<span
|
||||
class="cmr-12">i.e., Ω = </span><span
|
||||
class="cmbx-12">i.e., </span><span
|
||||
class="cmr-12">Ω = </span><span
|
||||
class="cmsy-10x-x-120">{</span><span
|
||||
class="cmr-12">1</span><span
|
||||
class="cmmi-12">, </span><span
|
||||
@@ -72,66 +73,68 @@ class="cmmi-12">,</span><span
|
||||
class="cmmi-12">…</span><span
|
||||
class="cmmi-12">,n</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
|
||||
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
|
||||
class="cmr-12">matrices,</span>
|
||||
class="cmbx-12">hierarchy of matrices,</span>
|
||||
<center class="math-display" >
|
||||
<img
|
||||
src="userhtml3x.png" alt=" 1 2 nlev 1 2 nlev
|
||||
Ω ≡ Ω ⊃ Ω ⊃ ...⊃ Ω , A ≡ A, A ,...,A ,
|
||||
src="userhtml3x.png" alt="Ω1 ≡ Ω ⊃ Ω2 ⊃ ...⊃ Ωnlev, A1 ≡ A, A2, ...,Anlev,
|
||||
" class="math-display" ></center>
|
||||
<!--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="cmr-12">, without assuming any knowledge of</span>
|
||||
class="cmbx-12">, without assuming any knowledge</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="cmr-12">originates. A vector space </span><span
|
||||
class="cmbx-12">originates. A vector space </span><span
|
||||
class="msbm-10x-x-120">ℝ</span><sup><span
|
||||
class="cmmi-8">n</span><sub><span
|
||||
class="cmmi-6">k</span></sub></sup> <span
|
||||
class="cmr-12">is</span>
|
||||
class="cmmi-6">k</span></sub></sup>
|
||||
<span
|
||||
class="cmr-12">associated with Ω</span><sup><span
|
||||
class="cmbx-12">is associated with </span><span
|
||||
class="cmr-12">Ω</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>
|
||||
<span
|
||||
class="cmmi-8">k</span></sub> <span
|
||||
class="cmr-12">is the size of Ω</span><sup><span
|
||||
class="cmbx-12">is the size of </span><span
|
||||
class="cmr-12">Ω</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 < nlev</span><span
|
||||
class="cmr-12">, a restriction</span>
|
||||
class="cmbx-12">, a</span>
|
||||
<span
|
||||
class="cmr-12">operator and a prolongation one are built, which connect two levels </span><span
|
||||
class="cmmi-12">k </span><span
|
||||
class="cmr-12">and</span>
|
||||
class="cmbx-12">restriction operator and a prolongation one are built, which connect two</span>
|
||||
<span
|
||||
class="cmbx-12">levels </span><span
|
||||
class="cmmi-12">k </span><span
|
||||
class="cmr-12">+ 1:</span>
|
||||
class="cmbx-12">and </span><span
|
||||
class="cmmi-12">k </span><span
|
||||
class="cmr-12">+ 1</span><span
|
||||
class="cmbx-12">:</span>
|
||||
<center class="math-display" >
|
||||
<img
|
||||
src="userhtml4x.png" alt="P k ∈ ℝnk×nk+1, Rk ∈ ℝnk+1×nk ;
|
||||
src="userhtml4x.png" alt=" k nk×nk+1 k nk+1×nk
|
||||
P ∈ ℝ , R ∈ ℝ ;
|
||||
" class="math-display" ></center>
|
||||
<!--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-8">k</span><span
|
||||
class="cmr-8">+1</span></sup> <span
|
||||
class="cmr-12">is computed by using the previous operators according to the</span>
|
||||
class="cmr-8">+1</span></sup> <span
|
||||
class="cmbx-12">is computed by using the previous operators according to</span>
|
||||
<span
|
||||
class="cmr-12">Galerkin approach, i.e.,</span>
|
||||
class="cmbx-12">the Galerkin approach, i.e.,</span>
|
||||
<center class="math-display" >
|
||||
<img
|
||||
src="userhtml5x.png" alt=" k+1 k k k
|
||||
A = R A P .
|
||||
src="userhtml5x.png" alt="Ak+1 = RkAkP k.
|
||||
" class="math-display" ></center>
|
||||
<!--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-8">k</span></sup> <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="cmr-12">)</span><sup><span
|
||||
class="cmmi-8">T</span> </sup> <span
|
||||
class="cmr-12">A smoother with</span>
|
||||
class="cmbx-12">A smoother</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-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 < 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
|
||||
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
|
||||
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="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="cmr-12">and </span><span
|
||||
class="cmbx-12">and </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
|
||||
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
|
||||
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"
|
||||
>
|
||||
|
||||
@@ -178,9 +183,9 @@ class="cmr-12">so-called build phase of the preconditioner.</span>
|
||||
cellpadding="0" border="0" cellspacing="0"
|
||||
class="tabbing"><tr
|
||||
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
||||
class="tabbing"> </td><td style="width:16;"
|
||||
class="tabbing"> </td><td style="width:16;"
|
||||
class="tabbing"> </td><td
|
||||
class="tabbing"> </td><td style="width:16;"
|
||||
class="tabbing"> </td><td style="width:16;"
|
||||
class="tabbing"> </td><td
|
||||
class="tabbing"></td></tr></table>
|
||||
<!--l. 115--><p class="noindent" ><table
|
||||
cellpadding="0" border="0" cellspacing="0"
|
||||
@@ -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. 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
|
||||
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
|
||||
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="cmr-12">= </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><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="cmr-12">denotes the preconditioner,</span>
|
||||
class="cmbx-12">denotes the preconditioner, usually within an iteration of a Krylov</span>
|
||||
<span
|
||||
class="cmr-12">usually within an iteration of a Krylov solver </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">solver </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XSaad_book"><span
|
||||
class="cmr-12">21</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">. An example of such a combination,</span>
|
||||
class="cmbx-12">23</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">. An example of such a combination, known as V-cycle, is given in</span>
|
||||
<span
|
||||
class="cmr-12">known as V-cycle, is given in Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">Figure</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="#x14-130021"><span
|
||||
class="cmr-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">1</span><!--tex4ht:ref: fig:application_alg --></a><span
|
||||
class="cmbx-12">. In this case, a single iteration of the same smoother is used before</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
|
||||
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
|
||||
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
|
||||
class="cmr-12">standard V-cycle and W-cycle</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">V-cycle and W-cycle</span><span
|
||||
class="cmbx-12"> </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XBriggs2000"><span
|
||||
class="cmr-12">3</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">, and a version of the K-cycle described</span>
|
||||
class="cmbx-12">3</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">, and a version of the K-cycle described</span>
|
||||
<span
|
||||
class="cmr-12">in</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">in</span><span
|
||||
class="cmbx-12"> </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XNotay2008"><span
|
||||
class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span>
|
||||
class="cmbx-12">22</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 133--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu7.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu6.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html#userhtmlsu6.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 133--><p class="indent" > <a
|
||||
id="tailuserhtmlsu6.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -11,89 +11,96 @@
|
||||
</head><body
|
||||
>
|
||||
<!--l. 133--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu8.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu6.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu6.html#tailuserhtmlsu6.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu7.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html#userhtmlsu7.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Smoothed Aggregation</span></h4>
|
||||
class="cmbx-12">Smoothed Aggregation</span></h4>
|
||||
<!--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-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-8">k</span><span
|
||||
class="cmr-8">+1</span></sup><span
|
||||
class="cmr-12">,</span>
|
||||
class="cmbx-12">, MLD2P4 uses the smoothed aggregation algorithm described</span>
|
||||
<span
|
||||
class="cmr-12">MLD2P4 uses the smoothed aggregation algorithm described in </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">in </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XBREZINA_VANEK"><span
|
||||
class="cmr-12">2</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">2</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
|
||||
class="cmr-12">26</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">. The basic idea</span>
|
||||
class="cmbx-12">28</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">. The basic idea of this algorithm is to build a coarse set of indices</span>
|
||||
<span
|
||||
class="cmr-12">of this algorithm is to build a coarse set of indices Ω</span><sup><span
|
||||
class="cmr-12">Ω</span><sup><span
|
||||
class="cmmi-8">k</span><span
|
||||
class="cmr-8">+1</span></sup> <span
|
||||
class="cmr-12">by suitably grouping the</span>
|
||||
<span
|
||||
class="cmr-12">indices of Ω</span><sup><span
|
||||
class="cmr-8">+1</span></sup> <span
|
||||
class="cmbx-12">by suitably grouping the indices of </span><span
|
||||
class="cmr-12">Ω</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
|
||||
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-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
|
||||
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
|
||||
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
|
||||
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" >
|
||||
<li
|
||||
class="enumerate" id="x15-14002x1"><span
|
||||
class="cmr-12">aggregation of the indices of Ω</span><sup><span
|
||||
class="cmbx-12">aggregation of the indices of </span><span
|
||||
class="cmr-12">Ω</span><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmr-12">to obtain Ω</span><sup><span
|
||||
class="cmbx-12">to obtain </span><span
|
||||
class="cmr-12">Ω</span><sup><span
|
||||
class="cmmi-8">k</span><span
|
||||
class="cmr-8">+1</span></sup><span
|
||||
class="cmr-12">;</span>
|
||||
class="cmbx-12">;</span>
|
||||
</li>
|
||||
<li
|
||||
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-8">k</span></sup><span
|
||||
class="cmr-12">;</span>
|
||||
class="cmbx-12">;</span>
|
||||
</li>
|
||||
<li
|
||||
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-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-8">k</span></sup> <span
|
||||
class="cmr-12">= (</span><span
|
||||
@@ -101,51 +108,51 @@ class="cmmi-12">P</span><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmr-12">)</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-8">k</span><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
|
||||
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
|
||||
class="cmr-12">described in</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">algorithm described in</span><span
|
||||
class="cmbx-12"> </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
|
||||
class="cmr-12">26</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">is used. In this algorithm, each index </span><span
|
||||
class="cmbx-12">28</span></a><span
|
||||
class="cmbx-12">]</span></span> <span
|
||||
class="cmbx-12">is used. In this algorithm, each index </span><span
|
||||
class="cmmi-12">j </span><span
|
||||
class="cmsy-10x-x-120">∈ </span><span
|
||||
class="cmr-12">Ω</span><sup><span
|
||||
class="cmmi-8">k</span><span
|
||||
class="cmr-8">+1</span></sup> <span
|
||||
class="cmr-12">corresponds</span>
|
||||
class="cmr-8">+1</span></sup>
|
||||
<span
|
||||
class="cmr-12">to an aggregate Ω</span><sub><span
|
||||
class="cmbx-12">corresponds to an aggregate </span><span
|
||||
class="cmr-12">Ω</span><sub><span
|
||||
class="cmmi-8">j</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmr-12">of Ω</span><sup><span
|
||||
class="cmbx-12">of </span><span
|
||||
class="cmr-12">Ω</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="cmsy-10x-x-120">∈ </span><span
|
||||
class="cmr-12">Ω</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
|
||||
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="cmr-12">,</span>
|
||||
<span
|
||||
class="cmr-12">i.e.,</span>
|
||||
class="cmbx-12">, i.e.,</span>
|
||||
<table
|
||||
class="equation"><tr><td>
|
||||
<center class="math-display" >
|
||||
<img
|
||||
src="userhtml13x.png" alt=" { ∘ -------}
|
||||
Ωkj ⊂ N ki (θ) = r ∈ Ωk : |akir| > θ |akiiakrr| ∪ {i} ,
|
||||
src="userhtml13x.png" alt=" { ∘ ------}
|
||||
Ωkj ⊂ N ki (θ) = r ∈ Ωk : |akir| > θ |akiiakrr| ∪ {i} ,
|
||||
" class="math-display" ><a
|
||||
id="x15-14007r3"></a></center></td><td class="equation-label"><span
|
||||
class="cmr-12">(3)</span></td></tr></table>
|
||||
@@ -154,53 +161,57 @@ class="cmr-12">(3)</span></td></tr></table>
|
||||
|
||||
<!--l. 160--><p class="nopar" >
|
||||
<span
|
||||
class="cmr-12">for a given threshold </span><span
|
||||
class="cmbx-12">for a given threshold </span><span
|
||||
class="cmmi-12">θ </span><span
|
||||
class="cmsy-10x-x-120">∈ </span><span
|
||||
class="cmr-12">[0</span><span
|
||||
class="cmmi-12">, </span><span
|
||||
class="cmr-12">1] (see</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmr-12">1] </span><span
|
||||
class="cmbx-12">(see</span><span
|
||||
class="cmbx-12"> </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
|
||||
class="cmr-12">26</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">for the details). Since this algorithm has a</span>
|
||||
class="cmbx-12">28</span></a><span
|
||||
class="cmbx-12">]</span></span> <span
|
||||
class="cmbx-12">for the details). Since this algorithm</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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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="cmr-12">. Nevertheless, this parallel algorithm has been chosen</span>
|
||||
class="cmbx-12">. Nevertheless, this parallel algorithm has been chosen for</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
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#Xaaecc_07"><span
|
||||
class="cmr-12">5</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">5</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlli4.html#Xapnum_07"><span
|
||||
class="cmr-12">7</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">7</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlli4.html#XTUMINARO_TONG"><span
|
||||
class="cmr-12">25</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span>
|
||||
class="cmbx-12">27</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</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-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-8">k</span></sup> <span
|
||||
class="cmsy-10x-x-120">∈ </span><span
|
||||
@@ -211,41 +222,41 @@ class="cmsy-8">×</span><span
|
||||
class="cmmi-8">n</span><sub><span
|
||||
class="cmmi-6">k</span><span
|
||||
class="cmr-6">+1</span></sub></sup><span
|
||||
class="cmr-12">,</span>
|
||||
<span
|
||||
class="cmr-12">defined as</span>
|
||||
class="cmbx-12">, defined as</span>
|
||||
<table
|
||||
class="equation"><tr><td>
|
||||
<center class="math-display" >
|
||||
<img
|
||||
src="userhtml14x.png" alt=" { k
|
||||
P¯k = (¯pkij), p¯kij = 1 if i ∈ Ω j,
|
||||
0 otherwise,
|
||||
src="userhtml14x.png" alt=" { k
|
||||
P¯k = (¯pk), ¯pk = 1 if i ∈ Ω j,
|
||||
ij ij 0 otherwise,
|
||||
" class="math-display" ><a
|
||||
id="x15-14008r4"></a></center></td><td class="equation-label"><span
|
||||
class="cmr-12">(4)</span></td></tr></table>
|
||||
<!--l. 181--><p class="nopar" >
|
||||
<span
|
||||
class="cmr-12">where Ω</span><sub><span
|
||||
class="cmbx-12">where </span><span
|
||||
class="cmr-12">Ω</span><sub><span
|
||||
class="cmmi-8">j</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmr-12">is the aggregate of Ω</span><sup><span
|
||||
class="cmbx-12">is the aggregate of </span><span
|
||||
class="cmr-12">Ω</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="cmsy-10x-x-120">∈ </span><span
|
||||
class="cmr-12">Ω</span><sup><span
|
||||
class="cmmi-8">k</span><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-8">k</span></sup> <span
|
||||
class="cmr-12">is obtained</span>
|
||||
class="cmbx-12">is</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-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-8">k</span></sup> <span
|
||||
class="cmsy-10x-x-120">∈ </span><span
|
||||
@@ -255,45 +266,48 @@ class="cmmi-6">k</span></sub><span
|
||||
class="cmsy-8">×</span><span
|
||||
class="cmmi-8">n</span><sub><span
|
||||
class="cmmi-6">k</span></sub></sup><span
|
||||
class="cmr-12">:</span>
|
||||
class="cmbx-12">:</span>
|
||||
<center class="math-display" >
|
||||
<img
|
||||
src="userhtml15x.png" alt="Pk = Sk ¯Pk, " class="math-display" ></center> <span
|
||||
class="cmr-12">in</span>
|
||||
src="userhtml15x.png" alt="Pk = Sk ¯P k, " class="math-display" ></center>
|
||||
<span
|
||||
class="cmr-12">order to remove nonsmooth components from the range of the prolongator, and hence</span>
|
||||
class="cmbx-12">in order to remove nonsmooth components from the range of the</span>
|
||||
<span
|
||||
class="cmr-12">to improve the convergence properties of the multilevel method</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">prolongator, and hence to improve the convergence properties of the</span>
|
||||
<span
|
||||
class="cmbx-12">multilevel method</span><span
|
||||
class="cmbx-12"> </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XBREZINA_VANEK"><span
|
||||
class="cmr-12">2</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">2</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlli4.html#XStuben_01"><span
|
||||
class="cmr-12">24</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">. A simple</span>
|
||||
<span
|
||||
class="cmr-12">choice for </span><span
|
||||
class="cmbx-12">26</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">. A simple choice for </span><span
|
||||
class="cmmi-12">S</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" >
|
||||
<img
|
||||
src="userhtml16x.png" alt=" k k k -1 k
|
||||
S = I - ω (D ) A F,
|
||||
src="userhtml16x.png" alt="Sk = I - ωk(Dk )-1AkF,
|
||||
" class="math-display" ></center>
|
||||
<!--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-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-8">k</span></sup><span
|
||||
class="cmr-12">, </span><span
|
||||
class="cmmi-12">A</span><sub>
|
||||
class="cmbx-12">,</span>
|
||||
<span
|
||||
class="cmmi-12">A</span><sub><span
|
||||
class="cmmi-8">F</span> </sub><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmr-12">= (</span><span class="bar-css"><span
|
||||
@@ -301,33 +315,37 @@ class="cmmi-12">a</span></span><sub>
|
||||
<span
|
||||
class="cmmi-8">ij</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmr-12">) is</span>
|
||||
<span
|
||||
class="cmr-12">the filtered matrix defined as</span>
|
||||
class="cmr-12">) </span><span
|
||||
class="cmbx-12">is the filtered matrix defined as</span>
|
||||
<table
|
||||
class="equation"><tr><td>
|
||||
<center class="math-display" >
|
||||
<img
|
||||
src="userhtml17x.png" alt=" { k k ∑
|
||||
a¯kij = aij if j ∈ N i (θ), (j ⁄= i), ¯akii = akii - (akij - ¯akij),
|
||||
0 otherwise, j⁄=i
|
||||
src="userhtml17x.png" alt=" {
|
||||
¯ak = akij if j ∈ N ki (θ), (j ⁄= i), ¯ak = ak - ∑ (ak - ¯ak),
|
||||
ij 0 otherwise, ii ii ij ij
|
||||
j⁄=i
|
||||
" class="math-display" ><a
|
||||
id="x15-14009r5"></a></center></td><td class="equation-label"><span
|
||||
class="cmr-12">(5)</span></td></tr></table>
|
||||
<!--l. 208--><p class="nopar" >
|
||||
<span
|
||||
class="cmr-12">and </span><span
|
||||
class="cmbx-12">and </span><span
|
||||
class="cmmi-12">ω</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">∕</span><span
|
||||
class="cmr-12">(3</span><span
|
||||
class="cmmi-12">ρ</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">ρ</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-8">k</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>
|
||||
<span
|
||||
class="cmmi-8">F</span> </sub><sup><span
|
||||
class="cmmi-8">k</span></sup>
|
||||
<span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmmi-8">k</span></sup> <span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XBREZINA_VANEK"><span
|
||||
class="cmr-12">2</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">. In MLD2P4 this approximation is obtained by using </span><span
|
||||
class="cmbx-12">2</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">. In MLD2P4 this approximation is obtained by using </span><span
|
||||
class="cmsy-10x-x-120">∥</span><span
|
||||
class="cmmi-12">A</span><sub><span
|
||||
class="cmmi-8">F</span> </sub><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmsy-10x-x-120">∥</span><sub>
|
||||
<span
|
||||
class="cmsy-8">∞</span></sub> <span
|
||||
class="cmr-12">as an estimate of </span><span
|
||||
class="cmmi-12">ρ</span><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmr-12">.</span>
|
||||
<span
|
||||
class="cmr-12">Note that for systems coming from uniformly elliptic problems, filtering the matrix </span><span
|
||||
class="cmmi-12">A</span><sup><span
|
||||
class="cmmi-8">k</span></sup>
|
||||
<span
|
||||
class="cmr-12">has little or no effect, and </span><span
|
||||
class="cmmi-12">A</span><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmr-12">can be used instead of </span><span
|
||||
class="cmmi-12">A</span><sub>
|
||||
<span
|
||||
class="cmmi-8">F</span> </sub><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmr-12">. The latter choice is the</span>
|
||||
class="cmsy-10x-x-120">∥</span><sub>
|
||||
<span
|
||||
class="cmr-12">default in MLD2P4.</span>
|
||||
class="cmsy-8">∞</span></sub>
|
||||
<span
|
||||
class="cmbx-12">as an estimate of </span><span
|
||||
class="cmmi-12">ρ</span><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmbx-12">. Note that for systems coming from uniformly</span>
|
||||
<span
|
||||
class="cmbx-12">elliptic problems, filtering the matrix </span><span
|
||||
class="cmmi-12">A</span><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmbx-12">has little or no effect, and</span>
|
||||
<span
|
||||
class="cmmi-12">A</span><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmbx-12">can be used instead of </span><span
|
||||
class="cmmi-12">A</span><sub>
|
||||
<span
|
||||
class="cmmi-8">F</span> </sub><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmbx-12">. The latter choice is the default in</span>
|
||||
<span
|
||||
class="cmbx-12">MLD2P4.</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 216--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu8.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">next</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu6.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu6.html#tailuserhtmlsu6.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu7.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html#userhtmlsu7.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 216--><p class="indent" > <a
|
||||
id="tailuserhtmlsu7.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -11,69 +11,73 @@
|
||||
</head><body
|
||||
>
|
||||
<!--l. 216--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu7.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="#tailuserhtmlsu8.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html#userhtmlsu8.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
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
|
||||
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
|
||||
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
|
||||
class="cmr-12">Schwarz (AS) ones (see, e.g., </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">Gauss-Seidel methods, and the additive Schwarz (AS) ones (see, e.g.,</span>
|
||||
<span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XSaad_book"><span
|
||||
class="cmr-12">21</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">23</span></a><span
|
||||
class="cmbx-12">,</span><span
|
||||
class="cmbx-12"> </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>
|
||||
class="cmbx-12">24</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">).</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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
class="cmr-12">iteration.</span>
|
||||
class="cmbx-12">the beginning of the current iteration.</span>
|
||||
<!--l. 229--><p class="indent" > <span
|
||||
class="cmr-12">In the AS methods, the index space Ω</span><sup><span
|
||||
class="cmbx-12">In the AS methods, the index space </span><span
|
||||
class="cmr-12">Ω</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>
|
||||
<span
|
||||
class="cmmi-8">k</span></sub> <span
|
||||
class="cmr-12">subsets Ω</span><sub><span
|
||||
class="cmbx-12">subsets </span><span
|
||||
class="cmr-12">Ω</span><sub><span
|
||||
class="cmmi-8">i</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmr-12">of</span>
|
||||
class="cmbx-12">of</span>
|
||||
<span
|
||||
class="cmr-12">size </span><span
|
||||
class="cmbx-12">size </span><span
|
||||
class="cmmi-12">n</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="cmr-12">we consider the restriction operator</span>
|
||||
class="cmbx-12">we consider the restriction</span>
|
||||
<span
|
||||
class="cmbx-12">operator </span><span
|
||||
class="cmmi-12">R</span><sub><span
|
||||
class="cmmi-8">i</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
@@ -84,25 +88,27 @@ class="cmmi-6">k,i</span></sub><span
|
||||
class="cmsy-8">×</span><span
|
||||
class="cmmi-8">n</span><sub><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-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>
|
||||
<span
|
||||
class="cmmi-8">i</span></sub><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
|
||||
class="cmbx-12">components of </span><span
|
||||
class="cmmi-12">x</span><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmr-12">with indices in Ω</span><sub>
|
||||
class="cmbx-12">with indices in </span><span
|
||||
class="cmr-12">Ω</span><sub>
|
||||
<span
|
||||
class="cmmi-8">i</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmr-12">, and the prolongation operator </span><span
|
||||
class="cmmi-12">P</span><sub>
|
||||
class="cmbx-12">, and the prolongation operator</span>
|
||||
<span
|
||||
class="cmmi-12">P</span><sub><span
|
||||
class="cmmi-8">i</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup> <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="cmr-12">)</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
|
||||
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">k</span></sup> <span
|
||||
class="cmr-12">= </span><span
|
||||
@@ -129,39 +134,41 @@ class="cmmi-12">P</span><sub>
|
||||
<span
|
||||
class="cmmi-8">i</span></sub><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
|
||||
class="cmbx-12">the restriction of </span><span
|
||||
class="cmmi-12">A</span><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmr-12">to the index space Ω</span><sub>
|
||||
class="cmbx-12">to the index space </span><span
|
||||
class="cmr-12">Ω</span><sub>
|
||||
<span
|
||||
class="cmmi-8">i</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmr-12">. The classical AS preconditioner </span><span
|
||||
class="cmmi-12">M</span><sub>
|
||||
class="cmbx-12">. The classical AS preconditioner</span>
|
||||
<span
|
||||
class="cmmi-12">M</span><sub><span
|
||||
class="cmmi-8">AS</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmr-12">is defined</span>
|
||||
<span
|
||||
class="cmr-12">as</span>
|
||||
class="cmbx-12">is defined as</span>
|
||||
<center class="math-display" >
|
||||
<img
|
||||
src="userhtml18x.png" alt=" m∑k
|
||||
(M AkS )-1 = Pki (Aki)-1Rki,
|
||||
i=1
|
||||
src="userhtml18x.png" alt=" k -1 m∑k k k -1 k
|
||||
(M AS) = Pi (A i) R i,
|
||||
i=1
|
||||
" class="math-display" ></center>
|
||||
<!--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-8">i</span></sub><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
|
||||
class="cmbx-12">inverse of </span><span
|
||||
class="cmmi-12">A</span><sub><span
|
||||
class="cmmi-8">i</span></sub><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>
|
||||
<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="cmsy-8">-</span><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>
|
||||
<span
|
||||
class="cmmi-8">AS</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
class="cmr-12">during the multilevel</span>
|
||||
class="cmmi-8">k</span></sup>
|
||||
<span
|
||||
class="cmr-12">build phase involves</span>
|
||||
class="cmbx-12">during the multilevel build phase involves</span>
|
||||
<ul class="itemize1">
|
||||
<li class="itemize"><span
|
||||
class="cmr-12">the definition of the index subspaces Ω</span><sub><span
|
||||
class="cmbx-12">the definition of the index subspaces </span><span
|
||||
class="cmr-12">Ω</span><sub><span
|
||||
class="cmmi-8">i</span></sub><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
|
||||
class="cmbx-12">operators </span><span
|
||||
class="cmmi-12">R</span><sub><span
|
||||
class="cmmi-8">i</span></sub><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>
|
||||
<span
|
||||
class="cmmi-8">i</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmr-12">);</span>
|
||||
class="cmbx-12">);</span>
|
||||
</li>
|
||||
<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-8">i</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmr-12">;</span>
|
||||
class="cmbx-12">;</span>
|
||||
</li>
|
||||
<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
|
||||
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
|
||||
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-8">k</span></sup> <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-12">w</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-8">k</span></sup> <span
|
||||
class="cmsy-10x-x-120">∈ </span><span
|
||||
class="msbm-10x-x-120">ℝ</span><sup><span
|
||||
class="cmmi-8">n</span><sub><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
|
||||
class="cmr-12">phase, requires</span>
|
||||
class="cmbx-12">application phase, requires</span>
|
||||
<ul class="itemize1">
|
||||
<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-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">ℝ</span><sup><span
|
||||
class="cmmi-8">n</span><sub><span
|
||||
class="cmmi-6">k,i</span></sub></sup><span
|
||||
class="cmr-12">, i.e.</span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmbx-12">, i.e.</span><span
|
||||
class="cmbx-12"> </span><span
|
||||
class="cmmi-12">w</span><sub>
|
||||
<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-12">w</span><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmr-12">;</span>
|
||||
class="cmbx-12">;</span>
|
||||
</li>
|
||||
<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-8">i</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup> <span
|
||||
@@ -270,13 +278,13 @@ class="cmmi-12">w</span><sub>
|
||||
<span
|
||||
class="cmmi-8">i</span></sub><sup><span
|
||||
class="cmmi-8">k</span></sup><span
|
||||
class="cmr-12">;</span>
|
||||
class="cmbx-12">;</span>
|
||||
</li>
|
||||
<li class="itemize"><span
|
||||
class="cmr-12">the prolongation and the sum of the previous vectors, i.e.</span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmbx-12">the prolongation and the sum of the previous vectors, i.e.</span><span
|
||||
class="cmbx-12"> </span><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="cmex-10x-x-120">∑</span>
|
||||
@@ -293,43 +301,47 @@ class="cmmi-12">z</span><sub>
|
||||
<span
|
||||
class="cmmi-8">i</span></sub><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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
class="cmr-12">preconditioners</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">computers, and is therefore the most widely used among the AS</span>
|
||||
<span
|
||||
class="cmbx-12">preconditioners</span><span
|
||||
class="cmbx-12"> </span><span class="cite"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlli4.html#XCAI_SARKIS"><span
|
||||
class="cmr-12">6</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span>
|
||||
class="cmbx-12">6</span></a><span
|
||||
class="cmbx-12">]</span></span><span
|
||||
class="cmbx-12">.</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
|
||||
class="cmr-12">libraries reported in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">the third-party libraries reported in Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu2.html#x9-80003.2"><span
|
||||
class="cmr-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">3.2</span><!--tex4ht:ref: sec:third-party --></a><span
|
||||
class="cmbx-12">, can be applied as</span>
|
||||
<span
|
||||
class="cmr-12">MLD2P4. Native inexact solvers based on incomplete LU factorizations, as well as</span>
|
||||
class="cmbx-12">coarsest-level solvers by MLD2P4. Native inexact solvers based on</span>
|
||||
<span
|
||||
class="cmr-12">Jacobi, hybrid (forward) Gauss-Seidel, and block Jacobi preconditioners are</span>
|
||||
class="cmbx-12">incomplete LU factorizations, as well as Jacobi, hybrid (forward)</span>
|
||||
<span
|
||||
class="cmr-12">also available. Direct solvers usually lead to more effective preconditioners in</span>
|
||||
class="cmbx-12">Gauss-Seidel, and block Jacobi preconditioners are also available. Direct</span>
|
||||
<span
|
||||
class="cmr-12">terms of algorithmic scalability; however, this does not guarantee parallel</span>
|
||||
class="cmbx-12">solvers usually lead to more effective preconditioners in terms of</span>
|
||||
<span
|
||||
class="cmr-12">efficiency.</span>
|
||||
class="cmbx-12">algorithmic scalability; however, this does not guarantee parallel</span>
|
||||
<span
|
||||
class="cmbx-12">efficiency.</span>
|
||||
|
||||
|
||||
|
||||
@@ -337,19 +349,19 @@ class="cmr-12">efficiency.</span>
|
||||
|
||||
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu7.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">prev-tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlsu8.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse4.html#userhtmlsu8.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 1--><p class="indent" > <a
|
||||
id="tailuserhtmlsu8.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,102 +10,107 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 122--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
<!--l. 109--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmbx-12">[</span><a
|
||||
href="#tailuserhtmlsu9.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">tail</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu9.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<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
|
||||
class="cmr-12">Examples</span></h4>
|
||||
<!--l. 124--><p class="noindent" ><span
|
||||
class="cmr-12">The code reported in Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">Examples</span></h4>
|
||||
<!--l. 111--><p class="noindent" ><span
|
||||
class="cmbx-12">The code reported in Figure</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="#x18-170012"><span
|
||||
class="cmr-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">2</span><!--tex4ht:ref: fig:ex1 --></a> <span
|
||||
class="cmbx-12">shows how to set and apply the default</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner available in the real double precision version of MLD2P4 (see Table</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">multilevel preconditioner available in the real double precision version of</span>
|
||||
<span
|
||||
class="cmbx-12">AMG4PSBLAS (see Table</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse5.html#x17-160151"><span
|
||||
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
|
||||
class="cmr-12">).</span>
|
||||
class="cmbx-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
|
||||
class="cmbx-12">). This preconditioner is chosen by simply</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">’ML’</span></span></span> <span
|
||||
class="cmr-12">as the second argument of</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">as the second argument of </span><span class="obeylines-h"><span class="verb"><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="cmr-12">is not needed) and is applied with the CG solver provided by</span>
|
||||
class="cmbx-12">is not</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
|
||||
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>
|
||||
<span
|
||||
class="cmbx-12">previously observed, the modules </span><span class="obeylines-h"><span class="verb"><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
|
||||
class="cmr-12">must be used by the example program.</span>
|
||||
<!--l. 134--><p class="indent" > <span
|
||||
class="cmr-12">The part of the code concerning the reading and assembling of the sparse matrix</span>
|
||||
<span
|
||||
class="cmr-12">and the right-hand side vector, performed through the PSBLAS routines for sparse</span>
|
||||
<span
|
||||
class="cmr-12">matrix and vector management, is not reported here for brevity; the statements</span>
|
||||
<span
|
||||
class="cmr-12">concerning the deallocation of the PSBLAS data structure are neglected too. The</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="cmtt-12">mld_dexample_ml.f90</span></span></span><span
|
||||
class="cmr-12">,</span>
|
||||
<span
|
||||
class="cmr-12">in the directory </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">examples/fileread</span></span></span> <span
|
||||
class="cmr-12">of the MLD2P4 implementation (see</span>
|
||||
<span
|
||||
class="cmr-12">Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu5.html#x12-110003.5"><span
|
||||
class="cmr-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="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">examples/fileread/runs</span></span></span><span
|
||||
class="cmr-12">. For details on the use of the PSBLAS routines, see the</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
|
||||
class="cmr-12">PSBLAS User’s Guide</span><span
|
||||
class="cmr-12"> </span><span class="cite"><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">.</span>
|
||||
<!--l. 146--><p class="indent" > <span
|
||||
class="cmr-12">The setup and application of the default multilevel preconditioner for the real single</span>
|
||||
class="cmbx-12">sparse matrix and the right-hand side vector, performed through the</span>
|
||||
<span
|
||||
class="cmr-12">precision and the complex, single and double precision, versions are obtained</span>
|
||||
class="cmbx-12">PSBLAS routines for sparse matrix and vector management, is not</span>
|
||||
<span
|
||||
class="cmr-12">with straightforward modifications of the previous example (see Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse6.html#x19-180006"><span
|
||||
class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a> <span
|
||||
class="cmr-12">for</span>
|
||||
class="cmbx-12">reported here for brevity; the statements concerning the deallocation of the</span>
|
||||
<span
|
||||
class="cmbx-12">PSBLAS data structure are neglected too. The complete code can be found</span>
|
||||
<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="cmbx-12">of the AMG4PSBLAS implementation (see Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlsu5.html#x12-110003.5"><span
|
||||
class="cmbx-12">3.5</span><!--tex4ht:ref: sec:ex_and_test --></a><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="cmr-12">details). If these versions are installed, the corresponding codes are available in</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">examples/fileread/runs</span></span></span><span
|
||||
class="cmbx-12">. For details on the use of the PSBLAS routines, see</span>
|
||||
<span
|
||||
class="cmbx-12">the PSBLAS User’s Guide</span><span
|
||||
class="cmbx-12"> </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">.</span>
|
||||
<!--l. 133--><p class="indent" > <span
|
||||
class="cmbx-12">The setup and application of the default multilevel preconditioner for</span>
|
||||
<span
|
||||
class="cmbx-12">the real single precision and the complex, single and double precision,</span>
|
||||
<span
|
||||
class="cmbx-12">versions are obtained with straightforward modifications of the previous</span>
|
||||
<span
|
||||
class="cmbx-12">example (see Section</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="userhtmlse6.html#x19-180006"><span
|
||||
class="cmbx-12">6</span><!--tex4ht:ref: sec:userinterface --></a> <span
|
||||
class="cmbx-12">for details). If these versions are installed, the</span>
|
||||
<span
|
||||
class="cmbx-12">corresponding codes are available in </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">examples/fileread/</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 152--><p class="indent" > <hr class="figure"><div class="figure"
|
||||
class="cmbx-12">.</span>
|
||||
<!--l. 139--><p class="indent" > <hr class="figure"><div class="figure"
|
||||
>
|
||||
|
||||
|
||||
@@ -117,13 +122,13 @@ class="cmr-12">.</span>
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 153--><p class="noindent" >
|
||||
<!--l. 140--><p class="noindent" >
|
||||
|
||||
|
||||
|
||||
<div class="minipage"><div class="verbatim" id="verbatim-6">
|
||||
  use psb_base_mod
|
||||
 <br />  use mld_prec_mod
|
||||
 <br />  use amg_prec_mod
|
||||
 <br />  use psb_krylov_mod
|
||||
 <br />... ...
|
||||
 <br />!
|
||||
@@ -132,7 +137,7 @@ class="cmr-12">.</span>
|
||||
 <br />! sparse matrix descriptor
|
||||
 <br />  type(psb_desc_type)   :: desc_A
|
||||
 <br />! preconditioner
|
||||
 <br />  type(mld_dprec_type)  :: P
|
||||
 <br />  type(amg_dprec_type)  :: P
|
||||
 <br />! right-hand side and solution vectors
|
||||
 <br />  type(psb_d_vect_type) :: b, x
|
||||
 <br />... ...
|
||||
@@ -174,7 +179,7 @@ class="cmr-12">.</span>
|
||||
 <br />  call psb_exit(ictxt)
|
||||
 <br />  stop
|
||||
</div>
|
||||
<!--l. 208--><p class="nopar" >
|
||||
<!--l. 195--><p class="nopar" >
|
||||
|
||||
|
||||
</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. 216--><p class="indent" > <span
|
||||
class="cmr-12">Different versions of the multilevel preconditioner can be obtained by changing the</span>
|
||||
<!--l. 201--><p class="indent" > </div><hr class="endfigure">
|
||||
<!--l. 203--><p class="indent" > <span
|
||||
class="cmbx-12">Different versions of the multilevel preconditioner can be obtained by</span>
|
||||
<span
|
||||
class="cmr-12">default values of the preconditioner parameters. The code reported in Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">changing the default values of the preconditioner parameters. The code</span>
|
||||
<span
|
||||
class="cmbx-12">reported in Figure</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="#x18-170023"><span
|
||||
class="cmr-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
|
||||
class="cmr-12">shows</span>
|
||||
class="cmbx-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
|
||||
class="cmbx-12">shows how to set a V-cycle preconditioner which</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
|
||||
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
|
||||
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
|
||||
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
|
||||
class="cmr-12">by</span><span
|
||||
class="cmr-12"> </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">and set by</span><span
|
||||
class="cmbx-12"> </span><span class="obeylines-h"><span class="verb"><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
|
||||
class="cmr-12">the coarsest-level matrix is distributed among the processes. Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">solver implies that the coarsest-level matrix is distributed among the</span>
|
||||
<span
|
||||
class="cmbx-12">processes. Figure</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="#x18-170034"><span
|
||||
class="cmr-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span
|
||||
class="cmr-12">shows how to set</span>
|
||||
class="cmbx-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span
|
||||
class="cmbx-12">shows how to set a W-cycle preconditioner which</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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
class="cmr-12">Figures</span><span
|
||||
class="cmr-12"> </span><a
|
||||
class="cmbx-12">shown in Figures</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="#x18-170023"><span
|
||||
class="cmr-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
|
||||
class="cmr-12">and </span><a
|
||||
class="cmbx-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
|
||||
class="cmbx-12">and </span><a
|
||||
href="#x18-170034"><span
|
||||
class="cmr-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="cmtt-12">mld_dexample_ml.f90</span></span></span>
|
||||
<span
|
||||
class="cmr-12">too.</span>
|
||||
<!--l. 240--><p class="indent" > <span
|
||||
class="cmr-12">Finally, Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="#x18-170045"><span
|
||||
class="cmr-12">5</span><!--tex4ht:ref: fig:ex4 --></a> <span
|
||||
class="cmr-12">shows the setup of a one-level additive Schwarz preconditioner,</span>
|
||||
<span
|
||||
class="cmr-12">i.e., RAS with overlap 2. Note also that a Krylov method different from CG</span>
|
||||
<span
|
||||
class="cmr-12">must be used to solve the preconditioned system, since the preconditione in</span>
|
||||
<span
|
||||
class="cmr-12">nonsymmetric. The corresponding example program is available in the file</span>
|
||||
class="cmbx-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span
|
||||
class="cmbx-12">are included in the example program file</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>
|
||||
class="cmtt-12">amg_dexample_ml.f90</span></span></span> <span
|
||||
class="cmbx-12">too.</span>
|
||||
<!--l. 227--><p class="indent" > <span
|
||||
class="cmbx-12">Finally, Figure</span><span
|
||||
class="cmbx-12"> </span><a
|
||||
href="#x18-170045"><span
|
||||
class="cmbx-12">5</span><!--tex4ht:ref: fig:ex4 --></a> <span
|
||||
class="cmbx-12">shows the setup of a one-level additive Schwarz</span>
|
||||
<span
|
||||
class="cmr-12">the right-hand side are generated by discretizing a PDE with Dirichlet boundary</span>
|
||||
class="cmbx-12">preconditioner, i.e., RAS with overlap 2. Note also that a Krylov method</span>
|
||||
<span
|
||||
class="cmr-12">conditions are also available in the directory </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmbx-12">different from CG must be used to solve the preconditioned system, since</span>
|
||||
<span
|
||||
class="cmbx-12">the preconditione in nonsymmetric. The corresponding example program is</span>
|
||||
<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
|
||||
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="cmr-12">.</span>
|
||||
<!--l. 261--><p class="indent" > <hr class="figure"><div class="figure"
|
||||
class="cmbx-12">.</span>
|
||||
<!--l. 238--><p class="indent" > <hr class="figure"><div class="figure"
|
||||
>
|
||||
|
||||
|
||||
@@ -270,7 +281,7 @@ class="cmr-12">.</span>
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 262--><p class="noindent" >
|
||||
<!--l. 239--><p class="noindent" >
|
||||
<div class="minipage"><div class="verbatim" id="verbatim-7">
|
||||
... ...
|
||||
 <br />! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||
@@ -284,7 +295,7 @@ class="cmr-12">.</span>
|
||||
 <br />  call P%smoothers_build(A,desc_A,info)
|
||||
 <br />... ...
|
||||
</div>
|
||||
<!--l. 277--><p class="nopar" ></div>
|
||||
<!--l. 254--><p class="nopar" ></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Figure 3: </span><span
|
||||
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. 285--><p class="indent" > <hr class="figure"><div class="figure"
|
||||
<!--l. 260--><p class="indent" > </div><hr class="endfigure">
|
||||
<!--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"
|
||||
>
|
||||
<!--l. 286--><p class="noindent" >
|
||||
<!--l. 263--><p class="noindent" >
|
||||
<div class="minipage"><div class="verbatim" id="verbatim-8">
|
||||
... ...
|
||||
 <br />! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
|
||||
@@ -321,7 +332,7 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
|
||||
 <br />  call P%smoothers_build(A,desc_A,info)
|
||||
 <br />... ...
|
||||
</div>
|
||||
<!--l. 303--><p class="nopar" ></div>
|
||||
<!--l. 280--><p class="nopar" ></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Figure 4: </span><span
|
||||
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. 310--><p class="indent" > <hr class="figure"><div class="figure"
|
||||
<!--l. 285--><p class="indent" > </div><hr class="endfigure">
|
||||
<!--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"
|
||||
>
|
||||
<!--l. 311--><p class="noindent" >
|
||||
<!--l. 288--><p class="noindent" >
|
||||
<div class="minipage"><div class="verbatim" id="verbatim-9">
|
||||
... ...
|
||||
 <br />! set RAS with overlap 2 and ILU(0) on the local blocks
|
||||
@@ -353,7 +364,7 @@ class="content">setup of a multilevel preconditioner</span></div><!--tex4ht:labe
|
||||
 <br />! solve Ax=b with preconditioned BiCGSTAB
|
||||
 <br />  call psb_krylov(’BICGSTAB’,A,P,b,x,tol,desc_A,info)
|
||||
</div>
|
||||
<!--l. 323--><p class="nopar" ></div>
|
||||
<!--l. 300--><p class="nopar" ></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Figure 5: </span><span
|
||||
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
|
||||
class="cmr-12">[</span><a
|
||||
class="cmbx-12">[</span><a
|
||||
href="userhtmlsu9.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
class="cmbx-12">front</span></a><span
|
||||
class="cmbx-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu9.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
class="cmbx-12">up</span></a><span
|
||||
class="cmbx-12">] </span></p></div>
|
||||
<!--l. 1--><p class="indent" > <a
|
||||
id="tailuserhtmlsu9.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -140,7 +140,7 @@ PDF = $(join $(BASEFILE),.pdf)
|
||||
PS = $(join $(BASEFILE),.ps)
|
||||
GXS = $(join $(BASEFILE),.gxs)
|
||||
GLX = $(join $(BASEFILE),.glx)
|
||||
TARGETPDF= ../mld2p4-2.2-guide.pdf
|
||||
TARGETPDF= ../amg4psblas_1.0-guide.pdf
|
||||
BASEHTML = $(patsubst %.tex,%,$(HTMLFILE))
|
||||
HTML = $(join $(BASEHTML),.html)
|
||||
HTMLDIR = ../html
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
\section*{Abstract}
|
||||
\addcontentsline{toc}{section}{Abstract}
|
||||
\addcontentsline{toc}{section}{Abstract}
|
||||
|
||||
\textsc{MLD2P4 (MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS}) is a package of parallel algebraic multilevel preconditioners.
|
||||
The first release of MLD2P4 made available multilevel additive and hybrid Schwarz
|
||||
preconditioners, as well as one-level additive Schwarz preconditioners. The package
|
||||
has been extended to include further multilevel cycles and smoothers widely used in
|
||||
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.
|
||||
\textsc{AMG4PSBLAS (Algebraic MultiGrid Preconditioners Package
|
||||
based on PSBLAS}) is a package of parallel algebraic multilevel preconditioners included in the PSCToolkit (Parallel Sparse Computation Toolkit) software framework.
|
||||
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
|
||||
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
|
||||
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.
|
||||
|
||||
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)
|
||||
computational framework and can be used in conjuction with the Krylov solvers
|
||||
available in this framework. MLD2P4 enables the user to easily specify different
|
||||
features of an algebraic multilevel preconditioner, thus allowing to search
|
||||
for the ``best'' preconditioner for the problem at hand.
|
||||
available in this framework.
|
||||
Our package is based on a completely algebraic approach and users level interfaces
|
||||
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
|
||||
Fortran~2003, with interfaces to additional third party libraries
|
||||
Fortran~2003, with interfaces to additional third party libraries
|
||||
such as MUMPS, UMFPACK, SuperLU, and SuperLU\_Dist, which
|
||||
can be exploited in building multilevel preconditioners. The parallel
|
||||
implementation is based on a Single Program Multiple Data (SPMD)
|
||||
@@ -27,4 +27,4 @@ paradigm; the inter-process communication is based on MPI and
|
||||
is managed mainly through PSBLAS.
|
||||
|
||||
This guide provides a brief description of the functionalities and
|
||||
the user interface of MLD2P4.
|
||||
the user interface of AMG4PSBLAS.
|
||||
@@ -1,6 +1,6 @@
|
||||
%\section{Bibliography\label{sec:bib}}
|
||||
\begin{thebibliography}{99}
|
||||
\addcontentsline{toc}{section}{\refname}
|
||||
\addcontentsline{toc}{section}{\refname}
|
||||
\markboth{\textsc{MLD2P4 User's and Reference Guide}}
|
||||
{\textsc{References}}
|
||||
|
||||
@@ -18,7 +18,7 @@ M.~Brezina, P.~Van\v{e}k,
|
||||
Computing, 63, 1999, 233--263.
|
||||
%
|
||||
\bibitem{Briggs2000}
|
||||
W.~L.~Briggs, V.~E.~Henson, S.~F.~McCormick,
|
||||
W.~L.~Briggs, V.~E.~Henson, S.~F.~McCormick,
|
||||
{\em A Multigrid Tutorial, Second Edition},
|
||||
SIAM, 2000.
|
||||
%
|
||||
@@ -30,11 +30,11 @@ Proceedings of PARA~04 Workshop on State of the Art
|
||||
in Scientific Computing, Lecture Notes in Computer Science,
|
||||
Springer, 2005, 593--602.
|
||||
%
|
||||
\bibitem{aaecc_07}
|
||||
\bibitem{aaecc_07}
|
||||
A.~Buttari, P.~D'Ambra, D.~di~Serafino, S.~Filippone,
|
||||
{\em 2LEV-D2P4: a package of high-performance preconditioners
|
||||
for scientific and engineering applications},
|
||||
Applicable Algebra in Engineering, Communications and Computing,
|
||||
Applicable Algebra in Engineering, Communications and Computing,
|
||||
18 (3) 2007, 223--239.
|
||||
%Published online: 13 February 2007, {\tt http://dx.doi.org/10.1007/s00200-007-0035-z}
|
||||
%
|
||||
@@ -57,19 +57,29 @@ SIAM Journal on Scientific Computing, 21 (2), 1999, 792--797.
|
||||
\bibitem{apnum_07}
|
||||
P.~D'Ambra, S.~Filippone, D.~di~Serafino,
|
||||
{\em On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners},
|
||||
Applied Numerical Mathematics, Elsevier Science,
|
||||
Applied Numerical Mathematics, Elsevier Science,
|
||||
57 (11-12), 2007, 1181-1196.
|
||||
%published online 3 February 2007, {\tt
|
||||
% http://dx.doi.org/10.1016/j.apnum.2007.01.006}
|
||||
%
|
||||
\bibitem{MLD2P4_TOMS}
|
||||
\bibitem{MLD2P4_TOMS}
|
||||
P.~D'Ambra, D.~di~Serafino, S.~Filippone,
|
||||
\emph{MLD2P4: a Package of Parallel Multilevel
|
||||
Algebraic Domain Decomposition Preconditioners
|
||||
in Fortran 95}, ACM Trans. Math. Softw., 37(3), 2010, art. 30.
|
||||
%
|
||||
\bibitem{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}
|
||||
T.~A.~Davis,
|
||||
T.~A.~Davis,
|
||||
{\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
|
||||
Method with a Column Pre-ordering Strategy},
|
||||
ACM Transactions on Mathematical Software, 30, 2004, 196--199.
|
||||
@@ -96,13 +106,13 @@ ACM Transactions on Mathematical Software, 14 (1) 1988, 1--17.
|
||||
%Lapack Working Note 94, Tech.\ Rep.\ UT-CS-95-281, University of
|
||||
%Tennessee, March 1995 (updated May 1997).
|
||||
%
|
||||
%\bibitem{EFSTATHIOU}
|
||||
%\bibitem{EFSTATHIOU}
|
||||
%E.~Efstathiou, J.~G.~Gander,
|
||||
%{\em Why Restricted Additive Schwarz Converges Faster than Additive Schwarz},
|
||||
%BIT Numerical Mathematics, 43 (5), 2003, 945--959.
|
||||
%
|
||||
\bibitem{PSBLASGUIDE}
|
||||
S.~Filippone, A.~Buttari,
|
||||
S.~Filippone, A.~Buttari,
|
||||
{\em PSBLAS 3.5.0 User's Guide. A Reference Guide for the Parallel Sparse BLAS Library}, 2012,
|
||||
available from \texttt{https://github.com/sfilippone/psblas3/tree/master/docs}.
|
||||
%
|
||||
@@ -112,19 +122,19 @@ S.~Filippone, A.~Buttari,
|
||||
ACM Transactions on on Mathematical Software, 38 (4), 2012, art.~23.
|
||||
%
|
||||
\bibitem{psblas_00}
|
||||
S.~Filippone, M.~Colajanni,
|
||||
S.~Filippone, M.~Colajanni,
|
||||
{\em PSBLAS: A Library for Parallel Linear Algebra
|
||||
Computation on Sparse Matrices},
|
||||
ACM Transactions on Mathematical Software, 26 (4), 2000, 527--550.
|
||||
%
|
||||
\bibitem{GrHeJi:16}
|
||||
S. Gratton, P. Henon, P. Jiranek and X. Vasseur,
|
||||
{\em Reducing complexity of algebraic multigrid by aggregation},
|
||||
{\em Reducing complexity of algebraic multigrid by aggregation},
|
||||
Numerical Lin. Algebra with Applications, 2016, 23:501-518
|
||||
|
||||
%
|
||||
\bibitem{MPI2}
|
||||
W.~Gropp, S.~Huss-Lederman, A.~Lumsdaine, E.~Lusk, B.~Nitzberg, W.~Saphir, M.~Snir,
|
||||
W.~Gropp, S.~Huss-Lederman, A.~Lumsdaine, E.~Lusk, B.~Nitzberg, W.~Saphir, M.~Snir,
|
||||
{\em MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions},
|
||||
MIT Press, 1998.
|
||||
%
|
||||
@@ -142,7 +152,7 @@ ACM Transactions on Mathematical Software, 29 (2), 2003, 110--140.
|
||||
\bibitem{Notay2008}
|
||||
Y.~Notay, P.~S.~Vassilevski,
|
||||
{\em Recursive Krylov-based multigrid cycles},
|
||||
Numerical Linear Algebra with Applications, 15 (5), 2008, 473--487.
|
||||
Numerical Linear Algebra with Applications, 15 (5), 2008, 473--487.
|
||||
%
|
||||
\bibitem{Saad_book}
|
||||
Y.~Saad,
|
||||
@@ -173,5 +183,15 @@ R.~S.~Tuminaro, C.~Tong,
|
||||
P.~Van\v{e}k, J.~Mandel, M.~Brezina,
|
||||
{\em Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems},
|
||||
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}
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
\section{Configuring and Building MLD2P4\label{sec:building}}
|
||||
\markboth{\textsc{MLD2P4 User's and Reference Guide}}
|
||||
{\textsc{\ref{sec:building} Configuring and Building MLD2P4}}
|
||||
In order to build MLD2P4 it is necessary to set up a Makefile with appropriate
|
||||
\section{Configuring and Building AMG4PSBLAS\label{sec:building}}
|
||||
\markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
|
||||
{\textsc{\ref{sec:building} Configuring and Building AMG4PSBLAS}}
|
||||
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|
|
||||
script. The distribution also includes the autoconf and automake
|
||||
sources employed to generate the script, but usually this is not needed
|
||||
to build the software.
|
||||
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
|
||||
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|.
|
||||
Many compilers do this; in particular, this is
|
||||
supported by the GNU Fortran compiler, for which we
|
||||
recommend to use at least version 4.8.
|
||||
supported by the GNU Fortran compiler, for which we
|
||||
recommend to use at least version 4.8.
|
||||
The software defines data types and interfaces for
|
||||
real and complex data, in both single and double precision.
|
||||
real and complex data, in both single and double precision.
|
||||
|
||||
Building MLD2P4 requires some base libraries (see Section~\ref{sec:prerequisites});
|
||||
interfaces to optional third-party libraries, which extend the functionalities of MLD2P4
|
||||
Building AMG4PSBLAS requires some base libraries (see Section~\ref{sec:prerequisites});
|
||||
interfaces to optional third-party libraries, which extend the functionalities of AMG4PSBLAS
|
||||
(see Section~\ref{sec:third-party}), are also available. Many Linux distributions
|
||||
(e.g., Ubuntu, Fedora, CentOS) provide precompiled packages for the prerequisite and
|
||||
optional software. In many cases these packages are split between a runtime part and a
|
||||
``developer'' part; in order to build MLD2P4 you need both. A description of the base and
|
||||
optional software used by MLD2P4 is given in the next sections.
|
||||
``developer'' part; in order to build AMG4PSBLAS you need both. A description of the base and
|
||||
optional software used by AMG4PSBLAS is given in the next sections.
|
||||
|
||||
\subsection{Prerequisites\label{sec:prerequisites}}
|
||||
|
||||
The following base libraries are needed:
|
||||
The following base libraries are needed:
|
||||
\begin{description}
|
||||
\item[BLAS] \cite{blas3,blas2,blas1} Many vendors provide optimized versions
|
||||
of BLAS; if no vendor version is
|
||||
@@ -36,38 +36,38 @@ The following base libraries are needed:
|
||||
may be employed. The reference BLAS from Netlib
|
||||
(\url{www.netlib.org/blas}) are meant to define the standard
|
||||
behaviour of the BLAS interface, so they are not optimized for any
|
||||
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
|
||||
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
|
||||
libraries. Note that UMFPACK requires a full LAPACK library; our
|
||||
experience is that configuring ATLAS for building full LAPACK does not
|
||||
work in the correct way. Our advice is first to download the LAPACK tarfile from
|
||||
\url{www.netlib.org/lapack} and install it independently of ATLAS. In this case,
|
||||
you need to modify the OPTS and NOOPT definitions for including -fPIC compilation option
|
||||
in the make.inc file of the LAPACK library.
|
||||
in the make.inc file of the LAPACK library.
|
||||
\item[MPI] \cite{MPI2,MPI1} A version of MPI is available on most
|
||||
high-performance computing systems.
|
||||
\item[PSBLAS] \cite{PSBLASGUIDE,psblas_00} Parallel Sparse BLAS (PSBLAS) is
|
||||
available from \url{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
|
||||
listed so far are also prerequisites of PSBLAS.
|
||||
\end{description}
|
||||
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
|
||||
compiler as MLD2P4.
|
||||
compiler as AMG4PSBLAS.
|
||||
|
||||
\subsection{Optional third party libraries\label{sec:third-party}}
|
||||
|
||||
We provide interfaces to the following third-party software libraries;
|
||||
note that these are optional, but if you enable them some defaults
|
||||
for multilevel preconditioners may change to reflect their presence.
|
||||
for multilevel preconditioners may change to reflect their presence.
|
||||
|
||||
\begin{description}
|
||||
\item[UMFPACK] \cite{UMFPACK}
|
||||
A sparse LU factorization package included in the SuiteSparse library, available from
|
||||
\url{faculty.cse.tamu.edu/davis/suitesparse.html};
|
||||
A sparse LU factorization package included in the SuiteSparse library, available from
|
||||
\url{faculty.cse.tamu.edu/davis/suitesparse.html};
|
||||
it provides sequential factorization and triangular system solution for double
|
||||
precision real and complex data. We tested version 4.5.4 of SuiteSparse.
|
||||
Note that for configuring SuiteSparse you should provide the right path to the BLAS
|
||||
@@ -97,10 +97,13 @@ for multilevel preconditioners may change to reflect their presence.
|
||||
|
||||
\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.
|
||||
%\textbf{Sono necessarie le parentesi intorno a s?}
|
||||
|
||||
|
||||
\bf{DA RISCRIVERE}
|
||||
|
||||
As a minimal example consider the following:
|
||||
\begin{verbatim}
|
||||
./configure --with-psblas=PSB-INSTALL-DIR
|
||||
@@ -290,7 +293,7 @@ generated the file \verb|Make.inc| which will then be used by all
|
||||
Makefiles in the directory tree; this file will be copied in the
|
||||
install directory under the name \verb|Make.inc.MLD2P4|.
|
||||
|
||||
To use the MUMPS solver package,
|
||||
To use the MUMPS solver package,
|
||||
the user has to add the appropriate options to the configure script;
|
||||
by default we are looking for the libraries
|
||||
\verb|-ldmumps -lsmumps| \verb| -lzmumps -lcmumps -mumps_common -lpord|.
|
||||
@@ -298,30 +301,22 @@ MUMPS often uses additional packages such as ScaLAPACK, ParMETIS,
|
||||
SCOTCH, as well as enabling OpenMP; in such cases it is necessary to
|
||||
add linker options with the \verb|--with-extra-libs| configure option.
|
||||
|
||||
To build the library the user will now enter
|
||||
To build the library the user will now enter
|
||||
\begin{verbatim}
|
||||
make
|
||||
\end{verbatim}
|
||||
followed (optionally) by
|
||||
followed (optionally) by
|
||||
\begin{verbatim}
|
||||
make install
|
||||
\end{verbatim}
|
||||
\subsection{Bug reporting}
|
||||
If you find any bugs in our codes, please report them through our
|
||||
issues page on \\[2mm]
|
||||
\url{https://github.com/sfilippone/mld2p4-2/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}
|
||||
%;
|
||||
\url{https://github.com/psctoolkit/amg4psblas/issues}\\
|
||||
|
||||
To enable us to track the bug, please provide a log from the failing
|
||||
application, the test conditions, and ideally a self-contained test
|
||||
program reproducing the issue.
|
||||
program reproducing the issue.
|
||||
|
||||
\subsection{Example and test programs\label{sec:ex_and_test}}
|
||||
The package contains the \verb|examples| and \verb|tests| directories;
|
||||
@@ -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
|
||||
predefined choice of preconditioners, selectable via integer
|
||||
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
|
||||
will allow the user, via the input files in the \verb|runs|
|
||||
subdirectories, to experiment with the full range of preconditioners
|
||||
@@ -341,4 +336,4 @@ The \verb|fileread| directories contain sample programs that read
|
||||
sparse matrices from files, according to the Matrix Market or the
|
||||
Harwell-Boeing storage format; the \verb|pdegen| programs generate
|
||||
matrices in full parallel mode from the discretization of a sample partial
|
||||
differential equation.
|
||||
differential equation.
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
\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}}
|
||||
|
||||
\noindent
|
||||
MLD2P4 is available from the web site
|
||||
AMG4PSBLAS is available from the web site
|
||||
\begin{quotation}
|
||||
\texttt{https://github.com/sfilippone/mld2p4-2}
|
||||
\texttt{https://github.com/psctoolkit/amg4psblas}
|
||||
\end{quotation}
|
||||
where contact points for further information can be also found.
|
||||
|
||||
@@ -13,25 +13,16 @@ The software is available under a modified BSD license, as specified
|
||||
in Appendix~\ref{sec:license}; please note that some of the optional
|
||||
third party libraries may be licensed under a different and more
|
||||
stringent license, most notably the GPL, and this should be taken into
|
||||
account when treating derived works.
|
||||
account when treating derived works.
|
||||
|
||||
The library defines a version string with the
|
||||
constant
|
||||
\[ \verb|mld_version_string_|\]
|
||||
whose current value is \verb|2.1.0|.
|
||||
constant
|
||||
\[ \verb|amg_version_string_|\]
|
||||
whose current value is \verb|1.0|.
|
||||
|
||||
\subsection*{Contributors}
|
||||
Contributors to version 2:
|
||||
\begin{itemize}
|
||||
\item Salvatore Filippone, Cranfield University, UK;
|
||||
\item Pasqua D'Ambra, IAC-CNR, Naples, IT;
|
||||
\item Daniela di Serafino, University of Campania ``L. Vanvitelli'', Caserta, 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}
|
||||
\item Pasqua D'Ambra, IAC-CNR, IT;
|
||||
\item Fabio Durastante, University of Pisa and IAC-CNR, IT;
|
||||
\item Salvatore Filippone, University of Rome Tor-Vergata and IAC-CNR, IT;
|
||||
\end{itemize}
|
||||
@@ -1,8 +1,8 @@
|
||||
\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}}
|
||||
|
||||
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
|
||||
\verb|info|; whenever an error condition is detected, an error trace
|
||||
stack is built by the library up to the top-level, user-callable
|
||||
@@ -12,9 +12,9 @@ program or by returning the error condition to the user code, which
|
||||
will then take action, and whether
|
||||
an error message should be printed. These options may be set by using
|
||||
the PSBLAS error handling routines; for further details see the PSBLAS
|
||||
User's Guide \cite{PSBLASGUIDE}.
|
||||
User's Guide \cite{PSBLASGUIDE}.
|
||||
|
||||
%%% Local Variables:
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: "userguide"
|
||||
%%% End:
|
||||
%%% End:
|
||||
|
||||
|
After Width: | Height: | Size: 40 KiB |
@@ -1,17 +1,17 @@
|
||||
\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}}
|
||||
|
||||
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}.
|
||||
The following steps are required:
|
||||
\begin{enumerate}
|
||||
\begin{enumerate}
|
||||
\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
|
||||
(\verb|s| = real single precision; \verb|d| = real 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.
|
||||
\item \emph{Allocate and initialize the preconditioner data structure, according to
|
||||
a preconditioner type chosen by the user}. This is performed by the routine
|
||||
@@ -21,21 +21,14 @@ The following steps are required:
|
||||
\verb|init| to identify the preconditioner types are also given.
|
||||
Note that these strings are valid also if uppercase letters are substituted by
|
||||
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
|
||||
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
|
||||
of the parameters associated with the selected preconditioner type, to obtain a variant
|
||||
of that preconditioner. Examples of use of \verb|set| are given in
|
||||
Section~\ref{sec:examples}; a complete list of all the
|
||||
preconditioner parameters and their allowed and default values is provided in
|
||||
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{Build the preconditioner for a given matrix}. If the selected preconditioner
|
||||
is multilevel, then two steps must be performed, as specified next.
|
||||
@@ -58,7 +51,7 @@ performed by the routine \verb|bld|.
|
||||
|
||||
All the previous routines are available as methods of the preconditioner object.
|
||||
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{center}
|
||||
@@ -81,7 +74,7 @@ Block Jacobi & \verb|'BJAC'| & Block-Jacobi with ILU(0) on the local blocks
|
||||
Additive Schwarz & \verb|'AS'| & Additive Schwarz (AS),
|
||||
with overlap~1 and ILU(0) on the local blocks. \\ \hline
|
||||
Multilevel &\verb|'ML'| & V-cycle with one hybrid forward Gauss-Seidel
|
||||
(GS) sweep as pre-smoother and one hybrid backward
|
||||
(GS) sweep as pre-smoother and one hybrid backward
|
||||
GS sweep as post-smoother, basic smoothed aggregation
|
||||
as coarsening algorithm, and LU (plus triangular solve)
|
||||
as coarsest-level solver. See the default values in
|
||||
@@ -95,8 +88,8 @@ Multilevel &\verb|'ML'| & V-cycle with one hybrid forward Gauss-Seidel
|
||||
\end{center}
|
||||
\end{table}
|
||||
|
||||
Note that the module \verb|mld_prec_mod|, containing the definition of the
|
||||
preconditioner data type and the interfaces to the routines of MLD2P4,
|
||||
Note that the module \verb|amg_prec_mod|, containing the definition of the
|
||||
preconditioner data type and the interfaces to the routines of AMG4PSBLAS,
|
||||
must be used in any program calling such routines.
|
||||
The modules \verb|psb_base_mod|, for the sparse matrix and communication descriptor
|
||||
data types, and \verb|psb_krylov_mod|, for interfacing with the
|
||||
@@ -108,36 +101,30 @@ usually lead to smaller numbers of preconditioned Krylov
|
||||
iterations than inexact solvers, when the linear system comes from
|
||||
a standard discretization of basic scalar elliptic PDE problems. However,
|
||||
this does not necessarily correspond to the smallest execution time
|
||||
on parallel computers.
|
||||
% \ \\
|
||||
% \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.
|
||||
on parallel computers.
|
||||
|
||||
|
||||
{\em DA MODIFICARE PER INSERIRE TIPO DI AGGREGAZIONE}
|
||||
|
||||
\subsection{Examples\label{sec:examples}}
|
||||
|
||||
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
|
||||
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|
|
||||
(a call to \verb|P%set| is not needed) and is applied with the CG
|
||||
solver provided by PSBLAS (the matrix of the system to be solved is
|
||||
assumed to be positive definite). As previously observed, the modules
|
||||
\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.
|
||||
|
||||
|
||||
The part of the code concerning the
|
||||
reading and assembling of the sparse matrix and the right-hand side vector, performed
|
||||
through the PSBLAS routines for sparse matrix and vector management, is not reported
|
||||
here for brevity; the statements concerning the deallocation of the PSBLAS
|
||||
data structure are neglected too.
|
||||
The complete code can be found in the example program file \verb|mld_dexample_ml.f90|,
|
||||
in the directory \verb|examples/fileread| of the MLD2P4 implementation (see
|
||||
The complete code can be found in the example program file \verb|amg_dexample_ml.f90|,
|
||||
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
|
||||
input data is available in \verb|examples/fileread/runs|.
|
||||
For details on the use of the PSBLAS routines, see the PSBLAS User's
|
||||
@@ -151,11 +138,11 @@ the corresponding codes are available in \verb|examples/fileread/|.
|
||||
|
||||
\begin{figure}[tbp]
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
\begin{verbatim}
|
||||
use psb_base_mod
|
||||
use mld_prec_mod
|
||||
use amg_prec_mod
|
||||
use psb_krylov_mod
|
||||
... ...
|
||||
!
|
||||
@@ -164,7 +151,7 @@ the corresponding codes are available in \verb|examples/fileread/|.
|
||||
! sparse matrix descriptor
|
||||
type(psb_desc_type) :: desc_A
|
||||
! preconditioner
|
||||
type(mld_dprec_type) :: P
|
||||
type(amg_dprec_type) :: P
|
||||
! right-hand side and solution vectors
|
||||
type(psb_d_vect_type) :: b, x
|
||||
... ...
|
||||
@@ -174,7 +161,7 @@ the corresponding codes are available in \verb|examples/fileread/|.
|
||||
call psb_info(ictxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the spd matrix A and the right-hand side b
|
||||
! read and assemble the spd matrix A and the right-hand side b
|
||||
! using PSBLAS routines for sparse matrix / vector management
|
||||
... ...
|
||||
!
|
||||
@@ -230,41 +217,31 @@ and solves the coarsest-level system with the multifrontal LU factorization
|
||||
implemented in MUMPS. It is specified that the coarsest-level
|
||||
matrix is distributed, since MUMPS can be used on both
|
||||
replicated and distributed matrices, and by default
|
||||
it is used on replicated ones.
|
||||
it is used on replicated ones.
|
||||
%Note the use of the parameter \verb|pos|
|
||||
%to specify a property only for the pre-smoother or the post-smoother
|
||||
%(see Section~\ref{sec:precset} for more details).
|
||||
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
|
||||
additive Schwarz preconditioner, i.e., RAS with overlap 2.
|
||||
Note also that a Krylov method different from CG must be used to solve
|
||||
the preconditioned system, since the preconditione in nonsymmetric.
|
||||
The corresponding example program is available in the file
|
||||
\verb|mld_dexample_1lev.f90|.
|
||||
\verb|amg_dexample_1lev.f90|.
|
||||
|
||||
For all the previous preconditioners, example programs where the sparse matrix and
|
||||
the right-hand side are generated by discretizing a PDE with Dirichlet
|
||||
boundary conditions are also available in the directory \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{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
\begin{verbatim}
|
||||
... ...
|
||||
! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||
! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||
! ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi
|
||||
! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
||||
call P%init('ML',info)
|
||||
@@ -284,7 +261,7 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
\begin{verbatim}
|
||||
... ...
|
||||
@@ -309,7 +286,7 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
\begin{verbatim}
|
||||
... ...
|
||||
@@ -328,7 +305,7 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
\end{figure}
|
||||
|
||||
|
||||
%%% Local Variables:
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: "userguide"
|
||||
%%% End:
|
||||
%%% End:
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
\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}}
|
||||
|
||||
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
|
||||
\begin{verbatim}
|
||||
|
||||
MLD2P4 version 2.1
|
||||
MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
\begin{verbatim}
|
||||
|
||||
AMG4PSBLAS version 1.0
|
||||
Algebraic MultiGrid Preconditioners Package
|
||||
based on PSBLAS (Parallel Sparse BLAS version 3.5)
|
||||
|
||||
|
||||
(C) Copyright 2008, 2010, 2012, 2015, 2017
|
||||
|
||||
Salvatore Filippone Cranfield University, Cranfield, UK
|
||||
Pasqua D'Ambra IAC-CNR, Naples, IT
|
||||
Daniela di Serafino University of Campania L. Vanvitelli, Caserta, IT
|
||||
Pasqua D'Ambra IAC-CNR, IT
|
||||
Fabio Durastante University of Pisa and IAC-CNR, IT
|
||||
Salvatore Filippone University of Rome Tor-Vergata and IAC-CNR, IT
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
@@ -27,7 +29,7 @@ terms: {\small
|
||||
3. The name of the MLD2P4 group or the names of its contributors may
|
||||
not be used to endorse or promote products derived from this
|
||||
software without specific written permission.
|
||||
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -39,6 +41,6 @@ terms: {\small
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
\end{verbatim}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
|
||||
\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
|
||||
derived from the base objects in the library (see Remark~2 in Section~\ref{sec:precset}),
|
||||
without recompiling the library itself.
|
||||
without recompiling the library itself.
|
||||
|
||||
To do so, it is necessary first to select the base type to be extended.
|
||||
In our experience, it is quite likely that the new application needs
|
||||
only the definition of a ``solver'' object, which is almost
|
||||
always acting only on the local part of the distributed matrix.
|
||||
always acting only on the local part of the distributed matrix.
|
||||
The parallel actions required to connect the various solver objects
|
||||
are most often already provided by the block-Jacobi or the additive
|
||||
Schwarz smoothers. To define a new solver, the developer will then
|
||||
have to define its components and methods, perhaps taking one of the
|
||||
predefined solvers as a starting point, if possible.
|
||||
predefined solvers as a starting point, if possible.
|
||||
|
||||
Once the new smoother/solver class has been developed, to use it in
|
||||
the context of the multilevel preconditioners it is necessary to:
|
||||
@@ -30,9 +30,9 @@ following:
|
||||
\item link the code implementing the various methods into the application executable.
|
||||
\end{itemize}
|
||||
The new solver object is then dynamically included in the
|
||||
preconditioner structure, and acts as a \emph{mold} to which the
|
||||
preconditioner will conform, even though the MLD2P4 library has not
|
||||
been modified to account for this new development.
|
||||
preconditioner structure, and acts as a \emph{mold} to which the
|
||||
preconditioner will conform, even though the AMG4PSBLAS library has not
|
||||
been modified to account for this new development.
|
||||
|
||||
It is possible to define new values for the keyword \verb|WHAT| in the
|
||||
\verb|set| routine; if the library code does not recognize a keyword,
|
||||
@@ -50,35 +50,35 @@ factorization under a new name). Because of the specifics of this case, it is
|
||||
possible to reuse the basic structure of the ILU solver, with its
|
||||
L/D/U components and the methods needed to apply the solver; only a
|
||||
few methods, such as the description and most importantly the build,
|
||||
need to be ovverridden (rewritten).
|
||||
need to be ovverridden (rewritten).
|
||||
|
||||
The interfaces for the calls shown above are defined using
|
||||
\begin{center}
|
||||
\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
|
||||
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
|
||||
preconditioner.
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
The other arguments are defined in the way described in
|
||||
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:
|
||||
\begin{verbatim}
|
||||
|
||||
! sparse matrix and preconditioner
|
||||
type(psb_dspmat_type) :: a
|
||||
type(mld_dprec_type) :: prec
|
||||
type(mld_d_tlu_solver_type) :: tlusv
|
||||
type(amg_dprec_type) :: prec
|
||||
type(amg_d_tlu_solver_type) :: tlusv
|
||||
|
||||
......
|
||||
!
|
||||
! prepare the preconditioner: an ML with defaults, but with TLU solver at
|
||||
! intermediate levels. All other parameters are at default values.
|
||||
!
|
||||
! intermediate levels. All other parameters are at default values.
|
||||
!
|
||||
call prec%init('ML', info)
|
||||
call prec%hierarchy_build(a,desc_a,info)
|
||||
nlv = prec%get_nlevs()
|
||||
|
||||
@@ -1,105 +1,87 @@
|
||||
\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}}
|
||||
|
||||
The \textsc{MultiLevel Domain Decomposition Parallel Preconditioners Package based on
|
||||
PSBLAS (MLD2P4}) provides parallel Algebraic MultiGrid (AMG) and Domain
|
||||
Decomposition preconditioners (see, e.g., \cite{Briggs2000,Stuben_01,dd2_96}),
|
||||
|
||||
The \textsc{Algebraic MultiGrid Preconditioners Package based on
|
||||
PSBLAS (AMG4PSBLAS)} provides parallel Algebraic MultiGrid (AMG) preconditioners (see, e.g., \cite{Briggs2000,Stuben_01}),
|
||||
to be used in the iterative solution of linear systems,
|
||||
\begin{equation}
|
||||
Ax=b,
|
||||
\begin{equation}
|
||||
Ax=b,
|
||||
\label{system1}
|
||||
\end{equation}
|
||||
where $A$ is a square, real or complex, sparse matrix.
|
||||
\end{equation}
|
||||
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
|
||||
%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
|
||||
AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and
|
||||
K-cycles~\cite{Briggs2000,Notay2008} are available, which allow to define
|
||||
almost all the preconditioners in the package, including the multilevel hybrid
|
||||
Schwarz ones; a specific cycle is implemented to obtain multilevel additive
|
||||
Schwarz preconditioners. The Jacobi, hybrid
|
||||
The preconditioners implemented in AMG4PSBLAS are obtained by combining
|
||||
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
|
||||
%\footnote{see Note 2 in Table~\ref{tab:p_coarse}, p.~28.}
|
||||
forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods
|
||||
are available as smoothers. An algebraic approach is used to generate a hierarchy of
|
||||
forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz smoothers. An algebraic approach is used to generate a hierarchy of
|
||||
coarse-level matrices and operators, without explicitly using any information on the
|
||||
geometry of the original problem, e.g., the discretization of a PDE. To this end,
|
||||
the smoothed aggregation technique~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}
|
||||
is applied. Either exact or approximate solvers can be used on the coarsest-level
|
||||
system. Specifically, different sparse LU factorizations from external
|
||||
packages, and native incomplete LU factorizations and Jacobi, hybrid Gauss-Seidel,
|
||||
and block-Jacobi solvers are available. All smoothers can be also exploited as one-level
|
||||
two different coarsening strategies, based on aggregation, are available:
|
||||
\begin{itemize}
|
||||
\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};
|
||||
\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};
|
||||
\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.
|
||||
|
||||
MLD2P4 is written in Fortran~2003, following an
|
||||
AMG4PSBLAS is written in Fortran~2003, following an
|
||||
object-oriented design through the exploitation of features
|
||||
such as abstract data type creation, type extension, functional overloading, and
|
||||
dynamic memory management. % \textbf{Va bene cos\'{i} o \`e meglio
|
||||
% fare riferimento alle classi?}
|
||||
dynamic memory management.
|
||||
The parallel implementation is based on a Single Program Multiple Data
|
||||
(SPMD) paradigm. Single and
|
||||
double precision implementations of MLD2P4 are available for both the
|
||||
double precision implementations of AMG4PSBLAS are available for both the
|
||||
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)
|
||||
computational framework~\cite{psblas_00,PSBLAS3}. PSBLAS provides basic linear algebra
|
||||
operators and data management facilities for distributed sparse matrices,
|
||||
as well as parallel Krylov solvers which can be 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
|
||||
a portable and efficient software infrastructure implementing ``de facto'' standard
|
||||
parallel sparse linear algebra kernels, to pursue goals such as performance,
|
||||
portability, modularity ed extensibility in the development of the preconditioner
|
||||
package. On the other hand, the implementation of MLD2P4 has led to some
|
||||
revisions and extentions of the original PSBLAS kernels.
|
||||
The inter-process comunication required by MLD2P4 is encapsulated
|
||||
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.
|
||||
The inter-process comunication required by AMG4PSBLAS is encapsulated
|
||||
in the PSBLAS routines;
|
||||
% , except few cases where MPI~\cite{MPI1} is explicitly called.
|
||||
therefore, MLD2P4 can be run on any parallel machine where PSBLAS
|
||||
therefore, AMG4PSBLAS can be run on any parallel machine where PSBLAS
|
||||
implementations are available.
|
||||
|
||||
MLD2P4 has a layered and modular software architecture where three main layers can be
|
||||
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
|
||||
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:
|
||||
few black-box routines at the upper layer allow all users to easily
|
||||
build and apply any preconditioner available in MLD2P4;
|
||||
facilities are also available allowing expert users to extend the set of smoothers
|
||||
build and apply any preconditioner available in AMG4PSBLAS;
|
||||
facilities are also available allowing expert users to extend the set of smoothers
|
||||
and solvers for building new versions of the preconditioners (see
|
||||
Section~\ref{sec:adding}).
|
||||
|
||||
We note that the user interface of MLD2P4 2.1 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.
|
||||
Section~\ref{sec:adding}).
|
||||
|
||||
This guide is organized as follows. General information on the distribution of the source
|
||||
code is reported in Section~\ref{sec:distribution}, while details on the configuration
|
||||
and installation of the package are given in Section~\ref{sec:building}. A short description
|
||||
of the preconditioners implemented in MLD2P4 is provided in Section~\ref{sec:background},
|
||||
to help the users in choosing among them. The basics for building and applying the
|
||||
preconditioners with the Krylov solvers implemented in PSBLAS are reported
|
||||
and installation of the package are given in Section~\ref{sec:building}. The basics for building and applying the
|
||||
preconditioners with the Krylov solvers implemented in PSBLAS are reported
|
||||
in~Section~\ref{sec:started}, where the Fortran codes of a few sample programs
|
||||
are also shown. A reference guide for the user interface routines is provided
|
||||
in Section~\ref{sec:userinterface}. Information on the extension of the package
|
||||
through the addition of new smoothers and solvers is reported in Section~\ref{sec:adding}.
|
||||
through the addition of new smoothers and solvers is reported in Section~\ref{sec:adding}.
|
||||
The error handling mechanism used by the package
|
||||
is briefly described in Section~\ref{sec:errors}. The copyright terms concerning the
|
||||
distribution and modification of MLD2P4 are reported in Appendix~\ref{sec:license}.
|
||||
distribution and modification of AMG4PSBLAS are reported in Appendix~\ref{sec:license}.
|
||||
|
||||
%%% Local Variables:
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: "userguide"
|
||||
%%% End:
|
||||
%%% End:
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
\usepackage{ifpdf}
|
||||
% \usepackage{minitoc}
|
||||
% \setcounter{minitocdepth}{2}
|
||||
\usepackage[bookmarks=true,
|
||||
bookmarksnumbered=true,
|
||||
bookmarksopen=false,
|
||||
\usepackage[bookmarks=true,
|
||||
bookmarksnumbered=true,
|
||||
bookmarksopen=false,
|
||||
plainpages=false,
|
||||
pdfpagelabels,
|
||||
colorlinks,
|
||||
colorlinks,
|
||||
citecolor=red,
|
||||
linkcolor=blue]{hyperref}
|
||||
\usepackage{html}
|
||||
@@ -26,17 +26,17 @@
|
||||
\relax
|
||||
\pdfcompresslevel=0 %-- 0 = none, 9 = best
|
||||
\pdfinfo{ %-- Info dictionary of PDF output /Author (PD, DdS, SF)
|
||||
/Title (MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
based on PSBLAS, V. 2.2)
|
||||
/Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package)
|
||||
/Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI)
|
||||
/Title (Algebraic MultiGrid Preconditioners Package
|
||||
based on PSBLAS, V. 1.0)
|
||||
/Subject (MultiGrid Parallel Preconditioners Package)
|
||||
/Keywords (Parallel Numerical Software, Algebraic MultiGrid Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI)
|
||||
/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$)
|
||||
}
|
||||
\pdfcatalog{ %-- Catalog dictionary of PDF output.
|
||||
% /URI (http://ce.uniroma2.it/psblas)
|
||||
}
|
||||
}
|
||||
|
||||
\setlength\textwidth{1.15\textwidth}
|
||||
\setlength\oddsidemargin{0.3in}
|
||||
@@ -92,7 +92,7 @@
|
||||
\newcommand{\Ref}[1]{\mbox{(\ref{#1})}}
|
||||
|
||||
\begin{document}
|
||||
\pdfbookmark{MLD2P4 User's and Reference Guide}{title}
|
||||
\pdfbookmark{AMG4PSBLAS User's and Reference Guide}{title}
|
||||
\newlength{\centeroffset}
|
||||
%\setlength{\centeroffset}{-0.5\oddsidemargin}
|
||||
%\addtolength{\centeroffset}{0.5\evensidemargin}
|
||||
@@ -101,23 +101,30 @@
|
||||
\vspace*{\stretch{1}}
|
||||
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
|
||||
\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]
|
||||
\hfill\emph{\Large A guide for the MultiLevel Domain Decomposition \\[.6ex]
|
||||
Parallel Preconditioners Package
|
||||
based on PSBLAS}
|
||||
\hfill\emph{\Large A guide for the Algebraic MultiGrid \\[.6ex]
|
||||
Preconditioners Package based on PSBLAS}
|
||||
\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}}
|
||||
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
|
||||
\flushright
|
||||
{\large\bfseries Pasqua D'Ambra}\\
|
||||
\large IAC-CNR, Naples, Italy\\[3ex]
|
||||
{\large\bfseries Daniela di Serafino}\\
|
||||
\large University of Campania ``Luigi Vanvitelli'', Caserta, Italy\\[3ex]
|
||||
\large IAC-CNR, Italy\\[3ex]
|
||||
{\large\bfseries Fabio Durastante}\\
|
||||
\large University of Pisa and IAC-CNR\\[3ex]
|
||||
{\large\bfseries Salvatore Filippone} \\
|
||||
\large Cranfield University, Cranfield, United Kingdom
|
||||
\large University of Rome Tor-Vergata and IAC-CNR
|
||||
%\\[10ex]
|
||||
%\today
|
||||
\end{minipage}}
|
||||
@@ -125,9 +132,9 @@ based on PSBLAS}
|
||||
\vspace{\stretch{1}}
|
||||
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
|
||||
\flushright
|
||||
\large Software version: 2.2\\
|
||||
\large Software version: 1.0\\
|
||||
%\today
|
||||
\large July 31, 2018
|
||||
\large March 31, 2021
|
||||
\end{minipage}}
|
||||
%\addtolength{\textwidth}{\centeroffset}
|
||||
\vspace{\stretch{2}}
|
||||
@@ -151,7 +158,7 @@ based on PSBLAS}
|
||||
\begingroup
|
||||
\renewcommand*{\thepage}{toc}
|
||||
\tableofcontents
|
||||
\endgroup
|
||||
\endgroup
|
||||
%\cleardoublepage
|
||||
\clearpage
|
||||
\thispagestyle{empty}
|
||||
@@ -164,8 +171,8 @@ based on PSBLAS}
|
||||
|
||||
\include{overview}
|
||||
\include{distribution}
|
||||
\include{building}
|
||||
\include{background}
|
||||
\include{building}
|
||||
%\include{background}
|
||||
\include{gettingstarted}
|
||||
\include{userinterface}
|
||||
\include{newobjects}
|
||||
@@ -177,7 +184,7 @@ based on PSBLAS}
|
||||
\include{bibliography}
|
||||
|
||||
\end{document}
|
||||
%%% Local Variables:
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: 'userguide'
|
||||
%%% End:
|
||||
%%% End:
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
\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}}
|
||||
|
||||
The basic user interface of MLD2P4 consists of eight methods. The six
|
||||
methods \verb|init|, \verb|set|, \verb|build|,
|
||||
The basic user interface of AMG4PBLAS consists of eight methods. The six
|
||||
methods \verb|init|, \verb|set|, \verb|build|,
|
||||
\verb|hierarchy_build|, \verb|smoothers_build| and \verb|apply|
|
||||
encapsulate all the functionalities for the setup and the application
|
||||
of any multilevel and one-level preconditioner implemented in the
|
||||
package.
|
||||
package.
|
||||
The method \verb|free| deallocates the preconditioner data structure, while
|
||||
\verb|descr| prints a description of the preconditioner setup by the user.
|
||||
For backward compatibility, methods are also accessible as
|
||||
@@ -24,12 +24,12 @@ i.e.,
|
||||
for real double precision, \emph{x} = \verb|c| for complex single precision,
|
||||
\emph{x} = \verb|z| for complex double precision;
|
||||
\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
|
||||
matrix data structure;
|
||||
\item the arrays containing the vectors $v$ and $w$ involved in
|
||||
the preconditioner application $w=B^{-1}v$ must be of type
|
||||
\verb|psb_|\emph{x}\verb|vect_type| with \emph{x} =
|
||||
the preconditioner application $w=B^{-1}v$ must be of type
|
||||
\verb|psb_|\emph{x}\verb|vect_type| with \emph{x} =
|
||||
\verb|s|, \verb|d|, \verb|c|, \verb|z|, in a manner completely
|
||||
analogous to the sparse matrix type;
|
||||
\item real parameters defining the preconditioner must be declared
|
||||
@@ -53,10 +53,7 @@ This method allocates and initializes the preconditioner
|
||||
{\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|icontxt| & \verb|integer, intent(in)|.\\
|
||||
& The communication context.\\
|
||||
\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.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
& 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}
|
||||
|
||||
\vskip1.5\baselineskip
|
||||
@@ -78,7 +70,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
|
||||
as follows:
|
||||
|
||||
\begin{center}
|
||||
\verb|call mld_precinit(p,ptype,info)|
|
||||
\verb|call amg_precinit(p,ptype,info)|
|
||||
\end{center}
|
||||
|
||||
|
||||
@@ -93,19 +85,15 @@ as follows:
|
||||
\noindent
|
||||
This method sets the parameters defining the preconditioner \verb|p|. More
|
||||
precisely, the parameter identified by \verb|what| is assigned the value
|
||||
contained in \verb|val|.
|
||||
contained in \verb|val|.
|
||||
|
||||
{\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|what| & \verb|character(len=*)|. \\
|
||||
& The parameter to be set. It can be specified through its name;
|
||||
the string is case-insensitive. See
|
||||
Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\
|
||||
Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\
|
||||
\verb|val | & \verb|integer| \emph{or} \verb|character(len=*)| \emph{or}
|
||||
\verb|real(psb_spk_)| \emph{or} \verb|real(psb_dpk_)|,
|
||||
\verb|intent(in)|.\\
|
||||
@@ -149,7 +137,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
|
||||
as follows:
|
||||
|
||||
\begin{center}
|
||||
\verb|call mld_precset(p,what,val,info)|
|
||||
\verb|call amg_precset(p,what,val,info)|
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
@@ -198,7 +186,7 @@ object is specified, its defaults are also set, overriding in both
|
||||
cases any previous settings even if explicitly specified. Therefore if
|
||||
the user sets a smoother, and wishes to use a solver
|
||||
different from the default one, the call to set the solver must come
|
||||
\emph{after} the call to set the smoother.
|
||||
\emph{after} the call to set the smoother.
|
||||
|
||||
Similar considerations apply to the point-Jacobi, Gauss-Seidel and block-Jacobi
|
||||
coarsest-level solvers, and shortcuts are available
|
||||
@@ -221,7 +209,7 @@ It is worth noting that, when the matrix is replicated,
|
||||
the point-Jacobi, hybrid Gauss-Seidel and block-Jacobi solvers
|
||||
reduce to the corresponding local solver objects (see Remark~2).
|
||||
For the point-Jacobi and Gauss-Seidel solvers, these objects
|
||||
correspond to a \emph{single} point-Jacobi sweep and a \emph{single}
|
||||
correspond to a \emph{single} point-Jacobi sweep and a \emph{single}
|
||||
Gauss-Seidel sweep, respectively, which are very poor solvers.
|
||||
|
||||
On the other hand, the distributed layout can be used with any solver
|
||||
@@ -236,10 +224,10 @@ solver is changed to the default sequential solver.
|
||||
control for those solvers; for instance, by specifying the keyword
|
||||
\verb|MUMPS_IPAR_ENTRY| and an appropriate value for \verb|idx|, it is
|
||||
possible to set any entry in the MUMPS integer control array.
|
||||
See also Sec.~\ref{sec:adding}.
|
||||
See also Sec.~\ref{sec:adding}.
|
||||
%The \verb|what,val| pairs described here are those of the predefined
|
||||
%moother/solver objects; newly developed solvers may define new pairs
|
||||
%according to their needs.
|
||||
%according to their needs.
|
||||
|
||||
|
||||
\bsideways
|
||||
@@ -249,8 +237,6 @@ See also Sec.~\ref{sec:adding}.
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
%\multicolumn{5}{|c|}{\emph{type of the multilevel preconditioner}}\\ \hline
|
||||
%\verb|mld_ml_cycle_| \par
|
||||
\verb|'ML_CYCLE'| & \verb|character(len=*)|
|
||||
& \texttt{'VCYCLE'} \par \texttt{'WCYCLE'} \par \texttt{'KCYCLE'} \par
|
||||
\texttt{'MULT'} \par \texttt{'ADD'}
|
||||
@@ -259,28 +245,17 @@ See also Sec.~\ref{sec:adding}.
|
||||
and Additive Schwarz. \par
|
||||
Note that hybrid Multiplicative Schwarz is equivalent to V-cycle and
|
||||
is included for compatibility with previous versions of MLD2P4. \\ \hline
|
||||
%\verb|mld_outer_sweeps_| \par
|
||||
\verb|'OUTER_SWEEPS'| & \texttt{integer} &
|
||||
Any integer \par number $\ge 1$ & 1 &
|
||||
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{center}
|
||||
\caption{Parameters defining the multilevel cycle and the number of cycles to
|
||||
be applied.
|
||||
\label{tab:p_cycle}}
|
||||
\label{tab:p_cycle}}
|
||||
\esideways
|
||||
|
||||
|
||||
\bsideways
|
||||
\begin{center}
|
||||
%\begin{tabular}{|p{5cm}|l|p{2.4cm}|p{2.5cm}|p{5cm}|}
|
||||
@@ -288,8 +263,6 @@ be applied.
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
%\multicolumn{5}{|c|}{\emph{aggregation algorithm}} \\ \hline
|
||||
%\verb|mld_min_coarse_size_| \par
|
||||
\verb|'MIN_COARSE_SIZE'| & \verb|integer|
|
||||
& Any number \par $> 0$
|
||||
& $\lfloor 40 \sqrt[3]{n} \rfloor$, where $n$ is the dimension
|
||||
@@ -299,27 +272,23 @@ be applied.
|
||||
computed coarsest matrix
|
||||
is lower than or equal to this threshold
|
||||
(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
|
||||
%\verb|mld_min_cr_ratio_| \par
|
||||
|
||||
\\ \hline
|
||||
|
||||
\verb|'MIN_CR_RATIO'| & \verb|real|
|
||||
& Any number \par $> 1$
|
||||
& 1.5
|
||||
& Minimum coarsening ratio. The aggregation stops
|
||||
if the ratio between the matrix dimensions
|
||||
at two consecutive levels is lower than or equal to this
|
||||
threshold (see Note).\\ \hline
|
||||
%\verb|mld_max_levs_| \par
|
||||
threshold (see Note).\\ \hline
|
||||
|
||||
\verb|'MAX_LEVS'| & \verb|integer|
|
||||
& Any integer \par number $> 1$
|
||||
& 20
|
||||
& Maximum number of levels. The aggregation stops
|
||||
if the number of levels reaches this value (see Note). \\ \hline
|
||||
%\verb|mld_par_aggr_alg_| \par
|
||||
if the number of levels reaches this value (see Note). \\ \hline
|
||||
|
||||
\verb|'PAR_AGGR_ALG'| & \verb|character(len=*)| \hspace*{-3mm}
|
||||
& \texttt{'DEC'}, \texttt{'SYMDEC'}
|
||||
& \texttt{'DEC'}
|
||||
@@ -328,24 +297,24 @@ be applied.
|
||||
\verb|SYMDEC| option applies decoupled
|
||||
aggregation to the sparsity pattern
|
||||
of $A+A^T$.\\ \hline
|
||||
%\verb|mld_aggr_type_| \par
|
||||
|
||||
\verb|'AGGR_TYPE'| & \verb|character(len=*)| \hspace*{-3mm}
|
||||
& \textbf{\texttt{'SOC1'}} &
|
||||
\textbf{\texttt{'SOC1'}},
|
||||
\textbf{\texttt{'SOC2'}}
|
||||
\textbf{\texttt{'SOC2'}}
|
||||
& 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
|
||||
and Brezina~\cite{VANEK_MANDEL_BREZINA},
|
||||
and the one by Gratton et al~\cite{GrHeJi:16}. \\ \hline
|
||||
%\verb|mld_aggr_prol_| \par
|
||||
|
||||
\verb|'AGGR_PROL'| & \verb|character(len=*)| \hspace*{-3mm}
|
||||
& \texttt{'SMOOTHED'}, \texttt{'UNSMOOTHED'} & \texttt{'SMOOTHED'}
|
||||
& Prolongator used by the aggregation algorithm: smoothed or unsmoothed
|
||||
(i.e., tentative prolongator). \\
|
||||
\hline
|
||||
\multicolumn{5}{|l|}{{\bfseries Note.} The aggregation algorithm stops when
|
||||
at least one of the following criteria is met:
|
||||
at least one of the following criteria is met:
|
||||
the coarse size threshold, the} \\
|
||||
\multicolumn{5}{|l|}{minimum coarsening ratio, or the maximum number
|
||||
of levels is reached. Therefore, the actual number of levels may be} \\
|
||||
@@ -355,7 +324,7 @@ of levels. } \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\caption{Parameters defining the aggregation algorithm.
|
||||
\label{tab:p_aggregation}}
|
||||
\label{tab:p_aggregation}}
|
||||
\esideways
|
||||
|
||||
\bsideways
|
||||
@@ -365,67 +334,31 @@ of levels. } \\
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
%\verb|mld_aggr_ord_| \par
|
||||
|
||||
\verb|'AGGR_ORD'| & \verb|character(len=*)|
|
||||
& \texttt{'NATURAL'} \par \texttt{'DEGREE'}
|
||||
& \texttt{'NATURAL'}
|
||||
& Initial ordering of indices for the aggregation
|
||||
algorithm: either natural ordering or sorted by
|
||||
descending degrees of the nodes in the
|
||||
matrix graph. \\ \hline
|
||||
matrix graph. \\ \hline
|
||||
%Since aggregation is
|
||||
%heuristic, results will be different.
|
||||
%\verb|mld_aggr_thresh_| \par
|
||||
|
||||
\verb|'AGGR_THRESH'| & \verb|real(|\emph{kind\_parameter}\verb|)|
|
||||
& Any~real \par number~$\in [0, 1]$
|
||||
& 0.01
|
||||
& The threshold $\theta$ in the aggregation algorithm,
|
||||
see (\ref{eq:strongly_coup}) in Section~\ref{sec:aggregation}.
|
||||
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=*)|
|
||||
& \texttt{'FILTER'} \par \texttt{'NOFILTER'}
|
||||
& \texttt{'NOFILTER'} & Matrix used in computing the smoothed
|
||||
prolongator: filtered or unfiltered (see~(\ref{eq:filtered}) in Section~\ref{sec:aggregation}). \\
|
||||
\hline
|
||||
\multicolumn{5}{|l|}{{\bfseries Note.} Different thresholds at different levels, such as
|
||||
those used in \cite[Section~5.1]{VANEK_MANDEL_BREZINA}, can be easily set by
|
||||
those used in \cite[Section~5.1]{VANEK_MANDEL_BREZINA}, can be easily set by
|
||||
invoking the rou-} \\
|
||||
\multicolumn{5}{|l|}{tine \texttt{set} with
|
||||
the parameter \texttt{ilev}.} \\
|
||||
@@ -433,31 +366,28 @@ the parameter \texttt{ilev}.} \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\caption{Parameters defining the aggregation algorithm (continued).
|
||||
\label{tab:p_aggregation_1}}
|
||||
\label{tab:p_aggregation_1}}
|
||||
\esideways
|
||||
|
||||
|
||||
\bsideways
|
||||
\begin{center}
|
||||
\begin{tabular}{|p{3.9cm}|l|p{1.7cm}|p{1.7cm}|p{8.6cm}|}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\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=*)|
|
||||
& \texttt{'DIST'} \par \texttt{'REPL'}
|
||||
& \texttt{'REPL'}
|
||||
& Coarsest matrix layout: distributed among the processes or
|
||||
replicated on each of them. \\ \hline
|
||||
%\verb|mld_coarse_solve_| \par
|
||||
\verb|'COARSE_SOLVE'| & \verb|character(len=*)|
|
||||
& \texttt{'MUMPS'} \par \texttt{'UMF'} \par
|
||||
\texttt{'SLU'} \par \texttt{'SLUDIST'} \par
|
||||
\texttt{'JACOBI'} \par \texttt{'GS'} \par \texttt{'BJAC'}
|
||||
& \texttt{'MUMPS'} \par \texttt{'UMF'} \par
|
||||
\texttt{'SLU'} \par \texttt{'SLUDIST'} \par
|
||||
\texttt{'JACOBI'} \par \texttt{'GS'} \par \texttt{'BJAC'}
|
||||
& See~Note.
|
||||
& Solver used at the coarsest level: sequential
|
||||
LU from MUMPS, UMFPACK, or SuperLU
|
||||
(plus tri\-an\-gular solve);
|
||||
(plus tri\-an\-gular solve);
|
||||
distributed LU from MUMPS or SuperLU\_Dist
|
||||
(plus triangular solve);
|
||||
point-Jacobi, hybrid Gauss-Seidel or block-Jacobi. \par
|
||||
@@ -467,35 +397,34 @@ the parameter \texttt{ilev}.} \\
|
||||
distributed, and \texttt{MUMPS} can be used with either
|
||||
a replicated or a distributed matrix. When any of the previous
|
||||
solvers is specified, the matrix layout is set to a default
|
||||
value which allows the use 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
|
||||
are available only in double precision. \\ \hline
|
||||
%\verb|mld_coarse_subsolve_| \par
|
||||
\verb|'COARSE_SUBSOLVE'| & \verb|character(len=*)|
|
||||
& \texttt{'ILU'} \par \texttt{'ILUT'} \par \texttt{'MILU'} \par
|
||||
\texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'}
|
||||
\texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'}
|
||||
& See~Note.
|
||||
& Solver for the diagonal blocks of the coarse matrix,
|
||||
in case the block Jacobi solver
|
||||
is chosen as coarsest-level solver: ILU($p$), ILU($p,t$),
|
||||
MILU($p$), LU from MUMPS, SuperLU or UMFPACK
|
||||
MILU($p$), LU from MUMPS, SuperLU or UMFPACK
|
||||
(plus triangular solve).
|
||||
Note that UMFPACK and SuperLU\_Dist
|
||||
are available only in double precision. \\
|
||||
\hline
|
||||
\multicolumn{5}{|l|}{{\bfseries Note.} Defaults for \texttt{COARSE\_SOLVE} and
|
||||
\multicolumn{5}{|l|}{{\bfseries Note.} Defaults for \texttt{COARSE\_SOLVE} and
|
||||
\texttt{COARSE\_SUBSOLVE} are chosen in the following order:} \\
|
||||
\multicolumn{5}{|l|}{single precision version -- \texttt{MUMPS} if installed,
|
||||
then \texttt{SLU} if installed,
|
||||
\multicolumn{5}{|l|}{single precision version -- \texttt{MUMPS} if installed,
|
||||
then \texttt{SLU} if installed,
|
||||
\texttt{ILU} otherwise;}\\
|
||||
\multicolumn{5}{|l|}{double precision version -- \texttt{UMF} if installed,
|
||||
then \texttt{MUMPS} if installed, then \texttt{SLU} if
|
||||
\multicolumn{5}{|l|}{double precision version -- \texttt{UMF} if installed,
|
||||
then \texttt{MUMPS} if installed, then \texttt{SLU} if
|
||||
installed, \texttt{ILU} otherwise.}\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\caption{Parameters defining the coarse-space correction at the coarsest
|
||||
level.\label{tab:p_coarse}}
|
||||
level.\label{tab:p_coarse}}
|
||||
\esideways
|
||||
|
||||
\bsideways
|
||||
@@ -504,19 +433,15 @@ level.\label{tab:p_coarse}}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\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$
|
||||
& 10
|
||||
& Number of sweeps when \verb|JACOBI|, \verb|GS| or \verb|BJAC|
|
||||
is chosen as coarsest-level solver. \\ \hline
|
||||
%\verb|mld_coarse_fillin_| \par
|
||||
\verb|'COARSE_FILLIN'| & \verb|integer|
|
||||
& Any integer \par number $\ge 0$
|
||||
& 0
|
||||
& Fill-in level $p$ of the ILU factorizations. \\ \hline
|
||||
%\verb|mld_coarse_iluthrs_| \par
|
||||
\verb|'COARSE_ILUTHRS'|
|
||||
& \verb|real(|\emph{kind\_parameter}\verb|)|
|
||||
& Any real \par number $\ge 0$
|
||||
@@ -526,7 +451,7 @@ level.\label{tab:p_coarse}}
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\caption{Parameters defining the coarse-space correction at the coarsest
|
||||
level (continued).\label{tab:p_coarse_1}}
|
||||
level (continued).\label{tab:p_coarse_1}}
|
||||
\esideways
|
||||
|
||||
\bsideways
|
||||
@@ -536,8 +461,7 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\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|'JACOBI'| \par \verb|'GS'| \par \verb|'BGS'| \par \verb|'BJAC'|
|
||||
\par \verb|'AS'|
|
||||
@@ -547,11 +471,10 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
hybrid backward Gauss-Seidel, block-Jacobi, and
|
||||
Additive Schwarz. \par
|
||||
It is ignored by one-level preconditioners. \\ \hline
|
||||
%\verb|mld_sub_solve_| \par
|
||||
\verb|'SUB_SOLVE'| & \verb|character(len=*)|
|
||||
& \texttt{'JACOBI'} \par
|
||||
\texttt{'GS'} \par \texttt{'BGS'} \par \texttt{'ILU'} \par
|
||||
\texttt{'ILUT'} \par \texttt{'MILU'} \par
|
||||
\texttt{'GS'} \par \texttt{'BGS'} \par \texttt{'ILU'} \par
|
||||
\texttt{'ILUT'} \par \texttt{'MILU'} \par
|
||||
\par \texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'}
|
||||
& \texttt{GS} and \texttt{BGS} for pre- and post-smoothers
|
||||
of multilevel preconditioners, respectively \par
|
||||
@@ -564,16 +487,14 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
LU from MUMPS, SuperLU or UMFPACK
|
||||
(plus triangular solve). See Note for details on hybrid
|
||||
Gauss-Seidel. \\ \hline
|
||||
%\verb|mld_moother_sweeps_| \par
|
||||
\verb|'SMOOTHER_SWEEPS'| & \verb|integer|
|
||||
& Any integer \par number~$\ge 0$
|
||||
& 1
|
||||
& Number of sweeps of the smoother or one-level preconditioner.
|
||||
In the multilevel case, no pre-smother or
|
||||
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|,
|
||||
respectively. \\ \hline
|
||||
%\verb|mld_sub_ovr_| \par
|
||||
\verb|'SUB_OVR'| & \verb|integer|
|
||||
& Any integer \par number~$\ge 0$
|
||||
& 1
|
||||
@@ -582,7 +503,7 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\caption{Parameters defining the smoother or the details of the one-level preconditioner.
|
||||
\label{tab:p_smoother}}
|
||||
\label{tab:p_smoother}}
|
||||
\esideways
|
||||
|
||||
\bsideways
|
||||
@@ -592,16 +513,14 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
%\verb|mld_sub_restr_| \par
|
||||
\verb|'SUB_RESTR'| & \verb|character(len=*)|
|
||||
& \texttt{'HALO'} \par \texttt{'NONE'}
|
||||
& \texttt{'HALO'}
|
||||
& Type of restriction operator, for Additive Schwarz only:
|
||||
\texttt{HALO} for taking into account the overlap, \texttt{NONE}
|
||||
\texttt{HALO} for taking into account the overlap, \texttt{NONE}
|
||||
for neglecting it. \par
|
||||
Note that \texttt{HALO} must be chosen for
|
||||
the classical Addditive Schwarz smoother and its RAS variant.\\ \hline
|
||||
%\verb|mld_sub_prol_| \par
|
||||
\verb|'SUB_PROL'| & \verb|character(len=*)|
|
||||
& \texttt{'SUM'} \par \texttt{'NONE'}
|
||||
& \texttt{'NONE'}
|
||||
@@ -610,12 +529,10 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
for neglecting them. \par
|
||||
Note that \texttt{SUM} must be chosen for the classical Additive
|
||||
Schwarz smoother, and \texttt{NONE} for its RAS variant. \\ \hline
|
||||
%\verb|mld_sub_fillin_| \par
|
||||
\verb|'SUB_FILLIN'| & \verb|integer|
|
||||
& Any integer \par number~$\ge 0$
|
||||
& 0
|
||||
& Fill-in level $p$ of the incomplete LU factorizations. \\ \hline
|
||||
%\verb|mld_sub_iluthrs_| \par
|
||||
\verb|'SUB_ILUTHRS'| & \verb|real(|\emph{kind\_parameter}\verb|)|
|
||||
& Any real number~$\ge 0$
|
||||
& 0
|
||||
@@ -637,30 +554,18 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
& 0
|
||||
& Set an entry in the MUMPS real control array, as
|
||||
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
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\caption{Parameters defining the smoother or the details of the one-level preconditioner
|
||||
(continued).\label{tab:p_smoother_1}}
|
||||
(continued).\label{tab:p_smoother_1}}
|
||||
\esideways
|
||||
|
||||
|
||||
\clearpage
|
||||
|
||||
\subsection{Method hierarchy\_build\label{sec:hier_bld}}
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%hierarchy_build(a,desc_a,info)|\\
|
||||
\end{center}
|
||||
@@ -676,15 +581,13 @@ made by the user through the methods \verb|init| and \verb|set|.
|
||||
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\
|
||||
& The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that \emph{x} must be chosen according
|
||||
to the real/complex,
|
||||
to the real/complex,
|
||||
single/double precision version of MLD2P4 under use.
|
||||
See the PSBLAS User's Guide for details \cite{PSBLASGUIDE}.\\
|
||||
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
|
||||
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
|
||||
details \cite{PSBLASGUIDE}.\\
|
||||
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
|
||||
% & The preconditioner data structure. Note that \emph{x} must be chosen according
|
||||
% to the real/complex, single/double precision version of MLD2P4 under use.\\
|
||||
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\end{tabular}
|
||||
@@ -693,7 +596,7 @@ single/double precision version of MLD2P4 under use.
|
||||
\clearpage
|
||||
|
||||
\subsection{Method smoothers\_build\label{sec:smooth_bld}}
|
||||
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])|\\
|
||||
@@ -704,7 +607,7 @@ This method builds the smoothers and the coarsest-level solvers for the
|
||||
multilevel preconditioner \verb|p|, according to the requirements made by
|
||||
the user through the methods \verb|init| and \verb|set|, and based on the aggregation
|
||||
hierarchy produced by a previous call to \verb|hierarchy_build|
|
||||
(see Section~\ref{sec:hier_bld}).
|
||||
(see Section~\ref{sec:hier_bld}).
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
@@ -717,9 +620,6 @@ hierarchy produced by a previous call to \verb|hierarchy_build|
|
||||
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
|
||||
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
|
||||
details \cite{PSBLASGUIDE}.\\
|
||||
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
|
||||
% & The preconditioner data structure. Note that \emph{x} must be chosen according
|
||||
% to the real/complex, single/double precision version of MLD2P4 under use.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
|
||||
@@ -738,7 +638,7 @@ hierarchy produced by a previous call to \verb|hierarchy_build|
|
||||
\clearpage
|
||||
|
||||
\subsection{Method build\label{sec:precbld}}
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%build(a,desc_a,info[,amold,vmold,imold])|\\
|
||||
\end{center}
|
||||
@@ -750,8 +650,8 @@ made by the user through the methods \verb|init| and \verb|set|
|
||||
multilevel preconditioners). It is mostly provided for backward
|
||||
compatibility; indeed, it is internally implemented by invoking the
|
||||
two previous methods \verb|hierarchy_build| and
|
||||
\verb|smoothers_build|, whose nomenclature would however be somewhat
|
||||
unnatural when dealing with simple one-level preconditioners.
|
||||
\verb|smoothers_build|, whose nomenclature would however be somewhat
|
||||
unnatural when dealing with simple one-level preconditioners.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
@@ -764,9 +664,6 @@ unnatural when dealing with simple one-level preconditioners.
|
||||
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
|
||||
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
|
||||
details \cite{PSBLASGUIDE}.\\
|
||||
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
|
||||
% & The preconditioner data structure. Note that \emph{x} must be chosen according
|
||||
% to the real/complex, single/double precision version of MLD2P4 under use.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
|
||||
@@ -787,7 +684,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
|
||||
as follows:
|
||||
|
||||
\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}
|
||||
|
||||
\noindent
|
||||
@@ -813,12 +710,8 @@ and hence it is completely transparent to the user.
|
||||
{\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, 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)|.\\
|
||||
& 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
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.\\
|
||||
\verb|y| & \emph{type}\verb|(|\emph{kind\_parameter}\verb|), dimension(:), intent(out)|.\\
|
||||
@@ -847,7 +740,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
|
||||
as follows:
|
||||
|
||||
\begin{center}
|
||||
\verb|call mld_precaply(p,what,val,info)|
|
||||
\verb|call amg_precaply(p,what,val,info)|
|
||||
\end{center}
|
||||
|
||||
\clearpage
|
||||
@@ -864,9 +757,6 @@ This method deallocates the preconditioner data structure \verb|p|.
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\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)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\end{tabular}
|
||||
@@ -876,7 +766,7 @@ For compatibility with the previous versions of MLD2P4, this method can be also
|
||||
as follows:
|
||||
|
||||
\begin{center}
|
||||
\verb|call mld_precfree(p,info)|
|
||||
\verb|call amg_precfree(p,info)|
|
||||
\end{center}
|
||||
|
||||
|
||||
@@ -896,9 +786,6 @@ or \verb|build|, have been called.
|
||||
{\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(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)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|iout| & \verb|integer, intent(in), optional|.\\
|
||||
@@ -911,16 +798,16 @@ For compatibility with the previous versions of MLD2P4, this method can be also
|
||||
as follows:
|
||||
|
||||
\begin{center}
|
||||
\verb|call mld_precdescr(p,info [,iout])|
|
||||
\verb|call amg_precdescr(p,info [,iout])|
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Auxiliary Methods\label{sec:auxil}}
|
||||
Various functionalities are implemented as additional methods of the
|
||||
preconditioner object.
|
||||
preconditioner object.
|
||||
|
||||
\subsubsection{Method: dump}
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])|\\
|
||||
\end{center}
|
||||
@@ -931,9 +818,6 @@ Dump on file.
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
|
||||
% & The preconditioner data structure. Note that \emph{x} must be chosen according
|
||||
% to the real/complex, single/double precision version of MLD2P4 under use.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
|
||||
@@ -945,20 +829,20 @@ Dump on file.
|
||||
|
||||
|
||||
\subsubsection{Method: clone}
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%clone(pout,info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
Create a (deep) copy of the preconditioner object.
|
||||
Create a (deep) copy of the preconditioner object.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|pout| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(out)|.\\
|
||||
\verb|pout| & \verb|type(amg_|\emph{x}\verb|prec_type), intent(out)|.\\
|
||||
& 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.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
@@ -967,26 +851,16 @@ Create a (deep) copy of the preconditioner object.
|
||||
|
||||
|
||||
\subsubsection{Method: sizeof}
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|sz = p%sizeof()|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
Return memory footprint in bytes.
|
||||
|
||||
% {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
% \begin{tabular}{p{1.2cm}p{12cm}}
|
||||
% %\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
|
||||
% % & The preconditioner data structure. Note that \emph{x} must be chosen according
|
||||
% % to the real/complex, single/double precision version of MLD2P4 under use.\\
|
||||
% \verb|info| & \verb|integer, intent(out)|.\\
|
||||
% & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
% \end{tabular}
|
||||
Return memory footprint in bytes.
|
||||
|
||||
\subsubsection{Method: allocate\_wrk}
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%allocate_wrk(info[, vmold])|\\
|
||||
\end{center}
|
||||
@@ -996,23 +870,20 @@ Allocate internal work vectors. Each application of the preconditioner
|
||||
uses a number of work vectors which are allocated internally as
|
||||
necessary; therefore allocation and deallocation of memory occurs
|
||||
multiple times during the execution of a Krylov method. In most cases
|
||||
this strategy is perfectly acceptable, but
|
||||
this strategy is perfectly acceptable, but
|
||||
on some platforms, most notably GPUs, memory allocation is
|
||||
a slow operation, and the default behaviour would lead to a
|
||||
slowdown. This method allows to trade space for time by preallocating
|
||||
slowdown. This method allows to trade space for time by preallocating
|
||||
the internal workspace outside of the invocation of a Krylov
|
||||
method. When using GPUs or other specialized devices, the \verb|vmold|
|
||||
argument is also necessary to ensure the internal work vectors are of
|
||||
the appropriate dynamic type to exploit the accelerator hardware; when
|
||||
allocation occurs internally this is taken care of based on the dynamic
|
||||
type of the \verb|x| argument to the \verb|apply| method.
|
||||
type of the \verb|x| argument to the \verb|apply| method.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
|
||||
% & The preconditioner data structure. Note that \emph{x} must be chosen according
|
||||
% to the real/complex, single/double precision version of MLD2P4 under use.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\
|
||||
@@ -1023,20 +894,17 @@ type of the \verb|x| argument to the \verb|apply| method.
|
||||
|
||||
|
||||
\subsubsection{Method: free\_wrk}
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%free_wrk(info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
Deallocate internal work vectors.
|
||||
Deallocate internal work vectors.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
%\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(inout)|.\\
|
||||
% & The preconditioner data structure. Note that \emph{x} must be chosen according
|
||||
% to the real/complex, single/double precision version of MLD2P4 under use.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\end{tabular}
|
||||
@@ -1045,7 +913,7 @@ Deallocate internal work vectors.
|
||||
|
||||
|
||||
|
||||
%%% Local Variables:
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: "userguide"
|
||||
%%% End:
|
||||
%%% End:
|
||||
|
||||