G+Smo  24.08.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
gsIterativeSolver< T > Class Template Referenceabstract

Detailed Description

template<class T = real_t>
class gismo::gsIterativeSolver< T >

Abstract class for iterative solvers.

+ Inheritance diagram for gsIterativeSolver< T >:

Public Member Functions

virtual std::string detail () const
 Prints the object as a string with extended details.
 
error () const
 The relative residual error of the current iterate. More...
 
virtual void finalizeIteration (VectorType &)
 Some post-processing might be required.
 
 gsIterativeSolver (const LinOpPtr &mat, const LinOpPtr &precond)
 Contructor using a linear operator to be solved for and a preconditioner. More...
 
template<typename Derived >
 gsIterativeSolver (const gsEigen::EigenBase< Derived > &mat, const LinOpPtr &precond)
 Contructor using any dense or sparse matrix and a preconditioner. More...
 
virtual bool initIteration (const VectorType &rhs, VectorType &x)
 Init the iteration.
 
index_t iterations () const
 The number of iterations needed to reach the error criteria.
 
LinOpPtr preconditioner () const
 Get the preconditioner.
 
virtual std::ostream & print (std::ostream &os) const =0
 Prints the object as a string.
 
void setMaxIterations (index_t max_iters)
 Set the maximum number of iterations (default: 1000)
 
virtual gsIterativeSolversetOptions (const gsOptionList &opt)
 Set the options based on a gsOptionList.
 
void setPreconditioner (const LinOpPtr &precond)
 Set the preconditionner.
 
void setTolerance (T tol)
 Set the tolerance for the error criteria on the relative residual error (default: 1e-10)
 
index_t size () const
 Returns the size of the linear system.
 
void solve (const VectorType &rhs, VectorType &x)
 Solves the linear system and stores the solution in x. More...
 
void solveDetailed (const VectorType &rhs, VectorType &x, VectorType &error_history)
 Solves the linear system and stores the solution in x and records the error histroy. More...
 
virtual bool step (VectorType &x)=0
 Perform one step, requires initIteration.
 
tolerance () const
 The chosen tolerance for the error criteria on the relative residual error.
 
LinOpPtr underlying () const
 Get the underlying matrix/operator to be solved for.
 

Static Public Member Functions

static gsOptionList defaultOptions ()
 Returns a list of default options.
 

Protected Attributes

m_error
 The relative error as absolute_error/m_rhs_norm.
 
const LinOpPtr m_mat
 The matrix/operator to be solved for.
 
index_t m_max_iters
 The upper bound for the number of iterations.
 
index_t m_num_iter
 The number of iterations performed.
 
LinOpPtr m_precond
 The preconditioner.
 
m_rhs_norm
 The norm of the right-hand-side.
 
gsOptionList::Real m_tol
 The tolerance for m_error to be reached.
 

Related Functions

(Note that these are not member functions.)

template<class T >
std::ostream & operator<< (std::ostream &os, const gsIterativeSolver< T > &b)
 Print (as string) operator for iterative solvers. More...
 

Constructor & Destructor Documentation

gsIterativeSolver ( const LinOpPtr &  mat,
const LinOpPtr &  precond 
)
inline

Contructor using a linear operator to be solved for and a preconditioner.

Parameters
matThe operator to be solved for as shared pointer to a gsLinearOperator
precondThe preconditioneras shared pointer to a gsLinearOperator, a null pointer is defaulted to the identity
gsIterativeSolver ( const gsEigen::EigenBase< Derived > &  mat,
const LinOpPtr &  precond 
)
inline

Contructor using any dense or sparse matrix and a preconditioner.

Parameters
matThe operator to be solved for as a (reference) to a matrix.
precondThe preconditioneras shared pointer to a gsLinearOperator, a null pointer is defaulted to the identity
Note
This does not copy the matrix in mat. So, make sure that the matrix is not deleted before the solver. If you have a shared pointer to the matrix, you might use makeMatrixOp() to obtain a shared pointer to a gsLinearOperator which can be supplied alternatively.

Member Function Documentation

T error ( ) const
inline

The relative residual error of the current iterate.

This is the Euclidean norm of the residual, devided by the Euclidean norm of the right-hand side.

void solve ( const VectorType rhs,
VectorType x 
)
inline

Solves the linear system and stores the solution in x.

Solves the linear system of equations

Parameters
[in]rhsthe right hand side of the linear system
[in,out]xstarting value; the solution is stored in here
void solveDetailed ( const VectorType rhs,
VectorType x,
VectorType error_history 
)
inline

Solves the linear system and stores the solution in x and records the error histroy.

Solves the linear system of equations

Parameters
[in]rhsthe right hand side of the linear system
[in,out]xstarting value; the solution is stored in here
[out]error_historythe error history is stored here

Friends And Related Function Documentation

std::ostream & operator<< ( std::ostream &  os,
const gsIterativeSolver< T > &  b 
)
related

Print (as string) operator for iterative solvers.