|
| SolverIDR (SolverControl &cn, VectorMemory< VectorType > &mem, const AdditionalData &data=AdditionalData()) |
|
| SolverIDR (SolverControl &cn, const AdditionalData &data=AdditionalData()) |
|
virtual | ~SolverIDR () override=default |
|
template<typename MatrixType , typename PreconditionerType > |
void | solve (const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &preconditioner) |
|
| SolverBase (SolverControl &solver_control, VectorMemory< Vector< double > > &vector_memory) |
|
| SolverBase (SolverControl &solver_control) |
|
boost::signals2::connection | connect (const std::function< SolverControl::State(const unsigned int iteration, const double check_value, const Vector< double > ¤t_iterate)> &slot) |
|
| Subscriptor () |
|
| Subscriptor (const Subscriptor &) |
|
| Subscriptor (Subscriptor &&) noexcept |
|
virtual | ~Subscriptor () |
|
Subscriptor & | operator= (const Subscriptor &) |
|
Subscriptor & | operator= (Subscriptor &&) noexcept |
|
void | subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
|
void | unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
|
unsigned int | n_subscriptions () const |
|
template<typename StreamType > |
void | list_subscribers (StreamType &stream) const |
|
void | list_subscribers () const |
|
template<class Archive > |
void | serialize (Archive &ar, const unsigned int version) |
|
template<class VectorType = Vector<double>>
class SolverIDR< VectorType >
This class implements the IDR(s) method used for solving nonsymmetric, indefinite linear systems, developed in IDR(s): A Family of Simple and Fast Algorithms for Solving Large Nonsymmetric Systems of Linear Equations by Martin B. van Gijzen and Peter Sonneveld . The implementation here is the preconditioned version from Algorithm 913: An Elegant IDR(s) Variant that Efficiently Exploits Biorthogonality Properties by Martin B. van Gijzen and Peter Sonneveld. The local structure AdditionalData
takes the value for the parameter s which can be any integer greater than or equal to 1. For s=1
, this method has similar convergence to BiCGStab.
- Note
- Each iteration of IDR(s) requires
s+1
preconditioning steps and matrix-vector products. In this implementation the residual is updated and convergence is checked after each of these inner steps inside the outer iteration. If the user enables the history data, the residual at each of these steps is stored and therefore there will be multiple values per iteration.
- Author
- Conrad Clevenger, 2019
Definition at line 118 of file solver_idr.h.