30 #ifndef SPARSELU_COLUMN_DFS_H 31 #define SPARSELU_COLUMN_DFS_H 33 template <
typename Scalar,
typename StorageIndex>
class SparseLUImpl;
38 template<
typename IndexVector,
typename ScalarVector>
41 typedef typename ScalarVector::Scalar
Scalar;
52 if (nextl >=
m_glu.nzlmax)
92 template <
typename Scalar,
typename StorageIndex>
108 Index krow = lsub_col(k);
110 Index kmark = marker2(krow);
113 if (kmark == jcol)
continue;
115 dfs_kernel(
StorageIndex(jcol), perm_r, nseg, glu.
lsub, segrep, repfnz, xprune, marker2, parent,
116 xplore, glu, nextl, krow, traits);
122 Index jcolm1 = jcol - 1;
127 nsuper = glu.
supno(0) = 0 ;
131 fsupc = glu.
xsup(nsuper);
136 if ( (nextl-jptr != jptr-jm1ptr-1) ) jsuper =
emptyIdxLU;
140 if ( (jcol - fsupc) >= maxsuper) jsuper =
emptyIdxLU;
149 if ( (fsupc < jcolm1-1) )
152 glu.
xlsub(jcolm1) = ito;
154 xprune(jcolm1) = istop;
155 glu.
xlsub(jcol) = istop;
157 for (
StorageIndex ifrom = jm1ptr; ifrom < nextl; ++ifrom, ++ito)
162 glu.
supno(jcol) = nsuper;
167 glu.
xsup(nsuper+1) = jcolp1;
168 glu.
supno(jcolp1) = nsuper;
ScalarVector::Scalar Scalar
IndexVector::Scalar StorageIndex
Expression of a fixed-size or dynamic-size sub-vector.
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
SparseLUImpl< Scalar, StorageIndex > & m_luImpl
Index column_dfs(const Index m, const Index jcol, IndexVector &perm_r, Index maxsuper, Index &nseg, BlockIndexVector lsub_col, IndexVector &segrep, BlockIndexVector repfnz, IndexVector &xprune, IndexVector &marker, IndexVector &parent, IndexVector &xplore, GlobalLU_t &glu)
Performs a symbolic factorization on column jcol and decide the supernode boundary.
A matrix or vector expression mapping an existing expression.
column_dfs_traits(Index jcol, Index &jsuper, typename SparseLUImpl< Scalar, StorageIndex >::GlobalLU_t &glu, SparseLUImpl< Scalar, StorageIndex > &luImpl)
bool update_segrep(Index, Index)
void mem_expand(IndexVector &lsub, Index &nextl, Index chmark)
SparseLUImpl< Scalar, StorageIndex >::GlobalLU_t & m_glu