1 #ifndef DUNE_FEM_FUNCTION_LOCALFUNCTION_AVERAGE_HH 2 #define DUNE_FEM_FUNCTION_LOCALFUNCTION_AVERAGE_HH 19 template<
class LocalFunction,
class Gr
idPart >
29 template<
class LocalFunction,
class Quadrature >
31 const typename LocalFunction::EntityType::Geometry &geometry,
36 typedef typename RangeType::value_type RangeFieldType;
38 value = RangeType( 0 );
39 RangeFieldType volume( 0 );
40 const int nop = quadrature.
nop();
41 for(
int qp = 0; qp < nop; ++qp )
44 localFunction.
evaluate( quadrature[ qp ], tmp );
45 RangeFieldType weight = quadrature.
weight( qp )*geometry.integrationElement( quadrature.
point( qp ) );
47 value.axpy( weight, tmp );
58 template<
class LocalFunction,
class Gr
idPart,
class DiscreteFunctionSpace >
65 const EntityType &entity = localFunction.
entity();
69 QuadratureType quadrature( entity, localFunction.
order() );
79 template<
class LocalFunction,
class Gr
idPart,
class FunctionSpace,
int order,
template<
class >
class Storage >
88 for(
int i = 0; i < dimRange; ++i )
89 average[ i ] = localFunction[ i ];
99 return applyAffine( localFunction, average );
103 const EntityType &entity = localFunction.
entity();
104 const typename EntityType::Geometry geometry = entity.geometry();
106 if( geometry.affine() )
107 return applyAffine( localFunction, average );
111 QuadratureType quadrature( entity, localFunction.
order() );
121 template<
class LocalFunction,
class Gr
idPart,
class FunctionSpace,
int codim,
template<
class >
class Storage >
136 template<
class LocalFunction,
class Gr
idPart >
145 Impl::apply( localFunction, average );
150 Impl::apply( localFunction, average );
158 #endif // #ifndef DUNE_FEM_FUNCTION_LOCALFUNCTION_AVERAGE_HH Definition: average.hh:59
static double sqrt(const Double &v)
Definition: double.hh:870
Definition: space/finitevolume/declaration.hh:14
Definition: space/discontinuousgalerkin/declaration.hh:15
int nop() const
obtain the number of integration points
Definition: quadrature.hh:226
A vector valued function space.
Definition: functionspace.hh:16
static void applyQuadrature(const LocalFunction &localFunction, const typename LocalFunction::EntityType::Geometry &geometry, const Quadrature &quadrature, typename LocalFunction::RangeType &value)
Definition: average.hh:30
static void apply(const LocalFunction &localFunction, typename LocalFunction::RangeType &average)
Definition: average.hh:143
const FieldType & weight(size_t i) const
obtain weight of i-th integration point
Definition: quadrature.hh:425
static void apply(const LocalFunction &localFunction, typename LocalFunction::RangeType &average)
Definition: average.hh:61
Definition: average.hh:27
GetDiscreteFunctionSpaceType< T, v >::Type Type
Definition: discretefunctionspace.hh:79
quadrature class supporting base function caching
Definition: cachingquadrature.hh:41
static const int dimRange
dimension of the range
Definition: localfunction.hh:83
const BasisFunctionSetType & basisFunctionSet() const
obtain the basis function set for this local function
Definition: localfunction.hh:279
interface for local functions
Definition: localfunction.hh:41
BasisFunctionSetType::EntityType EntityType
type of the entity, the local function lives on is given by the space
Definition: localfunction.hh:59
Definition: coordinate.hh:4
Definition: average.hh:20
const CoordinateType & point(size_t i) const
obtain coordinates of i-th integration point
Definition: quadrature.hh:242
const EntityType & entity() const
obtain the entity, this local function lives on
Definition: localfunction.hh:285
specialize with 'true' if the grid part is cartesian (default=false)
Definition: gridpart/common/capabilities.hh:39
const ReferenceElementType & referenceElement() const
return reference element
void evaluate(const PointType &x, RangeType &ret) const
evaluate the local function
Definition: localfunction.hh:300
static void apply(const LocalFunction &localFunction, typename LocalFunction::RangeType &average)
Definition: average.hh:96
FunctionSpaceType::DomainType DomainType
type of domain vectors, i.e., type of coordinates
Definition: localfunction.hh:69
int order() const
obtain the order of this local function
Definition: localfunction.hh:273
Definition: basisfunctionset/basisfunctionset.hh:31
static void apply(const LocalFunction &localFunction, typename LocalFunction::RangeType &average)
Definition: average.hh:125
FunctionSpaceType::RangeType RangeType
type of range vectors, i.e., type of function values
Definition: localfunction.hh:71
actual interface class for quadratures
Definition: quadrature.hh:320