A serial GMRES iterative solver for nonsymmetric linear systems of equations. More...
#include <Gmres.hpp>
Public Types  
using  options = tmpl::list< ConvergenceCriteria, Verbosity, Restart > 
Public Member Functions  
Gmres (Convergence::Criteria convergence_criteria, ::Verbosity verbosity, size_t restart=0) noexcept  
Gmres (const Gmres &)=default  
Gmres &  operator= (const Gmres &)=default 
Gmres (Gmres &&)=default  
Gmres &  operator= (Gmres &&)=default 
void  initialize () noexcept 
const Convergence::Criteria &  convergence_criteria () const noexcept 
void  pup (PUP::er &p) noexcept 
template<typename LinearOperator , typename SourceType , typename Preconditioner = IdentityPreconditioner<VarsType>, typename IterationCallback = NoIterationCallback>  
std::pair< Convergence::HasConverged, VarsType >  operator() (LinearOperator &&linear_operator, const SourceType &source, const VarsType &initial_guess, Preconditioner &&preconditioner=IdentityPreconditioner< VarsType >{}, IterationCallback &&iteration_callback=NoIterationCallback{}) const noexcept 
Iteratively solve the problem \(Ax=b\) for \(x\) where \(A\) is the linear_operator and \(b\) is the source , starting \(x\) at initial_guess . More...  
Static Public Attributes  
static constexpr OptionString  help 
A serial GMRES iterative solver for nonsymmetric linear systems of equations.
This is an iterative algorithm to solve general linear equations \(Ax=b\) where \(A\) is a linear operator. See [55], chapter 6.5 for a description of the GMRES algorithm and Algorithm 9.6 for this implementation. It is matrixfree, which means the operator \(A\) needs not be provided explicity as a matrix but only the operator action \(A(x)\) must be provided for an argument \(x\).
The GMRES algorithm does not require the operator \(A\) to be symmetric or positivedefinite. Note that other algorithms such as conjugate gradients may be more efficient for symmetric positivedefinite operators.
restart
argument of the constructor to \(N_\mathrm{restart}\) to activate restarting, or set it to zero to deactivate restarting (default behaviour).

noexcept 
Iteratively solve the problem \(Ax=b\) for \(x\) where \(A\) is the linear_operator
and \(b\) is the source
, starting \(x\) at initial_guess
.
Optionally provide a preconditioner
(see class documentation).
Returns: An instance of Convergence::HasConverged
that provides information on the convergence status of the completed solve, and the approximate solution \(x\).

staticconstexpr 