dune-fem  2.8-git
eigenoperator.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_EIGENOPERATOR_HH
2 #define DUNE_FEM_EIGENOPERATOR_HH
3 
4 #ifdef HAVE_EIGEN
5 
6 // system includes
7 #include <string>
8 
9 // local includes
11 
12 namespace Dune
13 {
14 
15  namespace Fem
16  {
17 
19  template< class DomainFunction, class RangeFunction >
20  struct EigenLinearOperator
21  : public EigenMatrixObject< typename DomainFunction::DiscreteFunctionSpaceType, typename RangeFunction::DiscreteFunctionSpaceType >,
22  public Fem::AssembledOperator< DomainFunction, RangeFunction >
23  {
24  typedef typename DomainFunction::DiscreteFunctionSpaceType DomainSpaceType;
25  typedef typename RangeFunction::DiscreteFunctionSpaceType RangeSpaceType;
26  typedef EigenLinearOperator< DomainFunction, RangeFunction > ThisType;
27  typedef EigenMatrixObject< DomainSpaceType, RangeSpaceType > BaseType;
28 
29  static constexpr bool assembled = true ;
30 
31  using BaseType::apply;
32  using BaseType::exportMatrix;
33 
34  EigenLinearOperator( const std::string & ,
35  const DomainSpaceType &domainSpace,
36  const RangeSpaceType &rangeSpace,
37  const SolverParameter& param = SolverParameter() ) :
38  BaseType( domainSpace, rangeSpace, param )
39  {}
40 
41  virtual void operator()( const DomainFunction &arg, RangeFunction &dest ) const
42  {
43  apply( arg, dest );
44  }
45 
46  };
47  } // namespace Fem
48 
49 } // namespace Dune
50 
51 #endif
52 
53 #endif // #ifndef DUNE_FEM_SPLINEAR_HH
Definition: bindguard.hh:11