|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
|
|
"http://www.w3.org/TR/html4/loose.dtd">
|
|
|
|
<html >
|
|
|
|
<head><title>Sparse Matrix class</title>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
|
|
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
|
|
|
|
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
|
|
|
|
<!-- html,3 -->
|
|
|
|
<meta name="src" content="userhtml.tex">
|
|
|
|
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
|
|
|
</head><body
|
|
|
|
>
|
|
|
|
<!--l. 534--><div class="crosslinks"><p class="noindent">[<a
|
|
|
|
href="userhtmlse4.html" >next</a>] [<a
|
|
|
|
href="userhtmlsu5.html" >prev</a>] [<a
|
|
|
|
href="userhtmlsu5.html#tailuserhtmlsu5.html" >prev-tail</a>] [<a
|
|
|
|
href="userhtmlsu4.html#tailuserhtmlsu6.html">tail</a>] [<a
|
|
|
|
href="userhtmlsu7.html#userhtmlsu9.html" >up</a>] </p></div>
|
|
|
|
<h4 class="subsectionHead"><span class="titlemark">3.2 </span> <a
|
|
|
|
id="x14-260003.2"></a>Sparse Matrix class</h4>
|
|
|
|
<!--l. 536--><p class="noindent" >The <a
|
|
|
|
id="spdata"><span
|
|
|
|
class="cmtt-10">psb</span><span
|
|
|
|
class="cmtt-10">_Tspmat</span><span
|
|
|
|
class="cmtt-10">_type</span></a> class contains all information about the local portion of the
|
|
|
|
sparse matrix and its storage mode. Its design is based on the STATE design
|
|
|
|
pattern <span class="cite">[<a
|
|
|
|
href="userhtmlli2.html#XDesignPatterns">13</a>]</span> as detailed in <span class="cite">[<a
|
|
|
|
href="userhtmlli2.html#XSparse03">11</a>]</span>; the type declaration is shown in figure <a
|
|
|
|
href="#x14-26001r2">2<!--tex4ht:ref: fig:spmattype --></a> where <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">T</span> is a
|
|
|
|
placeholder for the data type and precision variants
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">S</span> </dt><dd
|
|
|
|
class="description">Single precision real;
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">D</span> </dt><dd
|
|
|
|
class="description">Double precision real;
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">C</span> </dt><dd
|
|
|
|
class="description">Single precision complex;
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Z</span> </dt><dd
|
|
|
|
class="description">Double precision complex;
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">LS,LD,LC,LZ</span> </dt><dd
|
|
|
|
class="description">Same numeric type as above, but with <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_lpk_</span> integer
|
|
|
|
indices.</dd></dl>
|
|
|
|
<!--l. 551--><p class="noindent" >The actual data is contained in the polymorphic component <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span><span
|
|
|
|
class="cmtt-10">%</span><span
|
|
|
|
class="cmtt-10">a</span> of type
|
|
|
|
<a
|
|
|
|
id="spbasedata"><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></a>; its specific layout can be chosen dynamically among the
|
|
|
|
predefined types, or an entirely new storage layout can be implemented and passed to
|
|
|
|
the library at runtime via the <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_spasb</span> routine.
|
|
|
|
<!--l. 556--><p class="indent" > <a
|
|
|
|
id="x14-26001r2"></a><hr class="float"><div class="float"
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="center"
|
|
|
|
>
|
|
|
|
<!--l. 565--><p class="noindent" >
|
|
|
|
<div class="minipage"><div class="verbatim" id="verbatim-15">
|
|
|
|
  type :: psb_Tspmat_type
|
|
|
|
 <br />    class(psb_T_base_sparse_mat), allocatable  :: a
|
|
|
|
 <br />  end type  psb_Tspmat_type
|
|
|
|
</div>
|
|
|
|
<!--l. 571--><p class="nopar" ></div></div>
|
|
|
|
<br /> <div class="caption"
|
|
|
|
><span class="id">Listing 2: </span><span
|
|
|
|
class="content"> The PSBLAS defined data type that contains a sparse matrix.</span></div><!--tex4ht:label?: x14-26001r2 -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div><hr class="endfloat" />
|
|
|
|
<!--l. 584--><p class="indent" > The following very common formats are precompiled in PSBLAS and thus are
|
|
|
|
always available:
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">psb</span><span
|
|
|
|
class="cmbx-10">_T</span><span
|
|
|
|
class="cmbx-10">_coo</span><span
|
|
|
|
class="cmbx-10">_sparse</span><span
|
|
|
|
class="cmbx-10">_mat</span> </dt><dd
|
|
|
|
class="description">Coordinate storage;
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">psb</span><span
|
|
|
|
class="cmbx-10">_T</span><span
|
|
|
|
class="cmbx-10">_csr</span><span
|
|
|
|
class="cmbx-10">_sparse</span><span
|
|
|
|
class="cmbx-10">_mat</span> </dt><dd
|
|
|
|
class="description">Compressed storage by rows;
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">psb</span><span
|
|
|
|
class="cmbx-10">_T</span><span
|
|
|
|
class="cmbx-10">_csc</span><span
|
|
|
|
class="cmbx-10">_sparse</span><span
|
|
|
|
class="cmbx-10">_mat</span> </dt><dd
|
|
|
|
class="description">Compressed storage by columns;</dd></dl>
|
|
|
|
<!--l. 591--><p class="noindent" >The inner sparse matrix has an associated state, which can take the following
|
|
|
|
values:
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Build:</span> </dt><dd
|
|
|
|
class="description">State entered after the first allocation, and before the first assembly; in
|
|
|
|
this state it is possible to add nonzero entries.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Assembled:</span> </dt><dd
|
|
|
|
class="description">State entered after the assembly; computations using the sparse
|
|
|
|
matrix, such as matrix-vector products, are only possible in this state;
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Update:</span> </dt><dd
|
|
|
|
class="description">State entered after a reinitalization; this is used to handle applications
|
|
|
|
in which the same sparsity pattern is used multiple times with different
|
|
|
|
coefficients. In this state it is only possible to enter coefficients for already
|
|
|
|
existing nonzero entries.</dd></dl>
|
|
|
|
<!--l. 604--><p class="noindent" >The only storage variant supporting the build state is COO; all other variants are
|
|
|
|
obtained by conversion to/from it.
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.1 </span> <a
|
|
|
|
id="x14-270003.2.1"></a>Sparse Matrix Methods</h5>
|
|
|
|
<!--l. 609--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.2 </span> <a
|
|
|
|
id="x14-280003.2.2"></a>get_nrows — Get number of rows in a sparse matrix</h5>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-16">
|
|
|
|
nr = a%get_nrows()
|
|
|
|
</div>
|
|
|
|
<!--l. 614--><p class="nopar" >
|
|
|
|
<!--l. 616--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span><br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 626--><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">Function value</span> </dt><dd
|
|
|
|
class="description">The number of rows of sparse matrix <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span>.</dd></dl>
|
|
|
|
<!--l. 633--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.3 </span> <a
|
|
|
|
id="x14-290003.2.3"></a>get_ncols — Get number of columns in a sparse matrix</h5>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-17">
|
|
|
|
nc = a%get_ncols()
|
|
|
|
</div>
|
|
|
|
<!--l. 638--><p class="nopar" >
|
|
|
|
<!--l. 640--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span><br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 650--><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">Function value</span> </dt><dd
|
|
|
|
class="description">The number of columns of sparse matrix <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span>.</dd></dl>
|
|
|
|
<!--l. 657--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.4 </span> <a
|
|
|
|
id="x14-300003.2.4"></a>get_nnzeros — Get number of nonzero elements in a sparse matrix</h5>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-18">
|
|
|
|
nz = a%get_nnzeros()
|
|
|
|
</div>
|
|
|
|
<!--l. 662--><p class="nopar" >
|
|
|
|
<!--l. 664--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span><br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 674--><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">Function value</span> </dt><dd
|
|
|
|
class="description">The number of nonzero elements stored in sparse matrix <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span>.</dd></dl>
|
|
|
|
<!--l. 679--><p class="noindent" ><span
|
|
|
|
class="cmbx-10">Notes</span>
|
|
|
|
<ol class="enumerate1" >
|
|
|
|
<li
|
|
|
|
class="enumerate" id="x14-30002x1">The function value is specific to the storage format of matrix <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span>; some
|
|
|
|
storage formats employ padding, thus the returned value for the same
|
|
|
|
matrix may be different for different storage choices.</li></ol>
|
|
|
|
<!--l. 687--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.5 </span> <a
|
|
|
|
id="x14-310003.2.5"></a>get_size — Get maximum number of nonzero elements in a sparse
|
|
|
|
matrix</h5>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-19">
|
|
|
|
maxnz = a%get_size()
|
|
|
|
</div>
|
|
|
|
<!--l. 692--><p class="nopar" >
|
|
|
|
<!--l. 694--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span><br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 704--><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">Function value</span> </dt><dd
|
|
|
|
class="description">The maximum number of nonzero elements that can be stored
|
|
|
|
in sparse matrix <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span> using its current memory allocation.</dd></dl>
|
|
|
|
<!--l. 711--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.6 </span> <a
|
|
|
|
id="x14-320003.2.6"></a>sizeof — Get memory occupation in bytes of a sparse matrix</h5>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-20">
|
|
|
|
memory_size = a%sizeof()
|
|
|
|
</div>
|
|
|
|
<!--l. 716--><p class="nopar" >
|
|
|
|
<!--l. 718--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span><br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 728--><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">Function value</span> </dt><dd
|
|
|
|
class="description">The memory occupation in bytes.</dd></dl>
|
|
|
|
<!--l. 734--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.7 </span> <a
|
|
|
|
id="x14-330003.2.7"></a>get_fmt — Short description of the dynamic type</h5>
|
|
|
|
<!--l. 738--><p class="noindent" ><span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">write</span><span
|
|
|
|
class="cmtt-10">(*,*)</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">a</span><span
|
|
|
|
class="cmtt-10">%</span><span
|
|
|
|
class="cmtt-10">get_fmt</span><span
|
|
|
|
class="cmtt-10">()</span>
|
|
|
|
<!--l. 741--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span><br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 751--><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">Function value</span> </dt><dd
|
|
|
|
class="description">A short string describing the dynamic type of the matrix.
|
|
|
|
Predefined values include <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">NULL</span>, <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">COO</span>, <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">CSR</span> and <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">CSC</span>.</dd></dl>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--l. 758--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.8 </span> <a
|
|
|
|
id="x14-340003.2.8"></a>is_bld, is_upd, is_asb — Status check</h5>
|
|
|
|
<!--l. 762--><p class="noindent" ><span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">if</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">a</span><span
|
|
|
|
class="cmtt-10">%</span><span
|
|
|
|
class="cmtt-10">is_bld</span><span
|
|
|
|
class="cmtt-10">())</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">then</span><br
|
|
|
|
class="newline" /><span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">if</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">a</span><span
|
|
|
|
class="cmtt-10">%</span><span
|
|
|
|
class="cmtt-10">is_upd</span><span
|
|
|
|
class="cmtt-10">())</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">then</span><br
|
|
|
|
class="newline" /><span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">if</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">a</span><span
|
|
|
|
class="cmtt-10">%</span><span
|
|
|
|
class="cmtt-10">is_asb</span><span
|
|
|
|
class="cmtt-10">())</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">then</span>
|
|
|
|
<!--l. 766--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span><br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 776--><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">Function value</span> </dt><dd
|
|
|
|
class="description">A <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">logical</span> value indicating whether the matrix is in the Build,
|
|
|
|
Update or Assembled state, respectively.</dd></dl>
|
|
|
|
<!--l. 783--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.9 </span> <a
|
|
|
|
id="x14-350003.2.9"></a>is_lower, is_upper, is_triangle, is_unit — Format check</h5>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-21">
|
|
|
|
if (a%is_triangle()) then
|
|
|
|
 <br />if (a%is_upper()) then
|
|
|
|
 <br />if (a%is_lower()) then
|
|
|
|
 <br />if (a%is_unit()) then
|
|
|
|
</div>
|
|
|
|
<!--l. 799--><p class="nopar" >
|
|
|
|
<!--l. 802--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span><br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 812--><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">Function value</span> </dt><dd
|
|
|
|
class="description">A <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">logical</span> value indicating whether the matrix is triangular;
|
|
|
|
if <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">is_triangle</span><span
|
|
|
|
class="cmtt-10">()</span> returns <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">.</span><span
|
|
|
|
class="cmtt-10">true</span><span
|
|
|
|
class="cmtt-10">.</span> check also if it is lower, upper and with
|
|
|
|
a unit (i.e. assumed) diagonal.</dd></dl>
|
|
|
|
<!--l. 821--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.10 </span> <a
|
|
|
|
id="x14-360003.2.10"></a>cscnv — Convert to a different storage format</h5>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-22">
|
|
|
|
call  a%cscnv(b,info [, type, mold, dupl])
|
|
|
|
 <br />call  a%cscnv(info [, type, mold, dupl])
|
|
|
|
</div>
|
|
|
|
<!--l. 833--><p class="nopar" >
|
|
|
|
<!--l. 836--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" />
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">type</span> </dt><dd
|
|
|
|
class="description">a string requesting a new format.<br
|
|
|
|
class="newline" />Type: optional.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">mold</span> </dt><dd
|
|
|
|
class="description">a variable of <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">class</span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">psb_T_base_sparse_mat</span><span
|
|
|
|
class="cmtt-10">)</span> requesting a new format.<br
|
|
|
|
class="newline" />Type: optional.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">dupl</span> </dt><dd
|
|
|
|
class="description">an integer value specifing how to handle duplicates (see Named Constants
|
|
|
|
below)</dd></dl>
|
|
|
|
<!--l. 850--><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">b,a</span> </dt><dd
|
|
|
|
class="description">A copy of <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span> with a new storage format.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">info</span> </dt><dd
|
|
|
|
class="description">Return code.</dd></dl>
|
|
|
|
<!--l. 856--><p class="noindent" >The <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">mold</span> arguments may be employed to interface with special devices, such as GPUs
|
|
|
|
and other accelerators.
|
|
|
|
<!--l. 861--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.11 </span> <a
|
|
|
|
id="x14-370003.2.11"></a>csclip — Reduce to a submatrix</h5>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-23">
|
|
|
|
    call a%csclip(b,info[,&
|
|
|
|
 <br />       & imin,imax,jmin,jmax,rscale,cscale])
|
|
|
|
</div>
|
|
|
|
<!--l. 873--><p class="nopar" >
|
|
|
|
<!--l. 876--><p class="indent" > Returns the submatrix <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">A</span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">imin</span><span
|
|
|
|
class="cmtt-10">:</span><span
|
|
|
|
class="cmtt-10">imax</span><span
|
|
|
|
class="cmtt-10">,</span><span
|
|
|
|
class="cmtt-10">jmin</span><span
|
|
|
|
class="cmtt-10">:</span><span
|
|
|
|
class="cmtt-10">jmax</span><span
|
|
|
|
class="cmtt-10">)</span>, optionally rescaling row/col
|
|
|
|
indices to the range <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">1:</span><span
|
|
|
|
class="cmtt-10">imax</span><span
|
|
|
|
class="cmtt-10">-</span><span
|
|
|
|
class="cmtt-10">imin</span><span
|
|
|
|
class="cmtt-10">+1,1:</span><span
|
|
|
|
class="cmtt-10">jmax</span><span
|
|
|
|
class="cmtt-10">-</span><span
|
|
|
|
class="cmtt-10">jmin</span><span
|
|
|
|
class="cmtt-10">+1</span>.
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" />
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">imin,imax,jmin,jmax</span> </dt><dd
|
|
|
|
class="description">Minimum and maximum row and column indices.<br
|
|
|
|
class="newline" />Type: optional.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">rscale,cscale</span> </dt><dd
|
|
|
|
class="description">Whether to rescale row/column indices. Type: optional.</dd></dl>
|
|
|
|
<!--l. 890--><p class="noindent" >
|
|
|
|
<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">b</span> </dt><dd
|
|
|
|
class="description">A copy of a submatrix of <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span>.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">info</span> </dt><dd
|
|
|
|
class="description">Return code.</dd></dl>
|
|
|
|
<!--l. 897--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.12 </span> <a
|
|
|
|
id="x14-380003.2.12"></a>clean_zeros — Eliminate zero coefficients</h5>
|
|
|
|
<!--l. 899--><p class="noindent" ><span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">call</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">a</span><span
|
|
|
|
class="cmtt-10">%</span><span
|
|
|
|
class="cmtt-10">clean_zeros</span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">info</span><span
|
|
|
|
class="cmtt-10">)</span>
|
|
|
|
<!--l. 901--><p class="indent" > Eliminates zero coefficients in the input matrix. Note that depending on the
|
|
|
|
internal storage format, there may still be some amount of zero padding in the
|
|
|
|
output.
|
|
|
|
<!--l. 905--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 912--><p class="noindent" >
|
|
|
|
<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 <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span> without zero coefficients.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">info</span> </dt><dd
|
|
|
|
class="description">Return code.</dd></dl>
|
|
|
|
<!--l. 919--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.13 </span> <a
|
|
|
|
id="x14-390003.2.13"></a>get_diag — Get main diagonal</h5>
|
|
|
|
<!--l. 921--><p class="noindent" ><span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">call</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">a</span><span
|
|
|
|
class="cmtt-10">%</span><span
|
|
|
|
class="cmtt-10">get_diag</span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">d</span><span
|
|
|
|
class="cmtt-10">,</span><span
|
|
|
|
class="cmtt-10">info</span><span
|
|
|
|
class="cmtt-10">)</span>
|
|
|
|
<!--l. 923--><p class="indent" > Returns a copy of the main diagonal.
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 931--><p class="noindent" >
|
|
|
|
<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">d</span> </dt><dd
|
|
|
|
class="description">A copy of the main diagonal.<br
|
|
|
|
class="newline" />A one-dimensional array of the appropriate type.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">info</span> </dt><dd
|
|
|
|
class="description">Return code.</dd></dl>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--l. 939--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.14 </span> <a
|
|
|
|
id="x14-400003.2.14"></a>clip_diag — Cut out main diagonal</h5>
|
|
|
|
<!--l. 941--><p class="noindent" ><span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">call</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">a</span><span
|
|
|
|
class="cmtt-10">%</span><span
|
|
|
|
class="cmtt-10">clip_diag</span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">b</span><span
|
|
|
|
class="cmtt-10">,</span><span
|
|
|
|
class="cmtt-10">info</span><span
|
|
|
|
class="cmtt-10">)</span>
|
|
|
|
<!--l. 943--><p class="indent" > Returns a copy of <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span> without the main diagonal.
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 951--><p class="noindent" >
|
|
|
|
<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">b</span> </dt><dd
|
|
|
|
class="description">A copy of <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span> without the main diagonal.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">info</span> </dt><dd
|
|
|
|
class="description">Return code.</dd></dl>
|
|
|
|
<!--l. 959--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.15 </span> <a
|
|
|
|
id="x14-410003.2.15"></a>tril — Return the lower triangle</h5>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-24">
|
|
|
|
    call a%tril(l,info[,&
|
|
|
|
 <br />       & diag,imin,imax,jmin,jmax,rscale,cscale,u])
|
|
|
|
</div>
|
|
|
|
<!--l. 971--><p class="nopar" >
|
|
|
|
<!--l. 974--><p class="indent" > Returns the lower triangular part of submatrix <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">A</span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">imin</span><span
|
|
|
|
class="cmtt-10">:</span><span
|
|
|
|
class="cmtt-10">imax</span><span
|
|
|
|
class="cmtt-10">,</span><span
|
|
|
|
class="cmtt-10">jmin</span><span
|
|
|
|
class="cmtt-10">:</span><span
|
|
|
|
class="cmtt-10">jmax</span><span
|
|
|
|
class="cmtt-10">)</span>,
|
|
|
|
optionally rescaling row/col indices to the range <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">1:</span><span
|
|
|
|
class="cmtt-10">imax</span><span
|
|
|
|
class="cmtt-10">-</span><span
|
|
|
|
class="cmtt-10">imin</span><span
|
|
|
|
class="cmtt-10">+1,1:</span><span
|
|
|
|
class="cmtt-10">jmax</span><span
|
|
|
|
class="cmtt-10">-</span><span
|
|
|
|
class="cmtt-10">jmin</span><span
|
|
|
|
class="cmtt-10">+1</span> and
|
|
|
|
returing the complementary upper triangle.
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" />
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">diag</span> </dt><dd
|
|
|
|
class="description">Include diagonals up to this one; <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">diag</span><span
|
|
|
|
class="cmtt-10">=1</span> means the first superdiagonal,
|
|
|
|
<span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">diag</span><span
|
|
|
|
class="cmtt-10">=-1</span> means the first subdiagonal. Default 0.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">imin,imax,jmin,jmax</span> </dt><dd
|
|
|
|
class="description">Minimum and maximum row and column indices.<br
|
|
|
|
class="newline" />Type: optional.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">rscale,cscale</span> </dt><dd
|
|
|
|
class="description">Whether to rescale row/column indices. Type: optional.</dd></dl>
|
|
|
|
<!--l. 992--><p class="noindent" >
|
|
|
|
<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">l</span> </dt><dd
|
|
|
|
class="description">A copy of the lower triangle of <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span>.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">u</span> </dt><dd
|
|
|
|
class="description">(optional) A copy of the upper triangle of <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span>.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">info</span> </dt><dd
|
|
|
|
class="description">Return code.</dd></dl>
|
|
|
|
<!--l. 1001--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.16 </span> <a
|
|
|
|
id="x14-420003.2.16"></a>triu — Return the upper triangle</h5>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-25">
|
|
|
|
    call a%triu(u,info[,&
|
|
|
|
 <br />       & diag,imin,imax,jmin,jmax,rscale,cscale,l])
|
|
|
|
</div>
|
|
|
|
<!--l. 1012--><p class="nopar" >
|
|
|
|
<!--l. 1015--><p class="indent" > Returns the upper triangular part of submatrix <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">A</span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">imin</span><span
|
|
|
|
class="cmtt-10">:</span><span
|
|
|
|
class="cmtt-10">imax</span><span
|
|
|
|
class="cmtt-10">,</span><span
|
|
|
|
class="cmtt-10">jmin</span><span
|
|
|
|
class="cmtt-10">:</span><span
|
|
|
|
class="cmtt-10">jmax</span><span
|
|
|
|
class="cmtt-10">)</span>,
|
|
|
|
optionally rescaling row/col indices to the range <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">1:</span><span
|
|
|
|
class="cmtt-10">imax</span><span
|
|
|
|
class="cmtt-10">-</span><span
|
|
|
|
class="cmtt-10">imin</span><span
|
|
|
|
class="cmtt-10">+1,1:</span><span
|
|
|
|
class="cmtt-10">jmax</span><span
|
|
|
|
class="cmtt-10">-</span><span
|
|
|
|
class="cmtt-10">jmin</span><span
|
|
|
|
class="cmtt-10">+1</span>,
|
|
|
|
and returing the complementary lower triangle.
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" />
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">diag</span> </dt><dd
|
|
|
|
class="description">Include diagonals up to this one; <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">diag</span><span
|
|
|
|
class="cmtt-10">=1</span> means the first superdiagonal,
|
|
|
|
<span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">diag</span><span
|
|
|
|
class="cmtt-10">=-1</span> means the first subdiagonal. Default 0.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">imin,imax,jmin,jmax</span> </dt><dd
|
|
|
|
class="description">Minimum and maximum row and column indices.<br
|
|
|
|
class="newline" />Type: optional.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">rscale,cscale</span> </dt><dd
|
|
|
|
class="description">Whether to rescale row/column indices. Type: optional.</dd></dl>
|
|
|
|
<!--l. 1033--><p class="noindent" >
|
|
|
|
<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">u</span> </dt><dd
|
|
|
|
class="description">A copy of the upper triangle of <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span>.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">l</span> </dt><dd
|
|
|
|
class="description">(optional) A copy of the lower triangle of <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">a</span>.<br
|
|
|
|
class="newline" />A variable of type <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">psb_Tspmat_type</span>.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">info</span> </dt><dd
|
|
|
|
class="description">Return code.</dd></dl>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--l. 1045--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.17 </span> <a
|
|
|
|
id="x14-430003.2.17"></a>psb_set_mat_default — Set default storage format</h5>
|
|
|
|
<!--l. 1049--><p class="noindent" ><span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">call</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">psb_set_mat_default</span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">a</span><span
|
|
|
|
class="cmtt-10">)</span>
|
|
|
|
<!--l. 1051--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">a variable of <span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">class</span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">psb_T_base_sparse_mat</span><span
|
|
|
|
class="cmtt-10">)</span> requesting a new default
|
|
|
|
storage format.<br
|
|
|
|
class="newline" />Type: required.</dd></dl>
|
|
|
|
<!--l. 1063--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.18 </span> <a
|
|
|
|
id="x14-440003.2.18"></a>clone — Clone current object</h5>
|
|
|
|
<!--l. 1066--><p class="noindent" ><span class="lstinline"></span><span
|
|
|
|
class="cmtt-10">call</span><span
|
|
|
|
class="cmtt-10"> </span><span
|
|
|
|
class="cmtt-10">a</span><span
|
|
|
|
class="cmtt-10">%</span><span
|
|
|
|
class="cmtt-10">clone</span><span
|
|
|
|
class="cmtt-10">(</span><span
|
|
|
|
class="cmtt-10">b</span><span
|
|
|
|
class="cmtt-10">,</span><span
|
|
|
|
class="cmtt-10">info</span><span
|
|
|
|
class="cmtt-10">)</span>
|
|
|
|
<!--l. 1068--><p class="indent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
|
|
class="description">Asynchronous.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
|
|
class="description">
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">a</span> </dt><dd
|
|
|
|
class="description">the sparse matrix.<br
|
|
|
|
class="newline" />Scope: <span
|
|
|
|
class="cmbx-10">local</span>.<br
|
|
|
|
class="newline" /></dd></dl>
|
|
|
|
<!--l. 1078--><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">b</span> </dt><dd
|
|
|
|
class="description">A copy of the input object.
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">info</span> </dt><dd
|
|
|
|
class="description">Return code.</dd></dl>
|
|
|
|
<!--l. 1085--><p class="noindent" >
|
|
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.2.19 </span> <a
|
|
|
|
id="x14-450003.2.19"></a>Named Constants</h5>
|
|
|
|
<!--l. 1087--><p class="noindent" >
|
|
|
|
<dl class="description"><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">psb</span><span
|
|
|
|
class="cmbx-10">_dupl</span><span
|
|
|
|
class="cmbx-10">_ovwrt</span><span
|
|
|
|
class="cmbx-10">_</span> </dt><dd
|
|
|
|
class="description">Duplicate coefficients should be overwritten (i.e. ignore
|
|
|
|
duplications)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">psb</span><span
|
|
|
|
class="cmbx-10">_dupl</span><span
|
|
|
|
class="cmbx-10">_add</span><span
|
|
|
|
class="cmbx-10">_</span> </dt><dd
|
|
|
|
class="description">Duplicate coefficients should be added;
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">psb</span><span
|
|
|
|
class="cmbx-10">_dupl</span><span
|
|
|
|
class="cmbx-10">_err</span><span
|
|
|
|
class="cmbx-10">_</span> </dt><dd
|
|
|
|
class="description">Duplicate coefficients should trigger an error conditino
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">psb</span><span
|
|
|
|
class="cmbx-10">_upd</span><span
|
|
|
|
class="cmbx-10">_dflt</span><span
|
|
|
|
class="cmbx-10">_</span> </dt><dd
|
|
|
|
class="description">Default update strategy for matrix coefficients;
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">psb</span><span
|
|
|
|
class="cmbx-10">_upd</span><span
|
|
|
|
class="cmbx-10">_srch</span><span
|
|
|
|
class="cmbx-10">_</span> </dt><dd
|
|
|
|
class="description">Update strategy based on search into the data structure;
|
|
|
|
</dd><dt class="description">
|
|
|
|
<span
|
|
|
|
class="cmbx-10">psb</span><span
|
|
|
|
class="cmbx-10">_upd</span><span
|
|
|
|
class="cmbx-10">_perm</span><span
|
|
|
|
class="cmbx-10">_</span> </dt><dd
|
|
|
|
class="description">Update strategy based on additional permutation data (see
|
|
|
|
tools routine description).</dd></dl>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--l. 1103--><div class="crosslinks"><p class="noindent">[<a
|
|
|
|
href="userhtmlse4.html" >next</a>] [<a
|
|
|
|
href="userhtmlsu5.html" >prev</a>] [<a
|
|
|
|
href="userhtmlsu5.html#tailuserhtmlsu5.html" >prev-tail</a>] [<a
|
|
|
|
href="userhtmlsu6.html" >front</a>] [<a
|
|
|
|
href="userhtmlsu7.html#userhtmlsu9.html" >up</a>] </p></div>
|
|
|
|
<!--l. 1103--><p class="indent" > <a
|
|
|
|
id="tailuserhtmlsu6.html"></a>
|
|
|
|
</body></html>
|