1#ifndef DUNE_FEM_ISTLLINEAROPERATOR_HH
2#define DUNE_FEM_ISTLLINEAROPERATOR_HH
10#include <dune/fem/operator/matrix/istlmatrix.hh>
17 template<
class DomainFunction,
class RangeFunction >
18 struct ISTLLinearOperator;
21 template<
class DomainFunction,
class RangeFunction >
22 struct ISTLLinearOperator
23 :
public ISTLMatrixObject< typename DomainFunction::DiscreteFunctionSpaceType, typename RangeFunction::DiscreteFunctionSpaceType >,
24 public AssembledOperator< DomainFunction, RangeFunction >
26 typedef typename DomainFunction::DiscreteFunctionSpaceType DomainSpaceType;
27 typedef typename RangeFunction::DiscreteFunctionSpaceType RangeSpaceType;
28 typedef ISTLLinearOperator< DomainFunction, RangeFunction > ThisType;
29 typedef ISTLMatrixObject< DomainSpaceType, RangeSpaceType > BaseType;
31 static constexpr bool assembled =
true;
33 using BaseType::apply;
42 ISTLLinearOperator(
const std::string & ,
43 const DomainSpaceType &domainSpace,
44 const RangeSpaceType &rangeSpace,
45 const ISTLSolverParameter& param = ISTLSolverParameter() )
46 : BaseType( domainSpace, rangeSpace, param )
49 virtual void clear() { BaseType::clear(); }
51 virtual void operator()(
const DomainFunction &arg, RangeFunction &dest )
const
56 virtual void finalize() { BaseType::compress(); }
61 template<
class DomainFunctionSpace,
class RangeFunctionSpace,
62 class DomainBlock,
class RangeBlock >
63 struct ISTLLinearOperator< ISTLBlockVectorDiscreteFunction< DomainFunctionSpace, DomainBlock >,
64 ISTLBlockVectorDiscreteFunction< RangeFunctionSpace, RangeBlock > >
65 :
public ISTLMatrixObject< DomainFunctionSpace, RangeFunctionSpace, DomainBlock, RangeBlock >,
66 public AssembledOperator< ISTLBlockVectorDiscreteFunction< DomainFunctionSpace, DomainBlock >,
67 ISTLBlockVectorDiscreteFunction< RangeFunctionSpace, RangeBlock > >
69 typedef DomainFunctionSpace DomainSpaceType;
70 typedef RangeFunctionSpace RangeSpaceType;
72 typedef ISTLBlockVectorDiscreteFunction< DomainFunctionSpace, DomainBlock > DomainFunction;
73 typedef ISTLBlockVectorDiscreteFunction< RangeFunctionSpace, RangeBlock > RangeFunction;
75 typedef ISTLLinearOperator< DomainFunction, RangeFunction > ThisType;
76 typedef ISTLMatrixObject< DomainSpaceType, RangeSpaceType, DomainBlock, RangeBlock > BaseType;
78 static constexpr bool assembled =
true;
80 using BaseType::apply;
89 ISTLLinearOperator(
const std::string & ,
90 const DomainSpaceType &domainSpace,
91 const RangeSpaceType &rangeSpace,
92 const ISTLSolverParameter& param = ISTLSolverParameter() )
93 : BaseType( domainSpace, rangeSpace, param )
96 virtual void clear() { BaseType::clear(); }
98 virtual void operator()(
const DomainFunction &arg, RangeFunction &dest )
const
103 virtual void finalize() { BaseType::compress(); }
Dune namespace.
Definition: alignedallocator.hh:13