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%;} .cmsy-8{font-size:72%;}
.cmex-10x-x-120{font-size:109%;} .cmex-10x-x-120{font-size:109%;}
.msbm-10x-x-120{font-size:109%;} .msbm-10x-x-120{font-size:109%;}
.cmbxti-10x-x-120{font-size:109%; font-weight: bold; font-style: italic;}
.cmmi-10x-x-109{font-style: italic;} .cmmi-10x-x-109{font-style: italic;}
.cmsy-10x-x-109{} .cmsy-10x-x-109{}
.cmex-10x-x-109{} .cmex-10x-x-109{}
@ -189,9 +188,9 @@ div.abstract {width:100%;}
#TBL-5{border-collapse:collapse;} #TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;} #TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;} #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-8-1{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-9-1{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-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 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;} #TBL-6{border-collapse:collapse;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;} #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{border-collapse:collapse;}
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;} #TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-6{border-collapse:collapse;} #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-5-1{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-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 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;} #TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;} #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{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;} #TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;} #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-5-1{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-6-1{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-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 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;} #TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;} #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 <span
class="cmr-12">Specifically, different sparse LU factorizations from external packages, native</span> class="cmr-12">Specifically, different sparse LU factorizations from external packages, native</span>
<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 <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 <span
class="cmr-12">preconditioners.</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">AMG4PSBLAS is written in Fortran</span><span
class="cmr-12">&#x00A0;2003, following an object-oriented design</span> class="cmr-12">&#x00A0;2003, following an object-oriented design</span>
<span <span
@ -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> class="cmr-12">for both the real and the complex case, which can be used through a single</span>
<span <span
class="cmr-12">interface.</span> class="cmr-12">interface.</span>
<!--l. 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> class="cmr-12">AMG4PSBLAS has been designed to implement scalable and easy-to-use multilevel</span>
<span <span
class="cmr-12">preconditioners in the context of the PSBLAS (Parallel Sparse BLAS) computational</span> class="cmr-12">preconditioners in the context of the PSBLAS (Parallel Sparse BLAS) computational</span>
@ -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> class="cmr-12">AMG4PSBLAS can be run on any parallel machine where PSBLAS implementations</span>
<span <span
class="cmr-12">are available.</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> class="cmr-12">AMG4PSBLAS has a layered and modular software architecture where three main</span>
<span <span
class="cmr-12">layers can be identified. The lower layer consists of the PSBLAS kernels, the middle</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 href="userhtmlse7.html#x29-330007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:adding --></a><span class="cmr-12">7</span><!--tex4ht:ref: sec:adding --></a><span
class="cmr-12">).</span> class="cmr-12">).</span>
<!--l. 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> class="cmr-12">This guide is organized as follows. General information on the distribution of the</span>
<span <span
class="cmr-12">source code is reported in Section</span><span class="cmr-12">source code is reported in Section</span><span
@ -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> class="cmr-12">. The basics for building and applying the</span>
<span <span
class="cmr-12">preconditioners with the Krylov solvers implemented in PSBLAS are reported</span> class="cmr-12">preconditioners with the Krylov solvers implemented in PSBLAS are reported</span>
<span <span
class="cmr-12">in</span><span class="cmr-12">in</span><span
class="cmr-12">&#x00A0;Section</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 href="userhtmlse5.html#x17-160005"><span
class="cmr-12">5</span><!--tex4ht:ref: sec:started --></a><span class="cmr-12">5</span><!--tex4ht:ref: sec:started --></a><span
class="cmr-12">, where the Fortran codes of a few sample programs are also shown.</span> class="cmr-12">, where the Fortran codes of a few sample programs are also shown.</span>
<span <span
class="cmr-12">A reference guide for the user interface routines is provided in Section</span><span class="cmr-12">A reference guide for the user interface routines is provided in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a

@ -34,8 +34,9 @@ class="cmr-12">Code Distribution</span></h3>
<!--l. 5--><p class="noindent" ><span <!--l. 5--><p class="noindent" ><span
class="cmr-12">AMG4PSBLAS is available from the web site</span> class="cmr-12">AMG4PSBLAS is available from the web site</span>
<div class="quotation"> <div class="quotation">
<!--l. 8--><p class="indent" > <span <!--l. 8--><p class="indent" > <a
class="cmtt-12">https://github.com/psctoolkit/amg4psblas</span></div> 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 <!--l. 10--><p class="noindent" ><span
class="cmr-12">where contact points for further information can be also found.</span> class="cmr-12">where contact points for further information can be also found.</span>
<!--l. 12--><p class="indent" > <span <!--l. 12--><p class="indent" > <span

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

@ -11,199 +11,188 @@
</head><body </head><body
> >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse5.html" ><span href="userhtmlse5.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse3.html" ><span href="userhtmlse3.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse3.html#tailuserhtmlse3.html" ><span href="userhtmlse3.html#tailuserhtmlse3.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlse4.html"><span href="#tailuserhtmlse4.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse4.html" ><span href="userhtml.html#userhtmlse4.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <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 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 <!--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 <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 <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 <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 <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 <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 <span
class="cmbx-12">on the problem size, and a convergence rate that is independent of the</span> class="cmr-12">size.</span>
<span
class="cmbx-12">problem size.</span>
<!--l. 13--><p class="indent" > <span <!--l. 13--><p class="indent" > <span
class="cmbx-12">Multigrid preconditioners are based on a recursive application of a</span> class="cmr-12">Multigrid preconditioners are based on a recursive application of a two-grid process</span>
<span
class="cmbx-12">two-grid process consisting of smoother iterations and a coarse-space (or</span>
<span
class="cmbx-12">coarse-level) correction. The smoothers may be either basic iterative</span>
<span <span
class="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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <span
class="cmbx-12">interplay between fine and coarse level by suitably choosing the coarse</span> class="cmr-12">coarse space and the coarse-to-fine interpolation (see, e.g., </span><span class="cite"><span
<span class="cmr-12">[</span><a
class="cmbx-12">space and the coarse-to-fine interpolation (see, e.g., </span><span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XBriggs2000"><span href="userhtmlli4.html#XBriggs2000"><span
class="cmbx-12">3</span></a><span class="cmr-12">3</span></a><span
class="cmbx-12">,</span><span class="cmr-12">,</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XStuben_01"><span href="userhtmlli4.html#XStuben_01"><span
class="cmbx-12">26</span></a><span class="cmr-12">26</span></a><span
class="cmbx-12">,</span><span class="cmr-12">,</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xdd2_96"><span href="userhtmlli4.html#Xdd2_96"><span
class="cmbx-12">24</span></a><span class="cmr-12">24</span></a><span
class="cmbx-12">]</span></span> <span class="cmr-12">]</span></span> <span
class="cmbx-12">for</span> class="cmr-12">for</span>
<span <span
class="cmbx-12">details.)</span> class="cmr-12">details.)</span>
<!--l. 37--><p class="indent" > <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 <span
class="cmbx-12">aggregation algorithm </span><span class="cite"><span class="cmr-12">algorithm </span><span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XBREZINA_VANEK"><span href="userhtmlli4.html#XBREZINA_VANEK"><span
class="cmbx-12">2</span></a><span class="cmr-12">2</span></a><span
class="cmbx-12">,</span><span class="cmr-12">,</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
class="cmbx-12">28</span></a><span class="cmr-12">28</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">, for building the sequence of coarse matrices</span> class="cmr-12">, for building the sequence of coarse matrices and transfer</span>
<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 <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 <span
class="cmbx-12">applied locally to each submatrix </span><span class="cite"><span class="cmr-12">submatrix </span><span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XTUMINARO_TONG"><span href="userhtmlli4.html#XTUMINARO_TONG"><span
class="cmbx-12">27</span></a><span class="cmr-12">27</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">. A brief description of the AMG</span> class="cmr-12">. A brief description of the AMG preconditioners implemented in</span>
<span <span
class="cmbx-12">preconditioners implemented in MLD2P4 is given in Sections</span><span class="cmr-12">MLD2P4 is given in Sections</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu6.html#x14-130004.1"><span href="userhtmlsu6.html#x14-130004.1"><span
class="cmbx-12">4.1</span><!--tex4ht:ref: sec:multilevel --></a><span class="cmr-12">4.1</span><!--tex4ht:ref: sec:multilevel --></a><span
class="cmbx-12">-</span><a class="cmr-12">-</span><a
href="userhtmlsu8.html#x16-150004.3"><span href="userhtmlsu8.html#x16-150004.3"><span
class="cmbx-12">4.3</span><!--tex4ht:ref: sec:smoothers --></a><span class="cmr-12">4.3</span><!--tex4ht:ref: sec:smoothers --></a><span
class="cmbx-12">. For</span> class="cmr-12">. For further details the reader is referred to</span>
<span <span class="cite"><span
class="cmbx-12">further details the reader is referred to </span><span class="cite"><span class="cmr-12">[</span><a
class="cmbx-12">[</span><a
href="userhtmlli4.html#Xpara_04"><span href="userhtmlli4.html#Xpara_04"><span
class="cmbx-12">4</span></a><span class="cmr-12">4</span></a><span
class="cmbx-12">,</span><span class="cmr-12">,</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xaaecc_07"><span href="userhtmlli4.html#Xaaecc_07"><span
class="cmbx-12">5</span></a><span class="cmr-12">5</span></a><span
class="cmbx-12">,</span><span class="cmr-12">,</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xapnum_07"><span href="userhtmlli4.html#Xapnum_07"><span
class="cmbx-12">7</span></a><span class="cmr-12">7</span></a><span
class="cmbx-12">,</span><span class="cmr-12">,</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#XMLD2P4_TOMS"><span href="userhtmlli4.html#XMLD2P4_TOMS"><span
class="cmbx-12">8</span></a><span class="cmr-12">8</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
<!--l. 47--><p class="indent" > <span <!--l. 47--><p class="indent" > <span
class="cmbx-12">We note that optimal multigrid preconditioners do not necessarily</span> class="cmr-12">We note that optimal multigrid preconditioners do not necessarily correspond to</span>
<span
class="cmbx-12">correspond to minimum execution times in a parallel setting. Indeed, to</span>
<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 <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 <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 <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 <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 <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 <span
class="cmbx-12">increases.</span> class="cmr-12">increases.</span>
<!--l. 56--><p class="noindent" > <!--l. 56--><p class="noindent" >
<div class="subsectionTOCS"> <div class="subsectionTOCS">
<span <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">4.1 </span><a class="cmr-12">4.1 </span><a
href="userhtmlsu6.html#x14-130004.1"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">4.2 </span><a class="cmr-12">4.2 </span><a
href="userhtmlsu7.html#x15-140004.2"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">4.3 </span><a class="cmr-12">4.3 </span><a
href="userhtmlsu8.html#x16-150004.3"><span 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> </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 <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse5.html" ><span href="userhtmlse5.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse3.html" ><span href="userhtmlse3.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse3.html#tailuserhtmlse3.html" ><span href="userhtmlse3.html#tailuserhtmlse3.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse4.html" ><span href="userhtmlse4.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse4.html" ><span href="userhtml.html#userhtmlse4.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlse4.html"></a> id="tailuserhtmlse4.html"></a>
</body></html> </body></html>

@ -11,222 +11,208 @@
</head><body </head><body
> >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse6.html" ><span href="userhtmlse6.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse4.html" ><span href="userhtmlse4.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse4.html#tailuserhtmlse4.html" ><span href="userhtmlse4.html#tailuserhtmlse4.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlse5.html"><span href="#tailuserhtmlse5.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse5.html" ><span href="userhtml.html#userhtmlse5.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <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 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 <!--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 <span
class="cmbx-12">and multilevel (i.e., AMG) preconditioners with the Krylov solvers included</span> class="cmr-12">multilevel (i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS</span>
<span <span class="cite"><span
class="cmbx-12">in PSBLAS </span><span class="cite"><span class="cmr-12">[</span><a
class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span class="cmr-12">15</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">. The following steps are required:</span> class="cmr-12">. The following steps are required:</span>
<ol class="enumerate1" > <ol class="enumerate1" >
<li <li
class="enumerate" id="x17-16002x1"><span class="enumerate" id="x17-16002x1"><span
class="cmbxti-10x-x-120">Declare the preconditioner data structure</span><span class="cmti-12">Declare the preconditioner data structure</span><span
class="cmbx-12">. It is a derived data</span> class="cmr-12">. It is a derived data type,</span>
<span <span class="obeylines-h"><span class="verb"><span
class="cmbx-12">type, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_</span></span></span><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">prec_</span></span></span> <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type</span></span></span><span class="cmtt-12">type</span></span></span><span
class="cmbx-12">, where </span><span class="cmr-12">, where </span><span
class="cmbxti-10x-x-120">x </span><span class="cmti-12">x </span><span
class="cmbx-12">may be </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">may be </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span><span class="cmtt-12">s</span></span></span><span
class="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="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="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="cmtt-12">z</span></span></span><span
class="cmbx-12">, according to the</span> class="cmr-12">, according to the basic data</span>
<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="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="cmtt-12">d</span></span></span> <span
class="cmbx-12">=</span> class="cmr-12">= real double precision;</span>
<span <span class="obeylines-h"><span class="verb"><span
class="cmbx-12">real double precision; </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span> <span class="cmtt-12">c</span></span></span> <span
class="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="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>
<span <span
class="cmbx-12">through the AMG4PSBLAS routines, following an object-oriented</span> class="cmr-12">structure is accessed by the user only through the AMG4PSBLAS routines,</span>
<span <span
class="cmbx-12">approach.</span> class="cmr-12">following an object-oriented approach.</span>
</li> </li>
<li <li
class="enumerate" id="x17-16004x2"><span class="enumerate" id="x17-16004x2"><span
class="cmbxti-10x-x-120">Allocate and initialize the preconditioner data structure,</span> class="cmti-12">Allocate and initialize the preconditioner data structure, according to a</span>
<span
class="cmbxti-10x-x-120">according to a preconditioner type chosen by the user</span><span
class="cmbx-12">. This is</span>
<span <span
class="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="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 <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 <span
class="cmbx-12">and the defaults associated with them are given in Table</span><span class="cmr-12">are given in Table</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x17-160151"><span href="#x17-160151"><span
class="cmbx-12">1</span><!--tex4ht:ref: tab:precinit --></a><span class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmbx-12">, where</span> class="cmr-12">, where the strings used by </span><span class="obeylines-h"><span class="verb"><span
<span
class="cmbx-12">the strings used by </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">init</span></span></span> <span class="cmtt-12">init</span></span></span> <span
class="cmbx-12">to identify the preconditioner types are</span> class="cmr-12">to identify the</span>
<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 <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>
<li <li
class="enumerate" id="x17-16006x3"><span 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 <span
class="cmbxti-10x-x-120">preconditioner parameters. </span><span class="cmti-12">parameters. </span><span
class="cmbx-12">This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span><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>
<span <span
class="cmbx-12">the default values of the parameters associated with the selected</span> class="cmr-12">called only if the user wants to modify the default values of the parameters</span>
<span <span
class="cmbx-12">preconditioner type, to obtain a variant of that preconditioner.</span> class="cmr-12">associated with the selected preconditioner type, to obtain a variant of that</span>
<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="cmtt-12">set</span></span></span> <span
class="cmbx-12">are given in Section</span><span class="cmr-12">are given in Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu9.html#x18-170005.1"><span href="userhtmlsu9.html#x18-170005.1"><span
class="cmbx-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span class="cmr-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
class="cmbx-12">; a complete list</span> class="cmr-12">; a complete</span>
<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 <span
class="cmbx-12">values is provided in Section</span><span class="cmr-12">is provided in Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse6.html#x19-180006"><span href="userhtmlse6.html#x19-180006"><span
class="cmbx-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span
class="cmbx-12">, Tables</span><span class="cmr-12">, Tables</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu11.html#x21-200092"><span href="userhtmlsu11.html#x21-200092"><span
class="cmbx-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span class="cmr-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span
class="cmbx-12">-</span><a class="cmr-12">-</span><a
href="userhtmlsu11.html#x21-200158"><span href="userhtmlsu11.html#x21-200158"><span
class="cmbx-12">8</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span class="cmr-12">8</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span
class="cmbx-12">.</span> class="cmr-12">.</span>
</li> </li>
<li <li
class="enumerate" id="x17-16008x4"><span class="enumerate" id="x17-16008x4"><span
class="cmbxti-10x-x-120">Build the preconditioner for a given matrix</span><span class="cmti-12">Build the preconditioner for a given matrix</span><span
class="cmbx-12">. If the selected</span> class="cmr-12">. If the selected preconditioner is</span>
<span <span
class="cmbx-12">preconditioner is multilevel, then two steps must be performed, as</span> class="cmr-12">multilevel, then two steps must be performed, as specified next.</span>
<span
class="cmbx-12">specified next.</span>
<ol class="enumerate2" > <ol class="enumerate2" >
<li <li
class="enumerate" id="x17-16009x0"><span class="enumerate" id="x17-16009x0"><span
class="cmbxti-10x-x-120">Build the aggregation hierarchy for a given matrix. </span><span class="cmti-12">Build the AMG hierarchy for a given matrix. </span><span
class="cmbx-12">This is</span> class="cmr-12">This is performed by the</span>
<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="cmtt-12">hierarchy_build</span></span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
</li> </li>
<li <li
class="enumerate" id="x17-16010x0"><span class="enumerate" id="x17-16010x0"><span
class="cmbxti-10x-x-120">Build the preconditioner for a given matrix. </span><span class="cmti-12">Build the preconditioner for a given matrix. </span><span
class="cmbx-12">This is</span> class="cmr-12">This is performed by the</span>
<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="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 <!--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 <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="cmtt-12">bld</span></span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
</li> </li>
<li <li
class="enumerate" id="x17-16012x5"><span class="enumerate" id="x17-16012x5"><span
class="cmbxti-10x-x-120">Apply the preconditioner at each iteration of a Krylov solver. </span><span class="cmti-12">Apply the preconditioner at each iteration of a Krylov solver. </span><span
class="cmbx-12">This is</span> class="cmr-12">This is performed by</span>
<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="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 <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="cmtt-12">apply</span></span></span> <span
class="cmbx-12">is</span> class="cmr-12">is called by the PSBLAS routine</span>
<span <span
class="cmbx-12">called by the PSBLAS routine implementing the Krylov solver</span> class="cmr-12">implementing the Krylov solver (</span><span class="obeylines-h"><span class="verb"><span
<span
class="cmbx-12">(</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_krylov</span></span></span><span class="cmtt-12">psb_krylov</span></span></span><span
class="cmbx-12">).</span> class="cmr-12">).</span>
</li> </li>
<li <li
class="enumerate" id="x17-16014x6"><span class="enumerate" id="x17-16014x6"><span
class="cmbxti-10x-x-120">Free the preconditioner data structure</span><span class="cmti-12">Free the preconditioner data structure</span><span
class="cmbx-12">. This is performed by the</span> class="cmr-12">. This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span
<span
class="cmbx-12">routine </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">free</span></span></span><span class="cmtt-12">free</span></span></span><span
class="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 <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 <!--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 <span
class="cmbx-12">object. A detailed description of them is given in Section</span><span class="cmr-12">detailed description of them is given in Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse6.html#x19-180006"><span href="userhtmlse6.html#x19-180006"><span
class="cmbx-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a><span
class="cmbx-12">. Examples</span> class="cmr-12">. Examples showing the basic use of</span>
<span <span
class="cmbx-12">showing the basic use of AMG4PSBLAS are reported in Section</span><span class="cmr-12">AMG4PSBLAS are reported in Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu9.html#x18-170005.1"><span href="userhtmlsu9.html#x18-170005.1"><span
class="cmbx-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span class="cmr-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
class="cmbx-12">.</span> class="cmr-12">.</span>
<div class="table"> <div class="table">
@ -297,9 +283,11 @@ class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-1" style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-1"
class="td11">Diagonal </td><td style="white-space:wrap; text-align:left;" id="TBL-1-3-2" class="td11">Diagonal </td><td style="white-space:wrap; text-align:left;" id="TBL-1-3-2"
class="td11"><!--l. 64--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 64--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;DIAG&#8217;</span></span></span> or class="cmtt-10x-x-109">&#8217;DIAG&#8217;</span></span></span>,
<span class="obeylines-h"><span class="verb"><span <span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;JACOBI&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-3-3" class="cmtt-10x-x-109">&#8217;JACOBI&#8217;</span></span></span>,
<span class="obeylines-h"><span class="verb"><span
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 class="td11"><!--l. 64--><p class="noindent" >Diagonal preconditioner. For any zero diagonal
entry of the matrix to be preconditioned, the entry of the matrix to be preconditioned, the
corresponding entry of the preconditioner is set corresponding entry of the preconditioner is set
@ -309,7 +297,9 @@ class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-1" style="vertical-align:baseline;" id="TBL-1-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-1"
class="td11">Gauss-Seidel </td><td style="white-space:wrap; text-align:left;" id="TBL-1-4-2" class="td11">Gauss-Seidel </td><td style="white-space:wrap; text-align:left;" id="TBL-1-4-2"
class="td11"><!--l. 67--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 67--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;GS&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-4-3" class="cmtt-10x-x-109">&#8217;GS&#8217;</span></span></span>,
<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 class="td11"><!--l. 67--><p class="noindent" >Hybrid Gauss-Seidel (forward), that is, global
block Jacobi with Gauss-Seidel as local solver. </td> block Jacobi with Gauss-Seidel as local solver. </td>
</tr><tr </tr><tr
@ -317,16 +307,20 @@ class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-1" style="vertical-align:baseline;" id="TBL-1-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-1"
class="td11">Symmetrized Gauss-Seidel</td><td style="white-space:wrap; text-align:left;" id="TBL-1-5-2" class="td11">Symmetrized Gauss-Seidel</td><td style="white-space:wrap; text-align:left;" id="TBL-1-5-2"
class="td11"><!--l. 70--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 70--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;FBGS&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-5-3" class="cmtt-10x-x-109">&#8217;FBGS&#8217;</span></span></span>,
class="td11"><!--l. 70--><p class="noindent" >Symmetrized <span class="obeylines-h"><span class="verb"><span
hybrid Gauss-Seidel,that is, forward Gauss-Seidel 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"
followed by backward Gauss-Seidel. </td> class="td11"><!--l. 70--><p class="noindent" >Symmetrized hybrid Gauss-Seidel, that is,
forward Gauss-Seidel followed by backward
Gauss-Seidel. </td>
</tr><tr </tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-6-1" style="vertical-align:baseline;" id="TBL-1-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-6-1"
class="td11">Block Jacobi </td><td style="white-space:wrap; text-align:left;" id="TBL-1-6-2" class="td11">Block Jacobi </td><td style="white-space:wrap; text-align:left;" id="TBL-1-6-2"
class="td11"><!--l. 73--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 73--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;BJAC&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-6-3" class="cmtt-10x-x-109">&#8217;BJAC&#8217;</span></span></span>,
<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> class="td11"><!--l. 73--><p class="noindent" >Block-Jacobi with ILU(0) on the local blocks. </td>
</tr><tr </tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
@ -343,14 +337,15 @@ class="td11">Multilevel </td><td style="white-space:wrap;
class="td11"><!--l. 76--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 76--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-10x-x-109">&#8217;ML&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-8-3" class="cmtt-10x-x-109">&#8217;ML&#8217;</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-1-8-3"
class="td11"><!--l. 76--><p class="noindent" >V-cycle with one hybrid forward Gauss-Seidel class="td11"><!--l. 76--><p class="noindent" >V-cycle with one hybrid forward Gauss-Seidel
(GS) sweep as pre-smoother and one hybrid (GS) sweep
backward GS sweep as post-smoother, basic as pre-smoother and one hybrid backward GS
smoothed aggregation as coarsening algorithm, sweep as post-smoother, decoupled smoothed
and LU (plus triangular solve) as coarsest-level aggregation as coarsening algorithm, and LU
solver. See the default values in Tables&#x00A0;<a (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-200092">2<!--tex4ht:ref: tab:p_cycle --></a>-<a
href="userhtmlsu11.html#x21-200158">8<!--tex4ht:ref: tab:p_smoother_1 --></a> for href="userhtmlsu11.html#x21-200158">8<!--tex4ht:ref: tab:p_smoother_1 --></a> for further
further details of the preconditioner. </td> details of the preconditioner. </td>
</tr><tr </tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-9-1" 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><hr class="endfloat" />
</div> </div>
<!--l. 91--><p class="indent" > <span <!--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="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>
<span <span
class="cmbx-12">AMG4PSBLAS, must be used in any program calling such routines. The</span> class="cmr-12">data type and the interfaces to the routines of AMG4PSBLAS, must be used</span>
<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="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 <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="cmtt-12">psb_krylov_mod</span></span></span><span
class="cmbx-12">, for interfacing with the Krylov solvers,</span> class="cmr-12">,</span>
<span <span
class="cmbx-12">must be also used (see Section</span><span class="cmr-12">for interfacing with the Krylov solvers, must be also used (see Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu9.html#x18-170005.1"><span href="userhtmlsu9.html#x18-170005.1"><span
class="cmbx-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span class="cmr-12">5.1</span><!--tex4ht:ref: sec:examples --></a><span
class="cmbx-12">). </span><br class="cmr-12">).</span>
<br
class="newline" /> class="newline" />
<!--l. 98--><p class="indent" > <span <!--l. 98--><p class="indent" > <span
class="cmbx-12">Remark 1. Coarsest-level solvers based on the LU factorization, such as</span> class="cmbx-12">Remark 1. </span><span
<span class="cmr-12">Coarsest-level solvers based on the LU factorization, such as those</span>
class="cmbx-12">those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU</span><span
class="cmbx-12">_Dist,</span>
<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 <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 <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 <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 <span
class="cmbx-12">computers.</span> class="cmr-12">on parallel computers.</span>
<!--l. 107--><p class="indent" > <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"> <div class="subsectionTOCS">
<span <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">5.1 </span><a class="cmr-12">5.1 </span><a
href="userhtmlsu9.html#x18-170005.1"><span href="userhtmlsu9.html#x18-170005.1"><span
class="cmbx-12">Examples</span></a></span> class="cmr-12">Examples</span></a></span>
</div> </div>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse6.html" ><span href="userhtmlse6.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse4.html" ><span href="userhtmlse4.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse4.html#tailuserhtmlse4.html" ><span href="userhtmlse4.html#tailuserhtmlse4.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse5.html" ><span href="userhtmlse5.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse5.html" ><span href="userhtml.html#userhtmlse5.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlse5.html"></a> id="tailuserhtmlse5.html"></a>
</body></html> </body></html>

@ -11,239 +11,234 @@
</head><body </head><body
> >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse7.html" ><span href="userhtmlse7.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse5.html" ><span href="userhtmlse5.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse5.html#tailuserhtmlse5.html" ><span href="userhtmlse5.html#tailuserhtmlse5.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlse6.html"><span href="#tailuserhtmlse6.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse6.html" ><span href="userhtml.html#userhtmlse6.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <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 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 <!--l. 5--><p class="noindent" ><span
class="cmbx-12">The basic user interface of AMG4PBLAS consists of eight methods. The six</span> class="cmr-12">The basic user interface of AMG4PBLAS consists of eight methods. The six methods</span>
<span <span class="obeylines-h"><span class="verb"><span
class="cmbx-12">methods </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">init</span></span></span><span class="cmtt-12">init</span></span></span><span
class="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="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="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="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="cmtt-12">smoothers_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">apply</span></span></span> class="cmtt-12">apply</span></span></span> <span
class="cmr-12">encapsulate all the</span>
<span <span
class="cmbx-12">encapsulate all the functionalities for the setup and the application of any</span> class="cmr-12">functionalities for the setup and the application of any multilevel and one-level</span>
<span <span
class="cmbx-12">multilevel and one-level preconditioner implemented in the package. The</span> class="cmr-12">preconditioner implemented in the package. The method </span><span class="obeylines-h"><span class="verb"><span
<span
class="cmbx-12">method </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">free</span></span></span> <span class="cmtt-12">free</span></span></span> <span
class="cmbx-12">deallocates the preconditioner data structure, while </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">deallocates the</span>
class="cmtt-12">descr</span></span></span>
<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 <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 <span
class="cmbx-12">subroutines.</span> class="cmr-12">stand-alone subroutines.</span>
<!--l. 16--><p class="indent" > <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 <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 <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"> <ul class="itemize1">
<li class="itemize"><span <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 <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="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="cmtt-12">spmat_type</span></span></span> <span
class="cmbx-12">with </span><span class="cmr-12">with </span><span
class="cmbxti-10x-x-120">x </span><span class="cmti-12">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="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 <span
class="cmbx-12">real single precision, </span><span class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmbxti-10x-x-120">x </span><span
class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span> <span class="cmtt-12">d</span></span></span> <span
class="cmbx-12">for real double precision, </span><span class="cmr-12">for real double precision, </span><span
class="cmbxti-10x-x-120">x </span><span class="cmti-12">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">c</span></span></span> <span class="cmtt-12">c</span></span></span> <span
class="cmbx-12">for</span> class="cmr-12">for complex single precision, </span><span
<span class="cmti-12">x </span><span
class="cmbx-12">complex single precision, </span><span class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmbxti-10x-x-120">x </span><span
class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span> <span class="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>
<li class="itemize"><span <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="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="cmtt-12">prec_type</span></span></span><span
class="cmbx-12">,</span> class="cmr-12">, with </span><span
class="cmti-12">x</span>
<span <span
class="cmbx-12">with </span><span class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmbxti-10x-x-120">x </span><span
class="cmbx-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span><span class="cmtt-12">s</span></span></span><span
class="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="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="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="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>
<li class="itemize"><span <li class="itemize"><span
class="cmbx-12">the arrays containing the vectors </span><span class="cmr-12">the arrays containing the vectors </span><span
class="cmmi-12">v </span><span class="cmmi-12">v </span><span
class="cmbx-12">and </span><span class="cmr-12">and </span><span
class="cmmi-12">w </span><span class="cmmi-12">w </span><span
class="cmbx-12">involved in</span> class="cmr-12">involved in the preconditioner</span>
<span <span
class="cmbx-12">the preconditioner application </span><span class="cmr-12">application </span><span
class="cmmi-12">w </span><span class="cmmi-12">w </span><span
class="cmr-12">= </span><span class="cmr-12">= </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmmi-12">v </span><span class="cmmi-12">v </span><span
class="cmbx-12">must be of type</span> class="cmr-12">must be of type </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_</span></span></span><span class="cmtt-12">psb_</span></span></span><span
class="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="cmtt-12">vect_type</span></span></span> <span
class="cmbx-12">with </span><span class="cmr-12">with </span><span
class="cmbxti-10x-x-120">x </span><span class="cmti-12">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="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="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="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="cmtt-12">z</span></span></span><span
class="cmbx-12">, in a manner completely</span> class="cmr-12">, in a manner completely analogous to the sparse matrix type;</span>
<span
class="cmbx-12">analogous to the sparse matrix type;</span>
</li> </li>
<li class="itemize"><span <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 <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 <span
class="cmbx-12">data structures (see Section</span><span class="cmr-12">Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu11.html#x21-200006.2"><span href="userhtmlsu11.html#x21-200006.2"><span
class="cmbx-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span class="cmr-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmbx-12">).</span></li></ul> class="cmr-12">).</span></li></ul>
<!--l. 39--><p class="noindent" ><span <!--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"> <div class="subsectionTOCS">
<span <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">6.1 </span><a class="cmr-12">6.1 </span><a
href="userhtmlsu10.html#x20-190006.1"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">6.2 </span><a class="cmr-12">6.2 </span><a
href="userhtmlsu11.html#x21-200006.2"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">6.3 </span><a class="cmr-12">6.3 </span><a
href="userhtmlsu12.html#x22-210006.3"><span href="userhtmlsu12.html#x22-210006.3"><span
class="cmbx-12">Method hierarchy</span><span class="cmr-12">Method hierarchy</span><span
class="cmbx-12">_build</span></a></span> class="cmr-12">_build</span></a></span>
<br /> <span <br /> <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">6.4 </span><a class="cmr-12">6.4 </span><a
href="userhtmlsu13.html#x23-220006.4"><span href="userhtmlsu13.html#x23-220006.4"><span
class="cmbx-12">Method smoothers</span><span class="cmr-12">Method smoothers</span><span
class="cmbx-12">_build</span></a></span> class="cmr-12">_build</span></a></span>
<br /> <span <br /> <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">6.5 </span><a class="cmr-12">6.5 </span><a
href="userhtmlsu14.html#x24-230006.5"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">6.6 </span><a class="cmr-12">6.6 </span><a
href="userhtmlsu15.html#x25-240006.6"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">6.7 </span><a class="cmr-12">6.7 </span><a
href="userhtmlsu16.html#x26-250006.7"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">6.8 </span><a class="cmr-12">6.8 </span><a
href="userhtmlsu17.html#x27-260006.8"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="subsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
class="cmbx-12">6.9 </span><a class="cmr-12">6.9 </span><a
href="userhtmlsu18.html#x28-270006.9"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="cmr-12">&#x00A0;</span><span
class="cmbx-12">&#x00A0;</span><span class="subsubsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmbx-12">6.9.1 </span><a class="cmr-12">6.9.1 </span><a
href="userhtmlsu18.html#x28-280006.9.1"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="cmr-12">&#x00A0;</span><span
class="cmbx-12">&#x00A0;</span><span class="subsubsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmbx-12">6.9.2 </span><a class="cmr-12">6.9.2 </span><a
href="userhtmlsu18.html#x28-290006.9.2"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="cmr-12">&#x00A0;</span><span
class="cmbx-12">&#x00A0;</span><span class="subsubsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmbx-12">6.9.3 </span><a class="cmr-12">6.9.3 </span><a
href="userhtmlsu18.html#x28-300006.9.3"><span 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 <br /> <span
class="cmbx-12">&#x00A0;</span><span class="cmr-12">&#x00A0;</span><span
class="cmbx-12">&#x00A0;</span><span class="subsubsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmbx-12">6.9.4 </span><a class="cmr-12">6.9.4 </span><a
href="userhtmlsu18.html#x28-310006.9.4"><span href="userhtmlsu18.html#x28-310006.9.4"><span
class="cmbx-12">Method: allocate</span><span class="cmr-12">Method: allocate</span><span
class="cmbx-12">_wrk</span></a></span> class="cmr-12">_wrk</span></a></span>
<br /> <span <br /> <span
class="cmbx-12">&#x00A0;</span><span class="cmr-12">&#x00A0;</span><span
class="cmbx-12">&#x00A0;</span><span class="subsubsectionToc" ><span class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
class="cmbx-12">6.9.5 </span><a class="cmr-12">6.9.5 </span><a
href="userhtmlsu18.html#x28-320006.9.5"><span href="userhtmlsu18.html#x28-320006.9.5"><span
class="cmbx-12">Method: free</span><span class="cmr-12">Method: free</span><span
class="cmbx-12">_wrk</span></a></span> class="cmr-12">_wrk</span></a></span>
</div> </div>
@ -257,22 +252,22 @@ class="cmbx-12">_wrk</span></a></span>
<!--l. 4--><div class="crosslinks"><p class="noindent"><span <!--l. 4--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse7.html" ><span href="userhtmlse7.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse5.html" ><span href="userhtmlse5.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse5.html#tailuserhtmlse5.html" ><span href="userhtmlse5.html#tailuserhtmlse5.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html" ><span href="userhtmlse6.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse6.html" ><span href="userhtml.html#userhtmlse6.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 4--><p class="indent" > <a <!--l. 4--><p class="indent" > <a
id="tailuserhtmlse6.html"></a> id="tailuserhtmlse6.html"></a>
</body></html> </body></html>

@ -11,71 +11,65 @@
</head><body </head><body
> >
<!--l. 4--><div class="crosslinks"><p class="noindent"><span <!--l. 4--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html" ><span href="userhtmlse6.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#tailuserhtmlse6.html" ><span href="userhtmlse6.html#tailuserhtmlse6.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlse7.html"><span href="#tailuserhtmlse7.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse7.html" ><span href="userhtml.html#userhtmlse7.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <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 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 <!--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 <span
class="cmbx-12">from the base objects in the library (see Remark</span><span class="cmr-12">base objects in the library (see Remark</span><span
class="cmbx-12">&#x00A0;2 in Section</span><span class="cmr-12">&#x00A0;2 in Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu11.html#x21-200006.2"><span href="userhtmlsu11.html#x21-200006.2"><span
class="cmbx-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span class="cmr-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmbx-12">), without</span> class="cmr-12">), without recompiling the</span>
<span <span
class="cmbx-12">recompiling the library itself.</span> class="cmr-12">library itself.</span>
<!--l. 10--><p class="indent" > <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 <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 <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 <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 <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 <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 <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 <span
class="cmbx-12">perhaps taking one of the predefined solvers as a starting point, if</span> class="cmr-12">possible.</span>
<span
class="cmbx-12">possible.</span>
<!--l. 20--><p class="indent" > <span <!--l. 20--><p class="indent" > <span
class="cmbx-12">Once the new smoother/solver class has been developed, to use</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">it in the context of the multilevel preconditioners it is necessary</span>
<span <span
class="cmbx-12">to:</span> class="cmr-12">the multilevel preconditioners it is necessary to:</span>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"><span <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>
<li class="itemize"><span <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="cmtt-12">set</span></span></span> <span
class="cmbx-12">routine as in the</span> class="cmr-12">routine as in the following:</span>
<span
class="cmbx-12">following:</span>
<div class="center" <div class="center"
> >
<!--l. 26--><p class="noindent" > <!--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> class="cmtt-12">&#x00A0;[,ilev,ilmax,pos])</span></span></span></div>
</li> </li>
<li class="itemize"><span <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 <span
class="cmbx-12">executable.</span></li></ul> class="cmr-12">executable.</span></li></ul>
<!--l. 32--><p class="noindent" ><span <!--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 <span
class="cmbx-12">structure, and acts as a </span><span class="cmr-12">and acts as a </span><span
class="cmbxti-10x-x-120">mold </span><span class="cmti-12">mold </span><span
class="cmbx-12">to which the preconditioner will conform,</span> class="cmr-12">to which the preconditioner will conform, even though</span>
<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 <span
class="cmbx-12">for this new development.</span> class="cmr-12">development.</span>
<!--l. 37--><p class="indent" > <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="cmtt-12">WHAT</span></span></span> <span
class="cmbx-12">in the </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">in the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span> class="cmtt-12">set</span></span></span> <span
<span class="cmr-12">routine; if the</span>
class="cmbx-12">routine; if the library code does not recognize a keyword, it passes it down</span>
<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 <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 <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 <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 <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 <span
class="cmbx-12">ignored.</span> class="cmr-12">ignored.</span>
<!--l. 46--><p class="indent" > <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 <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">tests/newslv</span></span></span><span class="cmtt-12">tests/newslv</span></span></span><span
class="cmbx-12">. In this example we are implementing a new incomplete</span> class="cmr-12">. In this example we are implementing a new incomplete factorization</span>
<span
class="cmbx-12">factorization variant (which is simply the ILU(0) factorization under a new</span>
<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 <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 <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 <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 <span
class="cmbx-12">(rewritten).</span> class="cmr-12">ovverridden (rewritten).</span>
<!--l. 55--><p class="indent" > <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" <div class="center"
> >
<!--l. 56--><p class="noindent" > <!--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" style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:wrap; text-align:left;" id="TBL-21-2-1"
class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-21-2-2" class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-21-2-2"
class="td11"><!--l. 59--><p class="noindent" ><span class="td11"><!--l. 59--><p class="noindent" ><span
class="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 <span
class="cmbx-12">preconditioner.</span> </td> class="cmr-12">preconditioner.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:wrap; text-align:left;" id="TBL-21-3-1" style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:wrap; text-align:left;" id="TBL-21-3-1"
class="td11"><!--l. 61--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 61--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
@ -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" style="vertical-align:baseline;" id="TBL-21-4-"><td style="white-space:wrap; text-align:left;" id="TBL-21-4-1"
class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-21-4-2" class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-21-4-2"
class="td11"><!--l. 62--><p class="noindent" ><span class="td11"><!--l. 62--><p class="noindent" ><span
class="cmbx-12">The user-defined new solver to be employed in the</span> class="cmr-12">The user-defined new solver to be employed in the preconditioner.</span></td></tr></table></div></div>
<span
class="cmbx-12">preconditioner.</span> </td>
</tr></table></div></div>
<!--l. 66--><p class="noindent" ><span <!--l. 66--><p class="noindent" ><span
class="cmbx-12">The other arguments are defined in the way described in Sec.</span><span class="cmr-12">The other arguments are defined in the way described in Sec.</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu11.html#x21-200006.2"><span href="userhtmlsu11.html#x21-200006.2"><span
class="cmbx-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span class="cmr-12">6.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmbx-12">. As an</span> class="cmr-12">. As an example, in the</span>
<span
class="cmbx-12">example, in the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">tests/newslv</span></span></span> <span
class="cmbx-12">code we define a new object of type</span>
<span class="obeylines-h"><span class="verb"><span <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="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 <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html" ><span href="userhtmlse6.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#tailuserhtmlse6.html" ><span href="userhtmlse6.html#tailuserhtmlse6.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse7.html" ><span href="userhtmlse7.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse7.html" ><span href="userhtml.html#userhtmlse7.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlse7.html"></a> id="tailuserhtmlse7.html"></a>
</body></html> </body></html>

@ -11,52 +11,50 @@
</head><body </head><body
> >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse9.html" ><span href="userhtmlse9.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse7.html" ><span href="userhtmlse7.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse7.html#tailuserhtmlse7.html" ><span href="userhtmlse7.html#tailuserhtmlse7.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlse8.html"><span href="#tailuserhtmlse8.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse8.html" ><span href="userhtml.html#userhtmlse8.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <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 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 <!--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 <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="cmtt-12">info</span></span></span><span
class="cmbx-12">;</span> class="cmr-12">; whenever an error condition is</span>
<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 <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 <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 <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 <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 <span
class="cmbx-12">should be printed. These options may be set by using the PSBLAS error</span> class="cmr-12">PSBLAS error handling routines; for further details see the PSBLAS User&#8217;s Guide</span>
<span
class="cmbx-12">handling routines; for further details see the PSBLAS User&#8217;s Guide</span>
<span class="cite"><span <span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span class="cmr-12">15</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
@ -70,22 +68,22 @@ class="cmbx-12">.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse9.html" ><span href="userhtmlse9.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse7.html" ><span href="userhtmlse7.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse7.html#tailuserhtmlse7.html" ><span href="userhtmlse7.html#tailuserhtmlse7.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse8.html" ><span href="userhtml.html#userhtmlse8.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlse8.html"></a> id="tailuserhtmlse8.html"></a>
</body></html> </body></html>

@ -11,34 +11,34 @@
</head><body </head><body
> >
<!--l. 1--><div class="crosslinks"><p class="noindent"><span <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html" ><span href="userhtmlli4.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse8.html#tailuserhtmlse8.html" ><span href="userhtmlse8.html#tailuserhtmlse8.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlse9.html"><span href="#tailuserhtmlse9.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse9.html" ><span href="userhtml.html#userhtmlse9.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h3 class="sectionHead"><span class="titlemark"><span <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 id="x31-35000A"></a><span
class="cmbx-12">License</span></h3> class="cmr-12">License</span></h3>
<!--l. 5--><p class="noindent" ><span <!--l. 5--><p class="noindent" ><span
class="cmbx-12">DA CONTROLLARE E MODIFICARE INCLUDENDO I CREDITS A</span> class="cmbx-12">DA CONTROLLARE E MODIFICARE INCLUDENDO I CREDITS A</span>
<span <span
class="cmbx-12">MLD2P4</span> class="cmbx-12">MLD2P4</span>
<!--l. 7--><p class="indent" > <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 <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 <!--l. 2--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html" ><span href="userhtmlli4.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse8.html#tailuserhtmlse8.html" ><span href="userhtmlse8.html#tailuserhtmlse8.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse9.html" ><span href="userhtmlse9.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtml.html#userhtmlse9.html" ><span href="userhtml.html#userhtmlse9.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 2--><p class="indent" > <a <!--l. 2--><p class="indent" > <a
id="tailuserhtmlse9.html"></a> id="tailuserhtmlse9.html"></a>
</body></html> </body></html>

@ -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> class="cmr-12">vendor version is available for a given platform, the ATLAS software</span>
<span <span
class="cmr-12">(</span><a class="cmr-12">(</span><a
href="math-atlas.sourceforge.net" class="url" ><span href="http://math-atlas.sourceforge.net" ><span
class="cmtt-12">math-atlas.sourceforge.net</span></a><span class="cmr-12">math-atlas.sourceforge.net</span></a><span
class="cmr-12">) may be employed. The reference BLAS</span> class="cmr-12">) may be employed. The reference BLAS from</span>
<span <span
class="cmr-12">from Netlib (</span><a class="cmr-12">Netlib (</span><a
href="www.netlib.org/blas" class="url" ><span href="http://www.netlib.org/blas" ><span
class="cmtt-12">www.netlib.org/blas</span></a><span class="cmr-12">www.netlib.org/blas</span></a><span
class="cmr-12">) are meant to define the standard</span> class="cmr-12">) are meant to define the standard behaviour of</span>
<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 <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 <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 <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 <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 <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 <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 <span
class="cmr-12">correct way. Our advice is first to download the LAPACK tarfile from</span> class="cmr-12">to download the LAPACK tarfile from </span><a
<a href="http://www.netlib.org/lapack" ><span
href="www.netlib.org/lapack" class="url" ><span class="cmr-12">www.netlib.org/lapack</span></a> <span
class="cmtt-12">www.netlib.org/lapack</span></a> <span class="cmr-12">and install it</span>
class="cmr-12">and install it independently of ATLAS. In this</span> <span
class="cmr-12">independently of ATLAS. In this case, you need to modify the OPTS and</span>
<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 <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"> </dd><dt class="description">
<span <span
class="cmbx-12">MPI</span> </dt><dd 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">]</span></span> <span
class="cmr-12">Parallel Sparse BLAS (PSBLAS) is available from</span> class="cmr-12">Parallel Sparse BLAS (PSBLAS) is available from</span>
<a <a
href="github.com/sfilippone/psblas3" class="url" ><span href="https://psctoolkit.github.io/products/psblas/" ><span
class="cmtt-12">github.com/sfilippone/psblas3</span></a> <span class="cmr-12">psctoolkit.github.io/products/psblas/</span></a><span
class="cmr-12">?? </span><span class="cmr-12">; version 3.7.0 (or later) is required.</span>
class="cmbx-12">Mettere tutto sotto psctoolkit</span><span
class="cmr-12">;</span>
<span
class="cmr-12">version 3.5.0 (or later) is required. Indeed, all the prerequisites listed so far</span>
<span <span
class="cmr-12">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 <!--l. 56--><p class="noindent" ><span
class="cmr-12">Please note that the four previous libraries must have Fortran interfaces compatible with</span> class="cmr-12">Please note that the four previous libraries must have Fortran interfaces compatible with</span>
<span <span

@ -11,20 +11,20 @@
</head><body </head><body
> >
<!--l. 43--><div class="crosslinks"><p class="noindent"><span <!--l. 43--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu11.html" ><span href="userhtmlsu11.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu10.html"><span href="#tailuserhtmlsu10.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu10.html" ><span href="userhtmlse6.html#userhtmlsu10.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 id="x20-190006.1"></a><span
class="cmbx-12">Method init</span></h4> class="cmr-12">Method init</span></h4>
<div class="center" <div class="center"
> >
<!--l. 45--><p class="noindent" > <!--l. 45--><p class="noindent" >
@ -32,11 +32,11 @@ class="cmbx-12">Method init</span></h4>
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%init(icontx,ptype,info)</span></span></span></div> class="cmtt-12">&#x00A0;p%init(icontx,ptype,info)</span></span></span></div>
<!--l. 49--><p class="noindent" ><span <!--l. 49--><p class="noindent" ><span
class="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="cmtt-12">p</span></span></span><span
class="cmbx-12">, according to the</span> class="cmr-12">, according to the</span>
<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 <!--l. 53--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-2" class="tabular" <div class="tabular"> <table id="TBL-2" class="tabular"
@ -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="td11"><!--l. 57--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:wrap; text-align:left;" id="TBL-2-2-1" style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:wrap; text-align:left;" id="TBL-2-2-1"
class="td11"><!--l. 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" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-2-2"
class="td11"><!--l. 58--><p class="noindent" ><span 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" 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="td11"><!--l. 59--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">ptype</span></span></span> </td> <td style="white-space:wrap; text-align:left;" id="TBL-2-3-2" class="cmtt-12">ptype</span></span></span> </td> <td style="white-space:wrap; text-align:left;" id="TBL-2-3-2"
class="td11"><!--l. 59--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 59--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">character(len=*),</span><span class="cmtt-12">character(len=*),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span></td> class="cmr-12">.</span></td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:wrap; text-align:left;" id="TBL-2-4-1" style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:wrap; text-align:left;" id="TBL-2-4-1"
class="td11"><!--l. 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" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-4-2"
class="td11"><!--l. 60--><p class="noindent" ><span class="td11"><!--l. 60--><p class="noindent" ><span
class="cmbx-12">The type of preconditioner. Its values are specified in</span> class="cmr-12">The type of preconditioner. Its values are specified in Table</span><span
<span class="cmr-12">&#x00A0;</span><a
class="cmbx-12">Table</span><span
class="cmbx-12">&#x00A0;</span><a
href="userhtmlse5.html#x17-160151"><span href="userhtmlse5.html#x17-160151"><span
class="cmbx-12">1</span><!--tex4ht:ref: tab:precinit --></a><span class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:wrap; text-align:left;" id="TBL-2-5-1" style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:wrap; text-align:left;" id="TBL-2-5-1"
class="td11"><!--l. 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" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-5-2"
class="td11"><!--l. 62--><p class="noindent" ><span 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 </tr><tr
style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:wrap; text-align:left;" id="TBL-2-6-1" style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:wrap; text-align:left;" id="TBL-2-6-1"
class="td11"><!--l. 63--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 63--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
@ -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="td11"><!--l. 63--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:wrap; text-align:left;" id="TBL-2-7-1" style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:wrap; text-align:left;" id="TBL-2-7-1"
class="td11"><!--l. 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" > </td><td style="white-space:wrap; text-align:left;" id="TBL-2-7-2"
class="td11"><!--l. 64--><p class="noindent" ><span class="td11"><!--l. 64--><p class="noindent" ><span
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span> class="cmr-12">for details.</span> </td>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:wrap; text-align:left;" id="TBL-2-8-1" style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:wrap; text-align:left;" id="TBL-2-8-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 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 <!--l. 73--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu11.html" ><span href="userhtmlsu11.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu10.html" ><span href="userhtmlsu10.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu10.html" ><span href="userhtmlse6.html#userhtmlsu10.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 79--><p class="indent" > <a <!--l. 73--><p class="indent" > <a
id="tailuserhtmlsu10.html"></a> id="tailuserhtmlsu10.html"></a>
</body></html> </body></html>

File diff suppressed because it is too large Load Diff

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

@ -10,58 +10,54 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 598--><div class="crosslinks"><p class="noindent"><span <!--l. 582--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu12.html" ><span href="userhtmlsu12.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu13.html"><span href="#tailuserhtmlsu13.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu13.html" ><span href="userhtmlse6.html#userhtmlsu13.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 id="x23-220006.4"></a><span
class="cmbx-12">Method smoothers</span><span class="cmr-12">Method smoothers</span><span
class="cmbx-12">_build</span></h4> class="cmr-12">_build</span></h4>
<div class="center" <div class="center"
> >
<!--l. 601--><p class="noindent" > <!--l. 585--><p class="noindent" >
<!--l. 602--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 586--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])</span></span></span><br /> class="cmtt-12">&#x00A0;p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])</span></span></span><br />
</div> </div>
<!--l. 605--><p class="noindent" ><span <!--l. 589--><p class="noindent" ><span
class="cmbx-12">This method builds the smoothers and the coarsest-level solvers for the</span> class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span>
<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="cmtt-12">p</span></span></span><span
class="cmbx-12">, according to the requirements made</span> class="cmr-12">, according to the requirements made by the user through the methods</span>
<span <span class="obeylines-h"><span class="verb"><span
class="cmbx-12">by the user through the methods </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">init</span></span></span> <span class="cmtt-12">init</span></span></span> <span
class="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="cmtt-12">set</span></span></span><span
class="cmbx-12">, and based on the</span> class="cmr-12">, and based on the aggregation hierarchy produced by a previous call to</span>
<span <span class="obeylines-h"><span class="verb"><span
class="cmbx-12">aggregation hierarchy produced by a previous call to </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">hierarchy_build</span></span></span> <span class="cmtt-12">hierarchy_build</span></span></span> <span
class="cmbx-12">(see</span> class="cmr-12">(see Section</span><span
<span class="cmr-12">&#x00A0;</span><a
class="cmbx-12">Section</span><span
class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu12.html#x22-210006.3"><span href="userhtmlsu12.html#x22-210006.3"><span
class="cmbx-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a><span class="cmr-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
class="cmbx-12">).</span> class="cmr-12">).</span>
<!--l. 612--><p class="noindent" ><span <!--l. 596--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-12" class="tabular" <div class="tabular"> <table id="TBL-12" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -69,135 +65,130 @@ cellspacing="0" cellpadding="0"
id="TBL-12-1"><col id="TBL-12-1"><col
id="TBL-12-2"></colgroup><tr id="TBL-12-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:wrap; text-align:left;" id="TBL-12-1-1" style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:wrap; text-align:left;" id="TBL-12-1-1"
class="td11"><!--l. 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="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="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">spmat_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:wrap; text-align:left;" id="TBL-12-2-1" style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:wrap; text-align:left;" id="TBL-12-2-1"
class="td11"><!--l. 616--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-2-2" class="td11"><!--l. 600--><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="td11"><!--l. 600--><p class="noindent" ><span
class="cmbx-12">The sparse matrix structure containing the local part</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>
<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 <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 <span
class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span class="cmr-12">15</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:wrap; text-align:left;" id="TBL-12-3-1" style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:wrap; text-align:left;" id="TBL-12-3-1"
class="td11"><!--l. 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="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">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:wrap; text-align:left;" id="TBL-12-4-1" style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:wrap; text-align:left;" id="TBL-12-4-1"
class="td11"><!--l. 621--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-4-2" class="td11"><!--l. 605--><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="td11"><!--l. 605--><p class="noindent" ><span
class="cmbx-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><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="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 <span
class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span class="cmr-12">for details </span><span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span class="cmr-12">15</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:wrap; text-align:left;" id="TBL-12-5-1" style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:wrap; text-align:left;" id="TBL-12-5-1"
class="td11"><!--l. 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="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">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:wrap; text-align:left;" id="TBL-12-6-1" style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:wrap; text-align:left;" id="TBL-12-6-1"
class="td11"><!--l. 624--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-6-2" class="td11"><!--l. 608--><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="td11"><!--l. 608--><p class="noindent" ><span
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span> class="cmr-12">for details.</span> </td>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:wrap; text-align:left;" id="TBL-12-7-1" style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:wrap; text-align:left;" id="TBL-12-7-1"
class="td11"><!--l. 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="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="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">_base_sparse_mat),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:wrap; text-align:left;" id="TBL-12-8-1" style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:wrap; text-align:left;" id="TBL-12-8-1"
class="td11"><!--l. 626--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-8-2" class="td11"><!--l. 610--><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="td11"><!--l. 610--><p class="noindent" ><span
class="cmbx-12">The desired dynamic type for internal matrix components;</span> class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<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 <span
class="cmbx-12">on all processes. See the PSBLAS User&#8217;s Guide for details</span> class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
<span class="cite"><span class="cmr-12">[</span><a
class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span class="cmr-12">15</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:wrap; text-align:left;" id="TBL-12-9-1" style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:wrap; text-align:left;" id="TBL-12-9-1"
class="td11"><!--l. 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="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="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">_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:wrap; text-align:left;" id="TBL-12-10-1" style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:wrap; text-align:left;" id="TBL-12-10-1"
class="td11"><!--l. 631--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-10-2" class="td11"><!--l. 615--><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="td11"><!--l. 615--><p class="noindent" ><span
class="cmbx-12">The desired dynamic type for internal vector components;</span> class="cmr-12">The desired dynamic type for internal vector components; this</span>
<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 </tr><tr
style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:wrap; text-align:left;" id="TBL-12-11-1" style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:wrap; text-align:left;" id="TBL-12-11-1"
class="td11"><!--l. 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="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">class(psb_i_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:wrap; text-align:left;" id="TBL-12-12-1" style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:wrap; text-align:left;" id="TBL-12-12-1"
class="td11"><!--l. 634--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-12-2" class="td11"><!--l. 618--><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="td11"><!--l. 618--><p class="noindent" ><span
class="cmbx-12">The desired dynamic type for internal integer vector</span> class="cmr-12">The desired dynamic type for internal integer vector components;</span>
<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 </tr><tr
style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:wrap; text-align:left;" id="TBL-12-13-1" style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:wrap; text-align:left;" id="TBL-12-13-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
@ -207,26 +198,23 @@ class="td11"> </td> </tr></table></div>
<!--l. 624--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
<!--l. 640--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu12.html" ><span href="userhtmlsu12.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span href="userhtmlsu12.html#tailuserhtmlsu12.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu13.html" ><span href="userhtmlsu13.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu13.html" ><span href="userhtmlse6.html#userhtmlsu13.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 640--><p class="indent" > <a <!--l. 624--><p class="indent" > <a
id="tailuserhtmlsu13.html"></a> id="tailuserhtmlsu13.html"></a>
</body></html> </body></html>

@ -10,243 +10,223 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 640--><div class="crosslinks"><p class="noindent"><span <!--l. 624--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu13.html" ><span href="userhtmlsu13.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu14.html"><span href="#tailuserhtmlsu14.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu14.html" ><span href="userhtmlse6.html#userhtmlsu14.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 id="x24-230006.5"></a><span
class="cmbx-12">Method build</span></h4> class="cmr-12">Method build</span></h4>
<div class="center" <div class="center"
> >
<!--l. 642--><p class="noindent" > <!--l. 626--><p class="noindent" >
<!--l. 643--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 627--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%build(a,desc_a,info[,amold,vmold,imold])</span></span></span><br /> class="cmtt-12">&#x00A0;p%build(a,desc_a,info[,amold,vmold,imold])</span></span></span><br />
</div> </div>
<!--l. 646--><p class="noindent" ><span <!--l. 630--><p class="noindent" ><span
class="cmbx-12">This method builds the preconditioner </span><span class="obeylines-h"><span class="verb"><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="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 <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="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="cmtt-12">set</span></span></span> <span
class="cmbx-12">(see Sections</span><span class="cmr-12">(see Sections</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu12.html#x22-210006.3"><span href="userhtmlsu12.html#x22-210006.3"><span
class="cmbx-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a> class="cmr-12">6.3</span><!--tex4ht:ref: sec:hier_bld --></a> <span
<span class="cmr-12">and</span><span
class="cmbx-12">and</span><span class="cmr-12">&#x00A0;</span><a
class="cmbx-12">&#x00A0;</span><a
href="userhtmlsu13.html#x23-220006.4"><span href="userhtmlsu13.html#x23-220006.4"><span
class="cmbx-12">6.4</span><!--tex4ht:ref: sec:smooth_bld --></a> <span class="cmr-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">for multilevel</span>
<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 <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="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="cmtt-12">smoothers_build</span></span></span><span
class="cmbx-12">, whose</span> class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span>
<span
class="cmbx-12">nomenclature would however be somewhat unnatural when dealing with</span>
<span <span
class="cmbx-12">simple one-level preconditioners.</span> class="cmr-12">dealing with simple one-level preconditioners.</span>
<!--l. 656--><p class="noindent" ><span <!--l. 640--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-13" class="tabular" <div class="tabular"> <table id="TBL-13" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
><colgroup id="TBL-13-1g"><col ><colgroup id="TBL-13-1g"><col
id="TBL-13-1"><col id="TBL-13-1"><col
id="TBL-13-2"></colgroup><tr id="TBL-13-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:wrap; text-align:left;" id="TBL-13-1-1" style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:wrap; text-align:left;" id="TBL-13-1-1"
class="td11"><!--l. 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="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="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">spmat_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:wrap; text-align:left;" id="TBL-13-2-1" style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:wrap; text-align:left;" id="TBL-13-2-1"
class="td11"><!--l. 660--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-2-2" class="td11"><!--l. 644--><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="td11"><!--l. 644--><p class="noindent" ><span
class="cmbx-12">The sparse matrix structure containing the local part</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>
<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 <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 <span
class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span class="cmr-12">15</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:wrap; text-align:left;" id="TBL-13-3-1" style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:wrap; text-align:left;" id="TBL-13-3-1"
class="td11"><!--l. 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="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">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:wrap; text-align:left;" id="TBL-13-4-1" style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:wrap; text-align:left;" id="TBL-13-4-1"
class="td11"><!--l. 665--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-4-2" class="td11"><!--l. 649--><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="td11"><!--l. 649--><p class="noindent" ><span
class="cmbx-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><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="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 <span
class="cmbx-12">User&#8217;s Guide for details </span><span class="cite"><span class="cmr-12">for details </span><span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span class="cmr-12">15</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:wrap; text-align:left;" id="TBL-13-5-1" style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:wrap; text-align:left;" id="TBL-13-5-1"
class="td11"><!--l. 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="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">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:wrap; text-align:left;" id="TBL-13-6-1" style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:wrap; text-align:left;" id="TBL-13-6-1"
class="td11"><!--l. 668--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-6-2" class="td11"><!--l. 652--><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="td11"><!--l. 652--><p class="noindent" ><span
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span> class="cmr-12">for details.</span> </td>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:wrap; text-align:left;" id="TBL-13-7-1" style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:wrap; text-align:left;" id="TBL-13-7-1"
class="td11"><!--l. 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="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="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">_base_sparse_mat),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:wrap; text-align:left;" id="TBL-13-8-1" style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:wrap; text-align:left;" id="TBL-13-8-1"
class="td11"><!--l. 670--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-8-2" class="td11"><!--l. 654--><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="td11"><!--l. 654--><p class="noindent" ><span
class="cmbx-12">The desired dynamic type for internal matrix components;</span> class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<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 <span
class="cmbx-12">on all processes. See the PSBLAS User&#8217;s Guide for details</span> class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
<span class="cite"><span class="cmr-12">[</span><a
class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span class="cmr-12">15</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:wrap; text-align:left;" id="TBL-13-9-1" style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:wrap; text-align:left;" id="TBL-13-9-1"
class="td11"><!--l. 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="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="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">_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:wrap; text-align:left;" id="TBL-13-10-1" style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:wrap; text-align:left;" id="TBL-13-10-1"
class="td11"><!--l. 675--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-10-2" class="td11"><!--l. 659--><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="td11"><!--l. 659--><p class="noindent" ><span
class="cmbx-12">The desired dynamic type for internal vector components;</span> class="cmr-12">The desired dynamic type for internal vector components; this</span>
<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 </tr><tr
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:wrap; text-align:left;" id="TBL-13-11-1" style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:wrap; text-align:left;" id="TBL-13-11-1"
class="td11"><!--l. 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="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">class(psb_i_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:wrap; text-align:left;" id="TBL-13-12-1" style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:wrap; text-align:left;" id="TBL-13-12-1"
class="td11"><!--l. 678--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-12-2" class="td11"><!--l. 662--><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="td11"><!--l. 662--><p class="noindent" ><span
class="cmbx-12">The desired dynamic type for internal integer vector</span> class="cmr-12">The desired dynamic type for internal integer vector components;</span>
<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 </tr><tr
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:wrap; text-align:left;" id="TBL-13-13-1" style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:wrap; text-align:left;" id="TBL-13-13-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 683--><p class="indent" > <span <!--l. 667--><p class="noindent" ><span
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span> class="cmr-12">The method can be used to build multilevel preconditioners too.</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. 695--><div class="crosslinks"><p class="noindent"><span <!--l. 672--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu13.html" ><span href="userhtmlsu13.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span href="userhtmlsu13.html#tailuserhtmlsu13.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu14.html" ><span href="userhtmlse6.html#userhtmlsu14.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 695--><p class="indent" > <a <!--l. 672--><p class="indent" > <a
id="tailuserhtmlsu14.html"></a> id="tailuserhtmlsu14.html"></a>
</body></html> </body></html>

@ -10,37 +10,37 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 695--><div class="crosslinks"><p class="noindent"><span <!--l. 672--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu16.html" ><span href="userhtmlsu16.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu15.html"><span href="#tailuserhtmlsu15.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu15.html" ><span href="userhtmlse6.html#userhtmlsu15.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 id="x25-240006.6"></a><span
class="cmbx-12">Method apply</span></h4> class="cmr-12">Method apply</span></h4>
<div class="center" <div class="center"
> >
<!--l. 697--><p class="noindent" > <!--l. 674--><p class="noindent" >
<!--l. 698--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 675--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%apply(x,y,desc_a,info</span><span class="cmtt-12">&#x00A0;p%apply(x,y,desc_a,info</span><span
class="cmtt-12">&#x00A0;[,trans,work])</span></span></span><br /> class="cmtt-12">&#x00A0;[,trans,work])</span></span></span><br />
</div> </div>
<!--l. 701--><p class="noindent" ><span <!--l. 678--><p class="noindent" ><span
class="cmbx-12">This method computes </span><span class="cmr-12">This method computes </span><span
class="cmmi-12">y </span><span class="cmmi-12">y </span><span
class="cmr-12">= </span><span class="cmr-12">= </span><span
class="cmmi-12">op</span><span class="cmmi-12">op</span><span
@ -50,149 +50,138 @@ class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmr-12">) </span><span class="cmr-12">) </span><span
class="cmmi-12">x</span><span class="cmmi-12">x</span><span
class="cmbx-12">, where </span><span class="cmr-12">, where </span><span
class="cmmi-12">B </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 <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="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="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 <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="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 <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="cmtt-12">p%apply</span></span></span> <span
class="cmbx-12">is called within the</span> class="cmr-12">is called within the PSBLAS method </span><span class="obeylines-h"><span class="verb"><span
<span
class="cmbx-12">PSBLAS method </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_krylov</span></span></span> <span class="cmtt-12">psb_krylov</span></span></span> <span
class="cmbx-12">and hence it is completely transparent to the</span> class="cmr-12">and hence it is</span>
<span <span
class="cmbx-12">user.</span> class="cmr-12">completely transparent to the user.</span>
<!--l. 710--><p class="noindent" ><span <!--l. 687--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-14" class="tabular" <div class="tabular"> <table id="TBL-14" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
><colgroup id="TBL-14-1g"><col ><colgroup id="TBL-14-1g"><col
id="TBL-14-1"><col id="TBL-14-1"><col
id="TBL-14-2"></colgroup><tr id="TBL-14-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:wrap; text-align:left;" id="TBL-14-1-1" style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:wrap; text-align:left;" id="TBL-14-1-1"
class="td11"><!--l. 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="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="td11"><!--l. 690--><p class="noindent" ><span
class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><span class="cmtt-12">(</span></span></span><span
class="cmbxti-10x-x-120">kind</span><span class="cmti-12">kind</span><span
class="cmbxti-10x-x-120">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">),</span><span class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span class="cmtt-12">&#x00A0;dimension(:),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:wrap; text-align:left;" id="TBL-14-2-1" style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:wrap; text-align:left;" id="TBL-14-2-1"
class="td11"><!--l. 714--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-2-2" class="td11"><!--l. 691--><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="td11"><!--l. 691--><p class="noindent" ><span
class="cmbx-12">The local part of the vector </span><span class="cmr-12">The local part of the vector </span><span
class="cmmi-12">x</span><span class="cmmi-12">x</span><span
class="cmbx-12">. Note that </span><span class="cmr-12">. Note that </span><span
class="cmbxti-10x-x-120">type</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 <span
class="cmbx-12">and </span><span class="cmr-12">must be chosen according to the real/complex, single/double</span>
class="cmbxti-10x-x-120">kind</span><span
class="cmbxti-10x-x-120">_parameter </span><span
class="cmbx-12">must be chosen according to the</span>
<span <span
class="cmbx-12">real/complex, single/double precision version of MLD2P4</span> class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
<span
class="cmbx-12">under use.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:wrap; text-align:left;" id="TBL-14-3-1" style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:wrap; text-align:left;" id="TBL-14-3-1"
class="td11"><!--l. 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="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="td11"><!--l. 694--><p class="noindent" ><span
class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><span class="cmtt-12">(</span></span></span><span
class="cmbxti-10x-x-120">kind</span><span class="cmti-12">kind</span><span
class="cmbxti-10x-x-120">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">),</span><span class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span class="cmtt-12">&#x00A0;dimension(:),</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:wrap; text-align:left;" id="TBL-14-4-1" style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:wrap; text-align:left;" id="TBL-14-4-1"
class="td11"><!--l. 718--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-4-2" class="td11"><!--l. 695--><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="td11"><!--l. 695--><p class="noindent" ><span
class="cmbx-12">The local part of the vector </span><span class="cmr-12">The local part of the vector </span><span
class="cmmi-12">y</span><span class="cmmi-12">y</span><span
class="cmbx-12">. Note that </span><span class="cmr-12">. Note that </span><span
class="cmbxti-10x-x-120">type</span> class="cmti-12">type </span><span
<span class="cmr-12">and </span><span
class="cmbx-12">and </span><span class="cmti-12">kind</span><span
class="cmbxti-10x-x-120">kind</span><span class="cmti-12">_parameter</span>
class="cmbxti-10x-x-120">_parameter </span><span
class="cmbx-12">must be chosen according to the</span>
<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 <span
class="cmbx-12">under use.</span> </td> class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:wrap; text-align:left;" id="TBL-14-5-1" style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:wrap; text-align:left;" id="TBL-14-5-1"
class="td11"><!--l. 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="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">type(psb_desc_type),</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">&#x00A0;intent(in)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:wrap; text-align:left;" id="TBL-14-6-1" style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:wrap; text-align:left;" id="TBL-14-6-1"
class="td11"><!--l. 722--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-6-2" class="td11"><!--l. 699--><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="td11"><!--l. 699--><p class="noindent" ><span
class="cmbx-12">The communication descriptor associated to the matrix to</span> class="cmr-12">The communication descriptor associated to the matrix to be</span>
<span <span
class="cmbx-12">be preconditioned.</span> </td> class="cmr-12">preconditioned.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:wrap; text-align:left;" id="TBL-14-7-1" style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:wrap; text-align:left;" id="TBL-14-7-1"
class="td11"><!--l. 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="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">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:wrap; text-align:left;" id="TBL-14-8-1" style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:wrap; text-align:left;" id="TBL-14-8-1"
class="td11"><!--l. 725--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-8-2" class="td11"><!--l. 702--><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="td11"><!--l. 702--><p class="noindent" ><span
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span> class="cmr-12">for details.</span> </td>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:wrap; text-align:left;" id="TBL-14-9-1" style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:wrap; text-align:left;" id="TBL-14-9-1"
class="td11"><!--l. 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="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">character(len=1),</span><span
class="cmtt-12">&#x00A0;optional,</span><span class="cmtt-12">&#x00A0;optional,</span><span
class="cmtt-12">&#x00A0;intent(in).</span></span></span> </td> class="cmtt-12">&#x00A0;intent(in).</span></span></span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:wrap; text-align:left;" id="TBL-14-10-1" style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:wrap; text-align:left;" id="TBL-14-10-1"
class="td11"><!--l. 727--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-10-2" class="td11"><!--l. 704--><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="td11"><!--l. 704--><p class="noindent" ><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="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="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="cmmi-12">op</span><span
class="cmr-12">(</span><span class="cmr-12">(</span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
@ -202,12 +191,12 @@ class="cmr-12">) = </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="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="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> class="cmtt-12">&#8217;T&#8217;,&#8217;t&#8217;</span></span></span>
<span <span
class="cmbx-12">then </span><span class="cmr-12">then </span><span
class="cmmi-12">op</span><span class="cmmi-12">op</span><span
class="cmr-12">(</span><span class="cmr-12">(</span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
@ -217,17 +206,16 @@ class="cmr-12">) = </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmmi-8">T</span> </sup> <span class="cmmi-8">T</span> </sup> <span
class="cmbx-12">(transpose of </span><span class="cmr-12">(transpose of </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmr-12">)</span><span class="cmr-12">); if </span><span class="obeylines-h"><span class="verb"><span
class="cmbx-12">; if </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">trans</span></span></span> <span class="cmtt-12">trans</span></span></span> <span
class="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;C&#8217;,&#8217;c&#8217;</span></span></span> class="cmtt-12">&#8217;C&#8217;,&#8217;c&#8217;</span></span></span> <span
class="cmr-12">then</span>
<span <span
class="cmbx-12">then </span><span
class="cmmi-12">op</span><span class="cmmi-12">op</span><span
class="cmr-12">(</span><span class="cmr-12">(</span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
@ -237,85 +225,70 @@ class="cmr-12">) = </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmmi-8">C</span></sup> <span class="cmmi-8">C</span></sup> <span
class="cmbx-12">(conjugate transpose of </span><span class="cmr-12">(conjugate transpose of </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmr-12">)</span><span class="cmr-12">).</span> </td>
class="cmbx-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:wrap; text-align:left;" id="TBL-14-11-1" style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:wrap; text-align:left;" id="TBL-14-11-1"
class="td11"><!--l. 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="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="td11"><!--l. 708--><p class="noindent" ><span
class="cmbxti-10x-x-120">type</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">(</span></span></span><span class="cmtt-12">(</span></span></span><span
class="cmbxti-10x-x-120">kind</span><span class="cmti-12">kind</span><span
class="cmbxti-10x-x-120">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">),</span><span class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span class="cmtt-12">&#x00A0;dimension(:),</span><span
class="cmtt-12">&#x00A0;optional,</span><span class="cmtt-12">&#x00A0;optional,</span><span
class="cmtt-12">&#x00A0;target</span></span></span><span class="cmtt-12">&#x00A0;target</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:wrap; text-align:left;" id="TBL-14-12-1" style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:wrap; text-align:left;" id="TBL-14-12-1"
class="td11"><!--l. 732--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-12-2" class="td11"><!--l. 709--><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="td11"><!--l. 709--><p class="noindent" ><span
class="cmbx-12">Workspace. Its size should be at</span> class="cmr-12">Workspace. Its size should be at least </span><span class="obeylines-h"><span class="verb"><span
<span
class="cmbx-12">least </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">4</span><span class="cmtt-12">4</span><span
class="cmtt-12">&#x00A0;*</span><span class="cmtt-12">&#x00A0;*</span><span
class="cmtt-12">&#x00A0;psb_cd_get_local_</span></span></span> <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="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 <span
class="cmbx-12">User&#8217;s Guide). Note that </span><span class="cmr-12">and </span><span
class="cmbxti-10x-x-120">type </span><span class="cmti-12">kind</span><span
class="cmbx-12">and </span><span class="cmti-12">_parameter </span><span
class="cmbxti-10x-x-120">kind</span><span class="cmr-12">must be chosen according to the real/complex,</span>
class="cmbxti-10x-x-120">_parameter </span><span
class="cmbx-12">must</span>
<span <span
class="cmbx-12">be chosen according to the real/complex, single/double</span> class="cmr-12">single/double precision version of AMG4PSBLAS under use.</span> </td>
<span
class="cmbx-12">precision version of MLD2P4 under use.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:wrap; text-align:left;" id="TBL-14-13-1" style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:wrap; text-align:left;" id="TBL-14-13-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 739--><p class="indent" > <span
class="cmbx-12">For compatibility with the previous versions of MLD2P4, this method</span>
<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 <!--l. 718--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu16.html" ><span href="userhtmlsu16.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span href="userhtmlsu14.html#tailuserhtmlsu14.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu15.html" ><span href="userhtmlse6.html#userhtmlsu15.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 748--><p class="indent" > <a <!--l. 718--><p class="indent" > <a
id="tailuserhtmlsu15.html"></a> id="tailuserhtmlsu15.html"></a>
</body></html> </body></html>

@ -10,39 +10,39 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 748--><div class="crosslinks"><p class="noindent"><span <!--l. 718--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span href="userhtmlsu17.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu16.html"><span href="#tailuserhtmlsu16.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu16.html" ><span href="userhtmlse6.html#userhtmlsu16.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 id="x26-250006.7"></a><span
class="cmbx-12">Method free</span></h4> class="cmr-12">Method free</span></h4>
<div class="center" <div class="center"
> >
<!--l. 750--><p class="noindent" > <!--l. 720--><p class="noindent" >
<!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 721--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%free(p,info)</span></span></span><br /> class="cmtt-12">&#x00A0;p%free(p,info)</span></span></span><br />
</div> </div>
<!--l. 754--><p class="noindent" ><span <!--l. 724--><p class="noindent" ><span
class="cmbx-12">This method deallocates the preconditioner data structure </span><span class="obeylines-h"><span class="verb"><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="cmtt-12">p</span></span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
<!--l. 757--><p class="noindent" ><span <!--l. 727--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-15" class="tabular" <div class="tabular"> <table id="TBL-15" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -50,58 +50,49 @@ cellspacing="0" cellpadding="0"
id="TBL-15-1"><col id="TBL-15-1"><col
id="TBL-15-2"></colgroup><tr id="TBL-15-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:wrap; text-align:left;" id="TBL-15-1-1" style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:wrap; text-align:left;" id="TBL-15-1-1"
class="td11"><!--l. 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="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">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:wrap; text-align:left;" id="TBL-15-2-1" style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:wrap; text-align:left;" id="TBL-15-2-1"
class="td11"><!--l. 761--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-15-2-2" class="td11"><!--l. 731--><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="td11"><!--l. 731--><p class="noindent" ><span
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span 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 <span
class="cmbx-12">for details.</span> </td> class="cmr-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:wrap; text-align:left;" id="TBL-15-3-1" style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:wrap; text-align:left;" id="TBL-15-3-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 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 <!--l. 737--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span href="userhtmlsu17.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span href="userhtmlsu15.html#tailuserhtmlsu15.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu16.html" ><span href="userhtmlsu16.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu16.html" ><span href="userhtmlse6.html#userhtmlsu16.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 775--><p class="indent" > <a <!--l. 737--><p class="indent" > <a
id="tailuserhtmlsu16.html"></a> id="tailuserhtmlsu16.html"></a>
</body></html> </body></html>

@ -10,50 +10,50 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 775--><div class="crosslinks"><p class="noindent"><span <!--l. 737--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu18.html" ><span href="userhtmlsu18.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu16.html" ><span href="userhtmlsu16.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu17.html"><span href="#tailuserhtmlsu17.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu17.html" ><span href="userhtmlse6.html#userhtmlsu17.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 id="x27-260006.8"></a><span
class="cmbx-12">Method descr</span></h4> class="cmr-12">Method descr</span></h4>
<div class="center" <div class="center"
> >
<!--l. 777--><p class="noindent" > <!--l. 739--><p class="noindent" >
<!--l. 778--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 740--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%descr(info,</span><span class="cmtt-12">&#x00A0;p%descr(info,</span><span
class="cmtt-12">&#x00A0;[iout])</span></span></span><br /> class="cmtt-12">&#x00A0;[iout])</span></span></span><br />
</div> </div>
<!--l. 781--><p class="noindent" ><span <!--l. 743--><p class="noindent" ><span
class="cmbx-12">This method prints a description of the preconditioner </span><span class="obeylines-h"><span class="verb"><span class="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="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 <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="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="cmtt-12">smoothers_build</span></span></span><span
class="cmbx-12">,</span> class="cmr-12">, or </span><span class="obeylines-h"><span class="verb"><span
<span
class="cmbx-12">or </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">build</span></span></span><span class="cmtt-12">build</span></span></span><span
class="cmbx-12">, have been called.</span> class="cmr-12">, have</span>
<!--l. 786--><p class="noindent" ><span <span
class="cmr-12">been called.</span>
<!--l. 748--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-16" class="tabular" <div class="tabular"> <table id="TBL-16" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -61,73 +61,60 @@ cellspacing="0" cellpadding="0"
id="TBL-16-1"><col id="TBL-16-1"><col
id="TBL-16-2"></colgroup><tr id="TBL-16-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:wrap; text-align:left;" id="TBL-16-1-1" style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:wrap; text-align:left;" id="TBL-16-1-1"
class="td11"><!--l. 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="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">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:wrap; text-align:left;" id="TBL-16-2-1" style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:wrap; text-align:left;" id="TBL-16-2-1"
class="td11"><!--l. 790--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-2-2" class="td11"><!--l. 752--><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="td11"><!--l. 752--><p class="noindent" ><span
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span> class="cmr-12">for details.</span> </td>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:wrap; text-align:left;" id="TBL-16-3-1" style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:wrap; text-align:left;" id="TBL-16-3-1"
class="td11"><!--l. 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="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">integer,</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:wrap; text-align:left;" id="TBL-16-4-1" style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:wrap; text-align:left;" id="TBL-16-4-1"
class="td11"><!--l. 792--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-4-2" class="td11"><!--l. 754--><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="td11"><!--l. 754--><p class="noindent" ><span
class="cmbx-12">The id of the file where the preconditioner description will</span> class="cmr-12">The id of the file where the preconditioner description will be</span>
<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 </tr><tr
style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:wrap; text-align:left;" id="TBL-16-5-1" style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:wrap; text-align:left;" id="TBL-16-5-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 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 <!--l. 759--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu18.html" ><span href="userhtmlsu18.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu16.html" ><span href="userhtmlsu16.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span href="userhtmlsu16.html#tailuserhtmlsu16.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu17.html" ><span href="userhtmlsu17.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu17.html" ><span href="userhtmlse6.html#userhtmlsu17.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 805--><p class="indent" > <a <!--l. 759--><p class="indent" > <a
id="tailuserhtmlsu17.html"></a> id="tailuserhtmlsu17.html"></a>
</body></html> </body></html>

@ -10,43 +10,43 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 805--><div class="crosslinks"><p class="noindent"><span <!--l. 759--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span href="userhtmlsu17.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu18.html"><span href="#tailuserhtmlsu18.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu18.html" ><span href="userhtmlse6.html#userhtmlsu18.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 id="x28-270006.9"></a><span
class="cmbx-12">Auxiliary Methods</span></h4> class="cmr-12">Auxiliary Methods</span></h4>
<!--l. 806--><p class="noindent" ><span <!--l. 760--><p class="noindent" ><span
class="cmbx-12">Various functionalities are implemented as additional methods of the</span> class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span>
<span <span
class="cmbx-12">preconditioner object.</span> class="cmr-12">object.</span>
<!--l. 809--><p class="noindent" > <!--l. 763--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <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 id="x28-280006.9.1"></a><span
class="cmbx-12">Method: dump</span></h5> class="cmr-12">Method: dump</span></h5>
<div class="center" <div class="center"
> >
<!--l. 811--><p class="noindent" > <!--l. 765--><p class="noindent" >
<!--l. 812--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 766--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])</span></span></span><br /> class="cmtt-12">&#x00A0;p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])</span></span></span><br />
</div> </div>
<!--l. 815--><p class="noindent" ><span <!--l. 769--><p class="noindent" ><span
class="cmbx-12">Dump on file.</span> class="cmr-12">Dump on file.</span>
<!--l. 818--><p class="noindent" ><span <!--l. 772--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-17" class="tabular" <div class="tabular"> <table id="TBL-17" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -54,70 +54,67 @@ cellspacing="0" cellpadding="0"
id="TBL-17-1"><col id="TBL-17-1"><col
id="TBL-17-2"></colgroup><tr id="TBL-17-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:wrap; text-align:left;" id="TBL-17-1-1" style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:wrap; text-align:left;" id="TBL-17-1-1"
class="td11"><!--l. 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="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">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:wrap; text-align:left;" id="TBL-17-2-1" style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:wrap; text-align:left;" id="TBL-17-2-1"
class="td11"><!--l. 822--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-2-2" class="td11"><!--l. 776--><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="td11"><!--l. 776--><p class="noindent" ><span
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span> class="cmr-12">for details.</span> </td>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:wrap; text-align:left;" id="TBL-17-3-1" style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:wrap; text-align:left;" id="TBL-17-3-1"
class="td11"><!--l. 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="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="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">_base_sparse_mat),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:wrap; text-align:left;" id="TBL-17-4-1" style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:wrap; text-align:left;" id="TBL-17-4-1"
class="td11"><!--l. 824--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-4-2" class="td11"><!--l. 778--><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="td11"><!--l. 778--><p class="noindent" ><span
class="cmbx-12">The desired dynamic type for internal matrix components;</span> class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<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 <span
class="cmbx-12">on all processes. See the PSBLAS User&#8217;s Guide for details</span> class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
<span class="cite"><span class="cmr-12">[</span><a
class="cmbx-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span class="cmr-12">15</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:wrap; text-align:left;" id="TBL-17-5-1" style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:wrap; text-align:left;" id="TBL-17-5-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 831--><p class="noindent" > <!--l. 785--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <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 id="x28-290006.9.2"></a><span
class="cmbx-12">Method: clone</span></h5> class="cmr-12">Method: clone</span></h5>
<div class="center" <div class="center"
> >
<!--l. 833--><p class="noindent" > <!--l. 787--><p class="noindent" >
<!--l. 834--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 788--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%clone(pout,info)</span></span></span><br /> class="cmtt-12">&#x00A0;p%clone(pout,info)</span></span></span><br />
</div> </div>
<!--l. 837--><p class="noindent" ><span <!--l. 791--><p class="noindent" ><span
class="cmbx-12">Create a (deep) copy of the preconditioner object.</span> class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
<!--l. 840--><p class="noindent" ><span <!--l. 794--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-18" class="tabular" <div class="tabular"> <table id="TBL-18" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -125,114 +122,108 @@ cellspacing="0" cellpadding="0"
id="TBL-18-1"><col id="TBL-18-1"><col
id="TBL-18-2"></colgroup><tr id="TBL-18-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:wrap; text-align:left;" id="TBL-18-1-1" style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:wrap; text-align:left;" id="TBL-18-1-1"
class="td11"><!--l. 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="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="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">prec_type),</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:wrap; text-align:left;" id="TBL-18-2-1" style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:wrap; text-align:left;" id="TBL-18-2-1"
class="td11"><!--l. 844--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-2-2" class="td11"><!--l. 798--><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="td11"><!--l. 798--><p class="noindent" ><span
class="cmbx-12">The copy of the preconditioner data structure. Note</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 <span
class="cmbx-12">that </span><span class="cmr-12">be chosen according to the real/complex, single/double precision</span>
class="cmbxti-10x-x-120">x </span><span
class="cmbx-12">must be chosen according to the real/complex,</span>
<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 </tr><tr
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:wrap; text-align:left;" id="TBL-18-3-1" style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:wrap; text-align:left;" id="TBL-18-3-1"
class="td11"><!--l. 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="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">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:wrap; text-align:left;" id="TBL-18-4-1" style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:wrap; text-align:left;" id="TBL-18-4-1"
class="td11"><!--l. 848--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-4-2" class="td11"><!--l. 802--><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="td11"><!--l. 802--><p class="noindent" ><span
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span> class="cmr-12">for details.</span> </td>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:wrap; text-align:left;" id="TBL-18-5-1" style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:wrap; text-align:left;" id="TBL-18-5-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 853--><p class="noindent" > <!--l. 807--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <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 id="x28-300006.9.3"></a><span
class="cmbx-12">Method: sizeof</span></h5> class="cmr-12">Method: sizeof</span></h5>
<div class="center" <div class="center"
> >
<!--l. 855--><p class="noindent" > <!--l. 809--><p class="noindent" >
<!--l. 856--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 810--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">sz</span><span class="cmtt-12">sz</span><span
class="cmtt-12">&#x00A0;=</span><span class="cmtt-12">&#x00A0;=</span><span
class="cmtt-12">&#x00A0;</span><span class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">&#x00A0;p%sizeof()</span></span></span><br /> class="cmtt-12">&#x00A0;p%sizeof()</span></span></span><br />
</div> </div>
<!--l. 859--><p class="noindent" ><span <!--l. 813--><p class="noindent" ><span
class="cmbx-12">Return memory footprint in bytes.</span> class="cmr-12">Return memory footprint in bytes.</span>
<!--l. 862--><p class="noindent" > <!--l. 816--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <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 id="x28-310006.9.4"></a><span
class="cmbx-12">Method: allocate</span><span class="cmr-12">Method: allocate</span><span
class="cmbx-12">_wrk</span></h5> class="cmr-12">_wrk</span></h5>
<div class="center" <div class="center"
> >
<!--l. 864--><p class="noindent" > <!--l. 818--><p class="noindent" >
<!--l. 865--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 819--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%allocate_wrk(info[,</span><span class="cmtt-12">&#x00A0;p%allocate_wrk(info[,</span><span
class="cmtt-12">&#x00A0;vmold])</span></span></span><br /> class="cmtt-12">&#x00A0;vmold])</span></span></span><br />
</div> </div>
<!--l. 868--><p class="noindent" ><span <!--l. 822--><p class="noindent" ><span
class="cmbx-12">Allocate internal work vectors. Each application of the preconditioner</span> class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span>
<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 <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 <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 <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 <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 <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 <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 <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 <span
class="cmbx-12">devices, 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">vmold</span></span></span> <span
class="cmbx-12">argument is also necessary to ensure the internal</span>
<span
class="cmbx-12">work vectors are of the appropriate dynamic type to exploit the</span>
<span
class="cmbx-12">accelerator hardware; when allocation occurs internally this is taken</span>
<span
class="cmbx-12">care of based on the dynamic type of the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">x</span></span></span> <span class="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> class="cmtt-12">apply</span></span></span>
<span <span
class="cmbx-12">method.</span> class="cmr-12">method.</span>
<!--l. 884--><p class="noindent" ><span <!--l. 838--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-19" class="tabular" <div class="tabular"> <table id="TBL-19" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -240,60 +231,58 @@ cellspacing="0" cellpadding="0"
id="TBL-19-1"><col id="TBL-19-1"><col
id="TBL-19-2"></colgroup><tr id="TBL-19-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:wrap; text-align:left;" id="TBL-19-1-1" style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:wrap; text-align:left;" id="TBL-19-1-1"
class="td11"><!--l. 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="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">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:wrap; text-align:left;" id="TBL-19-2-1" style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:wrap; text-align:left;" id="TBL-19-2-1"
class="td11"><!--l. 888--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-2-2" class="td11"><!--l. 842--><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="td11"><!--l. 842--><p class="noindent" ><span
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span> class="cmr-12">for details.</span> </td>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:wrap; text-align:left;" id="TBL-19-3-1" style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:wrap; text-align:left;" id="TBL-19-3-1"
class="td11"><!--l. 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="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="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">_base_vect_type),</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">&#x00A0;intent(in),</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;optional</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-19-4-"><td style="white-space:wrap; text-align:left;" id="TBL-19-4-1" style="vertical-align:baseline;" id="TBL-19-4-"><td style="white-space:wrap; text-align:left;" id="TBL-19-4-1"
class="td11"><!--l. 890--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-4-2" class="td11"><!--l. 844--><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="td11"><!--l. 844--><p class="noindent" ><span
class="cmbx-12">The desired dynamic type for internal vector components;</span> class="cmr-12">The desired dynamic type for internal vector components; this</span>
<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 </tr><tr
style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:wrap; text-align:left;" id="TBL-19-5-1" style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:wrap; text-align:left;" id="TBL-19-5-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
<!--l. 896--><p class="noindent" > <!--l. 850--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <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 id="x28-320006.9.5"></a><span
class="cmbx-12">Method: free</span><span class="cmr-12">Method: free</span><span
class="cmbx-12">_wrk</span></h5> class="cmr-12">_wrk</span></h5>
<div class="center" <div class="center"
> >
<!--l. 898--><p class="noindent" > <!--l. 852--><p class="noindent" >
<!--l. 899--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 853--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">call</span><span class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;p%free_wrk(info)</span></span></span><br /> class="cmtt-12">&#x00A0;p%free_wrk(info)</span></span></span><br />
</div> </div>
<!--l. 902--><p class="noindent" ><span <!--l. 856--><p class="noindent" ><span
class="cmbx-12">Deallocate internal work vectors.</span> class="cmr-12">Deallocate internal work vectors.</span>
<!--l. 905--><p class="noindent" ><span <!--l. 859--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-20" class="tabular" <div class="tabular"> <table id="TBL-20" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -301,23 +290,21 @@ cellspacing="0" cellpadding="0"
id="TBL-20-1"><col id="TBL-20-1"><col
id="TBL-20-2"></colgroup><tr id="TBL-20-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:wrap; text-align:left;" id="TBL-20-1-1" style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:wrap; text-align:left;" id="TBL-20-1-1"
class="td11"><!--l. 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="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">integer,</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">&#x00A0;intent(out)</span></span></span><span
class="cmbx-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:wrap; text-align:left;" id="TBL-20-2-1" style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:wrap; text-align:left;" id="TBL-20-2-1"
class="td11"><!--l. 909--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-20-2-2" class="td11"><!--l. 863--><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="td11"><!--l. 863--><p class="noindent" ><span
class="cmbx-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse8.html#x30-340008"><span href="userhtmlse8.html#x30-340008"><span
class="cmbx-12">8</span><!--tex4ht:ref: sec:errors --></a> <span class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmbx-12">for</span> class="cmr-12">for details.</span> </td>
<span
class="cmbx-12">details.</span> </td>
</tr><tr </tr><tr
style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:wrap; text-align:left;" id="TBL-20-3-1" style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:wrap; text-align:left;" id="TBL-20-3-1"
class="td11"> </td> </tr></table></div> class="td11"> </td> </tr></table></div>
@ -331,19 +318,19 @@ class="td11"> </td> </tr></table></div>
<!--l. 4--><div class="crosslinks"><p class="noindent"><span <!--l. 4--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu17.html" ><span href="userhtmlsu17.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span href="userhtmlsu17.html#tailuserhtmlsu17.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu18.html" ><span href="userhtmlsu18.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse6.html#userhtmlsu18.html" ><span href="userhtmlse6.html#userhtmlsu18.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 4--><p class="indent" > <a <!--l. 4--><p class="indent" > <a
id="tailuserhtmlsu18.html"></a> id="tailuserhtmlsu18.html"></a>
</body></html> </body></html>

@ -40,7 +40,7 @@ class="cmr-12">main directory to generate the necessary makefile.</span>
<!--l. 105--><p class="indent" > <span <!--l. 105--><p class="indent" > <span
class="cmbx-12">DA RISCRIVERE</span> class="cmbx-12">DA RISCRIVERE</span>
<!--l. 107--><p class="indent" > <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 ./configure&#x00A0;--with-psblas=PSB-INSTALL-DIR
</div> </div>
<!--l. 110--><p class="nopar" > <span <!--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 <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 <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 <span
class="cmbx-12">be specified with an </span><span class="cmr-12">options may be looked at by issuing the command </span><span class="obeylines-h"><span class="verb"><span
class="cmbxti-10x-x-120">absolute </span><span
class="cmbx-12">path). The full set of options may</span>
<span
class="cmbx-12">be looked at by issuing the command </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">./configure</span><span class="cmtt-12">./configure</span><span
class="cmtt-12">&#x00A0;--help</span></span></span><span class="cmtt-12">&#x00A0;--help</span></span></span><span
class="cmbx-12">, which</span> class="cmr-12">, which</span>
<span <span
class="cmbx-12">produces:</span> class="cmr-12">produces:</span>
@ -243,15 +241,16 @@ class="cmbx-12">produces:</span>
</div> </div>
<!--l. 281--><p class="nopar" > <!--l. 281--><p class="nopar" >
<!--l. 283--><p class="indent" > <span <!--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 <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/ &#x00A0;<br />&#x00A0;--with-umfpackincdir=/usr/include/suitesparse/
</div> </div>
<!--l. 290--><p class="nopar" > <span <!--l. 290--><p class="nopar" > <span
class="cmbx-12">Once the configure script has completed execution, it will have generated</span> class="cmr-12">Once the configure script has completed execution, it will have generated the file</span>
<span <span class="obeylines-h"><span class="verb"><span
class="cmbx-12">the file </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">Make.inc</span></span></span> <span class="cmtt-12">Make.inc</span></span></span> <span
class="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 <span
class="cmbx-12">tree; this file will be copied in the install directory under the name</span> class="cmr-12">copied in the install directory under the name </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">Make.inc.MLD2P4</span></span></span><span class="cmtt-12">Make.inc.MLD2P4</span></span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
<!--l. 296--><p class="indent" > <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 <span
class="cmbx-12">options to the configure script; by default we are looking for the libraries</span> class="cmr-12">the configure script; by default we are looking for the libraries </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">-ldmumps</span><span class="cmtt-12">-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;-lzmumps</span><span
class="cmtt-12">&#x00A0;-lcmumps</span><span class="cmtt-12">&#x00A0;-lcmumps</span><span
class="cmtt-12">&#x00A0;-mumps_common</span><span class="cmtt-12">&#x00A0;-mumps_common</span><span
class="cmtt-12">&#x00A0;-lpord</span></span></span><span class="cmtt-12">&#x00A0;-lpord</span></span></span><span
class="cmbx-12">. MUMPS often</span> class="cmr-12">. MUMPS often uses additional</span>
<span
class="cmbx-12">uses additional packages such as ScaLAPACK, ParMETIS, SCOTCH, as</span>
<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 <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="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 <!--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 make
</div> </div>
<!--l. 307--><p class="nopar" > <span <!--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 <!--l. 312--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu4.html" ><span href="userhtmlsu4.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu2.html" ><span href="userhtmlsu2.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu2.html#tailuserhtmlsu2.html" ><span href="userhtmlsu2.html#tailuserhtmlsu2.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu3.html" ><span href="userhtmlsu3.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu3.html" ><span href="userhtmlse3.html#userhtmlsu3.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 312--><p class="indent" > <a <!--l. 312--><p class="indent" > <a
id="tailuserhtmlsu3.html"></a> id="tailuserhtmlsu3.html"></a>
</body></html> </body></html>

@ -11,60 +11,60 @@
</head><body </head><body
> >
<!--l. 312--><div class="crosslinks"><p class="noindent"><span <!--l. 312--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu5.html" ><span href="userhtmlsu5.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu3.html" ><span href="userhtmlsu3.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu4.html"><span href="#tailuserhtmlsu4.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu4.html" ><span href="userhtmlse3.html#userhtmlsu4.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 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 <!--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 <span
class="cmbx-12">page on</span><br class="cmr-12">on</span><br
class="newline" /> <a class="newline" /> <a
href="https://github.com/psctoolkit/amg4psblas/issues" class="url" ><span href="https://github.com/psctoolkit/amg4psblas/issues" class="url" ><span
class="cmtt-12">https://github.com/psctoolkit/amg4psblas/issues</span></a><br class="cmtt-12">https://github.com/psctoolkit/amg4psblas/issues</span></a><br
class="newline" /> class="newline" />
<!--l. 317--><p class="indent" > <span <!--l. 317--><p class="indent" > <span
class="cmbx-12">To enable us to track the bug, please provide a log from the failing</span> class="cmr-12">To enable us to track the bug, please provide a log from the failing application, the</span>
<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 <span
class="cmbx-12">reproducing the issue.</span> class="cmr-12">issue.</span>
<!--l. 321--><div class="crosslinks"><p class="noindent"><span <!--l. 321--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu5.html" ><span href="userhtmlsu5.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu3.html" ><span href="userhtmlsu3.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span href="userhtmlsu3.html#tailuserhtmlsu3.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu4.html" ><span href="userhtmlsu4.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu4.html" ><span href="userhtmlse3.html#userhtmlsu4.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 321--><p class="indent" > <a <!--l. 321--><p class="indent" > <a
id="tailuserhtmlsu4.html"></a> id="tailuserhtmlsu4.html"></a>
</body></html> </body></html>

@ -11,71 +11,70 @@
</head><body </head><body
> >
<!--l. 321--><div class="crosslinks"><p class="noindent"><span <!--l. 321--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu4.html" ><span href="userhtmlsu4.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu4.html#tailuserhtmlsu4.html" ><span href="userhtmlsu4.html#tailuserhtmlsu4.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu5.html"><span href="#tailuserhtmlsu5.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu5.html" ><span href="userhtmlse3.html#userhtmlsu5.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 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 <!--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="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="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 <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="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="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 <span
class="cmbx-12">follows:</span> class="cmr-12">follows:</span>
<dl class="description"><dt class="description"> <dl class="description"><dt class="description">
<span <span
class="cmtt-12">examples</span> </dt><dd class="cmtt-12">examples</span> </dt><dd
class="description"><span class="description"><span
class="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 <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 <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 <span
class="cmbx-12">preconditioners available in AMG4PSBLAS.</span> class="cmr-12">AMG4PSBLAS.</span>
</dd><dt class="description"> </dd><dt class="description">
<span <span
class="cmtt-12">tests</span> </dt><dd class="cmtt-12">tests</span> </dt><dd
class="description"><span class="description"><span
class="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 <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="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 <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 <!--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="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 <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 <span
class="cmbx-12">format; the </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">programs generate matrices in full parallel mode from the discretization of a sample</span>
class="cmtt-12">pdegen</span></span></span> <span
class="cmbx-12">programs generate matrices in full parallel mode from</span>
<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 <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu4.html" ><span href="userhtmlsu4.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu4.html#tailuserhtmlsu4.html" ><span href="userhtmlsu4.html#tailuserhtmlsu4.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu5.html" ><span href="userhtmlsu5.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu5.html" ><span href="userhtmlse3.html#userhtmlsu5.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlsu5.html"></a> id="tailuserhtmlsu5.html"></a>
</body></html> </body></html>

@ -11,38 +11,35 @@
</head><body </head><body
> >
<!--l. 56--><div class="crosslinks"><p class="noindent"><span <!--l. 56--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu7.html" ><span href="userhtmlsu7.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu6.html"><span href="#tailuserhtmlsu6.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse4.html#userhtmlsu6.html" ><span href="userhtmlse4.html#userhtmlsu6.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 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 <!--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 <span
class="cmbx-12">consider a linear system</span> class="cmr-12">linear system</span>
<table <table
class="equation"><tr><td> class="equation"><tr><td>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml2x.png" alt="Ax = b, src="userhtml2x.png" alt="Ax = b,
" class="math-display" ><a " class="math-display" ><a
id="x14-13001r2"></a></center></td><td class="equation-label"><span id="x14-13001r2"></a></center></td><td class="equation-label"><span
class="cmr-12">(2)</span></td></tr></table> class="cmr-12">(2)</span></td></tr></table>
<!--l. 62--><p class="nopar" > <!--l. 62--><p class="nopar" >
<span <span
class="cmbx-12">where </span><span class="cmr-12">where </span><span
class="cmmi-12">A </span><span class="cmmi-12">A </span><span
class="cmr-12">= (</span><span class="cmr-12">= (</span><span
class="cmmi-12">a</span><sub><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="cmmi-8">n</span><span
class="cmsy-8">&#x00D7;</span><span class="cmsy-8">&#x00D7;</span><span
class="cmmi-8">n</span></sup> <span class="cmmi-8">n</span></sup> <span
class="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 <span
class="cmbx-12">presentation we assume </span><span class="cmr-12">assume </span><span
class="cmmi-12">A </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 <!--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="cmmi-12">A</span><span
class="cmbx-12">,</span> class="cmr-12">,</span>
<span <span
class="cmbx-12">i.e., </span><span class="cmr-12">i.e., &#x03A9; = </span><span
class="cmr-12">&#x03A9; = </span><span
class="cmsy-10x-x-120">{</span><span class="cmsy-10x-x-120">{</span><span
class="cmr-12">1</span><span class="cmr-12">1</span><span
class="cmmi-12">, </span><span class="cmmi-12">, </span><span
@ -73,68 +72,66 @@ class="cmmi-12">,</span><span
class="cmmi-12">&#x2026;</span><span class="cmmi-12">&#x2026;</span><span
class="cmmi-12">,n</span><span class="cmmi-12">,n</span><span
class="cmsy-10x-x-120">}</span><span class="cmsy-10x-x-120">}</span><span
class="cmbx-12">. Any algebraic multilevel preconditioners implemented in</span> class="cmr-12">. Any algebraic multilevel preconditioners implemented in</span>
<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 <span
class="cmbx-12">hierarchy of matrices,</span> class="cmr-12">matrices,</span>
<center class="math-display" > <center class="math-display" >
<img <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> " class="math-display" ></center>
<!--l. 72--><p class="nopar" > <span <!--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="cmmi-12">A</span><span
class="cmbx-12">, without assuming any knowledge</span> class="cmr-12">, without assuming any knowledge of</span>
<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="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="msbm-10x-x-120">&#x211D;</span><sup><span
class="cmmi-8">n</span><sub><span class="cmmi-8">n</span><sub><span
class="cmmi-6">k</span></sub></sup> class="cmmi-6">k</span></sub></sup> <span
class="cmr-12">is</span>
<span <span
class="cmbx-12">is associated with </span><span class="cmr-12">associated with &#x03A9;</span><sup><span
class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">, where </span><span class="cmr-12">, where </span><span
class="cmmi-12">n</span><sub> class="cmmi-12">n</span><sub>
<span <span
class="cmmi-8">k</span></sub> <span class="cmmi-8">k</span></sub> <span
class="cmbx-12">is the size of </span><span class="cmr-12">is the size of &#x03A9;</span><sup><span
class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">. For all </span><span class="cmr-12">. For all </span><span
class="cmmi-12">k &#x003C; nlev</span><span class="cmmi-12">k &#x003C; nlev</span><span
class="cmbx-12">, a</span> class="cmr-12">, a restriction</span>
<span
class="cmbx-12">restriction operator and a prolongation one are built, which connect two</span>
<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="cmmi-12">k </span><span
class="cmbx-12">and </span><span class="cmr-12">and</span>
<span
class="cmmi-12">k </span><span class="cmmi-12">k </span><span
class="cmr-12">+ 1</span><span class="cmr-12">+ 1:</span>
class="cmbx-12">:</span>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml4x.png" alt=" k nk&#x00D7;nk+1 k nk+1&#x00D7;nk src="userhtml4x.png" alt="P k &#x2208; &#x211D;nk&#x00D7;nk+1, Rk &#x2208; &#x211D;nk+1&#x00D7;nk ;
P &#x2208; &#x211D; , R &#x2208; &#x211D; ;
" class="math-display" ></center> " class="math-display" ></center>
<!--l. 82--><p class="nopar" > <span <!--l. 82--><p class="nopar" > <span
class="cmbx-12">the matrix </span><span class="cmr-12">the matrix </span><span
class="cmmi-12">A</span><sup><span class="cmmi-12">A</span><sup><span
class="cmmi-8">k</span><span class="cmmi-8">k</span><span
class="cmr-8">+1</span></sup> <span class="cmr-8">+1</span></sup> <span
class="cmbx-12">is computed by using the previous operators according to</span> class="cmr-12">is computed by using the previous operators according to the</span>
<span <span
class="cmbx-12">the Galerkin approach, i.e.,</span> class="cmr-12">Galerkin approach, i.e.,</span>
<center class="math-display" > <center class="math-display" >
<img <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> " class="math-display" ></center>
<!--l. 87--><p class="nopar" > <span <!--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-12">R</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">= (</span><span class="cmr-12">= (</span><span
@ -142,30 +139,28 @@ class="cmmi-12">P</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">)</span><sup><span class="cmr-12">)</span><sup><span
class="cmmi-8">T</span> </sup> <span class="cmmi-8">T</span> </sup> <span
class="cmbx-12">A smoother</span> class="cmr-12">A smoother with</span>
<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-12">M</span><sup><span
class="cmmi-8">k</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="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 <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 <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="cmmi-12">LU </span><span
class="cmbx-12">factorization means computing and</span> class="cmr-12">factorization means computing and storing the </span><span
<span
class="cmbx-12">storing the </span><span
class="cmmi-12">L </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="cmmi-12">U </span><span
class="cmbx-12">factors). The construction of the hierarchy of AMG</span> class="cmr-12">factors). The</span>
<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 <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" <!--l. 95--><p class="indent" > <hr class="figure"><div class="figure"
> >
@ -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. 118--><p class="indent" > </div><hr class="endfigure">
<!--l. 120--><p class="indent" > <span <!--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 <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 <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="cmmi-12">w </span><span
class="cmr-12">= </span><span class="cmr-12">= </span><span
class="cmmi-12">B</span><sup><span class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmmi-12">v</span><span class="cmmi-12">v</span><span
class="cmbx-12">,</span> class="cmr-12">, where </span><span
<span
class="cmbx-12">where </span><span
class="cmmi-12">B </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 <span
class="cmbx-12">solver </span><span class="cite"><span class="cmr-12">usually within an iteration of a Krylov solver </span><span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XSaad_book"><span href="userhtmlli4.html#XSaad_book"><span
class="cmbx-12">23</span></a><span class="cmr-12">23</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">. An example of such a combination, known as V-cycle, is given in</span> class="cmr-12">. An example of such a combination,</span>
<span <span
class="cmbx-12">Figure</span><span class="cmr-12">known as V-cycle, is given in Figure</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x14-130021"><span href="#x14-130021"><span
class="cmbx-12">1</span><!--tex4ht:ref: fig:application_alg --></a><span class="cmr-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">. In this case, a single iteration of the same</span>
<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 <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 <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 <span
class="cmbx-12">V-cycle and W-cycle</span><span class="cmr-12">standard V-cycle and W-cycle</span><span
class="cmbx-12">&#x00A0;</span><span class="cite"><span class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XBriggs2000"><span href="userhtmlli4.html#XBriggs2000"><span
class="cmbx-12">3</span></a><span class="cmr-12">3</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">, and a version of the K-cycle described</span> class="cmr-12">, and a version of the K-cycle described</span>
<span <span
class="cmbx-12">in</span><span class="cmr-12">in</span><span
class="cmbx-12">&#x00A0;</span><span class="cite"><span class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XNotay2008"><span href="userhtmlli4.html#XNotay2008"><span
class="cmbx-12">22</span></a><span class="cmr-12">22</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
<!--l. 133--><div class="crosslinks"><p class="noindent"><span <!--l. 133--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu7.html" ><span href="userhtmlsu7.html" ><span
class="cmbx-12">next</span></a><span class="cmr-12">next</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu6.html" ><span href="userhtmlsu6.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse4.html#userhtmlsu6.html" ><span href="userhtmlse4.html#userhtmlsu6.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 133--><p class="indent" > <a <!--l. 133--><p class="indent" > <a
id="tailuserhtmlsu6.html"></a> id="tailuserhtmlsu6.html"></a>
</body></html> </body></html>

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

@ -11,73 +11,69 @@
</head><body </head><body
> >
<!--l. 216--><div class="crosslinks"><p class="noindent"><span <!--l. 216--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu7.html" ><span href="userhtmlsu7.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="#tailuserhtmlsu8.html"><span href="#tailuserhtmlsu8.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse4.html#userhtmlsu8.html" ><span href="userhtmlse4.html#userhtmlsu8.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 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 <!--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 <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 <span
class="cmbx-12">Gauss-Seidel methods, and the additive Schwarz (AS) ones (see, e.g.,</span> class="cmr-12">Schwarz (AS) ones (see, e.g., </span><span class="cite"><span
<span class="cite"><span class="cmr-12">[</span><a
class="cmbx-12">[</span><a
href="userhtmlli4.html#XSaad_book"><span href="userhtmlli4.html#XSaad_book"><span
class="cmbx-12">23</span></a><span class="cmr-12">23</span></a><span
class="cmbx-12">,</span><span class="cmr-12">,</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlli4.html#Xdd2_96"><span href="userhtmlli4.html#Xdd2_96"><span
class="cmbx-12">24</span></a><span class="cmr-12">24</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">).</span> class="cmr-12">).</span>
<!--l. 222--><p class="indent" > <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 <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 <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 <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 <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 <span
class="cmbx-12">the beginning of the current iteration.</span> class="cmr-12">iteration.</span>
<!--l. 229--><p class="indent" > <span <!--l. 229--><p class="indent" > <span
class="cmbx-12">In the AS methods, the index space </span><span class="cmr-12">In the AS methods, the index space &#x03A9;</span><sup><span
class="cmr-12">&#x03A9;</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmbx-12">is divided into </span><span class="cmr-12">is divided into </span><span
class="cmmi-12">m</span><sub> class="cmmi-12">m</span><sub>
<span <span
class="cmmi-8">k</span></sub> <span class="cmmi-8">k</span></sub> <span
class="cmbx-12">subsets </span><span class="cmr-12">subsets &#x03A9;</span><sub><span
class="cmr-12">&#x03A9;</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmbx-12">of</span> class="cmr-12">of</span>
<span <span
class="cmbx-12">size </span><span class="cmr-12">size </span><span
class="cmmi-12">n</span><sub><span class="cmmi-12">n</span><sub><span
class="cmmi-8">k,i</span></sub><span class="cmmi-8">k,i</span></sub><span
class="cmbx-12">, possibly overlapping. For each </span><span class="cmr-12">, possibly overlapping. For each </span><span
class="cmmi-12">i </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 <span
class="cmbx-12">operator </span><span
class="cmmi-12">R</span><sub><span class="cmmi-12">R</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
@ -88,27 +84,25 @@ class="cmmi-6">k,i</span></sub><span
class="cmsy-8">&#x00D7;</span><span class="cmsy-8">&#x00D7;</span><span
class="cmmi-8">n</span><sub><span class="cmmi-8">n</span><sub><span
class="cmmi-6">k</span></sub></sup> <span class="cmmi-6">k</span></sub></sup> <span
class="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-12">x</span><sup><span
class="cmmi-8">k</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> class="cmmi-12">x</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmbx-12">made of the</span> class="cmr-12">made of the components of</span>
<span <span
class="cmbx-12">components of </span><span
class="cmmi-12">x</span><sup><span class="cmmi-12">x</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmbx-12">with indices in </span><span class="cmr-12">with indices in &#x03A9;</span><sub>
class="cmr-12">&#x03A9;</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">, and the prolongation operator</span> class="cmr-12">, and the prolongation operator </span><span
class="cmmi-12">P</span><sub>
<span <span
class="cmmi-12">P</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">= (</span><span class="cmr-12">= (</span><span
@ -118,9 +112,10 @@ class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmr-12">)</span><sup><span class="cmr-12">)</span><sup><span
class="cmmi-8">T</span> </sup><span class="cmmi-8">T</span> </sup><span
class="cmbx-12">. These operators are then used to build </span><span class="cmr-12">. These</span>
class="cmmi-12">A</span><sub>
<span <span
class="cmr-12">operators are then used to build </span><span
class="cmmi-12">A</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">= </span><span class="cmr-12">= </span><span
@ -134,41 +129,39 @@ class="cmmi-12">P</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">, which is</span> class="cmr-12">, which is the restriction of</span>
<span <span
class="cmbx-12">the restriction of </span><span
class="cmmi-12">A</span><sup><span class="cmmi-12">A</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmbx-12">to the index space </span><span class="cmr-12">to the index space &#x03A9;</span><sub>
class="cmr-12">&#x03A9;</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">. The classical AS preconditioner</span> class="cmr-12">. The classical AS preconditioner </span><span
class="cmmi-12">M</span><sub>
<span <span
class="cmmi-12">M</span><sub><span
class="cmmi-8">AS</span></sub><sup><span class="cmmi-8">AS</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmbx-12">is defined as</span> class="cmr-12">is defined</span>
<span
class="cmr-12">as</span>
<center class="math-display" > <center class="math-display" >
<img <img
src="userhtml18x.png" alt=" k -1 m&#x2211;k k k -1 k src="userhtml18x.png" alt=" m&#x2211;k
(M AS) = Pi (A i) R i, (M AkS )-1 = Pki (Aki)-1Rki,
i=1 i=1
" class="math-display" ></center> " class="math-display" ></center>
<!--l. 241--><p class="nopar" > <span <!--l. 241--><p class="nopar" > <span
class="cmbx-12">where </span><span class="cmr-12">where </span><span
class="cmmi-12">A</span><sub><span class="cmmi-12">A</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="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 <span
class="cmbx-12">inverse of </span><span
class="cmmi-12">A</span><sub><span class="cmmi-12">A</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmbx-12">is usually considered instead of </span><span class="cmr-12">is usually considered instead of (</span><span
class="cmr-12">(</span><span
class="cmmi-12">A</span><sub> class="cmmi-12">A</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
@ -176,48 +169,47 @@ class="cmmi-8">k</span></sup><span
class="cmr-12">)</span><sup><span class="cmr-12">)</span><sup><span
class="cmsy-8">-</span><span class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmbx-12">. The setup of </span><span class="cmr-12">. The setup of </span><span
class="cmmi-12">M</span><sub> class="cmmi-12">M</span><sub>
<span <span
class="cmmi-8">AS</span></sub><sup><span class="cmmi-8">AS</span></sub><sup><span
class="cmmi-8">k</span></sup> class="cmmi-8">k</span></sup> <span
class="cmr-12">during the multilevel</span>
<span <span
class="cmbx-12">during the multilevel build phase involves</span> class="cmr-12">build phase involves</span>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"><span <li class="itemize"><span
class="cmbx-12">the definition of the index subspaces </span><span class="cmr-12">the definition of the index subspaces &#x03A9;</span><sub><span
class="cmr-12">&#x03A9;</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmbx-12">and of the corresponding</span> class="cmr-12">and of the corresponding operators</span>
<span <span
class="cmbx-12">operators </span><span
class="cmmi-12">R</span><sub><span class="cmmi-12">R</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmbx-12">(and </span><span class="cmr-12">(and </span><span
class="cmmi-12">P</span><sub> class="cmmi-12">P</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">);</span> class="cmr-12">);</span>
</li> </li>
<li class="itemize"><span <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-12">A</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">;</span> class="cmr-12">;</span>
</li> </li>
<li class="itemize"><span <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 <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 <!--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-12">z</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">= </span><span class="cmr-12">= </span><span
@ -227,27 +219,27 @@ class="cmmi-8">AS</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmmi-12">w</span><sup><span class="cmmi-12">w</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">, with </span><span class="cmr-12">, with </span><span
class="cmmi-12">w</span><sup><span class="cmmi-12">w</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmsy-10x-x-120">&#x2208; </span><span class="cmsy-10x-x-120">&#x2208; </span><span
class="msbm-10x-x-120">&#x211D;</span><sup><span class="msbm-10x-x-120">&#x211D;</span><sup><span
class="cmmi-8">n</span><sub><span class="cmmi-8">n</span><sub><span
class="cmmi-6">k</span></sub></sup><span class="cmmi-6">k</span></sub></sup><span
class="cmbx-12">, during the multilevel</span> class="cmr-12">, during the multilevel application</span>
<span <span
class="cmbx-12">application phase, requires</span> class="cmr-12">phase, requires</span>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"><span <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-12">w</span><sup><span
class="cmmi-8">k</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="msbm-10x-x-120">&#x211D;</span><sup><span
class="cmmi-8">n</span><sub><span class="cmmi-8">n</span><sub><span
class="cmmi-6">k,i</span></sub></sup><span class="cmmi-6">k,i</span></sub></sup><span
class="cmbx-12">, i.e.</span><span class="cmr-12">, i.e.</span><span
class="cmbx-12">&#x00A0;</span><span class="cmr-12">&#x00A0;</span><span
class="cmmi-12">w</span><sub> class="cmmi-12">w</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
@ -259,10 +251,10 @@ class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmmi-12">w</span><sup><span class="cmmi-12">w</span><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">;</span> class="cmr-12">;</span>
</li> </li>
<li class="itemize"><span <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-12">z</span><sub><span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
@ -278,11 +270,11 @@ class="cmmi-12">w</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">;</span> class="cmr-12">;</span>
</li> </li>
<li class="itemize"><span <li class="itemize"><span
class="cmbx-12">the prolongation and the sum of the previous vectors, i.e.</span><span class="cmr-12">the prolongation and the sum of the previous vectors, i.e.</span><span
class="cmbx-12">&#x00A0;</span><span class="cmr-12">&#x00A0;</span><span
class="cmmi-12">z</span><sup><span class="cmmi-12">z</span><sup><span
class="cmmi-8">k</span></sup> <span class="cmmi-8">k</span></sup> <span
class="cmr-12">=</span> class="cmr-12">=</span>
@ -301,47 +293,43 @@ class="cmmi-12">z</span><sub>
<span <span
class="cmmi-8">i</span></sub><sup><span class="cmmi-8">i</span></sub><sup><span
class="cmmi-8">k</span></sup><span class="cmmi-8">k</span></sup><span
class="cmbx-12">.</span></li></ul> class="cmr-12">.</span></li></ul>
<!--l. 262--><p class="noindent" ><span <!--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 <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 <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 <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 <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 <span
class="cmbx-12">computers, and is therefore the most widely used among the AS</span> class="cmr-12">preconditioners</span><span
<span class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmbx-12">preconditioners</span><span class="cmr-12">[</span><a
class="cmbx-12">&#x00A0;</span><span class="cite"><span
class="cmbx-12">[</span><a
href="userhtmlli4.html#XCAI_SARKIS"><span href="userhtmlli4.html#XCAI_SARKIS"><span
class="cmbx-12">6</span></a><span class="cmr-12">6</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
<!--l. 270--><p class="indent" > <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 <span
class="cmbx-12">the third-party libraries reported in Section</span><span class="cmr-12">libraries reported in Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu2.html#x9-80003.2"><span href="userhtmlsu2.html#x9-80003.2"><span
class="cmbx-12">3.2</span><!--tex4ht:ref: sec:third-party --></a><span class="cmr-12">3.2</span><!--tex4ht:ref: sec:third-party --></a><span
class="cmbx-12">, can be applied as</span> class="cmr-12">, can be applied as coarsest-level solvers by</span>
<span
class="cmbx-12">coarsest-level solvers by MLD2P4. Native inexact solvers based on</span>
<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 <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 <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 <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 <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 <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu7.html" ><span href="userhtmlsu7.html" ><span
class="cmbx-12">prev</span></a><span class="cmr-12">prev</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span
class="cmbx-12">prev-tail</span></a><span class="cmr-12">prev-tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlsu8.html" ><span href="userhtmlsu8.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse4.html#userhtmlsu8.html" ><span href="userhtmlse4.html#userhtmlsu8.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlsu8.html"></a> id="tailuserhtmlsu8.html"></a>
</body></html> </body></html>

@ -11,105 +11,103 @@
</head><body </head><body
> >
<!--l. 109--><div class="crosslinks"><p class="noindent"><span <!--l. 109--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="#tailuserhtmlsu9.html"><span href="#tailuserhtmlsu9.html"><span
class="cmbx-12">tail</span></a><span class="cmr-12">tail</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu9.html" ><span href="userhtmlse5.html#userhtmlsu9.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<h4 class="subsectionHead"><span class="titlemark"><span <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 id="x18-170005.1"></a><span
class="cmbx-12">Examples</span></h4> class="cmr-12">Examples</span></h4>
<!--l. 111--><p class="noindent" ><span <!--l. 111--><p class="noindent" ><span
class="cmbx-12">The code reported in Figure</span><span class="cmr-12">The code reported in Figure</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x18-170012"><span href="#x18-170012"><span
class="cmbx-12">2</span><!--tex4ht:ref: fig:ex1 --></a> <span class="cmr-12">2</span><!--tex4ht:ref: fig:ex1 --></a> <span
class="cmbx-12">shows how to set and apply the default</span> class="cmr-12">shows how to set and apply the default multilevel</span>
<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 <span
class="cmbx-12">AMG4PSBLAS (see Table</span><span class="cmr-12">(see Table</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse5.html#x17-160151"><span href="userhtmlse5.html#x17-160151"><span
class="cmbx-12">1</span><!--tex4ht:ref: tab:precinit --></a><span class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmbx-12">). This preconditioner is chosen by simply</span> class="cmr-12">). This preconditioner is chosen by simply specifying </span><span class="obeylines-h"><span class="verb"><span
<span
class="cmbx-12">specifying </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">&#8217;ML&#8217;</span></span></span> <span class="cmtt-12">&#8217;ML&#8217;</span></span></span> <span
class="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="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="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 <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 <span
class="cmbx-12">matrix of the system to be solved is assumed to be positive definite). As</span> class="cmr-12">solved is assumed to be positive definite). As previously observed, the modules</span>
<span <span class="obeylines-h"><span class="verb"><span
class="cmbx-12">previously observed, the modules </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_base_mod</span></span></span><span class="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="cmtt-12">amg_prec_mod</span></span></span> <span
class="cmbx-12">and</span> class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_krylov_mod</span></span></span> <span class="cmtt-12">psb_krylov_mod</span></span></span> <span
class="cmbx-12">must be used by the example program.</span> class="cmr-12">must be used by the example</span>
<!--l. 121--><p class="indent" > <span
class="cmbx-12">The part of the code concerning the reading and assembling of the</span>
<span <span
class="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 <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 <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 <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 <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="cmtt-12">amg_dexample_ml.f90</span></span></span><span
class="cmbx-12">, in the directory</span> class="cmr-12">, in the</span>
<span class="obeylines-h"><span class="verb"><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="cmtt-12">examples/fileread</span></span></span> <span
class="cmbx-12">of the AMG4PSBLAS implementation (see Section</span><span class="cmr-12">of the AMG4PSBLAS implementation (see</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>
<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 <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">examples/fileread/runs</span></span></span><span class="cmtt-12">examples/fileread/runs</span></span></span><span
class="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 <span
class="cmbx-12">the PSBLAS User&#8217;s Guide</span><span class="cmr-12">PSBLAS User&#8217;s Guide</span><span
class="cmbx-12">&#x00A0;</span><span class="cite"><span class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli4.html#XPSBLASGUIDE"><span href="userhtmlli4.html#XPSBLASGUIDE"><span
class="cmbx-12">15</span></a><span class="cmr-12">15</span></a><span
class="cmbx-12">]</span></span><span class="cmr-12">]</span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
<!--l. 133--><p class="indent" > <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>
<span <span
class="cmbx-12">versions are obtained with straightforward modifications of the previous</span> class="cmr-12">precision and the complex, single and double precision, versions are obtained</span>
<span <span
class="cmbx-12">example (see Section</span><span class="cmr-12">with straightforward modifications of the previous example (see Section</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse6.html#x19-180006"><span href="userhtmlse6.html#x19-180006"><span
class="cmbx-12">6</span><!--tex4ht:ref: sec:userinterface --></a> <span class="cmr-12">6</span><!--tex4ht:ref: sec:userinterface --></a> <span
class="cmbx-12">for details). If these versions are installed, the</span> class="cmr-12">for</span>
<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="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" <!--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. 201--><p class="indent" > </div><hr class="endfigure">
<!--l. 203--><p class="indent" > <span <!--l. 203--><p class="indent" > <span
class="cmbx-12">Different versions of the multilevel preconditioner can be obtained by</span> class="cmr-12">Different versions of the multilevel preconditioner can be obtained by changing the</span>
<span
class="cmbx-12">changing the default values of the preconditioner parameters. The code</span>
<span <span
class="cmbx-12">reported in Figure</span><span class="cmr-12">default values of the preconditioner parameters. The code reported in Figure</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x18-170023"><span href="#x18-170023"><span
class="cmbx-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span class="cmr-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">shows</span>
<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 <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 <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 <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 <span
class="cmbx-12">and set by</span><span class="cmr-12">by</span><span
class="cmbx-12">&#x00A0;</span><span class="obeylines-h"><span class="verb"><span class="cmr-12">&#x00A0;</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">P%init</span></span></span><span class="cmtt-12">P%init</span></span></span><span
class="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 <span
class="cmbx-12">processes. Figure</span><span class="cmr-12">the coarsest-level matrix is distributed among the processes. Figure</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x18-170034"><span href="#x18-170034"><span
class="cmbx-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span class="cmr-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">shows how to set</span>
<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 <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 <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 <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 <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 <span
class="cmbx-12">shown in Figures</span><span class="cmr-12">Figures</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x18-170023"><span href="#x18-170023"><span
class="cmbx-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span class="cmr-12">3</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmbx-12">and </span><a class="cmr-12">and </span><a
href="#x18-170034"><span href="#x18-170034"><span
class="cmbx-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span class="cmr-12">4</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmbx-12">are included in the example program file</span> class="cmr-12">are included in the example program file </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span class="cmtt-12">amg_dexample_ml.f90</span></span></span>
class="cmtt-12">amg_dexample_ml.f90</span></span></span> <span <span
class="cmbx-12">too.</span> class="cmr-12">too.</span>
<!--l. 227--><p class="indent" > <span <!--l. 227--><p class="indent" > <span
class="cmbx-12">Finally, Figure</span><span class="cmr-12">Finally, Figure</span><span
class="cmbx-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x18-170045"><span href="#x18-170045"><span
class="cmbx-12">5</span><!--tex4ht:ref: fig:ex4 --></a> <span class="cmr-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">shows the setup of a one-level additive Schwarz preconditioner,</span>
<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 <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 <span
class="cmbx-12">the preconditione in nonsymmetric. The corresponding example program is</span> class="cmr-12">nonsymmetric. The corresponding example program is available in the file</span>
<span <span class="obeylines-h"><span class="verb"><span
class="cmbx-12">available in the file </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_1lev.f90</span></span></span><span class="cmtt-12">amg_dexample_1lev.f90</span></span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
<!--l. 234--><p class="indent" > <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 <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 <span
class="cmbx-12">Dirichlet boundary conditions are also available in the directory</span> class="cmr-12">conditions are also available in the directory </span><span class="obeylines-h"><span class="verb"><span
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">examples/pdegen</span></span></span><span class="cmtt-12">examples/pdegen</span></span></span><span
class="cmbx-12">.</span> class="cmr-12">.</span>
<!--l. 238--><p class="indent" > <hr class="figure"><div class="figure" <!--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 <!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmbx-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu9.html" ><span href="userhtmlsu9.html" ><span
class="cmbx-12">front</span></a><span class="cmr-12">front</span></a><span
class="cmbx-12">] [</span><a class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu9.html" ><span href="userhtmlse5.html#userhtmlsu9.html" ><span
class="cmbx-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmbx-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 1--><p class="indent" > <a <!--l. 1--><p class="indent" > <a
id="tailuserhtmlsu9.html"></a> id="tailuserhtmlsu9.html"></a>
</body></html> </body></html>

Loading…
Cancel
Save