1#ifndef DUNE_FEM_ISTLLINEAROPERATOR_HH
2#define DUNE_FEM_ISTLLINEAROPERATOR_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 operator()(
const DomainFunction &arg, RangeFunction &dest )
const
54 virtual void finalize() { BaseType::compress(); }
59 template<
class DomainFunctionSpace,
class RangeFunctionSpace,
60 class DomainBlock,
class RangeBlock >
61 struct ISTLLinearOperator< ISTLBlockVectorDiscreteFunction< DomainFunctionSpace, DomainBlock >,
62 ISTLBlockVectorDiscreteFunction< RangeFunctionSpace, RangeBlock > >
63 :
public ISTLMatrixObject< DomainFunctionSpace, RangeFunctionSpace, DomainBlock, RangeBlock >,
64 public AssembledOperator< ISTLBlockVectorDiscreteFunction< DomainFunctionSpace, DomainBlock >,
65 ISTLBlockVectorDiscreteFunction< RangeFunctionSpace, RangeBlock > >
67 typedef DomainFunctionSpace DomainSpaceType;
68 typedef RangeFunctionSpace RangeSpaceType;
70 typedef ISTLBlockVectorDiscreteFunction< DomainFunctionSpace, DomainBlock > DomainFunction;
71 typedef ISTLBlockVectorDiscreteFunction< RangeFunctionSpace, RangeBlock > RangeFunction;
73 typedef ISTLLinearOperator< DomainFunction, RangeFunction > ThisType;
74 typedef ISTLMatrixObject< DomainSpaceType, RangeSpaceType, DomainBlock, RangeBlock > BaseType;
76 static constexpr bool assembled =
true;
78 using BaseType::apply;
87 ISTLLinearOperator(
const std::string & ,
88 const DomainSpaceType &domainSpace,
89 const RangeSpaceType &rangeSpace,
90 const ISTLSolverParameter& param = ISTLSolverParameter() )
91 : BaseType( domainSpace, rangeSpace, param )
94 virtual void operator()(
const DomainFunction &arg, RangeFunction &dest )
const
99 virtual void finalize() { BaseType::compress(); }
Definition: bindguard.hh:11