| 
| 
using  | ConstVectorViewType = typename Base::ConstVectorViewType | 
|   | Type for constant vector view. 
  | 
| 
using  | DeviceType = typename Base::DeviceType | 
|   | Device where the solver will run on and auxiliary data will alloacted on. 
  | 
| 
using  | IndexType = typename Base::IndexType | 
|   | Type for indexing. 
  | 
| 
using  | RealType = typename Base::RealType | 
|   | Floating point type used for computations. 
  | 
| 
using  | VectorViewType = typename Base::VectorViewType | 
|   | Type for vector view. 
  | 
| 
using  | ConstVectorViewType = typename Traits< Matrix >::ConstVectorViewType | 
|   | Type for constant vector view. 
  | 
| using  | DeviceType = typename Matrix::DeviceType | 
|   | Device where the solver will run on and auxiliary data will alloacted on.  
  | 
| 
using  | IndexType = typename Matrix::IndexType | 
|   | Type for indexing. 
  | 
| 
using  | MatrixPointer = std::shared_ptr< std::add_const_t< MatrixType > > | 
|   | Type of shared pointer to the matrix. 
  | 
| 
using  | MatrixType = Matrix | 
|   | Type of the matrix representing the linear system. 
  | 
| 
using  | PreconditionerPointer = std::shared_ptr< std::add_const_t< PreconditionerType > > | 
|   | Type of shared pointer to the preconditioner. 
  | 
| 
using  | PreconditionerType = Preconditioners::Preconditioner< MatrixType > | 
|   | Type of preconditioner. 
  | 
| 
using  | RealType = typename Matrix::RealType | 
|   | Floating point type used for computations. 
  | 
| 
using  | VectorViewType = typename Traits< Matrix >::VectorViewType | 
|   | Type for vector view. 
  | 
| 
using  | SolverMonitorType | 
|   | Type of an object used for monitoring of the convergence. 
  | 
 | 
| 
void  | setResidualSmoothing (bool smoothing) | 
|   | Enables or disables the residual smoothing procedure. 
  | 
| 
void  | setShadowSpaceDimension (int s) | 
|   | Sets the dimension of the shadow space. 
  | 
| bool  | setup (const Config::ParameterContainer ¶meters, const String &prefix="") override | 
|   | Method for setup of the linear iterative solver based on configuration parameters.  
  | 
| bool  | solve (ConstVectorViewType b, VectorViewType x) override | 
|   | Method for solving of a linear system.  
  | 
| 
virtual  | ~LinearSolver ()=default | 
|   | Default destructor. 
  | 
| virtual void  | setMatrix (const MatrixPointer &matrix) | 
|   | Set the matrix of the linear system.  
  | 
| void  | setPreconditioner (const PreconditionerPointer &preconditioner) | 
|   | Set the preconditioner.  
  | 
| 
  | IterativeSolver ()=default | 
|   | Default constructor. 
  | 
| bool  | checkConvergence () | 
|   | Checks whether the convergence occurred already.  
  | 
| bool  | checkNextIteration () | 
|   | Checks if the solver is allowed to do the next iteration.  
  | 
| const Matrix::RealType &  | getConvergenceResidue () const | 
|   | Gets the the convergence threshold.  
  | 
| const Matrix::RealType &  | getDivergenceResidue () const | 
|   | Gets the limit for the divergence criterion.  
  | 
| const Matrix::IndexType &  | getIterations () const | 
|   | Gets the number of iterations performed by the solver so far.  
  | 
| const Matrix::IndexType &  | getMaxIterations () const | 
|   | Gets the maximal number of iterations the solver is allowed to perform.  
  | 
| const Matrix::IndexType &  | getMinIterations () const | 
|   | Gets the minimal number of iterations the solver is supposed to do.  
  | 
| const Matrix::RealType &  | getResidue () const | 
|   | Gets the residue reached at the current iteration.  
  | 
| bool  | nextIteration () | 
|   | Proceeds to the next iteration.  
  | 
| 
void  | resetIterations () | 
|   | Sets the the number of the current iterations to zero. 
  | 
| void  | setConvergenceResidue (const Matrix::RealType &convergenceResidue) | 
|   | Sets the threshold for the convergence.  
  | 
| void  | setDivergenceResidue (const Matrix::RealType &divergenceResidue) | 
|   | Sets the residue limit for the divergence criterion.  
  | 
| void  | setMaxIterations (const Matrix::IndexType &maxIterations) | 
|   | Sets the maximal number of iterations the solver is allowed to perform.  
  | 
| void  | setMinIterations (const Matrix::IndexType &minIterations) | 
|   | Sets the minimal number of iterations the solver is supposed to do.  
  | 
| void  | setRefreshRate (const Matrix::IndexType &refreshRate) | 
|   | Sets the refresh rate (in milliseconds) for the solver monitor.  
  | 
| void  | setResidue (const Matrix::RealType &residue) | 
|   | Sets the residue reached at the current iteration.  
  | 
| void  | setSolverMonitor (SolverMonitorType &solverMonitor) | 
|   | Sets the solver monitor object.  
  | 
| bool  | setup (const Config::ParameterContainer ¶meters, const std::string &prefix="") | 
|   | Method for setup of the iterative solver based on configuration parameters.  
  | 
template<typename Matrix>
class TNL::Solvers::Linear::IDRs< Matrix >
Iterative solver of linear systems based on the IDR(s) method. 
IDRs implements an iterative solver for non-symmetric linear systems, using the Induced Dimension Reduction algorithm, denoted as IDR(s), according to the description in [1] and [2].
- Note
 - Unlike other iterative methods in TNL, IDR(s) is implemented with right-preconditioning rather than left-preconditioning.
 
[1] Peter Sonneveld and Martin Van Gijzen. "IDR(s): A Family of Simple and
    Fast Algorithms for Solving Large Nonsymmetric Systems of Linear
    Equations", SIAM Journal on Scientific Computing 31.2 (2009): 1035-1062. [2] Martin Van Gijzen and Peter Sonneveld. "Algorithm 913: An elegant
    IDR(s) variant that efficiently exploits biorthogonality properties." ACM Transactions on Mathematical Software (TOMS) 38.1 (2011): 1-19.
See TNL::Solvers::Linear::LinearSolver for example of showing how to use the linear solvers.
- Template Parameters
 - 
  
    | Matrix | is type of matrix describing the linear system.  | 
  
   
template<typename Matrix> 
 
This is method defines configuration entries for setup of the linear iterative solver. 
In addition to config entries defined by IterativeSolver::configSetup, this method defines the following:
bicgstab-ell - number of Bi-CG iterations before the MR part starts.
bicgstab-exact-residue - says whether the BiCGstab should compute the exact residue in each step (true) or to use a cheap approximation (false).
- Parameters
 - 
  
    | config | contains description of configuration parameters.  | 
    | prefix | is a prefix of particular configuration entries.  |