mirror of
https://gitlab.com/libeigen/eigen.git
synced 2024-12-15 07:10:37 +08:00
working version of sparse LU without fill-reducing permutation
This commit is contained in:
parent
3095e4a5f9
commit
de2544cc9b
@ -234,7 +234,7 @@ class SparseLU
|
||||
{
|
||||
for (jcol = fsupc; jcol < fsupc + nsupc; jcol++)
|
||||
{
|
||||
for (i = m_Ustore.outerIndexPtr()[jcol]; i < m_Ustore.outerIndexPtr()[jcol]; i++)
|
||||
for (i = m_Ustore.outerIndexPtr()[jcol]; i < m_Ustore.outerIndexPtr()[jcol+1]; i++)
|
||||
{
|
||||
irow = m_Ustore.innerIndexPtr()[i];
|
||||
X(irow, j) -= X(jcol, j) * m_Ustore.valuePtr()[i];
|
||||
@ -454,7 +454,7 @@ void SparseLU<MatrixType, OrderingType>::factorize(const MatrixType& matrix)
|
||||
IndexVector xplore(m);
|
||||
IndexVector repfnz(maxpanel);
|
||||
IndexVector panel_lsub(maxpanel);
|
||||
IndexVector xprune(n);
|
||||
IndexVector xprune(n); xprune.setZero();
|
||||
IndexVector marker(m*LU_NO_MARKER);
|
||||
|
||||
repfnz.setConstant(-1);
|
||||
@ -642,7 +642,7 @@ void SparseLU<MatrixType, OrderingType>::factorize(const MatrixType& matrix)
|
||||
for (i = 0; i < nseg; i++)
|
||||
{
|
||||
irep = segrep(i);
|
||||
repfnz(irep) = IND_EMPTY;
|
||||
repfnz_k(irep) = IND_EMPTY;
|
||||
}
|
||||
} // end SparseLU within the panel
|
||||
jcol += panel_size; // Move to the next panel
|
||||
|
@ -132,7 +132,6 @@ void LU_panel_bmod(const int m, const int w, const int jcol, const int nseg, Sca
|
||||
luptr += nsupr * no_zeros + no_zeros;
|
||||
// triangular solve with Eigen
|
||||
Map<Matrix<Scalar,Dynamic, Dynamic>, 0, OuterStride<> > A( &(lusup.data()[luptr]), segsize, segsize, OuterStride<>(nsupr) );
|
||||
std::cout<< " Matrix \n" << A << std::endl;
|
||||
VectorBlock<ScalarVector> u(tempv, 0, segsize);
|
||||
u = A.template triangularView<UnitLower>().solve(u);
|
||||
|
||||
@ -165,7 +164,6 @@ void LU_panel_bmod(const int m, const int w, const int jcol, const int nseg, Sca
|
||||
l(i) = Scalar(0);
|
||||
++isub;
|
||||
}
|
||||
std::cout<< jj << " : " << dense_col.transpose() << std::endl;
|
||||
} // End for each column in the panel
|
||||
|
||||
} // End for each updating supernode
|
||||
|
@ -126,7 +126,7 @@ void LU_panel_dfs(const int m, const int w, const int jcol, MatrixType& A, Index
|
||||
}
|
||||
else
|
||||
{
|
||||
// krow is in U : if its sup²ernode-representative krep
|
||||
// krow is in U : if its supernode-representative krep
|
||||
// has been explored, update repfnz(*)
|
||||
krep = xsup(supno(kperm)+1) - 1;
|
||||
myfnz = repfnz_col(krep);
|
||||
|
Loading…
Reference in New Issue
Block a user