1#ifndef DUNE_FEM_OPERATOR_PROJECTION_LOCAL_L2PROJECTION_HH
2#define DUNE_FEM_OPERATOR_PROJECTION_LOCAL_L2PROJECTION_HH
9#include <dune/common/dynvector.hh>
10#include <dune/common/bartonnackmanifcheck.hh>
27 template<
class BasisFunctionSet,
class Implementation >
68 return impl().basisFunctionSet();
79 template<
class LocalFunction,
class LocalDofVector >
93 template<
class LocalFunction,
class LocalDofVector >
103 const Implementation &
impl ()
const
105 return static_cast< const Implementation &
>( *this );
114 template<
class LocalRieszProjection,
class Quadrature >
116 :
public LocalL2Projection< typename LocalRieszProjection::BasisFunctionSetType, DefaultLocalL2Projection< LocalRieszProjection, Quadrature > >
129 typedef typename RangeType::value_type RangeFieldType;
136 template<
class... Args >
138 : rieszProjection_(
std::forward< Args >( args )... )
158 : rieszProjection_(
std::move( other.rieszProjection_ ) )
165 rieszProjection_ = std::move( other.rieszProjection_ );
185 template<
class LocalFunction,
class LocalDofVector >
188 static_assert( std::is_same< RangeType, typename LocalFunction::RangeType >::value,
189 "RangeType and LocalFunction::RangeType have to be the same type" );
195 f_ =
static_cast< RangeFieldType
>( 0 );
198 const std::size_t nop = quadrature.
nop();
199 for( std::size_t qp = 0; qp < nop; ++qp )
203 value *= quadrature.
weight( qp )*geometry.integrationElement( quadrature.
point( qp ) );
212 mutable Dune::DynamicVector< RangeFieldType > f_;
Definition: bindguard.hh:11
static GridFunctionView< GF > localFunction(const GF &gf)
Definition: gridfunctionview.hh:118
IteratorRange< typename DF::DofIteratorType > dofs(DF &df)
Iterates over all DOFs.
Definition: rangegenerators.hh:76
interface for local functions
Definition: localfunction.hh:77
please doc me
Definition: l2projection.hh:29
void operator()(const LocalFunction &localFunction, LocalDofVector &localDofVector) const
please doc me
Definition: l2projection.hh:80
const Implementation & impl() const
Definition: l2projection.hh:103
LocalL2Projection(LocalL2Projection &&)
move constructor
Definition: l2projection.hh:49
void apply(const LocalFunction &localFunction, LocalDofVector &localDofVector) const
please doc me
Definition: l2projection.hh:94
BasisFunctionSet basisFunctionSet() const
return basis function set
Definition: l2projection.hh:65
LocalL2Projection(const LocalL2Projection &)=default
copy constructor
BasisFunctionSet BasisFunctionSetType
basis function set type
Definition: l2projection.hh:32
LocalL2Projection & operator=(const LocalL2Projection &)=default
assignment operator
Definition: l2projection.hh:117
DefaultLocalL2Projection & operator=(const ThisType &)=default
void apply(const LocalFunction &localFunction, LocalDofVector &dofs) const
please doc me
Definition: l2projection.hh:186
DefaultLocalL2Projection(const ThisType &)=default
DefaultLocalL2Projection(ThisType &&other)
Definition: l2projection.hh:157
LocalRieszProjection LocalRieszProjectionType
type of local Riesz type
Definition: l2projection.hh:123
void unbind()
Definition: l2projection.hh:176
DefaultLocalL2Projection(Args &&... args)
Definition: l2projection.hh:137
BaseType::BasisFunctionSetType BasisFunctionSetType
basis function set type
Definition: l2projection.hh:125
BasisFunctionSetType basisFunctionSet() const
return basis function set
Definition: l2projection.hh:179
interface documentation of a local Riesz projection
Definition: localrieszprojection.hh:23
BasisFunctionSet basisFunctionSet() const
return basis function set
Definition: localrieszprojection.hh:58
void apply(const F &f, LocalDofVector &localDofVector) const
compute Riesz representation
Definition: localrieszprojection.hh:85
int nop() const
obtain the number of integration points
Definition: quadrature.hh:295
const CoordinateType & point(size_t i) const
obtain coordinates of i-th integration point
Definition: quadrature.hh:311
actual interface class for quadratures
Definition: quadrature.hh:405
const FieldType & weight(size_t i) const
obtain weight of i-th integration point
Definition: quadrature.hh:527
Interface class for basis function sets.
Definition: basisfunctionset/basisfunctionset.hh:31
const EntityType & entity() const
return entity
void axpy(const Quadrature &quad, const Vector &values, DofVector &dofs) const
evaluate all basis function and multiply with given values and add to dofs
std::size_t size() const
return size of basis function set
int order() const
return order of basis function set
FunctionSpaceType::RangeType RangeType
range type
Definition: basisfunctionset/basisfunctionset.hh:44