![]() |
|
Base class for linear iterative solvers. More...
#include <IterativeSolverBase.h>
Public Types | |
enum | { ColsAtCompileTime = MatrixType::ColsAtCompileTime , MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime } |
typedef internal::traits< Derived >::MatrixType | MatrixType |
typedef internal::traits< Derived >::Preconditioner | Preconditioner |
typedef MatrixType::Scalar | Scalar |
typedef MatrixType::StorageIndex | StorageIndex |
typedef MatrixType::RealScalar | RealScalar |
Public Member Functions | |
IterativeSolverBase () | |
template<typename MatrixDerived > | |
IterativeSolverBase (const EigenBase< MatrixDerived > &A) | |
IterativeSolverBase (IterativeSolverBase &&)=default | |
~IterativeSolverBase () | |
template<typename MatrixDerived > | |
Derived & | analyzePattern (const EigenBase< MatrixDerived > &A) |
template<typename MatrixDerived > | |
Derived & | factorize (const EigenBase< MatrixDerived > &A) |
template<typename MatrixDerived > | |
Derived & | compute (const EigenBase< MatrixDerived > &A) |
EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
RealScalar | tolerance () const |
Derived & | setTolerance (const RealScalar &tolerance) |
Preconditioner & | preconditioner () |
const Preconditioner & | preconditioner () const |
Index | maxIterations () const |
Derived & | setMaxIterations (Index maxIters) |
Index | iterations () const |
RealScalar | error () const |
template<typename Rhs , typename Guess > | |
const SolveWithGuess< Derived, Rhs, Guess > | solveWithGuess (const MatrixBase< Rhs > &b, const Guess &x0) const |
ComputationInfo | info () const |
template<typename Rhs , typename DestDerived > | |
void | _solve_with_guess_impl (const Rhs &b, SparseMatrixBase< DestDerived > &aDest) const |
template<typename Rhs , typename DestDerived > | |
std::enable_if_t< Rhs::ColsAtCompileTime !=1 &&DestDerived::ColsAtCompileTime !=1 > | _solve_with_guess_impl (const Rhs &b, MatrixBase< DestDerived > &aDest) const |
template<typename Rhs , typename DestDerived > | |
std::enable_if_t< Rhs::ColsAtCompileTime==1||DestDerived::ColsAtCompileTime==1 > | _solve_with_guess_impl (const Rhs &b, MatrixBase< DestDerived > &dest) const |
template<typename Rhs , typename Dest > | |
void | _solve_impl (const Rhs &b, Dest &x) const |
Derived & | derived () |
const Derived & | derived () const |
![]() | |
SparseSolverBase () | |
SparseSolverBase (SparseSolverBase &&other) | |
~SparseSolverBase () | |
Derived & | derived () |
const Derived & | derived () const |
template<typename Rhs > | |
const Solve< Derived, Rhs > | solve (const MatrixBase< Rhs > &b) const |
template<typename Rhs > | |
const Solve< Derived, Rhs > | solve (const SparseMatrixBase< Rhs > &b) const |
template<typename Rhs , typename Dest > | |
void | _solve_impl (const SparseMatrixBase< Rhs > &b, SparseMatrixBase< Dest > &dest) const |
Protected Types | |
typedef SparseSolverBase< Derived > | Base |
typedef internal::generic_matrix_wrapper< MatrixType > | MatrixWrapper |
typedef MatrixWrapper::ActualMatrixType | ActualMatrixType |
Protected Member Functions | |
void | init () |
const ActualMatrixType & | matrix () const |
template<typename InputType > | |
void | grab (const InputType &A) |
Protected Attributes | |
MatrixWrapper | m_matrixWrapper |
Preconditioner | m_preconditioner |
Index | m_maxIterations |
RealScalar | m_tolerance |
RealScalar | m_error |
Index | m_iterations |
ComputationInfo | m_info |
bool | m_analysisIsOk |
bool | m_factorizationIsOk |
bool | m_isInitialized |
![]() | |
bool | m_isInitialized |
Base class for linear iterative solvers.
|
protected |
|
protected |
typedef internal::traits<Derived>::MatrixType Eigen::IterativeSolverBase< Derived >::MatrixType |
|
protected |
typedef internal::traits<Derived>::Preconditioner Eigen::IterativeSolverBase< Derived >::Preconditioner |
typedef MatrixType::RealScalar Eigen::IterativeSolverBase< Derived >::RealScalar |
typedef MatrixType::Scalar Eigen::IterativeSolverBase< Derived >::Scalar |
typedef MatrixType::StorageIndex Eigen::IterativeSolverBase< Derived >::StorageIndex |
anonymous enum |
Enumerator | |
---|---|
ColsAtCompileTime | |
MaxColsAtCompileTime |
|
inline |
|
inlineexplicit |
Initialize the solver with matrix A for further Ax=b
solving.
This constructor is a shortcut for the default constructor followed by a call to compute().
References Eigen::IterativeSolverBase< Derived >::compute(), Eigen::IterativeSolverBase< Derived >::init(), and Eigen::IterativeSolverBase< Derived >::matrix().
|
default |
|
inline |
|
inline |
default initial guess = 0
References b, Eigen::IterativeSolverBase< Derived >::derived(), and plotDoE::x.
|
inline |
References b, Eigen::IterativeSolverBase< Derived >::derived(), eigen_assert, k, Eigen::IterativeSolverBase< Derived >::m_info, Eigen::NoConvergence, Eigen::NumericalIssue, Eigen::IterativeSolverBase< Derived >::rows(), and Eigen::Success.
|
inline |
References b, and Eigen::IterativeSolverBase< Derived >::derived().
|
inline |
References b, Eigen::IterativeSolverBase< Derived >::cols(), Eigen::IterativeSolverBase< Derived >::derived(), Eigen::SparseMatrixBase< Derived >::derived(), eigen_assert, k, Eigen::IterativeSolverBase< Derived >::m_info, Eigen::NoConvergence, Eigen::NumericalIssue, Eigen::IterativeSolverBase< Derived >::rows(), size, Eigen::Success, and tmp.
|
inline |
Initializes the iterative solver for the sparsity pattern of the matrix A for further solving Ax=b
problems.
Currently, this function mostly calls analyzePattern on the preconditioner. In the future we might, for instance, implement column reordering for faster matrix vector products.
References Eigen::IterativeSolverBase< Derived >::derived(), Eigen::IterativeSolverBase< Derived >::grab(), Eigen::IterativeSolverBase< Derived >::m_analysisIsOk, Eigen::IterativeSolverBase< Derived >::m_info, Eigen::IterativeSolverBase< Derived >::m_isInitialized, Eigen::IterativeSolverBase< Derived >::m_preconditioner, and Eigen::IterativeSolverBase< Derived >::matrix().
|
inline |
References Eigen::IterativeSolverBase< Derived >::matrix().
Referenced by gdb.printers._MatrixEntryIterator::__next__(), Eigen::IterativeSolverBase< Derived >::_solve_with_guess_impl(), gdb.printers.EigenMatrixPrinter::children(), gdb.printers.EigenSparseMatrixPrinter::children(), gdb.printers.EigenMatrixPrinter::to_string(), and gdb.printers.EigenSparseMatrixPrinter::to_string().
|
inline |
Initializes the iterative solver with the matrix A for further solving Ax=b
problems.
Currently, this function mostly initializes/computes the preconditioner. In the future we might, for instance, implement column reordering for faster matrix vector products.
References Eigen::IterativeSolverBase< Derived >::derived(), Eigen::IterativeSolverBase< Derived >::grab(), Eigen::IterativeSolverBase< Derived >::m_analysisIsOk, Eigen::IterativeSolverBase< Derived >::m_factorizationIsOk, Eigen::IterativeSolverBase< Derived >::m_info, Eigen::IterativeSolverBase< Derived >::m_isInitialized, Eigen::IterativeSolverBase< Derived >::m_preconditioner, and Eigen::IterativeSolverBase< Derived >::matrix().
Referenced by Eigen::IterativeSolverBase< Derived >::IterativeSolverBase(), and main().
|
inline |
Referenced by Eigen::IterativeSolverBase< Derived >::_solve_impl(), Eigen::IterativeSolverBase< Derived >::_solve_with_guess_impl(), Eigen::IterativeSolverBase< Derived >::analyzePattern(), Eigen::IterativeSolverBase< Derived >::compute(), Eigen::IterativeSolverBase< Derived >::factorize(), Eigen::IterativeSolverBase< Derived >::setMaxIterations(), Eigen::IterativeSolverBase< Derived >::setTolerance(), and Eigen::IterativeSolverBase< Derived >::solveWithGuess().
|
inline |
|
inline |
References eigen_assert, Eigen::IterativeSolverBase< Derived >::m_error, and Eigen::IterativeSolverBase< Derived >::m_isInitialized.
Referenced by main().
|
inline |
Initializes the iterative solver with the numerical values of the matrix A for further solving Ax=b
problems.
Currently, this function mostly calls factorize on the preconditioner.
References Eigen::IterativeSolverBase< Derived >::derived(), eigen_assert, Eigen::IterativeSolverBase< Derived >::grab(), Eigen::IterativeSolverBase< Derived >::m_analysisIsOk, Eigen::IterativeSolverBase< Derived >::m_factorizationIsOk, Eigen::IterativeSolverBase< Derived >::m_info, Eigen::IterativeSolverBase< Derived >::m_preconditioner, and Eigen::IterativeSolverBase< Derived >::matrix().
|
inlineprotected |
|
inline |
References eigen_assert, Eigen::IterativeSolverBase< Derived >::m_info, and Eigen::IterativeSolverBase< Derived >::m_isInitialized.
|
inlineprotected |
References oomph::SarahBL::epsilon, Eigen::IterativeSolverBase< Derived >::m_analysisIsOk, Eigen::IterativeSolverBase< Derived >::m_factorizationIsOk, Eigen::IterativeSolverBase< Derived >::m_isInitialized, Eigen::IterativeSolverBase< Derived >::m_maxIterations, and Eigen::IterativeSolverBase< Derived >::m_tolerance.
Referenced by Eigen::IterativeSolverBase< Derived >::IterativeSolverBase().
|
inline |
References eigen_assert, Eigen::IterativeSolverBase< Derived >::m_isInitialized, and Eigen::IterativeSolverBase< Derived >::m_iterations.
Referenced by main().
|
inlineprotected |
References Eigen::IterativeSolverBase< Derived >::m_matrixWrapper.
Referenced by Eigen::IterativeSolverBase< Derived >::analyzePattern(), Eigen::IterativeSolverBase< Derived >::cols(), Eigen::IterativeSolverBase< Derived >::compute(), Eigen::IterativeSolverBase< Derived >::factorize(), Eigen::IterativeSolverBase< Derived >::IterativeSolverBase(), Eigen::IterativeSolverBase< Derived >::maxIterations(), and Eigen::IterativeSolverBase< Derived >::rows().
|
inline |
References Eigen::IterativeSolverBase< Derived >::m_maxIterations, and Eigen::IterativeSolverBase< Derived >::matrix().
Referenced by Eigen::BiCGSTAB< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::ConjugateGradient< MatrixType_, UpLo_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::LeastSquaresConjugateGradient< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::BiCGSTABL< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::DGMRES< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::GMRES< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::IDRS< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::IDRSTABL< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), and Eigen::MINRES< MatrixType_, UpLo_, Preconditioner_ >::_solve_vector_with_guess_impl().
|
inline |
References Eigen::IterativeSolverBase< Derived >::m_preconditioner.
|
inline |
References Eigen::IterativeSolverBase< Derived >::m_preconditioner.
|
inline |
References Eigen::IterativeSolverBase< Derived >::matrix().
Referenced by gdb.printers._MatrixEntryIterator::__next__(), Eigen::IterativeSolverBase< Derived >::_solve_with_guess_impl(), gdb.printers.EigenMatrixPrinter::children(), gdb.printers.EigenSparseMatrixPrinter::children(), Eigen::IterativeSolverBase< Derived >::solveWithGuess(), gdb.printers.EigenMatrixPrinter::to_string(), and gdb.printers.EigenSparseMatrixPrinter::to_string().
|
inline |
Sets the max number of iterations. Default is twice the number of columns of the matrix.
References Eigen::IterativeSolverBase< Derived >::derived(), and Eigen::IterativeSolverBase< Derived >::m_maxIterations.
|
inline |
Sets the tolerance threshold used by the stopping criteria.
This value is used as an upper bound to the relative residual error: |Ax-b|/|b|. The default value is the machine precision given by NumTraits<Scalar>::epsilon()
References Eigen::IterativeSolverBase< Derived >::derived(), Eigen::IterativeSolverBase< Derived >::m_tolerance, and Eigen::IterativeSolverBase< Derived >::tolerance().
Referenced by test_bicgstab_T(), test_bicgstabl_T(), and test_idrstabl_T().
|
inline |
References b, Eigen::IterativeSolverBase< Derived >::derived(), eigen_assert, Eigen::IterativeSolverBase< Derived >::m_isInitialized, Eigen::IterativeSolverBase< Derived >::rows(), and Global::x0.
|
inline |
References Eigen::IterativeSolverBase< Derived >::m_tolerance.
Referenced by Eigen::IterativeSolverBase< Derived >::setTolerance().
|
mutableprotected |
|
mutableprotected |
Referenced by Eigen::IterativeSolverBase< Derived >::error().
|
protected |
|
mutableprotected |
|
mutableprotected |
Referenced by Eigen::IterativeSolverBase< Derived >::analyzePattern(), Eigen::IterativeSolverBase< Derived >::compute(), Eigen::IterativeSolverBase< Derived >::error(), Eigen::IterativeSolverBase< Derived >::info(), Eigen::IterativeSolverBase< Derived >::init(), Eigen::IterativeSolverBase< Derived >::iterations(), and Eigen::IterativeSolverBase< Derived >::solveWithGuess().
|
mutableprotected |
Referenced by Eigen::IterativeSolverBase< Derived >::iterations().
|
protected |
|
protected |
|
protected |
Referenced by Eigen::BiCGSTAB< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::ConjugateGradient< MatrixType_, UpLo_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::LeastSquaresConjugateGradient< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::BiCGSTABL< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::DGMRES< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::GMRES< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::IDRS< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::IDRSTABL< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::MINRES< MatrixType_, UpLo_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::IterativeSolverBase< Derived >::analyzePattern(), Eigen::IterativeSolverBase< Derived >::compute(), Eigen::IterativeSolverBase< Derived >::factorize(), and Eigen::IterativeSolverBase< Derived >::preconditioner().
|
protected |
Referenced by Eigen::BiCGSTAB< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::ConjugateGradient< MatrixType_, UpLo_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::LeastSquaresConjugateGradient< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::BiCGSTABL< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::DGMRES< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::GMRES< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::IDRS< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::IDRSTABL< MatrixType_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::MINRES< MatrixType_, UpLo_, Preconditioner_ >::_solve_vector_with_guess_impl(), Eigen::IterativeSolverBase< Derived >::init(), Eigen::IterativeSolverBase< Derived >::setTolerance(), and Eigen::IterativeSolverBase< Derived >::tolerance().