1#ifndef DUNE_FEM_OPERATOR_HH
2#define DUNE_FEM_OPERATOR_HH
8#include <dune/common/exceptions.hh>
11#include <dune/common/exceptions.hh>
32 template<
class DomainFunction,
class RangeFunction = DomainFunction >
84 template<
class DomainFunction,
class RangeFunction = DomainFunction >
86 :
public virtual Operator<DomainFunction, RangeFunction>
121 template<
class DomainFunction,
class RangeFunction = DomainFunction >
132 template<
class AssembleOperation >
135 const std::type_index id(
typeid( AssembleOperation ) );
139 DUNE_THROW( InvalidStateException,
"Another assemble operation in progress" );
142 AssembleOperation::begin( *
this );
150 template<
class AssembleOperation >
153 const std::type_index id(
typeid( AssembleOperation ) );
155 DUNE_THROW( InvalidStateException,
"Assemble operation not in progress" );
159 AssembleOperation::end( *
this );
177 using DomainFunctionType_t =
typename T::DomainFunctionType;
180 using RangeFunctionType_t =
typename T::RangeFunctionType;
183 using IsOperatorImpl = std::is_base_of< ::Dune::Fem::Operator< DomainFunctionType_t< T >, RangeFunctionType_t< T > >, T >;
186 using IsLinearOperatorImpl = std::is_base_of< ::Dune::Fem::LinearOperator< DomainFunctionType_t< T >, RangeFunctionType_t< T > >, T >;
189 using IsAssembledOperatorImpl = std::is_base_of< ::Dune::Fem::AssembledOperator< DomainFunctionType_t< T >, RangeFunctionType_t< T > >, T >;
194 using IsOperator = Impl::IsOperatorImpl< std::decay_t< T > >;
224 template <
typename DFieldType,
typename RFieldType,
225 typename DType ,
typename RType>
227 :
public Fem::Mapping < DFieldType, RFieldType, DType, RType >,
234 typedef Fem::Mapping <DFieldType,RFieldType,DType,RType>
MappingType;
243 using BaseType::operator();
Definition: bindguard.hh:11
Impl::IsOperatorImpl< std::decay_t< T > > IsLinearOperator
Definition: operator.hh:197
Impl::IsOperatorImpl< std::decay_t< T > > IsOperator
Definition: operator.hh:194
Impl::IsAssembledOperatorImpl< std::decay_t< T > > IsAssembledOperator
Definition: operator.hh:200
A mapping from one vector space into another This class describes a general mapping from the domain v...
Definition: mapping.hh:47
void operator()(const DomainType &arg, RangeType &dest) const
Application operator that applies all operators in the linear combination stack.
Definition: mapping.hh:112
abstract operator
Definition: operator.hh:34
virtual void finalize()
finalization of operator
Definition: operator.hh:61
DomainFunction DomainFunctionType
type of discrete function in the operator's domain
Definition: operator.hh:36
RangeFunction::RangeFieldType RangeFieldType
field type of the operator's range
Definition: operator.hh:43
virtual void operator()(const DomainFunctionType &u, RangeFunctionType &w) const =0
application operator
virtual ~Operator()
Definition: operator.hh:45
DomainFunction::RangeFieldType DomainFieldType
field type of the operator's domain
Definition: operator.hh:41
RangeFunction RangeFunctionType
type of discrete function in the operator's range
Definition: operator.hh:38
abstract affine-linear operator
Definition: operator.hh:87
virtual bool symmetric() const
Definition: operator.hh:89
virtual bool positiveDefinite() const
Definition: operator.hh:94
abstract matrix operator
Definition: operator.hh:124
virtual void flushAssembly()
commit intermediate states of linear operator assembly
Definition: operator.hh:127
std::type_index assembleOperation_
Definition: operator.hh:165
std::size_t assembleCount_
Definition: operator.hh:166
void beginAssemble()
Initiate the assemble of values using the LocalContribution concept.
Definition: operator.hh:133
void endAssemble()
Finalize the assemble of values using the LocalContribution concept.
Definition: operator.hh:151
An abstract operator Interface class for Operators. Operators are applied to Functions and the result...
Definition: operator.hh:229
virtual void apply(const DomainType &arg, RangeType &dest) const
The method apply calls the application operator. The method has to be implemented here,...
Definition: operator.hh:253
RType RangeType
Definition: operator.hh:239
Fem::Mapping< DFieldType, RFieldType, DType, RType > MappingType
type of mapping base class
Definition: operator.hh:234
RFieldType RangeFieldType
Definition: operator.hh:241
DFieldType DomainFieldType
Definition: operator.hh:240
DType DomainType
Definition: operator.hh:238