1#ifndef DUNE_FEM_QUADRATURE_HH
2#define DUNE_FEM_QUADRATURE_HH
8#include <dune/common/fvector.hh>
9#include <dune/common/exceptions.hh>
11#include <dune/geometry/quadraturerules.hh>
13#include <dune/grid/common/grid.hh>
41 template<
class Quadrature >
48 typedef typename QuadratureType::RealType
RealType;
90 template<
class Quadrature >
102 template<
class Quadrature >
104 :
public std::iterator< std::forward_iterator_tag, QuadraturePointWrapper< Quadrature >,
105 std::ptrdiff_t, Envelope< QuadraturePointWrapper< Quadrature > >, QuadraturePointWrapper< Quadrature > >
108 typedef std::iterator< std::forward_iterator_tag, QuadraturePointWrapper< Quadrature >,
158 template<
typename FieldImp,
int dim,
159 template<
class,
int >
class IntegrationTraits >
167 typedef IntegrationTraits< FieldType, dimension >
Traits;
232 const GeometryType &elementGeometry,
313 return ipList().point( i );
364 return ipList().geometryType();
371 return ipList().interpolationPoints( reqDim );
378 return ipList().isFaceInterpolationQuadrature( numShapeFunctions );
401 template<
class FieldImp,
int dim,
402 template<
class,
int >
class QuadratureTraits = DefaultQuadratureTraits >
411 typedef QuadratureTraits< FieldType, dimension >
Traits;
469 const GeometryType &elementGeometry,
529 return ipList().weight( i );
540 template <
class Quadrature>
Definition: bindguard.hh:11
detail::SelectPointSetId< Quadrature, -Dune::QuadratureType::size > SelectQuadraturePointSetId
Definition: quadrature.hh:541
provide a single instance pool of quadratures
Definition: quadprovider.hh:304
wrapper for a (Quadrature,int) pair
Definition: quadrature.hh:43
ThisType & operator=(const ThisType &)=delete
QuadraturePointWrapper(const QuadratureType &quadrature, unsigned int index)
Definition: quadrature.hh:59
const RealType & weight() const
Definition: quadrature.hh:72
QuadratureType::CoordinateType CoordinateType
Definition: quadrature.hh:47
const CoordinateType & position() const
Definition: quadrature.hh:71
QuadratureType::LocalCoordinateType LocalCoordinateType
Definition: quadrature.hh:49
const LocalCoordinateType & localPosition() const
Definition: quadrature.hh:73
unsigned int index() const
Definition: quadrature.hh:70
const QuadratureType & quadrature_
Definition: quadrature.hh:55
QuadratureType::RealType RealType
Definition: quadrature.hh:48
Quadrature QuadratureType
Definition: quadrature.hh:45
const QuadratureType & quadrature() const
Definition: quadrature.hh:65
static Quadrature::CoordinateType coordinate(const QuadraturePointWrapper< Quadrature > &x)
extract the real coordinate from a point
Definition: quadrature.hh:92
const unsigned int index_
Definition: quadrature.hh:56
iterator over quadrature points
Definition: quadrature.hh:106
pointer operator->() const noexcept
Definition: quadrature.hh:124
const Quadrature * quadrature_
Definition: quadrature.hh:135
BaseType::reference reference
Definition: quadrature.hh:115
reference operator*() const noexcept
Definition: quadrature.hh:123
BaseType::pointer pointer
Definition: quadrature.hh:114
bool operator!=(const ThisType &other) const noexcept
Definition: quadrature.hh:127
BaseType::value_type value_type
Definition: quadrature.hh:113
ThisType & operator++() noexcept
Definition: quadrature.hh:129
std::size_t point_
Definition: quadrature.hh:136
QuadraturePointIterator() noexcept=default
const Quadrature & quadrature() const noexcept
Definition: quadrature.hh:132
bool operator==(const ThisType &other) const noexcept
Definition: quadrature.hh:126
actual interface class for integration point lists
Definition: quadrature.hh:161
Traits::IntegrationPointListType IntegrationPointListType
type of integration point list implementation
Definition: quadrature.hh:177
FieldImp FieldType
Definition: quadrature.hh:163
IntegrationPointListStorageType ipListPtr_
Definition: quadrature.hh:200
int nop() const
obtain the number of integration points
Definition: quadrature.hh:295
const IntegrationPointListType & ipList() const
obtain a reference the actual implementation
Definition: quadrature.hh:285
const QuadraturePointWrapperType operator[](unsigned int i) const
Definition: quadrature.hh:275
std::shared_ptr< const IntegrationPointListType > IntegrationPointListStorageType
Definition: quadrature.hh:187
IntegrationPointListType::CoordinateType CoordinateType
type of coordinate
Definition: quadrature.hh:180
GeometryType geometryType() const
obtain GeometryType for this integration point list
Definition: quadrature.hh:362
IntegrationPointList(const IntegrationPointListStorageType &ipListPtr)
create an integration point list from an implementation
Definition: quadrature.hh:261
@ dimension
Definition: quadrature.hh:165
size_t id() const
obtain the identifier of the integration point list
Definition: quadrature.hh:327
int order() const
obtain order of the integration point list
Definition: quadrature.hh:345
auto interpolationPoints(const int reqDim) const
returns list of element interpolation points for a given face quadrature
Definition: quadrature.hh:369
const CoordinateType & point(size_t i) const
obtain coordinates of i-th integration point
Definition: quadrature.hh:311
@ codimension
Definition: quadrature.hh:190
IntegrationPointList(const IntegrationPointList &org)
copy constructor
Definition: quadrature.hh:270
IntegrationPointList(const GeometryType &geometryType, const GeometryType &elementGeometry, const QuadratureKeyType &quadKey)
create a quadrature for a given geometry type and order
Definition: quadrature.hh:231
IntegrationPointList(const IntegrationPointListType &ipList)
create an integration point list from an implementation
Definition: quadrature.hh:247
Traits::QuadratureKeyType QuadratureKeyType
type of key to identify quadrature on user side (default the order of the quadrature)
Definition: quadrature.hh:183
bool isFaceInterpolationQuadrature(const size_t numShapeFunctions) const
return true if quadrature is also a set of interpolation points for the given shape functions
Definition: quadrature.hh:376
IntegrationTraits< FieldType, dimension > Traits
Definition: quadrature.hh:167
QuadraturePointWrapper< ThisType > QuadraturePointWrapperType
Definition: quadrature.hh:185
IntegrationPointList(const GeometryType &geometryType, const QuadratureKeyType &quadKey)
create a quadrature for a given geometry type and order
Definition: quadrature.hh:213
Definition: quadrature.hh:196
void operator()(const IntegrationPointListType *)
Definition: quadrature.hh:197
actual interface class for quadratures
Definition: quadrature.hh:405
Traits::IntegrationPointListType IntegrationPointListType
type of the implementation (this must actually be a quadrature implementation)
Definition: quadrature.hh:426
Traits::QuadratureKeyType QuadratureKeyType
type of key to identify the quadrature
Definition: quadrature.hh:432
const FieldType & weight(size_t i) const
obtain weight of i-th integration point
Definition: quadrature.hh:527
Quadrature(const GeometryType &geometryType, const QuadratureKeyType &key)
create a quadrature for a given geometry and order
Definition: quadrature.hh:448
FieldImp FieldType
Definition: quadrature.hh:407
BaseType::IntegrationPointListStorageType IntegrationPointListStorageType
Definition: quadrature.hh:423
Quadrature(const IntegrationPointListType &ipList)
create an integration point list from an implementation
Definition: quadrature.hh:484
Quadrature(const IntegrationPointListStorageType &ipListPtr)
create an integration point list from an implementation
Definition: quadrature.hh:498
@ codimension
Definition: quadrature.hh:435
Quadrature(const Quadrature &org)
copy constructor
Definition: quadrature.hh:508
QuadratureTraits< FieldType, dimension > Traits
Definition: quadrature.hh:411
IntegrationPointListType::CoordinateType CoordinateType
type of local coordinate vectors
Definition: quadrature.hh:429
static const unsigned int dimension
Definition: quadrature.hh:409
Quadrature(const GeometryType &geometryType, const GeometryType &elementGeometry, const QuadratureKeyType &key)
create a quadrature for a given geometry and order
Definition: quadrature.hh:468
Definition: envelope.hh:11