dune-fem  2.4.1-rc
preconditionedinverseoperator.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_SOLVER_PRECONDITIONEDINVERSEOPERATOR_HH
2 #define DUNE_FEM_SOLVER_PRECONDITIONEDINVERSEOPERATOR_HH
3 
4 #include <limits>
5 
7 
8 namespace Dune
9 {
10 
11  namespace Fem
12  {
13 
14  // PreconditionedInverseOperator
15  // -----------------------------
16 
17  template< class Preconditioner, class InverseOperator >
19  : public Operator< typename Preconditioner::RangeFunctionType >
20  {
23 
24  public:
27 
28  typedef typename InverseOperator::OperatorType OperatorType;
29 
30  PreconditionedInverseOperator ( const OperatorType &op, double redEps, double absLimit,
31  unsigned int maxIterations, bool verbose )
32  : preconditioner_( op ),
33  inverseOperator_( op, preconditioner_, redEps, absLimit, maxIterations, verbose )
34  {}
35 
36  PreconditionedInverseOperator ( const OperatorType &op, double redEps, double absLimit,
37  unsigned int maxIterations = std::numeric_limits< unsigned int >::max() )
38  : preconditioner_( op ),
39  inverseOperator_( op, preconditioner_, redEps, absLimit, maxIterations )
40  {}
41 
42  void operator() ( const DomainFunctionType &u, RangeFunctionType &w ) const
43  {
44  inverseOperator_( u, w );
45  }
46 
47  unsigned int iterations () const { return inverseOperator_.iterations(); }
48 
49  private:
50  Preconditioner preconditioner_;
51  InverseOperator inverseOperator_;
52  };
53 
54  } // namespace Fem
55 
56 } // namespace Dune
57 
58 #endif // #ifndef DUNE_FEM_SOLVER_PRECONDITIONEDINVERSEOPERATOR_HH
Definition: preconditionedinverseoperator.hh:18
unsigned int iterations() const
Definition: preconditionedinverseoperator.hh:47
InverseOperator::OperatorType OperatorType
Definition: preconditionedinverseoperator.hh:28
BaseType::DomainFunctionType RangeFunctionType
Definition: preconditionedinverseoperator.hh:26
static constexpr T max(T a)
Definition: utility.hh:65
PreconditionedInverseOperator(const OperatorType &op, double redEps, double absLimit, unsigned int maxIterations=std::numeric_limits< unsigned int >::max())
Definition: preconditionedinverseoperator.hh:36
abstract operator
Definition: operator.hh:25
Definition: coordinate.hh:4
void operator()(const DomainFunctionType &u, RangeFunctionType &w) const
Definition: preconditionedinverseoperator.hh:42
PreconditionedInverseOperator(const OperatorType &op, double redEps, double absLimit, unsigned int maxIterations, bool verbose)
Definition: preconditionedinverseoperator.hh:30
BaseType::DomainFunctionType DomainFunctionType
Definition: preconditionedinverseoperator.hh:25
DomainFunction DomainFunctionType
type of discrete function in the operator&#39;s domain
Definition: operator.hh:28