<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>SuperLU: SRC/supermatrix.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.5 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>SRC/supermatrix.h</h1><a href="supermatrix_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00004"></a>00004 <span class="preprocessor">#ifndef __SUPERLU_SUPERMATRIX </span><span class="comment">/* allow multiple inclusions */</span>
<a name="l00005"></a>00005 <span class="preprocessor">#define __SUPERLU_SUPERMATRIX</span>
<a name="l00006"></a>00006 <span class="preprocessor"></span>
<a name="l00007"></a>00007
<a name="l00008"></a>00008 <span class="comment">/********************************************</span>
<a name="l00009"></a>00009 <span class="comment"> * The matrix types are defined as follows. *</span>
<a name="l00010"></a>00010 <span class="comment"> ********************************************/</span>
<a name="l00011"></a><a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b8796">00011</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00012"></a><a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b87960993c31a9ba98c523bfab0d759c1a628">00012</a> <a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b87960993c31a9ba98c523bfab0d759c1a628">SLU_NC</a>, <span class="comment">/* column-wise, no supernode */</span>
<a name="l00013"></a><a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b879625e4eb65ac258dadb9abccd65337cfe4">00013</a> <a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b879625e4eb65ac258dadb9abccd65337cfe4">SLU_NCP</a>, <span class="comment">/* column-wise, column-permuted, no supernode </span>
<a name="l00014"></a>00014 <span class="comment"> (The consecutive columns of nonzeros, after permutation,</span>
<a name="l00015"></a>00015 <span class="comment"> may not be stored contiguously.) */</span>
<a name="l00016"></a><a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b8796ac74fbf90a105db9be6795b5be9221ca">00016</a> <a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b8796ac74fbf90a105db9be6795b5be9221ca">SLU_NR</a>, <span class="comment">/* row-wize, no supernode */</span>
<a name="l00017"></a><a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b879679d0f76e80f9b57ebdab6a0c76720462">00017</a> <a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b879679d0f76e80f9b57ebdab6a0c76720462">SLU_SC</a>, <span class="comment">/* column-wise, supernode */</span>
<a name="l00018"></a><a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b879635ab293720f39593ceff43e8989f4de6">00018</a> <a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b879635ab293720f39593ceff43e8989f4de6">SLU_SCP</a>, <span class="comment">/* supernode, column-wise, permuted */</span>
<a name="l00019"></a><a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b87969677060bfc0641fb53defdb70caa8cf5">00019</a> <a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b87969677060bfc0641fb53defdb70caa8cf5">SLU_SR</a>, <span class="comment">/* row-wise, supernode */</span>
<a name="l00020"></a><a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b8796a59ca236b51fe0c7bd7c80c70e345768">00020</a> <a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b8796a59ca236b51fe0c7bd7c80c70e345768">SLU_DN</a>, <span class="comment">/* Fortran style column-wise storage for dense matrix */</span>
<a name="l00021"></a><a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b8796b96ddd65efd6342d0ac532bb47eb39a0">00021</a> <a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b8796b96ddd65efd6342d0ac532bb47eb39a0">SLU_NR_loc</a> <span class="comment">/* distributed compressed row format */</span>
<a name="l00022"></a>00022 } <a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b8796">Stype_t</a>;
<a name="l00023"></a>00023
<a name="l00024"></a><a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e29190">00024</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00025"></a><a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e291900da7fdd394e36c76e7aa215d6a79162d">00025</a> <a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e291900da7fdd394e36c76e7aa215d6a79162d">SLU_S</a>, <span class="comment">/* single */</span>
<a name="l00026"></a><a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e29190b5c3b3a455e3b3a64d805d76f19ac6dc">00026</a> <a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e29190b5c3b3a455e3b3a64d805d76f19ac6dc">SLU_D</a>, <span class="comment">/* double */</span>
<a name="l00027"></a><a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e291901b589b5f96dbc8619450aacc22d0bf39">00027</a> <a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e291901b589b5f96dbc8619450aacc22d0bf39">SLU_C</a>, <span class="comment">/* single complex */</span>
<a name="l00028"></a><a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e291901ace1e51c238b13622aaa733ef3b2a47">00028</a> <a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e291901ace1e51c238b13622aaa733ef3b2a47">SLU_Z</a> <span class="comment">/* double complex */</span>
<a name="l00029"></a>00029 } <a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e29190">Dtype_t</a>;
<a name="l00030"></a>00030
<a name="l00031"></a><a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60">00031</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00032"></a><a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60ea9ef3cae331a60a4bcc353bb57ad5db">00032</a> <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60ea9ef3cae331a60a4bcc353bb57ad5db">SLU_GE</a>, <span class="comment">/* general */</span>
<a name="l00033"></a><a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60fee10f9836531b012b1b80cf36355b67">00033</a> <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60fee10f9836531b012b1b80cf36355b67">SLU_TRLU</a>, <span class="comment">/* lower triangular, unit diagonal */</span>
<a name="l00034"></a><a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d600c7113548d3d5a292cb2265477436ad7">00034</a> <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d600c7113548d3d5a292cb2265477436ad7">SLU_TRUU</a>, <span class="comment">/* upper triangular, unit diagonal */</span>
<a name="l00035"></a><a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d604defa99d9ff8ed4af7a92547b3faf9fb">00035</a> <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d604defa99d9ff8ed4af7a92547b3faf9fb">SLU_TRL</a>, <span class="comment">/* lower triangular */</span>
<a name="l00036"></a><a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60a9aea83e745716e0da54d738feb19cba">00036</a> <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60a9aea83e745716e0da54d738feb19cba">SLU_TRU</a>, <span class="comment">/* upper triangular */</span>
<a name="l00037"></a><a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d6091b9ee4e608cb7c7cf7572703fbd3506">00037</a> <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d6091b9ee4e608cb7c7cf7572703fbd3506">SLU_SYL</a>, <span class="comment">/* symmetric, store lower half */</span>
<a name="l00038"></a><a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d600d509f1e8285653c36f81b10626fb747">00038</a> <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d600d509f1e8285653c36f81b10626fb747">SLU_SYU</a>, <span class="comment">/* symmetric, store upper half */</span>
<a name="l00039"></a><a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60bba0b28718f648302d6f710d7d66d1fb">00039</a> <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60bba0b28718f648302d6f710d7d66d1fb">SLU_HEL</a>, <span class="comment">/* Hermitian, store lower half */</span>
<a name="l00040"></a><a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60bada9d0add93fd4fbe17b9d6758d38f8">00040</a> <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60bada9d0add93fd4fbe17b9d6758d38f8">SLU_HEU</a> <span class="comment">/* Hermitian, store upper half */</span>
<a name="l00041"></a>00041 } <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60">Mtype_t</a>;
<a name="l00042"></a>00042
<a name="l00043"></a><a class="code" href="structSuperMatrix.html">00043</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00044"></a><a class="code" href="structSuperMatrix.html#b37e181824f50a405272451afc399952">00044</a> <a class="code" href="supermatrix_8h.html#9d2ddedeb2a3d92e950811c61d0b8796">Stype_t</a> Stype; <span class="comment">/* Storage type: interprets the storage structure </span>
<a name="l00045"></a>00045 <span class="comment"> pointed to by *Store. */</span>
<a name="l00046"></a><a class="code" href="structSuperMatrix.html#edd4bd451819549620b49076a62dfdcc">00046</a> <a class="code" href="supermatrix_8h.html#7987cb2a28ec879b39a90e9e48e29190">Dtype_t</a> Dtype; <span class="comment">/* Data type. */</span>
<a name="l00047"></a><a class="code" href="structSuperMatrix.html#42877db0cfad1033374474f48e4b3fc4">00047</a> <a class="code" href="supermatrix_8h.html#5962adac634f3feebe487ad443802d60">Mtype_t</a> Mtype; <span class="comment">/* Matrix type: describes the mathematical property of </span>
<a name="l00048"></a>00048 <span class="comment"> the matrix. */</span>
<a name="l00049"></a><a class="code" href="structSuperMatrix.html#b1d854b814f0757e7ff7e0da01c6ef43">00049</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> nrow; <span class="comment">/* number of rows */</span>
<a name="l00050"></a><a class="code" href="structSuperMatrix.html#b8b85bf206c36ebc2223cc2ec6acbe8c">00050</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> ncol; <span class="comment">/* number of columns */</span>
<a name="l00051"></a><a class="code" href="structSuperMatrix.html#73ebca1b46bb24536226b9378e01c5b5">00051</a> <span class="keywordtype">void</span> *Store; <span class="comment">/* pointer to the actual storage of the matrix */</span>
<a name="l00052"></a>00052 } <a class="code" href="structSuperMatrix.html">SuperMatrix</a>;
<a name="l00053"></a>00053
<a name="l00054"></a>00054 <span class="comment">/***********************************************</span>
<a name="l00055"></a>00055 <span class="comment"> * The storage schemes are defined as follows. *</span>
<a name="l00056"></a>00056 <span class="comment"> ***********************************************/</span>
<a name="l00057"></a>00057
<a name="l00058"></a>00058 <span class="comment">/* Stype == SLU_NC (Also known as Harwell-Boeing sparse matrix format) */</span>
<a name="l00059"></a><a class="code" href="structNCformat.html">00059</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00060"></a><a class="code" href="structNCformat.html#ffa2566dd89ea8ce6422f788887b5b27">00060</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> nnz; <span class="comment">/* number of nonzeros in the matrix */</span>
<a name="l00061"></a><a class="code" href="structNCformat.html#a3e85810bb190b7359d8aaa956a64e64">00061</a> <span class="keywordtype">void</span> *nzval; <span class="comment">/* pointer to array of nonzero values, packed by column */</span>
<a name="l00062"></a><a class="code" href="structNCformat.html#16eb8492bb5694035ef3e620ea8c77b1">00062</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *rowind; <span class="comment">/* pointer to array of row indices of the nonzeros */</span>
<a name="l00063"></a><a class="code" href="structNCformat.html#881f460e39f34bbbf70909b6b0629adc">00063</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *colptr; <span class="comment">/* pointer to array of beginning of columns in nzval[] </span>
<a name="l00064"></a>00064 <span class="comment"> and rowind[] */</span>
<a name="l00065"></a>00065 <span class="comment">/* Note:</span>
<a name="l00066"></a>00066 <span class="comment"> Zero-based indexing is used;</span>
<a name="l00067"></a>00067 <span class="comment"> colptr[] has ncol+1 entries, the last one pointing</span>
<a name="l00068"></a>00068 <span class="comment"> beyond the last column, so that colptr[ncol] = nnz. */</span>
<a name="l00069"></a>00069 } <a class="code" href="structNCformat.html">NCformat</a>;
<a name="l00070"></a>00070
<a name="l00071"></a>00071 <span class="comment">/* Stype == SLU_NR */</span>
<a name="l00072"></a><a class="code" href="structNRformat.html">00072</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00073"></a><a class="code" href="structNRformat.html#e3652d6a08cf47208db6abbd162bdee2">00073</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> nnz; <span class="comment">/* number of nonzeros in the matrix */</span>
<a name="l00074"></a><a class="code" href="structNRformat.html#3933d6611dc87efede947b08ea8d83f2">00074</a> <span class="keywordtype">void</span> *nzval; <span class="comment">/* pointer to array of nonzero values, packed by raw */</span>
<a name="l00075"></a><a class="code" href="structNRformat.html#25b76fc1f79b314a99c1e8f8522d77af">00075</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *colind; <span class="comment">/* pointer to array of columns indices of the nonzeros */</span>
<a name="l00076"></a><a class="code" href="structNRformat.html#552302eb293088d4b7040f487b430ba7">00076</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *rowptr; <span class="comment">/* pointer to array of beginning of rows in nzval[] </span>
<a name="l00077"></a>00077 <span class="comment"> and colind[] */</span>
<a name="l00078"></a>00078 <span class="comment">/* Note:</span>
<a name="l00079"></a>00079 <span class="comment"> Zero-based indexing is used;</span>
<a name="l00080"></a>00080 <span class="comment"> rowptr[] has nrow+1 entries, the last one pointing</span>
<a name="l00081"></a>00081 <span class="comment"> beyond the last row, so that rowptr[nrow] = nnz. */</span>
<a name="l00082"></a>00082 } <a class="code" href="structNRformat.html">NRformat</a>;
<a name="l00083"></a>00083
<a name="l00084"></a>00084 <span class="comment">/* Stype == SLU_SC */</span>
<a name="l00085"></a><a class="code" href="structSCformat.html">00085</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00086"></a><a class="code" href="structSCformat.html#3808f35bd097fbc0a39e3e65ee2a8d4a">00086</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> nnz; <span class="comment">/* number of nonzeros in the matrix */</span>
<a name="l00087"></a><a class="code" href="structSCformat.html#afffc008b0b8e57b9cdf5689a527bd8c">00087</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> nsuper; <span class="comment">/* number of supernodes, minus 1 */</span>
<a name="l00088"></a><a class="code" href="structSCformat.html#25011a4746e4cf0a6fbc38ba45a70e91">00088</a> <span class="keywordtype">void</span> *nzval; <span class="comment">/* pointer to array of nonzero values, packed by column */</span>
<a name="l00089"></a><a class="code" href="structSCformat.html#41e93b73c8bce9326f035e3647ee94ca">00089</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *nzval_colptr;<span class="comment">/* pointer to array of beginning of columns in nzval[] */</span>
<a name="l00090"></a><a class="code" href="structSCformat.html#ec8a46751f64a94238495838aaed7cd2">00090</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *rowind; <span class="comment">/* pointer to array of compressed row indices of </span>
<a name="l00091"></a>00091 <span class="comment"> rectangular supernodes */</span>
<a name="l00092"></a><a class="code" href="structSCformat.html#7683b1730b067ae2058004f0f18ad88d">00092</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *rowind_colptr;<span class="comment">/* pointer to array of beginning of columns in rowind[] */</span>
<a name="l00093"></a><a class="code" href="structSCformat.html#75a51eef4af5a906cde9a32eddcb2fc1">00093</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *col_to_sup; <span class="comment">/* col_to_sup[j] is the supernode number to which column </span>
<a name="l00094"></a>00094 <span class="comment"> j belongs; mapping from column to supernode number. */</span>
<a name="l00095"></a><a class="code" href="structSCformat.html#d5cb1b2ae17c5fe554c3b70721718b08">00095</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *sup_to_col; <span class="comment">/* sup_to_col[s] points to the start of the s-th </span>
<a name="l00096"></a>00096 <span class="comment"> supernode; mapping from supernode number to column.</span>
<a name="l00097"></a>00097 <span class="comment"> e.g.: col_to_sup: 0 1 2 2 3 3 3 4 4 4 4 4 4 (ncol=12)</span>
<a name="l00098"></a>00098 <span class="comment"> sup_to_col: 0 1 2 4 7 12 (nsuper=4) */</span>
<a name="l00099"></a>00099 <span class="comment">/* Note:</span>
<a name="l00100"></a>00100 <span class="comment"> Zero-based indexing is used;</span>
<a name="l00101"></a>00101 <span class="comment"> nzval_colptr[], rowind_colptr[], col_to_sup and</span>
<a name="l00102"></a>00102 <span class="comment"> sup_to_col[] have ncol+1 entries, the last one</span>
<a name="l00103"></a>00103 <span class="comment"> pointing beyond the last column.</span>
<a name="l00104"></a>00104 <span class="comment"> For col_to_sup[], only the first ncol entries are</span>
<a name="l00105"></a>00105 <span class="comment"> defined. For sup_to_col[], only the first nsuper+2</span>
<a name="l00106"></a>00106 <span class="comment"> entries are defined. */</span>
<a name="l00107"></a>00107 } <a class="code" href="structSCformat.html">SCformat</a>;
<a name="l00108"></a>00108
<a name="l00109"></a>00109 <span class="comment">/* Stype == SLU_SCP */</span>
<a name="l00110"></a><a class="code" href="structSCPformat.html">00110</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00111"></a><a class="code" href="structSCPformat.html#d4b6e7424269c3cbe9a368604433870e">00111</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> nnz; <span class="comment">/* number of nonzeros in the matrix */</span>
<a name="l00112"></a><a class="code" href="structSCPformat.html#20ee99d8cfb0cecad94373e2eb5abef8">00112</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> nsuper; <span class="comment">/* number of supernodes */</span>
<a name="l00113"></a><a class="code" href="structSCPformat.html#028e5f9ef15054302c1403969c37a0fb">00113</a> <span class="keywordtype">void</span> *nzval; <span class="comment">/* pointer to array of nonzero values, packed by column */</span>
<a name="l00114"></a><a class="code" href="structSCPformat.html#a9bae5f483aa1a22aec18f5c2393f05e">00114</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *nzval_colbeg;<span class="comment">/* nzval_colbeg[j] points to beginning of column j</span>
<a name="l00115"></a>00115 <span class="comment"> in nzval[] */</span>
<a name="l00116"></a><a class="code" href="structSCPformat.html#098e9a5c87e2c0b35c82852b1910334d">00116</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *nzval_colend;<span class="comment">/* nzval_colend[j] points to one past the last element</span>
<a name="l00117"></a>00117 <span class="comment"> of column j in nzval[] */</span>
<a name="l00118"></a><a class="code" href="structSCPformat.html#5b4ccbb31fa3a7c2372b5a297453e200">00118</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *rowind; <span class="comment">/* pointer to array of compressed row indices of </span>
<a name="l00119"></a>00119 <span class="comment"> rectangular supernodes */</span>
<a name="l00120"></a><a class="code" href="structSCPformat.html#1bd16ec6ab44636e56da09d65fbe8402">00120</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *rowind_colbeg;<span class="comment">/* rowind_colbeg[j] points to beginning of column j</span>
<a name="l00121"></a>00121 <span class="comment"> in rowind[] */</span>
<a name="l00122"></a><a class="code" href="structSCPformat.html#09c1770c0baad3c1152d48587ad084b4">00122</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *rowind_colend;<span class="comment">/* rowind_colend[j] points to one past the last element</span>
<a name="l00123"></a>00123 <span class="comment"> of column j in rowind[] */</span>
<a name="l00124"></a><a class="code" href="structSCPformat.html#ba16553c2896f7c88450621f18b54bae">00124</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *col_to_sup; <span class="comment">/* col_to_sup[j] is the supernode number to which column</span>
<a name="l00125"></a>00125 <span class="comment"> j belongs; mapping from column to supernode. */</span>
<a name="l00126"></a><a class="code" href="structSCPformat.html#345ad774183c979674dd0960a930508e">00126</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *sup_to_colbeg; <span class="comment">/* sup_to_colbeg[s] points to the start of the s-th </span>
<a name="l00127"></a>00127 <span class="comment"> supernode; mapping from supernode to column.*/</span>
<a name="l00128"></a><a class="code" href="structSCPformat.html#8e470d085ca7b39645336943a1f2eae6">00128</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *sup_to_colend; <span class="comment">/* sup_to_colend[s] points to one past the end of the</span>
<a name="l00129"></a>00129 <span class="comment"> s-th supernode; mapping from supernode number to</span>
<a name="l00130"></a>00130 <span class="comment"> column.</span>
<a name="l00131"></a>00131 <span class="comment"> e.g.: col_to_sup: 0 1 2 2 3 3 3 4 4 4 4 4 4 (ncol=12)</span>
<a name="l00132"></a>00132 <span class="comment"> sup_to_colbeg: 0 1 2 4 7 (nsuper=4)</span>
<a name="l00133"></a>00133 <span class="comment"> sup_to_colend: 1 2 4 7 12 */</span>
<a name="l00134"></a>00134 <span class="comment">/* Note:</span>
<a name="l00135"></a>00135 <span class="comment"> Zero-based indexing is used;</span>
<a name="l00136"></a>00136 <span class="comment"> nzval_colptr[], rowind_colptr[], col_to_sup and</span>
<a name="l00137"></a>00137 <span class="comment"> sup_to_col[] have ncol+1 entries, the last one</span>
<a name="l00138"></a>00138 <span class="comment"> pointing beyond the last column. */</span>
<a name="l00139"></a>00139 } <a class="code" href="structSCPformat.html">SCPformat</a>;
<a name="l00140"></a>00140
<a name="l00141"></a>00141 <span class="comment">/* Stype == SLU_NCP */</span>
<a name="l00142"></a><a class="code" href="structNCPformat.html">00142</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00143"></a><a class="code" href="structNCPformat.html#c8c12ffc9edd0906608612727ad406ed">00143</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> nnz; <span class="comment">/* number of nonzeros in the matrix */</span>
<a name="l00144"></a><a class="code" href="structNCPformat.html#519ed66fdf9da30c76c079474503c764">00144</a> <span class="keywordtype">void</span> *nzval; <span class="comment">/* pointer to array of nonzero values, packed by column */</span>
<a name="l00145"></a><a class="code" href="structNCPformat.html#8a27cd5a756bc313cc3c487a84e8ba30">00145</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *rowind;<span class="comment">/* pointer to array of row indices of the nonzeros */</span>
<a name="l00146"></a>00146 <span class="comment">/* Note: nzval[]/rowind[] always have the same length */</span>
<a name="l00147"></a><a class="code" href="structNCPformat.html#2192334a0f76d4c18784caa1f8783f01">00147</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *colbeg;<span class="comment">/* colbeg[j] points to the beginning of column j in nzval[] </span>
<a name="l00148"></a>00148 <span class="comment"> and rowind[] */</span>
<a name="l00149"></a><a class="code" href="structNCPformat.html#86dcc41e83595a12ecd88d57748430c0">00149</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *colend;<span class="comment">/* colend[j] points to one past the last element of column</span>
<a name="l00150"></a>00150 <span class="comment"> j in nzval[] and rowind[] */</span>
<a name="l00151"></a>00151 <span class="comment">/* Note:</span>
<a name="l00152"></a>00152 <span class="comment"> Zero-based indexing is used;</span>
<a name="l00153"></a>00153 <span class="comment"> The consecutive columns of the nonzeros may not be </span>
<a name="l00154"></a>00154 <span class="comment"> contiguous in storage, because the matrix has been </span>
<a name="l00155"></a>00155 <span class="comment"> postmultiplied by a column permutation matrix. */</span>
<a name="l00156"></a>00156 } <a class="code" href="structNCPformat.html">NCPformat</a>;
<a name="l00157"></a>00157
<a name="l00158"></a>00158 <span class="comment">/* Stype == SLU_DN */</span>
<a name="l00159"></a><a class="code" href="structDNformat.html">00159</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00160"></a><a class="code" href="structDNformat.html#6b584837b30f33849c6c3b070aade816">00160</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> lda; <span class="comment">/* leading dimension */</span>
<a name="l00161"></a><a class="code" href="structDNformat.html#54a061275c52aa9e38f4cb65da46d48c">00161</a> <span class="keywordtype">void</span> *nzval; <span class="comment">/* array of size lda*ncol to represent a dense matrix */</span>
<a name="l00162"></a>00162 } <a class="code" href="structDNformat.html">DNformat</a>;
<a name="l00163"></a>00163
<a name="l00164"></a>00164 <span class="comment">/* Stype == SLU_NR_loc (Distributed Compressed Row Format) */</span>
<a name="l00165"></a><a class="code" href="structNRformat__loc.html">00165</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00166"></a><a class="code" href="structNRformat__loc.html#41c309cb83dedeaa82c0e4e137ea4785">00166</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> nnz_loc; <span class="comment">/* number of nonzeros in the local submatrix */</span>
<a name="l00167"></a><a class="code" href="structNRformat__loc.html#90413dc3eb197a83b70cc0d97e4c54af">00167</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> m_loc; <span class="comment">/* number of rows local to this processor */</span>
<a name="l00168"></a><a class="code" href="structNRformat__loc.html#cab0ad4c74c4b4f0c68647f98b430cd9">00168</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> fst_row; <span class="comment">/* global index of the first row */</span>
<a name="l00169"></a><a class="code" href="structNRformat__loc.html#08b19d74f15e6475f43565035ae898ca">00169</a> <span class="keywordtype">void</span> *nzval; <span class="comment">/* pointer to array of nonzero values, packed by row */</span>
<a name="l00170"></a><a class="code" href="structNRformat__loc.html#add0788ee704ffb7000b0485ee128061">00170</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *rowptr; <span class="comment">/* pointer to array of beginning of rows in nzval[] </span>
<a name="l00171"></a>00171 <span class="comment"> and colind[] */</span>
<a name="l00172"></a><a class="code" href="structNRformat__loc.html#5d192fc35ba0915afa42f36eca0e2d78">00172</a> <a class="code" href="slu__cdefs_8h.html#b6fd6105e64ed14a0c9281326f05e623">int_t</a> *colind; <span class="comment">/* pointer to array of column indices of the nonzeros */</span>
<a name="l00173"></a>00173 <span class="comment">/* Note:</span>
<a name="l00174"></a>00174 <span class="comment"> Zero-based indexing is used;</span>
<a name="l00175"></a>00175 <span class="comment"> rowptr[] has n_loc + 1 entries, the last one pointing</span>
<a name="l00176"></a>00176 <span class="comment"> beyond the last row, so that rowptr[n_loc] = nnz_loc.*/</span>
<a name="l00177"></a>00177 } <a class="code" href="structNRformat__loc.html">NRformat_loc</a>;
<a name="l00178"></a>00178
<a name="l00179"></a>00179
<a name="l00180"></a>00180 <span class="preprocessor">#endif </span><span class="comment">/* __SUPERLU_SUPERMATRIX */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Mon Nov 22 10:23:47 2010 for SuperLU by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>
</html>