dune-istl 2.9.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 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 | |
CGSolver (const 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. | |
CGSolver (const LinearOperator< X, X > &op, const ScalarProduct< X > &sp, Preconditioner< X, X > &prec, scalar_real_type reduction, int maxit, int verbose, bool condition_estimate) | |
Constructor to initialize a CG solver. | |
CGSolver (std::shared_ptr< const 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, bool condition_estimate) | |
Constructor to initialize a CG solver. | |
virtual void | apply (X &x, X &b, InverseOperatorResult &res) |
Apply inverse operator. | |
virtual void | apply (X &x, X &b, double reduction, InverseOperatorResult &res) |
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. | |
virtual SolverCategory::Category | category () const |
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 | |
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 |
Static Protected Attributes | |
static constexpr bool | enableConditionEstimate = (std::is_same_v<field_type,float> || std::is_same_v<field_type,double>) |
conjugate gradient method
|
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 CG solver.
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. |
|
inline |
Constructor to initialize a CG solver.
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. |
|
inline |
Constructor to initialize a CG solver.
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. |
|
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 |
|
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 |
|
pure virtualinherited |
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 |
Implemented in Dune::RestartedGMResSolver< X, Y, F >, and Dune::RestartedFlexibleGMResSolver< X, Y, F >.
|
pure virtualinherited |
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 |
Implemented in Dune::RestartedGMResSolver< X, Y, F >.
|
inlinevirtualinherited |
Category of the solver (see SolverCategory::Category)
Implements Dune::InverseOperator< X, Y >.
|
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 |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
staticconstexprprotected |