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 10 #include <dune/fem/operator/matrix/eigenmatrix.hh> 11 12 namespace Dune 13 { 14 15 namespace Fem 16 { 17 18 //! EigenLinearOperator 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 EigenLinearOperatorDune::Fem::EigenLinearOperator34 EigenLinearOperator( const std::string & , 35 const DomainSpaceType &domainSpace, 36 const RangeSpaceType &rangeSpace, 37 const SolverParameter& param = SolverParameter() ) : 38 BaseType( domainSpace, rangeSpace, param ) 39 {} 40 operator ()Dune::Fem::EigenLinearOperator41 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 54