aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/SparseLU/SparseLU_column_dfs.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2013-01-12 11:55:16 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2013-01-12 11:55:16 +0100
commit38fa432e075c31b0dff17ed98dd27cad01046ea8 (patch)
treefb504db5d98fab45ab6f2ba6fc9d3c8a04b7f590 /Eigen/src/SparseLU/SparseLU_column_dfs.h
parent50625834e64616d798e8a28a66f0eef638dc2801 (diff)
Clean inclusion, namespace definition, and documentation of SparseLU
Diffstat (limited to 'Eigen/src/SparseLU/SparseLU_column_dfs.h')
-rw-r--r--Eigen/src/SparseLU/SparseLU_column_dfs.h64
1 files changed, 37 insertions, 27 deletions
diff --git a/Eigen/src/SparseLU/SparseLU_column_dfs.h b/Eigen/src/SparseLU/SparseLU_column_dfs.h
index 7ca3e4755..1bf17330a 100644
--- a/Eigen/src/SparseLU/SparseLU_column_dfs.h
+++ b/Eigen/src/SparseLU/SparseLU_column_dfs.h
@@ -29,6 +29,38 @@
*/
#ifndef SPARSELU_COLUMN_DFS_H
#define SPARSELU_COLUMN_DFS_H
+
+namespace Eigen {
+
+namespace internal {
+
+template<typename IndexVector, typename ScalarVector>
+struct LU_column_dfs_traits
+{
+ typedef typename IndexVector::Scalar Index;
+ typedef typename ScalarVector::Scalar Scalar;
+ LU_column_dfs_traits(Index jcol, Index& jsuper, LU_GlobalLU_t<IndexVector, ScalarVector>& glu)
+ : m_jcol(jcol), m_jsuper_ref(jsuper), m_glu(glu)
+ {}
+ bool update_segrep(Index /*krep*/, Index /*jj*/)
+ {
+ return true;
+ }
+ void mem_expand(IndexVector& lsub, int& nextl, int chmark)
+ {
+ if (nextl >= m_glu.nzlmax)
+ SparseLUBase<Scalar,Index>::LUMemXpand(lsub, m_glu.nzlmax, nextl, LSUB, m_glu.num_expansions);
+ if (chmark != (m_jcol-1)) m_jsuper_ref = IND_EMPTY;
+ }
+ enum { ExpandMem = true };
+
+ int m_jcol;
+ int& m_jsuper_ref;
+ LU_GlobalLU_t<IndexVector, ScalarVector>& m_glu;
+};
+
+} // end namespace internal
+
/**
* \brief Performs a symbolic factorization on column jcol and decide the supernode boundary
*
@@ -56,31 +88,6 @@
* > 0 number of bytes allocated when run out of space
*
*/
-template<typename IndexVector, typename ScalarVector>
-struct LU_column_dfs_traits
-{
- typedef typename IndexVector::Scalar Index;
- typedef typename ScalarVector::Scalar Scalar;
- LU_column_dfs_traits(Index jcol, Index& jsuper, LU_GlobalLU_t<IndexVector, ScalarVector>& glu)
- : m_jcol(jcol), m_jsuper_ref(jsuper), m_glu(glu)
- {}
- bool update_segrep(Index /*krep*/, Index /*jj*/)
- {
- return true;
- }
- void mem_expand(IndexVector& lsub, int& nextl, int chmark)
- {
- if (nextl >= m_glu.nzlmax)
- SparseLUBase<Scalar,Index>::LUMemXpand(lsub, m_glu.nzlmax, nextl, LSUB, m_glu.num_expansions);
- if (chmark != (m_jcol-1)) m_jsuper_ref = IND_EMPTY;
- }
- enum { ExpandMem = true };
-
- int m_jcol;
- int& m_jsuper_ref;
- LU_GlobalLU_t<IndexVector, ScalarVector>& m_glu;
-};
-
template <typename Scalar, typename Index>
int SparseLUBase<Scalar,Index>::LU_column_dfs(const int m, const int jcol, IndexVector& perm_r, int maxsuper, int& nseg, BlockIndexVector lsub_col, IndexVector& segrep, BlockIndexVector repfnz, IndexVector& xprune, IndexVector& marker, IndexVector& parent, IndexVector& xplore, GlobalLU_t& glu)
{
@@ -90,7 +97,7 @@ int SparseLUBase<Scalar,Index>::LU_column_dfs(const int m, const int jcol, Index
VectorBlock<IndexVector> marker2(marker, 2*m, m);
- LU_column_dfs_traits<IndexVector, ScalarVector> traits(jcol, jsuper, glu);
+ internal::LU_column_dfs_traits<IndexVector, ScalarVector> traits(jcol, jsuper, glu);
// For each nonzero in A(*,jcol) do dfs
for (int k = 0; lsub_col[k] != IND_EMPTY; k++)
@@ -161,4 +168,7 @@ int SparseLUBase<Scalar,Index>::LU_column_dfs(const int m, const int jcol, Index
return 0;
}
-#endif \ No newline at end of file
+
+} // end namespace Eigen
+
+#endif