1#ifndef DUNE_FEM_MARKING_LOCALERROR_HH
2#define DUNE_FEM_MARKING_LOCALERROR_HH
4#include <dune/common/dynvector.hh>
18 template<
class ErrorFunctional >
23 static_assert( ErrorFunctional::dimRange == 1,
"Error functionals must have dimRange == 1." );
31 typedef typename DiscreteFunctionSpaceType::DomainType
DomainType;
32 typedef typename DiscreteFunctionSpaceType::RangeType
RangeType;
35 typedef typename GridPartType::template Codim< 0 >::EntityType
ElementType;
42 typedef typename GridPartType::template Codim< 0 >::EntityType EntityType;
44 typedef typename DiscreteFunctionSpaceType::FunctionSpaceType FunctionSpaceType;
46 static const int dimDomain = FunctionSpaceType::dimDomain;
47 static const int dimRange = FunctionSpaceType::dimRange;
49 typedef typename FunctionSpaceType::DomainType
DomainType;
50 typedef typename FunctionSpaceType::RangeType
RangeType;
53 LocalOne (
const EntityType &entity,
int order ) : entity_( entity ), order_( order ) {}
55 template<
class Po
int >
56 void evaluate (
const Point &x,
RangeType &value )
const
61 template<
class Quadrature,
class Values >
62 void evaluateQuadrature (
const Quadrature &quadrature, Values &values )
const
64 for(
const auto qp : quadrature )
65 evaluate( qp, values[ qp.index() ] );
68 int order ()
const {
return order_; }
70 const EntityType &entity ()
const {
return entity_; }
73 const EntityType &entity_;
79 : localErrorFunctional_( errorFunctional )
81 localIndicator_.reserve(
space().blockMapper().maxNumDofs() * DiscreteFunctionSpaceType::localBlockSize );
86 localErrorFunctional_.init( element );
87 localIndicator_.resize( localErrorFunctional_.basisFunctionSet().size() );
89 const auto &interpolation =
space().interpolation( element );
90 interpolation( LocalOne( element, localErrorFunctional_.order() ), localIndicator_ );
92 return localErrorFunctional_.localDofVector() * localIndicator_;
99 Dune::DynamicVector< RangeFieldType > localIndicator_;
Definition: bindguard.hh:11
typename Impl::ConstLocalFunction< GridFunction >::Type ConstLocalFunction
Definition: const.hh:604
Definition: localerror.hh:20
DiscreteFunctionSpaceType::RangeType RangeType
Definition: localerror.hh:32
RangeFieldType operator()(const ElementType &element) const
Definition: localerror.hh:84
DiscreteFunctionSpaceType::DomainType DomainType
Definition: localerror.hh:31
LocalFunctionalError(const ErrorFunctionalType &errorFunctional)
Definition: localerror.hh:78
GridPartType::template Codim< 0 >::EntityType ElementType
Definition: localerror.hh:35
const DiscreteFunctionSpaceType & space() const
Definition: localerror.hh:95
ErrorFunctional ErrorFunctionalType
Definition: localerror.hh:26
DiscreteFunctionSpaceType::RangeFieldType RangeFieldType
Definition: localerror.hh:33
ErrorFunctionalType::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
Definition: localerror.hh:28
ConstLocalFunction< ErrorFunctionalType > LocalErrorFunctionalType
Definition: localerror.hh:37
ErrorFunctionalType::GridPartType GridPartType
Definition: localerror.hh:29
actual interface class for quadratures
Definition: quadrature.hh:405