dune-fem  2.8-git
lumpingquadrature.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_LUMPING_QUADRATURE_HH
2 #define DUNE_FEM_LUMPING_QUADRATURE_HH
3 
4 #include <dune/geometry/referenceelements.hh>
5 #include <dune/geometry/type.hh>
6 
8 
9 namespace Dune {
10 
11 namespace Fem {
12 
27 template<class FieldImp, Dune::GeometryType::Id geometryId>
29  : public QuadratureImp<FieldImp, Dune::GeometryType(geometryId).dim()>
30 {
31  public:
32  typedef FieldImp FieldType;
33  static constexpr auto dimension = Dune::GeometryType(geometryId).dim();
34 
35  private:
38 
39  public:
41 
48  LumpingQuadrature(const GeometryType& gt, int order, int id)
49  : BaseType(id)
50  {
51  const auto &refElement = Dune::ReferenceElements< FieldType, dimension >::general( gt );
52  const auto numCorners = refElement.size( dimension );
53  for( auto i = decltype( numCorners ){ 0 }; i < numCorners; ++i )
54  this->addQuadraturePoint( refElement.position( i, dimension ), refElement.volume() / numCorners );
55  }
56 
59  virtual GeometryType geometryType() const { return Dune::GeometryType(geometryId); }
62  virtual int order () const { return 1; }
63 
65  static std::size_t maxOrder () { return 1; }
66 };
67 
68 template<class FieldType, int dimension>
70 {
72 
73  static constexpr Dune::GeometryType::Id simplexId = Dune::GeometryTypes::simplex(dimension);
74  static constexpr Dune::GeometryType::Id cubeId = Dune::GeometryTypes::cube(dimension);
75  static constexpr Dune::GeometryType::Id prismId = Dune::GeometryTypes::prism ;
76  static constexpr Dune::GeometryType::Id pyramidId = Dune::GeometryTypes::pyramid;
77 
84 
85  typedef int QuadratureKeyType;
86 };
87 
88 // LumpingQuadrature uses CachingQuadrature with a different traits class for creating the quadratures.
89 template<class GridPartImp, int codim>
91 
92 } // Fem
93 
94 } // Dune
95 
96 
97 #endif // DUNE_FEM_LUMPING_QUADRATURE_HH
Definition: bindguard.hh:11
quadrature class supporting base function caching
Definition: cachingquadrature.hh:41
Definition: lumpingquadrature.hh:30
static std::size_t maxOrder()
maximal order of available quadratures
Definition: lumpingquadrature.hh:65
static constexpr auto dimension
Definition: lumpingquadrature.hh:33
BaseType::CoordinateType CoordinateType
Definition: lumpingquadrature.hh:40
virtual GeometryType geometryType() const
Definition: lumpingquadrature.hh:59
LumpingQuadrature(const GeometryType &gt, int order, int id)
constructor filling the list of points and weights.
Definition: lumpingquadrature.hh:48
FieldImp FieldType
Definition: lumpingquadrature.hh:32
virtual int order() const
obtain order of the integration point list
Definition: lumpingquadrature.hh:62
Definition: lumpingquadrature.hh:70
int QuadratureKeyType
Definition: lumpingquadrature.hh:85
static constexpr Dune::GeometryType::Id simplexId
Definition: lumpingquadrature.hh:73
QuadratureImp< FieldType, dimension > IntegrationPointListType
Definition: lumpingquadrature.hh:71
static constexpr Dune::GeometryType::Id pyramidId
Definition: lumpingquadrature.hh:76
static constexpr Dune::GeometryType::Id prismId
Definition: lumpingquadrature.hh:75
LumpingQuadrature< FieldType, prismId > PrismQuadratureType
Definition: lumpingquadrature.hh:80
LumpingQuadrature< FieldType, pyramidId > PyramidQuadratureType
Definition: lumpingquadrature.hh:81
LumpingQuadrature< FieldType, cubeId > CubeQuadratureType
Definition: lumpingquadrature.hh:79
static constexpr Dune::GeometryType::Id cubeId
Definition: lumpingquadrature.hh:74
SimplexQuadratureType LineQuadratureType
Definition: lumpingquadrature.hh:82
SimplexQuadratureType PointQuadratureType
Definition: lumpingquadrature.hh:83
LumpingQuadrature< FieldType, simplexId > SimplexQuadratureType
Definition: lumpingquadrature.hh:78
size_t id() const
obtain the identifier of the integration point list
Definition: quadratureimp.hh:122
Generic implementation of a Dune quadrature.
Definition: quadratureimp.hh:196
void addQuadraturePoint(const CoordinateType &point, const FieldType weight)
Adds a point-weight pair to the quadrature.
Definition: quadratureimp.hh:270
BaseType ::CoordinateType CoordinateType
type of local coordinates
Definition: quadratureimp.hh:207