1#ifndef DUNE_FEM_SOLVER_PRECONDITIONEDINVERSEOPERATOR_HH
2#define DUNE_FEM_SOLVER_PRECONDITIONEDINVERSEOPERATOR_HH
18 template<
class Preconditioner,
class InverseOperator >
20 :
public Operator< typename Preconditioner::RangeFunctionType >
32 : inverseOperator_( redEps, absLimit, maxIterations, verbose )
36 unsigned int maxIterations = std::numeric_limits< unsigned int >::max() )
37 : inverseOperator_( redEps, absLimit, maxIterations )
41 unsigned int maxIterations,
bool verbose )
42 : inverseOperator_( redEps, absLimit, maxIterations, verbose )
48 unsigned int maxIterations = std::numeric_limits< unsigned int >::max() )
49 : inverseOperator_( redEps, absLimit, maxIterations )
56 preconditioner_.reset(
new Preconditioner( op ) );
57 asssert( preconditioner_ );
58 inverseOperator_.bind( op, *preconditioner_ );
60 void unbind() { inverseOperator_.unbind(); preconditioner_.reset(); }
64 assert( preconditioner_ );
65 inverseOperator_( u, w );
68 unsigned int iterations ()
const {
return inverseOperator_.iterations(); }
69 void setMaxIterations (
unsigned int maxIterations )
const { inverseOperator_.setMaxIterations( maxIterations ); }
72 InverseOperator inverseOperator_;
73 std::unique_ptr< Preconditioner > preconditioner_;
Definition: bindguard.hh:11
abstract operator
Definition: operator.hh:34
DomainFunction DomainFunctionType
type of discrete function in the operator's domain
Definition: operator.hh:36
Definition: preconditionedinverseoperator.hh:21
PreconditionedInverseOperator(double redEps, double absLimit, unsigned int maxIterations=std::numeric_limits< unsigned int >::max())
Definition: preconditionedinverseoperator.hh:35
void operator()(const DomainFunctionType &u, RangeFunctionType &w) const
Definition: preconditionedinverseoperator.hh:62
void setMaxIterations(unsigned int maxIterations) const
Definition: preconditionedinverseoperator.hh:69
BaseType::DomainFunctionType RangeFunctionType
Definition: preconditionedinverseoperator.hh:27
InverseOperator::OperatorType OperatorType
Definition: preconditionedinverseoperator.hh:29
void unbind()
Definition: preconditionedinverseoperator.hh:60
PreconditionedInverseOperator(const OperatorType &op, double redEps, double absLimit, unsigned int maxIterations, bool verbose)
Definition: preconditionedinverseoperator.hh:40
unsigned int iterations() const
Definition: preconditionedinverseoperator.hh:68
PreconditionedInverseOperator(double redEps, double absLimit, unsigned int maxIterations, bool verbose)
Definition: preconditionedinverseoperator.hh:31
void bind(const OperatorType &op)
Definition: preconditionedinverseoperator.hh:54
PreconditionedInverseOperator(const OperatorType &op, double redEps, double absLimit, unsigned int maxIterations=std::numeric_limits< unsigned int >::max())
Definition: preconditionedinverseoperator.hh:47
BaseType::DomainFunctionType DomainFunctionType
Definition: preconditionedinverseoperator.hh:26