30 #ifndef SPARSELU_COLUMN_DFS_H
31 #define SPARSELU_COLUMN_DFS_H
33 template <
typename Scalar,
typename StorageIndex>
42 template <
typename IndexVector,
typename ScalarVector>
89 template <
typename Scalar,
typename StorageIndex>
105 Index kmark = marker2(krow);
108 if (kmark == jcol)
continue;
110 dfs_kernel(StorageIndex(jcol), perm_r, nseg, glu.
lsub, segrep, repfnz, xprune, marker2, parent, xplore, glu, nextl,
115 StorageIndex nsuper = glu.
supno(jcol);
116 StorageIndex jcolp1 = StorageIndex(jcol) + 1;
117 Index jcolm1 = jcol - 1;
121 nsuper = glu.
supno(0) = 0;
123 fsupc = glu.
xsup(nsuper);
124 StorageIndex jptr = glu.
xlsub(jcol);
125 StorageIndex jm1ptr = glu.
xlsub(jcolm1);
128 if ((nextl - jptr != jptr - jm1ptr - 1)) jsuper =
emptyIdxLU;
132 if ((jcol - fsupc) >= maxsuper) jsuper =
emptyIdxLU;
140 if ((fsupc < jcolm1 - 1)) {
141 StorageIndex ito = glu.
xlsub(fsupc + 1);
142 glu.
xlsub(jcolm1) = ito;
143 StorageIndex istop = ito + jptr - jm1ptr;
144 xprune(jcolm1) = istop;
145 glu.
xlsub(jcol) = istop;
147 for (StorageIndex ifrom = jm1ptr; ifrom < nextl; ++ifrom, ++ito) glu.
lsub(ito) = glu.
lsub(ifrom);
151 glu.
supno(jcol) = nsuper;
156 glu.
xsup(nsuper + 1) = jcolp1;
157 glu.
supno(jcolp1) = nsuper;
158 xprune(jcol) = StorageIndex(nextl);
159 glu.
xlsub(jcolp1) = StorageIndex(nextl);
SCALAR Scalar
Definition: bench_gemm.cpp:45
A matrix or vector expression mapping an existing expression.
Definition: Ref.h:264
Expression of a fixed-size or dynamic-size sub-vector.
Definition: VectorBlock.h:58
Definition: SparseLUImpl.h:23
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.
Definition: SparseLU_column_dfs.h:90
Definition: XprHelper.h:134
Definition: SparseLU_column_dfs.h:34
int * m
Definition: level2_cplx_impl.h:294
char char char int int * k
Definition: level2_impl.h:374
@ LSUB
Definition: SparseLU_Structs.h:77
@ emptyIdxLU
Definition: SparseLU_Memory.h:41
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Definition: Eigen_Colamd.h:49
Definition: SparseLU_Structs.h:80
IndexVector xsup
Definition: SparseLU_Structs.h:82
IndexVector supno
Definition: SparseLU_Structs.h:83
IndexVector lsub
Definition: SparseLU_Structs.h:85
IndexVector xlsub
Definition: SparseLU_Structs.h:87
Definition: SparseLU_column_dfs.h:43
bool update_segrep(Index, Index)
Definition: SparseLU_column_dfs.h:49
@ ExpandMem
Definition: SparseLU_column_dfs.h:54
SparseLUImpl< Scalar, StorageIndex > & m_luImpl
Definition: SparseLU_column_dfs.h:59
void mem_expand(IndexVector &lsub, Index &nextl, Index chmark)
Definition: SparseLU_column_dfs.h:50
IndexVector::Scalar StorageIndex
Definition: SparseLU_column_dfs.h:45
column_dfs_traits(Index jcol, Index &jsuper, typename SparseLUImpl< Scalar, StorageIndex >::GlobalLU_t &glu, SparseLUImpl< Scalar, StorageIndex > &luImpl)
Definition: SparseLU_column_dfs.h:46
Index & m_jsuper_ref
Definition: SparseLU_column_dfs.h:57
SparseLUImpl< Scalar, StorageIndex >::GlobalLU_t & m_glu
Definition: SparseLU_column_dfs.h:58
ScalarVector::Scalar Scalar
Definition: SparseLU_column_dfs.h:44
Index m_jcol
Definition: SparseLU_column_dfs.h:56
Definition: ForwardDeclarations.h:21
int num_expansions
Definition: slu_cdefs.h:104
int nzlmax
Definition: slu_cdefs.h:99