implements the Generalized Minimal Residual (GMRes) method
More...
#include <dune/istl/solvers.hh>
Public Types |
typedef X | domain_type |
| The domain type of the operator to be inverted.
|
typedef Y | range_type |
| The range type of the operator to be inverted.
|
typedef X::field_type | field_type |
| The field type of the operator to be inverted.
|
typedef F | basis_type |
| The field type of the basis vectors.
|
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.
|
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.
|
virtual void | apply (X &x, X &b, InverseOperatorResult &res) |
| Apply inverse operator,.
|
virtual void | apply (X &x, Y &b, double reduction, InverseOperatorResult &res) |
| Apply inverse operator.
|
virtual void | apply (X &x, Y &b, InverseOperatorResult &res)=0 |
| Apply inverse operator,.
|
Protected Member Functions |
void | printHeader (std::ostream &s) const |
| helper function for printing header of solver output
|
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
|
template<class DataType > |
void | printOutput (std::ostream &s, const double iter, const DataType &norm) const |
| helper function for printing solver output
|
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>
The field type of the basis vectors.
template<class X , class Y = X, class F = Y>
The domain type of the operator to be inverted.
template<class X , class Y = X, class F = Y>
The field type of the operator to be inverted.
template<class X , class Y = X, class F = Y>
The range type of the operator to be inverted.
Member Enumeration Documentation
template<class X, class Y>
- Enumerator:
iterationSpacing |
|
normSpacing |
|
Constructor & Destructor Documentation
template<class X , class Y = X, class F = Y>
template<class L , class P >
Set up solver.
Set up Loop solver.
- Parameters
-
op | The operator we solve. |
prec | The preconditioner to apply in each iteration of the loop. Has to inherit from Preconditioner. |
reduction | The relative defect reduction to achieve when applying the operator. |
maxit | The maximum number of iteration steps allowed when applying the operator. |
verbose | The verbosity level. |
Verbose levels are:
-
0 : print nothing
-
1 : print initial and final defect and statistics
-
2 : print line for each iteration
- Parameters
-
restart | number of GMRes cycles before restart |
recalc_defect | recalculate the defect after everey restart or not [default=false] |
References Dune::SolverCategory::sequential.
template<class X , class Y = X, class F = Y>
template<class L , class S , class P >
Set up solver.
Set up loop solver.
- Parameters
-
op | The operator we solve. |
sp | The scalar product to use, e. g. SeqScalarproduct. |
prec | The preconditioner to apply in each iteration of the loop. Has to inherit from Preconditioner. |
reduction | The relative defect reduction to achieve when applying the operator. |
maxit | The maximum number of iteration steps allowed when applying the operator. |
verbose | The verbosity level. |
Verbose levels are:
-
0 : print nothing
-
1 : print initial and final defect and statistics
-
2 : print line for each iteration
- Parameters
-
restart | number of GMRes cycles before restart |
recalc_defect | recalculate the defect after everey restart or not [default=false] |
Member Function Documentation
template<class X, class Y>
template<class X , class Y = X, class F = Y>
Apply inverse operator,.
- Warning
- Note: right hand side b may be overwritten!
- Parameters
-
x | The left hand side to store the result in. |
b | The right hand side |
res | Object to store the statistics about applying the operator. |
template<class X , class Y = X, class F = Y>
Apply inverse operator.
apply inverse operator, with given convergence criteria.
- Warning
- Right hand side b may be overwritten!
- Parameters
-
x | The left hand side to store the result in. |
b | The right hand side |
reduction | The minimum defect reduction to achieve. |
res | Object to store the statistics about applying the operator. |
Implements Dune::InverseOperator< X, Y >.
References Dune::LinearOperator< X, Y >::apply(), Dune::Preconditioner< X, Y >::apply(), Dune::LinearOperator< X, Y >::applyscaleadd(), Dune::InverseOperatorResult::clear(), Dune::InverseOperatorResult::conv_rate, Dune::InverseOperatorResult::converged, Dune::InverseOperatorResult::elapsed, Dune::InverseOperatorResult::iterations, Dune::Preconditioner< X, Y >::post(), Dune::Preconditioner< X, Y >::pre(), Dune::InverseOperator< X, Y >::printHeader(), Dune::InverseOperator< X, Y >::printOutput(), and Dune::InverseOperatorResult::reduction.
template<class X, class Y>
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 |
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: