Full highlighting and code-of-conduct

documentation
Cirdans-Home 4 years ago
parent 7af511a218
commit 8b9a6c5f9a

Binary file not shown.

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 100--><p class="noindent" ><span <!--l. 105--><p class="noindent" ><span
class="cmbx-12x-x-144">MLD2P4</span><br class="cmbx-12x-x-144">MLD2P4</span><br
class="newline" /> <span class="newline" /> <span
class="cmbx-12x-x-144">User&#8217;s and Reference Guide</span><br class="cmbx-12x-x-144">User&#8217;s and Reference Guide</span><br

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 100--><p class="noindent" ><span <!--l. 105--><p class="noindent" ><span
class="cmbx-12x-x-144">MLD2P4</span><br class="cmbx-12x-x-144">MLD2P4</span><br
class="newline" /> <span class="newline" /> <span
class="cmbx-12x-x-144">User&#8217;s and Reference Guide</span><br class="cmbx-12x-x-144">User&#8217;s and Reference Guide</span><br

@ -147,7 +147,7 @@ class="cmr-12">of AMG4PSBLAS.</span>
<!--l. 130--><div class="crosslinks"><p class="noindent"><span <!--l. 135--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlli2.html" ><span href="userhtmlli2.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -158,6 +158,6 @@ class="cmr-12">] [</span><a
href="userhtml.html#userhtmlli1.html" ><span href="userhtml.html#userhtmlli1.html" ><span
class="cmr-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 130--><p class="indent" > <a <!--l. 135--><p class="indent" > <a
id="tailuserhtmlli1.html"></a> id="tailuserhtmlli1.html"></a>
</body></html> </body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 130--><div class="crosslinks"><p class="noindent"><span <!--l. 135--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse1.html" ><span href="userhtmlse1.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span

@ -659,7 +659,7 @@ class="cmr-12">Transactions on Mathematical Software, 44, (2018) 39:1&#8211;39:2
<!--l. 152--><div class="crosslinks"><p class="noindent"><span <!--l. 157--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlse8.html" ><span href="userhtmlse8.html" ><span
class="cmr-12">prev</span></a><span class="cmr-12">prev</span></a><span
@ -673,6 +673,6 @@ class="cmr-12">] [</span><a
href="userhtml.html#userhtmlli4.html" ><span href="userhtml.html#userhtmlli4.html" ><span
class="cmr-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 152--><p class="indent" > <a <!--l. 157--><p class="indent" > <a
id="tailuserhtmlli4.html"></a> id="tailuserhtmlli4.html"></a>
</body></html> </body></html>

@ -77,8 +77,9 @@ class="small-caps">d</span> <span
class="small-caps">o</span><span class="small-caps">o</span><span
class="small-caps">n</span> PSBLAS</span> class="small-caps">n</span> PSBLAS</span>
<span <span
class="cmcsc-10x-x-120">(AMG4PSBLAS) </span><span class="cmr-12">(</span><span
class="cmr-12">provides parallel Algebraic MultiGrid (AMG) preconditioners (see,</span> class="cmcsc-10x-x-120">AMG4PSBLAS</span><span
class="cmr-12">) provides parallel Algebraic MultiGrid (AMG) preconditioners (see,</span>
<span <span
class="cmr-12">e.g., </span><span class="cite"><span class="cmr-12">e.g., </span><span class="cite"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a

@ -84,18 +84,18 @@ class="cmti-12">Allocate and initialize the preconditioner data structure,
<span <span
class="cmti-12">preconditioner type chosen by the user</span><span class="cmti-12">preconditioner type chosen by the user</span><span
class="cmr-12">. This is performed by the routine</span> class="cmr-12">. This is performed by the routine</span>
<span class="obeylines-h"><span class="verb"><span <span class="lstinline"></span><span
class="cmtt-12">init</span></span></span><span class="cmtt-12">init</span><span
class="cmr-12">, which also sets defaults for each preconditioner type selected by</span> class="cmr-12">, which also sets defaults for each preconditioner type selected by</span>
<span <span
class="cmr-12">the user. The preconditioner types and the defaults associated with them</span> class="cmr-12">the user. The preconditioner types and the defaults associated with them</span>
<span <span
class="cmr-12">are given in Table</span><span class="cmr-12">are given in Table</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x13-120151"><span href="#x13-12015r1"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">, where the strings used by </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">, where the strings used by </span><span class="lstinline"></span><span
class="cmtt-12">init</span></span></span> <span class="cmtt-12">init</span> <span
class="cmr-12">to identify the</span> class="cmr-12">to identify the</span>
<span <span
class="cmr-12">preconditioner types are also given. Note that these strings are valid also if</span> class="cmr-12">preconditioner types are also given. Note that these strings are valid also if</span>
@ -107,16 +107,16 @@ class="cmr-12">uppercase letters are substituted by corresponding lowercase ones
class="cmti-12">Modify the selected preconditioner type, by properly setting preconditioner</span> class="cmti-12">Modify the selected preconditioner type, by properly setting preconditioner</span>
<span <span
class="cmti-12">parameters. </span><span class="cmti-12">parameters. </span><span
class="cmr-12">This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">This is performed by the routine </span><span class="lstinline"></span><span
class="cmtt-12">set</span></span></span><span class="cmtt-12">set</span><span
class="cmr-12">. This routine must be</span> class="cmr-12">. This routine must be</span>
<span <span
class="cmr-12">called only if the user wants to modify the default values of the parameters</span> class="cmr-12">called only if the user wants to modify the default values of the parameters</span>
<span <span
class="cmr-12">associated with the selected preconditioner type, to obtain a variant of that</span> class="cmr-12">associated with the selected preconditioner type, to obtain a variant of that</span>
<span <span
class="cmr-12">preconditioner. Examples of use of </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">preconditioner. Examples of use of </span><span class="lstinline"></span><span
class="cmtt-12">set</span></span></span> <span class="cmtt-12">set</span> <span
class="cmr-12">are given in Section</span><span class="cmr-12">are given in Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu6.html#x14-130004.1"><span href="userhtmlsu6.html#x14-130004.1"><span
@ -131,10 +131,10 @@ href="userhtmlse5.html#x15-140005"><span
class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a><span class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a><span
class="cmr-12">, Tables</span><span class="cmr-12">, Tables</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu8.html#x17-160092"><span href="userhtmlsu8.html#x17-16009r2"><span
class="cmr-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span class="cmr-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span
class="cmr-12">-</span><a class="cmr-12">-</span><a
href="userhtmlsu8.html#x17-160158"><span href="userhtmlsu8.html#x17-16015r8"><span
class="cmr-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="cmr-12">.</span> class="cmr-12">.</span>
</li> </li>
@ -153,8 +153,8 @@ class="cmr-12">This is performed by the</span>
<span <span
class="cmr-12">routine </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">routine </span><span class="lstinline"></span><span
class="cmtt-12">hierarchy_build</span></span></span><span class="cmtt-12">hierarchy_build</span><span
class="cmr-12">.</span> class="cmr-12">.</span>
</li> </li>
<li <li
@ -162,14 +162,14 @@ class="cmr-12">.</span>
class="cmti-12">Build the preconditioner for a given matrix. </span><span class="cmti-12">Build the preconditioner for a given matrix. </span><span
class="cmr-12">This is performed by the</span> class="cmr-12">This is performed by the</span>
<span <span
class="cmr-12">routine </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">routine </span><span class="lstinline"></span><span
class="cmtt-12">smoothers_build</span></span></span><span class="cmtt-12">smoothers_build</span><span
class="cmr-12">.</span></li></ol> class="cmr-12">.</span></li></ol>
<!--l. 41--><p class="noindent" ><span <!--l. 41--><p class="noindent" ><span
class="cmr-12">If the selected preconditioner is one-level, it is built in a single step, performed by</span> class="cmr-12">If the selected preconditioner is one-level, it is built in a single step, performed by</span>
<span <span
class="cmr-12">the routine </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">the routine </span><span class="lstinline"></span><span
class="cmtt-12">bld</span></span></span><span class="cmtt-12">bld</span><span
class="cmr-12">.</span> class="cmr-12">.</span>
</li> </li>
<li <li
@ -177,23 +177,23 @@ class="cmr-12">.</span>
class="cmti-12">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="cmr-12">This is performed by</span> class="cmr-12">This is performed by</span>
<span <span
class="cmr-12">the method </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">the method </span><span class="lstinline"></span><span
class="cmtt-12">apply</span></span></span><span class="cmtt-12">apply</span><span
class="cmr-12">. When using the PSBLAS Krylov solvers, this step is</span> class="cmr-12">. When using the PSBLAS Krylov solvers, this step is</span>
<span <span
class="cmr-12">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="lstinline"></span><span
class="cmtt-12">apply</span></span></span> <span class="cmtt-12">apply</span> <span
class="cmr-12">is called by the PSBLAS routine</span> class="cmr-12">is called by the PSBLAS routine</span>
<span <span
class="cmr-12">implementing the Krylov solver (</span><span class="obeylines-h"><span class="verb"><span class="cmr-12">implementing the Krylov solver (</span><span class="lstinline"></span><span
class="cmtt-12">psb_krylov</span></span></span><span class="cmtt-12">psb_krylov</span><span
class="cmr-12">).</span> class="cmr-12">).</span>
</li> </li>
<li <li
class="enumerate" id="x13-12014x6"><span class="enumerate" id="x13-12014x6"><span
class="cmti-12">Free the preconditioner data structure</span><span class="cmti-12">Free the preconditioner data structure</span><span
class="cmr-12">. This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">. This is performed by the routine </span><span class="lstinline"></span><span
class="cmtt-12">free</span></span></span><span class="cmtt-12">free</span><span
class="cmr-12">.</span> class="cmr-12">.</span>
<span <span
class="cmr-12">This step is complementary to step 1 and should be performed when the</span> class="cmr-12">This step is complementary to step 1 and should be performed when the</span>
@ -218,7 +218,7 @@ class="cmr-12">.</span>
<!--l. 56--><p class="indent" > <a <!--l. 56--><p class="indent" > <a
id="x13-120151"></a><hr class="float"><div class="float" id="x13-12015r1"></a><hr class="float"><div class="float"
> >
@ -378,8 +378,8 @@ smoothed aggregation as coarsening
algorithm, and LU (plus triangular solve) algorithm, and LU (plus triangular solve)
as coarsest-level solver. See the default as coarsest-level solver. See the default
values in Tables&#x00A0;<a values in Tables&#x00A0;<a
href="userhtmlsu8.html#x17-160092">2<!--tex4ht:ref: tab:p_cycle --></a>-<a href="userhtmlsu8.html#x17-16009r2">2<!--tex4ht:ref: tab:p_cycle --></a>-<a
href="userhtmlsu8.html#x17-160158">8<!--tex4ht:ref: tab:p_smoother_1 --></a> for further details of href="userhtmlsu8.html#x17-16015r8">8<!--tex4ht:ref: tab:p_smoother_1 --></a> for further details of
the preconditioner. </td> 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
@ -387,7 +387,7 @@ class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
class="td11"> </td></tr></table></div> class="td11"> </td></tr></table></div>
<br /> <div class="caption" <br /> <div class="caption"
><span class="id">Table&#x00A0;1: </span><span ><span class="id">Table&#x00A0;1: </span><span
class="content">Preconditioner types, corresponding strings and default choices. </span></div><!--tex4ht:label?: x13-120151 --> class="content">Preconditioner types, corresponding strings and default choices. </span></div><!--tex4ht:label?: x13-12015r1 -->
</div> </div>
@ -395,18 +395,18 @@ 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="cmr-12">Note that the module </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">Note that the module </span><span class="lstinline"></span><span
class="cmtt-12">amg_prec_mod</span></span></span><span class="cmtt-12">amg_prec_mod</span><span
class="cmr-12">, containing the definition of the preconditioner</span> class="cmr-12">, containing the definition of the preconditioner</span>
<span <span
class="cmr-12">data type and the interfaces to the routines of AMG4PSBLAS, must be used</span> class="cmr-12">data type and the interfaces to the routines of AMG4PSBLAS, must be used</span>
<span <span
class="cmr-12">in any program calling such routines. The modules </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">in any program calling such routines. The modules </span><span class="lstinline"></span><span
class="cmtt-12">psb_base_mod</span></span></span><span class="cmtt-12">psb_base_mod</span><span
class="cmr-12">, for the</span> class="cmr-12">, for the</span>
<span <span
class="cmr-12">sparse matrix and communication descriptor 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="lstinline"></span><span
class="cmtt-12">psb_krylov_mod</span></span></span><span class="cmtt-12">psb_krylov_mod</span><span
class="cmr-12">,</span> class="cmr-12">,</span>
<span <span
class="cmr-12">for interfacing with the Krylov solvers, 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

@ -33,28 +33,28 @@ class="cmr-12">5 </span></span> <a
class="cmr-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="cmr-12">The basic user interface of AMG4PBLAS consists of eight methods. The six methods</span> class="cmr-12">The basic user interface of AMG4PBLAS consists of eight methods. The six methods</span>
<span class="obeylines-h"><span class="verb"><span <span class="lstinline"></span><span
class="cmtt-12">init</span></span></span><span class="cmtt-12">init</span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">, </span><span class="lstinline"></span><span
class="cmtt-12">set</span></span></span><span class="cmtt-12">set</span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">, </span><span class="lstinline"></span><span
class="cmtt-12">build</span></span></span><span class="cmtt-12">build</span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">, </span><span class="lstinline"></span><span
class="cmtt-12">hierarchy_build</span></span></span><span class="cmtt-12">hierarchy_build</span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">, </span><span class="lstinline"></span><span
class="cmtt-12">smoothers_build</span></span></span> <span class="cmtt-12">smoothers_build</span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">and </span><span class="lstinline"></span><span
class="cmtt-12">apply</span></span></span> <span class="cmtt-12">apply</span> <span
class="cmr-12">encapsulate all the</span> class="cmr-12">encapsulate all the</span>
<span <span
class="cmr-12">functionalities for the setup and the application of any multilevel and one-level</span> class="cmr-12">functionalities for the setup and the application of any multilevel and one-level</span>
<span <span
class="cmr-12">preconditioner implemented in the package. The method </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">preconditioner implemented in the package. The method </span><span class="lstinline"></span><span
class="cmtt-12">free</span></span></span> <span class="cmtt-12">free</span> <span
class="cmr-12">deallocates the</span> class="cmr-12">deallocates the</span>
<span <span
class="cmr-12">preconditioner data structure, while </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">preconditioner data structure, while </span><span class="lstinline"></span><span
class="cmtt-12">descr</span></span></span> <span class="cmtt-12">descr</span> <span
class="cmr-12">prints a description of the preconditioner</span> class="cmr-12">prints a description of the preconditioner</span>
<span <span
class="cmr-12">setup by the user. For backward compatibility, methods are also accessible as</span> class="cmr-12">setup by the user. For backward compatibility, methods are also accessible as</span>

@ -128,7 +128,7 @@ class="cmr-12">abide by its terms:</span>
<!--l. 148--><p class="indent" > <!--l. 153--><p class="indent" >

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 603--><div class="crosslinks"><p class="noindent"><span <!--l. 602--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu11.html" ><span href="userhtmlsu11.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -34,30 +34,48 @@ class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></h4> class="cmr-12">_build</span></h4>
<div class="center" <div class="center"
> >
<!--l. 606--><p class="noindent" > <!--l. 605--><p class="noindent" >
<!--l. 607--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 606--><p class="noindent" ><span class="lstinline"></span><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;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">smoothers_build</span><span
class="cmtt-12">(</span><span
class="cmtt-12">a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">desc_a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">p</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">amold</span><span
class="cmtt-12">,</span><span
class="cmtt-12">vmold</span><span
class="cmtt-12">,</span><span
class="cmtt-12">imold</span><span
class="cmtt-12">])</span><br />
</div> </div>
<!--l. 610--><p class="noindent" ><span <!--l. 609--><p class="noindent" ><span
class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span> class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span>
<span <span
class="cmr-12">preconditioner </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">preconditioner </span><span class="lstinline"></span><span
class="cmtt-12">p</span></span></span><span class="cmtt-12">p</span><span
class="cmr-12">, according to the requirements made by the user through the methods</span> class="cmr-12">, according to the requirements made by the user through the methods</span>
<span class="obeylines-h"><span class="verb"><span <span class="lstinline"></span><span
class="cmtt-12">init</span></span></span> <span class="cmtt-12">init</span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">and </span><span class="lstinline"></span><span
class="cmtt-12">set</span></span></span><span class="cmtt-12">set</span><span
class="cmr-12">, and based on the aggregation hierarchy produced by a previous call to</span> class="cmr-12">, and based on the aggregation hierarchy produced by a previous call to</span>
<span class="obeylines-h"><span class="verb"><span <span class="lstinline"></span><span
class="cmtt-12">hierarchy_build</span></span></span> <span class="cmtt-12">hierarchy_build</span> <span
class="cmr-12">(see Section</span><span class="cmr-12">(see Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu9.html#x18-170005.3"><span href="userhtmlsu9.html#x18-170005.3"><span
class="cmr-12">5.3</span><!--tex4ht:ref: sec:hier_bld --></a><span class="cmr-12">5.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
class="cmr-12">).</span> class="cmr-12">).</span>
<!--l. 617--><p class="noindent" ><span <!--l. 616--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-12" class="tabular" <div class="tabular"> <table id="TBL-12" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -65,25 +83,35 @@ 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. 620--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 619--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-1-2"
class="td11"><!--l. 620--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 619--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type(psb_</span></span></span><span class="cmtt-12">type</span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span><span
class="cmtt-12">spmat_type),</span><span class="cmtt-12">psb_</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">spmat_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-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. 621--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-2-2" class="td11"><!--l. 620--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-2-2"
class="td11"><!--l. 621--><p class="noindent" ><span class="td11"><!--l. 620--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span> class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<span <span
class="cmr-12">to be preconditioned. Note that </span><span class="cmr-12">to be preconditioned. Note that </span><span
class="cmti-12">x </span><span class="cmti-12">x </span><span
class="cmr-12">must be chosen according to the</span> class="cmr-12">must be chosen according to the</span>
<span <span class="lstinline"></span><span
class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS</span> class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
<span <span
class="cmr-12">under use. See the PSBLAS 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="cmr-12">[</span><a class="cmr-12">[</span><a
@ -93,18 +121,25 @@ class="cmr-12">]</span></span><span
class="cmr-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. 625--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 624--><p class="noindent" ><span class="lstinline"></span><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></td><td style="white-space:wrap; text-align:left;" id="TBL-12-3-2"
class="td11"><!--l. 625--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 624--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type(psb_desc_type),</span><span class="cmtt-12">type</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">(</span><span
class="cmtt-12">psb_desc_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-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. 626--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-4-2" class="td11"><!--l. 625--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-4-2"
class="td11"><!--l. 626--><p class="noindent" ><span class="td11"><!--l. 625--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
class="cmtt-12">a</span></span></span><span class="cmtt-12">a</span><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span> class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span <span
class="cmr-12">for details </span><span class="cite"><span class="cmr-12">for details </span><span class="cite"><span
@ -115,16 +150,21 @@ class="cmr-12">]</span></span><span
class="cmr-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. 628--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 627--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-5-2"
class="td11"><!--l. 628--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 627--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 629--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-6-2" class="td11"><!--l. 628--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-6-2"
class="td11"><!--l. 629--><p class="noindent" ><span class="td11"><!--l. 628--><p class="noindent" ><span
class="cmr-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="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x26-300007"><span href="userhtmlse7.html#x26-300007"><span
@ -132,19 +172,27 @@ class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmr-12">for 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. 630--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 629--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-7-2"
class="td11"><!--l. 630--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 629--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class</span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span><span
class="cmtt-12">_base_sparse_mat),</span><span class="cmtt-12">psb_</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">_base_sparse_mat</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-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. 631--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-8-2" class="td11"><!--l. 630--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-8-2"
class="td11"><!--l. 631--><p class="noindent" ><span class="td11"><!--l. 630--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span> class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span <span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span> class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
@ -157,35 +205,51 @@ class="cmr-12">]</span></span><span
class="cmr-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. 635--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 634--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-9-2"
class="td11"><!--l. 635--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 634--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class</span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span><span
class="cmtt-12">_base_vect_type),</span><span class="cmtt-12">psb_</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">_base_vect_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-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. 636--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-10-2" class="td11"><!--l. 635--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-10-2"
class="td11"><!--l. 636--><p class="noindent" ><span class="td11"><!--l. 635--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span> class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span <span
class="cmr-12">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. 638--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 637--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-12-11-2"
class="td11"><!--l. 638--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 637--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class(psb_i_base_vect_type),</span><span class="cmtt-12">class</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">(</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">psb_i_base_vect_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-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. 639--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-12-2" class="td11"><!--l. 638--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-12-12-2"
class="td11"><!--l. 639--><p class="noindent" ><span class="td11"><!--l. 638--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal integer vector components;</span> class="cmr-12">The desired dynamic type for internal integer vector components;</span>
<span <span
class="cmr-12">this allows e.g. running on GPUs.</span> </td> class="cmr-12">this allows e.g. running on GPUs.</span> </td>
@ -198,7 +262,7 @@ class="td11"> </td> </tr></table></div>
<!--l. 645--><div class="crosslinks"><p class="noindent"><span <!--l. 644--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu11.html" ><span href="userhtmlsu11.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -215,6 +279,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu10.html" ><span href="userhtmlse5.html#userhtmlsu10.html" ><span
class="cmr-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 645--><p class="indent" > <a <!--l. 644--><p class="indent" > <a
id="tailuserhtmlsu10.html"></a> id="tailuserhtmlsu10.html"></a>
</body></html> </body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 645--><div class="crosslinks"><p class="noindent"><span <!--l. 644--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu12.html" ><span href="userhtmlsu12.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -33,20 +33,36 @@ class="cmr-12">5.5 </span></span> <a
class="cmr-12">Method build</span></h4> class="cmr-12">Method build</span></h4>
<div class="center" <div class="center"
> >
<!--l. 647--><p class="noindent" > <!--l. 646--><p class="noindent" >
<!--l. 648--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 647--><p class="noindent" ><span class="lstinline"></span><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;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">build</span><span
class="cmtt-12">(</span><span
class="cmtt-12">a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">desc_a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">amold</span><span
class="cmtt-12">,</span><span
class="cmtt-12">vmold</span><span
class="cmtt-12">,</span><span
class="cmtt-12">imold</span><span
class="cmtt-12">])</span><br />
</div> </div>
<!--l. 651--><p class="noindent" ><span <!--l. 650--><p class="noindent" ><span
class="cmr-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="lstinline"></span><span
class="cmtt-12">p</span></span></span> <span class="cmtt-12">p</span> <span
class="cmr-12">according to the requirements made by the</span> class="cmr-12">according to the requirements made by the</span>
<span <span
class="cmr-12">user through the methods </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">user through the methods </span><span class="lstinline"></span><span
class="cmtt-12">init</span></span></span> <span class="cmtt-12">init</span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">and </span><span class="lstinline"></span><span
class="cmtt-12">set</span></span></span> <span class="cmtt-12">set</span> <span
class="cmr-12">(see Sections</span><span class="cmr-12">(see Sections</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlsu9.html#x18-170005.3"><span href="userhtmlsu9.html#x18-170005.3"><span
@ -59,15 +75,15 @@ class="cmr-12">for multilevel</span>
<span <span
class="cmr-12">preconditioners). It is mostly provided for backward compatibility; indeed, it is</span> class="cmr-12">preconditioners). It is mostly provided for backward compatibility; indeed, it is</span>
<span <span
class="cmr-12">internally implemented by invoking the 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="lstinline"></span><span
class="cmtt-12">hierarchy_build</span></span></span> <span class="cmtt-12">hierarchy_build</span> <span
class="cmr-12">and</span> class="cmr-12">and</span>
<span class="obeylines-h"><span class="verb"><span <span class="lstinline"></span><span
class="cmtt-12">smoothers_build</span></span></span><span class="cmtt-12">smoothers_build</span><span
class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span> class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span>
<span <span
class="cmr-12">dealing with simple one-level preconditioners.</span> class="cmr-12">dealing with simple one-level preconditioners.</span>
<!--l. 661--><p class="noindent" ><span <!--l. 660--><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"
@ -75,25 +91,35 @@ cellspacing="0" cellpadding="0"
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. 664--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 663--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-1-2"
class="td11"><!--l. 664--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 663--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type(psb_</span></span></span><span class="cmtt-12">type</span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span><span
class="cmtt-12">spmat_type),</span><span class="cmtt-12">psb_</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">spmat_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-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. 665--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-2-2" class="td11"><!--l. 664--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-2-2"
class="td11"><!--l. 665--><p class="noindent" ><span class="td11"><!--l. 664--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span> class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<span <span
class="cmr-12">to be preconditioned. Note that </span><span class="cmr-12">to be preconditioned. Note that </span><span
class="cmti-12">x </span><span class="cmti-12">x </span><span
class="cmr-12">must be chosen according to the</span> class="cmr-12">must be chosen according to the</span>
<span <span class="lstinline"></span><span
class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS</span> class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
<span <span
class="cmr-12">under use. See the PSBLAS 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="cmr-12">[</span><a class="cmr-12">[</span><a
@ -103,18 +129,25 @@ class="cmr-12">]</span></span><span
class="cmr-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. 669--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 668--><p class="noindent" ><span class="lstinline"></span><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></td><td style="white-space:wrap; text-align:left;" id="TBL-13-3-2"
class="td11"><!--l. 669--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 668--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type(psb_desc_type),</span><span class="cmtt-12">type</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">(</span><span
class="cmtt-12">psb_desc_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-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. 670--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-4-2" class="td11"><!--l. 669--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-4-2"
class="td11"><!--l. 670--><p class="noindent" ><span class="td11"><!--l. 669--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
class="cmtt-12">a</span></span></span><span class="cmtt-12">a</span><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span> class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span <span
class="cmr-12">for details </span><span class="cite"><span class="cmr-12">for details </span><span class="cite"><span
@ -125,16 +158,21 @@ class="cmr-12">]</span></span><span
class="cmr-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. 672--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 671--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-5-2"
class="td11"><!--l. 672--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 671--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 673--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-6-2" class="td11"><!--l. 672--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-6-2"
class="td11"><!--l. 673--><p class="noindent" ><span class="td11"><!--l. 672--><p class="noindent" ><span
class="cmr-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="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x26-300007"><span href="userhtmlse7.html#x26-300007"><span
@ -142,19 +180,27 @@ class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmr-12">for 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. 674--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 673--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-7-2"
class="td11"><!--l. 674--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 673--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class</span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span><span
class="cmtt-12">_base_sparse_mat),</span><span class="cmtt-12">psb_</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">_base_sparse_mat</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-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. 675--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-8-2" class="td11"><!--l. 674--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-8-2"
class="td11"><!--l. 675--><p class="noindent" ><span class="td11"><!--l. 674--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span> class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span <span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span> class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
@ -167,42 +213,58 @@ class="cmr-12">]</span></span><span
class="cmr-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. 679--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 678--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-9-2"
class="td11"><!--l. 679--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 678--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class</span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span><span
class="cmtt-12">_base_vect_type),</span><span class="cmtt-12">psb_</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">_base_vect_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-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. 680--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-10-2" class="td11"><!--l. 679--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-10-2"
class="td11"><!--l. 680--><p class="noindent" ><span class="td11"><!--l. 679--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span> class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span <span
class="cmr-12">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. 682--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 681--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-13-11-2"
class="td11"><!--l. 682--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 681--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class(psb_i_base_vect_type),</span><span class="cmtt-12">class</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">(</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">psb_i_base_vect_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-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. 683--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-12-2" class="td11"><!--l. 682--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-13-12-2"
class="td11"><!--l. 683--><p class="noindent" ><span class="td11"><!--l. 682--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal integer vector components;</span> class="cmr-12">The desired dynamic type for internal integer vector components;</span>
<span <span
class="cmr-12">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. 688--><p class="noindent" ><span <!--l. 687--><p class="noindent" ><span
class="cmr-12">The method can be used to build multilevel preconditioners too.</span> class="cmr-12">The method can be used to build multilevel preconditioners too.</span>
@ -210,7 +272,7 @@ class="cmr-12">The method can be used to build multilevel preconditioners too.</
<!--l. 693--><div class="crosslinks"><p class="noindent"><span <!--l. 692--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu12.html" ><span href="userhtmlsu12.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -227,6 +289,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu11.html" ><span href="userhtmlse5.html#userhtmlsu11.html" ><span
class="cmr-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 693--><p class="indent" > <a <!--l. 692--><p class="indent" > <a
id="tailuserhtmlsu11.html"></a> id="tailuserhtmlsu11.html"></a>
</body></html> </body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 693--><div class="crosslinks"><p class="noindent"><span <!--l. 692--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu13.html" ><span href="userhtmlsu13.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -33,13 +33,29 @@ class="cmr-12">5.6 </span></span> <a
class="cmr-12">Method apply</span></h4> class="cmr-12">Method apply</span></h4>
<div class="center" <div class="center"
> >
<!--l. 695--><p class="noindent" > <!--l. 694--><p class="noindent" >
<!--l. 696--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 695--><p class="noindent" ><span class="lstinline"></span><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;</span><span
class="cmtt-12">&#x00A0;[,trans,work])</span></span></span><br /> class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">apply</span><span
class="cmtt-12">(</span><span
class="cmtt-12">x</span><span
class="cmtt-12">,</span><span
class="cmtt-12">y</span><span
class="cmtt-12">,</span><span
class="cmtt-12">desc_a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">trans</span><span
class="cmtt-12">,</span><span
class="cmtt-12">work</span><span
class="cmtt-12">])</span><br />
</div> </div>
<!--l. 699--><p class="noindent" ><span <!--l. 698--><p class="noindent" ><span
class="cmr-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
@ -54,24 +70,26 @@ class="cmr-12">, where </span><span
class="cmmi-12">B </span><span class="cmmi-12">B </span><span
class="cmr-12">is a previously built preconditioner,</span> class="cmr-12">is a previously built preconditioner,</span>
<span <span
class="cmr-12">stored into </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">stored into </span><span class="lstinline"></span><span
class="cmtt-12">p</span></span></span><span class="cmtt-12">p</span><span
class="cmr-12">, and </span><span class="cmr-12">, and </span><span
class="cmmi-12">op </span><span class="cmmi-12">op </span><span
class="cmr-12">denotes the preconditioner itself or its transpose, according to the</span> class="cmr-12">denotes the preconditioner itself or its transpose, according to the</span>
<span <span
class="cmr-12">value of </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">value of </span><span class="lstinline"></span><span
class="cmtt-12">trans</span></span></span><span class="cmtt-12">trans</span><span
class="cmr-12">. Note that, when AMG4PSBLAS is used with a Krylov solver from</span> class="cmr-12">. Note that, when AMG4PSBLAS is used with a Krylov solver from</span>
<span <span
class="cmr-12">PSBLAS, </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">PSBLAS, </span><span class="lstinline"></span><span
class="cmtt-12">p%apply</span></span></span> <span class="cmtt-12">p</span><span
class="cmr-12">is called within the PSBLAS method </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">%</span><span
class="cmtt-12">psb_krylov</span></span></span> <span class="cmtt-12">apply</span> <span
class="cmr-12">is called within the PSBLAS method </span><span class="lstinline"></span><span
class="cmtt-12">psb_krylov</span> <span
class="cmr-12">and hence it is</span> class="cmr-12">and hence it is</span>
<span <span
class="cmr-12">completely transparent to the user.</span> class="cmr-12">completely transparent to the user.</span>
<!--l. 708--><p class="noindent" ><span <!--l. 707--><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"
@ -79,21 +97,27 @@ cellspacing="0" cellpadding="0"
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. 711--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 710--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-1-2"
class="td11"><!--l. 711--><p class="noindent" ><span class="td11"><!--l. 710--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">type</span><span class="lstinline"></span><span
class="cmtt-12">(</span></span></span><span class="cmtt-12">(</span><span
class="cmti-12">kind</span><span class="cmti-12">kind</span><span
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">_parameter</span><span class="lstinline"></span><span
class="cmtt-12">),</span><span class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">dimension</span><span
class="cmtt-12">(:),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-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. 712--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-2-2" class="td11"><!--l. 711--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-2-2"
class="td11"><!--l. 712--><p class="noindent" ><span class="td11"><!--l. 711--><p class="noindent" ><span
class="cmr-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="cmr-12">. Note that </span><span class="cmr-12">. Note that </span><span
@ -102,26 +126,36 @@ class="cmr-12">and </span><span
class="cmti-12">kind</span><span class="cmti-12">kind</span><span
class="cmti-12">_parameter</span> class="cmti-12">_parameter</span>
<span <span
class="cmr-12">must be chosen according to the real/complex, single/double</span> class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
class="cmr-12">, single/double</span>
<span <span
class="cmr-12">precision version of AMG4PSBLAS 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-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. 715--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 714--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-3-2"
class="td11"><!--l. 715--><p class="noindent" ><span class="td11"><!--l. 714--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">type</span><span class="lstinline"></span><span
class="cmtt-12">(</span></span></span><span class="cmtt-12">(</span><span
class="cmti-12">kind</span><span class="cmti-12">kind</span><span
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">_parameter</span><span class="lstinline"></span><span
class="cmtt-12">),</span><span class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmtt-12">dimension</span><span
class="cmtt-12">(:),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 716--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-4-2" class="td11"><!--l. 715--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-4-2"
class="td11"><!--l. 716--><p class="noindent" ><span class="td11"><!--l. 715--><p class="noindent" ><span
class="cmr-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="cmr-12">. Note that </span><span class="cmr-12">. Note that </span><span
@ -130,36 +164,52 @@ class="cmr-12">and </span><span
class="cmti-12">kind</span><span class="cmti-12">kind</span><span
class="cmti-12">_parameter</span> class="cmti-12">_parameter</span>
<span <span
class="cmr-12">must be chosen according to the real/complex, single/double</span> class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
class="cmr-12">, single/double</span>
<span <span
class="cmr-12">precision version of AMG4PSBLAS 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. 719--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 718--><p class="noindent" ><span class="lstinline"></span><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></td><td style="white-space:wrap; text-align:left;" id="TBL-14-5-2"
class="td11"><!--l. 719--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 718--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type(psb_desc_type),</span><span class="cmtt-12">type</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">(</span><span
class="cmtt-12">psb_desc_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-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. 720--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-6-2" class="td11"><!--l. 719--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-6-2"
class="td11"><!--l. 720--><p class="noindent" ><span class="td11"><!--l. 719--><p class="noindent" ><span
class="cmr-12">The communication descriptor associated to the matrix to be</span> class="cmr-12">The communication descriptor associated to the matrix to be</span>
<span <span
class="cmr-12">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. 722--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 721--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-7-2"
class="td11"><!--l. 722--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 721--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 723--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-8-2" class="td11"><!--l. 722--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-8-2"
class="td11"><!--l. 723--><p class="noindent" ><span class="td11"><!--l. 722--><p class="noindent" ><span
class="cmr-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="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x26-300007"><span href="userhtmlse7.html#x26-300007"><span
@ -167,20 +217,35 @@ class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmr-12">for 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. 724--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 723--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-9-2"
class="td11"><!--l. 724--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 723--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">character(len=1),</span><span class="cmtt-12">character</span><span
class="cmtt-12">&#x00A0;optional,</span><span class="cmtt-12">(</span><span
class="cmtt-12">&#x00A0;intent(in).</span></span></span> </td> class="cmtt-12">len</span><span
class="cmtt-12">=1),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">).</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. 725--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-10-2" class="td11"><!--l. 724--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-10-2"
class="td11"><!--l. 725--><p class="noindent" ><span class="td11"><!--l. 724--><p class="noindent" ><span
class="cmr-12">If </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">If </span><span class="lstinline"></span><span
class="cmtt-12">trans</span></span></span> <span class="cmtt-12">trans</span> <span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">= </span><span class="lstinline"></span><span
class="cmtt-12">&#8217;N&#8217;,&#8217;n&#8217;</span></span></span> <span class="cmtt-12">&#8217;</span><span
class="cmtt-12">N</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">n</span><span
class="cmtt-12">&#8217;</span> <span
class="cmr-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
@ -191,10 +256,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="cmr-8">1</span></sup><span class="cmr-8">1</span></sup><span
class="cmr-12">; if </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">; if </span><span class="lstinline"></span><span
class="cmtt-12">trans</span></span></span> <span class="cmtt-12">trans</span> <span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">= </span><span class="lstinline"></span><span
class="cmtt-12">&#8217;T&#8217;,&#8217;t&#8217;</span></span></span> class="cmtt-12">&#8217;</span><span
class="cmtt-12">T</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">t</span><span
class="cmtt-12">&#8217;</span>
<span <span
class="cmr-12">then </span><span class="cmr-12">then </span><span
class="cmmi-12">op</span><span class="cmmi-12">op</span><span
@ -210,10 +281,16 @@ 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">); if </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">); if </span><span class="lstinline"></span><span
class="cmtt-12">trans</span></span></span> <span class="cmtt-12">trans</span> <span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">= </span><span class="lstinline"></span><span
class="cmtt-12">&#8217;C&#8217;,&#8217;c&#8217;</span></span></span> <span class="cmtt-12">&#8217;</span><span
class="cmtt-12">C</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">c</span><span
class="cmtt-12">&#8217;</span> <span
class="cmr-12">then</span> class="cmr-12">then</span>
<span <span
class="cmmi-12">op</span><span class="cmmi-12">op</span><span
@ -232,35 +309,49 @@ class="cmr-8">1</span></sup><span
class="cmr-12">).</span> </td> class="cmr-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. 729--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 728--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-14-11-2"
class="td11"><!--l. 729--><p class="noindent" ><span class="td11"><!--l. 728--><p class="noindent" ><span
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">type</span><span class="lstinline"></span><span
class="cmtt-12">(</span></span></span><span class="cmtt-12">(</span><span
class="cmti-12">kind</span><span class="cmti-12">kind</span><span
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span class="cmti-12">_parameter</span><span class="lstinline"></span><span
class="cmtt-12">),</span><span class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;dimension(:),</span><span class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">&#x00A0;optional,</span><span class="cmtt-12">dimension</span><span
class="cmtt-12">&#x00A0;target</span></span></span><span class="cmtt-12">(:),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">target</span><span
class="cmr-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. 730--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-12-2" class="td11"><!--l. 729--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-14-12-2"
class="td11"><!--l. 730--><p class="noindent" ><span class="td11"><!--l. 729--><p class="noindent" ><span
class="cmr-12">Workspace. Its size should be at least </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">Workspace. Its size should be at least </span><span class="lstinline"></span><span
class="cmtt-12">4</span><span class="cmtt-12">4</span><span
class="cmtt-12">&#x00A0;*</span><span class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">&#x00A0;psb_cd_get_local_</span></span></span> class="cmtt-12">*</span><span
<span class="obeylines-h"><span class="verb"><span class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">cols(desc_a)</span></span></span> <span class="cmtt-12">psb_cd_get_local_</span>
<span class="lstinline"></span><span
class="cmtt-12">cols</span><span
class="cmtt-12">(</span><span
class="cmtt-12">desc_a</span><span
class="cmtt-12">)</span> <span
class="cmr-12">(see the PSBLAS User&#8217;s Guide). Note that </span><span class="cmr-12">(see the PSBLAS User&#8217;s Guide). Note that </span><span
class="cmti-12">type</span> class="cmti-12">type </span><span
class="cmr-12">and</span>
<span <span
class="cmr-12">and </span><span
class="cmti-12">kind</span><span class="cmti-12">kind</span><span
class="cmti-12">_parameter </span><span class="cmti-12">_parameter </span><span
class="cmr-12">must be chosen according to the real/complex,</span> class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
class="cmr-12">,</span>
<span <span
class="cmr-12">single/double precision version of AMG4PSBLAS under use.</span> </td> class="cmr-12">single/double precision version of AMG4PSBLAS under use.</span> </td>
</tr><tr </tr><tr
@ -272,7 +363,7 @@ class="td11"> </td> </tr></table></div>
<!--l. 739--><div class="crosslinks"><p class="noindent"><span <!--l. 738--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu13.html" ><span href="userhtmlsu13.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -289,6 +380,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu12.html" ><span href="userhtmlse5.html#userhtmlsu12.html" ><span
class="cmr-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 739--><p class="indent" > <a <!--l. 738--><p class="indent" > <a
id="tailuserhtmlsu12.html"></a> id="tailuserhtmlsu12.html"></a>
</body></html> </body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 739--><div class="crosslinks"><p class="noindent"><span <!--l. 738--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -33,16 +33,24 @@ class="cmr-12">5.7 </span></span> <a
class="cmr-12">Method free</span></h4> class="cmr-12">Method free</span></h4>
<div class="center" <div class="center"
> >
<!--l. 741--><p class="noindent" > <!--l. 740--><p class="noindent" >
<!--l. 742--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 741--><p class="noindent" ><span class="lstinline"></span><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;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">free</span><span
class="cmtt-12">(</span><span
class="cmtt-12">p</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">)</span><br />
</div> </div>
<!--l. 745--><p class="noindent" ><span <!--l. 744--><p class="noindent" ><span
class="cmr-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="lstinline"></span><span
class="cmtt-12">p</span></span></span><span class="cmtt-12">p</span><span
class="cmr-12">.</span> class="cmr-12">.</span>
<!--l. 748--><p class="noindent" ><span <!--l. 747--><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,16 +58,21 @@ 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. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 750--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-15-1-2"
class="td11"><!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 750--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 752--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-15-2-2" class="td11"><!--l. 751--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-15-2-2"
class="td11"><!--l. 752--><p class="noindent" ><span class="td11"><!--l. 751--><p class="noindent" ><span
class="cmr-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="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x26-300007"><span href="userhtmlse7.html#x26-300007"><span
@ -76,7 +89,7 @@ class="td11"> </td> </tr></table></div>
<!--l. 758--><div class="crosslinks"><p class="noindent"><span <!--l. 757--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -93,6 +106,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu13.html" ><span href="userhtmlse5.html#userhtmlsu13.html" ><span
class="cmr-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 758--><p class="indent" > <a <!--l. 757--><p class="indent" > <a
id="tailuserhtmlsu13.html"></a> id="tailuserhtmlsu13.html"></a>
</body></html> </body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 758--><div class="crosslinks"><p class="noindent"><span <!--l. 757--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -33,27 +33,36 @@ class="cmr-12">5.8 </span></span> <a
class="cmr-12">Method descr</span></h4> class="cmr-12">Method descr</span></h4>
<div class="center" <div class="center"
> >
<!--l. 760--><p class="noindent" > <!--l. 759--><p class="noindent" >
<!--l. 761--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 760--><p class="noindent" ><span class="lstinline"></span><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;</span><span
class="cmtt-12">&#x00A0;[iout])</span></span></span><br /> class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">descr</span><span
class="cmtt-12">(</span><span
class="cmtt-12">info</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">[</span><span
class="cmtt-12">iout</span><span
class="cmtt-12">])</span><br />
</div> </div>
<!--l. 764--><p class="noindent" ><span <!--l. 763--><p class="noindent" ><span
class="cmr-12">This method prints a description of the preconditioner </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">This method prints a description of the preconditioner </span><span class="lstinline"></span><span
class="cmtt-12">p</span></span></span> <span class="cmtt-12">p</span> <span
class="cmr-12">to the standard output or to a</span> class="cmr-12">to the standard output or to a</span>
<span <span
class="cmr-12">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="lstinline"></span><span
class="cmtt-12">hierachy_build</span></span></span> <span class="cmtt-12">hierachy_build</span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">and </span><span class="lstinline"></span><span
class="cmtt-12">smoothers_build</span></span></span><span class="cmtt-12">smoothers_build</span><span
class="cmr-12">, or </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">, or </span><span class="lstinline"></span><span
class="cmtt-12">build</span></span></span><span class="cmtt-12">build</span><span
class="cmr-12">, have</span> class="cmr-12">, have</span>
<span <span
class="cmr-12">been called.</span> class="cmr-12">been called.</span>
<!--l. 769--><p class="noindent" ><span <!--l. 768--><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,16 +70,21 @@ 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. 772--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 771--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-16-1-2"
class="td11"><!--l. 772--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 771--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 773--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-2-2" class="td11"><!--l. 772--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-2-2"
class="td11"><!--l. 773--><p class="noindent" ><span class="td11"><!--l. 772--><p class="noindent" ><span
class="cmr-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="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x26-300007"><span href="userhtmlse7.html#x26-300007"><span
@ -78,17 +92,23 @@ class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmr-12">for 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. 774--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 773--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-16-3-2"
class="td11"><!--l. 774--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 773--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer,</span><span class="cmtt-12">integer</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-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. 775--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-4-2" class="td11"><!--l. 774--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-16-4-2"
class="td11"><!--l. 775--><p class="noindent" ><span class="td11"><!--l. 774--><p class="noindent" ><span
class="cmr-12">The id of the file where the preconditioner description will be</span> class="cmr-12">The id of the file where the preconditioner description will be</span>
<span <span
class="cmr-12">printed; the default is the standard output.</span> </td> class="cmr-12">printed; the default is the standard output.</span> </td>
@ -98,7 +118,7 @@ class="td11"> </td> </tr></table></div>
<!--l. 780--><div class="crosslinks"><p class="noindent"><span <!--l. 779--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span href="userhtmlsu15.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -115,6 +135,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu14.html" ><span href="userhtmlse5.html#userhtmlsu14.html" ><span
class="cmr-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 780--><p class="indent" > <a <!--l. 779--><p class="indent" > <a
id="tailuserhtmlsu14.html"></a> id="tailuserhtmlsu14.html"></a>
</body></html> </body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 780--><div class="crosslinks"><p class="noindent"><span <!--l. 779--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span href="userhtmlsu14.html" ><span
class="cmr-12">prev</span></a><span class="cmr-12">prev</span></a><span
@ -28,25 +28,49 @@ class="cmr-12">] </span></p></div>
class="cmr-12">5.9 </span></span> <a class="cmr-12">5.9 </span></span> <a
id="x24-230005.9"></a><span id="x24-230005.9"></a><span
class="cmr-12">Auxiliary Methods</span></h4> class="cmr-12">Auxiliary Methods</span></h4>
<!--l. 781--><p class="noindent" ><span <!--l. 780--><p class="noindent" ><span
class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span> class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span>
<span <span
class="cmr-12">object.</span> class="cmr-12">object.</span>
<!--l. 784--><p class="noindent" > <!--l. 783--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.1 </span></span> <a class="cmr-12">5.9.1 </span></span> <a
id="x24-240005.9.1"></a><span id="x24-240005.9.1"></a><span
class="cmr-12">Method: dump</span></h5> class="cmr-12">Method: dump</span></h5>
<div class="center" <div class="center"
> >
<!--l. 786--><p class="noindent" > <!--l. 785--><p class="noindent" >
<!--l. 787--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 786--><p class="noindent" ><span class="lstinline"></span><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;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">dump</span><span
class="cmtt-12">(</span><span
class="cmtt-12">info</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">istart</span><span
class="cmtt-12">,</span><span
class="cmtt-12">iend</span><span
class="cmtt-12">,</span><span
class="cmtt-12">prefix</span><span
class="cmtt-12">,</span><span
class="cmtt-12">head</span><span
class="cmtt-12">,</span><span
class="cmtt-12">ac</span><span
class="cmtt-12">,</span><span
class="cmtt-12">rp</span><span
class="cmtt-12">,</span><span
class="cmtt-12">smoother</span><span
class="cmtt-12">,</span><span
class="cmtt-12">solver</span><span
class="cmtt-12">,</span><span
class="cmtt-12">global_num</span><span
class="cmtt-12">])</span><br />
</div> </div>
<!--l. 790--><p class="noindent" ><span <!--l. 789--><p class="noindent" ><span
class="cmr-12">Dump on file.</span> class="cmr-12">Dump on file.</span>
<!--l. 793--><p class="noindent" ><span <!--l. 792--><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,16 +78,21 @@ 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. 796--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 795--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-17-1-2"
class="td11"><!--l. 796--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 795--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 797--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-2-2" class="td11"><!--l. 796--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-2-2"
class="td11"><!--l. 797--><p class="noindent" ><span class="td11"><!--l. 796--><p class="noindent" ><span
class="cmr-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="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x26-300007"><span href="userhtmlse7.html#x26-300007"><span
@ -71,19 +100,27 @@ class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmr-12">for 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. 798--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 797--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-17-3-2"
class="td11"><!--l. 798--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 797--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class</span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span><span
class="cmtt-12">_base_sparse_mat),</span><span class="cmtt-12">psb_</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">_base_sparse_mat</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-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. 799--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-4-2" class="td11"><!--l. 798--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-17-4-2"
class="td11"><!--l. 799--><p class="noindent" ><span class="td11"><!--l. 798--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span> class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span <span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span> class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
@ -97,24 +134,32 @@ 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. 806--><p class="noindent" > <!--l. 805--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.2 </span></span> <a class="cmr-12">5.9.2 </span></span> <a
id="x24-250005.9.2"></a><span id="x24-250005.9.2"></a><span
class="cmr-12">Method: clone</span></h5> class="cmr-12">Method: clone</span></h5>
<div class="center" <div class="center"
> >
<!--l. 808--><p class="noindent" > <!--l. 807--><p class="noindent" >
<!--l. 809--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 808--><p class="noindent" ><span class="lstinline"></span><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;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">clone</span><span
class="cmtt-12">(</span><span
class="cmtt-12">pout</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">)</span><br />
</div> </div>
<!--l. 812--><p class="noindent" ><span <!--l. 811--><p class="noindent" ><span
class="cmr-12">Create a (deep) copy of the preconditioner object.</span> class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
<!--l. 815--><p class="noindent" ><span <!--l. 814--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-18" class="tabular" <div class="tabular"> <table id="TBL-18" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -122,37 +167,53 @@ 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. 818--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 817--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-1-2"
class="td11"><!--l. 818--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 817--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type(amg_</span></span></span><span class="cmtt-12">type</span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span><span
class="cmtt-12">prec_type),</span><span class="cmtt-12">amg_</span><span
class="cmtt-12">&#x00A0;intent(out)</span></span></span><span class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">prec_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 819--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-2-2" class="td11"><!--l. 818--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-2-2"
class="td11"><!--l. 819--><p class="noindent" ><span class="td11"><!--l. 818--><p class="noindent" ><span
class="cmr-12">The copy of the preconditioner data structure. Note that </span><span class="cmr-12">The copy of the preconditioner data structure. Note that </span><span
class="cmti-12">x </span><span class="cmti-12">x </span><span
class="cmr-12">must</span> class="cmr-12">must</span>
<span <span
class="cmr-12">be chosen according to the real/complex, single/double precision</span> class="cmr-12">be chosen according to the </span><span class="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
class="cmr-12">, single/double precision</span>
<span <span
class="cmr-12">version of AMG4PSBLAS 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. 822--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 821--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-3-2"
class="td11"><!--l. 822--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 821--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 823--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-4-2" class="td11"><!--l. 822--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-18-4-2"
class="td11"><!--l. 823--><p class="noindent" ><span class="td11"><!--l. 822--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x26-300007"><span href="userhtmlse7.html#x26-300007"><span
@ -161,23 +222,27 @@ class="cmr-12">for 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. 828--><p class="noindent" > <!--l. 827--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.3 </span></span> <a class="cmr-12">5.9.3 </span></span> <a
id="x24-260005.9.3"></a><span id="x24-260005.9.3"></a><span
class="cmr-12">Method: sizeof</span></h5> class="cmr-12">Method: sizeof</span></h5>
<div class="center" <div class="center"
> >
<!--l. 830--><p class="noindent" > <!--l. 829--><p class="noindent" >
<!--l. 831--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 830--><p class="noindent" ><span class="lstinline"></span><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;p%sizeof()</span></span></span><br /> class="cmtt-12">=</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">sizeof</span><span
class="cmtt-12">()</span><br />
</div> </div>
<!--l. 834--><p class="noindent" ><span <!--l. 833--><p class="noindent" ><span
class="cmr-12">Return memory footprint in bytes.</span> class="cmr-12">Return memory footprint in bytes.</span>
<!--l. 837--><p class="noindent" > <!--l. 836--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.4 </span></span> <a class="cmr-12">5.9.4 </span></span> <a
id="x24-270005.9.4"></a><span id="x24-270005.9.4"></a><span
@ -185,13 +250,21 @@ class="cmr-12">Method: allocate</span><span
class="cmr-12">_wrk</span></h5> class="cmr-12">_wrk</span></h5>
<div class="center" <div class="center"
> >
<!--l. 839--><p class="noindent" > <!--l. 838--><p class="noindent" >
<!--l. 840--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 839--><p class="noindent" ><span class="lstinline"></span><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;</span><span
class="cmtt-12">&#x00A0;vmold])</span></span></span><br /> class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">allocate_wrk</span><span
class="cmtt-12">(</span><span
class="cmtt-12">info</span><span
class="cmtt-12">[,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">vmold</span><span
class="cmtt-12">])</span><br />
</div> </div>
<!--l. 843--><p class="noindent" ><span <!--l. 842--><p class="noindent" ><span
class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span> class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span>
<span <span
class="cmr-12">work vectors which are allocated internally as necessary; therefore allocation and</span> class="cmr-12">work vectors which are allocated internally as necessary; therefore allocation and</span>
@ -206,8 +279,8 @@ class="cmr-12">lead to a slowdown. This method allows to trade space for time by
<span <span
class="cmr-12">the internal workspace outside of the invocation of a Krylov method. When</span> class="cmr-12">the internal workspace outside of the invocation of a Krylov method. When</span>
<span <span
class="cmr-12">using GPUs or other specialized devices, the </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">using GPUs or other specialized devices, the </span><span class="lstinline"></span><span
class="cmtt-12">vmold</span></span></span> <span class="cmtt-12">vmold</span> <span
class="cmr-12">argument is also necessary</span> class="cmr-12">argument is also necessary</span>
<span <span
class="cmr-12">to ensure the internal work vectors are of the appropriate dynamic type to</span> class="cmr-12">to ensure the internal work vectors are of the appropriate dynamic type to</span>
@ -217,13 +290,13 @@ class="cmr-12">to ensure the internal work vectors are of the appropriate dynami
<span <span
class="cmr-12">exploit the accelerator hardware; when allocation occurs internally this is</span> class="cmr-12">exploit the accelerator hardware; when allocation occurs internally this is</span>
<span <span
class="cmr-12">taken care of based on the dynamic type of the </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">taken care of based on the dynamic type of the </span><span class="lstinline"></span><span
class="cmtt-12">x</span></span></span> <span class="cmtt-12">x</span> <span
class="cmr-12">argument to the </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">argument to the </span><span class="lstinline"></span><span
class="cmtt-12">apply</span></span></span> class="cmtt-12">apply</span>
<span <span
class="cmr-12">method.</span> class="cmr-12">method.</span>
<!--l. 859--><p class="noindent" ><span <!--l. 858--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-19" class="tabular" <div class="tabular"> <table id="TBL-19" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -231,16 +304,21 @@ 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. 862--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 861--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-1-2"
class="td11"><!--l. 862--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 861--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 863--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-2-2" class="td11"><!--l. 862--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-2-2"
class="td11"><!--l. 863--><p class="noindent" ><span class="td11"><!--l. 862--><p class="noindent" ><span
class="cmr-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="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x26-300007"><span href="userhtmlse7.html#x26-300007"><span
@ -248,26 +326,34 @@ class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for details.</span> </td> class="cmr-12">for 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. 864--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 863--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-3-2"
class="td11"><!--l. 864--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 863--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">class(psb_</span></span></span><span class="cmtt-12">class</span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span><span
class="cmtt-12">_base_vect_type),</span><span class="cmtt-12">psb_</span><span
class="cmtt-12">&#x00A0;intent(in),</span><span class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">&#x00A0;optional</span></span></span><span class="cmtt-12">_base_vect_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-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. 865--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-4-2" class="td11"><!--l. 864--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-19-4-2"
class="td11"><!--l. 865--><p class="noindent" ><span class="td11"><!--l. 864--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal vector components; this</span> class="cmr-12">The desired dynamic type for internal vector components; this</span>
<span <span
class="cmr-12">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. 871--><p class="noindent" > <!--l. 870--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span <h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.5 </span></span> <a class="cmr-12">5.9.5 </span></span> <a
id="x24-280005.9.5"></a><span id="x24-280005.9.5"></a><span
@ -275,14 +361,20 @@ class="cmr-12">Method: free</span><span
class="cmr-12">_wrk</span></h5> class="cmr-12">_wrk</span></h5>
<div class="center" <div class="center"
> >
<!--l. 873--><p class="noindent" > <!--l. 872--><p class="noindent" >
<!--l. 874--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 873--><p class="noindent" ><span class="lstinline"></span><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;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">free_wrk</span><span
class="cmtt-12">(</span><span
class="cmtt-12">info</span><span
class="cmtt-12">)</span><br />
</div> </div>
<!--l. 877--><p class="noindent" ><span <!--l. 876--><p class="noindent" ><span
class="cmr-12">Deallocate internal work vectors.</span> class="cmr-12">Deallocate internal work vectors.</span>
<!--l. 880--><p class="noindent" ><span <!--l. 879--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-20" class="tabular" <div class="tabular"> <table id="TBL-20" class="tabular"
cellspacing="0" cellpadding="0" cellspacing="0" cellpadding="0"
@ -290,16 +382,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. 883--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 882--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-20-1-2"
class="td11"><!--l. 883--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 882--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 884--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-20-2-2" class="td11"><!--l. 883--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-20-2-2"
class="td11"><!--l. 884--><p class="noindent" ><span class="td11"><!--l. 883--><p class="noindent" ><span
class="cmr-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="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x26-300007"><span href="userhtmlse7.html#x26-300007"><span

@ -47,7 +47,7 @@ class="cmr-12">As a minimal example consider the following:</span>
<div class="verbatim" id="verbatim-1"> <div class="verbatim" id="verbatim-1">
./configure&#x00A0;--with-psblas=PSB-INSTALL-DIR ./configure&#x00A0;--with-psblas=PSB-INSTALL-DIR
</div> </div>
<!--l. 110--><p class="nopar" > <span <!--l. 115--><p class="nopar" > <span
class="cmr-12">which assumes that the various MPI compilers and support libraries are available in</span> class="cmr-12">which assumes that the various MPI compilers and support libraries are available in</span>
<span <span
class="cmr-12">the standard directories on the system, and specifies only the PSBLAS install directory</span> class="cmr-12">the standard directories on the system, and specifies only the PSBLAS install directory</span>
@ -61,7 +61,7 @@ class="cmtt-12">./configure</span><span
class="cmtt-12">&#x00A0;--help</span></span></span><span class="cmtt-12">&#x00A0;--help</span></span></span><span
class="cmr-12">, which</span> class="cmr-12">, which</span>
<span <span
class="cmr-12">produces: </span><!--l. 120--><div class="lstinputlisting"> class="cmr-12">produces: </span><!--l. 126--><div class="lstinputlisting">
<a <a
id="x10-9001"></a> id="x10-9001"></a>
<span <span
@ -4237,7 +4237,7 @@ class="cmtt-12">issues</span><span
class="cmtt-12">&#x003E;.</span> class="cmtt-12">&#x003E;.</span>
</div> </div>
<!--l. 122--><p class="noindent" ><span <!--l. 128--><p class="noindent" ><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="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="cmtt-12">/opt</span></span></span> <span
class="cmr-12">directory and is</span> class="cmr-12">directory and is</span>
@ -4252,7 +4252,7 @@ class="cmr-12">might be configured with:</span>
./configure&#x00A0;--with-psblas=/opt/psblas-3.5/&#x00A0;\ ./configure&#x00A0;--with-psblas=/opt/psblas-3.5/&#x00A0;\
&#x00A0;<br />--with-umfpackincdir=/usr/include/suitesparse/ &#x00A0;<br />--with-umfpackincdir=/usr/include/suitesparse/
</div> </div>
<!--l. 134--><p class="nopar" > <span <!--l. 140--><p class="nopar" > <span
class="cmr-12">Once the configure script has completed execution, it will have generated the file</span> class="cmr-12">Once the configure script has completed execution, it will have generated the file</span>
<span class="obeylines-h"><span class="verb"><span <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
@ -4261,7 +4261,7 @@ class="cmr-12">which will then be used by all Makefiles in the directory tree; t
class="cmr-12">copied in the install directory under the name </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">copied in the install directory under the name </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">Make.inc.AMG4PSBLAS</span></span></span><span class="cmtt-12">Make.inc.AMG4PSBLAS</span></span></span><span
class="cmr-12">.</span> class="cmr-12">.</span>
<!--l. 141--><p class="indent" > <span <!--l. 147--><p class="indent" > <span
class="cmr-12">To use the MUMPS solver package, the user has to add the appropriate options to</span> class="cmr-12">To use the MUMPS solver package, the user has to add the appropriate options to</span>
<span <span
class="cmr-12">the configure script; by default we are looking for the libraries </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">the configure script; by default we are looking for the libraries </span><span class="obeylines-h"><span class="verb"><span
@ -4281,7 +4281,7 @@ class="cmtt-12">--with-extra-libs</span></span></span> <span
class="cmr-12">configure</span> class="cmr-12">configure</span>
<span <span
class="cmr-12">option.</span> class="cmr-12">option.</span>
<!--l. 149--><p class="indent" > <span <!--l. 155--><p class="indent" > <span
class="cmr-12">To build the library the user will now enter</span> class="cmr-12">To build the library the user will now enter</span>
@ -4289,7 +4289,7 @@ class="cmr-12">To build the library the user will now enter</span>
<div class="verbatim" id="verbatim-3"> <div class="verbatim" id="verbatim-3">
make make
</div> </div>
<!--l. 157--><p class="nopar" > <span <!--l. 163--><p class="nopar" > <span
class="cmr-12">followed (optionally) by</span> class="cmr-12">followed (optionally) by</span>
@ -4297,11 +4297,11 @@ class="cmr-12">followed (optionally) by</span>
<div class="verbatim" id="verbatim-4"> <div class="verbatim" id="verbatim-4">
make&#x00A0;install make&#x00A0;install
</div> </div>
<!--l. 167--><p class="nopar" > <!--l. 173--><p class="nopar" >
<!--l. 169--><div class="crosslinks"><p class="noindent"><span <!--l. 175--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu4.html" ><span href="userhtmlsu4.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -4318,6 +4318,6 @@ class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu3.html" ><span href="userhtmlse3.html#userhtmlsu3.html" ><span
class="cmr-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 169--><p class="indent" > <a <!--l. 175--><p class="indent" > <a
id="tailuserhtmlsu3.html"></a> id="tailuserhtmlsu3.html"></a>
</body></html> </body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 169--><div class="crosslinks"><p class="noindent"><span <!--l. 175--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu5.html" ><span href="userhtmlsu5.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -31,7 +31,7 @@ class="cmr-12">] </span></p></div>
class="cmr-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="cmr-12">Bug reporting</span></h4> class="cmr-12">Bug reporting</span></h4>
<!--l. 170--><p class="noindent" ><span <!--l. 176--><p class="noindent" ><span
class="cmr-12">If you find any bugs in our codes, please report them through our issues page</span> class="cmr-12">If you find any bugs in our codes, please report them through our issues page</span>
<span <span
class="cmr-12">on</span><br class="cmr-12">on</span><br
@ -39,7 +39,7 @@ 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. 174--><p class="indent" > <span <!--l. 180--><p class="indent" > <span
class="cmr-12">To enable us to track the bug, please provide a log from the failing application, the</span> class="cmr-12">To enable us to track the bug, please provide a log from the failing application, the</span>
<span <span
class="cmr-12">test conditions, and ideally a self-contained test program reproducing the</span> class="cmr-12">test conditions, and ideally a self-contained test program reproducing the</span>
@ -48,7 +48,7 @@ class="cmr-12">issue.</span>
<!--l. 178--><div class="crosslinks"><p class="noindent"><span <!--l. 184--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu5.html" ><span href="userhtmlsu5.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -65,6 +65,6 @@ class="cmr-12">] [</span><a
href="userhtmlse3.html#userhtmlsu4.html" ><span href="userhtmlse3.html#userhtmlsu4.html" ><span
class="cmr-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 178--><p class="indent" > <a <!--l. 184--><p class="indent" > <a
id="tailuserhtmlsu4.html"></a> id="tailuserhtmlsu4.html"></a>
</body></html> </body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css"> <link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body </head><body
> >
<!--l. 178--><div class="crosslinks"><p class="noindent"><span <!--l. 184--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu4.html" ><span href="userhtmlsu4.html" ><span
class="cmr-12">prev</span></a><span class="cmr-12">prev</span></a><span
@ -28,7 +28,7 @@ class="cmr-12">] </span></p></div>
class="cmr-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="cmr-12">Example and test programs</span></h4> class="cmr-12">Example and test programs</span></h4>
<!--l. 179--><p class="noindent" ><span <!--l. 185--><p class="noindent" ><span
class="cmr-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="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
@ -64,7 +64,7 @@ class="cmtt-12">runs</span></span></span> <span
class="cmr-12">subdirectories, to experiment with the full range</span> class="cmr-12">subdirectories, to experiment with the full range</span>
<span <span
class="cmr-12">of preconditioners implemented in the package.</span></dd></dl> class="cmr-12">of preconditioners implemented in the package.</span></dd></dl>
<!--l. 192--><p class="noindent" ><span <!--l. 198--><p class="noindent" ><span
class="cmr-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="cmr-12">directories contain sample programs that read sparse matrices from files,</span> class="cmr-12">directories contain sample programs that read sparse matrices from files,</span>

@ -25,7 +25,7 @@ class="cmr-12">Examples</span></h4>
<!--l. 109--><p class="noindent" ><span <!--l. 109--><p class="noindent" ><span
class="cmr-12">The code reported in Figure</span><span class="cmr-12">The code reported in Figure</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x14-130011"><span href="#x14-13001r1"><span
class="cmr-12">1</span><!--tex4ht:ref: fig:ex1 --></a> <span class="cmr-12">1</span><!--tex4ht:ref: fig:ex1 --></a> <span
class="cmr-12">shows how to set and apply the default multilevel</span> class="cmr-12">shows how to set and apply the default multilevel</span>
<span <span
@ -33,27 +33,33 @@ class="cmr-12">preconditioner available in the real double precision version of
<span <span
class="cmr-12">(see Table</span><span class="cmr-12">(see Table</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse4.html#x13-120151"><span href="userhtmlse4.html#x13-12015r1"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">). This preconditioner is chosen by simply specifying </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">). This preconditioner is chosen by simply specifying </span><span class="lstinline"></span><span
class="cmtt-12">&#8217;ML&#8217;</span></span></span> <span class="cmtt-12">&#8217;</span><span
class="cmtt-12">ML</span><span
class="cmtt-12">&#8217;</span> <span
class="cmr-12">as the</span> class="cmr-12">as the</span>
<span <span
class="cmr-12">second argument of </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">second argument of </span><span class="lstinline"></span><span
class="cmtt-12">P%init</span></span></span> <span class="cmtt-12">P</span><span
class="cmr-12">(a call to </span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">%</span><span
class="cmtt-12">P%set</span></span></span> <span class="cmtt-12">init</span> <span
class="cmr-12">(a call to </span><span class="lstinline"></span><span
class="cmtt-12">P</span><span
class="cmtt-12">%</span><span
class="cmtt-12">set</span> <span
class="cmr-12">is not needed) and is applied</span> class="cmr-12">is not needed) and is applied</span>
<span <span
class="cmr-12">with the CG solver provided by PSBLAS (the matrix of the system to be</span> class="cmr-12">with the CG solver provided by PSBLAS (the matrix of the system to be</span>
<span <span
class="cmr-12">solved is assumed to be positive definite). As previously observed, the modules</span> class="cmr-12">solved is assumed to be positive definite). As previously observed, the modules</span>
<span class="obeylines-h"><span class="verb"><span <span class="lstinline"></span><span
class="cmtt-12">psb_base_mod</span></span></span><span class="cmtt-12">psb_base_mod</span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">, </span><span class="lstinline"></span><span
class="cmtt-12">amg_prec_mod</span></span></span> <span class="cmtt-12">amg_prec_mod</span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">and </span><span class="lstinline"></span><span
class="cmtt-12">psb_krylov_mod</span></span></span> <span class="cmtt-12">psb_krylov_mod</span> <span
class="cmr-12">must be used by the example</span> class="cmr-12">must be used by the example</span>
<span <span
class="cmr-12">program.</span> class="cmr-12">program.</span>
@ -108,13 +114,12 @@ class="cmr-12">details). If these versions are installed, the corresponding code
<span class="obeylines-h"><span class="verb"><span <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">examples/fileread/</span></span></span><span class="cmtt-12">examples/fileread/</span></span></span><span
class="cmr-12">.</span> class="cmr-12">.</span>
<!--l. 137--><p class="indent" > <hr class="figure"><div class="figure"
>
<a <!--l. 137--><p class="indent" > <a
id="x14-130011"></a> id="x14-13001r1"></a><hr class="float"><div class="float"
>
@ -141,8 +146,8 @@ class="cmr-12">.</span>
&#x00A0;<br />...&#x00A0;... &#x00A0;<br />...&#x00A0;...
&#x00A0;<br />! &#x00A0;<br />!
&#x00A0;<br />!&#x00A0;initialize&#x00A0;the&#x00A0;parallel&#x00A0;environment &#x00A0;<br />!&#x00A0;initialize&#x00A0;the&#x00A0;parallel&#x00A0;environment
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_init(ictxt) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_init(ctxt)
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_info(ictxt,iam,np) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_info(ctxt,iam,np)
&#x00A0;<br />...&#x00A0;... &#x00A0;<br />...&#x00A0;...
&#x00A0;<br />! &#x00A0;<br />!
&#x00A0;<br />!&#x00A0;read&#x00A0;and&#x00A0;assemble&#x00A0;the&#x00A0;spd&#x00A0;matrix&#x00A0;A&#x00A0;and&#x00A0;the&#x00A0;right-hand&#x00A0;side&#x00A0;b &#x00A0;<br />!&#x00A0;read&#x00A0;and&#x00A0;assemble&#x00A0;the&#x00A0;spd&#x00A0;matrix&#x00A0;A&#x00A0;and&#x00A0;the&#x00A0;right-hand&#x00A0;side&#x00A0;b
@ -174,27 +179,28 @@ class="cmr-12">.</span>
&#x00A0;<br />&#x00A0;&#x00A0;...&#x00A0;... &#x00A0;<br />&#x00A0;&#x00A0;...&#x00A0;...
&#x00A0;<br />! &#x00A0;<br />!
&#x00A0;<br />!&#x00A0;exit&#x00A0;the&#x00A0;parallel&#x00A0;environment &#x00A0;<br />!&#x00A0;exit&#x00A0;the&#x00A0;parallel&#x00A0;environment
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_exit(ictxt) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_exit(ctxt)
&#x00A0;<br />&#x00A0;&#x00A0;stop &#x00A0;<br />&#x00A0;&#x00A0;stop
</div> </div>
<!--l. 193--><p class="nopar" > <!--l. 248--><p class="nopar" >
</div> </div>
<br /> <div class="caption" <br /> <div class="caption"
><span class="id">Figure&#x00A0;1: </span><span ><span class="id">Listing 1: </span><span
class="content">setup and application of the default multilevel preconditioner (example 1). </span></div><!--tex4ht:label?: x14-130011 --> class="content">setup and application of the default multilevel preconditioner (example 1).
</span></div><!--tex4ht:label?: x14-13001r1 -->
</div> </div>
<!--l. 199--><p class="indent" > </div><hr class="endfigure"> </div><hr class="endfloat" />
<!--l. 201--><p class="indent" > <span <!--l. 257--><p class="indent" > <span
class="cmr-12">Different versions of the multilevel preconditioner can be obtained by changing the</span> class="cmr-12">Different versions of the multilevel preconditioner can be obtained by changing the</span>
<span <span
class="cmr-12">default values of the preconditioner parameters. The code reported in Figure</span><span class="cmr-12">default values of the preconditioner parameters. The code reported in Figure</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x14-130022"><span href="#x14-13002r2"><span
class="cmr-12">2</span><!--tex4ht:ref: fig:ex2 --></a> <span class="cmr-12">2</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmr-12">shows</span> class="cmr-12">shows</span>
<span <span
@ -207,15 +213,17 @@ class="cmr-12">that the ILU(0) factorization (plus triangular solve) is used as
class="cmr-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</span>
<span <span
class="cmr-12">and set by</span><span class="cmr-12">and set by</span><span
class="cmr-12">&#x00A0;</span><span class="obeylines-h"><span class="verb"><span class="cmr-12">&#x00A0;</span><span class="lstinline"></span><span
class="cmtt-12">P%init</span></span></span><span class="cmtt-12">P</span><span
class="cmtt-12">%</span><span
class="cmtt-12">init</span><span
class="cmr-12">. Furthermore, specifying block-Jacobi as coarsest-level</span> class="cmr-12">. Furthermore, specifying block-Jacobi as coarsest-level</span>
<span <span
class="cmr-12">solver implies that the coarsest-level matrix is distributed among the processes.</span> class="cmr-12">solver implies that the coarsest-level matrix is distributed among the processes.</span>
<span <span
class="cmr-12">Figure</span><span class="cmr-12">Figure</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x14-130033"><span href="#x14-13003r3"><span
class="cmr-12">3</span><!--tex4ht:ref: fig:ex3 --></a> <span class="cmr-12">3</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmr-12">shows how to set a W-cycle preconditioner using the Coarsening</span> class="cmr-12">shows how to set a W-cycle preconditioner using the Coarsening</span>
<span <span
@ -231,10 +239,10 @@ class="cmr-12">distributed matrices, and by default it is used on replicated one
<span <span
class="cmr-12">fragments shown in Figures</span><span class="cmr-12">fragments shown in Figures</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x14-130022"><span href="#x14-13002r2"><span
class="cmr-12">2</span><!--tex4ht:ref: fig:ex2 --></a> <span class="cmr-12">2</span><!--tex4ht:ref: fig:ex2 --></a> <span
class="cmr-12">and </span><a class="cmr-12">and </span><a
href="#x14-130033"><span href="#x14-13003r3"><span
class="cmr-12">3</span><!--tex4ht:ref: fig:ex3 --></a> <span class="cmr-12">3</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmr-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
@ -243,10 +251,10 @@ class="cmr-12">too. </span><span
class="cmbx-12">DA CORREGGERE NEL CODICE ESEMPIO</span> class="cmbx-12">DA CORREGGERE NEL CODICE ESEMPIO</span>
<span <span
class="cmbx-12">3</span> class="cmbx-12">3</span>
<!--l. 225--><p class="indent" > <span <!--l. 281--><p class="indent" > <span
class="cmr-12">Finally, Figure</span><span class="cmr-12">Finally, Figure</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="#x14-130044"><span href="#x14-13004r4"><span
class="cmr-12">4</span><!--tex4ht:ref: fig:ex4 --></a> <span class="cmr-12">4</span><!--tex4ht:ref: fig:ex4 --></a> <span
class="cmr-12">shows the setup of a one-level additive Schwarz preconditioner,</span> class="cmr-12">shows the setup of a one-level additive Schwarz preconditioner,</span>
<span <span
@ -258,62 +266,59 @@ class="cmr-12">nonsymmetric. The corresponding example program is available in t
<span class="obeylines-h"><span class="verb"><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="cmr-12">.</span> class="cmr-12">.</span>
<!--l. 232--><p class="indent" > <span <!--l. 288--><p class="indent" > <span
class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix and</span> class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix</span>
<span <span
class="cmr-12">the right-hand side are generated by discretizing a PDE with Dirichlet boundary</span> class="cmr-12">and the right-hand side are generated by discretizing a PDE with Dirichlet</span>
<span <span
class="cmr-12">conditions are also available in the directory </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">boundary conditions are also available in the directory </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">examples/pdegen</span></span></span><span class="cmtt-12">examples/pdegen</span></span></span><span
class="cmr-12">.</span> class="cmr-12">.</span>
<!--l. 236--><p class="indent" > <hr class="figure"><div class="figure"
>
<a <!--l. 291--><p class="indent" > <a
id="x14-130022"></a> id="x14-13002r2"></a><hr class="float"><div class="float"
>
<div class="center" <div class="center"
> >
<!--l. 237--><p class="noindent" > <!--l. 305--><p class="noindent" >
<div class="minipage"><div class="verbatim" id="verbatim-6"> <div class="minipage"><div class="verbatim" id="verbatim-6">
...&#x00A0;... ...&#x00A0;...
&#x00A0;<br />!&#x00A0;build&#x00A0;a&#x00A0;V-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;1&#x00A0;block-Jacobi&#x00A0;sweep&#x00A0;(with &#x00A0;<br />!&#x00A0;build&#x00A0;a&#x00A0;V-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;1&#x00A0;block-Jacobi&#x00A0;sweep&#x00A0;(with
&#x00A0;<br />!&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;blocks)&#x00A0;as&#x00A0;pre-&#x00A0;and&#x00A0;post-smoother,&#x00A0;and&#x00A0;8&#x00A0;&#x00A0;block-Jacobi &#x00A0;<br />!&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;blocks)&#x00A0;as&#x00A0;pre-&#x00A0;and&#x00A0;post-smoother,&#x00A0;and&#x00A0;8&#x00A0;&#x00A0;block-Jacobi
&#x00A0;<br />!&#x00A0;sweeps&#x00A0;(with&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;blocks)&#x00A0;as&#x00A0;coarsest-level&#x00A0;solver &#x00A0;<br />!&#x00A0;sweeps&#x00A0;(with&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;blocks)&#x00A0;as&#x00A0;coarsest-level&#x00A0;solver
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%init(&#8217;ML&#8217;,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%init(&#8217;ML&#8217;,info)
&#x00A0;<br />&#x00A0;&#x00A0;call_P%set(&#8217;SMOOTHER_TYPE&#8217;,&#8217;BJAC&#8217;,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;SMOOTHER_TYPE&#8217;,&#8217;BJAC&#8217;,info)
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;COARSE_SOLVE&#8217;,&#8217;BJAC&#8217;,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;COARSE_SOLVE&#8217;,&#8217;BJAC&#8217;,info)
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;COARSE_SWEEPS&#8217;,8,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%set(&#8217;COARSE_SWEEPS&#8217;,8,info)
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%hierarchy_build(A,desc_A,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%hierarchy_build(A,desc_A,info)
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
&#x00A0;<br />...&#x00A0;... &#x00A0;<br />...&#x00A0;...
</div> </div>
<!--l. 252--><p class="nopar" ></div> <!--l. 320--><p class="nopar" ></div></div>
<br /><div class="caption" <br /><div class="caption"
><span class="id">Figure&#x00A0;2: </span><span ><span class="id">Listing 2: </span><span
class="content">setup of a multilevel preconditioner based on the default decoupled coarsening</span></div><!--tex4ht:label?: x14-130022 --> class="content">setup of a multilevel preconditioner based on the default decoupled coarsening</span></div><!--tex4ht:label?: x14-13002r2 -->
</div>
<!--l. 258--><p class="indent" > </div><hr class="endfigure"> </div><hr class="endfloat" />
<!--l. 260--><p class="indent" > <hr class="figure"><div class="figure"
>
<a <!--l. 327--><p class="indent" > <a
id="x14-130033"></a> id="x14-13003r3"></a><hr class="float"><div class="float"
>
<div class="center" <div class="center"
> >
<!--l. 261--><p class="noindent" > <!--l. 344--><p class="noindent" >
<div class="minipage"><div class="verbatim" id="verbatim-7"> <div class="minipage"><div class="verbatim" id="verbatim-7">
...&#x00A0;... ...&#x00A0;...
&#x00A0;<br />!&#x00A0;build&#x00A0;a&#x00A0;W-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;2&#x00A0;hybrid&#x00A0;Gauss-Seidel&#x00A0;sweeps &#x00A0;<br />!&#x00A0;build&#x00A0;a&#x00A0;W-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;2&#x00A0;hybrid&#x00A0;Gauss-Seidel&#x00A0;sweeps
@ -330,29 +335,27 @@ class="content">setup of a multilevel preconditioner based on the default decoup
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
&#x00A0;<br />...&#x00A0;... &#x00A0;<br />...&#x00A0;...
</div> </div>
<!--l. 279--><p class="nopar" ></div> <!--l. 362--><p class="nopar" ></div></div>
<br /> <div class="caption" <br /> <div class="caption"
><span class="id">Figure&#x00A0;3: </span><span ><span class="id">Listing 3: </span><span
class="content">setup of a multilevel preconditioner based on the coupled coarsening based class="content">setup of a multilevel preconditioner based on the coupled coarsening based
on weighted matching</span></div><!--tex4ht:label?: x14-130033 --> on weighted matching</span></div><!--tex4ht:label?: x14-13003r3 -->
</div>
<!--l. 284--><p class="indent" > </div><hr class="endfigure"> </div><hr class="endfloat" />
<!--l. 286--><p class="indent" > <hr class="figure"><div class="figure"
>
<a <!--l. 369--><p class="indent" > <a
id="x14-130044"></a> id="x14-13004r4"></a><hr class="float"><div class="float"
>
<div class="center" <div class="center"
> >
<!--l. 287--><p class="noindent" > <!--l. 386--><p class="noindent" >
<div class="minipage"><div class="verbatim" id="verbatim-8"> <div class="minipage"><div class="verbatim" id="verbatim-8">
...&#x00A0;... ...&#x00A0;...
&#x00A0;<br />!&#x00A0;set&#x00A0;RAS&#x00A0;with&#x00A0;overlap&#x00A0;2&#x00A0;and&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;local&#x00A0;blocks &#x00A0;<br />!&#x00A0;set&#x00A0;RAS&#x00A0;with&#x00A0;overlap&#x00A0;2&#x00A0;and&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;local&#x00A0;blocks
@ -363,15 +366,14 @@ on weighted matching</span></div><!--tex4ht:label?: x14-130033 -->
&#x00A0;<br />!&#x00A0;solve&#x00A0;Ax=b&#x00A0;with&#x00A0;preconditioned&#x00A0;BiCGSTAB &#x00A0;<br />!&#x00A0;solve&#x00A0;Ax=b&#x00A0;with&#x00A0;preconditioned&#x00A0;BiCGSTAB
&#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_krylov(&#8217;BICGSTAB&#8217;,A,P,b,x,tol,desc_A,info) &#x00A0;<br />&#x00A0;&#x00A0;call&#x00A0;psb_krylov(&#8217;BICGSTAB&#8217;,A,P,b,x,tol,desc_A,info)
</div> </div>
<!--l. 299--><p class="nopar" ></div> <!--l. 398--><p class="nopar" ></div></div>
<br /> <div class="caption" <br /> <div class="caption"
><span class="id">Figure&#x00A0;4: </span><span ><span class="id">Listing 4: </span><span
class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x14-130044 --> class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x14-13004r4 -->
</div>
<!--l. 304--><p class="indent" > </div><hr class="endfigure"> </div><hr class="endfloat" />

@ -28,12 +28,22 @@ class="cmr-12">Method init</span></h4>
<div class="center" <div class="center"
> >
<!--l. 45--><p class="noindent" > <!--l. 45--><p class="noindent" >
<!--l. 46--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 46--><p class="noindent" ><span class="lstinline"></span><span
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;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">init</span><span
class="cmtt-12">(</span><span
class="cmtt-12">contxt</span><span
class="cmtt-12">,</span><span
class="cmtt-12">ptype</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">)</span></div>
<!--l. 49--><p class="noindent" ><span <!--l. 49--><p class="noindent" ><span
class="cmr-12">This method allocates and initializes the preconditioner </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">This method allocates and initializes the preconditioner </span><span class="lstinline"></span><span
class="cmtt-12">p</span></span></span><span class="cmtt-12">p</span><span
class="cmr-12">, according to the</span> class="cmr-12">, according to the</span>
<span <span
class="cmr-12">preconditioner type chosen by the user.</span> class="cmr-12">preconditioner type chosen by the user.</span>
@ -45,11 +55,18 @@ cellspacing="0" cellpadding="0"
id="TBL-2-1"><col id="TBL-2-1"><col
id="TBL-2-2"></colgroup><tr id="TBL-2-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:wrap; text-align:left;" id="TBL-2-1-1" style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:wrap; text-align:left;" id="TBL-2-1-1"
class="td11"><!--l. 57--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 57--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">icontxt</span></span></span> </td> <td style="white-space:wrap; text-align:left;" id="TBL-2-1-2" class="cmtt-12">contxt</span> </td> <td style="white-space:wrap; text-align:left;" id="TBL-2-1-2"
class="td11"><!--l. 57--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 57--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer,</span><span class="cmtt-12">type</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">(</span><span
class="cmtt-12">psb_ctxt_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-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"
@ -57,11 +74,18 @@ class="td11"><!--l. 58--><p class="noindent" > </td><td style="white-space
class="td11"><!--l. 58--><p class="noindent" ><span class="td11"><!--l. 58--><p class="noindent" ><span
class="cmr-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="lstinline"></span><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> </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="lstinline"></span><span
class="cmtt-12">character(len=*),</span><span class="cmtt-12">character</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">(</span><span
class="cmtt-12">len</span><span
class="cmtt-12">=*),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span> <span
class="cmr-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"
@ -69,7 +93,7 @@ class="td11"><!--l. 60--><p class="noindent" > </td><td style="white-space
class="td11"><!--l. 60--><p class="noindent" ><span class="td11"><!--l. 60--><p class="noindent" ><span
class="cmr-12">The type of preconditioner. Its values are specified in Table</span><span class="cmr-12">The type of preconditioner. Its values are specified in Table</span><span
class="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse4.html#x13-120151"><span href="userhtmlse4.html#x13-12015r1"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">.</span> </td> class="cmr-12">.</span> </td>
</tr><tr </tr><tr
@ -79,11 +103,16 @@ class="td11"><!--l. 62--><p class="noindent" ><span
class="cmr-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="lstinline"></span><span
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-2-6-2" class="cmtt-12">info</span> </td><td style="white-space:wrap; text-align:left;" id="TBL-2-6-2"
class="td11"><!--l. 63--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 63--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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"

File diff suppressed because it is too large Load Diff

@ -35,21 +35,31 @@ class="cmr-12">_build</span></h4>
<div class="center" <div class="center"
> >
<!--l. 574--><p class="noindent" > <!--l. 574--><p class="noindent" >
<!--l. 575--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span <!--l. 575--><p class="noindent" ><span class="lstinline"></span><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;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">hierarchy_build</span><span
class="cmtt-12">(</span><span
class="cmtt-12">a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">desc_a</span><span
class="cmtt-12">,</span><span
class="cmtt-12">info</span><span
class="cmtt-12">)</span><br />
</div> </div>
<!--l. 578--><p class="noindent" ><span <!--l. 578--><p class="noindent" ><span
class="cmr-12">This method builds the hierarchy of matrices and restriction/prolongation operators for</span> class="cmr-12">This method builds the hierarchy of matrices and restriction/prolongation operators for</span>
<span <span
class="cmr-12">the multilevel preconditioner </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">the multilevel preconditioner </span><span class="lstinline"></span><span
class="cmtt-12">p</span></span></span><span class="cmtt-12">p</span><span
class="cmr-12">, according to the requirements made by the user</span> class="cmr-12">, according to the requirements made by the user</span>
<span <span
class="cmr-12">through the methods </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">through the methods </span><span class="lstinline"></span><span
class="cmtt-12">init</span></span></span> <span class="cmtt-12">init</span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">and </span><span class="lstinline"></span><span
class="cmtt-12">set</span></span></span><span class="cmtt-12">set</span><span
class="cmr-12">.</span> class="cmr-12">.</span>
<!--l. 583--><p class="noindent" ><span <!--l. 583--><p class="noindent" ><span
class="cmbx-12">Arguments</span> class="cmbx-12">Arguments</span>
@ -59,13 +69,20 @@ 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. 586--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 586--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-11-1-2"
class="td11"><!--l. 586--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 586--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type(psb_</span></span></span><span class="cmtt-12">type</span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span class="cmtt-12">(</span><span
class="cmtt-12">spmat_type),</span><span class="cmtt-12">psb_</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmti-12">x</span><span class="lstinline"></span><span
class="cmtt-12">spmat_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-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"
@ -76,8 +93,11 @@ class="cmr-12">The sparse matrix structure containing the local part of the matr
class="cmr-12">to be preconditioned. Note that </span><span class="cmr-12">to be preconditioned. Note that </span><span
class="cmti-12">x </span><span class="cmti-12">x </span><span
class="cmr-12">must be chosen according to the</span> class="cmr-12">must be chosen according to the</span>
<span <span class="lstinline"></span><span
class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS</span> class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
<span <span
class="cmr-12">under use. See the PSBLAS 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="cmr-12">[</span><a class="cmr-12">[</span><a
@ -87,18 +107,25 @@ class="cmr-12">]</span></span><span
class="cmr-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. 592--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 592--><p class="noindent" ><span class="lstinline"></span><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></td><td style="white-space:wrap; text-align:left;" id="TBL-11-3-2"
class="td11"><!--l. 592--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 592--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">type(psb_desc_type),</span><span class="cmtt-12">type</span><span
class="cmtt-12">&#x00A0;intent(in)</span></span></span><span class="cmtt-12">(</span><span
class="cmtt-12">psb_desc_type</span><span
class="cmtt-12">),</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">)</span><span
class="cmr-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. 593--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-4-2" class="td11"><!--l. 593--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-4-2"
class="td11"><!--l. 593--><p class="noindent" ><span class="td11"><!--l. 593--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
class="cmtt-12">a</span></span></span><span class="cmtt-12">a</span><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span> class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span <span
class="cmr-12">for details </span><span class="cite"><span class="cmr-12">for details </span><span class="cite"><span
@ -109,16 +136,21 @@ class="cmr-12">]</span></span><span
class="cmr-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. 596--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 595--><p class="noindent" ><span class="lstinline"></span><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> </td><td style="white-space:wrap; text-align:left;" id="TBL-11-5-2"
class="td11"><!--l. 596--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span class="td11"><!--l. 595--><p class="noindent" ><span class="lstinline"></span><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">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">out</span><span
class="cmtt-12">)</span><span
class="cmr-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. 597--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-6-2" class="td11"><!--l. 596--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-11-6-2"
class="td11"><!--l. 597--><p class="noindent" ><span class="td11"><!--l. 596--><p class="noindent" ><span
class="cmr-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="cmr-12">&#x00A0;</span><a class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x26-300007"><span href="userhtmlse7.html#x26-300007"><span
@ -133,7 +165,7 @@ class="td11"> </td> </tr></table></div>
<!--l. 603--><div class="crosslinks"><p class="noindent"><span <!--l. 602--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a class="cmr-12">[</span><a
href="userhtmlsu10.html" ><span href="userhtmlsu10.html" ><span
class="cmr-12">next</span></a><span class="cmr-12">next</span></a><span
@ -150,6 +182,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu9.html" ><span href="userhtmlse5.html#userhtmlsu9.html" ><span
class="cmr-12">up</span></a><span class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div> class="cmr-12">] </span></p></div>
<!--l. 603--><p class="indent" > <a <!--l. 602--><p class="indent" > <a
id="tailuserhtmlsu9.html"></a> id="tailuserhtmlsu9.html"></a>
</body></html> </body></html>

@ -87,7 +87,7 @@ TOPFILE = userguide.tex
HTMLFILE = userhtml.tex HTMLFILE = userhtml.tex
SECFILE = abstract.tex overview.tex distribution.tex newobjects.tex\ SECFILE = abstract.tex overview.tex distribution.tex newobjects.tex\
building.tex gettingstarted.tex userinterface.tex \ building.tex gettingstarted.tex userinterface.tex \
errors.tex bibliography.tex license.tex errors.tex bibliography.tex license.tex covenant.tex
FIGDIR = figures FIGDIR = figures
XPDFFLAGS = XPDFFLAGS =

@ -38,7 +38,7 @@ The following base libraries are needed:
behaviour of the BLAS interface, so they are not optimized for any behaviour of the BLAS interface, so they are not optimized for any
particular platform, and should only be used as a last particular platform, and should only be used as a last
resort. Note that BLAS computations form a relatively small part of resort. Note that BLAS computations form a relatively small part of
the AMG4PSBLAS/PSBLAS computations; they are however critical when using the AMG4PSBLAS/\-PSBLAS computations; they are however critical when using
preconditioners based on MUMPS, UMFPACK or SuperLU third party preconditioners based on MUMPS, UMFPACK or SuperLU third party
libraries. Note that UMFPACK requires a full LAPACK library; our libraries. Note that UMFPACK requires a full LAPACK library; our
experience is that configuring ATLAS for building full LAPACK does not experience is that configuring ATLAS for building full LAPACK does not
@ -105,9 +105,15 @@ in the main directory to generate the necessary makefile.
\textbf{DA RISCRIVERE} \textbf{DA RISCRIVERE}
As a minimal example consider the following: As a minimal example consider the following:
\ifpdf
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{console}
./configure --with-psblas=PSB-INSTALL-DIR
\end{minted}
\else
\begin{verbatim} \begin{verbatim}
./configure --with-psblas=PSB-INSTALL-DIR ./configure --with-psblas=PSB-INSTALL-DIR
\end{verbatim} \end{verbatim}
\fi
which assumes that the various MPI compilers and support libraries are which assumes that the various MPI compilers and support libraries are
available in the standard directories on the system, and specifies available in the standard directories on the system, and specifies
only the PSBLAS install directory (note that the latter directory must only the PSBLAS install directory (note that the latter directory must

@ -0,0 +1,113 @@
\section{Contributor Covenant Code of Conduct\label{sec:codeofconduct}}
\markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
{\textsc{\ref{sec:codeofconduct} Contributor Covenant Code of Conduct}}
\paragraph{Our Pledge}
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
\begin{itemize}
\item Demonstrating empathy and kindness toward other people
\item Being respectful of differing opinions, viewpoints, and experiences
\item Giving and gracefully accepting constructive feedback
\item Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
\item Focusing on what is best not just for us as individuals, but for the
overall community
\end{itemize}
Examples of unacceptable behavior include:
\begin{itemize}
\item The use of sexualized language or imagery, and sexual attention or
advances of any kind
\item Trolling, insulting or derogatory comments, and personal or political attacks
\item Public or private harassment
\item Publishing others private information, such as a physical or email
address, without their explicit permission
\item Other conduct which could reasonably be considered inappropriate in a
professional setting
\end{itemize}
\paragraph{Enforcement Responsibilities}
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
\href{mailto:eocoe@na.iac.cnr.it}{eocoe@na.iac.cnr.it}.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
\paragraph{Enforcement Guidelines}
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
\begin{enumerate}
\item Correction
Community Impact: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
Consequence: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
\item Warning
Community Impact: A violation through a single incident or series
of actions.
Consequence: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
\item Temporary Ban
Community Impact: A serious violation of community standards, including
sustained inappropriate behavior.
Consequence: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
\item Permanent Ban
Community Impact: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
Consequence: A permanent ban from any sort of public interaction within
the community.
\end{enumerate}
\paragraph{Attribution}
This Code of Conduct is adapted from the Contributor Covenant,
version 2.0, available at
\href{https://www.contributor-covenant.org/version/2/0/code_of_conduct.html}{https://www.contributor-covenant.org/version/2/0/code\_of\_conduct.html}.
Community Impact Guidelines were inspired by
Mozillas code of conduct enforcement ladder.
For answers to common questions about this code of conduct, see the FAQ at
\href{https://www.contributor-covenant.org/faq}{https://www.contributor-covenant.org/faq}. Translations are available
at \href{https://www.contributor-covenant.org/translations}{https://www.contributor-covenant.org/translations}.
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "userguide"
%%% End:

@ -15,18 +15,18 @@ The following steps are required:
following an object-oriented approach. following an object-oriented approach.
\item \emph{Allocate and initialize the preconditioner data structure, according to \item \emph{Allocate and initialize the preconditioner data structure, according to
a preconditioner type chosen by the user}. This is performed by the routine a preconditioner type chosen by the user}. This is performed by the routine
\verb|init|, which also sets defaults for each preconditioner \fortinline|init|, which also sets defaults for each preconditioner
type selected by the user. The preconditioner types and the defaults associated type selected by the user. The preconditioner types and the defaults associated
with them are given in Table~\ref{tab:precinit}, where the strings used by with them are given in Table~\ref{tab:precinit}, where the strings used by
\verb|init| to identify the preconditioner types are also given. \fortinline|init| to identify the preconditioner types are also given.
Note that these strings are valid also if uppercase letters are substituted by Note that these strings are valid also if uppercase letters are substituted by
corresponding lowercase ones. corresponding lowercase ones.
\item \emph{Modify the selected preconditioner type, by properly setting \item \emph{Modify the selected preconditioner type, by properly setting
preconditioner parameters.} This is performed by the routine \verb|set|. preconditioner parameters.} This is performed by the routine \fortinline|set|.
This routine must be called only if the user wants to modify the default values This routine must be called only if the user wants to modify the default values
of the parameters associated with the selected preconditioner type, to obtain a variant of the parameters associated with the selected preconditioner type, to obtain a variant
of that preconditioner. Examples of use of \verb|set| are given in of that preconditioner. Examples of use of \fortinline|set| are given in
Section~\ref{sec:examples}; a complete list of all the Section~\ref{sec:examples}; a complete list of all the
preconditioner parameters and their allowed and default values is provided in preconditioner parameters and their allowed and default values is provided in
Section~\ref{sec:userinterface}, Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}. Section~\ref{sec:userinterface}, Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.
@ -34,18 +34,18 @@ The following steps are required:
is multilevel, then two steps must be performed, as specified next. is multilevel, then two steps must be performed, as specified next.
\begin{enumerate} \begin{enumerate}
\item[4.1] \emph{Build the AMG hierarchy for a given matrix.} This is \item[4.1] \emph{Build the AMG hierarchy for a given matrix.} This is
performed by the routine \verb|hierarchy_build|. performed by the routine \fortinline|hierarchy_build|.
\item[4.2] \emph{Build the preconditioner for a given matrix.} This is performed \item[4.2] \emph{Build the preconditioner for a given matrix.} This is performed
by the routine \verb|smoothers_build|. by the routine \fortinline|smoothers_build|.
\end{enumerate} \end{enumerate}
If the selected preconditioner is one-level, it is built in a single step, If the selected preconditioner is one-level, it is built in a single step,
performed by the routine \verb|bld|. performed by the routine \fortinline|bld|.
\item \emph{Apply the preconditioner at each iteration of a Krylov solver.} \item \emph{Apply the preconditioner at each iteration of a Krylov solver.}
This is performed by the method \verb|apply|. When using the PSBLAS Krylov solvers, This is performed by the method \fortinline|apply|. When using the PSBLAS Krylov solvers,
this step is completely transparent to the user, since \verb|apply| is called this step is completely transparent to the user, since \fortinline|apply| is called
by the PSBLAS routine implementing the Krylov solver (\verb|psb_krylov|). by the PSBLAS routine implementing the Krylov solver (\fortinline|psb_krylov|).
\item \emph{Free the preconditioner data structure}. This is performed by \item \emph{Free the preconditioner data structure}. This is performed by
the routine \verb|free|. This step is complementary to step 1 and should the routine \fortinline|free|. This step is complementary to step 1 and should
be performed when the preconditioner is no more used. be performed when the preconditioner is no more used.
\end{enumerate} \end{enumerate}
@ -88,11 +88,11 @@ Multilevel &\fortinline|'ML'| & V-cycle with one hybrid forward Gauss-
\end{center} \end{center}
\end{table} \end{table}
Note that the module \verb|amg_prec_mod|, containing the definition of the Note that the module \fortinline|amg_prec_mod|, containing the definition of the
preconditioner data type and the interfaces to the routines of AMG4PSBLAS, preconditioner data type and the interfaces to the routines of AMG4PSBLAS,
must be used in any program calling such routines. must be used in any program calling such routines.
The modules \verb|psb_base_mod|, for the sparse matrix and communication descriptor The modules \fortinline|psb_base_mod|, for the sparse matrix and communication descriptor
data types, and \verb|psb_krylov_mod|, for interfacing with the data types, and \fortinline|psb_krylov_mod|, for interfacing with the
Krylov solvers, must be also used (see Section~\ref{sec:examples}). \\ Krylov solvers, must be also used (see Section~\ref{sec:examples}). \\
\textbf{Remark 1.} Coarsest-level solvers based on the LU factorization, \textbf{Remark 1.} Coarsest-level solvers based on the LU factorization,
@ -109,11 +109,11 @@ on parallel computers.
The code reported in Figure~\ref{fig:ex1} shows how to set and apply the default The code reported in Figure~\ref{fig:ex1} shows how to set and apply the default
multilevel preconditioner available in the real double precision version multilevel preconditioner available in the real double precision version
of AMG4PSBLAS (see Table~\ref{tab:precinit}). This preconditioner is chosen of AMG4PSBLAS (see Table~\ref{tab:precinit}). This preconditioner is chosen
by simply specifying \verb|'ML'| as the second argument of \verb|P%init| by simply specifying \fortinline|'ML'| as the second argument of \fortinline|P%init|
(a call to \verb|P%set| is not needed) and is applied with the CG (a call to \fortinline|P%set| is not needed) and is applied with the CG
solver provided by PSBLAS (the matrix of the system to be solved is solver provided by PSBLAS (the matrix of the system to be solved is
assumed to be positive definite). As previously observed, the modules assumed to be positive definite). As previously observed, the modules
\verb|psb_base_mod|, \verb|amg_prec_mod| and \verb|psb_krylov_mod| \fortinline|psb_base_mod|, \fortinline|amg_prec_mod| and \fortinline|psb_krylov_mod|
must be used by the example program. must be used by the example program.
The part of the code concerning the The part of the code concerning the
@ -134,9 +134,64 @@ precision, versions are obtained with straightforward modifications of the previ
example (see Section~\ref{sec:userinterface} for details). If these versions are installed, example (see Section~\ref{sec:userinterface} for details). If these versions are installed,
the corresponding codes are available in \verb|examples/fileread/|. the corresponding codes are available in \verb|examples/fileread/|.
\begin{figure}[tbp] \begin{listing}[tbp]
\begin{center} \begin{center}
\begin{minipage}{.90\textwidth} \begin{minipage}{.90\textwidth}
\ifpdf
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
use psb_base_mod
use amg_prec_mod
use psb_krylov_mod
... ...
!
! sparse matrix
type(psb_dspmat_type) :: A
! sparse matrix descriptor
type(psb_desc_type) :: desc_A
! preconditioner
type(amg_dprec_type) :: P
! right-hand side and solution vectors
type(psb_d_vect_type) :: b, x
... ...
!
! initialize the parallel environment
call psb_init(ctxt)
call psb_info(ctxt,iam,np)
... ...
!
! read and assemble the spd matrix A and the right-hand side b
! using PSBLAS routines for sparse matrix / vector management
... ...
!
! initialize the default multilevel preconditioner, i.e. V-cycle
! with basic smoothed aggregation, 1 hybrid forward/backward
! GS sweep as pre/post-smoother and UMFPACK as coarsest-level
! solver
call P%init('ML',info)
!
! build the preconditioner
call P%hierarchy_build(A,desc_A,info)
call P%smoothers_build(A,desc_A,info)
!
! set the solver parameters and the initial guess
... ...
!
! solve Ax=b with preconditioned CG
call psb_krylov('CG',A,P,b,x,tol,desc_A,info)
... ...
!
! deallocate the preconditioner
call P%free(info)
!
! deallocate other data structures
... ...
!
! exit the parallel environment
call psb_exit(ctxt)
stop
\end{minted}
\else
{\small {\small
\begin{verbatim} \begin{verbatim}
use psb_base_mod use psb_base_mod
@ -155,8 +210,8 @@ the corresponding codes are available in \verb|examples/fileread/|.
... ... ... ...
! !
! initialize the parallel environment ! initialize the parallel environment
call psb_init(ictxt) call psb_init(ctxt)
call psb_info(ictxt,iam,np) call psb_info(ctxt,iam,np)
... ... ... ...
! !
! read and assemble the spd matrix A and the right-hand side b ! read and assemble the spd matrix A and the right-hand side b
@ -188,15 +243,16 @@ the corresponding codes are available in \verb|examples/fileread/|.
... ... ... ...
! !
! exit the parallel environment ! exit the parallel environment
call psb_exit(ictxt) call psb_exit(ctxt)
stop stop
\end{verbatim} \end{verbatim}
} }
\fi
\end{minipage} \end{minipage}
\caption{setup and application of the default multilevel preconditioner (example 1). \caption{setup and application of the default multilevel preconditioner (example 1).
\label{fig:ex1}} \label{fig:ex1}}
\end{center} \end{center}
\end{figure} \end{listing}
Different versions of the multilevel preconditioner can be obtained by changing Different versions of the multilevel preconditioner can be obtained by changing
the default values of the preconditioner parameters. The code reported in the default values of the preconditioner parameters. The code reported in
@ -205,7 +261,7 @@ which applies 1 block-Jacobi sweep as pre- and post-smoother,
and solves the coarsest-level system with 8 block-Jacobi sweeps. and solves the coarsest-level system with 8 block-Jacobi sweeps.
Note that the ILU(0) factorization (plus triangular solve) is used as Note that the ILU(0) factorization (plus triangular solve) is used as
local solver for the block-Jacobi sweeps, since this is the default associated local solver for the block-Jacobi sweeps, since this is the default associated
with block-Jacobi and set by~\verb|P%init|. with block-Jacobi and set by~\fortinline|P%init|.
Furthermore, specifying block-Jacobi as coarsest-level Furthermore, specifying block-Jacobi as coarsest-level
solver implies that the coarsest-level matrix is distributed solver implies that the coarsest-level matrix is distributed
among the processes. among the processes.
@ -216,7 +272,7 @@ implemented in MUMPS. It is specified that the coarsest-level
matrix is distributed, since MUMPS can be used on both matrix is distributed, since MUMPS can be used on both
replicated and distributed matrices, and by default replicated and distributed matrices, and by default
it is used on replicated ones. it is used on replicated ones.
%Note the use of the parameter \verb|pos| %Note the use of the parameter \fortinline|pos|
%to specify a property only for the pre-smoother or the post-smoother %to specify a property only for the pre-smoother or the post-smoother
%(see Section~\ref{sec:precset} for more details). %(see Section~\ref{sec:precset} for more details).
The code fragments shown in Figures~\ref{fig:ex2} and \ref{fig:ex3} are The code fragments shown in Figures~\ref{fig:ex2} and \ref{fig:ex3} are
@ -232,8 +288,20 @@ The corresponding example program is available in the file
For all the previous preconditioners, example programs where the sparse matrix and For all the previous preconditioners, example programs where the sparse matrix and
the right-hand side are generated by discretizing a PDE with Dirichlet the right-hand side are generated by discretizing a PDE with Dirichlet
boundary conditions are also available in the directory \verb|examples/pdegen|. boundary conditions are also available in the directory \verb|examples/pdegen|.
\vspace{-1em}\begin{listing}[tbh]
\begin{figure}[tbh] \ifpdf%
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
! ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi
! sweeps (with ILU(0) on the blocks) as coarsest-level solver
call P%init('ML',info)
call P%set('SMOOTHER_TYPE','BJAC',info)
call P%set('COARSE_SOLVE','BJAC',info)
call P%set('COARSE_SWEEPS',8,info)
call P%hierarchy_build(A,desc_A,info)
call P%smoothers_build(A,desc_A,info)
\end{minted}
\else%
\begin{center} \begin{center}
\begin{minipage}{.90\textwidth} \begin{minipage}{.90\textwidth}
{\small {\small
@ -243,7 +311,7 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
! ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi ! ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi
! sweeps (with ILU(0) on the blocks) as coarsest-level solver ! sweeps (with ILU(0) on the blocks) as coarsest-level solver
call P%init('ML',info) call P%init('ML',info)
call_P%set('SMOOTHER_TYPE','BJAC',info) call P%set('SMOOTHER_TYPE','BJAC',info)
call P%set('COARSE_SOLVE','BJAC',info) call P%set('COARSE_SOLVE','BJAC',info)
call P%set('COARSE_SWEEPS',8,info) call P%set('COARSE_SWEEPS',8,info)
call P%hierarchy_build(A,desc_A,info) call P%hierarchy_build(A,desc_A,info)
@ -252,12 +320,27 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
\end{verbatim} \end{verbatim}
} }
\end{minipage} \end{minipage}
\caption{setup of a multilevel preconditioner based on the default decoupled coarsening\label{fig:ex2}}
\end{center} \end{center}
\end{figure} \fi\vspace{-2em}%
\caption{setup of a multilevel preconditioner based on the default decoupled coarsening\label{fig:ex2}}
\begin{figure}[h!] \end{listing}\vspace*{-2em}
\begin{listing}[h!]
\ifpdf
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
! as pre- and post-smoother, a distributed coarsest
! matrix, and MUMPS as coarsest-level solver
call P%init('ML',info)
call P%set('PAR_AGGR_ALG','COUPLED',info)
call P%set('ML_CYCLE','WCYCLE',info)
call P%set('SMOOTHER_TYPE','FBGS',info)
call P%set('SMOOTHER_SWEEPS',2,info)
call P%set('COARSE_SOLVE','MUMPS',info)
call P%set('COARSE_MAT','DIST',info)
call P%hierarchy_build(A,desc_A,info)
call P%smoothers_build(A,desc_A,info)
\end{minted}
\else
\begin{center} \begin{center}
\begin{minipage}{.90\textwidth} \begin{minipage}{.90\textwidth}
{\small {\small
@ -279,11 +362,27 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
\end{verbatim} \end{verbatim}
} }
\end{minipage} \end{minipage}
\caption{setup of a multilevel preconditioner based on the coupled coarsening based on weighted matching\label{fig:ex3}}
\end{center} \end{center}
\end{figure} \fi\vspace{-2em}%
\caption{setup of a multilevel preconditioner based on the coupled coarsening based on weighted matching\label{fig:ex3}}
\begin{figure}[h!] \end{listing}\vspace*{-2em}
\begin{listing}[h!]
\ifpdf
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
! as pre- and post-smoother, a distributed coarsest
! matrix, and MUMPS as coarsest-level solver
call P%init('ML',info)
call P%set('PAR_AGGR_ALG','COUPLED',info)
call P%set('ML_CYCLE','WCYCLE',info)
call P%set('SMOOTHER_TYPE','FBGS',info)
call P%set('SMOOTHER_SWEEPS',2,info)
call P%set('COARSE_SOLVE','MUMPS',info)
call P%set('COARSE_MAT','DIST',info)
call P%hierarchy_build(A,desc_A,info)
call P%smoothers_build(A,desc_A,info)
\end{minted}
\else
\begin{center} \begin{center}
\begin{minipage}{.90\textwidth} \begin{minipage}{.90\textwidth}
{\small {\small
@ -299,9 +398,10 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
\end{verbatim} \end{verbatim}
} }
\end{minipage} \end{minipage}
\caption{setup of a one-level Schwarz preconditioner.\label{fig:ex4}}
\end{center} \end{center}
\end{figure} \fi\vspace{-2em}%
\caption{setup of a one-level Schwarz preconditioner.\label{fig:ex4}}
\end{listing}
%%% Local Variables: %%% Local Variables:

@ -3,7 +3,7 @@
{\textsc{\ref{sec:overview} General Overview}} {\textsc{\ref{sec:overview} General Overview}}
The \textsc{Algebraic MultiGrid Preconditioners Package based on The \textsc{Algebraic MultiGrid Preconditioners Package based on
PSBLAS (AMG4PSBLAS)} provides parallel Algebraic MultiGrid (AMG) preconditioners (see, e.g., \cite{Briggs2000,Stuben_01}), PSBLAS} (\textsc{AMG\-4\-PSBLAS}) provides parallel Algebraic MultiGrid (AMG) preconditioners (see, e.g., \cite{Briggs2000,Stuben_01}),
to be used in the iterative solution of linear systems, to be used in the iterative solution of linear systems,
\begin{equation} \begin{equation}
Ax=b, Ax=b,

@ -24,6 +24,8 @@
\usemintedstyle{friendly} \usemintedstyle{friendly}
\definecolor{bg}{rgb}{0.95,0.95,0.95} \definecolor{bg}{rgb}{0.95,0.95,0.95}
\usepackage{breakurl} \usepackage{breakurl}
\usepackage{mathpazo}
\usepackage[english]{babel}
\ifpdf \ifpdf
\newmintinline[fortinline]{fortran}{} \newmintinline[fortinline]{fortran}{}
\else% \else%
@ -192,6 +194,7 @@ Preconditioners Package based on PSBLAS}
\clearpage \clearpage
\appendix \appendix
\include{license} \include{license}
\include{covenant}
\clearpage \clearpage
\include{bibliography} \include{bibliography}

@ -21,11 +21,16 @@
%\newboolean{mtc} %\newboolean{mtc}
%\setboolean{mtc}{true} %\setboolean{mtc}{true}
\usepackage{microtype} \usepackage{microtype}
\usepackage{listings}
\ifpdf \ifpdf
\newmintinline[fortinline]{fortran}{} \newmintinline[fortinline]{fortran}{}
\else% \else%
\usepackage{listings}
\def\fortinline{\lstinline[basicstyle=\ttfamily,language=fortran]} \def\fortinline{\lstinline[basicstyle=\ttfamily,language=fortran]}
\usepackage{float}
\newfloat{listing}{htbp}{lop}
\floatname{listing}{Listing}
\def\lstfloatautorefname{Listing} % needed for hyperref/auroref
\fi \fi
\pdfoutput=0 \pdfoutput=0

@ -3,13 +3,13 @@
{\textsc{\ref{sec:userinterface} User Interface}} {\textsc{\ref{sec:userinterface} User Interface}}
The basic user interface of AMG4PBLAS consists of eight methods. The six The basic user interface of AMG4PBLAS consists of eight methods. The six
methods \verb|init|, \verb|set|, \verb|build|, methods \fortinline|init|, \fortinline|set|, \fortinline|build|,
\verb|hierarchy_build|, \verb|smoothers_build| and \verb|apply| \fortinline|hierarchy_build|, \fortinline|smoothers_build| and \fortinline|apply|
encapsulate all the functionalities for the setup and the application encapsulate all the functionalities for the setup and the application
of any multilevel and one-level preconditioner implemented in the of any multilevel and one-level preconditioner implemented in the
package. package.
The method \verb|free| deallocates the preconditioner data structure, while The method \fortinline|free| deallocates the preconditioner data structure, while
\verb|descr| prints a description of the preconditioner setup by the user. \fortinline|descr| prints a description of the preconditioner setup by the user.
For backward compatibility, methods are also accessible as For backward compatibility, methods are also accessible as
stand-alone subroutines. stand-alone subroutines.
@ -43,24 +43,24 @@ A description of each method is given in the remainder of this section.
\subsection{Method init\label{sec:precinit}} \subsection{Method init\label{sec:precinit}}
\begin{center} \begin{center}
\verb|call p%init(icontx,ptype,info)| \fortinline|call p%init(contxt,ptype,info)|
\end{center} \end{center}
\noindent \noindent
This method allocates and initializes the preconditioner This method allocates and initializes the preconditioner
\verb|p|, according to the preconditioner type chosen by the user. \fortinline|p|, according to the preconditioner type chosen by the user.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|icontxt| & \verb|integer, intent(in)|.\\ \fortinline|contxt| & \fortinline|type(psb_ctxt_type), intent(in)|.\\
& The communication context.\\ & The communication context.\\
\verb|ptype| & \verb|character(len=*), intent(in)|.\\ \fortinline|ptype| & \fortinline|character(len=*), intent(in)|.\\
& The type of preconditioner. Its values are specified & The type of preconditioner. Its values are specified
in Table~\ref{tab:precinit}.\\ in Table~\ref{tab:precinit}.\\
& Note that the strings are case insensitive.\\ & Note that the strings are case insensitive.\\
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular} \end{tabular}
@ -73,63 +73,63 @@ This method allocates and initializes the preconditioner
\subsection{Method set\label{sec:precset}} \subsection{Method set\label{sec:precset}}
\begin{center} \begin{center}
\verb|call p%set(what,val,info [,ilev, ilmax, pos, idx])| \fortinline|call p%set(what,val,info [,ilev, ilmax, pos, idx])|
\end{center} \end{center}
\noindent \noindent
This method sets the parameters defining the preconditioner \verb|p|. More This method sets the parameters defining the preconditioner \fortinline|p|. More
precisely, the parameter identified by \verb|what| is assigned the value precisely, the parameter identified by \fortinline|what| is assigned the value
contained in \verb|val|. contained in \fortinline|val|.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|what| & \verb|character(len=*)|. \\ \fortinline|what| & \fortinline|character(len=*)|. \\
& The parameter to be set. It can be specified through its name; & The parameter to be set. It can be specified through its name;
the string is case-insensitive. See the string is case-insensitive. See
Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\ Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\
\verb|val | & \verb|integer| \emph{or} \verb|character(len=*)| \emph{or} \fortinline|val | & \fortinline|integer| \emph{or} \fortinline|character(len=*)| \emph{or}
\verb|real(psb_spk_)| \emph{or} \verb|real(psb_dpk_)|, \fortinline|real(psb_spk_)| \emph{or} \fortinline|real(psb_dpk_)|,
\verb|intent(in)|.\\ \fortinline|intent(in)|.\\
& The value of the parameter to be set. The list of allowed & The value of the parameter to be set. The list of allowed
values and the corresponding data types is given in values and the corresponding data types is given in
Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}. Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.
When the value is of type \verb|character(len=*)|, When the value is of type \fortinline|character(len=*)|,
it is also treated as case insensitive.\\ it is also treated as case insensitive.\\
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} & Error code. If no error, 0 is returned. See Section~\ref{sec:errors}
for details.\\ for details.\\
\verb|ilev| & \verb|integer, optional, intent(in)|.\\ \fortinline|ilev| & \fortinline|integer, optional, intent(in)|.\\
& For the multilevel preconditioner, the level at which the & For the multilevel preconditioner, the level at which the
preconditioner parameter has to be set. preconditioner parameter has to be set.
The levels are numbered in increasing The levels are numbered in increasing
order starting from the finest one, i.e., level 1 is the finest level. order starting from the finest one, i.e., level 1 is the finest level.
If \verb|ilev| is not present, the parameter identified by \verb|what| If \fortinline|ilev| is not present, the parameter identified by \fortinline|what|
is set at all the appropriate levels (see is set at all the appropriate levels (see
Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}).\\ Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}).\\
\verb|ilmax| & \verb|integer, optional, intent(in)|.\\ \fortinline|ilmax| & \fortinline|integer, optional, intent(in)|.\\
& For the multilevel preconditioner, when both & For the multilevel preconditioner, when both
\verb|ilev| and \verb|ilmax| are present, the settings \fortinline|ilev| and \fortinline|ilmax| are present, the settings
are applied at all levels \verb|ilev:ilmax|. When are applied at all levels \fortinline|ilev:ilmax|. When
\verb|ilev| is present but \verb|ilmax| is not, then \fortinline|ilev| is present but \fortinline|ilmax| is not, then
the default is \verb|ilmax=ilev|. the default is \fortinline|ilmax=ilev|.
The levels are numbered in increasing The levels are numbered in increasing
order starting from the finest one, i.e., level 1 is the finest level. \\ order starting from the finest one, i.e., level 1 is the finest level. \\
\verb|pos| & \verb|charater(len=*), optional, intent(in)|.\\ \fortinline|pos| & \fortinline|character(len=*), optional, intent(in)|.\\
& Whether the other arguments apply only to the pre-smoother (\verb|'PRE'|) & Whether the other arguments apply only to the pre-smoother (\fortinline|'PRE'|)
or to the post-smoother (\verb|'POST'|). If \verb|pos| is not present, or to the post-smoother (\fortinline|'POST'|). If \fortinline|pos| is not present,
the other arguments are applied to both smoothers. the other arguments are applied to both smoothers.
If the preconditioner is one-level or the parameter identified by \verb|what| If the preconditioner is one-level or the parameter identified by \fortinline|what|
does not concern the smoothers, \verb|pos| is ignored.\\ does not concern the smoothers, \fortinline|pos| is ignored.\\
\verb|idx| & \verb|integer, optional, intent(in)|.\\ \fortinline|idx| & \fortinline|integer, optional, intent(in)|.\\
& An auxiliary input argument that can be passed to the & An auxiliary input argument that can be passed to the
underlying objects. underlying objects.
\end{tabular} \end{tabular}
\noindent \noindent
However, in this case the optional arguments \verb|ilev|, However, in this case the optional arguments \fortinline|ilev|,
\verb|ilmax|, \verb|pos| and \verb|idx| \fortinline|ilmax|, \fortinline|pos| and \fortinline|idx|
cannot be used. \\ cannot be used. \\
A variety of preconditioners can be obtained A variety of preconditioners can be obtained
@ -148,7 +148,7 @@ A list of the parameters that can be set, along with their allowed and
default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\ default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\
\textbf{Remark 2.} A smoother is usually obtained by combining two objects: \textbf{Remark 2.} A smoother is usually obtained by combining two objects:
a smoother (\verb|SMOOTHER_TYPE|) and a local solver (\verb|SUB_SOLVE|), a smoother (\fortinline|'SMOOTHER_TYPE'|) and a local solver (\fortinline|'SUB_SOLVE'|),
as specified in Tables~\ref{tab:p_smoother}-\ref{tab:p_smoother_1}. as specified in Tables~\ref{tab:p_smoother}-\ref{tab:p_smoother_1}.
For example, the block-Jacobi smoother using For example, the block-Jacobi smoother using
ILU(0) on the blocks is obtained by combining the block-Jacobi smoother ILU(0) on the blocks is obtained by combining the block-Jacobi smoother
@ -160,9 +160,9 @@ result of combining the block-Jacobi smoother object with a single sweep
of the point-Jacobi solver object. However, for simplicity, shortcuts are of the point-Jacobi solver object. However, for simplicity, shortcuts are
provided to set point-Jacobi, hybrid (forward) Gauss-Seidel, and provided to set point-Jacobi, hybrid (forward) Gauss-Seidel, and
hybrid backward Gauss-Seidel, i.e., the previous smoothers can be defined hybrid backward Gauss-Seidel, i.e., the previous smoothers can be defined
by setting only \verb|SMOOTHER_TYPE| to appropriate values (see by setting only \fortinline|'SMOOTHER_TYPE'| to appropriate values (see
Tables~\ref{tab:p_smoother}), i.e., without setting Tables~\ref{tab:p_smoother}), i.e., without setting
\verb|SUB_SOLVE| too. \fortinline|'SUB_SOLVE'| too.
The smoother and solver objects are arranged in a The smoother and solver objects are arranged in a
hierarchical manner. When specifying a smoother object, its parameters, hierarchical manner. When specifying a smoother object, its parameters,
@ -205,9 +205,9 @@ Likewise, the replicated layout can be used with any solver but SuperLu\_Dist;
therefore, if SuperLu\_Dist has been previously set, the coarsest-level therefore, if SuperLu\_Dist has been previously set, the coarsest-level
solver is changed to the default sequential solver. solver is changed to the default sequential solver.
\textbf{Remark 4.} The argument \verb|idx| can be used to allow finer \textbf{Remark 4.} The argument \fortinline|idx| can be used to allow finer
control for those solvers; for instance, by specifying the keyword control for those solvers; for instance, by specifying the keyword
\verb|MUMPS_IPAR_ENTRY| and an appropriate value for \verb|idx|, it is \fortinline|'MUMPS_IPAR_ENTRY'| and an appropriate value for \fortinline|idx|, it is
possible to set any entry in the MUMPS integer control array. possible to set any entry in the MUMPS integer control array.
See also Sec.~\ref{sec:adding}. See also Sec.~\ref{sec:adding}.
%The \verb|what,val| pairs described here are those of the predefined %The \verb|what,val| pairs described here are those of the predefined
@ -220,13 +220,13 @@ See also Sec.~\ref{sec:adding}.
%\begin{tabular}{|p{5cm}|l|p{2.4cm}|p{2.5cm}|p{5cm}|} %\begin{tabular}{|p{5cm}|l|p{2.4cm}|p{2.5cm}|p{5cm}|}
\begin{tabular}{|p{3.6cm}|l|p{2.4cm}|p{2.4cm}|p{7.2cm}|} \begin{tabular}{|p{3.6cm}|l|p{2.4cm}|p{2.4cm}|p{7.2cm}|}
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
\verb|'ML_CYCLE'| & \verb|character(len=*)| \fortinline|'ML_CYCLE'| & \fortinline|character(len=*)|
& \texttt{'VCYCLE'} \par \texttt{'WCYCLE'} \par \texttt{'KCYCLE'} \par \texttt{'ADD'} & \texttt{'VCYCLE'} \par \texttt{'WCYCLE'} \par \texttt{'KCYCLE'} \par \texttt{'ADD'}
& \texttt{'VCYCLE'} & \texttt{'VCYCLE'}
&Multilevel cycle: V-cycle, W-cycle, K-cycle, and additive composition. \\ \hline &Multilevel cycle: V-cycle, W-cycle, K-cycle, and additive composition. \\ \hline
\verb|'OUTER_SWEEPS'| & \texttt{integer} & \fortinline|'OUTER_SWEEPS'| & \texttt{integer} &
Any integer \par number $\ge 1$ & 1 & Any integer \par number $\ge 1$ & 1 &
Number of multilevel cycles. \\ \hline Number of multilevel cycles. \\ \hline
@ -242,9 +242,9 @@ be applied.
%\begin{tabular}{|p{5cm}|l|p{2.4cm}|p{2.5cm}|p{5cm}|} %\begin{tabular}{|p{5cm}|l|p{2.4cm}|p{2.5cm}|p{5cm}|}
\begin{tabular}{|p{5.7cm}|l|p{2.3cm}|p{2.5cm}|p{6.9cm}|} \begin{tabular}{|p{5.7cm}|l|p{2.3cm}|p{2.5cm}|p{6.9cm}|}
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
\verb|'MIN_COARSE_SIZE_PER_PROCESS'| & \verb|integer| \fortinline|'MIN_COARSE_SIZE_PER_PROCESS'| & \fortinline|integer|
& Any number \par $> 0$ & Any number \par $> 0$
& $200$ & $200$
& Coarse size threshold per process. The aggregation stops & Coarse size threshold per process. The aggregation stops
@ -254,7 +254,7 @@ be applied.
multiplied by the number of processes. multiplied by the number of processes.
\\ \hline \\ \hline
\verb|'MIN_COARSE_SIZE'| & \verb|integer| \fortinline|'MIN_COARSE_SIZE'| & \fortinline|integer|
& Any number \par $> 0$ & Any number \par $> 0$
& -1 & -1
& Coarse size threshold. The aggregation stops & Coarse size threshold. The aggregation stops
@ -263,10 +263,10 @@ be applied.
is lower than or equal to this threshold is lower than or equal to this threshold
(see Note). If negative, it is ignored in (see Note). If negative, it is ignored in
favour of the default for favour of the default for
\verb|'MIN_COARSE_SIZE_PER_PROCESS'|. \fortinline|'MIN_COARSE_SIZE_PER_PROCESS'|.
\\ \hline \\ \hline
\verb|'MIN_CR_RATIO'| & \verb|real| \fortinline|'MIN_CR_RATIO'| & \fortinline|real|
& Any number \par $> 1$ & Any number \par $> 1$
& 1.5 & 1.5
& Minimum coarsening ratio. The aggregation stops & Minimum coarsening ratio. The aggregation stops
@ -274,21 +274,21 @@ be applied.
at two consecutive levels is lower than or equal to this at two consecutive levels is lower than or equal to this
threshold (see Note).\\ \hline threshold (see Note).\\ \hline
\verb|'MAX_LEVS'| & \verb|integer| \fortinline|'MAX_LEVS'| & \fortinline|integer|
& Any integer \par number $> 1$ & Any integer \par number $> 1$
& 20 & 20
& Maximum number of levels. The aggregation stops & Maximum number of levels. The aggregation stops
if the number of levels reaches this value (see Note). \\ \hline if the number of levels reaches this value (see Note). \\ \hline
\verb|'PAR_AGGR_ALG'| & \verb|character(len=*)| \hspace*{-3mm} \fortinline|'PAR_AGGR_ALG'| & \fortinline|character(len=*)| \hspace*{-3mm}
& \texttt{'DEC'}, \texttt{'SYMDEC'}, \texttt{'COUPLED'} & \texttt{'DEC'}, \texttt{'SYMDEC'}, \texttt{'COUPLED'}
& \texttt{'DEC'} & \texttt{'DEC'}
& Parallel aggregation algorithm. \par the & Parallel aggregation algorithm. \par the
\verb|SYMDEC| option applies decoupled \fortinline|SYMDEC| option applies decoupled
aggregation to the sparsity pattern aggregation to the sparsity pattern
of $A+A^T$.\\ \hline of $A+A^T$.\\ \hline
\verb|'AGGR_TYPE'| & \verb|character(len=*)| \hspace*{-3mm} \fortinline|'AGGR_TYPE'| & \fortinline|character(len=*)| \hspace*{-3mm}
& \textbf{\texttt{'SOC1'}} & & \textbf{\texttt{'SOC1'}} &
\textbf{\texttt{'SOC1'}}, \textbf{\texttt{'SOC1'}},
\textbf{\texttt{'SOC2'}}, \textbf{\texttt{'SOC2'}},
@ -302,7 +302,7 @@ be applied.
matching implemented in the MatchBox-P software package matching implemented in the MatchBox-P software package
{\bf AGGIUNGERE LINK AL PACKAGE?}\\ \hline {\bf AGGIUNGERE LINK AL PACKAGE?}\\ \hline
\verb|'AGGR_SIZE'| & \verb|integer| \hspace*{-3mm} \fortinline|'AGGR_SIZE'| & \fortinline|integer| \hspace*{-3mm}
& Any integer \par number power of $2$ and $> 2$ & Any integer \par number power of $2$ and $> 2$
& 4 & 4
& Maximum size of aggregates when the coupled aggregation based on & Maximum size of aggregates when the coupled aggregation based on
@ -310,7 +310,7 @@ be applied.
aggregate larger than $8$ we recommend the use of smoothed prolongators. aggregate larger than $8$ we recommend the use of smoothed prolongators.
{\bf MODIFICARE CODICE}\\ \hline {\bf MODIFICARE CODICE}\\ \hline
\verb|'AGGR_PROL'| & \verb|character(len=*)| \hspace*{-3mm} \fortinline|'AGGR_PROL'| & \fortinline|character(len=*)| \hspace*{-3mm}
& \texttt{'SMOOTHED'}, \texttt{'UNSMOOTHED'} & \texttt{'SMOOTHED'} & \texttt{'SMOOTHED'}, \texttt{'UNSMOOTHED'} & \texttt{'SMOOTHED'}
& Prolongator used by the aggregation algorithm: smoothed or unsmoothed & Prolongator used by the aggregation algorithm: smoothed or unsmoothed
(i.e., tentative prolongator). \\ (i.e., tentative prolongator). \\
@ -334,10 +334,10 @@ of levels. } \\
%\begin{tabular}{|p{5cm}|l|p{2.4cm}|p{2.5cm}|p{5cm}|} %\begin{tabular}{|p{5cm}|l|p{2.4cm}|p{2.5cm}|p{5cm}|}
\begin{tabular}{|p{3.8cm}|l|p{2.5cm}|p{2.3cm}|p{6.6cm}|} \begin{tabular}{|p{3.8cm}|l|p{2.5cm}|p{2.3cm}|p{6.6cm}|}
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
\verb|'AGGR_ORD'| & \verb|character(len=*)| \fortinline|'AGGR_ORD'| & \fortinline|character(len=*)|
& \texttt{'NATURAL'} \par \texttt{'DEGREE'} & \texttt{'NATURAL'} \par \texttt{'DEGREE'}
& \texttt{'NATURAL'} & \texttt{'NATURAL'}
& Initial ordering of indices for the decoupled aggregation & Initial ordering of indices for the decoupled aggregation
@ -347,14 +347,14 @@ of levels. } \\
%Since aggregation is %Since aggregation is
%heuristic, results will be different. %heuristic, results will be different.
\verb|'AGGR_THRESH'| & \verb|real(|\emph{kind\_parameter}\verb|)| \fortinline|'AGGR_THRESH'| & \fortinline|real(|\emph{kind\_parameter}\fortinline|)|
& Any~real \par number~$\in [0, 1]$ & Any~real \par number~$\in [0, 1]$
& 0.01 & 0.01
& The threshold $\theta$ in the decoupled aggregation algorithm, & The threshold $\theta$ in the decoupled aggregation algorithm,
see (\ref{eq:strongly_coup}) in Section~\ref{sec:aggregation}. see (\ref{eq:strongly_coup}) in Section~\ref{sec:aggregation}.
See also the note at the bottom of this table. \\ \hline See also the note at the bottom of this table. \\ \hline
\verb|'AGGR_FILTER'| \fortinline|'AGGR_FILTER'|
& \verb|character(len=*)| & \fortinline|character(len=*)|
& \texttt{'FILTER'} \par \texttt{'NOFILTER'} & \texttt{'FILTER'} \par \texttt{'NOFILTER'}
& \texttt{'NOFILTER'} & Matrix used in computing the smoothed & \texttt{'NOFILTER'} & Matrix used in computing the smoothed
prolongator: filtered or unfiltered (see~(\ref{eq:filtered}) in Section~\ref{sec:aggregation}). \\ prolongator: filtered or unfiltered (see~(\ref{eq:filtered}) in Section~\ref{sec:aggregation}). \\
@ -375,14 +375,14 @@ the parameter \texttt{ilev}.} \\
\begin{center} \begin{center}
\begin{tabular}{|p{3.9cm}|l|p{1.7cm}|p{1.7cm}|p{8.6cm}|} \begin{tabular}{|p{3.9cm}|l|p{1.7cm}|p{1.7cm}|p{8.6cm}|}
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
\verb|'COARSE_MAT'| & \verb|character(len=*)| \fortinline|'COARSE_MAT'| & \fortinline|character(len=*)|
& \texttt{'DIST'} \par \texttt{'REPL'} & \texttt{'DIST'} \par \texttt{'REPL'}
& \texttt{'REPL'} & \texttt{'REPL'}
& Coarsest matrix layout: distributed among the processes or & Coarsest matrix layout: distributed among the processes or
replicated on each of them. \\ \hline replicated on each of them. \\ \hline
\verb|'COARSE_SOLVE'| & \verb|character(len=*)| \fortinline|'COARSE_SOLVE'| & \fortinline|character(len=*)|
& \texttt{'MUMPS'} \par \texttt{'UMF'} \par & \texttt{'MUMPS'} \par \texttt{'UMF'} \par
\texttt{'SLU'} \par \texttt{'SLUDIST'} \par \texttt{'SLU'} \par \texttt{'SLUDIST'} \par
\texttt{'JACOBI'} \par \texttt{'GS'} \par \texttt{'BJAC'} \par \texttt{'PCG'} \texttt{'JACOBI'} \par \texttt{'GS'} \par \texttt{'BJAC'} \par \texttt{'PCG'}
@ -404,7 +404,7 @@ the parameter \texttt{ilev}.} \\
value which allows the use of the solver (see Remark 3, p.~24). value which allows the use of the solver (see Remark 3, p.~24).
Note also that UMFPACK and SuperLU\_Dist Note also that UMFPACK and SuperLU\_Dist
are available only in double precision. \\ \hline are available only in double precision. \\ \hline
\verb|'COARSE_SUBSOLVE'| & \verb|character(len=*)| \fortinline|'COARSE_SUBSOLVE'| & \fortinline|character(len=*)|
& \texttt{'ILU'} \par \texttt{'ILUT'} \par \texttt{'MILU'} \par & \texttt{'ILU'} \par \texttt{'ILUT'} \par \texttt{'MILU'} \par
\texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'} \texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'}
& See~Note. & See~Note.
@ -435,19 +435,19 @@ level.\label{tab:p_coarse}}
\begin{center} \begin{center}
\begin{tabular}{|p{3.9cm}|l|p{2cm}|p{1.5cm}|p{7.5cm}|} \begin{tabular}{|p{3.9cm}|l|p{2cm}|p{1.5cm}|p{7.5cm}|}
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
\verb|'COARSE_SWEEPS'| & \verb|integer| \fortinline|'COARSE_SWEEPS'| & \fortinline|integer|
& Any integer \par number $> 0$ & Any integer \par number $> 0$
& 10 & 10
& Number of sweeps when \verb|JACOBI|, \verb|GS| or \verb|BJAC| & Number of sweeps when \fortinline|JACOBI|, \fortinline|GS| or \fortinline|BJAC|
is chosen as coarsest-level solver. {\bf Aggiungere criterio di arresto del PCG?}\\ \hline is chosen as coarsest-level solver. {\bf Aggiungere criterio di arresto del PCG?}\\ \hline
\verb|'COARSE_FILLIN'| & \verb|integer| \fortinline|'COARSE_FILLIN'| & \fortinline|integer|
& Any integer \par number $\ge 0$ & Any integer \par number $\ge 0$
& 0 & 0
& Fill-in level $p$ of the ILU factorizations. \\ \hline & Fill-in level $p$ of the ILU factorizations. \\ \hline
\verb|'COARSE_ILUTHRS'| \fortinline|'COARSE_ILUTHRS'|
& \verb|real(|\emph{kind\_parameter}\verb|)| & \fortinline|real(|\emph{kind\_parameter}\fortinline|)|
& Any real \par number $\ge 0$ & Any real \par number $\ge 0$
& 0 & 0
& Drop tolerance $t$ in the ILU($p,t$) factorization. \\ & Drop tolerance $t$ in the ILU($p,t$) factorization. \\
@ -463,19 +463,19 @@ level (continued).\label{tab:p_coarse_1}}
\small \small
\begin{tabular}{|p{3.6cm}|l|p{1.9cm}|p{3.6cm}|p{6.5cm}|} \begin{tabular}{|p{3.6cm}|l|p{1.9cm}|p{3.6cm}|p{6.5cm}|}
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
\verb|'SMOOTHER_TYPE'| & \verb|character(len=*)| \fortinline|'SMOOTHER_TYPE'| & \fortinline|character(len=*)|
& \verb|'JACOBI'| \par \verb|'GS'| \par \verb|'BGS'| \par \verb|'BJAC'| & \fortinline|'JACOBI'| \par \fortinline|'GS'| \par \fortinline|'BGS'| \par \fortinline|'BJAC'|
\par \verb|'AS'| \par \fortinline|'AS'|
& \verb|'FBGS'| & \fortinline|'FBGS'|
& Type of smoother used in the multilevel preconditioner: & Type of smoother used in the multilevel preconditioner:
point-Jacobi, hybrid (forward) Gauss-Seidel, point-Jacobi, hybrid (forward) Gauss-Seidel,
hybrid backward Gauss-Seidel, block-Jacobi, \textbf{$\ell_1$-versions?} and hybrid backward Gauss-Seidel, block-Jacobi, \textbf{$\ell_1$-versions?} and
Additive Schwarz. \par Additive Schwarz. \par
It is ignored by one-level preconditioners. \\ \hline It is ignored by one-level preconditioners. \\ \hline
\verb|'SUB_SOLVE'| & \verb|character(len=*)| \fortinline|'SUB_SOLVE'| & \fortinline|character(len=*)|
& \texttt{'JACOBI'} \par & \texttt{'JACOBI'} \par
\texttt{'GS'} \par \texttt{'BGS'} \par \texttt{'ILU'} \par \texttt{'GS'} \par \texttt{'BGS'} \par \texttt{'ILU'} \par
\texttt{'ILUT'} \par \texttt{'MILU'} \par \texttt{'ILUT'} \par \texttt{'MILU'} \par
@ -492,15 +492,15 @@ level (continued).\label{tab:p_coarse_1}}
LU from MUMPS, SuperLU or UMFPACK LU from MUMPS, SuperLU or UMFPACK
(plus triangular solve). See Note for details on hybrid (plus triangular solve). See Note for details on hybrid
Gauss-Seidel. \\ \hline Gauss-Seidel. \\ \hline
\verb|'SMOOTHER_SWEEPS'| & \verb|integer| \fortinline|'SMOOTHER_SWEEPS'| & \fortinline|integer|
& Any integer \par number~$\ge 0$ & Any integer \par number~$\ge 0$
& 1 & 1
& Number of sweeps of the smoother or one-level preconditioner. & Number of sweeps of the smoother or one-level preconditioner.
In the multilevel case, no pre-smother or In the multilevel case, no pre-smother or
post-smoother is used if this parameter is set to 0 post-smoother is used if this parameter is set to 0
together with \verb|pos='PRE'| or \verb|pos='POST|, together with \fortinline|pos='PRE'| or \fortinline|pos='POST|,
respectively. \\ \hline respectively. \\ \hline
\verb|'SUB_OVR'| & \verb|integer| \fortinline|'SUB_OVR'| & \fortinline|integer|
& Any integer \par number~$\ge 0$ & Any integer \par number~$\ge 0$
& 1 & 1
& Number of overlap layers, for Additive Schwarz only. \\ & Number of overlap layers, for Additive Schwarz only. \\
@ -514,51 +514,51 @@ level (continued).\label{tab:p_coarse_1}}
\bsideways \bsideways
\begin{center} \begin{center}
\small \small
\begin{tabular}{|p{3cm}|l|p{2.5cm}|p{2.2cm}|p{7.1cm}|} \begin{tabular}{|p{3.2cm}|l|p{2.6cm}|p{2.6cm}|p{6.7cm}|}
\hline \hline
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} & \fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline \textsc{comments} \\ \hline
\verb|'SUB_RESTR'| & \verb|character(len=*)| \fortinline|'SUB_RESTR'| & \fortinline|character(len=*)|
& \texttt{'HALO'} \par \texttt{'NONE'} & \fortinline|'HALO'| \par \fortinline|'NONE'|
& \texttt{'HALO'} & \fortinline|'HALO'|
& Type of restriction operator, for Additive Schwarz only: & Type of restriction operator, for Additive Schwarz only:
\texttt{HALO} for taking into account the overlap, \texttt{NONE} \texttt{HALO} for taking into account the overlap, \fortinline|'NONE'|
for neglecting it. \par for neglecting it. \par
Note that \texttt{HALO} must be chosen for Note that \texttt{HALO} must be chosen for
the classical Addditive Schwarz smoother and its RAS variant.\\ \hline the classical Addditive Schwarz smoother and its RAS variant.\\ \hline
\verb|'SUB_PROL'| & \verb|character(len=*)| \fortinline|'SUB_PROL'| & \fortinline|character(len=*)|
& \texttt{'SUM'} \par \texttt{'NONE'} & \fortinline|'SUM'| \par \fortinline|'NONE'|
& \texttt{'NONE'} & \fortinline|'NONE'|
& Type of prolongation operator, for Additive Schwarz only: & Type of prolongation operator, for Additive Schwarz only:
\texttt{SUM} for adding the contributions from the overlap, \texttt{NONE} \fortinline|'SUM'| for adding the contributions from the overlap, \fortinline|'NONE'|
for neglecting them. \par for neglecting them. \par
Note that \texttt{SUM} must be chosen for the classical Additive Note that \fortinline|'SUM'| must be chosen for the classical Additive
Schwarz smoother, and \texttt{NONE} for its RAS variant. \\ \hline Schwarz smoother, and \fortinline|'NONE'| for its RAS variant. \\ \hline
\verb|'SUB_FILLIN'| & \verb|integer| \fortinline|'SUB_FILLIN'| & \fortinline|integer|
& Any integer \par number~$\ge 0$ & Any integer \par number~$\ge 0$
& 0 & 0
& Fill-in level $p$ of the incomplete LU factorizations. \\ \hline & Fill-in level $p$ of the incomplete LU factorizations. \\ \hline
\verb|'SUB_ILUTHRS'| & \verb|real(|\emph{kind\_parameter}\verb|)| \fortinline|'SUB_ILUTHRS'| & \fortinline|real(|\emph{kind\_parameter}\fortinline|)|
& Any real number~$\ge 0$ & Any real number~$\ge 0$
& 0 & 0
& Drop tolerance $t$ in the ILU($p,t$) factorization. \\ %\hline & Drop tolerance $t$ in the ILU($p,t$) factorization. \\ %\hline
\verb|'MUMPS_LOC_GLOB'| & \verb|character(len=*)| \fortinline|'MUMPS_LOC_GLOB'| & \fortinline|character(len=*)|
& \texttt{LOCAL\_SOLVER'} \par \texttt{GLOBAL\_SOLVER'} & \fortinline|'LOCAL_SOLVER'| \par \fortinline|'GLOBAL_SOLVER'|
& \texttt{GLOBAL\_SOLVER'} & \fortinline|'GLOBAL_SOLVER'|
& Whether MUMPS should be used as a & Whether MUMPS should be used as a
distributed solver, or as a serial solver distributed solver, or as a serial solver
acting only on the part of the matrix local acting only on the part of the matrix local
to each process. \\ %\hline to each process. \\ %\hline
\verb|'MUMPS_IPAR_ENTRY'| & \verb|integer| \fortinline|'MUMPS_IPAR_ENTRY'| & \fortinline|integer|
& Any integer number & Any integer number
& 0 & 0
& Set an entry in the MUMPS integer control array, as & Set an entry in the MUMPS integer control array, as
chosen via the \verb|idx| optional argument. \\ %\hline chosen via the \fortinline|idx| optional argument. \\ %\hline
\verb|'MUMPS_RPAR_ENTRY'| & \verb|real| \fortinline|'MUMPS_RPAR_ENTRY'| & \fortinline|real|
& Any real number & Any real number
& 0 & 0
& Set an entry in the MUMPS real control array, as & Set an entry in the MUMPS real control array, as
chosen via the \verb|idx| optional argument. \\ %\hline chosen via the \fortinline|idx| optional argument. \\ %\hline
\hline \hline
\end{tabular} \end{tabular}
\end{center} \end{center}
@ -572,28 +572,27 @@ level (continued).\label{tab:p_coarse_1}}
\subsection{Method hierarchy\_build\label{sec:hier_bld}} \subsection{Method hierarchy\_build\label{sec:hier_bld}}
\begin{center} \begin{center}
\verb|call p%hierarchy_build(a,desc_a,info)|\\ \fortinline|call p%hierarchy_build(a,desc_a,info)|\\
\end{center} \end{center}
\noindent \noindent
This method builds the hierarchy of matrices and restriction/prolongation This method builds the hierarchy of matrices and restriction/prolongation
operators for the multilevel preconditioner \verb|p|, according to the requirements operators for the multilevel preconditioner \fortinline|p|, according to the requirements
made by the user through the methods \verb|init| and \verb|set|. made by the user through the methods \fortinline|init| and \fortinline|set|.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\ \fortinline|a| & \fortinline|type(psb_|\emph{x}\fortinline|spmat_type), intent(in)|. \\
& The sparse matrix structure containing the local part of the & The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that \emph{x} must be chosen according matrix to be preconditioned. Note that \emph{x} must be chosen according
to the real/complex, to the \fortinline|real|/\fortinline|complex|,
single/double precision version of AMG4PSBLAS under use. single/double precision version of AMG4PSBLAS under use.
See the PSBLAS User's Guide for details \cite{PSBLASGUIDE}.\\ See the PSBLAS User's Guide for details \cite{PSBLASGUIDE}.\\
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\ \fortinline|desc_a| & \fortinline|type(psb_desc_type), intent(in)|. \\
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for & The communication descriptor of \fortinline|a|. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}.\\ details \cite{PSBLASGUIDE}.\\
\fortinline|info| & \fortinline|integer, intent(out)|.\\
\verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular} \end{tabular}
@ -604,38 +603,38 @@ single/double precision version of AMG4PSBLAS under use.
\begin{center} \begin{center}
\verb|call p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])|\\ \fortinline|call p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])|\\
\end{center} \end{center}
\noindent \noindent
This method builds the smoothers and the coarsest-level solvers for the This method builds the smoothers and the coarsest-level solvers for the
multilevel preconditioner \verb|p|, according to the requirements made by multilevel preconditioner \fortinline|p|, according to the requirements made by
the user through the methods \verb|init| and \verb|set|, and based on the aggregation the user through the methods \fortinline|init| and \fortinline|set|, and based on the aggregation
hierarchy produced by a previous call to \verb|hierarchy_build| hierarchy produced by a previous call to \fortinline|hierarchy_build|
(see Section~\ref{sec:hier_bld}). (see Section~\ref{sec:hier_bld}).
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\ \fortinline|a| & \fortinline|type(psb_|\emph{x}\fortinline|spmat_type), intent(in)|. \\
& The sparse matrix structure containing the local part of the & The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that \emph{x} must be chosen according matrix to be preconditioned. Note that \emph{x} must be chosen according
to the real/complex, single/double precision version of AMG4PSBLAS under use. to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.
See the PSBLAS User's Guide for details \cite{PSBLASGUIDE}.\\ See the PSBLAS User's Guide for details \cite{PSBLASGUIDE}.\\
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\ \fortinline|desc_a| & \fortinline|type(psb_desc_type), intent(in)|. \\
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for & The communication descriptor of \fortinline|a|. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}.\\ details \cite{PSBLASGUIDE}.\\
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\ \fortinline|amold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_sparse_mat), intent(in), optional|. \\
& The desired dynamic type for internal matrix & The desired dynamic type for internal matrix
components; this allows e.g. running on GPUs; it needs not be the components; this allows e.g. running on GPUs; it needs not be the
same on all processes. See the PSBLAS User's Guide for same on all processes. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}. \\ details \cite{PSBLASGUIDE}. \\
\verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\ \fortinline|vmold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_vect_type), intent(in), optional|. \\
& The desired dynamic type for internal vector & The desired dynamic type for internal vector
components; this allows e.g. running on GPUs. \\ components; this allows e.g. running on GPUs. \\
\verb|imold| & \verb|class(psb_i_base_vect_type), intent(in), optional|. \\ \fortinline|imold| & \fortinline|class(psb_i_base_vect_type), intent(in), optional|. \\
& The desired dynamic type for internal integer vector & The desired dynamic type for internal integer vector
components; this allows e.g. running on GPUs. \\ components; this allows e.g. running on GPUs. \\
\end{tabular} \end{tabular}
@ -645,41 +644,41 @@ hierarchy produced by a previous call to \verb|hierarchy_build|
\subsection{Method build\label{sec:precbld}} \subsection{Method build\label{sec:precbld}}
\begin{center} \begin{center}
\verb|call p%build(a,desc_a,info[,amold,vmold,imold])|\\ \fortinline|call p%build(a,desc_a,info[,amold,vmold,imold])|\\
\end{center} \end{center}
\noindent \noindent
This method builds the preconditioner \verb|p| according to the requirements This method builds the preconditioner \fortinline|p| according to the requirements
made by the user through the methods \verb|init| and \verb|set| made by the user through the methods \fortinline|init| and \fortinline|set|
(see Sections~\ref{sec:hier_bld} and~\ref{sec:smooth_bld} for (see Sections~\ref{sec:hier_bld} and~\ref{sec:smooth_bld} for
multilevel preconditioners). It is mostly provided for backward multilevel preconditioners). It is mostly provided for backward
compatibility; indeed, it is internally implemented by invoking the compatibility; indeed, it is internally implemented by invoking the
two previous methods \verb|hierarchy_build| and two previous methods \fortinline|hierarchy_build| and
\verb|smoothers_build|, whose nomenclature would however be somewhat \fortinline|smoothers_build|, whose nomenclature would however be somewhat
unnatural when dealing with simple one-level preconditioners. unnatural when dealing with simple one-level preconditioners.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\ \fortinline|a| & \fortinline|type(psb_|\emph{x}\fortinline|spmat_type), intent(in)|. \\
& The sparse matrix structure containing the local part of the & The sparse matrix structure containing the local part of the
matrix to be preconditioned. Note that \emph{x} must be chosen according matrix to be preconditioned. Note that \emph{x} must be chosen according
to the real/complex, single/double precision version of AMG4PSBLAS under use. to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.
See the PSBLAS User's Guide for details \cite{PSBLASGUIDE}.\\ See the PSBLAS User's Guide for details \cite{PSBLASGUIDE}.\\
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\ \fortinline|desc_a| & \fortinline|type(psb_desc_type), intent(in)|. \\
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for & The communication descriptor of \fortinline|a|. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}.\\ details \cite{PSBLASGUIDE}.\\
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\ \fortinline|amold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_sparse_mat), intent(in), optional|. \\
& The desired dynamic type for internal matrix & The desired dynamic type for internal matrix
components; this allows e.g. running on GPUs; it needs not be the components; this allows e.g. running on GPUs; it needs not be the
same on all processes. See the PSBLAS User's Guide for same on all processes. See the PSBLAS User's Guide for
details \cite{PSBLASGUIDE}. \\ details \cite{PSBLASGUIDE}. \\
\verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\ \fortinline|vmold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_vect_type), intent(in), optional|. \\
& The desired dynamic type for internal vector & The desired dynamic type for internal vector
components; this allows e.g. running on GPUs. \\ components; this allows e.g. running on GPUs. \\
\verb|imold| & \verb|class(psb_i_base_vect_type), intent(in), optional|. \\ \fortinline|imold| & \fortinline|class(psb_i_base_vect_type), intent(in), optional|. \\
& The desired dynamic type for internal integer vector & The desired dynamic type for internal integer vector
components; this allows e.g. running on GPUs. \\ components; this allows e.g. running on GPUs. \\
\end{tabular} \end{tabular}
@ -693,44 +692,44 @@ The method can be used to build multilevel preconditioners too.
\subsection{Method apply\label{sec:precapply}} \subsection{Method apply\label{sec:precapply}}
\begin{center} \begin{center}
\verb|call p%apply(x,y,desc_a,info [,trans,work])|\\ \fortinline|call p%apply(x,y,desc_a,info [,trans,work])|\\
\end{center} \end{center}
\noindent \noindent
This method computes $y = op(B^{-1})\, x$, where $B$ is a previously built This method computes $y = op(B^{-1})\, x$, where $B$ is a previously built
preconditioner, stored into \verb|p|, and $op$ preconditioner, stored into \fortinline|p|, and $op$
denotes the preconditioner itself or its transpose, according to denotes the preconditioner itself or its transpose, according to
the value of \verb|trans|. the value of \fortinline|trans|.
Note that, when AMG4PSBLAS is used with a Krylov solver from PSBLAS, Note that, when AMG4PSBLAS is used with a Krylov solver from PSBLAS,
\verb|p%apply| is called within the PSBLAS method \verb|psb_krylov| \fortinline|p%apply| is called within the PSBLAS method \fortinline|psb_krylov|
and hence it is completely transparent to the user. and hence it is completely transparent to the user.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|x| & \emph{type}\verb|(|\emph{kind\_parameter}\verb|), dimension(:), intent(in)|.\\ \fortinline|x| & \emph{type}\fortinline|(|\emph{kind\_parameter}\fortinline|), dimension(:), intent(in)|.\\
& The local part of the vector $x$. Note that \emph{type} and & The local part of the vector $x$. Note that \emph{type} and
\emph{kind\_parameter} must be chosen according \emph{kind\_parameter} must be chosen according
to the real/complex, single/double precision version of AMG4PSBLAS under use.\\ to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.\\
\verb|y| & \emph{type}\verb|(|\emph{kind\_parameter}\verb|), dimension(:), intent(out)|.\\ \fortinline|y| & \emph{type}\fortinline|(|\emph{kind\_parameter}\fortinline|), dimension(:), intent(out)|.\\
& The local part of the vector $y$. Note that \emph{type} and & The local part of the vector $y$. Note that \emph{type} and
\emph{kind\_parameter} must be chosen according \emph{kind\_parameter} must be chosen according
to the real/complex, single/double precision version of AMG4PSBLAS under use.\\ to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.\\
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\ \fortinline|desc_a| & \fortinline|type(psb_desc_type), intent(in)|. \\
& The communication descriptor associated to the matrix to be & The communication descriptor associated to the matrix to be
preconditioned.\\ preconditioned.\\
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|trans| & \verb|character(len=1), optional, intent(in).|\\ \fortinline|trans| & \fortinline|character(len=1), optional, intent(in).|\\
& If \verb|trans| = \verb|'N','n'| then $op(B^{-1}) = B^{-1}$; & If \fortinline|trans| = \fortinline|'N','n'| then $op(B^{-1}) = B^{-1}$;
if \verb|trans| = \verb|'T','t'| then $op(B^{-1}) = B^{-T}$ if \fortinline|trans| = \fortinline|'T','t'| then $op(B^{-1}) = B^{-T}$
(transpose of $B^{-1})$; if \verb|trans| = \verb|'C','c'| then $op(B^{-1}) = B^{-C}$ (transpose of $B^{-1})$; if \fortinline|trans| = \fortinline|'C','c'| then $op(B^{-1}) = B^{-C}$
(conjugate transpose of $B^{-1})$.\\ (conjugate transpose of $B^{-1})$.\\
\verb|work| & \emph{type}\verb|(|\emph{kind\_parameter}\verb|), dimension(:), optional, target|.\\ \fortinline|work| & \emph{type}\fortinline|(|\emph{kind\_parameter}\fortinline|), dimension(:), optional, target|.\\
& Workspace. Its size should be at & Workspace. Its size should be at
least \verb|4 * psb_cd_get_local_| \verb|cols(desc_a)| (see the PSBLAS User's Guide). least \fortinline|4 * psb_cd_get_local_| \fortinline|cols(desc_a)| (see the PSBLAS User's Guide).
Note that \emph{type} and \emph{kind\_parameter} must be chosen according Note that \emph{type} and \emph{kind\_parameter} must be chosen according
to the real/complex, single/double precision version of AMG4PSBLAS under use.\\ to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.\\
\end{tabular} \end{tabular}
@ -739,16 +738,16 @@ and hence it is completely transparent to the user.
\subsection{Method free\label{sec:precfree}} \subsection{Method free\label{sec:precfree}}
\begin{center} \begin{center}
\verb|call p%free(p,info)|\\ \fortinline|call p%free(p,info)|\\
\end{center} \end{center}
\noindent \noindent
This method deallocates the preconditioner data structure \verb|p|. This method deallocates the preconditioner data structure \fortinline|p|.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{10.5cm}} \begin{tabular}{p{1.2cm}p{10.5cm}}
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular} \end{tabular}
@ -758,20 +757,20 @@ This method deallocates the preconditioner data structure \verb|p|.
\subsection{Method descr\label{sec:precdescr}} \subsection{Method descr\label{sec:precdescr}}
\begin{center} \begin{center}
\verb|call p%descr(info, [iout])|\\ \fortinline|call p%descr(info, [iout])|\\
\end{center} \end{center}
\noindent \noindent
This method prints a description of the preconditioner \verb|p| to the standard output or This method prints a description of the preconditioner \fortinline|p| to the standard output or
to a file. It must be called after \verb|hierachy_build| and \verb|smoothers_build|, to a file. It must be called after \fortinline|hierachy_build| and \fortinline|smoothers_build|,
or \verb|build|, have been called. or \fortinline|build|, have been called.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|iout| & \verb|integer, intent(in), optional|.\\ \fortinline|iout| & \fortinline|integer, intent(in), optional|.\\
& The id of the file where the preconditioner description & The id of the file where the preconditioner description
will be printed; the default is the standard output.\\ will be printed; the default is the standard output.\\
\end{tabular} \end{tabular}
@ -784,7 +783,7 @@ preconditioner object.
\subsubsection{Method: dump} \subsubsection{Method: dump}
\begin{center} \begin{center}
\verb|call p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])|\\ \fortinline|call p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])|\\
\end{center} \end{center}
\noindent \noindent
@ -793,9 +792,9 @@ Dump on file.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\ \fortinline|amold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_sparse_mat), intent(in), optional|. \\
& The desired dynamic type for internal matrix & The desired dynamic type for internal matrix
components; this allows e.g. running on GPUs; it needs not be the components; this allows e.g. running on GPUs; it needs not be the
same on all processes. See the PSBLAS User's Guide for same on all processes. See the PSBLAS User's Guide for
@ -806,7 +805,7 @@ Dump on file.
\subsubsection{Method: clone} \subsubsection{Method: clone}
\begin{center} \begin{center}
\verb|call p%clone(pout,info)|\\ \fortinline|call p%clone(pout,info)|\\
\end{center} \end{center}
\noindent \noindent
@ -815,11 +814,11 @@ Create a (deep) copy of the preconditioner object.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|pout| & \verb|type(amg_|\emph{x}\verb|prec_type), intent(out)|.\\ \fortinline|pout| & \fortinline|type(amg_|\emph{x}\fortinline|prec_type), intent(out)|.\\
& The copy of the preconditioner data structure. Note & The copy of the preconditioner data structure. Note
that \emph{x} must be chosen according that \emph{x} must be chosen according
to the real/complex, single/double precision version of AMG4PSBLAS under use.\\ to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.\\
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular} \end{tabular}
@ -828,7 +827,7 @@ Create a (deep) copy of the preconditioner object.
\subsubsection{Method: sizeof} \subsubsection{Method: sizeof}
\begin{center} \begin{center}
\verb|sz = p%sizeof()|\\ \fortinline|sz = p%sizeof()|\\
\end{center} \end{center}
\noindent \noindent
@ -837,7 +836,7 @@ Return memory footprint in bytes.
\subsubsection{Method: allocate\_wrk} \subsubsection{Method: allocate\_wrk}
\begin{center} \begin{center}
\verb|call p%allocate_wrk(info[, vmold])|\\ \fortinline|call p%allocate_wrk(info[, vmold])|\\
\end{center} \end{center}
\noindent \noindent
@ -850,18 +849,18 @@ on some platforms, most notably GPUs, memory allocation is
a slow operation, and the default behaviour would lead to a a slow operation, and the default behaviour would lead to a
slowdown. This method allows to trade space for time by preallocating slowdown. This method allows to trade space for time by preallocating
the internal workspace outside of the invocation of a Krylov the internal workspace outside of the invocation of a Krylov
method. When using GPUs or other specialized devices, the \verb|vmold| method. When using GPUs or other specialized devices, the \fortinline|vmold|
argument is also necessary to ensure the internal work vectors are of argument is also necessary to ensure the internal work vectors are of
the appropriate dynamic type to exploit the accelerator hardware; when the appropriate dynamic type to exploit the accelerator hardware; when
allocation occurs internally this is taken care of based on the dynamic allocation occurs internally this is taken care of based on the dynamic
type of the \verb|x| argument to the \verb|apply| method. type of the \fortinline|x| argument to the \fortinline|apply| method.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\ \fortinline|vmold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_vect_type), intent(in), optional|. \\
& The desired dynamic type for internal vector & The desired dynamic type for internal vector
components; this allows e.g. running on GPUs. \\ components; this allows e.g. running on GPUs. \\
\end{tabular} \end{tabular}
@ -871,7 +870,7 @@ type of the \verb|x| argument to the \verb|apply| method.
\subsubsection{Method: free\_wrk} \subsubsection{Method: free\_wrk}
\begin{center} \begin{center}
\verb|call p%free_wrk(info)|\\ \fortinline|call p%free_wrk(info)|\\
\end{center} \end{center}
\noindent \noindent
@ -880,7 +879,7 @@ Deallocate internal work vectors.
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip {\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
\begin{tabular}{p{1.2cm}p{12cm}} \begin{tabular}{p{1.2cm}p{12cm}}
\verb|info| & \verb|integer, intent(out)|.\\ \fortinline|info| & \fortinline|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\end{tabular} \end{tabular}

Loading…
Cancel
Save