dune-istl  2.2.1
Public Types | Public Member Functions | Protected Types | Protected Member Functions | List of all members
Dune::RestartedGMResSolver< X, Y, F > Class Template Referenceabstract

implements the Generalized Minimal Residual (GMRes) method More...

#include <dune/istl/solvers.hh>

Inheritance diagram for Dune::RestartedGMResSolver< X, Y, F >:
Dune::InverseOperator< X, Y >

Public Types

typedef X domain_type
 The domain type of the operator to be inverted. More...
 
typedef Y range_type
 The range type of the operator to be inverted. More...
 
typedef X::field_type field_type
 The field type of the operator to be inverted. More...
 
typedef FieldTraits
< field_type >::real_type 
real_type
 The real type of the field type (is the same of using real numbers, but differs for std::complex) More...
 
typedef F basis_type
 The field type of the basis vectors. More...
 

Public Member Functions

template<class L , class P >
 RestartedGMResSolver (L &op, P &prec, double reduction, int restart, int maxit, int verbose, bool recalc_defect=false)
 Set up solver. More...
 
template<class L , class S , class P >
 RestartedGMResSolver (L &op, S &sp, P &prec, double reduction, int restart, int maxit, int verbose, bool recalc_defect=false)
 Set up solver. More...
 
virtual void apply (X &x, X &b, InverseOperatorResult &res)
 Apply inverse operator,. More...
 
virtual void apply (X &x, Y &b, double reduction, InverseOperatorResult &res)
 Apply inverse operator. More...
 
virtual void apply (X &x, Y &b, InverseOperatorResult &res)=0
 Apply inverse operator,. More...
 

Protected Types

enum  { iterationSpacing = 5, normSpacing = 16 }
 

Protected Member Functions

void printHeader (std::ostream &s) const
 helper function for printing header of solver output More...
 
template<class DataType >
void printOutput (std::ostream &s, const double iter, const DataType &norm, const DataType &norm_old) const
 helper function for printing solver output More...
 
template<class DataType >
void printOutput (std::ostream &s, const double iter, const DataType &norm) const
 helper function for printing solver output More...
 

Detailed Description

template<class X, class Y = X, class F = Y>
class Dune::RestartedGMResSolver< X, Y, F >

implements the Generalized Minimal Residual (GMRes) method

GMRes solves the unsymmetric linear system Ax = b using the Generalized Minimal Residual method as described the SIAM Templates book (http://www.netlib.org/templates/templates.pdf).

Todo:
construct F via rebind and an appropriate field_type

Member Typedef Documentation

template<class X , class Y = X, class F = Y>
typedef F Dune::RestartedGMResSolver< X, Y, F >::basis_type

The field type of the basis vectors.

template<class X , class Y = X, class F = Y>
typedef X Dune::RestartedGMResSolver< X, Y, F >::domain_type

The domain type of the operator to be inverted.

template<class X , class Y = X, class F = Y>
typedef X::field_type Dune::RestartedGMResSolver< X, Y, F >::field_type

The field type of the operator to be inverted.

template<class X , class Y = X, class F = Y>
typedef Y Dune::RestartedGMResSolver< X, Y, F >::range_type

The range type of the operator to be inverted.

template<class X , class Y = X, class F = Y>
typedef FieldTraits<field_type>::real_type Dune::RestartedGMResSolver< X, Y, F >::real_type

The real type of the field type (is the same of using real numbers, but differs for std::complex)

Member Enumeration Documentation

template<class X, class Y>
anonymous enum
protectedinherited
Enumerator
iterationSpacing 
normSpacing 

Constructor & Destructor Documentation

template<class X , class Y = X, class F = Y>
template<class L , class P >
Dune::RestartedGMResSolver< X, Y, F >::RestartedGMResSolver ( L &  op,
P &  prec,
double  reduction,
int  restart,
int  maxit,
int  verbose,
bool  recalc_defect = false 
)
inline

Set up solver.

Set up Loop solver.

References Dune::SolverCategory::sequential.

template<class X , class Y = X, class F = Y>
template<class L , class S , class P >
Dune::RestartedGMResSolver< X, Y, F >::RestartedGMResSolver ( L &  op,
S &  sp,
P &  prec,
double  reduction,
int  restart,
int  maxit,
int  verbose,
bool  recalc_defect = false 
)
inline

Set up solver.

Set up loop solver.

Member Function Documentation

template<class X, class Y>
virtual void Dune::InverseOperator< X, Y >::apply ( X &  x,
Y &  b,
InverseOperatorResult res 
)
pure virtualinherited

Apply inverse operator,.

Warning
Note: right hand side b may be overwritten!
Parameters
xThe left hand side to store the result in.
bThe right hand side
resObject to store the statistics about applying the operator.

Implemented in Dune::MINRESSolver< X >, Dune::BiCGSTABSolver< X >, Dune::CGSolver< X >, Dune::GradientSolver< X >, and Dune::LoopSolver< X >.

Referenced by Dune::Amg::KAmgTwoGrid< Dune::Amg::AMG >::apply().

template<class X , class Y = X, class F = Y>
virtual void Dune::RestartedGMResSolver< X, Y, F >::apply ( X &  x,
X &  b,
InverseOperatorResult res 
)
inlinevirtual

Apply inverse operator,.

Warning
Note: right hand side b may be overwritten!
Parameters
xThe left hand side to store the result in.
bThe right hand side
resObject to store the statistics about applying the operator.
template<class X , class Y = X, class F = Y>
virtual void Dune::RestartedGMResSolver< X, Y, F >::apply ( X &  x,
Y &  b,
double  reduction,
InverseOperatorResult res 
)
inlinevirtual
template<class X, class Y>
void Dune::InverseOperator< X, Y >::printHeader ( std::ostream &  s) const
inlineprotectedinherited

helper function for printing header of solver output

Referenced by Dune::RestartedGMResSolver< X, Y, F >::apply().

template<class X, class Y>
template<class DataType >
void Dune::InverseOperator< X, Y >::printOutput ( std::ostream &  s,
const double  iter,
const DataType &  norm,
const DataType &  norm_old 
) const
inlineprotectedinherited

helper function for printing solver output

Referenced by Dune::RestartedGMResSolver< X, Y, F >::apply().

template<class X, class Y>
template<class DataType >
void Dune::InverseOperator< X, Y >::printOutput ( std::ostream &  s,
const double  iter,
const DataType &  norm 
) const
inlineprotectedinherited

helper function for printing solver output


The documentation for this class was generated from the following file: