|
dune-istl 2.12-git
|
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. | |
| 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 | |
| RestartedFCGSolver (const 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. | |
| RestartedFCGSolver (const LinearOperator< X, X > &op, const ScalarProduct< X > &sp, Preconditioner< X, X > &prec, scalar_real_type reduction, int maxit, int verbose, int mmax=10) | |
| Constructor to initialize a RestartedFCG solver. | |
| RestartedFCGSolver (std::shared_ptr< const LinearOperator< X, X > > op, std::shared_ptr< const 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. | |
| RestartedFCGSolver (std::shared_ptr< const LinearOperator< X, X > > op, std::shared_ptr< Preconditioner< X, X > > prec, const ParameterTree &configuration) | |
| Constructor to initialize a RestartedFCG solver. | |
| RestartedFCGSolver (std::shared_ptr< const LinearOperator< X, X > > op, std::shared_ptr< const ScalarProduct< X > > sp, std::shared_ptr< Preconditioner< X, X > > prec, const ParameterTree &config) | |
| void | apply (X &x, X &b, InverseOperatorResult &res) override |
| Apply inverse operator. | |
| void | apply (X &x, X &b, double reduction, InverseOperatorResult &res) final |
| Apply inverse operator with given reduction factor. | |
| virtual void | apply (X &x, Y &b, InverseOperatorResult &res)=0 |
| Apply inverse operator,. | |
| virtual void | apply (X &x, Y &b, double reduction, InverseOperatorResult &res)=0 |
| apply inverse operator, with given convergence criteria. | |
| SolverCategory::Category | category () const override |
| Category of the solver (see SolverCategory::Category) | |
| std::string | name () const |
Protected Types | |
| using | Iteration = typename IterativeSolver< X, X >::template Iteration< unsigned int > |
| enum | { iterationSpacing = 5 , normSpacing = 16 } |
Protected Member Functions | |
| 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 | _mmax |
| std::shared_ptr< const LinearOperator< X, X > > | _op |
| std::shared_ptr< Preconditioner< X, X > > | _prec |
| std::shared_ptr< const ScalarProduct< X > > | _sp |
| scalar_real_type | _reduction |
| int | _maxit |
| int | _verbose |
| SolverCategory::Category | _category |
Detailed Description
class Dune::RestartedFCGSolver< X >
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.
Member Typedef Documentation
◆ domain_type
|
inherited |
Type of the domain of the operator to be inverted.
◆ field_type
|
inherited |
The field type of the operator.
◆ Iteration
|
protected |
◆ 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
◆ RestartedFCGSolver() [1/5]
|
inline |
Constructor to initialize a RestartedFCG 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
-
mmax is the maximal number of previous vectors which are orthogonalized against the new search direction.
◆ RestartedFCGSolver() [2/5]
|
inline |
Constructor to initialize a RestartedFCG 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
-
mmax is the maximal number of previous vectors which are orthogonalized against the new search direction.
◆ RestartedFCGSolver() [3/5]
|
inline |
Constructor to initialize a RestartedFCG 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
-
mmax is the maximal number of previous vectors which are orthogonalized against the new search direction.
◆ RestartedFCGSolver() [4/5]
|
inline |
Constructor to initialize a RestartedFCG solver.
Constructor.
- Parameters
-
op The operator we solve prec The preconditioner to apply in each iteration of the loop. configuration ParameterTree containing iterative solver parameters.
| ParameterTree Key | Meaning |
|---|---|
| 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 |
See ISTL_Factory for the ParameterTree layout and examples.
Additional parameter:
| ParameterTree Key | Meaning |
|---|---|
| mmax | number of FCG cycles before restart. default=10 |
See ISTL_Factory for the ParameterTree layout and examples.
◆ RestartedFCGSolver() [5/5]
|
inline |
Member Function Documentation
◆ apply() [1/4]
|
inlinefinalinherited |
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
◆ apply() [2/4]
|
inlineoverride |
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 RestartedFCGSolver aborts when a NaN or infinite defect is detected. However, -ffinite-math-only (implied by -ffast-math) can inhibit a result from becoming NaN that really should be NaN. E.g. numeric_limits<double>::quiet_NaN()*0.0==0.0 with gcc-5.3 -ffast-math.
◆ apply() [3/4]
|
pure virtualinherited |
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
Implemented in Dune::Cholmod< Vector, Index >.
◆ apply() [4/4]
|
pure virtualinherited |
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
Implemented in Dune::Cholmod< Vector, Index >, Dune::RestartedGMResSolver< X, Y, F >, and Dune::RestartedFlexibleGMResSolver< X, Y, F >.
◆ category()
|
inlineoverridevirtualinherited |
Category of the solver (see SolverCategory::Category)
Implements Dune::InverseOperator< X, Y >.
◆ 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
Member Data Documentation
◆ _category
|
protectedinherited |
◆ _maxit
|
protectedinherited |
◆ _mmax
|
protected |
◆ _op
|
protectedinherited |
◆ _prec
|
protectedinherited |
◆ _reduction
|
protectedinherited |
◆ _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