1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
|
<!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 Thu Aug 25 13:43:49 2011 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>
|