Dune Core Modules (2.6.0)
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 X | 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 SimdScalar< real_type > | scalar_real_type |
scalar type underlying the field_type | |
Public Member Functions | |
CGSolver (LinearOperator< X, X > &op, Preconditioner< X, X > &prec, scalar_real_type reduction, int maxit, int verbose, bool condition_estimate) | |
Constructor to initialize a CG solver. More... | |
CGSolver (LinearOperator< X, X > &op, ScalarProduct< X > &sp, Preconditioner< X, X > &prec, scalar_real_type reduction, int maxit, int verbose, bool condition_estimate) | |
Constructor to initialize a CG solver. 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 with given reduction factor. More... | |
virtual SolverCategory::Category | category () const |
Category of the solver (see SolverCategory::Category) | |
Detailed Description
class Dune::CGSolver< X >
conjugate gradient method
Constructor & Destructor Documentation
◆ CGSolver() [1/2]
|
inline |
Constructor to initialize a CG solver.
- Parameters
-
condition_estimate Whether to calculate an estimate of the condition number. The estimate is given in the InverseOperatorResult returned by apply(). This is only supported for float and double field types.
◆ CGSolver() [2/2]
|
inline |
Constructor to initialize a CG solver.
- Parameters
-
condition_estimate Whether to calculate an estimate of the condition number. The estimate is given in the InverseOperatorResult returned by apply(). This is only supported for float and double field types.
Member Function Documentation
◆ apply() [1/2]
|
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
Implements Dune::InverseOperator< X, X >.
◆ apply() [2/2]
|
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 CGSolver 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.
Implements Dune::InverseOperator< X, X >.
References Dune::InverseOperatorResult::clear(), Dune::InverseOperatorResult::conv_rate, Dune::InverseOperatorResult::converged, DUNE_THROW, Dune::Timer::elapsed(), Dune::InverseOperatorResult::elapsed, Dune::Hybrid::ifElse(), Dune::InverseOperatorResult::iterations, Dune::InverseOperator< X, X >::printHeader(), Dune::InverseOperator< X, X >::printOutput(), Dune::InverseOperatorResult::reduction, and Dune::BCRSMatrix< B, A >::row_wise.
The documentation for this class was generated from the following file:
- dune/istl/solvers.hh