|
dune-istl 2.8.0
|
implements the Generalized Minimal Residual (GMRes) method More...
#include <dune/istl/solvers.hh>

Public Types | |
| typedef X | domain_type |
| Type of the domain of the operator to be inverted. | |
| typedef Y | range_type |
| Type of the range of the operator to be inverted. | |
| typedef X::field_type | field_type |
| The field type of the operator. | |
| typedef FieldTraits< field_type >::real_type | real_type |
| The real type of the field type (is the same if using real numbers, but differs for std::complex) | |
| typedef Simd::Scalar< real_type > | scalar_real_type |
| scalar type underlying the field_type | |
Public Member Functions | |
| RestartedGMResSolver (LinearOperator< X, Y > &op, Preconditioner< X, Y > &prec, scalar_real_type reduction, int restart, int maxit, int verbose) | |
| Set up RestartedGMResSolver solver. | |
| RestartedGMResSolver (LinearOperator< X, Y > &op, ScalarProduct< X > &sp, Preconditioner< X, Y > &prec, scalar_real_type reduction, int restart, int maxit, int verbose) | |
| Set up RestartedGMResSolver solver. | |
| RestartedGMResSolver (std::shared_ptr< LinearOperator< X, Y > > op, std::shared_ptr< Preconditioner< X, X > > prec, const ParameterTree &configuration) | |
| Constructor. | |
| RestartedGMResSolver (std::shared_ptr< LinearOperator< X, Y > > op, std::shared_ptr< ScalarProduct< X > > sp, std::shared_ptr< Preconditioner< X, X > > prec, const ParameterTree &configuration) | |
| RestartedGMResSolver (std::shared_ptr< LinearOperator< X, Y > > op, std::shared_ptr< ScalarProduct< X > > sp, std::shared_ptr< Preconditioner< X, Y > > prec, scalar_real_type reduction, int restart, int maxit, int verbose) | |
| Set up RestartedGMResSolver solver. | |
| virtual void | apply (X &x, Y &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, X &b, double reduction, InverseOperatorResult &res) |
| Apply inverse operator with given reduction factor. | |
| virtual SolverCategory::Category | category () const |
| Category of the solver (see SolverCategory::Category) | |
| std::string | name () const |
Protected Types | |
| using | fAlloc = ReboundAllocatorType< X, field_type > |
| field_type Allocator retrieved from domain type | |
| using | rAlloc = ReboundAllocatorType< X, real_type > |
| real_type Allocator retrieved from domain type | |
| using | Iteration = typename IterativeSolver< X, X >::template Iteration< unsigned int > |
| enum | { iterationSpacing = 5 , normSpacing = 16 } |
Protected Member Functions | |
| void | update (X &w, int i, const std::vector< std::vector< field_type, fAlloc > > &H, const std::vector< field_type, fAlloc > &s, const std::vector< X > &v) |
| template<typename T > | |
| std::enable_if< std::is_same< field_type, real_type >::value, T >::type | conjugate (const T &t) |
| template<typename T > | |
| std::enable_if<!std::is_same< field_type, real_type >::value, T >::type | conjugate (const T &t) |
| void | generatePlaneRotation (field_type &dx, field_type &dy, real_type &cs, field_type &sn) |
| void | applyPlaneRotation (field_type &dx, field_type &dy, real_type &cs, field_type &sn) |
| void | printHeader (std::ostream &s) const |
| helper function for printing header of solver output | |
| template<typename CountType , typename DataType > | |
| void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm, const DataType &norm_old) const |
| helper function for printing solver output | |
| template<typename CountType , typename DataType > | |
| void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm) const |
| helper function for printing solver output | |
Protected Attributes | |
| int | _restart |
| std::shared_ptr< LinearOperator< X, Y > > | _op |
| std::shared_ptr< Preconditioner< X, Y > > | _prec |
| std::shared_ptr< ScalarProduct< X > > | _sp |
| scalar_real_type | _reduction |
| int | _maxit |
| int | _verbose |
| SolverCategory::Category | _category |
Detailed Description
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).
- Template Parameters
-
X trial vector, vector type of the solution Y test vector, vector type of the RHS F vector type for orthonormal basis of Krylov space
Member Typedef Documentation
◆ domain_type
|
inherited |
Type of the domain of the operator to be inverted.
◆ fAlloc
|
protected |
field_type Allocator retrieved from domain type
◆ field_type
|
inherited |
The field type of the operator.
◆ Iteration
|
protected |
◆ rAlloc
|
protected |
real_type Allocator retrieved from domain type
◆ range_type
|
inherited |
Type of the range of the operator to be inverted.
◆ real_type
|
inherited |
The real type of the field type (is the same if using real numbers, but differs for std::complex)
◆ scalar_real_type
|
inherited |
scalar type underlying the field_type
Member Enumeration Documentation
◆ anonymous enum
|
protectedinherited |
Constructor & Destructor Documentation
◆ RestartedGMResSolver() [1/5]
|
inline |
Set up RestartedGMResSolver solver.
- Parameters
-
restart number of GMRes cycles before restart
◆ RestartedGMResSolver() [2/5]
|
inline |
Set up RestartedGMResSolver solver.
- Parameters
-
restart number of GMRes cycles before restart
◆ RestartedGMResSolver() [3/5]
|
inline |
Constructor.
Additional parameter:
| ParameterTree Key | Meaning |
|---|---|
| restart | number of GMRes cycles before restart |
See ISTL_Factory for the ParameterTree layout and examples.
◆ RestartedGMResSolver() [4/5]
|
inline |
◆ RestartedGMResSolver() [5/5]
|
inline |
Set up RestartedGMResSolver solver.
- Parameters
-
restart number of GMRes cycles before restart
Member Function Documentation
◆ apply() [1/3]
|
inlinevirtualinherited |
Apply inverse operator with given reduction factor.
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.
- Exceptions
-
SolverAbort When the solver detects a problem and cannot continue
Reimplemented in Dune::RestartedGMResSolver< X, X >.
◆ apply() [2/3]
|
inlinevirtual |
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.
- Exceptions
-
SolverAbort When the solver detects a problem and cannot continue
- Note
- Currently, the RestartedGMResSolver aborts when it detects a breakdown.
Implements Dune::InverseOperator< X, Y >.
Reimplemented in Dune::RestartedFlexibleGMResSolver< X, Y, F >.
◆ apply() [3/3]
|
inlinevirtual |
Apply inverse operator.
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.
- Exceptions
-
SolverAbort When the solver detects a problem and cannot continue
- Note
- Currently, the RestartedGMResSolver aborts when it detects a breakdown.
Implements Dune::InverseOperator< X, Y >.
◆ applyPlaneRotation()
|
inlineprotected |
◆ category()
|
inlinevirtualinherited |
Category of the solver (see SolverCategory::Category)
Implements Dune::InverseOperator< X, Y >.
◆ conjugate() [1/2]
|
inlineprotected |
◆ conjugate() [2/2]
|
inlineprotected |
◆ generatePlaneRotation()
|
inlineprotected |
◆ name()
|
inlineinherited |
◆ printHeader()
|
inlineprotectedinherited |
helper function for printing header of solver output
◆ printOutput() [1/2]
|
inlineprotectedinherited |
helper function for printing solver output
◆ printOutput() [2/2]
|
inlineprotectedinherited |
helper function for printing solver output
◆ update()
|
inlineprotected |
Member Data Documentation
◆ _category
|
protectedinherited |
◆ _maxit
|
protectedinherited |
◆ _op
|
protectedinherited |
◆ _prec
|
protectedinherited |
◆ _reduction
|
protectedinherited |
◆ _restart
|
protected |
◆ _sp
|
protectedinherited |
◆ _verbose
|
protectedinherited |
The documentation for this class was generated from the following file:
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8