1 #ifndef DUNE_FEM_L2NORM_HH 2 #define DUNE_FEM_L2NORM_HH 18 template<
class Gr
idPart >
30 template<
class Function >
33 template<
class UFunction,
class VFunction >
34 struct FunctionDistance;
43 explicit L2Norm (
const GridPartType &
gridPart,
const unsigned int order = 0 );
45 template<
class DiscreteFunctionType >
46 typename Dune::FieldTraits< typename DiscreteFunctionType::RangeFieldType >::real_type
47 norm (
const DiscreteFunctionType &u )
const;
49 template<
class UDiscreteFunctionType,
class VDiscreteFunctionType >
50 typename Dune::FieldTraits< typename UDiscreteFunctionType::RangeFieldType >::real_type
51 distance (
const UDiscreteFunctionType &u,
const VDiscreteFunctionType &v )
const;
53 template<
class ULocalFunctionType,
class VLocalFunctionType,
class ReturnType >
54 void distanceLocal (
const EntityType &entity,
unsigned int order,
const ULocalFunctionType &uLocal,
const VLocalFunctionType &vLocal, ReturnType &
sum )
const;
56 template<
class LocalFunctionType,
class ReturnType >
57 void normLocal (
const EntityType &entity,
unsigned int order,
const LocalFunctionType &uLocal, ReturnType &
sum )
const;
64 template<
class Gr
idPart >
71 template<
class Gr
idPart >
72 template<
class DiscreteFunctionType >
73 typename Dune::FieldTraits< typename DiscreteFunctionType::RangeFieldType >::real_type
76 typedef typename Dune::FieldTraits< typename DiscreteFunctionType::RangeFieldType >::real_type RealType;
77 typedef FieldVector< RealType, 1 > ReturnType ;
87 template<
class Gr
idPart >
88 template<
class UDiscreteFunctionType,
class VDiscreteFunctionType >
89 typename Dune::FieldTraits< typename UDiscreteFunctionType::RangeFieldType >::real_type
91 ::distance (
const UDiscreteFunctionType &u,
const VDiscreteFunctionType &v )
const 93 typedef typename Dune::FieldTraits< typename UDiscreteFunctionType::RangeFieldType >::real_type RealType;
94 typedef FieldVector< RealType, 1 > ReturnType ;
103 template<
class Gr
idPart >
104 template<
class LocalFunctionType,
class ReturnType >
115 template<
class Gr
idPart >
116 template<
class ULocalFunctionType,
class VLocalFunctionType,
class ReturnType >
125 LocalDistanceType dist( uLocal, vLocal );
132 template<
class Gr
idPart >
133 template<
class Function >
139 typedef typename Dune::FieldTraits< RangeFieldType >::real_type
RealType;
143 : function_( function )
146 template<
class Po
int >
147 void evaluate (
const Point &x, RangeType &ret )
const 150 function_.evaluate( x, phi );
151 ret = phi.two_norm2();
155 const FunctionType &function_;
159 template<
class Gr
idPart >
160 template<
class UFunction,
class VFunction >
174 template<
class Po
int >
175 void evaluate (
const Point &x, RangeType &ret )
const 178 u_.evaluate( x, ret );
179 v_.evaluate( x, phi );
183 template<
class Po
int >
184 void jacobian (
const Point &x, JacobianRangeType &ret )
const 186 JacobianRangeType phi;
187 u_.jacobian( x, ret );
188 v_.jacobian( x, phi );
193 const UFunctionType &u_;
194 const VFunctionType &v_;
202 template<
class WeightFunction >
204 :
public L2Norm< typename WeightFunction::DiscreteFunctionSpaceType::GridPartType >
216 template<
class Function >
230 using BaseType::norm;
231 using BaseType::distance;
233 explicit WeightedL2Norm (
const WeightFunctionType &weightFunction,
const unsigned int order = 0 );
235 template<
class LocalFunctionType,
class ReturnType >
236 void normLocal (
const EntityType &entity,
unsigned int order,
const LocalFunctionType &uLocal, ReturnType &
sum )
const;
238 template<
class ULocalFunctionType,
class VLocalFunctionType,
class ReturnType >
239 void distanceLocal (
const EntityType &entity,
unsigned int order,
const ULocalFunctionType &uLocal,
const VLocalFunctionType &vLocal, ReturnType &
sum )
const;
242 const WeightFunctionType &weightFunction_;
251 template<
class WeightFunction >
255 weightFunction_( weightFunction )
257 static_assert( (WeightFunctionSpaceType::dimRange == 1),
258 "Wight function must be scalar." );
262 template<
class WeightFunction >
263 template<
class LocalFunctionType,
class ReturnType >
278 template<
class WeightFunction >
279 template<
class ULocalFunctionType,
class VLocalFunctionType,
class ReturnType >
283 typedef typename BaseType::template FunctionDistance< ULocalFunctionType, VLocalFunctionType > LocalDistanceType;
290 LocalDistanceType dist( uLocal, vLocal );
297 template<
class WeightFunction >
298 template<
class Function >
304 typedef typename Dune::FieldTraits< RangeFieldType >::real_type
RealType;
308 const FunctionType &
function )
309 : weightFunction_( weightFunction ),
310 function_( function )
313 template<
class Po
int >
314 void evaluate (
const Point &x, RangeType &ret )
const 317 weightFunction_.evaluate( x, weight );
320 function_.evaluate( x, phi );
321 ret = weight[ 0 ] * (phi * phi);
326 const FunctionType &function_;
333 #endif // #ifndef DUNE_FEM_L2NORM_HH FunctionSquare(const FunctionType &function)
Definition: l2norm.hh:142
static double sqrt(const Double &v)
Definition: double.hh:870
BaseType::IntegratorType IntegratorType
Definition: l2norm.hh:223
WeightFunction WeightFunctionType
Definition: l2norm.hh:210
FunctionType::RangeFieldType RangeFieldType
Definition: l2norm.hh:303
WeightFunctionType::LocalFunctionType LocalWeightFunctionType
Definition: l2norm.hh:217
UFunction UFunctionType
Definition: l2norm.hh:163
UFunctionType::RangeType RangeType
Definition: l2norm.hh:167
FunctionType::RangeFieldType RangeFieldType
Definition: l2norm.hh:138
BaseType::EntityType EntityType
Definition: l2norm.hh:222
void evaluate(const Point &x, RangeType &ret) const
Definition: l2norm.hh:175
UFunctionType::RangeFieldType RangeFieldType
Definition: l2norm.hh:166
static constexpr T sum(T a)
Definition: utility.hh:33
WeightFunctionSpaceType::GridPartType GridPartType
Definition: l2norm.hh:213
Integrator< QuadratureType > IntegratorType
Definition: l2norm.hh:39
Dune::FieldTraits< RangeFieldType >::real_type RealType
Definition: l2norm.hh:304
WeightedL2Norm(const WeightFunctionType &weightFunction, const unsigned int order=0)
Definition: l2norm.hh:253
const unsigned int order_
Definition: l2norm.hh:41
L2Norm(const GridPartType &gridPart, const unsigned int order=0)
Definition: l2norm.hh:65
BaseType::EntityType EntityType
Definition: l2norm.hh:34
FunctionSpaceType::RangeType RangeType
range type
Definition: function.hh:68
GridPart GridPartType
Definition: l2norm.hh:25
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:71
void jacobian(const Point &x, JacobianRangeType &ret) const
Definition: l2norm.hh:184
ReturnType forEach(const DiscreteFunctionType &u, const ReturnType &initialValue, unsigned int order=0) const
Definition: lpnorm.hh:106
void distanceLocal(const EntityType &entity, unsigned int order, const ULocalFunctionType &uLocal, const VLocalFunctionType &vLocal, ReturnType &sum) const
Definition: l2norm.hh:281
Function FunctionType
Definition: l2norm.hh:301
Definition: l2norm.hh:203
FunctionDistance(const UFunctionType &u, const VFunctionType &v)
Definition: l2norm.hh:170
VFunction VFunctionType
Definition: l2norm.hh:164
void normLocal(const EntityType &entity, unsigned int order, const LocalFunctionType &uLocal, ReturnType &sum) const
Definition: l2norm.hh:105
GridPartType::template Codim< 0 >::EntityType EntityType
Definition: lpnorm.hh:40
void evaluate(const Point &x, RangeType &ret) const
Definition: l2norm.hh:314
WeightedFunctionSquare(const LocalWeightFunctionType &weightFunction, const FunctionType &function)
Definition: l2norm.hh:307
Definition: coordinate.hh:4
WeightFunctionType::DiscreteFunctionSpaceType WeightFunctionSpaceType
Definition: l2norm.hh:212
void normLocal(const EntityType &entity, unsigned int order, const LocalFunctionType &uLocal, ReturnType &sum) const
Definition: l2norm.hh:265
integrator for arbitrary functions providing evaluate
Definition: integrator.hh:28
CachingQuadrature< GridPartType, 0 > QuadratureType
Definition: l2norm.hh:38
FieldVector< RealType, 1 > RangeType
Definition: l2norm.hh:305
FieldVector< RealType, 1 > RangeType
Definition: l2norm.hh:140
GridPartType::CollectiveCommunicationType comm() const
Definition: lpnorm.hh:157
WeightFunctionType::RangeType WeightType
Definition: l2norm.hh:220
FunctionSpaceType::RangeFieldType RangeFieldType
field type of range
Definition: function.hh:64
Abstract class representing a function.
Definition: function.hh:43
Dune::FieldTraits< typename UDiscreteFunctionType::RangeFieldType >::real_type distance(const UDiscreteFunctionType &u, const VDiscreteFunctionType &v) const
Definition: l2norm.hh:91
Function FunctionType
Definition: l2norm.hh:136
Definition: l2norm.hh:217
UFunctionType::JacobianRangeType JacobianRangeType
Definition: l2norm.hh:168
void distanceLocal(const EntityType &entity, unsigned int order, const ULocalFunctionType &uLocal, const VLocalFunctionType &vLocal, ReturnType &sum) const
Definition: l2norm.hh:118
void evaluate(const Point &x, RangeType &ret) const
Definition: l2norm.hh:147
Dune::FieldTraits< RangeFieldType >::real_type RealType
Definition: l2norm.hh:139
const GridPartType & gridPart() const
Definition: lpnorm.hh:155
Dune::FieldTraits< typename DiscreteFunctionType::RangeFieldType >::real_type norm(const DiscreteFunctionType &u) const
Definition: l2norm.hh:74