Updates to user guide

This commit is contained in:
sfilippone
2025-05-15 11:53:31 +02:00
parent b71459a38f
commit 695f31aa81
31 changed files with 18455 additions and 18160 deletions
+123 -122
View File
@@ -16,7 +16,7 @@ href="userhtmlse9.html#tailuserhtmlse9.html" >prev-tail</a>] [<a
href="userhtmlse7.html#tailuserhtmlse10.html">tail</a>] [<a
href="userhtml.html#userhtmlse13.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">10 </span> <a
id="x15-13500010"></a>Preconditioner routines</h3>
id="x16-13600010"></a>Preconditioner routines</h3>
<!--l. 6--><p class="noindent" >The base PSBLAS library contains the implementation of some simple preconditioning
techniques:
<ul class="itemize1">
@@ -38,7 +38,7 @@ for backward compatibility
<h4 class="subsectionHead"><span class="titlemark">10.1 </span> <a
id="x15-13600010.1"></a>init &#8212; Initialize a preconditioner</h4>
id="x16-13700010.1"></a>init &#8212; Initialize a preconditioner</h4>
@@ -125,8 +125,8 @@ class="newline" />Error code: if no error, 0 is returned.</dd></dl>
class="pplb7t-x-x-120">Notes </span>Legal inputs to this subroutine are interpreted depending on the <span
class="zplmr7m-">ptype </span>string as
follows<span class="footnote-mark"><a
href="userhtml16.html#fn4x0"><sup class="textsuperscript">4</sup></a></span><a
id="x15-136001f4"></a> :
href="userhtml17.html#fn4x0"><sup class="textsuperscript">4</sup></a></span><a
id="x16-137001f4"></a> :
<dl class="description"><dt class="description">
<!--l. 75--><p class="noindent" >
<span
@@ -152,12 +152,12 @@ class="description">
class="zplmr7m-">A</span>, where block boundaries are determined
by the data allocation boundaries for each process; requires no
communication. See also Table-<a
href="#x15-137001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>.</dd></dl>
href="#x16-138001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>.</dd></dl>
<h4 class="subsectionHead"><span class="titlemark">10.2 </span> <a
id="x15-13700010.2"></a>Set &#8212; set preconditioner parameters</h4>
id="x16-13800010.2"></a>Set &#8212; set preconditioner parameters</h4>
<div class="center"
>
<!--l. 92--><p class="noindent" >
@@ -181,7 +181,7 @@ class="td11"><!--l. 105--><p class="noindent" ><code class="lstinline"><span sty
class="td11"><!--l. 106--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-2-2"
class="td11"><!--l. 106--><p class="noindent" >The parameter to be set. It can be specified through its name; the string is
case-insensitive. See Table&#x00A0;<a
href="#x15-137001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>. </td>
href="#x16-138001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>. </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-23-3-"><td style="white-space:normal; text-align:left;" id="TBL-23-3-1"
class="td11"><!--l. 109--><p class="noindent" ><code class="lstinline"><span style="color:#000000">val</span><span style="color:#000000"> </span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-3-2"
@@ -195,7 +195,7 @@ class="pplri7t-">or </span><code class="lstinline"><span style="color:#000000"
class="td11"><!--l. 112--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-4-2"
class="td11"><!--l. 112--><p class="noindent" >The value of the parameter to be set. The list of allowed values and the
corresponding data types is given in Table&#x00A0;<a
href="#x15-137001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>. When the value is of type
href="#x16-138001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>. When the value is of type
<code class="lstinline"><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*)</span></code>, it is also treated as case insensitive. </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-23-5-"><td style="white-space:normal; text-align:left;" id="TBL-23-5-1"
@@ -205,18 +205,18 @@ class="td11"><!--l. 117--><p class="noindent" ><code class="lstinline"><span sty
style="vertical-align:baseline;" id="TBL-23-6-"><td style="white-space:normal; text-align:left;" id="TBL-23-6-1"
class="td11"><!--l. 118--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-6-2"
class="td11"><!--l. 118--><p class="noindent" >Error code. If no error, 0 is returned. See Section&#x00A0;<a
href="userhtmlse8.html#x13-1230008">8<!--tex4ht:ref: sec:errors --></a> for details. </td> </tr></table></div>
href="userhtmlse8.html#x14-1240008">8<!--tex4ht:ref: sec:errors --></a> for details. </td> </tr></table></div>
<!--l. 123--><p class="noindent" >A number of subdomain solvers can be chosen with this method; a list of the
parameters that can be set, along with their allowed and default values, is given in
Table-<a
href="#x15-137001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>.<br
href="#x16-138001r21">21<!--tex4ht:ref: tab:p_subsolve_1 --></a>.<br
class="newline" />
<div class="table">
<!--l. 130--><p class="indent" > <a
id="x15-137001r21"></a><hr class="float"><div class="float"
id="x16-138001r21"></a><hr class="float"><div class="float"
>
@@ -315,7 +315,7 @@ class="pplr7t-x-x-90">suited for GPUs since they do not employ</sp
class="pplr7t-x-x-90">triangular system solve kernels, see</span><span
class="pplr7t-x-x-90">&#x00A0;</span><span class="cite"><span
class="pplr7t-x-x-90">[</span><a
href="userhtmlli2.html#XBERTACCINIFILIPPONE"><span
href="userhtmlli3.html#XBERTACCINIFILIPPONE"><span
class="pplr7t-x-x-90">2</span></a><span
class="pplr7t-x-x-90">]</span></span><span
class="pplr7t-x-x-90">.</span> </td>
@@ -450,7 +450,7 @@ class="hline"><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td><hr></td><
class="td11"> </td></tr></table> </div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;21: </span><span
class="content">Parameters defining the solver of the BJAC preconditioner.</span></div><!--tex4ht:label?: x15-137001r21 -->
class="content">Parameters defining the solver of the BJAC preconditioner.</span></div><!--tex4ht:label?: x16-138001r21 -->
@@ -460,7 +460,7 @@ class="content">Parameters defining the solver of the BJAC preconditioner.</span
<h4 class="subsectionHead"><span class="titlemark">10.3 </span> <a
id="x15-13800010.3"></a>build &#8212; Builds a preconditioner</h4>
id="x16-13900010.3"></a>build &#8212; Builds a preconditioner</h4>
@@ -644,7 +644,7 @@ devices, such as GPUs and other accelerators.
<h4 class="subsectionHead"><span class="titlemark">10.4 </span> <a
id="x15-13900010.4"></a>apply &#8212; Preconditioner application routine</h4>
id="x16-14000010.4"></a>apply &#8212; Preconditioner application routine</h4>
@@ -780,14 +780,15 @@ class="newline" />Intent: <span
class="pplb7t-">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 315--><p class="noindent" ><span
class="pplb7t-x-x-120">Notes </span>This method is almost always called by the iterative methods of Sec.&#x00A0;<a
href="userhtmlse11.html#x17-14500011">11<!--tex4ht:ref: sec:methods --></a>, and
practically never directly by the user.
class="pplb7t-x-x-120">Notes </span>This method is almost always called by the iterative methods of
Sec.&#x00A0;<a
href="userhtmlse11.html#x18-14600011">11<!--tex4ht:ref: sec:methods --></a>; it is extremely unlikely to be needed directly by the application
developer.
<h4 class="subsectionHead"><span class="titlemark">10.5 </span> <a
id="x15-14000010.5"></a>descr &#8212; Prints a description of current preconditioner</h4>
id="x16-14100010.5"></a>descr &#8212; Prints a description of current preconditioner</h4>
@@ -795,26 +796,26 @@ practically never directly by the user.
call&#x00A0;prec%descr(info)
call&#x00A0;prec%descr(info,iout,&#x00A0;root)
</pre>
<!--l. 326--><p class="nopar" >
<!--l. 328--><p class="indent" >
<!--l. 327--><p class="nopar" >
<!--l. 329--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 329--><p class="noindent" >
<!--l. 330--><p class="noindent" >
<span
class="pplb7t-">Type:</span> </dt><dd
class="description">
<!--l. 329--><p class="noindent" >Asynchronous.
</dd><dt class="description">
<!--l. 330--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 330--><p class="noindent" >
<!--l. 330--><p class="noindent" >Asynchronous.
</dd><dt class="description">
<!--l. 331--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 331--><p class="noindent" >
</dd><dt class="description">
<!--l. 332--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 331--><p class="noindent" >the preconditioner. Scope: <span
<!--l. 332--><p class="noindent" >the preconditioner. Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@@ -826,11 +827,11 @@ class="cmtt-10">psb</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 336--><p class="noindent" >
<!--l. 337--><p class="noindent" >
<span
class="pplb7t-">iout</span> </dt><dd
class="description">
<!--l. 336--><p class="noindent" >output unit. Scope: <span
<!--l. 337--><p class="noindent" >output unit. Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">optional</span><br
@@ -838,11 +839,11 @@ class="newline" />Intent: <span
class="pplb7t-">in</span>.<br
class="newline" />Specified as: an integer number. Default: default output unit.
</dd><dt class="description">
<!--l. 341--><p class="noindent" >
<!--l. 342--><p class="noindent" >
<span
class="pplb7t-">root</span> </dt><dd
class="description">
<!--l. 341--><p class="noindent" >Process from which to print Scope: <span
<!--l. 342--><p class="noindent" >Process from which to print Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">optional</span><br
@@ -855,20 +856,20 @@ class="zplmr7y-">- </span>1, in which case
class="zplmr7y-">-</span>1, in which case all
processes will print. Default: 0.
</dd><dt class="description">
<!--l. 348--><p class="noindent" >
<!--l. 349--><p class="noindent" >
<span
class="pplb7t-">On Return</span> </dt><dd
class="description">
<!--l. 348--><p class="noindent" >
<!--l. 349--><p class="noindent" >
</dd><dt class="description">
<!--l. 349--><p class="noindent" >
<!--l. 350--><p class="noindent" >
<span
class="pplb7t-">info</span> </dt><dd
class="description">
<!--l. 349--><p class="noindent" >Error code.<br
<!--l. 350--><p class="noindent" >Error code.<br
class="newline" />Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
@@ -880,86 +881,86 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
<h4 class="subsectionHead"><span class="titlemark">10.6 </span> <a
id="x15-14100010.6"></a>clone &#8212; clone current preconditioner</h4>
id="x16-14200010.6"></a>clone &#8212; clone current preconditioner</h4>
<pre class="verbatim" id="verbatim-101">
call&#x00A0;&#x00A0;prec%clone(precout,info)
</pre>
<!--l. 362--><p class="nopar" >
<!--l. 364--><p class="indent" >
<!--l. 363--><p class="nopar" >
<!--l. 365--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 365--><p class="noindent" >
<!--l. 366--><p class="noindent" >
<span
class="pplb7t-">Type:</span> </dt><dd
class="description">
<!--l. 365--><p class="noindent" >Asynchronous.
</dd><dt class="description">
<!--l. 366--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 366--><p class="noindent" >
<!--l. 366--><p class="noindent" >Asynchronous.
</dd><dt class="description">
<!--l. 367--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 367--><p class="noindent" >
</dd><dt class="description">
<!--l. 368--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 367--><p class="noindent" >the preconditioner.<br
<!--l. 368--><p class="noindent" >the preconditioner.<br
class="newline" />Scope: <span
class="pplb7t-">local</span>.<br
class="newline" /></dd></dl>
<!--l. 374--><p class="indent" >
<!--l. 375--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 375--><p class="noindent" >
<!--l. 376--><p class="noindent" >
<span
class="pplb7t-">On Return</span> </dt><dd
class="description">
<!--l. 375--><p class="noindent" >
</dd><dt class="description">
<!--l. 376--><p class="noindent" >
<span
class="pplb7t-">precout</span> </dt><dd
class="description">
<!--l. 376--><p class="noindent" >A copy of the input object.
</dd><dt class="description">
<!--l. 377--><p class="noindent" >
<span
class="pplb7t-">precout</span> </dt><dd
class="description">
<!--l. 377--><p class="noindent" >A copy of the input object.
</dd><dt class="description">
<!--l. 378--><p class="noindent" >
<span
class="pplb7t-">info</span> </dt><dd
class="description">
<!--l. 377--><p class="noindent" >Return code.</dd></dl>
<!--l. 378--><p class="noindent" >Return code.</dd></dl>
<h4 class="subsectionHead"><span class="titlemark">10.7 </span> <a
id="x15-14200010.7"></a>free &#8212; Free a preconditioner</h4>
id="x16-14300010.7"></a>free &#8212; Free a preconditioner</h4>
<pre class="verbatim" id="verbatim-102">
call&#x00A0;prec%free(info)
</pre>
<!--l. 385--><p class="nopar" >
<!--l. 387--><p class="indent" >
<!--l. 386--><p class="nopar" >
<!--l. 388--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 388--><p class="noindent" >
<!--l. 389--><p class="noindent" >
<span
class="pplb7t-">Type:</span> </dt><dd
class="description">
<!--l. 388--><p class="noindent" >Asynchronous.
</dd><dt class="description">
<!--l. 389--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 389--><p class="noindent" >
<!--l. 389--><p class="noindent" >Asynchronous.
</dd><dt class="description">
<!--l. 390--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 390--><p class="noindent" >
</dd><dt class="description">
<!--l. 391--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 390--><p class="noindent" >the preconditioner.<br
<!--l. 391--><p class="noindent" >the preconditioner.<br
class="newline" />Scope: <span
class="pplb7t-">local</span>.<br
class="newline" />Type: <span
@@ -972,17 +973,17 @@ class="cmtt-10">psb</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 403--><p class="noindent" >
<!--l. 404--><p class="noindent" >
<span
class="pplb7t-">On Exit</span> </dt><dd
class="description">
<!--l. 403--><p class="noindent" >
<!--l. 404--><p class="noindent" >
</dd><dt class="description">
<!--l. 405--><p class="noindent" >
<!--l. 406--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 405--><p class="noindent" >Scope: <span
<!--l. 406--><p class="noindent" >Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@@ -994,50 +995,50 @@ class="cmtt-10">psb</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 410--><p class="noindent" >
<!--l. 411--><p class="noindent" >
<span
class="pplb7t-">info</span> </dt><dd
class="description">
<!--l. 410--><p class="noindent" >Scope: <span
<!--l. 411--><p class="noindent" >Scope: <span
class="pplb7t-">global </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
class="newline" />Intent: <span
class="pplb7t-">out</span>.<br
class="newline" />Error code: if no error, 0 is returned.</dd></dl>
<!--l. 416--><p class="noindent" ><span
<!--l. 417--><p class="noindent" ><span
class="pplb7t-x-x-120">Notes </span>Releases all internal storage.
<h4 class="subsectionHead"><span class="titlemark">10.8 </span> <a
id="x15-14300010.8"></a>allocate_wrk &#8212; preconditioner</h4>
id="x16-14400010.8"></a>allocate_wrk &#8212; preconditioner</h4>
<pre class="verbatim" id="verbatim-103">
call&#x00A0;prec%allocate_wrk(info[,vmold])
</pre>
<!--l. 428--><p class="nopar" >
<!--l. 430--><p class="indent" >
<!--l. 429--><p class="nopar" >
<!--l. 431--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 431--><p class="noindent" >
<!--l. 432--><p class="noindent" >
<span
class="pplb7t-">Type:</span> </dt><dd
class="description">
<!--l. 431--><p class="noindent" >Synchronous.
</dd><dt class="description">
<!--l. 432--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 432--><p class="noindent" >
<!--l. 432--><p class="noindent" >Synchronous.
</dd><dt class="description">
<!--l. 433--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 433--><p class="noindent" >
</dd><dt class="description">
<!--l. 434--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 433--><p class="noindent" >the preconditioner.<br
<!--l. 434--><p class="noindent" >the preconditioner.<br
class="newline" />Scope: <span
class="pplb7t-">local</span>.<br
class="newline" />Type: <span
@@ -1050,11 +1051,11 @@ class="cmtt-10">psb</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 438--><p class="noindent" >
<!--l. 439--><p class="noindent" >
<span
class="pplb7t-">vmold</span> </dt><dd
class="description">
<!--l. 438--><p class="noindent" >The desired dynamic type for the internal vector storage.<br
<!--l. 439--><p class="noindent" >The desired dynamic type for the internal vector storage.<br
class="newline" />Scope: <span
class="pplb7t-">local</span>.<br
class="newline" />Type: <span
@@ -1069,17 +1070,17 @@ class="cmtt-10">_base</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span>.
</dd><dt class="description">
<!--l. 443--><p class="noindent" >
<!--l. 444--><p class="noindent" >
<span
class="pplb7t-">On Exit</span> </dt><dd
class="description">
<!--l. 443--><p class="noindent" >
<!--l. 444--><p class="noindent" >
</dd><dt class="description">
<!--l. 445--><p class="noindent" >
<!--l. 446--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 445--><p class="noindent" >Scope: <span
<!--l. 446--><p class="noindent" >Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@@ -1094,37 +1095,37 @@ class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 450--><p class="noindent" >
<!--l. 451--><p class="noindent" >
<span
class="pplb7t-">info</span> </dt><dd
class="description">
<!--l. 450--><p class="noindent" >Scope: <span
<!--l. 451--><p class="noindent" >Scope: <span
class="pplb7t-">global </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
class="newline" />Intent: <span
class="pplb7t-">out</span>.<br
class="newline" />Error code: if no error, 0 is returned.</dd></dl>
<!--l. 456--><p class="noindent" ><span
<!--l. 457--><p class="noindent" ><span
class="pplb7t-x-x-120">Notes </span>Preconditioners often need internal work storage during their application at
each iteration of a linear solver method: in many situations this can be accomplished
by allocating and releasing memory &#8220;on the fly&#8221;. However, when running on an
accelerator through e.g. the CUDA enabled data strutures of Sec.&#x00A0;<a
href="userhtmlse12.html#x19-15600012.4">12.4<!--tex4ht:ref: sec:cudastruct --></a> and &#x00A0;<a
href="userhtmlse13.html#x20-15700013">13<!--tex4ht:ref: sec:cudaenv --></a>,
href="userhtmlse12.html#x20-15700012.4">12.4<!--tex4ht:ref: sec:cudastruct --></a> and &#x00A0;<a
href="userhtmlse13.html#x21-15800013">13<!--tex4ht:ref: sec:cudaenv --></a>,
memory allocation and deallocation usually have a much larger overhead,
significantly affecting performance. To alleviate this problem we define this method
that preallocates internal storage; it is intended to be invoked prior to the iterative
solver method, so that the necessary internal work storage is available throughout
the iterative method application.
<!--l. 473--><p class="indent" > When using GPUs or other specialized devices, the <code class="lstinline"><span style="color:#000000">vmold</span></code> argument is also
<!--l. 474--><p class="indent" > When using GPUs or other specialized devices, the <code class="lstinline"><span style="color:#000000">vmold</span></code> argument is also
necessary to ensure the internal work vectors are of the appropriate dynamic type to
exploit the accelerator hardware.
<h4 class="subsectionHead"><span class="titlemark">10.9 </span> <a
id="x15-14400010.9"></a>deallocate_wrk &#8212; preconditioner</h4>
id="x16-14500010.9"></a>deallocate_wrk &#8212; preconditioner</h4>
@@ -1132,26 +1133,26 @@ exploit the accelerator hardware.
call&#x00A0;prec%allocate_wrk(info)
call&#x00A0;prec%free_wrk(info)
</pre>
<!--l. 483--><p class="nopar" >
<!--l. 485--><p class="indent" >
<!--l. 484--><p class="nopar" >
<!--l. 486--><p class="indent" >
<dl class="description"><dt class="description">
<!--l. 486--><p class="noindent" >
<!--l. 487--><p class="noindent" >
<span
class="pplb7t-">Type:</span> </dt><dd
class="description">
<!--l. 486--><p class="noindent" >Synchronous.
</dd><dt class="description">
<!--l. 487--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 487--><p class="noindent" >
<!--l. 487--><p class="noindent" >Synchronous.
</dd><dt class="description">
<!--l. 488--><p class="noindent" >
<span
class="pplb7t-">On Entry</span> </dt><dd
class="description">
<!--l. 488--><p class="noindent" >
</dd><dt class="description">
<!--l. 489--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 488--><p class="noindent" >the preconditioner.<br
<!--l. 489--><p class="noindent" >the preconditioner.<br
class="newline" />Scope: <span
class="pplb7t-">local</span>.<br
class="newline" />Type: <span
@@ -1164,17 +1165,17 @@ class="cmtt-10">psb</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 493--><p class="noindent" >
<!--l. 494--><p class="noindent" >
<span
class="pplb7t-">On Exit</span> </dt><dd
class="description">
<!--l. 493--><p class="noindent" >
<!--l. 494--><p class="noindent" >
</dd><dt class="description">
<!--l. 495--><p class="noindent" >
<!--l. 496--><p class="noindent" >
<span
class="pplb7t-">prec</span> </dt><dd
class="description">
<!--l. 495--><p class="noindent" >Scope: <span
<!--l. 496--><p class="noindent" >Scope: <span
class="pplb7t-">local </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@@ -1186,11 +1187,11 @@ class="cmtt-10">psb</span><span
class="cmtt-10">_Tprec</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<!--l. 500--><p class="noindent" >
<!--l. 501--><p class="noindent" >
<span
class="pplb7t-">info</span> </dt><dd
class="description">
<!--l. 500--><p class="noindent" >Scope: <span
<!--l. 501--><p class="noindent" >Scope: <span
class="pplb7t-">global </span><br
class="newline" />Type: <span
class="pplb7t-">required</span><br
@@ -1200,10 +1201,10 @@ class="newline" />Error code: if no error, 0 is returned.</dd></dl>
<!--l. 506--><p class="noindent" ><span
<!--l. 507--><p class="noindent" ><span
class="pplb7t-x-x-120">Notes </span>Deallocates preconditioner internal work storage; to be invoked after an
iterative solver has completed execution, see the discussion in Sec.&#x00A0;<a
href="#x15-14300010.8">10.8<!--tex4ht:ref: sec:allocatewrk --></a>.
href="#x16-14400010.8">10.8<!--tex4ht:ref: sec:allocatewrk --></a>.