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
+93 -93
View File
@@ -17,10 +17,10 @@ href="userhtmlse5.html#tailuserhtmlse5.html" >prev-tail</a>] [<a
href="userhtmlse3.html#tailuserhtmlse6.html">tail</a>] [<a
href="userhtml.html#userhtmlse9.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">6 </span> <a
id="x11-770006"></a>Data management routines</h3>
id="x12-780006"></a>Data management routines</h3>
<!--l. 8--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">6.1 </span> <a
id="x11-780006.1"></a>psb_cdall &#8212; Allocates a communication descriptor</h4>
id="x12-790006.1"></a>psb_cdall &#8212; Allocates a communication descriptor</h4>
@@ -261,7 +261,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-78002x1">
class="enumerate" id="x12-79002x1">
@@ -427,7 +427,7 @@ class="cmtt-10">local</span></span></span> in calls to <span class="obeylines-h"
class="cmtt-10">psb_spins</span></span></span> and
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_geins</span></span></span>; see also sec.&#x00A0;<a
href="userhtmlse2.html#x4-70002.3.1">2.3.1<!--tex4ht:ref: sec:usermaps --></a>.
href="userhtmlse2.html#x5-80002.3.1">2.3.1<!--tex4ht:ref: sec:usermaps --></a>.
</dd><dt class="description">
<!--l. 165--><p class="noindent" >
<span
@@ -452,18 +452,18 @@ class="description">
multilevel preconditioners.</dd></dl>
</li>
<li
class="enumerate" id="x11-78004x2">
class="enumerate" id="x12-79004x2">
<!--l. 173--><p class="noindent" >On exit from this routine the descriptor is in the build state.
</li>
<li
class="enumerate" id="x11-78006x3">
class="enumerate" id="x12-79006x3">
<!--l. 175--><p class="noindent" >Calling the routine with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vg</span></span></span> or <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">parts</span></span></span> implies that every process will scan the
entire index space to figure out the local indices.
</li>
<li
class="enumerate" id="x11-78008x4">
class="enumerate" id="x12-79008x4">
<!--l. 178--><p class="noindent" >Overlapped indices are possible with both <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">parts</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span> invocations.
@@ -472,7 +472,7 @@ class="cmtt-10">vl</span></span></span> invocations.
</li>
<li
class="enumerate" id="x11-78010x5">
class="enumerate" id="x12-79010x5">
<!--l. 180--><p class="noindent" >When the subroutine is invoked with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span> in conjunction with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">globalcheck=.true.</span></span></span>,
@@ -480,7 +480,7 @@ class="cmtt-10">globalcheck=.true.</span></span></span>,
indices.
</li>
<li
class="enumerate" id="x11-78012x6">
class="enumerate" id="x12-79012x6">
<!--l. 183--><p class="noindent" >When the subroutine is invoked with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span> in conjunction with
<span class="obeylines-h"><span class="verb"><span
@@ -491,7 +491,7 @@ class="cmtt-10">vl</span></span></span> have
unpredictable.
</li>
<li
class="enumerate" id="x11-78014x7">
class="enumerate" id="x12-79014x7">
<!--l. 189--><p class="noindent" >Orphan and overlap indices are impossible by construction when the
subroutine is invoked with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">nl</span></span></span> (alone), or <span class="obeylines-h"><span class="verb"><span
@@ -500,7 +500,7 @@ class="cmtt-10">vg</span></span></span>.</li></ol>
<h4 class="subsectionHead"><span class="titlemark">6.2 </span> <a
id="x11-790006.2"></a>psb_cdins &#8212; Communication descriptor insert routine</h4>
id="x12-800006.2"></a>psb_cdins &#8212; Communication descriptor insert routine</h4>
@@ -696,25 +696,25 @@ class="zplmr7m-">nz</span>.
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-79002x1">
class="enumerate" id="x12-80002x1">
<!--l. 279--><p class="noindent" >This routine may only be called if the descriptor is in the build state;
</li>
<li
class="enumerate" id="x11-79004x2">
class="enumerate" id="x12-80004x2">
<!--l. 281--><p class="noindent" >This routine automatically ignores edges that do not insist on the current
process, i.e. edges for which neither the starting nor the end vertex belong
to the current process.
</li>
<li
class="enumerate" id="x11-79006x3">
class="enumerate" id="x12-80006x3">
<!--l. 284--><p class="noindent" >The second form of this routine will be useful when dealing with
user-specified index mappings; see also&#x00A0;<a
href="userhtmlse2.html#x4-70002.3.1">2.3.1<!--tex4ht:ref: sec:usermaps --></a>.</li></ol>
href="userhtmlse2.html#x5-80002.3.1">2.3.1<!--tex4ht:ref: sec:usermaps --></a>.</li></ol>
<h4 class="subsectionHead"><span class="titlemark">6.3 </span> <a
id="x11-800006.3"></a>psb_cdasb &#8212; Communication descriptor assembly routine</h4>
id="x12-810006.3"></a>psb_cdasb &#8212; Communication descriptor assembly routine</h4>
@@ -818,7 +818,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-80002x1">
class="enumerate" id="x12-81002x1">
<!--l. 331--><p class="noindent" >On exit from this routine the descriptor is in the assembled state.</li></ol>
<!--l. 334--><p class="noindent" >This call will set up all the necessary information for the halo data exchanges. In doing
so, the library will need to identify the set of processes owning the halo indices
@@ -835,7 +835,7 @@ class="cmtt-10">psb_cdasb</span></span></span>.
<h4 class="subsectionHead"><span class="titlemark">6.4 </span> <a
id="x11-810006.4"></a>psb_cdcpy &#8212; Copies a communication descriptor</h4>
id="x12-820006.4"></a>psb_cdcpy &#8212; Copies a communication descriptor</h4>
@@ -920,7 +920,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
<h4 class="subsectionHead"><span class="titlemark">6.5 </span> <a
id="x11-820006.5"></a>psb_cdfree &#8212; Frees a communication descriptor</h4>
id="x12-830006.5"></a>psb_cdfree &#8212; Frees a communication descriptor</h4>
@@ -983,7 +983,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
<h4 class="subsectionHead"><span class="titlemark">6.6 </span> <a
id="x11-830006.6"></a>psb_cdbldext &#8212; Build an extended communication descriptor</h4>
id="x12-840006.6"></a>psb_cdbldext &#8212; Build an extended communication descriptor</h4>
@@ -1116,7 +1116,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-83002x1">
class="enumerate" id="x12-84002x1">
<!--l. 465--><p class="noindent" >Specifying <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_ovt_xhal_</span></span></span> for the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">extype</span></span></span> argument the user will obtain
@@ -1125,7 +1125,7 @@ class="cmtt-10">extype</span></span></span> argument the user will obtain
mapping is identical to that of the base descriptor;
</li>
<li
class="enumerate" id="x11-83004x2">
class="enumerate" id="x12-84004x2">
@@ -1139,7 +1139,7 @@ class="cmtt-10">extype</span></span></span> argument the user will obtain
<h4 class="subsectionHead"><span class="titlemark">6.7 </span> <a
id="x11-840006.7"></a>psb_spall &#8212; Allocates a sparse matrix</h4>
id="x12-850006.7"></a>psb_spall &#8212; Allocates a sparse matrix</h4>
@@ -1272,18 +1272,18 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-84002x1">
class="enumerate" id="x12-85002x1">
<!--l. 597--><p class="noindent" >On exit from this routine the sparse matrix is in the build state.
</li>
<li
class="enumerate" id="x11-84004x2">
class="enumerate" id="x12-85004x2">
<!--l. 599--><p class="noindent" >The descriptor may be in either the build or assembled state.
</li>
<li
class="enumerate" id="x11-84006x3">
class="enumerate" id="x12-85006x3">
<!--l. 600--><p class="noindent" >Providing a good estimate for the number of nonzeroes <span
class="zplmr7m-">nnz </span>in the
assembled matrix may substantially improve performance in the matrix
@@ -1291,7 +1291,7 @@ class="zplmr7m-">nnz </span>in the
multiple) data reallocations;
</li>
<li
class="enumerate" id="x11-84008x4">
class="enumerate" id="x12-85008x4">
<!--l. 604--><p class="noindent" >Using <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_matbld_remote_</span></span></span> is likely to cause a runtime overhead at
assembly time;</li></ol>
@@ -1299,7 +1299,7 @@ class="cmtt-10">psb_matbld_remote_</span></span></span> is likely to cause a
<h4 class="subsectionHead"><span class="titlemark">6.8 </span> <a
id="x11-850006.8"></a>psb_spins &#8212; Insert a set of coefficients into a sparse matrix</h4>
id="x12-860006.8"></a>psb_spins &#8212; Insert a set of coefficients into a sparse matrix</h4>
@@ -1523,17 +1523,17 @@ class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-85002x1">
class="enumerate" id="x12-86002x1">
<!--l. 702--><p class="noindent" >On entry to this routine the descriptor may be in either the build or
assembled state.
</li>
<li
class="enumerate" id="x11-85004x2">
class="enumerate" id="x12-86004x2">
<!--l. 704--><p class="noindent" >On entry to this routine the sparse matrix may be in either the build or
update state.
</li>
<li
class="enumerate" id="x11-85006x3">
class="enumerate" id="x12-86006x3">
<!--l. 706--><p class="noindent" >If the descriptor is in the build state, then the sparse matrix must also be
in the build state; the action of the routine is to (implicitly) call <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdins</span></span></span>
@@ -1542,11 +1542,11 @@ class="cmtt-10">psb_cdins</span></span></span>
appropriate processing;
</li>
<li
class="enumerate" id="x11-85008x4">
class="enumerate" id="x12-86008x4">
<!--l. 712--><p class="noindent" >The input data can be passed in either COO or CSR formats;
</li>
<li
class="enumerate" id="x11-85010x5">
class="enumerate" id="x12-86010x5">
<!--l. 713--><p class="noindent" >In COO format the coefficients to be inserted are represented by the
ordered triples <span
class="zplmr7m-">ia</span><span
@@ -1568,7 +1568,7 @@ class="zplmr7m-">nz</span>; these triples are
arbitrary;
</li>
<li
class="enumerate" id="x11-85012x6">
class="enumerate" id="x12-86012x6">
<!--l. 716--><p class="noindent" >In CSR format the coefficients to be inserted for each input row <span
class="zplmr7m-">i </span><span
class="zplmr7t-">= </span>1, <span
@@ -1610,7 +1610,7 @@ class="zplmr7y-">- </span>1 should be one of the local indices, but are
arbitrary;
</li>
<li
class="enumerate" id="x11-85014x7">
class="enumerate" id="x12-86014x7">
<!--l. 721--><p class="noindent" >There is no requirement that a given row must be passed in its entirety
to a single call to this routine: the buildup of a row may be split into as
many calls as desired (even in the CSR format);
@@ -1619,12 +1619,12 @@ class="zplmr7y-">- </span>1 should be one of the local indices, but are
</li>
<li
class="enumerate" id="x11-85016x8">
class="enumerate" id="x12-86016x8">
<!--l. 724--><p class="noindent" >Coefficients from different rows may also be mixed up freely in a single
call, according to the application needs;
</li>
<li
class="enumerate" id="x11-85018x9">
class="enumerate" id="x12-86018x9">
<!--l. 726--><p class="noindent" >Coefficients from matrix rows not owned by the calling process are
treated according to the value of <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">bldmode</span></span></span> specified at allocation time; if
@@ -1634,20 +1634,20 @@ class="cmtt-10">psb_matbld_remote_</span></span></span> the library will keep tr
of them, otherwise they are silently ignored;
</li>
<li
class="enumerate" id="x11-85020x10">
class="enumerate" id="x12-86020x10">
<!--l. 731--><p class="noindent" >If the descriptor is in the assembled state, then any entries in the sparse
matrix that would generate additional communication requirements are
ignored;
</li>
<li
class="enumerate" id="x11-85022x11">
class="enumerate" id="x12-86022x11">
<!--l. 734--><p class="noindent" >If the matrix is in the update state, any entries in positions that were not
present in the original matrix are ignored.</li></ol>
<h4 class="subsectionHead"><span class="titlemark">6.9 </span> <a
id="x11-860006.9"></a>psb_spasb &#8212; Sparse matrix assembly routine</h4>
id="x12-870006.9"></a>psb_spasb &#8212; Sparse matrix assembly routine</h4>
@@ -1798,7 +1798,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-86002x1">
class="enumerate" id="x12-87002x1">
<!--l. 795--><p class="noindent" >On entry to this routine the descriptor must be in the assembled state, i.e.
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdasb</span></span></span> must already have been called.
@@ -1807,17 +1807,17 @@ class="cmtt-10">psb_cdasb</span></span></span> must already have been called.
</li>
<li
class="enumerate" id="x11-86004x2">
class="enumerate" id="x12-87004x2">
<!--l. 797--><p class="noindent" >The sparse matrix may be in either the build or update state;
</li>
<li
class="enumerate" id="x11-86006x3">
class="enumerate" id="x12-87006x3">
<!--l. 798--><p class="noindent" >Duplicate entries are detected and handled in both build and update
state, with the exception of the error action that is only taken in the build
state, i.e. on the first assembly;
</li>
<li
class="enumerate" id="x11-86008x4">
class="enumerate" id="x12-87008x4">
<!--l. 801--><p class="noindent" >If the update choice is <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_upd_perm_</span></span></span>, then subsequent calls to
<span class="obeylines-h"><span class="verb"><span
@@ -1826,16 +1826,16 @@ class="cmtt-10">psb_spins</span></span></span> to update the matrix must be arra
at the first assembly;
</li>
<li
class="enumerate" id="x11-86010x5">
class="enumerate" id="x12-87010x5">
<!--l. 805--><p class="noindent" >The output storage format need not be the same on all processes;
</li>
<li
class="enumerate" id="x11-86012x6">
class="enumerate" id="x12-87012x6">
<!--l. 807--><p class="noindent" >On exit from this routine the matrix is in the assembled state, and thus is
suitable for the computational routines;
</li>
<li
class="enumerate" id="x11-86014x7">
class="enumerate" id="x12-87014x7">
<!--l. 809--><p class="noindent" >If the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">bldmode=psb_matbld_remote_</span></span></span> value was specified at allocation
time, contributions defined on the current process but belonging to a
@@ -1848,7 +1848,7 @@ class="cmtt-10">dupl=psb_dupl_add_</span></span></span>; it is necessary
<h4 class="subsectionHead"><span class="titlemark">6.10 </span> <a
id="x11-870006.10"></a>psb_spfree &#8212; Frees a sparse matrix</h4>
id="x12-880006.10"></a>psb_spfree &#8212; Frees a sparse matrix</h4>
@@ -1931,7 +1931,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
<h4 class="subsectionHead"><span class="titlemark">6.11 </span> <a
id="x11-880006.11"></a>psb_sprn &#8212; Reinit sparse matrix structure for psblas routines.</h4>
id="x12-890006.11"></a>psb_sprn &#8212; Reinit sparse matrix structure for psblas routines.</h4>
@@ -2027,13 +2027,13 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-88002x1">
class="enumerate" id="x12-89002x1">
<!--l. 930--><p class="noindent" >On exit from this routine the sparse matrix is in the update state.</li></ol>
<h4 class="subsectionHead"><span class="titlemark">6.12 </span> <a
id="x11-890006.12"></a>psb_geall &#8212; Allocates a dense matrix</h4>
id="x12-900006.12"></a>psb_geall &#8212; Allocates a dense matrix</h4>
@@ -2190,7 +2190,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-89002x1">
class="enumerate" id="x12-90002x1">
<!--l. 1040--><p class="noindent" >Using <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_matbld_remote_</span></span></span> is likely to cause a runtime overhead at
assembly time;</li></ol>
@@ -2198,7 +2198,7 @@ class="cmtt-10">psb_matbld_remote_</span></span></span> is likely to cause a
<h4 class="subsectionHead"><span class="titlemark">6.13 </span> <a
id="x11-900006.13"></a>psb_geins &#8212; Dense matrix insertion routine</h4>
id="x12-910006.13"></a>psb_geins &#8212; Dense matrix insertion routine</h4>
@@ -2349,18 +2349,18 @@ class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-90002x1">
class="enumerate" id="x12-91002x1">
<!--l. 1105--><p class="noindent" >Dense vectors/matrices do not have an associated state;
</li>
<li
class="enumerate" id="x11-90004x2">
class="enumerate" id="x12-91004x2">
<!--l. 1106--><p class="noindent" >Duplicate entries are either overwritten or added, there is no provision
for raising an error condition.</li></ol>
<h4 class="subsectionHead"><span class="titlemark">6.14 </span> <a
id="x11-910006.14"></a>psb_geasb &#8212; Assembly a dense matrix</h4>
id="x12-920006.14"></a>psb_geasb &#8212; Assembly a dense matrix</h4>
@@ -2473,13 +2473,13 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-91002x1">
class="enumerate" id="x12-92002x1">
<!--l. 1155--><p class="noindent" >On entry to this routine the descriptor must be in the assembled state, i.e.
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdasb</span></span></span> must already have been called.
</li>
<li
class="enumerate" id="x11-91004x2">
class="enumerate" id="x12-92004x2">
<!--l. 1157--><p class="noindent" >If the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">bldmode=psb_matbld_remote_</span></span></span> value was specified at allocation
time, contributions defined on the current process but belonging to a
@@ -2490,7 +2490,7 @@ class="cmtt-10">dupl=psb_dupl_add_</span></span></span>.</li></ol>
<h4 class="subsectionHead"><span class="titlemark">6.15 </span> <a
id="x11-920006.15"></a>psb_gefree &#8212; Frees a dense matrix</h4>
id="x12-930006.15"></a>psb_gefree &#8212; Frees a dense matrix</h4>
@@ -2577,7 +2577,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
<h4 class="subsectionHead"><span class="titlemark">6.16 </span> <a
id="x11-930006.16"></a>psb_gelp &#8212; Applies a left permutation to a dense matrix</h4>
id="x12-940006.16"></a>psb_gelp &#8212; Applies a left permutation to a dense matrix</h4>
@@ -2673,7 +2673,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
<h4 class="subsectionHead"><span class="titlemark">6.17 </span> <a
id="x11-940006.17"></a>psb_glob_to_loc &#8212; Global to local indices convertion</h4>
id="x12-950006.17"></a>psb_glob_to_loc &#8212; Global to local indices convertion</h4>
@@ -2815,7 +2815,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-94002x1">
class="enumerate" id="x12-95002x1">
@@ -2823,7 +2823,7 @@ class="pplb7t-x-x-120">Notes</span>
set to a negative number;
</li>
<li
class="enumerate" id="x11-94004x2">
class="enumerate" id="x12-95004x2">
<!--l. 1311--><p class="noindent" >The default <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">I</span></span></span>gnore means that the negative output is the only action
taken on an out-of-range input.</li></ol>
@@ -2831,7 +2831,7 @@ class="cmtt-10">I</span></span></span>gnore means that the negative output
<h4 class="subsectionHead"><span class="titlemark">6.18 </span> <a
id="x11-950006.18"></a>psb_loc_to_glob &#8212; Local to global indices conversion</h4>
id="x12-960006.18"></a>psb_loc_to_glob &#8212; Local to global indices conversion</h4>
@@ -2959,7 +2959,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
<h4 class="subsectionHead"><span class="titlemark">6.19 </span> <a
id="x11-960006.19"></a>psb_is_owned &#8212; </h4>
id="x12-970006.19"></a>psb_is_owned &#8212; </h4>
@@ -3040,7 +3040,7 @@ class="newline" /></dd></dl>
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-96002x1">
class="enumerate" id="x12-97002x1">
<!--l. 1407--><p class="noindent" >This routine returns a <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.true.</span></span></span> value for an index that is strictly owned by
the current process, excluding the halo indices</li></ol>
@@ -3048,7 +3048,7 @@ class="cmtt-10">.true.</span></span></span> value for an index that is strictly
<h4 class="subsectionHead"><span class="titlemark">6.20 </span> <a
id="x11-970006.20"></a>psb_owned_index &#8212; </h4>
id="x12-980006.20"></a>psb_owned_index &#8212; </h4>
@@ -3158,7 +3158,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-97002x1">
class="enumerate" id="x12-98002x1">
<!--l. 1459--><p class="noindent" >This routine returns a <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.true.</span></span></span> value for those indices that are strictly
owned by the current process, excluding the halo indices</li></ol>
@@ -3166,7 +3166,7 @@ class="cmtt-10">.true.</span></span></span> value for those indices that ar
<h4 class="subsectionHead"><span class="titlemark">6.21 </span> <a
id="x11-980006.21"></a>psb_is_local &#8212; </h4>
id="x12-990006.21"></a>psb_is_local &#8212; </h4>
@@ -3247,7 +3247,7 @@ class="newline" /></dd></dl>
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-98002x1">
class="enumerate" id="x12-99002x1">
<!--l. 1499--><p class="noindent" >This routine returns a <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.true.</span></span></span> value for an index that is local to the current
process, including the halo indices</li></ol>
@@ -3255,7 +3255,7 @@ class="cmtt-10">.true.</span></span></span> value for an index that is local to
<h4 class="subsectionHead"><span class="titlemark">6.22 </span> <a
id="x11-990006.22"></a>psb_local_index &#8212; </h4>
id="x12-1000006.22"></a>psb_local_index &#8212; </h4>
@@ -3365,7 +3365,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-99002x1">
class="enumerate" id="x12-100002x1">
<!--l. 1550--><p class="noindent" >This routine returns a <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.true.</span></span></span> value for those indices that are local to the
current process, including the halo indices.</li></ol>
@@ -3373,7 +3373,7 @@ class="cmtt-10">.true.</span></span></span> value for those indices that are loc
<h4 class="subsectionHead"><span class="titlemark">6.23 </span> <a
id="x11-1000006.23"></a>psb_get_boundary &#8212; Extract list of boundary elements</h4>
id="x12-1010006.23"></a>psb_get_boundary &#8212; Extract list of boundary elements</h4>
@@ -3453,13 +3453,13 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-100002x1">
class="enumerate" id="x12-101002x1">
<!--l. 1596--><p class="noindent" >If there are no boundary elements (i.e., if the local part of the connectivity
graph is self-contained) the output vector is set to the &#8220;not allocated&#8221;
state.
</li>
<li
class="enumerate" id="x11-100004x2">
class="enumerate" id="x12-101004x2">
<!--l. 1599--><p class="noindent" >Otherwise the size of <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">bndel</span></span></span> will be exactly equal to the number of
boundary elements.</li></ol>
@@ -3467,7 +3467,7 @@ class="cmtt-10">bndel</span></span></span> will be exactly equal to the nu
<h4 class="subsectionHead"><span class="titlemark">6.24 </span> <a
id="x11-1010006.24"></a>psb_get_overlap &#8212; Extract list of overlap elements</h4>
id="x12-1020006.24"></a>psb_get_overlap &#8212; Extract list of overlap elements</h4>
@@ -3547,12 +3547,12 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-101002x1">
class="enumerate" id="x12-102002x1">
<!--l. 1639--><p class="noindent" >If there are no overlap elements the output vector is set to the &#8220;not
allocated&#8221; state.
</li>
<li
class="enumerate" id="x11-101004x2">
class="enumerate" id="x12-102004x2">
<!--l. 1641--><p class="noindent" >Otherwise the size of <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">ovrel</span></span></span> will be exactly equal to the number of overlap
elements.</li></ol>
@@ -3560,7 +3560,7 @@ class="cmtt-10">ovrel</span></span></span> will be exactly equal to the number o
<h4 class="subsectionHead"><span class="titlemark">6.25 </span> <a
id="x11-1020006.25"></a>psb_sp_getrow &#8212; Extract row(s) from a sparse matrix</h4>
id="x12-1030006.25"></a>psb_sp_getrow &#8212; Extract row(s) from a sparse matrix</h4>
@@ -3742,7 +3742,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-102002x1">
class="enumerate" id="x12-103002x1">
<!--l. 1727--><p class="noindent" >The output <span
class="zplmr7m-">nz </span>is always the size of the output generated by the current
call; thus, if <span class="obeylines-h"><span class="verb"><span
@@ -3755,12 +3755,12 @@ class="cmtt-10">nzin+1:nzin+nz</span></span></span> of the
array arguments;
</li>
<li
class="enumerate" id="x11-102004x2">
class="enumerate" id="x12-103004x2">
<!--l. 1731--><p class="noindent" >When <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">append=.true.</span></span></span> the output arrays are reallocated as necessary;
</li>
<li
class="enumerate" id="x11-102006x3">
class="enumerate" id="x12-103006x3">
<!--l. 1733--><p class="noindent" >The row and column indices are returned in the local numbering
scheme; if the global numbering is desired, the user may employ the
<span class="obeylines-h"><span class="verb"><span
@@ -3769,7 +3769,7 @@ class="cmtt-10">psb_loc_to_glob</span></span></span> routine on the output.</li>
<h4 class="subsectionHead"><span class="titlemark">6.26 </span> <a
id="x11-1030006.26"></a>psb_sizeof &#8212; Memory occupation</h4>
id="x12-1040006.26"></a>psb_sizeof &#8212; Memory occupation</h4>
<!--l. 1744--><p class="noindent" >This function computes the memory occupation of a PSBLAS object.
@@ -3869,7 +3869,7 @@ class="cmtt-10">integer(psb_long_int_k_)</span></span></span> number.</dd></dl>
<h4 class="subsectionHead"><span class="titlemark">6.27 </span> <a
id="x11-1040006.27"></a>Sorting utilities &#8212; </h4>
id="x12-1050006.27"></a>Sorting utilities &#8212; </h4>
<!--l. 1783--><p class="noindent" ><span
class="pplb7t-x-x-120">psb</span><span
class="pplb7t-x-x-120">_msort &#8212; Sorting by the Merge-sort algorithm</span>
@@ -4005,12 +4005,12 @@ class="zplmr7m-">x</span>.</dd></dl>
class="pplb7t-x-x-120">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x11-104002x1">
class="enumerate" id="x12-105002x1">
<!--l. 1839--><p class="noindent" >For integer or real data the sorting can be performed in the up/down
direction, on the natural or absolute values;
</li>
<li
class="enumerate" id="x11-104004x2">
class="enumerate" id="x12-105004x2">
<!--l. 1841--><p class="noindent" >For complex data the sorting can be done in a lexicographic order (i.e.:
sort on the real part with ties broken according to the imaginary part) or
on the absolute values;
@@ -4019,7 +4019,7 @@ class="pplb7t-x-x-120">Notes</span>
</li>
<li
class="enumerate" id="x11-104006x3">
class="enumerate" id="x12-105006x3">
<!--l. 1844--><p class="noindent" >The routines return the items in the chosen ordering; the output
difference is the handling of ties (i.e. items with an equal value) in the
original input. With the merge-sort algorithm ties are preserved in the
@@ -4027,7 +4027,7 @@ class="pplb7t-x-x-120">Notes</span>
guaranteed for quicksort or heapsort;
</li>
<li
class="enumerate" id="x11-104008x4">
class="enumerate" id="x12-105008x4">
<!--l. 1850--><p class="noindent" >If <span
class="zplmr7m-">flag </span><span
class="zplmr7t-">= </span><span
@@ -4062,7 +4062,7 @@ class="zplmr7t-">) </span>occupied
in the original data sequence;
</li>
<li
class="enumerate" id="x11-104010x5">
class="enumerate" id="x12-105010x5">
<!--l. 1855--><p class="noindent" >If <span
class="zplmr7m-">flag </span><span
class="zplmr7t-">= </span><span
@@ -4075,7 +4075,7 @@ class="zplmr7m-">ix</span><span
class="zplmr7t-">(:) </span>have already been initialized by the user;
</li>
<li
class="enumerate" id="x11-104012x6">
class="enumerate" id="x12-105012x6">
<!--l. 1857--><p class="noindent" >The three sorting algorithms have a similar <span
class="zplmr7m-">O</span><span
class="zplmr7t-">(</span><span
@@ -4086,7 +4086,7 @@ class="zplmr7t-">) </span>expected running time;
However note that:
<ol class="enumerate2" >
<li
class="enumerate" id="x11-104014x1">
class="enumerate" id="x12-105014x1">
<!--l. 1861--><p class="noindent" >The worst case running time
for quicksort is <span
class="zplmr7m-">O</span><span
@@ -4098,7 +4098,7 @@ class="zplmr7t-">)</span>; the algorithm implemented here follows the
apply;
</li>
<li
class="enumerate" id="x11-104016x2">
class="enumerate" id="x12-105016x2">
<!--l. 1864--><p class="noindent" >The worst case running time for merge-sort and heap-sort is
<span
class="zplmr7m-">O</span><span
@@ -4108,7 +4108,7 @@ class="zplmr7m-">n</span><span
class="zplmr7t-">) </span>as the average case;
</li>
<li
class="enumerate" id="x11-104018x3">
class="enumerate" id="x12-105018x3">
<!--l. 1866--><p class="noindent" >The merge-sort algorithm is implemented to take advantage of
subsequences that may be already in the desired ordering prior to
the subroutine call; this situation is relatively common when dealing