dune-fem 2.8.0
|
Inverse operator base on CG method. Uses a runtime parameter fem.preconditioning which enables diagonal preconditioning if diagonal matrix entries are available, i.e., Op :: assembled is true. More...
#include <dune/fem/solver/cginverseoperator.hh>
Public Types | |
typedef SolverParameter | SolverParameterType |
typedef BaseType::DomainFunctionType | DomainFunctionType |
typedef BaseType::RangeFunctionType | RangeFunctionType |
typedef DomainFunctionType | DestinationType |
typedef Op | OperatorType |
type of operator | |
typedef OperatorType::RangeFieldType | RangeFieldType |
typedef Dune::FieldTraits< RangeFieldType >::real_type | RealType |
typedef Fem::Operator< RangeFunctionType, DomainFunctionType > | PreconditioningType |
typedef Fem::Operator< RangeFunctionType, DomainFunctionType > | PreconditionerType |
typedef DomainFunction::RangeFieldType | DomainFieldType |
field type of the operator's domain | |
Public Member Functions | |
CGInverseOperator (const SolverParameter ¶m=SolverParameter(Parameter::container())) | |
CGInverseOperator (RealType redEps, RealType absLimit, unsigned int maxIter, bool verbose, const ParameterReader ¶meter=Parameter::container()) | |
constructor of CGInverseOperator | |
CGInverseOperator (RealType redEps, RealType absLimit, unsigned int maxIter, const ParameterReader ¶meter=Parameter::container()) | |
constructor of CGInverseOperator | |
CGInverseOperator (RealType redEps, RealType absLimit, const ParameterReader ¶meter=Parameter::container()) | |
template<class LinearOperator , std::enable_if_t< std::is_base_of< OperatorType, LinearOperator >::value, int > = 0> | |
CGInverseOperator (const LinearOperator &op, RealType redEps, RealType absLimit, unsigned int maxIter, bool verbose, const ParameterReader ¶meter=Parameter::container()) | |
constructor of CGInverseOperator | |
template<class LinearOperator , std::enable_if_t< std::is_base_of< OperatorType, LinearOperator >::value, int > = 0> | |
CGInverseOperator (const LinearOperator &op, RealType redEps, RealType absLimit, unsigned int maxIter, const ParameterReader ¶meter=Parameter::container()) | |
constructor of CGInverseOperator | |
template<class LinearOperator , std::enable_if_t< std::is_base_of< OperatorType, LinearOperator >::value, int > = 0> | |
CGInverseOperator (const LinearOperator &op, RealType redEps, RealType absLimit, const ParameterReader ¶meter=Parameter::container()) | |
CGInverseOperator (const OperatorType &op, const PreconditioningType &precond, RealType redEps, RealType absLimit, unsigned int maxIter, bool verbose, const ParameterReader ¶meter=Parameter::container()) | |
constructor of CGInverseOperator | |
CGInverseOperator (const OperatorType &op, const PreconditioningType &precond, RealType redEps, RealType absLimit, unsigned int maxIter, const ParameterReader ¶meter=Parameter::container()) | |
constructor of CGInverseOperator | |
CGInverseOperator (const OperatorType &op, const PreconditioningType &precond, RealType redEps, RealType absLimit, const ParameterReader ¶meter=Parameter::container()) | |
template<class LinearOperator , std::enable_if_t< std::is_base_of< OperatorType, LinearOperator >::value, int > = 0> | |
void | bind (const LinearOperator &op) |
void | unbind () |
void | bind (const OperatorType &op) |
void | bind (const OperatorType &op, const PreconditionerType &precond) |
virtual void | operator() (const DomainFunctionType &arg, RangeFunctionType &dest) const |
application operator | |
template<typename... A> | |
void | prepare (A...) const |
virtual void | apply (const DomainFunctionType &arg, RangeFunctionType &dest) const |
application operator | |
unsigned int | iterations () const |
number of iterations needed for last solve | |
void | setMaxIterations (unsigned int maxIter) |
double | averageCommTime () const |
return average communication time during last solve | |
virtual void | finalize () |
finalization of operator | |
Protected Member Functions | |
template<class LinearOperator > | |
void | checkPreconditioning (const LinearOperator &linearOp) |
Protected Attributes | |
std::unique_ptr< PreconditioningType > | precondObj_ |
const PreconditionerType * | preconditioner_ |
SolverParameter | parameter_ |
const OperatorType * | operator_ = nullptr |
SolverType | solver_ |
Inverse operator base on CG method. Uses a runtime parameter fem.preconditioning which enables diagonal preconditioning if diagonal matrix entries are available, i.e., Op :: assembled is true.
typedef DomainFunctionType Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::DestinationType |
|
inherited |
field type of the operator's domain
typedef BaseType::DomainFunctionType Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::DomainFunctionType |
typedef Op Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::OperatorType |
type of operator
|
inherited |
typedef Fem::Operator< RangeFunctionType,DomainFunctionType > Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::PreconditioningType |
typedef OperatorType::RangeFieldType Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::RangeFieldType |
typedef BaseType::RangeFunctionType Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::RangeFunctionType |
typedef Dune::FieldTraits<RangeFieldType>::real_type Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::RealType |
typedef SolverParameter Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::SolverParameterType |
|
inline |
|
inline |
constructor of CGInverseOperator
[in] | redEps | reduction epsilon |
[in] | absLimit | absolut limit of residual |
[in] | maxIter | maximum number of iteration steps |
[in] | verbose | verbosity |
|
inline |
constructor of CGInverseOperator
[in] | redEps | reduction epsilon |
[in] | absLimit | absolut limit of residual |
[in] | maxIter | maximum number of iteration steps |
|
inline |
|
inline |
constructor of CGInverseOperator
[in] | op | operator to invert |
[in] | redEps | reduction epsilon |
[in] | absLimit | absolut limit of residual |
[in] | maxIter | maximum number of iteration steps |
[in] | verbose | verbosity |
|
inline |
constructor of CGInverseOperator
[in] | op | operator to invert |
[in] | redEps | reduction epsilon |
[in] | absLimit | absolut limit of residual |
[in] | maxIter | maximum number of iteration steps |
|
inline |
|
inline |
constructor of CGInverseOperator
[in] | op | operator to invert |
[in] | precond | precondition operator |
[in] | redEps | reduction epsilon |
[in] | absLimit | absolut limit of residual |
[in] | maxIter | maximum number of iteration steps |
|
inline |
constructor of CGInverseOperator
[in] | op | operator to invert |
[in] | precond | precondition operator |
[in] | redEps | reduction epsilon |
[in] | absLimit | absolut limit of residual |
[in] | maxIter | maximum number of iteration steps |
|
inline |
|
inlinevirtualinherited |
application operator
The application operator actually solves the linear system
[in] | arg | argument discrete function |
[out] | dest | destination discrete function |
|
inlineinherited |
return average communication time during last solve
|
inline |
|
inlineinherited |
|
inlineinherited |
|
inlineprotected |
|
inlinevirtualinherited |
finalization of operator
|
inlineinherited |
number of iterations needed for last solve
|
inlinevirtualinherited |
application operator
The application operator actually solves the linear system
[in] | arg | argument discrete function |
[out] | dest | destination discrete function |
Implements Dune::Fem::Operator< DiscreteFunction, DiscreteFunction >.
|
inlineinherited |
|
inlineinherited |
|
inline |
|
protectedinherited |
|
protected |
|
protected |
|
protected |
|
protectedinherited |