dune-fem  2.4.1-rc
elementquadrature.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_ELEMENTQUADRATURE_HH
2 #define DUNE_FEM_ELEMENTQUADRATURE_HH
3 
4 #include "quadrature.hh"
5 #include "elementpointlist.hh"
6 
7 namespace Dune
8 {
9 
10  namespace Fem
11  {
12 
46  template< typename GridPartImp, int codim >
48 
49 
50 
51  template< class GridPartImp, int codim >
53  {
54  // type of single coordinate
55  typedef typename GridPartImp :: ctype ctype;
56 
57  // dimension of quadrature
58  enum { dimension = GridPartImp :: dimension };
59 
60  // codimension of quadrature
61  enum { codimension = codim };
62 
63  // type of used integration point list
65 
66  // type of local coordinate (with respect to the codim-0 entity)
69  };
70 
71 
72 
74  template< typename GridPartImp >
75  class ElementQuadrature< GridPartImp, 0 >
76  : public ElementIntegrationPointList< GridPartImp, 0, ElementQuadratureTraits< GridPartImp, 0 > >
77  {
81 
82  public:
84  typedef GridPartImp GridPartType;
85 
87  enum { codimension = 0 };
88 
90  enum { dimension = GridPartType :: dimension };
91 
93  typedef typename GridPartType :: ctype RealType;
94 
97 
98  // for compatibility
99  typedef typename GridPartType::template Codim< 0 >::EntityType EntityType;
100 
101  protected:
102  using BaseType::quadImp;
103 
104  public:
111  ElementQuadrature( const EntityType &entity, int order )
112  : BaseType( entity.type(), order )
113  {}
114 
121  ElementQuadrature( const GeometryType &type, int order )
122  : BaseType( type, order )
123  {}
124 
129  ElementQuadrature( const ThisType &org )
130  : BaseType( org )
131  {}
132 
134  const RealType &weight( size_t i ) const
135  {
136  return quadImp().weight( i );
137  }
138  };
139 
140 
141 
143  template< class GridPartImp >
144  class ElementQuadrature< GridPartImp, 1 >
146  < GridPartImp, 1, ElementQuadratureTraits< GridPartImp, 1 > >
147  {
148  public:
150  typedef GridPartImp GridPartType;
151 
153  enum { codimension = 1 };
154 
155  private:
157 
160  BaseType;
161 
162  protected:
163  using BaseType :: quadImp;
164 
165  public:
167  enum { dimension = GridPartType :: dimension };
168 
170  typedef typename GridPartType :: ctype RealType;
171 
173  typedef typename GridPartType :: IntersectionIteratorType IntersectionIteratorType;
174  typedef typename IntersectionIteratorType :: Intersection IntersectionType;
175 
178 
182 
184  typedef ThisType NonConformingQuadratureType;
185 
186  public:
195  ElementQuadrature ( const GridPartType &gridPart,
196  const IntersectionType &intersection,
197  int order,
198  typename BaseType :: Side side )
199  : BaseType( gridPart, intersection, order, side )
200  {}
201 
207  : BaseType( org )
208  {
209  }
210 
220  const RealType &weight( size_t i ) const
221  {
222  return quadImp().weight( i );
223  }
224  };
225 
226  } // namespace Fem
227 
228 } // namespace Dune
229 
230 #endif // #ifndef DUNE_FEM_ELEMENTQUADRATURE_HH
IntegrationTraits::CoordinateType CoordinateType
type of coordinates in codim-0 reference element
Definition: elementquadrature.hh:177
GridPartType::ctype RealType
type for reals (usually double)
Definition: elementquadrature.hh:93
IntegrationTraits::CoordinateType CoordinateType
type for coordinates in the codim-0 reference element
Definition: elementquadrature.hh:96
GridPartType::ctype RealType
type for reals (usually double)
Definition: elementquadrature.hh:170
GridPartImp GridPartType
type of the grid partition
Definition: elementquadrature.hh:84
GridPartType::template Codim< 0 >::EntityType EntityType
Definition: elementquadrature.hh:99
Quadrature< ctype, dimension-codim, DefaultQuadratureTraits > IntegrationPointListType
Definition: elementquadrature.hh:64
constructor
Definition: elementquadrature.hh:75
Definition: defaultquadratures.hh:33
GridPartType::IntersectionIteratorType IntersectionIteratorType
type of the intersection iterator
Definition: elementquadrature.hh:173
ThisType NonConformingQuadratureType
type of quadrature for use on non-conforming intersections
Definition: elementquadrature.hh:184
Definition: coordinate.hh:4
ElementQuadrature(const EntityType &entity, int order)
constructor
Definition: elementquadrature.hh:111
const RealType & weight(size_t i) const
obtain weight of i-th integration point
Definition: elementquadrature.hh:134
integration point list on the codim-0 reference element
Definition: elementpointlist.hh:49
IntersectionIteratorType::Intersection IntersectionType
Definition: elementquadrature.hh:174
GridPartImp::ctype ctype
Definition: elementquadrature.hh:55
ElementQuadrature(const ElementQuadrature &org)
copy constructor
Definition: elementquadrature.hh:206
GridPartImp GridPartType
type of the grid partition
Definition: elementquadrature.hh:150
quadrature on the codim-0 reference element
Definition: elementquadrature.hh:47
Definition: elementquadrature.hh:58
ElementQuadrature(const GeometryType &type, int order)
constructor
Definition: elementquadrature.hh:121
const RealType & weight(size_t i) const
Definition: elementquadrature.hh:220
ElementQuadrature(const GridPartType &gridPart, const IntersectionType &intersection, int order, typename BaseType::Side side)
constructor
Definition: elementquadrature.hh:195
Definition: elementquadrature.hh:61
ElementQuadrature(const ThisType &org)
copy constructor
Definition: elementquadrature.hh:129
Definition: elementquadrature.hh:52
Quadrature< ctype, dimension, DefaultQuadratureTraits >::CoordinateType CoordinateType
Definition: elementquadrature.hh:68
IntegrationTraits::IntegrationPointListType::CoordinateType LocalCoordinateType
type of coordinate in codim-1 reference element
Definition: elementquadrature.hh:181
actual interface class for quadratures
Definition: quadrature.hh:320