dune-istl
2.7.0
|
implements the Flexible Generalized Minimal Residual (FGMRes) method (right preconditioned) More...
#include <dune/istl/solvers.hh>
Public Types | |
typedef X | domain_type |
Type of the domain of the operator to be inverted. More... | |
typedef X | range_type |
Type of the range of the operator to be inverted. More... | |
typedef X::field_type | field_type |
The field type of the operator. More... | |
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) More... | |
typedef Simd::Scalar< real_type > | scalar_real_type |
scalar type underlying the field_type More... | |
Public Member Functions | |
void | apply (X &x, Y &b, double reduction, InverseOperatorResult &res) override |
Apply inverse operator. More... | |
virtual void | apply (X &x, X &b, InverseOperatorResult &res) |
Apply inverse operator. More... | |
virtual void | apply (X &x, X &b, double reduction, InverseOperatorResult &res) |
Apply inverse operator. More... | |
virtual SolverCategory::Category | category () const |
Category of the solver (see SolverCategory::Category) More... | |
std::string | name () const |
Protected Types | |
enum | |
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) |
std::enable_if< std::is_same< field_type, real_type >::value, T >::type | conjugate (const T &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 More... | |
void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm, const DataType &norm_old) const |
helper function for printing solver output More... | |
void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm) const |
helper function for printing solver output More... | |
Protected Attributes | |
int | _restart |
std::shared_ptr< LinearOperator< X, X > > | _op |
std::shared_ptr< Preconditioner< X, X > > | _prec |
std::shared_ptr< ScalarProduct< X > > | _sp |
scalar_real_type | _reduction |
int | _maxit |
int | _verbose |
SolverCategory::Category | _category |
implements the Flexible Generalized Minimal Residual (FGMRes) method (right preconditioned)
FGMRes solves the right-preconditioned unsymmetric linear system Ax = b using the Flexible Generalized Minimal Residual method. It is flexible because the preconditioner can change in every iteration, which allows to use Krylov solvers without fixed number of iterations as preconditioners. Needs more memory than GMRes.
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 |
|
inherited |
Type of the domain of the operator to be inverted.
|
inherited |
The field type of the operator.
|
inherited |
Type of the range of the operator to be inverted.
|
inherited |
The real type of the field type (is the same if using real numbers, but differs for std::complex)
|
inherited |
scalar type underlying the field_type
|
protectedinherited |
|
inlinevirtualinherited |
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. |
SolverAbort | When the solver detects a problem and cannot continue |
Reimplemented from Dune::IterativeSolver< X, X >.
|
inlinevirtualinherited |
Apply inverse operator.
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. |
SolverAbort | When the solver detects a problem and cannot continue |
Implements Dune::InverseOperator< X, X >.
|
inlineoverride |
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. |
SolverAbort | When the solver detects a problem and cannot continue |
|
inlineprotectedinherited |
|
inlinevirtualinherited |
Category of the solver (see SolverCategory::Category)
Implements Dune::InverseOperator< X, X >.
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
inlineinherited |
|
inlineprotectedinherited |
helper function for printing header of solver output
|
inlineprotectedinherited |
helper function for printing solver output
|
inlineprotectedinherited |
helper function for printing solver output
|
inlineprotectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |