IDR(s) is an efficient method for solving large nonsymmetric systems of linear equations.
More...
|
| std::unique_ptr< LinOp > | transpose () const override |
| | Returns a LinOp representing the transpose of the Transposable object.
|
| std::unique_ptr< LinOp > | conj_transpose () const override |
| | Returns a LinOp representing the conjugate transpose of the Transposable object.
|
| bool | apply_uses_initial_guess () const override |
| | Return true as iterative solvers use the data in x as an initial guess.
|
| size_type | get_subspace_dim () const |
| | Gets the subspace dimension of the solver.
|
| void | set_subspace_dim (const size_type other) |
| | Sets the subspace dimension of the solver.
|
| remove_complex< ValueType > | get_kappa () const |
| | Gets the kappa parameter of the solver.
|
| void | set_kappa (const remove_complex< ValueType > other) |
| | Sets the kappa parameter of the solver.
|
| bool | get_deterministic () const |
| | Gets the deterministic parameter of the solver.
|
| void | set_deterministic (const bool other) |
| | Sets the deterministic parameter of the solver.
|
| bool | get_complex_subspace () const |
| | Gets the complex_subspace parameter of the solver.
|
| void | set_complex_subpsace (const bool other) |
| | Sets the complex_subspace parameter of the solver.
|
| void | set_complex_subspace (const bool other) |
| | Sets the complex_subspace parameter of the solver.
|
|
const parameters_type & | get_parameters () const |
|
const Idr< default_precision > * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
|
void | convert_to (result_type *result) const override |
|
void | move_to (result_type *result) override |
|
EnableSolverBase & | operator= (const EnableSolverBase &other) |
| | Creates a shallow copy of the provided system matrix, clones it onto this executor if executors don't match.
|
|
int | get_num_workspace_ops () const override |
|
std::vector< std::string > | get_workspace_op_names () const override |
|
std::vector< int > | get_workspace_scalars () const override |
| | Returns the IDs of all scalars (workspace vectors with system dimension-independent size, usually 1 x num_rhs).
|
|
std::vector< int > | get_workspace_vectors () const override |
| | Returns the IDs of all vectors (workspace vectors with system dimension-dependent size, usually system_matrix_size x num_rhs).
|
| std::shared_ptr< const LinOp > | get_system_matrix () const |
| | Returns the system matrix, with its concrete type, used by the solver.
|
|
EnableIterativeBase & | operator= (const EnableIterativeBase &other) |
| | Creates a shallow copy of the provided stopping criterion, clones it onto this executor if executors don't match.
|
| void | set_stop_criterion_factory (std::shared_ptr< const stop::CriterionFactory > new_stop_factory) override |
| | Sets the stopping criterion of the solver.
|
| std::shared_ptr< const stop::CriterionFactory > | get_stop_criterion_factory () const |
| | Gets the stopping criterion factory of the solver.
|
| void | set_preconditioner (std::shared_ptr< const LinOp > new_precond) override |
| | Sets the preconditioner operator used by the Preconditionable.
|
|
EnablePreconditionable & | operator= (const EnablePreconditionable &other) |
| | Creates a shallow copy of the provided preconditioner, clones it onto this executor if executors don't match.
|
| virtual std::shared_ptr< const LinOp > | get_preconditioner () const |
| | Returns the preconditioner operator used by the Preconditionable.
|
template<typename ValueType = default_precision>
class gko::solver::Idr< ValueType >
IDR(s) is an efficient method for solving large nonsymmetric systems of linear equations.
The implemented version is the one presented in the paper "Algorithm 913: An elegant IDR(s) variant that efficiently exploits
biorthogonality properties" by M. B. Van Gijzen and P. Sonneveld.
The method is based on the induced dimension reduction theorem which provides a way to construct subsequent residuals that lie in a sequence of shrinking subspaces. These subspaces are spanned by s vectors which are first generated randomly and then orthonormalized. They are stored in a dense matrix.
- Template Parameters
-
| ValueType | precision of the elements of the system matrix. |