mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 19:59:05 +08:00
Propagate precondition info to the iterative solver.
This commit is contained in:
parent
db0f5c9d90
commit
506964fc29
@ -96,6 +96,8 @@ class DiagonalPreconditioner
|
|||||||
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;
|
||||||
bool m_isInitialized;
|
bool m_isInitialized;
|
||||||
@ -162,6 +164,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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user