Fix Jacobi preconditioner with zero diagonal entries

(grafted from c06ec0f464a312dbce24edfde1de75bb1a69c4a6
)
This commit is contained in:
Gael Guennebaud 2014-06-17 23:47:30 +02:00
parent 5c70b43abd
commit befa141699

View File

@ -65,10 +65,10 @@ class DiagonalPreconditioner
{ {
typename MatType::InnerIterator it(mat,j); typename MatType::InnerIterator it(mat,j);
while(it && it.index()!=j) ++it; while(it && it.index()!=j) ++it;
if(it && it.index()==j) if(it && it.index()==j && it.value()!=Scalar(0))
m_invdiag(j) = Scalar(1)/it.value(); m_invdiag(j) = Scalar(1)/it.value();
else else
m_invdiag(j) = 0; m_invdiag(j) = Scalar(1);
} }
m_isInitialized = true; m_isInitialized = true;
return *this; return *this;