dune-istl
2.8.0
|
Accelerated flexible conjugate gradient method. 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 | |
RestartedFCGSolver (LinearOperator< X, X > &op, Preconditioner< X, X > &prec, scalar_real_type reduction, int maxit, int verbose, int mmax=10) | |
Constructor to initialize a RestartedFCG solver. More... | |
RestartedFCGSolver (LinearOperator< X, X > &op, ScalarProduct< X > &sp, Preconditioner< X, X > &prec, scalar_real_type reduction, int maxit, int verbose, int mmax=10) | |
Constructor to initialize a RestartedFCG solver. More... | |
RestartedFCGSolver (std::shared_ptr< LinearOperator< X, X >> op, std::shared_ptr< ScalarProduct< X >> sp, std::shared_ptr< Preconditioner< X, X >> prec, scalar_real_type reduction, int maxit, int verbose, int mmax=10) | |
Constructor to initialize a RestartedFCG solver. More... | |
RestartedFCGSolver (std::shared_ptr< LinearOperator< X, X >> op, std::shared_ptr< Preconditioner< X, X >> prec, const ParameterTree &config) | |
Constructor. More... | |
RestartedFCGSolver (std::shared_ptr< LinearOperator< X, X >> op, std::shared_ptr< ScalarProduct< X >> sp, std::shared_ptr< Preconditioner< X, X >> prec, const ParameterTree &config) | |
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 with given reduction factor. More... | |
virtual SolverCategory::Category | category () const |
Category of the solver (see SolverCategory::Category) More... | |
std::string | name () const |
Protected Types | |
using | Iteration = typename IterativeSolver< X, X >::template Iteration< unsigned int > |
enum | |
Protected Member Functions | |
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 | _mmax |
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 |
Accelerated flexible conjugate gradient method.
Flexible conjugate gradient method as in Y. Notay 'Flexible conjugate Gradients', SIAM J. Sci. Comput Vol. 22, No.4, pp. 1444-1460
This solver discard cyclic all old directions to speed up computing. In exact arithmetic it is exactly the same as the GeneralizedPCGSolver, but it is much faster, depending on the operator and dimension. On the other hand for large mmax it uses noticeably more memory.
|
inherited |
Type of the domain of the operator to be inverted.
|
inherited |
The field type of the operator.
|
protected |
|
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 |
|
inline |
Constructor to initialize a RestartedFCG solver.
mmax | is the maximal number of previous vectors which are orthogonalized against the new search direction. |
|
inline |
Constructor to initialize a RestartedFCG solver.
mmax | is the maximal number of previous vectors which are orthogonalized against the new search direction. |
|
inline |
Constructor to initialize a RestartedFCG solver.
mmax | is the maximal number of previous vectors which are orthogonalized against the new search direction. |
|
inline |
Constructor.
Additional parameter:
ParameterTree Key | Meaning |
---|---|
mmax | number of FCG cycles before restart. default=10 |
See ISTL_Factory for the ParameterTree layout and examples.
|
inline |
|
inlinevirtualinherited |
Apply inverse operator with given reduction factor.
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 |
Implements Dune::InverseOperator< X, X >.
|
inlinevirtual |
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 >.
Reimplemented in Dune::CompleteFCGSolver< X >.
|
inlinevirtualinherited |
Category of the solver (see SolverCategory::Category)
Implements Dune::InverseOperator< X, X >.
|
inlineinherited |
|
inlineprotectedinherited |
helper function for printing header of solver output
|
inlineprotectedinherited |
helper function for printing solver output
|
inlineprotectedinherited |
helper function for printing solver output
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |