|
dune-istl
2.2.0
|
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) |
| 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 Types | |
| enum | { iterationSpacing = 5, normSpacing = 16 } |
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 | |
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).
| typedef F Dune::RestartedGMResSolver< X, Y, F >::basis_type |
The field type of the basis vectors.
| typedef X Dune::RestartedGMResSolver< X, Y, F >::domain_type |
The domain type of the operator to be inverted.
Reimplemented from Dune::InverseOperator< X, Y >.
| typedef X::field_type Dune::RestartedGMResSolver< X, Y, F >::field_type |
The field type of the operator to be inverted.
Reimplemented from Dune::InverseOperator< X, Y >.
| typedef Y Dune::RestartedGMResSolver< X, Y, F >::range_type |
The range type of the operator to be inverted.
Reimplemented from Dune::InverseOperator< X, Y >.
anonymous enum [protected, inherited] |
| 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.
| 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:
| restart | number of GMRes cycles before restart |
| recalc_defect | recalculate the defect after everey restart or not [default=false] |
References Dune::SolverCategory::sequential.
| 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.
| 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:
| restart | number of GMRes cycles before restart |
| recalc_defect | recalculate the defect after everey restart or not [default=false] |
| virtual void Dune::InverseOperator< X, Y >::apply | ( | X & | x, |
| Y & | b, | ||
| InverseOperatorResult & | res | ||
| ) | [pure virtual, inherited] |
Apply inverse operator,.
| 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. |
Implemented in Dune::MINRESSolver< X >, Dune::BiCGSTABSolver< X >, Dune::CGSolver< X >, Dune::GradientSolver< X >, and Dune::LoopSolver< X >.
Referenced by Dune::Amg::KAmgTwoGrid< Amg >::apply().
| virtual void Dune::RestartedGMResSolver< X, Y, F >::apply | ( | X & | x, |
| X & | b, | ||
| InverseOperatorResult & | res | ||
| ) | [inline, virtual] |
Apply inverse operator,.
| 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. |
| virtual void Dune::RestartedGMResSolver< X, Y, F >::apply | ( | X & | x, |
| Y & | b, | ||
| double | reduction, | ||
| InverseOperatorResult & | res | ||
| ) | [inline, virtual] |
Apply inverse operator.
apply inverse operator, with given convergence criteria.
| 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.
| void Dune::InverseOperator< X, Y >::printHeader | ( | std::ostream & | s | ) | const [inline, protected, inherited] |
helper function for printing header of solver output
Referenced by Dune::RestartedGMResSolver< X, Y, F >::apply().
| void Dune::InverseOperator< X, Y >::printOutput | ( | std::ostream & | s, |
| const double | iter, | ||
| const DataType & | norm, | ||
| const DataType & | norm_old | ||
| ) | const [inline, protected, inherited] |
helper function for printing solver output
Referenced by Dune::RestartedGMResSolver< X, Y, F >::apply().
| void Dune::InverseOperator< X, Y >::printOutput | ( | std::ostream & | s, |
| const double | iter, | ||
| const DataType & | norm | ||
| ) | const [inline, protected, inherited] |
helper function for printing solver output
1.7.6.1