|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
|
|
"http://www.w3.org/TR/html4/loose.dtd">
|
|
|
|
<html >
|
|
|
|
<head><title>psb_spasb — Sparse matrix assembly routine</title>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
|
|
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
|
|
|
|
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
|
|
|
|
<!-- html,3 -->
|
|
|
|
<meta name="src" content="userhtml.tex">
|
|
|
|
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
|
|
|
</head><body
|
|
|
|
>
|
|
|
|
<!--l. 741--><div class="crosslinks"><p class="noindent">[<a
|
|
|
|
href="userhtmlsu42.html" >next</a>] [<a
|
|
|
|
href="userhtmlsu37.html" >prev</a>] [<a
|
|
|
|
href="userhtmlsu37.html#tailuserhtmlsu37.html" >prev-tail</a>] [<a
|
|
|
|
href="userhtmlsu35.html#tailuserhtmlsu38.html">tail</a>] [<a
|
|
|
|
href="userhtmlsu32.html#userhtmlsu41.html" >up</a>] </p></div>
|
|
|
|
<h4 class="subsectionHead"><span class="titlemark">6.9 </span> <a
|
|
|
|
id="x49-860006.9"></a>psb_spasb — Sparse matrix assembly routine</h4>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="verbatim" id="verbatim-42">
|
|
|
|
call psb_spasb(a, desc_a, info [, afmt, upd,  mold])
|
|
|
|
</pre>
|
|
|
|
<!--l. 745--><p class="nopar" >
|
|
|
|
<!--l. 747--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Synchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">desc</span><span
|
|
|
|
class="cmbx-10">_a</span> </dt><dd
|
|
|
|
class="description">the communication descriptor.<br
|
|
|
|
class="newline" />Scope:<span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" />Type:<span
|
|
|
|
class="cmbx-10">required</span>.<br
|
|
|
|
class="newline" />Intent: <span
|
|
|
|
class="cmbx-10">in/out</span>.<br
|
|
|
|
class="newline" />Specified as: a structured data of type <a
|
|
|
|
href="userhtmlsu5.html#descdata"><span
|
|
|
|
class="cmtt-10">psb</span><span
|
|
|
|
class="cmtt-10">_desc</span><span
|
|
|
|
class="cmtt-10">_type</span></a>.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">afmt</span> </dt><dd
|
|
|
|
class="description">the storage format for the sparse matrix.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" />Type: <span
|
|
|
|
class="cmbx-10">optional</span>.<br
|
|
|
|
class="newline" />Intent: <span
|
|
|
|
class="cmbx-10">in</span>.<br
|
|
|
|
class="newline" />Specified as: an array of characters. Defalt: ’CSR’.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">upd</span> </dt><dd
|
|
|
|
class="description">Provide for updates to the matrix coefficients.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">global</span>.<br
|
|
|
|
class="newline" />Type: <span
|
|
|
|
class="cmbx-10">optional</span>.<br
|
|
|
|
class="newline" />Intent: <span
|
|
|
|
class="cmbx-10">in</span>.<br
|
|
|
|
class="newline" />Specified as: integer, possible values: <span class="obeylines-h"><span class="verb"><span
|
|
|
|
class="cmtt-10">psb_upd_srch_</span></span></span>, <span class="obeylines-h"><span class="verb"><span
|
|
|
|
class="cmtt-10">psb_upd_perm_</span></span></span>
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">mold</span> </dt><dd
|
|
|
|
class="description">The desired dynamic type for the internal matrix storage.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" />Type: <span
|
|
|
|
class="cmbx-10">optional</span>.<br
|
|
|
|
class="newline" />Intent: <span
|
|
|
|
class="cmbx-10">in</span>.<br
|
|
|
|
class="newline" />Specified as: an object of a class derived from <a
|
|
|
|
id="spbasedata"></a><span
|
|
|
|
class="cmtt-10">psb</span><span
|
|
|
|
class="cmtt-10">_T</span><span
|
|
|
|
class="cmtt-10">_base</span><span
|
|
|
|
class="cmtt-10">_sparse</span><span
|
|
|
|
class="cmtt-10">_mat</span>.</dd></dl>
|
|
|
|
<!--l. 772--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Return</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the matrix to be assembled.<br
|
|
|
|
class="newline" />Scope:<span
|
|
|
|
class="cmbx-10">local</span><br
|
|
|
|
class="newline" />Type:<span
|
|
|
|
class="cmbx-10">required</span><br
|
|
|
|
class="newline" />Intent: <span
|
|
|
|
class="cmbx-10">inout</span>.<br
|
|
|
|
class="newline" />Specified as: a structured data of type <a
|
|
|
|
href="userhtmlsu6.html#spdata"><span
|
|
|
|
class="cmtt-10">psb</span><span
|
|
|
|
class="cmtt-10">_Tspmat</span><span
|
|
|
|
class="cmtt-10">_type</span></a>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">desc</span><span
|
|
|
|
class="cmbx-10">_a</span> </dt><dd
|
|
|
|
class="description">the communication descriptor.<br
|
|
|
|
class="newline" />Scope:<span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" />Type:<span
|
|
|
|
class="cmbx-10">required</span>.<br
|
|
|
|
class="newline" />Intent: <span
|
|
|
|
class="cmbx-10">in/out</span>.<br
|
|
|
|
class="newline" />Specified as: a structured data of type <a
|
|
|
|
href="userhtmlsu5.html#descdata"><span
|
|
|
|
class="cmtt-10">psb</span><span
|
|
|
|
class="cmtt-10">_desc</span><span
|
|
|
|
class="cmtt-10">_type</span></a>. If the matrix was
|
|
|
|
allocated with <span class="obeylines-h"><span class="verb"><span
|
|
|
|
class="cmtt-10">bldmode=psb_matbld_remote_</span></span></span>, then the descriptor will be
|
|
|
|
reassembled.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">info</span> </dt><dd
|
|
|
|
class="description">Error code.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local </span><br
|
|
|
|
class="newline" />Type: <span
|
|
|
|
class="cmbx-10">required </span><br
|
|
|
|
class="newline" />Intent: <span
|
|
|
|
class="cmbx-10">out</span>.<br
|
|
|
|
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
|
|
|
|
<!--l. 793--><p class="noindent" ><span
|
|
|
|
class="cmbx-12">Notes</span>
|
|
|
|
<ol class="enumerate1" >
|
|
|
|
<li
|
|
|
|
class="enumerate" id="x49-86002x1">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="x49-86004x2">The sparse matrix may be in either the build or update state;
|
|
|
|
</li>
|
|
|
|
<li
|
|
|
|
class="enumerate" id="x49-86006x3">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="x49-86008x4">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
|
|
|
|
class="cmtt-10">psb_spins</span></span></span>
|
|
|
|
to update the matrix must be arranged in such a way as to produce exactly
|
|
|
|
the same sequence of coefficient values as encountered at the first assembly;
|
|
|
|
</li>
|
|
|
|
<li
|
|
|
|
class="enumerate" id="x49-86010x5">The output storage format need not be the same on all processes;
|
|
|
|
</li>
|
|
|
|
<li
|
|
|
|
class="enumerate" id="x49-86012x6">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="x49-86014x7">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
|
|
|
|
remote process will be handled accordingly. This is most likely to occur in
|
|
|
|
finite element applications, with <span class="obeylines-h"><span class="verb"><span
|
|
|
|
class="cmtt-10">dupl=psb_dupl_add_</span></span></span>; it is necessary to
|
|
|
|
check for possible updates needed in the descriptor, hence there will be a
|
|
|
|
runtime overhead.</li></ol>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--l. 857--><div class="crosslinks"><p class="noindent">[<a
|
|
|
|
href="userhtmlsu42.html" >next</a>] [<a
|
|
|
|
href="userhtmlsu37.html" >prev</a>] [<a
|
|
|
|
href="userhtmlsu37.html#tailuserhtmlsu37.html" >prev-tail</a>] [<a
|
|
|
|
href="userhtmlsu38.html" >front</a>] [<a
|
|
|
|
href="userhtmlsu32.html#userhtmlsu41.html" >up</a>] </p></div>
|
|
|
|
<!--l. 857--><p class="indent" > <a
|
|
|
|
id="tailuserhtmlsu38.html"></a>
|
|
|
|
</body></html>
|