working version of sparse LU without fill-reducing permutation

This commit is contained in:
Desire NUENTSA 2012-07-10 19:16:57 +02:00
parent 3095e4a5f9
commit de2544cc9b
3 changed files with 4 additions and 6 deletions

View File

@ -234,7 +234,7 @@ class SparseLU
{ {
for (jcol = fsupc; jcol < fsupc + nsupc; jcol++) 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]; irow = m_Ustore.innerIndexPtr()[i];
X(irow, j) -= X(jcol, j) * m_Ustore.valuePtr()[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 xplore(m);
IndexVector repfnz(maxpanel); IndexVector repfnz(maxpanel);
IndexVector panel_lsub(maxpanel); IndexVector panel_lsub(maxpanel);
IndexVector xprune(n); IndexVector xprune(n); xprune.setZero();
IndexVector marker(m*LU_NO_MARKER); IndexVector marker(m*LU_NO_MARKER);
repfnz.setConstant(-1); repfnz.setConstant(-1);
@ -642,7 +642,7 @@ void SparseLU<MatrixType, OrderingType>::factorize(const MatrixType& matrix)
for (i = 0; i < nseg; i++) for (i = 0; i < nseg; i++)
{ {
irep = segrep(i); irep = segrep(i);
repfnz(irep) = IND_EMPTY; repfnz_k(irep) = IND_EMPTY;
} }
} // end SparseLU within the panel } // end SparseLU within the panel
jcol += panel_size; // Move to the next panel jcol += panel_size; // Move to the next panel

View File

@ -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; luptr += nsupr * no_zeros + no_zeros;
// triangular solve with Eigen // triangular solve with Eigen
Map<Matrix<Scalar,Dynamic, Dynamic>, 0, OuterStride<> > A( &(lusup.data()[luptr]), segsize, segsize, OuterStride<>(nsupr) ); 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); VectorBlock<ScalarVector> u(tempv, 0, segsize);
u = A.template triangularView<UnitLower>().solve(u); 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); l(i) = Scalar(0);
++isub; ++isub;
} }
std::cout<< jj << " : " << dense_col.transpose() << std::endl;
} // End for each column in the panel } // End for each column in the panel
} // End for each updating supernode } // End for each updating supernode

View File

@ -126,7 +126,7 @@ void LU_panel_dfs(const int m, const int w, const int jcol, MatrixType& A, Index
} }
else 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(*) // has been explored, update repfnz(*)
krep = xsup(supno(kperm)+1) - 1; krep = xsup(supno(kperm)+1) - 1;
myfnz = repfnz_col(krep); myfnz = repfnz_col(krep);