Last modification to the guide

documentation
Cirdans-Home 4 years ago
parent 4531532a07
commit 6258d2398c

Binary file not shown.

@ -26,7 +26,6 @@
.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{}
@ -189,9 +188,9 @@ div.abstract {width:100%;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
td#TBL-5-8-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-9-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-10-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-8-1{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-9-1{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-5-10-1{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
@ -204,8 +203,8 @@ td#TBL-5-10-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-6{border-collapse:collapse;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;}
td#TBL-6-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-6-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-6-5-1{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-6-6-1{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
@ -218,9 +217,9 @@ td#TBL-6-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
td#TBL-7-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-7-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-5-1{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-6-1{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-7-1{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1011 B

After

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because it is too large Load Diff

@ -191,12 +191,14 @@ class="cmr-12">Either exact or approximate solvers can be used on the coarsest-l
<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>
class="cmr-12">incomplete LU and approximate inverse factorizations, weighted Jacobi, hybrid</span>
<span
class="cmr-12">solvers are available. All the smoothers can be also exploited as one-level</span>
class="cmr-12">Gauss-Seidel, block-Jacobi solvers and recursive call to preconditioned Krylov</span>
<span
class="cmr-12">methods are available. All the smoothers can be also exploited as one-level</span>
<span
class="cmr-12">preconditioners.</span>
<!--l. 36--><p class="indent" > <span
<!--l. 35--><p class="indent" > <span
class="cmr-12">AMG4PSBLAS is written in Fortran</span><span
class="cmr-12">&#x00A0;2003, following an object-oriented design</span>
<span
@ -211,7 +213,7 @@ class="cmr-12">Single and double precision implementations of AMG4PSBLAS are ava
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. 46--><p class="indent" > <span
<!--l. 45--><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>
@ -251,7 +253,7 @@ class="cmr-12">required by AMG4PSBLAS is encapsulated in the PSBLAS routines; th
class="cmr-12">AMG4PSBLAS can be run on any parallel machine where PSBLAS implementations</span>
<span
class="cmr-12">are available.</span>
<!--l. 61--><p class="indent" > <span
<!--l. 60--><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>
@ -273,7 +275,7 @@ class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x29-330007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:adding --></a><span
class="cmr-12">).</span>
<!--l. 72--><p class="indent" > <span
<!--l. 71--><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
@ -289,6 +291,9 @@ class="cmr-12">3</span><!--tex4ht:ref: sec:building --></a><span
class="cmr-12">. The basics for building and applying the</span>
<span
class="cmr-12">preconditioners with the Krylov solvers implemented in PSBLAS are reported</span>
<span
class="cmr-12">in</span><span
class="cmr-12">&#x00A0;Section</span><span
@ -296,9 +301,6 @@ class="cmr-12">&#x00A0;</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 sample programs are also shown.</span>
<span
class="cmr-12">A reference guide for the user interface routines is provided in Section</span><span
class="cmr-12">&#x00A0;</span><a

@ -34,8 +34,9 @@ class="cmr-12">Code Distribution</span></h3>
<!--l. 5--><p class="noindent" ><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/psctoolkit/amg4psblas</span></div>
<!--l. 8--><p class="indent" > <a
href="https://psctoolkit.github.io/products/amg4psblas/" ><span
class="cmr-12">https://psctoolkit.github.io/products/amg4psblas/</span></a></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

@ -117,22 +117,22 @@ class="cmr-12">Example and test programs</span></a></span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlse4.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse2.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse2.html#tailuserhtmlse2.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse3.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse3.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse3.html"></a>
</body></html>

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

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

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

@ -11,71 +11,65 @@
</head><body
>
<!--l. 4--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlse8.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#tailuserhtmlse6.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlse7.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse7.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span
class="cmbx-12">7 </span></span> <a
class="cmr-12">7 </span></span> <a
id="x29-330007"></a><span
class="cmbx-12">Adding new smoother and solver objects to AMG4PSBLAS</span></h3>
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></h3>
<!--l. 6--><p class="noindent" ><span
class="cmbx-12">Developers can add completely new smoother and/or solver classes derived</span>
class="cmr-12">Developers can add completely new smoother and/or solver classes derived from the</span>
<span
class="cmbx-12">from the base objects in the library (see Remark</span><span
class="cmbx-12">&#x00A0;2 in Section</span><span
class="cmbx-12">&#x00A0;</span><a
class="cmr-12">base objects in the library (see Remark</span><span
class="cmr-12">&#x00A0;2 in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu11.html#x21-200006.2"><span
class="cmbx-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmbx-12">), without</span>
class="cmr-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmr-12">), without recompiling the</span>
<span
class="cmbx-12">recompiling the library itself.</span>
class="cmr-12">library itself.</span>
<!--l. 10--><p class="indent" > <span
class="cmbx-12">To do so, it is necessary first to select the base type to be extended. In</span>
class="cmr-12">To do so, it is necessary first to select the base type to be extended. In our</span>
<span
class="cmbx-12">our experience, it is quite likely that the new application needs only the</span>
class="cmr-12">experience, it is quite likely that the new application needs only the definition of a</span>
<span
class="cmbx-12">definition of a &#8220;solver&#8221; object, which is almost always acting only on the</span>
class="cmr-12">&#8220;solver&#8221; object, which is almost always acting only on the local part of the distributed</span>
<span
class="cmbx-12">local part of the distributed matrix. The parallel actions required to</span>
class="cmr-12">matrix. The parallel actions required to connect the various solver objects are most</span>
<span
class="cmbx-12">connect the various solver objects are most often already provided by the</span>
class="cmr-12">often already provided by the block-Jacobi or the additive Schwarz smoothers. To</span>
<span
class="cmbx-12">block-Jacobi or the additive Schwarz smoothers. To define a new solver, the</span>
class="cmr-12">define a new solver, the developer will then have to define its components and</span>
<span
class="cmbx-12">developer will then have to define its components and methods,</span>
class="cmr-12">methods, perhaps taking one of the predefined solvers as a starting point, if</span>
<span
class="cmbx-12">perhaps taking one of the predefined solvers as a starting point, if</span>
<span
class="cmbx-12">possible.</span>
class="cmr-12">possible.</span>
<!--l. 20--><p class="indent" > <span
class="cmbx-12">Once the new smoother/solver class has been developed, to use</span>
<span
class="cmbx-12">it in the context of the multilevel preconditioners it is necessary</span>
class="cmr-12">Once the new smoother/solver class has been developed, to use it in the context of</span>
<span
class="cmbx-12">to:</span>
class="cmr-12">the multilevel preconditioners it is necessary to:</span>
<ul class="itemize1">
<li class="itemize"><span
class="cmbx-12">declare in the application program a variable of the new type;</span>
class="cmr-12">declare in the application program a variable of the new type;</span>
</li>
<li class="itemize"><span
class="cmbx-12">pass that variable as the argument to the </span><span class="obeylines-h"><span class="verb"><span
class="cmr-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="cmbx-12">routine as in the</span>
<span
class="cmbx-12">following:</span>
class="cmr-12">routine as in the following:</span>
<div class="center"
>
<!--l. 26--><p class="noindent" >
@ -89,60 +83,57 @@ class="cmtt-12">&#x00A0;p%set(solver,info</span><span
class="cmtt-12">&#x00A0;[,ilev,ilmax,pos])</span></span></span></div>
</li>
<li class="itemize"><span
class="cmbx-12">link the code implementing the various methods into the application</span>
class="cmr-12">link the code implementing the various methods into the application</span>
<span
class="cmbx-12">executable.</span></li></ul>
class="cmr-12">executable.</span></li></ul>
<!--l. 32--><p class="noindent" ><span
class="cmbx-12">The new solver object is then dynamically included in the preconditioner</span>
class="cmr-12">The new solver object is then dynamically included in the preconditioner structure,</span>
<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>
class="cmr-12">and acts as a </span><span
class="cmti-12">mold </span><span
class="cmr-12">to which the preconditioner will conform, even though</span>
<span
class="cmbx-12">even though the AMG4PSBLAS library has not been modified to account</span>
class="cmr-12">the AMG4PSBLAS library has not been modified to account for this new</span>
<span
class="cmbx-12">for this new development.</span>
class="cmr-12">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="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="cmbx-12">in the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span>
<span
class="cmbx-12">routine; if the library code does not recognize a keyword, it passes it down</span>
class="cmr-12">in the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span> <span
class="cmr-12">routine; if the</span>
<span
class="cmbx-12">the composition hierarchy (levels containing smoothers containing in turn</span>
class="cmr-12">library code does not recognize a keyword, it passes it down the composition hierarchy</span>
<span
class="cmbx-12">solvers), so that it can be eventually caught by the new solver. By the</span>
class="cmr-12">(levels containing smoothers containing in turn solvers), so that it can be eventually</span>
<span
class="cmbx-12">same token, any keyword/value pair that does not pertain to a given</span>
class="cmr-12">caught by the new solver. By the same token, any keyword/value pair that does not</span>
<span
class="cmbx-12">smoother should be passed down to the contained solver, and any</span>
class="cmr-12">pertain to a given smoother should be passed down to the contained solver, and</span>
<span
class="cmbx-12">keyword/value pair that does not pertain to a given solver is by default</span>
class="cmr-12">any keyword/value pair that does not pertain to a given solver is by default</span>
<span
class="cmbx-12">ignored.</span>
class="cmr-12">ignored.</span>
<!--l. 46--><p class="indent" > <span
class="cmbx-12">An example is provided in the source code distribution under the folder</span>
class="cmr-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="cmbx-12">. In this example we are implementing a new incomplete</span>
<span
class="cmbx-12">factorization variant (which is simply the ILU(0) factorization under a new</span>
class="cmr-12">. In this example we are implementing a new incomplete factorization</span>
<span
class="cmbx-12">name). Because of the specifics of this case, it is possible to reuse the basic</span>
class="cmr-12">variant (which is simply the ILU(0) factorization under a new name). Because of the</span>
<span
class="cmbx-12">structure of the ILU solver, with its L/D/U components and the</span>
class="cmr-12">specifics of this case, it is possible to reuse the basic structure of the ILU solver, with</span>
<span
class="cmbx-12">methods needed to apply the solver; only a few methods, such as the</span>
class="cmr-12">its L/D/U components and the methods needed to apply the solver; only a few</span>
<span
class="cmbx-12">description and most importantly the build, need to be ovverridden</span>
class="cmr-12">methods, such as the description and most importantly the build, need to be</span>
<span
class="cmbx-12">(rewritten).</span>
class="cmr-12">ovverridden (rewritten).</span>
<!--l. 55--><p class="indent" > <span
class="cmbx-12">The interfaces for the calls shown above are defined using</span>
class="cmr-12">The interfaces for the calls shown above are defined using</span>
<div class="center"
>
<!--l. 56--><p class="noindent" >
@ -160,9 +151,9 @@ class="cmtt-12">class(amg_x_base_smoother_type)</span></span></span>
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="cmbx-12">The user-defined new smoother to be employed in the</span>
class="cmr-12">The user-defined new smoother to be employed in the</span>
<span
class="cmbx-12">preconditioner.</span> </td>
class="cmr-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
@ -173,23 +164,20 @@ class="cmtt-12">class(amg_x_base_solver_type)</span></span></span>
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="cmbx-12">The user-defined new solver to be employed in the</span>
<span
class="cmbx-12">preconditioner.</span> </td>
</tr></table></div></div>
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="cmbx-12">The other arguments are defined in the way described in Sec.</span><span
class="cmbx-12">&#x00A0;</span><a
class="cmr-12">The other arguments are defined in the way described in Sec.</span><span
class="cmr-12">&#x00A0;</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>
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">amg_d_tlu_solver_type</span></span></span><span
class="cmbx-12">, and we pass it as follows:</span>
class="cmr-12">, and we</span>
<span
class="cmr-12">pass it as follows:</span>
@ -222,22 +210,22 @@ class="cmbx-12">, and we pass it as follows:</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlse8.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#tailuserhtmlse6.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse7.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse7.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse7.html"></a>
</body></html>

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

@ -11,34 +11,34 @@
</head><body
>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlli4.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse8.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse8.html#tailuserhtmlse8.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlse9.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse9.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span
class="cmbx-12">A </span></span> <a
class="cmr-12">A </span></span> <a
id="x31-35000A"></a><span
class="cmbx-12">License</span></h3>
class="cmr-12">License</span></h3>
<!--l. 5--><p class="noindent" ><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>
class="cmr-12">The AMG4PSBLAS is freely distributable under the following copyright</span>
<span
class="cmbx-12">terms:</span>
class="cmr-12">terms:</span>
@ -96,22 +96,22 @@ class="cmbx-12">terms:</span>
<!--l. 2--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlli4.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse8.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse8.html#tailuserhtmlse8.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse9.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse9.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 2--><p class="indent" > <a
id="tailuserhtmlse9.html"></a>
</body></html>

@ -51,38 +51,39 @@ class="cmr-12">Many vendors provide optimized versions of BLAS; if no</span>
class="cmr-12">vendor version is available for a given platform, the ATLAS software</span>
<span
class="cmr-12">(</span><a
href="math-atlas.sourceforge.net" class="url" ><span
class="cmtt-12">math-atlas.sourceforge.net</span></a><span
class="cmr-12">) may be employed. The reference BLAS</span>
href="http://math-atlas.sourceforge.net" ><span
class="cmr-12">math-atlas.sourceforge.net</span></a><span
class="cmr-12">) may be employed. The reference BLAS from</span>
<span
class="cmr-12">from Netlib (</span><a
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>
class="cmr-12">Netlib (</span><a
href="http://www.netlib.org/blas" ><span
class="cmr-12">www.netlib.org/blas</span></a><span
class="cmr-12">) are meant to define the standard behaviour of</span>
<span
class="cmr-12">behaviour of the BLAS interface, so they are not optimized for any particular</span>
class="cmr-12">the BLAS interface, so they are not optimized for any particular platform,</span>
<span
class="cmr-12">platform, and should only be used as a last resort. Note that BLAS</span>
class="cmr-12">and should only be used as a last resort. Note that BLAS computations</span>
<span
class="cmr-12">computations form a relatively small part of the AMG4PSBLAS/PSBLAS</span>
class="cmr-12">form a relatively small part of the AMG4PSBLAS/PSBLAS computations;</span>
<span
class="cmr-12">computations; they are however critical when using preconditioners based</span>
class="cmr-12">they are however critical when using preconditioners based on MUMPS,</span>
<span
class="cmr-12">on MUMPS, UMFPACK or SuperLU third party libraries. Note that</span>
class="cmr-12">UMFPACK or SuperLU third party libraries. Note that UMFPACK requires</span>
<span
class="cmr-12">UMFPACK requires a full LAPACK library; our experience is that</span>
class="cmr-12">a full LAPACK library; our experience is that configuring ATLAS for</span>
<span
class="cmr-12">configuring ATLAS for building full LAPACK does not work in the</span>
class="cmr-12">building full LAPACK does not work in the correct way. Our advice is first</span>
<span
class="cmr-12">correct way. Our advice is first to download the LAPACK tarfile from</span>
<a
href="www.netlib.org/lapack" class="url" ><span
class="cmtt-12">www.netlib.org/lapack</span></a> <span
class="cmr-12">and install it independently of ATLAS. In this</span>
class="cmr-12">to download the LAPACK tarfile from </span><a
href="http://www.netlib.org/lapack" ><span
class="cmr-12">www.netlib.org/lapack</span></a> <span
class="cmr-12">and install it</span>
<span
class="cmr-12">independently of ATLAS. In this case, you need to modify the OPTS and</span>
<span
class="cmr-12">case, you need to modify the OPTS and NOOPT definitions for including</span>
class="cmr-12">NOOPT definitions for including -fPIC compilation option in the make.inc</span>
<span
class="cmr-12">-fPIC compilation option in the make.inc file of the LAPACK library.</span>
class="cmr-12">file of the LAPACK library.</span>
</dd><dt class="description">
<span
class="cmbx-12">MPI</span> </dt><dd
@ -112,15 +113,11 @@ 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">?? </span><span
class="cmbx-12">Mettere tutto sotto psctoolkit</span><span
class="cmr-12">;</span>
<span
class="cmr-12">version 3.5.0 (or later) is required. Indeed, all the prerequisites listed so far</span>
href="https://psctoolkit.github.io/products/psblas/" ><span
class="cmr-12">psctoolkit.github.io/products/psblas/</span></a><span
class="cmr-12">; version 3.7.0 (or later) is required.</span>
<span
class="cmr-12">are also prerequisites of PSBLAS.</span></dd></dl>
class="cmr-12">Indeed, all the prerequisites listed so far 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

@ -11,20 +11,20 @@
</head><body
>
<!--l. 43--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlsu11.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlsu10.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu10.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmbx-12">6.1 </span></span> <a
class="cmr-12">6.1 </span></span> <a
id="x20-190006.1"></a><span
class="cmbx-12">Method init</span></h4>
class="cmr-12">Method init</span></h4>
<div class="center"
>
<!--l. 45--><p class="noindent" >
@ -32,11 +32,11 @@ class="cmbx-12">Method init</span></h4>
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%init(icontx,ptype,info)</span></span></span></div>
<!--l. 49--><p class="noindent" ><span
class="cmbx-12">This method allocates and initializes the preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmr-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="cmbx-12">, according to the</span>
class="cmr-12">, according to the</span>
<span
class="cmbx-12">preconditioner type chosen by the user.</span>
class="cmr-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"
@ -50,35 +50,33 @@ class="cmtt-12">icontxt</span></span></span> </td> <td style="white-space:wrap;
class="td11"><!--l. 57--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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
class="cmr-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. 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. 59--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">character(len=*),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span></td>
class="cmr-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. 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">&#x00A0;</span><a
class="cmr-12">The type of preconditioner. Its values are specified in Table</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse5.html#x17-160151"><span
class="cmbx-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmbx-12">.</span> </td>
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-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. 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>
class="cmr-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. 63--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
@ -86,51 +84,36 @@ class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; te
class="td11"><!--l. 63--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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">&#x00A0;</span><a
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for 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. 69--><p class="indent" > <span
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<span
class="cmbx-12">can be also invoked as follows:</span>
<div class="center"
>
<!--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">&#x00A0;amg_precinit(p,ptype,info)</span></span></span></div>
<!--l. 79--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 73--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu11.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu10.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu10.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
<!--l. 79--><p class="indent" > <a
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 73--><p class="indent" > <a
id="tailuserhtmlsu10.html"></a>
</body></html>

File diff suppressed because it is too large Load Diff

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

@ -10,58 +10,54 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 598--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 582--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu12.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlsu13.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu13.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmbx-12">6.4 </span></span> <a
class="cmr-12">6.4 </span></span> <a
id="x23-220006.4"></a><span
class="cmbx-12">Method smoothers</span><span
class="cmbx-12">_build</span></h4>
class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></h4>
<div class="center"
>
<!--l. 601--><p class="noindent" >
<!--l. 602--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 585--><p class="noindent" >
<!--l. 586--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])</span></span></span><br />
</div>
<!--l. 605--><p class="noindent" ><span
class="cmbx-12">This method builds the smoothers and the coarsest-level solvers for the</span>
<!--l. 589--><p class="noindent" ><span
class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span>
<span
class="cmbx-12">multilevel preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span><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="cmr-12">, according to the requirements 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="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span><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="cmr-12">, and based on the 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="cmbx-12">(see</span>
<span
class="cmbx-12">Section</span><span
class="cmbx-12">&#x00A0;</span><a
class="cmr-12">(see Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu12.html#x22-210006.3"><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="cmr-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
class="cmr-12">).</span>
<!--l. 596--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-12" class="tabular"
cellspacing="0" cellpadding="0"
@ -69,135 +65,130 @@ 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. 615--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 599--><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. 615--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 599--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_</span></span></span><span
class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">spmat_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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="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>
class="td11"><!--l. 600--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-2-2"
class="td11"><!--l. 600--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<span
class="cmbx-12">be chosen according to the real/complex, single/double</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 the</span>
<span
class="cmbx-12">precision version of MLD2P4 under use. See the PSBLAS</span>
class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS</span>
<span
class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span
class="cmbx-12">[</span><a
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-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> </td>
class="cmr-12">15</span></a><span
class="cmr-12">]</span></span><span
class="cmr-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. 620--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 604--><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. 620--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 604--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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="td11"><!--l. 605--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-4-2"
class="td11"><!--l. 605--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span><span
class="cmbx-12">. See the PSBLAS</span>
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span
class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span
class="cmbx-12">[</span><a
class="cmr-12">for details </span><span class="cite"><span
class="cmr-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> </td>
class="cmr-12">15</span></a><span
class="cmr-12">]</span></span><span
class="cmr-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. 623--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 607--><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. 623--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 607--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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">&#x00A0;</span><a
class="td11"><!--l. 608--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-6-2"
class="td11"><!--l. 608--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for 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. 625--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 609--><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. 625--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 609--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_sparse_mat),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 610--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-8-2"
class="td11"><!--l. 610--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
class="cmbx-12">this allows e.g. running on GPUs; it needs not be the same</span>
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
<span
class="cmbx-12">on all processes. See the PSBLAS User&#8217;s Guide for details</span>
<span class="cite"><span
class="cmbx-12">[</span><a
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-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> </td>
class="cmr-12">15</span></a><span
class="cmr-12">]</span></span><span
class="cmr-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. 630--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 614--><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. 630--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 614--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 615--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-10-2"
class="td11"><!--l. 615--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span
class="cmbx-12">this allows e.g. running on GPUs.</span> </td>
class="cmr-12">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. 633--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 617--><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. 633--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 617--><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">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 618--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-12-2"
class="td11"><!--l. 618--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
<span
class="cmbx-12">components; this allows e.g. running on GPUs.</span> </td>
class="cmr-12">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>
@ -207,26 +198,23 @@ class="td11"> </td> </tr></table></div>
<!--l. 640--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 624--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu12.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu13.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu13.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
<!--l. 640--><p class="indent" > <a
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 624--><p class="indent" > <a
id="tailuserhtmlsu13.html"></a>
</body></html>

@ -10,243 +10,223 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 640--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 624--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu13.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlsu14.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu14.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmbx-12">6.5 </span></span> <a
class="cmr-12">6.5 </span></span> <a
id="x24-230006.5"></a><span
class="cmbx-12">Method build</span></h4>
class="cmr-12">Method build</span></h4>
<div class="center"
>
<!--l. 642--><p class="noindent" >
<!--l. 643--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 626--><p class="noindent" >
<!--l. 627--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%build(a,desc_a,info[,amold,vmold,imold])</span></span></span><br />
</div>
<!--l. 646--><p class="noindent" ><span
class="cmbx-12">This method builds the preconditioner </span><span class="obeylines-h"><span class="verb"><span
<!--l. 630--><p class="noindent" ><span
class="cmr-12">This method builds the preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span> <span
class="cmbx-12">according to the requirements</span>
class="cmr-12">according to the requirements made by the</span>
<span
class="cmbx-12">made by the user through the methods </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">user through the methods </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">init</span></span></span> <span
class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span> <span
class="cmbx-12">(see Sections</span><span
class="cmbx-12">&#x00A0;</span><a
class="cmr-12">(see Sections</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu12.html#x22-210006.3"><span
class="cmbx-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a>
<span
class="cmbx-12">and</span><span
class="cmbx-12">&#x00A0;</span><a
class="cmr-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a> <span
class="cmr-12">and</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu13.html#x23-220006.4"><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>
class="cmr-12">6.4</span><!--tex4ht:ref: sec:smooth_bld --></a> <span
class="cmr-12">for multilevel</span>
<span
class="cmbx-12">compatibility; indeed, it is internally implemented by invoking the</span>
class="cmr-12">preconditioners). It is mostly provided for backward compatibility; indeed, it is</span>
<span
class="cmbx-12">two previous methods </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">internally implemented by invoking the two previous methods </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">hierarchy_build</span></span></span> <span
class="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">and</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">smoothers_build</span></span></span><span
class="cmbx-12">, whose</span>
<span
class="cmbx-12">nomenclature would however be somewhat unnatural when dealing with</span>
class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span>
<span
class="cmbx-12">simple one-level preconditioners.</span>
<!--l. 656--><p class="noindent" ><span
class="cmr-12">dealing with simple one-level preconditioners.</span>
<!--l. 640--><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. 659--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 643--><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. 659--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 643--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_</span></span></span><span
class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">spmat_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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="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>
class="td11"><!--l. 644--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-2-2"
class="td11"><!--l. 644--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<span
class="cmbx-12">be chosen according to the real/complex, single/double</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 the</span>
<span
class="cmbx-12">precision version of MLD2P4 under use. See the PSBLAS</span>
class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS</span>
<span
class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span
class="cmbx-12">[</span><a
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-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> </td>
class="cmr-12">15</span></a><span
class="cmr-12">]</span></span><span
class="cmr-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. 664--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 648--><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. 664--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 648--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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="td11"><!--l. 649--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-4-2"
class="td11"><!--l. 649--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">a</span></span></span><span
class="cmbx-12">. See the PSBLAS</span>
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span
class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span
class="cmbx-12">[</span><a
class="cmr-12">for details </span><span class="cite"><span
class="cmr-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> </td>
class="cmr-12">15</span></a><span
class="cmr-12">]</span></span><span
class="cmr-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. 667--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 651--><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. 667--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 651--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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">&#x00A0;</span><a
class="td11"><!--l. 652--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-6-2"
class="td11"><!--l. 652--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for 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. 669--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 653--><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. 669--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 653--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_sparse_mat),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 654--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-8-2"
class="td11"><!--l. 654--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
class="cmbx-12">this allows e.g. running on GPUs; it needs not be the same</span>
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
<span
class="cmbx-12">on all processes. See the PSBLAS User&#8217;s Guide for details</span>
<span class="cite"><span
class="cmbx-12">[</span><a
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-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> </td>
class="cmr-12">15</span></a><span
class="cmr-12">]</span></span><span
class="cmr-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. 674--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 658--><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. 674--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 658--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 659--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-10-2"
class="td11"><!--l. 659--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span
class="cmbx-12">this allows e.g. running on GPUs.</span> </td>
class="cmr-12">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. 677--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 661--><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. 677--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 661--><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">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 662--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-12-2"
class="td11"><!--l. 662--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
<span
class="cmbx-12">components; this allows e.g. running on GPUs.</span> </td>
class="cmr-12">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. 683--><p class="indent" > <span
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<span
class="cmbx-12">can be also invoked as follows:</span>
<div class="center"
>
<!--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">&#x00A0;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. 667--><p class="noindent" ><span
class="cmr-12">The method can be used to build multilevel preconditioners too.</span>
<!--l. 695--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 672--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu13.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu14.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu14.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
<!--l. 695--><p class="indent" > <a
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 672--><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. 695--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 672--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu16.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu14.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlsu15.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu15.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmbx-12">6.6 </span></span> <a
class="cmr-12">6.6 </span></span> <a
id="x25-240006.6"></a><span
class="cmbx-12">Method apply</span></h4>
class="cmr-12">Method apply</span></h4>
<div class="center"
>
<!--l. 697--><p class="noindent" >
<!--l. 698--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 674--><p class="noindent" >
<!--l. 675--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%apply(x,y,desc_a,info</span><span
class="cmtt-12">&#x00A0;[,trans,work])</span></span></span><br />
</div>
<!--l. 701--><p class="noindent" ><span
class="cmbx-12">This method computes </span><span
<!--l. 678--><p class="noindent" ><span
class="cmr-12">This method computes </span><span
class="cmmi-12">y </span><span
class="cmr-12">= </span><span
class="cmmi-12">op</span><span
@ -50,164 +50,153 @@ class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span
class="cmr-12">) </span><span
class="cmmi-12">x</span><span
class="cmbx-12">, where </span><span
class="cmr-12">, where </span><span
class="cmmi-12">B </span><span
class="cmbx-12">is a previously built</span>
class="cmr-12">is a previously built preconditioner,</span>
<span
class="cmbx-12">preconditioner, stored into </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">stored into </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span><span
class="cmbx-12">, and </span><span
class="cmr-12">, and </span><span
class="cmmi-12">op </span><span
class="cmbx-12">denotes the preconditioner itself or its</span>
class="cmr-12">denotes the preconditioner itself or its transpose, according to the</span>
<span
class="cmbx-12">transpose, according to the value of </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">value of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span><span
class="cmbx-12">. Note that, when MLD2P4 is</span>
class="cmr-12">. Note that, when AMG4PSBLAS is used with a Krylov solver from</span>
<span
class="cmbx-12">used with a Krylov solver from PSBLAS, </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">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="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="cmbx-12">and hence it is completely transparent to the</span>
class="cmr-12">and hence it is</span>
<span
class="cmbx-12">user.</span>
<!--l. 710--><p class="noindent" ><span
class="cmr-12">completely transparent to the user.</span>
<!--l. 687--><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. 713--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 690--><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. 713--><p class="noindent" ><span
class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 690--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><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="cmti-12">kind</span><span
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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="td11"><!--l. 691--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-2-2"
class="td11"><!--l. 691--><p class="noindent" ><span
class="cmr-12">The local part of the vector </span><span
class="cmmi-12">x</span><span
class="cmbx-12">. Note that </span><span
class="cmbxti-10x-x-120">type</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>
<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>
class="cmr-12">must be chosen according to the real/complex, single/double</span>
<span
class="cmbx-12">real/complex, single/double precision version of MLD2P4</span>
<span
class="cmbx-12">under use.</span> </td>
class="cmr-12">precision version of AMG4PSBLAS 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. 717--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 694--><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. 717--><p class="noindent" ><span
class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 694--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><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="cmti-12">kind</span><span
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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="td11"><!--l. 695--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-4-2"
class="td11"><!--l. 695--><p class="noindent" ><span
class="cmr-12">The local part of the vector </span><span
class="cmmi-12">y</span><span
class="cmbx-12">. 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 be chosen according to the</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>
<span
class="cmbx-12">real/complex, single/double precision version of MLD2P4</span>
class="cmr-12">must be chosen according to the real/complex, single/double</span>
<span
class="cmbx-12">under use.</span> </td>
class="cmr-12">precision version of AMG4PSBLAS 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. 721--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 698--><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. 721--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 698--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 699--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-6-2"
class="td11"><!--l. 699--><p class="noindent" ><span
class="cmr-12">The communication descriptor associated to the matrix to be</span>
<span
class="cmbx-12">be preconditioned.</span> </td>
class="cmr-12">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. 724--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 701--><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. 724--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 701--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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">&#x00A0;</span><a
class="td11"><!--l. 702--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-8-2"
class="td11"><!--l. 702--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for 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. 726--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 703--><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. 726--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 703--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">character(len=1),</span><span
class="cmtt-12">&#x00A0;optional,</span><span
class="cmtt-12">&#x00A0;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. 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="td11"><!--l. 704--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-10-2"
class="td11"><!--l. 704--><p class="noindent" ><span
class="cmr-12">If </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span> <span
class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#8217;N&#8217;,&#8217;n&#8217;</span></span></span> <span
class="cmbx-12">then </span><span
class="cmr-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="cmbx-12">; if </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">; if </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span> <span
class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#8217;T&#8217;,&#8217;t&#8217;</span></span></span>
<span
class="cmbx-12">then </span><span
class="cmr-12">then </span><span
class="cmmi-12">op</span><span
class="cmr-12">(</span><span
class="cmmi-12">B</span><sup><span
@ -217,17 +206,16 @@ 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="cmbx-12">(transpose of </span><span
class="cmr-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">)</span><span
class="cmbx-12">; if </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">); if </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span> <span
class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#8217;C&#8217;,&#8217;c&#8217;</span></span></span>
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#8217;C&#8217;,&#8217;c&#8217;</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
@ -237,85 +225,70 @@ 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="cmbx-12">(conjugate transpose of </span><span
class="cmr-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><span
class="cmbx-12">.</span> </td>
class="cmr-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. 731--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 708--><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. 731--><p class="noindent" ><span
class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 708--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><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="cmti-12">kind</span><span
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span
class="cmtt-12">&#x00A0;optional,</span><span
class="cmtt-12">&#x00A0;target</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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="td11"><!--l. 709--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-12-2"
class="td11"><!--l. 709--><p class="noindent" ><span
class="cmr-12">Workspace. Its size should be at least </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">4</span><span
class="cmtt-12">&#x00A0;*</span><span
class="cmtt-12">&#x00A0;psb_cd_get_local_</span></span></span> <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#x00A0;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="cmbx-12">(see the PSBLAS</span>
class="cmr-12">(see the PSBLAS User&#8217;s Guide). Note that </span><span
class="cmti-12">type</span>
<span
class="cmbx-12">User&#8217;s Guide). Note that </span><span
class="cmbxti-10x-x-120">type </span><span
class="cmbx-12">and </span><span
class="cmbxti-10x-x-120">kind</span><span
class="cmbxti-10x-x-120">_parameter </span><span
class="cmbx-12">must</span>
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>
<span
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>
class="cmr-12">single/double precision version of AMG4PSBLAS 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. 739--><p class="indent" > <span
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<span
class="cmbx-12">can be also invoked as follows:</span>
<div class="center"
>
<!--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">&#x00A0;amg_precaply(p,what,val,info)</span></span></span></div>
<!--l. 748--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 718--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu16.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu14.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu15.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu15.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
<!--l. 748--><p class="indent" > <a
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 718--><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. 748--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 718--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu15.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlsu16.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu16.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmbx-12">6.7 </span></span> <a
class="cmr-12">6.7 </span></span> <a
id="x26-250006.7"></a><span
class="cmbx-12">Method free</span></h4>
class="cmr-12">Method free</span></h4>
<div class="center"
>
<!--l. 750--><p class="noindent" >
<!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 720--><p class="noindent" >
<!--l. 721--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%free(p,info)</span></span></span><br />
</div>
<!--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
<!--l. 724--><p class="noindent" ><span
class="cmr-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="cmbx-12">.</span>
<!--l. 757--><p class="noindent" ><span
class="cmr-12">.</span>
<!--l. 727--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-15" class="tabular"
cellspacing="0" cellpadding="0"
@ -50,58 +50,49 @@ 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. 760--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 730--><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. 760--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 730--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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">&#x00A0;</span><a
class="td11"><!--l. 731--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-15-2-2"
class="td11"><!--l. 731--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a>
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for</span>
<span
class="cmbx-12">for details.</span> </td>
class="cmr-12">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. 765--><p class="indent" > <span
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<span
class="cmbx-12">can be also invoked as follows:</span>
<div class="center"
>
<!--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">&#x00A0;amg_precfree(p,info)</span></span></span></div>
<!--l. 775--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 737--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu15.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu16.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu16.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
<!--l. 775--><p class="indent" > <a
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 737--><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. 775--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 737--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu18.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu16.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlsu17.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu17.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmbx-12">6.8 </span></span> <a
class="cmr-12">6.8 </span></span> <a
id="x27-260006.8"></a><span
class="cmbx-12">Method descr</span></h4>
class="cmr-12">Method descr</span></h4>
<div class="center"
>
<!--l. 777--><p class="noindent" >
<!--l. 778--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 739--><p class="noindent" >
<!--l. 740--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%descr(info,</span><span
class="cmtt-12">&#x00A0;[iout])</span></span></span><br />
</div>
<!--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
<!--l. 743--><p class="noindent" ><span
class="cmr-12">This method prints a description of the preconditioner </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">p</span></span></span> <span
class="cmbx-12">to the standard</span>
class="cmr-12">to the standard output or to a</span>
<span
class="cmbx-12">output or to a file. It must be called after </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">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="cmbx-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">smoothers_build</span></span></span><span
class="cmbx-12">,</span>
<span
class="cmbx-12">or </span><span class="obeylines-h"><span class="verb"><span
class="cmr-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="cmr-12">, have</span>
<span
class="cmr-12">been called.</span>
<!--l. 748--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-16" class="tabular"
cellspacing="0" cellpadding="0"
@ -61,73 +61,60 @@ 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. 789--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 751--><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. 789--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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">&#x00A0;</span><a
class="td11"><!--l. 752--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-2-2"
class="td11"><!--l. 752--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for 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. 791--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 753--><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. 791--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 753--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 754--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-4-2"
class="td11"><!--l. 754--><p class="noindent" ><span
class="cmr-12">The id of the file where the preconditioner description will be</span>
<span
class="cmbx-12">be printed; the default is the standard output.</span> </td>
class="cmr-12">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. 797--><p class="indent" > <span
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<span
class="cmbx-12">can be also invoked as follows:</span>
<div class="center"
>
<!--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">&#x00A0;amg_precdescr(p,info</span><span
class="cmtt-12">&#x00A0;[,iout])</span></span></span></div>
<!--l. 805--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 759--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu18.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu16.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu17.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu17.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
<!--l. 805--><p class="indent" > <a
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 759--><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. 805--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
<!--l. 759--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlsu18.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu18.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmbx-12">6.9 </span></span> <a
class="cmr-12">6.9 </span></span> <a
id="x28-270006.9"></a><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>
class="cmr-12">Auxiliary Methods</span></h4>
<!--l. 760--><p class="noindent" ><span
class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span>
<span
class="cmbx-12">preconditioner object.</span>
<!--l. 809--><p class="noindent" >
class="cmr-12">object.</span>
<!--l. 763--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmbx-12">6.9.1 </span></span> <a
class="cmr-12">6.9.1 </span></span> <a
id="x28-280006.9.1"></a><span
class="cmbx-12">Method: dump</span></h5>
class="cmr-12">Method: dump</span></h5>
<div class="center"
>
<!--l. 811--><p class="noindent" >
<!--l. 812--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 765--><p class="noindent" >
<!--l. 766--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])</span></span></span><br />
</div>
<!--l. 815--><p class="noindent" ><span
class="cmbx-12">Dump on file.</span>
<!--l. 818--><p class="noindent" ><span
<!--l. 769--><p class="noindent" ><span
class="cmr-12">Dump on file.</span>
<!--l. 772--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-17" class="tabular"
cellspacing="0" cellpadding="0"
@ -54,70 +54,67 @@ 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. 821--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 775--><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. 821--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 775--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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">&#x00A0;</span><a
class="td11"><!--l. 776--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-2-2"
class="td11"><!--l. 776--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for 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. 823--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 777--><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. 823--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 777--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">class(psb_</span></span></span><span
class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_sparse_mat),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 778--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-4-2"
class="td11"><!--l. 778--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
class="cmbx-12">this allows e.g. running on GPUs; it needs not be the same</span>
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
<span
class="cmbx-12">on all processes. See the PSBLAS User&#8217;s Guide for details</span>
<span class="cite"><span
class="cmbx-12">[</span><a
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-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> </td>
class="cmr-12">15</span></a><span
class="cmr-12">]</span></span><span
class="cmr-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. 831--><p class="noindent" >
<!--l. 785--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmbx-12">6.9.2 </span></span> <a
class="cmr-12">6.9.2 </span></span> <a
id="x28-290006.9.2"></a><span
class="cmbx-12">Method: clone</span></h5>
class="cmr-12">Method: clone</span></h5>
<div class="center"
>
<!--l. 833--><p class="noindent" >
<!--l. 834--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 787--><p class="noindent" >
<!--l. 788--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%clone(pout,info)</span></span></span><br />
</div>
<!--l. 837--><p class="noindent" ><span
class="cmbx-12">Create a (deep) copy of the preconditioner object.</span>
<!--l. 840--><p class="noindent" ><span
<!--l. 791--><p class="noindent" ><span
class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
<!--l. 794--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-18" class="tabular"
cellspacing="0" cellpadding="0"
@ -125,114 +122,108 @@ 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. 843--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 797--><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. 843--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 797--><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="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">prec_type),</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 798--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-2-2"
class="td11"><!--l. 798--><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>
<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>
class="cmr-12">be chosen according to the real/complex, single/double precision</span>
<span
class="cmbx-12">single/double precision version of MLD2P4 under use.</span> </td>
class="cmr-12">version of AMG4PSBLAS 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. 847--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 801--><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. 847--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 801--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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">&#x00A0;</span><a
class="td11"><!--l. 802--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-4-2"
class="td11"><!--l. 802--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for 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. 853--><p class="noindent" >
<!--l. 807--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmbx-12">6.9.3 </span></span> <a
class="cmr-12">6.9.3 </span></span> <a
id="x28-300006.9.3"></a><span
class="cmbx-12">Method: sizeof</span></h5>
class="cmr-12">Method: sizeof</span></h5>
<div class="center"
>
<!--l. 855--><p class="noindent" >
<!--l. 856--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 809--><p class="noindent" >
<!--l. 810--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">sz</span><span
class="cmtt-12">&#x00A0;=</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">&#x00A0;p%sizeof()</span></span></span><br />
</div>
<!--l. 859--><p class="noindent" ><span
class="cmbx-12">Return memory footprint in bytes.</span>
<!--l. 862--><p class="noindent" >
<!--l. 813--><p class="noindent" ><span
class="cmr-12">Return memory footprint in bytes.</span>
<!--l. 816--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmbx-12">6.9.4 </span></span> <a
class="cmr-12">6.9.4 </span></span> <a
id="x28-310006.9.4"></a><span
class="cmbx-12">Method: allocate</span><span
class="cmbx-12">_wrk</span></h5>
class="cmr-12">Method: allocate</span><span
class="cmr-12">_wrk</span></h5>
<div class="center"
>
<!--l. 864--><p class="noindent" >
<!--l. 865--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 818--><p class="noindent" >
<!--l. 819--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%allocate_wrk(info[,</span><span
class="cmtt-12">&#x00A0;vmold])</span></span></span><br />
</div>
<!--l. 868--><p class="noindent" ><span
class="cmbx-12">Allocate internal work vectors. Each application of the preconditioner</span>
<!--l. 822--><p class="noindent" ><span
class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span>
<span
class="cmbx-12">uses a number of work vectors which are allocated internally as</span>
class="cmr-12">work vectors which are allocated internally as necessary; therefore allocation and</span>
<span
class="cmbx-12">necessary; therefore allocation and deallocation of memory occurs</span>
class="cmr-12">deallocation of memory occurs multiple times during the execution of a Krylov method.</span>
<span
class="cmbx-12">multiple times during the execution of a Krylov method. In most cases</span>
class="cmr-12">In most cases this strategy is perfectly acceptable, but on some platforms, most</span>
<span
class="cmbx-12">this strategy is perfectly acceptable, but on some platforms, most</span>
class="cmr-12">notably GPUs, memory allocation is a slow operation, and the default behaviour would</span>
<span
class="cmbx-12">notably GPUs, memory allocation is a slow operation, and the default</span>
class="cmr-12">lead to a slowdown. This method allows to trade space for time by preallocating</span>
<span
class="cmbx-12">behaviour would lead to a slowdown. This method allows to trade</span>
class="cmr-12">the internal workspace outside of the invocation of a Krylov method. When</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="cmbx-12">space for time by preallocating the internal workspace outside of the</span>
class="cmr-12">to ensure the internal work vectors are of the appropriate dynamic type to</span>
<span
class="cmbx-12">invocation of a Krylov method. When using GPUs or other specialized</span>
class="cmr-12">exploit the accelerator hardware; when allocation occurs internally this is</span>
<span
class="cmbx-12">devices, the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">vmold</span></span></span> <span
class="cmbx-12">argument is also necessary to ensure the internal</span>
<span
class="cmbx-12">work vectors are of the appropriate dynamic type to exploit the</span>
<span
class="cmbx-12">accelerator hardware; when allocation occurs internally this is taken</span>
<span
class="cmbx-12">care of based on the dynamic type of the </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">taken 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="cmbx-12">argument to the </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">argument to the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">apply</span></span></span>
<span
class="cmbx-12">method.</span>
<!--l. 884--><p class="noindent" ><span
class="cmr-12">method.</span>
<!--l. 838--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-19" class="tabular"
cellspacing="0" cellpadding="0"
@ -240,60 +231,58 @@ 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. 887--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 841--><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. 887--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 841--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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">&#x00A0;</span><a
class="td11"><!--l. 842--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-2-2"
class="td11"><!--l. 842--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for 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. 889--><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">vmold</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-3-2"
class="td11"><!--l. 889--><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">class(psb_</span></span></span><span
class="cmbxti-10x-x-120">x</span><span class="obeylines-h"><span class="verb"><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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>
class="td11"><!--l. 844--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-4-2"
class="td11"><!--l. 844--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span
class="cmbx-12">this allows e.g. running on GPUs.</span> </td>
class="cmr-12">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. 896--><p class="noindent" >
<!--l. 850--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmbx-12">6.9.5 </span></span> <a
class="cmr-12">6.9.5 </span></span> <a
id="x28-320006.9.5"></a><span
class="cmbx-12">Method: free</span><span
class="cmbx-12">_wrk</span></h5>
class="cmr-12">Method: free</span><span
class="cmr-12">_wrk</span></h5>
<div class="center"
>
<!--l. 898--><p class="noindent" >
<!--l. 899--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
<!--l. 852--><p class="noindent" >
<!--l. 853--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%free_wrk(info)</span></span></span><br />
</div>
<!--l. 902--><p class="noindent" ><span
class="cmbx-12">Deallocate internal work vectors.</span>
<!--l. 905--><p class="noindent" ><span
<!--l. 856--><p class="noindent" ><span
class="cmr-12">Deallocate internal work vectors.</span>
<!--l. 859--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-20" class="tabular"
cellspacing="0" cellpadding="0"
@ -301,23 +290,21 @@ 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. 908--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 862--><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. 908--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="td11"><!--l. 862--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td>
class="cmr-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. 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">&#x00A0;</span><a
class="td11"><!--l. 863--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-20-2-2"
class="td11"><!--l. 863--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span>
<span
class="cmbx-12">details.</span> </td>
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for 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>
@ -331,19 +318,19 @@ class="td11"> </td> </tr></table></div>
<!--l. 4--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu18.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu18.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 4--><p class="indent" > <a
id="tailuserhtmlsu18.html"></a>
</body></html>

@ -40,7 +40,7 @@ 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>
class="cmr-12">As a minimal example consider the following:</span>
@ -48,22 +48,20 @@ class="cmbx-12">As a minimal example consider the following:</span>
./configure&#x00A0;--with-psblas=PSB-INSTALL-DIR
</div>
<!--l. 110--><p class="nopar" > <span
class="cmbx-12">which assumes that the various MPI compilers and support libraries are</span>
class="cmr-12">which assumes that the various MPI compilers and support libraries are available in</span>
<span
class="cmbx-12">available in the standard directories on the system, and specifies only</span>
class="cmr-12">the standard directories on the system, and specifies only the PSBLAS install directory</span>
<span
class="cmbx-12">the PSBLAS install directory (note that the latter directory must</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>
<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="cmr-12">options may 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">&#x00A0;--help</span></span></span><span
class="cmbx-12">, which</span>
class="cmr-12">, which</span>
<span
class="cmbx-12">produces:</span>
class="cmr-12">produces:</span>
@ -243,15 +241,16 @@ class="cmbx-12">produces:</span>
</div>
<!--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>
class="cmr-12">For instance, if a user has built and installed PSBLAS 3.7 under the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">/opt</span></span></span> <span
class="cmr-12">directory</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">/opt</span></span></span> <span
class="cmbx-12">directory and is using the SuiteSparse package (which includes</span>
<span
class="cmbx-12">UMFPACK), then MLD2P4 might be configured with:</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>
@ -260,38 +259,36 @@ class="cmbx-12">UMFPACK), then MLD2P4 might be configured with:</span>
&#x00A0;<br />&#x00A0;--with-umfpackincdir=/usr/include/suitesparse/
</div>
<!--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="cmr-12">Once the configure script has completed execution, it will have generated the file</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">Make.inc</span></span></span> <span
class="cmbx-12">which will then be used by all Makefiles in the directory</span>
class="cmr-12">which will then be used by all Makefiles in the directory tree; this file will be</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="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="cmbx-12">.</span>
class="cmr-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>
class="cmr-12">To use the MUMPS solver package, the user has to add the appropriate options to</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="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">&#x00A0;-lsmumps</span></span></span> <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#x00A0;-lsmumps</span></span></span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#x00A0;-lzmumps</span><span
class="cmtt-12">&#x00A0;-lcmumps</span><span
class="cmtt-12">&#x00A0;-mumps_common</span><span
class="cmtt-12">&#x00A0;-lpord</span></span></span><span
class="cmbx-12">. MUMPS often</span>
<span
class="cmbx-12">uses additional packages such as ScaLAPACK, ParMETIS, SCOTCH, as</span>
class="cmr-12">. MUMPS often uses additional</span>
<span
class="cmbx-12">well as enabling OpenMP; in such cases it is necessary to add linker options</span>
class="cmr-12">packages such as ScaLAPACK, ParMETIS, SCOTCH, as well as enabling OpenMP; in</span>
<span
class="cmbx-12">with the </span><span class="obeylines-h"><span class="verb"><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="cmtt-12">--with-extra-libs</span></span></span> <span
class="cmbx-12">configure option.</span>
class="cmr-12">configure</span>
<span
class="cmr-12">option.</span>
<!--l. 304--><p class="indent" > <span
class="cmbx-12">To build the library the user will now enter</span>
class="cmr-12">To build the library the user will now enter</span>
@ -299,7 +296,7 @@ class="cmbx-12">To build the library the user will now enter</span>
make
</div>
<!--l. 307--><p class="nopar" > <span
class="cmbx-12">followed (optionally) by</span>
class="cmr-12">followed (optionally) by</span>
@ -311,22 +308,22 @@ make&#x00A0;install
<!--l. 312--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlsu4.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu2.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu2.html#tailuserhtmlsu2.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu3.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu3.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 312--><p class="indent" > <a
id="tailuserhtmlsu3.html"></a>
</body></html>

@ -11,60 +11,60 @@
</head><body
>
<!--l. 312--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlsu5.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu3.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="#tailuserhtmlsu4.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu4.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmbx-12">3.4 </span></span> <a
class="cmr-12">3.4 </span></span> <a
id="x11-100003.4"></a><span
class="cmbx-12">Bug reporting</span></h4>
class="cmr-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>
class="cmr-12">If you find any bugs in our codes, please report them through our issues page</span>
<span
class="cmbx-12">page on</span><br
class="cmr-12">on</span><br
class="newline" /> <a
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>
class="cmr-12">To enable us to track the bug, please provide a log from the failing application, the</span>
<span
class="cmbx-12">application, the test conditions, and ideally a self-contained test program</span>
class="cmr-12">test conditions, and ideally a self-contained test program reproducing the</span>
<span
class="cmbx-12">reproducing the issue.</span>
class="cmr-12">issue.</span>
<!--l. 321--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlsu5.html" ><span
class="cmbx-12">next</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">next</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu3.html" ><span
class="cmbx-12">prev</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span
class="cmbx-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">prev-tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlsu4.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu4.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 321--><p class="indent" > <a
id="tailuserhtmlsu4.html"></a>
</body></html>

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

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

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

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

@ -11,105 +11,103 @@
</head><body
>
<!--l. 109--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="#tailuserhtmlsu9.html"><span
class="cmbx-12">tail</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">tail</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu9.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span
class="cmbx-12">5.1 </span></span> <a
class="cmr-12">5.1 </span></span> <a
id="x18-170005.1"></a><span
class="cmbx-12">Examples</span></h4>
class="cmr-12">Examples</span></h4>
<!--l. 111--><p class="noindent" ><span
class="cmbx-12">The code reported in Figure</span><span
class="cmbx-12">&#x00A0;</span><a
class="cmr-12">The code reported in Figure</span><span
class="cmr-12">&#x00A0;</span><a
href="#x18-170012"><span
class="cmbx-12">2</span><!--tex4ht:ref: fig:ex1 --></a> <span
class="cmbx-12">shows how to set and apply the default</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>
<span
class="cmbx-12">multilevel preconditioner available in the real double precision version of</span>
class="cmr-12">preconditioner available in the real double precision version of AMG4PSBLAS</span>
<span
class="cmbx-12">AMG4PSBLAS (see Table</span><span
class="cmbx-12">&#x00A0;</span><a
class="cmr-12">(see Table</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse5.html#x17-160151"><span
class="cmbx-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmbx-12">). This preconditioner is chosen by simply</span>
<span
class="cmbx-12">specifying </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">). This preconditioner is chosen by simply specifying </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#8217;ML&#8217;</span></span></span> <span
class="cmbx-12">as the second argument of </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">as the</span>
<span
class="cmr-12">second argument of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">P%init</span></span></span> <span
class="cmbx-12">(a call to </span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">(a call to </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">P%set</span></span></span> <span
class="cmbx-12">is not</span>
class="cmr-12">is not needed) and is applied</span>
<span
class="cmbx-12">needed) and is applied with the CG solver provided by PSBLAS (the</span>
class="cmr-12">with the CG solver provided by PSBLAS (the matrix of the system to be</span>
<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="cmr-12">solved is assumed to be positive definite). As previously observed, the modules</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_base_mod</span></span></span><span
class="cmbx-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmr-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="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_krylov_mod</span></span></span> <span
class="cmbx-12">must be used by the example program.</span>
<!--l. 121--><p class="indent" > <span
class="cmbx-12">The part of the code concerning the reading and assembling of the</span>
class="cmr-12">must be used by the example</span>
<span
class="cmbx-12">sparse matrix and the right-hand side vector, performed through the</span>
class="cmr-12">program.</span>
<!--l. 121--><p class="indent" > <span
class="cmr-12">The part of the code concerning the reading and assembling of the sparse matrix</span>
<span
class="cmbx-12">PSBLAS routines for sparse matrix and vector management, is not</span>
class="cmr-12">and the right-hand side vector, performed through the PSBLAS routines for sparse</span>
<span
class="cmbx-12">reported here for brevity; the statements concerning the deallocation of the</span>
class="cmr-12">matrix and vector management, is not reported here for brevity; the statements</span>
<span
class="cmbx-12">PSBLAS data structure are neglected too. The complete code can be found</span>
class="cmr-12">concerning the deallocation of the PSBLAS data structure are neglected too. The</span>
<span
class="cmbx-12">in the example program file </span><span class="obeylines-h"><span class="verb"><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">amg_dexample_ml.f90</span></span></span><span
class="cmbx-12">, in the directory</span>
<span class="obeylines-h"><span class="verb"><span
class="cmr-12">, in the</span>
<span
class="cmr-12">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">&#x00A0;</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>
class="cmr-12">of the AMG4PSBLAS implementation (see</span>
<span
class="cmbx-12">A sample test problem along with the relevant input data is available in</span>
class="cmr-12">Section</span><span
class="cmr-12">&#x00A0;</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>
<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>
class="cmr-12">. For details on the use of the PSBLAS routines, see the</span>
<span
class="cmbx-12">the PSBLAS User&#8217;s Guide</span><span
class="cmbx-12">&#x00A0;</span><span class="cite"><span
class="cmbx-12">[</span><a
class="cmr-12">PSBLAS User&#8217;s Guide</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-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>
class="cmr-12">15</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
<!--l. 133--><p class="indent" > <span
class="cmbx-12">The setup and application of the default multilevel preconditioner for</span>
class="cmr-12">The setup and application of the default multilevel preconditioner for the real single</span>
<span
class="cmbx-12">the real single precision and the complex, single and double precision,</span>
class="cmr-12">precision and the complex, single and double precision, versions are obtained</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">&#x00A0;</span><a
class="cmr-12">with straightforward modifications of the previous example (see Section</span><span
class="cmr-12">&#x00A0;</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>
class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a> <span
class="cmr-12">for</span>
<span
class="cmbx-12">corresponding codes are available in </span><span class="obeylines-h"><span class="verb"><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/</span></span></span><span
class="cmbx-12">.</span>
class="cmr-12">.</span>
<!--l. 139--><p class="indent" > <hr class="figure"><div class="figure"
>
@ -192,83 +190,77 @@ class="content">setup and application of the default multilevel preconditioner (
<!--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="cmbx-12">changing the default values of the preconditioner parameters. The code</span>
class="cmr-12">Different versions of the multilevel preconditioner can be obtained by changing the</span>
<span
class="cmbx-12">reported in Figure</span><span
class="cmbx-12">&#x00A0;</span><a
class="cmr-12">default values of the preconditioner parameters. The code reported in Figure</span><span
class="cmr-12">&#x00A0;</span><a
href="#x18-170023"><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>
class="cmr-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmr-12">shows</span>
<span
class="cmbx-12">applies 1 block-Jacobi sweep as pre- and post-smoother, and solves the</span>
class="cmr-12">how to set a V-cycle preconditioner which applies 1 block-Jacobi sweep as pre- and</span>
<span
class="cmbx-12">coarsest-level system with 8 block-Jacobi sweeps. Note that the ILU(0)</span>
class="cmr-12">post-smoother, and solves the coarsest-level system with 8 block-Jacobi sweeps. Note</span>
<span
class="cmbx-12">factorization (plus triangular solve) is used as local solver for the</span>
class="cmr-12">that the ILU(0) factorization (plus triangular solve) is used as local solver for the</span>
<span
class="cmbx-12">block-Jacobi sweeps, since this is the default associated with block-Jacobi</span>
class="cmr-12">block-Jacobi sweeps, since this is the default associated with block-Jacobi and set</span>
<span
class="cmbx-12">and set by</span><span
class="cmbx-12">&#x00A0;</span><span class="obeylines-h"><span class="verb"><span
class="cmr-12">by</span><span
class="cmr-12">&#x00A0;</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">P%init</span></span></span><span
class="cmbx-12">. Furthermore, specifying block-Jacobi as coarsest-level</span>
class="cmr-12">. Furthermore, specifying block-Jacobi as coarsest-level solver implies that</span>
<span
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">&#x00A0;</span><a
class="cmr-12">the coarsest-level matrix is distributed among the processes. Figure</span><span
class="cmr-12">&#x00A0;</span><a
href="#x18-170034"><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>
class="cmr-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmr-12">shows how to set</span>
<span
class="cmbx-12">applies 2 hybrid Gauss-Seidel sweeps as pre- and post-smoother, and solves</span>
class="cmr-12">a W-cycle preconditioner which applies 2 hybrid Gauss-Seidel sweeps as pre- and</span>
<span
class="cmbx-12">the coarsest-level system with the multifrontal LU factorization</span>
class="cmr-12">post-smoother, and solves the coarsest-level system with the multifrontal LU</span>
<span
class="cmbx-12">implemented in MUMPS. It is specified that the coarsest-level matrix is</span>
class="cmr-12">factorization implemented in MUMPS. It is specified that the coarsest-level matrix is</span>
<span
class="cmbx-12">distributed, since MUMPS can be used on both replicated and distributed</span>
class="cmr-12">distributed, since MUMPS can be used on both replicated and distributed matrices,</span>
<span
class="cmbx-12">matrices, and by default it is used on replicated ones. The code fragments</span>
class="cmr-12">and by default it is used on replicated ones. The code fragments shown in</span>
<span
class="cmbx-12">shown in Figures</span><span
class="cmbx-12">&#x00A0;</span><a
class="cmr-12">Figures</span><span
class="cmr-12">&#x00A0;</span><a
href="#x18-170023"><span
class="cmbx-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmbx-12">and </span><a
class="cmr-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmr-12">and </span><a
href="#x18-170034"><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">amg_dexample_ml.f90</span></span></span> <span
class="cmbx-12">too.</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">amg_dexample_ml.f90</span></span></span>
<span
class="cmr-12">too.</span>
<!--l. 227--><p class="indent" > <span
class="cmbx-12">Finally, Figure</span><span
class="cmbx-12">&#x00A0;</span><a
class="cmr-12">Finally, Figure</span><span
class="cmr-12">&#x00A0;</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>
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="cmbx-12">preconditioner, i.e., RAS with overlap 2. Note also that a Krylov method</span>
class="cmr-12">i.e., RAS with overlap 2. Note also that a Krylov method different from CG</span>
<span
class="cmbx-12">different from CG must be used to solve the preconditioned system, since</span>
class="cmr-12">must be used to solve the preconditioned system, since the preconditione in</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="cmr-12">nonsymmetric. The corresponding example program is 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>
class="cmr-12">.</span>
<!--l. 234--><p class="indent" > <span
class="cmbx-12">For all the previous preconditioners, example programs where the sparse</span>
class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix and</span>
<span
class="cmbx-12">matrix and the right-hand side are generated by discretizing a PDE with</span>
class="cmr-12">the right-hand side are generated by discretizing a PDE with Dirichlet boundary</span>
<span
class="cmbx-12">Dirichlet boundary conditions are also available in the directory</span>
<span class="obeylines-h"><span class="verb"><span
class="cmr-12">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="cmbx-12">.</span>
class="cmr-12">.</span>
<!--l. 238--><p class="indent" > <hr class="figure"><div class="figure"
>
@ -380,13 +372,13 @@ class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
class="cmr-12">[</span><a
href="userhtmlsu9.html" ><span
class="cmbx-12">front</span></a><span
class="cmbx-12">] [</span><a
class="cmr-12">front</span></a><span
class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu9.html" ><span
class="cmbx-12">up</span></a><span
class="cmbx-12">] </span></p></div>
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlsu9.html"></a>
</body></html>

Loading…
Cancel
Save