dune-fem 2.12-git
Loading...
Searching...
No Matches
lumpingquadrature.hh
Go to the documentation of this file.
1#ifndef DUNE_FEM_LUMPING_QUADRATURE_HH
2#define DUNE_FEM_LUMPING_QUADRATURE_HH
3
6
9
10namespace Dune {
11
12namespace Fem {
13
30template<class FieldImp, Dune::GeometryType::Id geometryId>
32 : public QuadratureImp<FieldImp, Dune::GeometryType(geometryId).dim()>
33{
34 public:
35 typedef FieldImp FieldType;
36 static constexpr auto dimension = Dune::GeometryType(geometryId).dim();
37
38 private:
41
42 static const int maxOrder_ = 6;
43 int order_ ;
44
45 public:
47
54 LumpingQuadrature(const GeometryType& gt, int order, int id)
55 : BaseType(id),
56 order_( order )
57 {
58 assert( order_ <= maxOrder_ && order_ >= 1 );
59
60 // create Lagrange points to define quadrature
61 typedef LagrangePointListImplementation< FieldType, Dune::GeometryType(geometryId).id(), dimension, maxOrder_ > LP;
62 LP pts( gt, order_, id );
63
64 const auto &refElement = Dune::ReferenceElements< FieldType, dimension >::general( gt );
65 //const std::size_t numCorners = refElement.size( dimension );
66 const std::size_t numCorners = pts.nop();
67 const FieldType weight = refElement.volume() / FieldType(numCorners);
68 for( std::size_t i = 0 ; i < numCorners; ++i )
69 {
70 //auto pt = refElement.position( i, dimension );
71 auto pt = pts.point( i );
72 this->addQuadraturePoint( pt, weight );
73 //std::cout << "Point " << i << ": (" << pt << ") " << weight << std::endl;
74 }
75 }
76
79 virtual GeometryType geometryType() const { return Dune::GeometryType(geometryId); }
82 virtual int order () const { return order_; }
83
85 static std::size_t maxOrder () { return maxOrder_; }
86};
87
88template<class FieldType, int dimension>
108
109// LumpingQuadrature uses CachingQuadrature with a different traits class for creating the quadratures.
110template<class GridPartImp, int codim>
112
113} // Fem
114
115} // Dune
116
117
118#endif // DUNE_FEM_LUMPING_QUADRATURE_HH
constexpr unsigned int dim() const
constexpr unsigned int id() const
quadrature class supporting base function caching
Definition cachingquadrature.hh:106
Definition lumpingquadrature.hh:33
static std::size_t maxOrder()
maximal order of available quadratures
Definition lumpingquadrature.hh:85
static constexpr auto dimension
Definition lumpingquadrature.hh:36
BaseType::CoordinateType CoordinateType
Definition lumpingquadrature.hh:46
virtual GeometryType geometryType() const
Definition lumpingquadrature.hh:79
LumpingQuadrature(const GeometryType &gt, int order, int id)
constructor filling the list of points and weights.
Definition lumpingquadrature.hh:54
FieldImp FieldType
Definition lumpingquadrature.hh:35
virtual int order() const
obtain order of the integration point list
Definition lumpingquadrature.hh:82
Definition lumpingquadrature.hh:90
int QuadratureKeyType
Definition lumpingquadrature.hh:106
static constexpr Dune::GeometryType::Id simplexId
Definition lumpingquadrature.hh:93
QuadratureImp< FieldType, dimension > IntegrationPointListType
Definition lumpingquadrature.hh:91
static constexpr Dune::GeometryType::Id pyramidId
Definition lumpingquadrature.hh:96
static constexpr Dune::GeometryType::Id prismId
Definition lumpingquadrature.hh:95
LumpingQuadrature< FieldType, prismId > PrismQuadratureType
Definition lumpingquadrature.hh:100
LumpingQuadrature< FieldType, pyramidId > PyramidQuadratureType
Definition lumpingquadrature.hh:101
LumpingQuadrature< FieldType, cubeId > CubeQuadratureType
Definition lumpingquadrature.hh:99
static constexpr Dune::GeometryType::Id cubeId
Definition lumpingquadrature.hh:94
SimplexQuadratureType LineQuadratureType
Definition lumpingquadrature.hh:103
SimplexQuadratureType PointQuadratureType
Definition lumpingquadrature.hh:104
LumpingQuadrature< FieldType, simplexId > SimplexQuadratureType
Definition lumpingquadrature.hh:98
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
const FieldType & weight(size_t i) const
obtain weight of i-th integration point
Definition quadratureimp.hh:251
Definition lagrangepoints.hh:334