1#ifndef DUNE_FEM_L1NORM_HH
2#define DUNE_FEM_L1NORM_HH
17 template<
class Gr
idPart >
30 template<
class Function >
33 template<
class UFunction,
class VFunction >
48 const unsigned int order = 0,
49 const bool communicate =
true );
53 template<
class DiscreteFunctionType,
class PartitionSet >
54 typename Dune::FieldTraits< typename DiscreteFunctionType::RangeFieldType >::real_type
55 norm (
const DiscreteFunctionType &u,
const PartitionSet& partitionSet )
const;
58 template<
class DiscreteFunctionType >
59 typename Dune::FieldTraits< typename DiscreteFunctionType::RangeFieldType >::real_type
60 norm (
const DiscreteFunctionType &u )
const
62 return norm( u, Partitions::interior );
66 template<
class UDiscreteFunctionType,
class VDiscreteFunctionType,
class PartitionSet >
67 typename Dune::FieldTraits< typename UDiscreteFunctionType::RangeFieldType >::real_type
68 distance (
const UDiscreteFunctionType &u,
const VDiscreteFunctionType &v,
const PartitionSet& partitionSet )
const;
71 template<
class UDiscreteFunctionType,
class VDiscreteFunctionType >
72 typename Dune::FieldTraits< typename UDiscreteFunctionType::RangeFieldType >::real_type
73 distance (
const UDiscreteFunctionType &u,
const VDiscreteFunctionType &v )
const
75 return distance( u, v, Partitions::interior );
78 template<
class LocalFunctionType,
class ReturnType >
79 void normLocal (
const EntityType &entity,
unsigned int order,
const LocalFunctionType &uLocal, ReturnType &sum )
const;
81 template<
class ULocalFunctionType,
class VLocalFunctionType,
class ReturnType >
82 void distanceLocal (
const EntityType &entity,
unsigned int order,
const ULocalFunctionType &uLocal,
const VLocalFunctionType &vLocal, ReturnType &sum )
const;
90 template<
class Gr
idPart >
94 communicate_(
BaseType::checkCommunicateFlag( communicate ) )
98 template<
class Gr
idPart >
99 template<
class DiscreteFunctionType,
class PartitionSet >
100 inline typename Dune::FieldTraits< typename DiscreteFunctionType::RangeFieldType >::real_type
103 typedef typename DiscreteFunctionType::RangeFieldType RangeFieldType;
104 typedef typename Dune::FieldTraits< RangeFieldType >::real_type RealType;
105 typedef FieldVector< RealType, 1 > ReturnType ;
108 ReturnType sum = BaseType :: forEach( u, ReturnType(0), partitionSet, order_ );
113 sum[ 0 ] = comm().sum( sum[ 0 ] );
120 template<
class Gr
idPart >
121 template<
class UDiscreteFunctionType,
class VDiscreteFunctionType,
class PartitionSet >
122 inline typename Dune::FieldTraits< typename UDiscreteFunctionType::RangeFieldType >::real_type
124 ::distance (
const UDiscreteFunctionType &u,
const VDiscreteFunctionType &v,
const PartitionSet& partitionSet )
const
126 typedef typename UDiscreteFunctionType::RangeFieldType RangeFieldType;
127 typedef typename Dune::FieldTraits< RangeFieldType >::real_type RealType;
128 typedef FieldVector< RealType, 1 > ReturnType ;
131 ReturnType sum = BaseType :: forEach( u, v, ReturnType(0), partitionSet, order_ );
136 sum[ 0 ] = comm().sum( sum[ 0 ] );
142 template<
class Gr
idPart >
143 template<
class LocalFunctionType,
class ReturnType >
154 template<
class Gr
idPart >
155 template<
class ULocalFunctionType,
class VLocalFunctionType,
class ReturnType >
163 LocalDistanceType dist( uLocal, vLocal );
170 template<
class Gr
idPart >
171 template<
class Function >
177 typedef typename Dune::FieldTraits< RangeFieldType >::real_type
RealType;
181 : function_( function )
184 template<
class Po
int >
188 function_.evaluate( x, phi );
189 ret = phi.one_norm();
193 const FunctionType &function_;
197 template<
class Gr
idPart >
198 template<
class UFunction,
class VFunction >
212 template<
class Po
int >
216 u_.evaluate( x, ret );
217 v_.evaluate( x, phi );
221 template<
class Po
int >
225 u_.jacobian( x, ret );
226 v_.jacobian( x, phi );
231 const UFunctionType &u_;
232 const VFunctionType &v_;
Definition: bindguard.hh:11
Abstract class representing a function.
Definition: common/function.hh:50
FunctionSpaceType::RangeType RangeType
range type
Definition: common/function.hh:68
FunctionSpaceType::RangeFieldType RangeFieldType
field type of range
Definition: common/function.hh:64
Definition: domainintegral.hh:33
GridPartType::template Codim< 0 >::EntityType EntityType
Definition: domainintegral.hh:44
const GridPartType::CollectiveCommunicationType & comm() const
Definition: domainintegral.hh:244
const GridPartType & gridPart() const
Definition: domainintegral.hh:242
Dune::FieldTraits< typenameDiscreteFunctionType::RangeFieldType >::real_type norm(const DiscreteFunctionType &u, const PartitionSet &partitionSet) const
|| u ||_L1 on given set of entities (partition set)
Definition: l1norm.hh:101
void distanceLocal(const EntityType &entity, unsigned int order, const ULocalFunctionType &uLocal, const VLocalFunctionType &vLocal, ReturnType &sum) const
Definition: l1norm.hh:157
BaseType::EntityType EntityType
Definition: l1norm.hh:36
Dune::FieldTraits< typenameUDiscreteFunctionType::RangeFieldType >::real_type distance(const UDiscreteFunctionType &u, const VDiscreteFunctionType &v, const PartitionSet &partitionSet) const
|| u - v ||_L2 on given set of entities (partition set)
Definition: l1norm.hh:124
GridPart GridPartType
Definition: l1norm.hh:24
void normLocal(const EntityType &entity, unsigned int order, const LocalFunctionType &uLocal, ReturnType &sum) const
Definition: l1norm.hh:145
const bool communicate_
Definition: l1norm.hh:40
Dune::FieldTraits< typenameUDiscreteFunctionType::RangeFieldType >::real_type distance(const UDiscreteFunctionType &u, const VDiscreteFunctionType &v) const
|| u - v ||_L2 on interior partition entities
Definition: l1norm.hh:73
L1Norm(const GridPartType &gridPart, const unsigned int order=0, const bool communicate=true)
constructor
Definition: l1norm.hh:91
Dune::FieldTraits< typenameDiscreteFunctionType::RangeFieldType >::real_type norm(const DiscreteFunctionType &u) const
|| u ||_L1 on interior partition entities
Definition: l1norm.hh:60
CachingQuadrature< GridPartType, 0 > QuadratureType
Definition: l1norm.hh:37
const unsigned int order_
Definition: l1norm.hh:39
Definition: l1norm.hh:173
FunctionType::RangeFieldType RangeFieldType
Definition: l1norm.hh:176
Dune::FieldTraits< RangeFieldType >::real_type RealType
Definition: l1norm.hh:177
FieldVector< RealType, 1 > RangeType
Definition: l1norm.hh:178
FunctionAbs(const FunctionType &function)
Definition: l1norm.hh:180
void evaluate(const Point &x, RangeType &ret) const
Definition: l1norm.hh:185
Function FunctionType
Definition: l1norm.hh:174
Definition: l1norm.hh:200
FunctionDistance(const UFunctionType &u, const VFunctionType &v)
Definition: l1norm.hh:208
VFunction VFunctionType
Definition: l1norm.hh:202
UFunction UFunctionType
Definition: l1norm.hh:201
void jacobian(const Point &x, JacobianRangeType &ret) const
Definition: l1norm.hh:222
UFunctionType::JacobianRangeType JacobianRangeType
Definition: l1norm.hh:206
void evaluate(const Point &x, RangeType &ret) const
Definition: l1norm.hh:213
UFunctionType::RangeFieldType RangeFieldType
Definition: l1norm.hh:204
UFunctionType::RangeType RangeType
Definition: l1norm.hh:205
integrator for arbitrary functions providing evaluate
Definition: integrator.hh:28
void integrateAdd(const EntityType &entity, const Function &function, typename Function ::RangeType &ret) const
add the integral over an entity to a variable
Definition: integrator.hh:67