mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 22:55:12 +00:00
Full highlighting and code-of-conduct
This commit is contained in:
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’s and Reference Guide</span><br
|
class="cmbx-12x-x-144">User’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’s and Reference Guide</span><br
|
class="cmbx-12x-x-144">User’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–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
|
||||||
|
|||||||
+35
-35
@@ -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"> </span><a
|
class="cmr-12"> </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"> </span><a
|
class="cmr-12"> </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"> </span><a
|
class="cmr-12"> </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 <a
|
values in Tables <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 1: </span><span
|
><span class="id">Table 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
|
||||||
|
|||||||
+16
-16
@@ -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" >
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+135
-71
@@ -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"> p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])</span></span></span><br />
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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"> 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"> </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’s Guide for details </span><span class="cite"><span
|
class="cmr-12">under use. See the PSBLAS User’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"> 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"> </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’s Guide</span>
|
class="cmr-12">. See the PSBLAS User’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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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"> intent(in),</span><span
|
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||||
class="cmtt-12"> optional</span></span></span><span
|
class="cmtt-12">_base_sparse_mat</span><span
|
||||||
|
class="cmtt-12">),</span><span
|
||||||
|
class="cmtt-12"> </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"> </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"> intent(in),</span><span
|
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||||
class="cmtt-12"> optional</span></span></span><span
|
class="cmtt-12">_base_vect_type</span><span
|
||||||
|
class="cmtt-12">),</span><span
|
||||||
|
class="cmtt-12"> </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"> </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"> intent(in),</span><span
|
class="cmtt-12">(</span><span
|
||||||
class="cmtt-12"> optional</span></span></span><span
|
class="cmtt-12">psb_i_base_vect_type</span><span
|
||||||
|
class="cmtt-12">),</span><span
|
||||||
|
class="cmtt-12"> </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"> </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>
|
||||||
|
|||||||
+136
-74
@@ -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"> p%build(a,desc_a,info[,amold,vmold,imold])</span></span></span><br />
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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"> 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"> </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’s Guide for details </span><span class="cite"><span
|
class="cmr-12">under use. See the PSBLAS User’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"> 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"> </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’s Guide</span>
|
class="cmr-12">. See the PSBLAS User’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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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"> intent(in),</span><span
|
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||||
class="cmtt-12"> optional</span></span></span><span
|
class="cmtt-12">_base_sparse_mat</span><span
|
||||||
|
class="cmtt-12">),</span><span
|
||||||
|
class="cmtt-12"> </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"> </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"> intent(in),</span><span
|
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||||
class="cmtt-12"> optional</span></span></span><span
|
class="cmtt-12">_base_vect_type</span><span
|
||||||
|
class="cmtt-12">),</span><span
|
||||||
|
class="cmtt-12"> </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"> </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"> intent(in),</span><span
|
class="cmtt-12">(</span><span
|
||||||
class="cmtt-12"> optional</span></span></span><span
|
class="cmtt-12">psb_i_base_vect_type</span><span
|
||||||
|
class="cmtt-12">),</span><span
|
||||||
|
class="cmtt-12"> </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"> </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>
|
||||||
|
|||||||
+183
-92
@@ -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"> p%apply(x,y,desc_a,info</span><span
|
class="cmtt-12"> </span><span
|
||||||
class="cmtt-12"> [,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"> </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"> dimension(:),</span><span
|
class="cmtt-12"> </span><span
|
||||||
class="cmtt-12"> intent(in)</span></span></span><span
|
class="cmtt-12">dimension</span><span
|
||||||
|
class="cmtt-12">(:),</span><span
|
||||||
|
class="cmtt-12"> </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"> dimension(:),</span><span
|
class="cmtt-12"> </span><span
|
||||||
class="cmtt-12"> intent(out)</span></span></span><span
|
class="cmtt-12">dimension</span><span
|
||||||
|
class="cmtt-12">(:),</span><span
|
||||||
|
class="cmtt-12"> </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"> 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"> </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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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"> optional,</span><span
|
class="cmtt-12">(</span><span
|
||||||
class="cmtt-12"> intent(in).</span></span></span> </td>
|
class="cmtt-12">len</span><span
|
||||||
|
class="cmtt-12">=1),</span><span
|
||||||
|
class="cmtt-12"> </span><span
|
||||||
|
class="cmtt-12">optional</span><span
|
||||||
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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">’N’,’n’</span></span></span> <span
|
class="cmtt-12">’</span><span
|
||||||
|
class="cmtt-12">N</span><span
|
||||||
|
class="cmtt-12">’</span><span
|
||||||
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12">’</span><span
|
||||||
|
class="cmtt-12">n</span><span
|
||||||
|
class="cmtt-12">’</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">’T’,’t’</span></span></span>
|
class="cmtt-12">’</span><span
|
||||||
|
class="cmtt-12">T</span><span
|
||||||
|
class="cmtt-12">’</span><span
|
||||||
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12">’</span><span
|
||||||
|
class="cmtt-12">t</span><span
|
||||||
|
class="cmtt-12">’</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">’C’,’c’</span></span></span> <span
|
class="cmtt-12">’</span><span
|
||||||
|
class="cmtt-12">C</span><span
|
||||||
|
class="cmtt-12">’</span><span
|
||||||
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12">’</span><span
|
||||||
|
class="cmtt-12">c</span><span
|
||||||
|
class="cmtt-12">’</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"> dimension(:),</span><span
|
class="cmtt-12"> </span><span
|
||||||
class="cmtt-12"> optional,</span><span
|
class="cmtt-12">dimension</span><span
|
||||||
class="cmtt-12"> target</span></span></span><span
|
class="cmtt-12">(:),</span><span
|
||||||
|
class="cmtt-12"> </span><span
|
||||||
|
class="cmtt-12">optional</span><span
|
||||||
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> *</span><span
|
class="cmtt-12"> </span><span
|
||||||
class="cmtt-12"> psb_cd_get_local_</span></span></span>
|
class="cmtt-12">*</span><span
|
||||||
<span class="obeylines-h"><span class="verb"><span
|
class="cmtt-12"> </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’s Guide). Note that </span><span
|
class="cmr-12">(see the PSBLAS User’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>
|
||||||
|
|||||||
+30
-17
@@ -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"> p%free(p,info)</span></span></span><br />
|
class="cmtt-12"> </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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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>
|
||||||
|
|||||||
+52
-32
@@ -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"> p%descr(info,</span><span
|
class="cmtt-12"> </span><span
|
||||||
class="cmtt-12"> [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"> </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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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"> intent(in),</span><span
|
class="cmtt-12">,</span><span
|
||||||
class="cmtt-12"> optional</span></span></span><span
|
class="cmtt-12"> </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"> </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>
|
||||||
|
|||||||
+194
-97
@@ -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"> p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])</span></span></span><br />
|
class="cmtt-12"> </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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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"> intent(in),</span><span
|
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||||
class="cmtt-12"> optional</span></span></span><span
|
class="cmtt-12">_base_sparse_mat</span><span
|
||||||
|
class="cmtt-12">),</span><span
|
||||||
|
class="cmtt-12"> </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"> </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"> p%clone(pout,info)</span></span></span><br />
|
class="cmtt-12"> </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"> 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"> </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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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"> =</span><span
|
|
||||||
class="cmtt-12"> </span><span
|
class="cmtt-12"> </span><span
|
||||||
class="cmtt-12"> p%sizeof()</span></span></span><br />
|
class="cmtt-12">=</span><span
|
||||||
|
class="cmtt-12"> </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"> p%allocate_wrk(info[,</span><span
|
class="cmtt-12"> </span><span
|
||||||
class="cmtt-12"> 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"> </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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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"> intent(in),</span><span
|
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||||
class="cmtt-12"> optional</span></span></span><span
|
class="cmtt-12">_base_vect_type</span><span
|
||||||
|
class="cmtt-12">),</span><span
|
||||||
|
class="cmtt-12"> </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"> </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"> p%free_wrk(info)</span></span></span><br />
|
class="cmtt-12"> </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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </span><a
|
||||||
href="userhtmlse7.html#x26-300007"><span
|
href="userhtmlse7.html#x26-300007"><span
|
||||||
|
|||||||
+10
-10
@@ -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 --with-psblas=PSB-INSTALL-DIR
|
./configure --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"> --help</span></span></span><span
|
class="cmtt-12"> --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">>.</span>
|
class="cmtt-12">>.</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 --with-psblas=/opt/psblas-3.5/ \
|
./configure --with-psblas=/opt/psblas-3.5/ \
|
||||||
 <br />--with-umfpackincdir=/usr/include/suitesparse/
|
 <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 install
|
make 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>
|
||||||
|
|||||||
+79
-77
@@ -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"> </span><a
|
class="cmr-12"> </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"> </span><a
|
class="cmr-12"> </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">’ML’</span></span></span> <span
|
class="cmtt-12">’</span><span
|
||||||
|
class="cmtt-12">ML</span><span
|
||||||
|
class="cmtt-12">’</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,16 +114,15 @@ 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"
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--l. 137--><p class="indent" > <a
|
||||||
|
id="x14-13001r1"></a><hr class="float"><div class="float"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
id="x14-130011"></a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="center"
|
<div class="center"
|
||||||
>
|
>
|
||||||
<!--l. 138--><p class="noindent" >
|
<!--l. 138--><p class="noindent" >
|
||||||
@@ -141,8 +146,8 @@ class="cmr-12">.</span>
|
|||||||
 <br />... ...
|
 <br />... ...
|
||||||
 <br />!
|
 <br />!
|
||||||
 <br />! initialize the parallel environment
|
 <br />! initialize the parallel environment
|
||||||
 <br />  call psb_init(ictxt)
|
 <br />  call psb_init(ctxt)
|
||||||
 <br />  call psb_info(ictxt,iam,np)
|
 <br />  call psb_info(ctxt,iam,np)
|
||||||
 <br />... ...
|
 <br />... ...
|
||||||
 <br />!
|
 <br />!
|
||||||
 <br />! read and assemble the spd matrix A and the right-hand side b
|
 <br />! read and assemble the spd matrix A and the right-hand side b
|
||||||
@@ -174,27 +179,28 @@ class="cmr-12">.</span>
|
|||||||
 <br />  ... ...
|
 <br />  ... ...
|
||||||
 <br />!
|
 <br />!
|
||||||
 <br />! exit the parallel environment
|
 <br />! exit the parallel environment
|
||||||
 <br />  call psb_exit(ictxt)
|
 <br />  call psb_exit(ctxt)
|
||||||
 <br />  stop
|
 <br />  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 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"> </span><a
|
class="cmr-12"> </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"> </span><span class="obeylines-h"><span class="verb"><span
|
class="cmr-12"> </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"> </span><a
|
class="cmr-12"> </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"> </span><a
|
class="cmr-12"> </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"> </span><a
|
class="cmr-12"> </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"
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--l. 291--><p class="indent" > <a
|
||||||
|
id="x14-13002r2"></a><hr class="float"><div class="float"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
id="x14-130022"></a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<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">
|
||||||
... ...
|
... ...
|
||||||
 <br />! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
 <br />! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||||
 <br />! ILU(0) on the blocks) as pre- and post-smoother, and 8  block-Jacobi
|
 <br />! ILU(0) on the blocks) as pre- and post-smoother, and 8  block-Jacobi
|
||||||
 <br />! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
 <br />! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
||||||
 <br />  call P%init(’ML’,info)
|
 <br />  call P%init(’ML’,info)
|
||||||
 <br />  call_P%set(’SMOOTHER_TYPE’,’BJAC’,info)
|
 <br />  call P%set(’SMOOTHER_TYPE’,’BJAC’,info)
|
||||||
 <br />  call P%set(’COARSE_SOLVE’,’BJAC’,info)
|
 <br />  call P%set(’COARSE_SOLVE’,’BJAC’,info)
|
||||||
 <br />  call P%set(’COARSE_SWEEPS’,8,info)
|
 <br />  call P%set(’COARSE_SWEEPS’,8,info)
|
||||||
 <br />  call P%hierarchy_build(A,desc_A,info)
|
 <br />  call P%hierarchy_build(A,desc_A,info)
|
||||||
 <br />  call P%smoothers_build(A,desc_A,info)
|
 <br />  call P%smoothers_build(A,desc_A,info)
|
||||||
 <br />... ...
|
 <br />... ...
|
||||||
</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 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"
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--l. 327--><p class="indent" > <a
|
||||||
|
id="x14-13003r3"></a><hr class="float"><div class="float"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
id="x14-130033"></a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<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">
|
||||||
... ...
|
... ...
|
||||||
 <br />! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
|
 <br />! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
|
||||||
@@ -330,29 +335,27 @@ class="content">setup of a multilevel preconditioner based on the default decoup
|
|||||||
 <br />  call P%smoothers_build(A,desc_A,info)
|
 <br />  call P%smoothers_build(A,desc_A,info)
|
||||||
 <br />... ...
|
 <br />... ...
|
||||||
</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 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"
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--l. 369--><p class="indent" > <a
|
||||||
|
id="x14-13004r4"></a><hr class="float"><div class="float"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
id="x14-130044"></a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<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">
|
||||||
... ...
|
... ...
|
||||||
 <br />! set RAS with overlap 2 and ILU(0) on the local blocks
|
 <br />! set RAS with overlap 2 and ILU(0) on the local blocks
|
||||||
@@ -363,15 +366,14 @@ on weighted matching</span></div><!--tex4ht:label?: x14-130033 -->
|
|||||||
 <br />! solve Ax=b with preconditioned BiCGSTAB
|
 <br />! solve Ax=b with preconditioned BiCGSTAB
|
||||||
 <br />  call psb_krylov(’BICGSTAB’,A,P,b,x,tol,desc_A,info)
|
 <br />  call psb_krylov(’BICGSTAB’,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 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" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+49
-20
@@ -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"> p%init(icontx,ptype,info)</span></span></span></div>
|
class="cmtt-12"> </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"> 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"> </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"> 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"> </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"> </span><a
|
class="cmr-12"> </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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"
|
||||||
|
|||||||
+604
-359
File diff suppressed because it is too large
Load Diff
+65
-33
@@ -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"> p%hierarchy_build(a,desc_a,info)</span></span></span><br />
|
class="cmtt-12"> </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"> 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"> </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’s Guide for details </span><span class="cite"><span
|
class="cmr-12">under use. See the PSBLAS User’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"> 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"> </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’s Guide</span>
|
class="cmr-12">. See the PSBLAS User’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"> intent(out)</span></span></span><span
|
class="cmtt-12">,</span><span
|
||||||
|
class="cmtt-12"> </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"> </span><a
|
class="cmr-12"> </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>
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
|
Mozilla’s 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:
|
||||||
+140
-40
@@ -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,11 +134,11 @@ 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}
|
||||||
{\small
|
\ifpdf
|
||||||
\begin{verbatim}
|
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
|
||||||
use psb_base_mod
|
use psb_base_mod
|
||||||
use amg_prec_mod
|
use amg_prec_mod
|
||||||
use psb_krylov_mod
|
use psb_krylov_mod
|
||||||
@@ -155,8 +155,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 +188,71 @@ 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
|
||||||
|
\end{minted}
|
||||||
|
\else
|
||||||
|
{\small
|
||||||
|
\begin{verbatim}
|
||||||
|
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
|
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
|
||||||
|
|||||||
+172
-173
@@ -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}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user