aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/SparseLU/SparseLU_Matrix.h
diff options
context:
space:
mode:
authorGravatar Desire NUENTSA <desire.nuentsa_wakam@inria.fr>2012-05-25 18:17:57 +0200
committerGravatar Desire NUENTSA <desire.nuentsa_wakam@inria.fr>2012-05-25 18:17:57 +0200
commitb6267507ea08bf572666bf634bc3a6fabe6aba11 (patch)
tree01843518d9cbc5208cc75a31672c7a93c3030af1 /Eigen/src/SparseLU/SparseLU_Matrix.h
parentb202c5ed2f3c4fac09c76e34ea728377a79fa15d (diff)
Add preliminary files for SparseLU
Diffstat (limited to 'Eigen/src/SparseLU/SparseLU_Matrix.h')
-rw-r--r--Eigen/src/SparseLU/SparseLU_Matrix.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/Eigen/src/SparseLU/SparseLU_Matrix.h b/Eigen/src/SparseLU/SparseLU_Matrix.h
new file mode 100644
index 000000000..c4d56ee0a
--- /dev/null
+++ b/Eigen/src/SparseLU/SparseLU_Matrix.h
@@ -0,0 +1,74 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2012 Désiré Nuentsa-Wakam <desire.nuentsa_wakam@inria.fr>
+// Copyright (C) 2012 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// Eigen is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+//
+// Alternatively, you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License and a copy of the GNU General Public License along with
+// Eigen. If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef EIGEN_SPARSELU_MATRIX_H
+#define EIGEN_SPARSELU_MATRIX_H
+
+/** \ingroup SparseLU_Module
+ * \brief a class to manipulate the supernodal matrices in the SparseLU factorization
+ *
+ * This class extends the class SparseMatrix and should contain the data to easily store
+ * and manipulate the supernodes during the factorization and solution phase of Sparse LU.
+ * Only the lower triangular matrix has supernodes.
+ *
+ * NOTE : This class corresponds to the SCformat structure in SuperLU
+ *
+ */
+
+template <typename _Scalar, typename _Index>
+class SuperNodalMatrix
+{
+ public:
+ SCMatrix()
+ {
+
+ }
+
+ ~SCMatrix()
+ {
+
+ }
+ operator SparseMatrix();
+
+ protected:
+ Index nnz; // Number of nonzero values
+ Index nsupper; // Index of the last supernode
+ Scalar *nzval; //array of nonzero values packed by (supernode ??) column
+ Index *nzval_colptr; //nzval_colptr[j] Stores the location in nzval[] which starts column j
+ Index *rowind; // Array of compressed row indices of rectangular supernodes
+ Index rowind_colptr; //rowind_colptr[j] stores the location in rowind[] which starts column j
+ Index *col_to_sup; // col_to_sup[j] is the supernode number to which column j belongs
+ Index *sup_to_col; //sup_to_col[s] points to the starting column of the s-th supernode
+ // Index *nzval_colptr corresponds to m_outerIndex in SparseMatrix
+
+ private :
+ SuperNodalMatrix(SparseMatrix& ) {}
+};
+
+SuperNodalMatrix::operator SparseMatrix()
+{
+
+}
+#endif \ No newline at end of file