Propagate precondition info to the iterative solver.

This commit is contained in:
Gael Guennebaud 2015-08-04 16:13:34 +02:00
parent db0f5c9d90
commit 506964fc29
3 changed files with 10 additions and 5 deletions

View File

@ -95,6 +95,8 @@ class DiagonalPreconditioner
&& "DiagonalPreconditioner::solve(): invalid number of rows of the right hand side matrix b"); && "DiagonalPreconditioner::solve(): invalid number of rows of the right hand side matrix b");
return Solve<DiagonalPreconditioner, Rhs>(*this, b.derived()); return Solve<DiagonalPreconditioner, Rhs>(*this, b.derived());
} }
ComputationInfo info() { return Success; }
protected: protected:
Vector m_invdiag; Vector m_invdiag;
@ -161,6 +163,8 @@ class LeastSquareDiagonalPreconditioner : public DiagonalPreconditioner<_Scalar>
{ {
return factorize(mat); return factorize(mat);
} }
ComputationInfo info() { return Success; }
protected: protected:
}; };
@ -190,6 +194,8 @@ class IdentityPreconditioner
template<typename Rhs> template<typename Rhs>
inline const Rhs& solve(const Rhs& b) const { return b; } inline const Rhs& solve(const Rhs& b) const { return b; }
ComputationInfo info() { return Success; }
}; };
} // end namespace Eigen } // end namespace Eigen

View File

@ -232,7 +232,7 @@ void IncompleteLUT<Scalar,StorageIndex>::analyzePattern(const _MatrixType& amat)
m_analysisIsOk = true; m_analysisIsOk = true;
m_factorizationIsOk = false; m_factorizationIsOk = false;
m_isInitialized = false; m_isInitialized = true;
} }
template <typename Scalar, typename StorageIndex> template <typename Scalar, typename StorageIndex>
@ -441,7 +441,6 @@ void IncompleteLUT<Scalar,StorageIndex>::factorize(const _MatrixType& amat)
m_lu.makeCompressed(); m_lu.makeCompressed();
m_factorizationIsOk = true; m_factorizationIsOk = true;
m_isInitialized = m_factorizationIsOk;
m_info = Success; m_info = Success;
} }

View File

@ -74,7 +74,7 @@ public:
m_preconditioner.analyzePattern(mp_matrix); m_preconditioner.analyzePattern(mp_matrix);
m_isInitialized = true; m_isInitialized = true;
m_analysisIsOk = true; m_analysisIsOk = true;
m_info = Success; m_info = m_preconditioner.info();
return derived(); return derived();
} }
@ -94,7 +94,7 @@ public:
grab(A.derived()); grab(A.derived());
m_preconditioner.factorize(mp_matrix); m_preconditioner.factorize(mp_matrix);
m_factorizationIsOk = true; m_factorizationIsOk = true;
m_info = Success; m_info = m_preconditioner.info();
return derived(); return derived();
} }
@ -116,7 +116,7 @@ public:
m_isInitialized = true; m_isInitialized = true;
m_analysisIsOk = true; m_analysisIsOk = true;
m_factorizationIsOk = true; m_factorizationIsOk = true;
m_info = Success; m_info = m_preconditioner.info();
return derived(); return derived();
} }