quadrature_monomial.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2018 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 #ifndef LIBMESH_QUADRATURE_MONOMIAL_H
21 #define LIBMESH_QUADRATURE_MONOMIAL_H
22 
23 // Local includes
24 #include "libmesh/quadrature.h"
25 
26 namespace libMesh
27 {
28 
58 class QMonomial final : public QBase
59 {
60 public:
61 
65  QMonomial (unsigned int dim,
66  Order order=INVALID_ORDER) :
67  QBase(dim,order)
68  {}
69 
74  QMonomial (const QMonomial &) = default;
75  QMonomial (QMonomial &&) = default;
76  QMonomial & operator= (const QMonomial &) = default;
77  QMonomial & operator= (QMonomial &&) = default;
78  virtual ~QMonomial() = default;
79 
83  virtual QuadratureType type() const override;
84 
85 
86 private:
87 
91  virtual void init_1D (const ElemType,
92  unsigned int =0) override;
93 
97  virtual void init_2D (const ElemType _type=INVALID_ELEM,
98  unsigned int p_level=0) override;
99 
103  virtual void init_3D (const ElemType _type=INVALID_ELEM,
104  unsigned int p_level=0) override;
105 
106 
107 
120  void wissmann_rule(const Real rule_data[][3],
121  const unsigned int n_pts);
122 
143  void stroud_rule(const Real rule_data[][3],
144  const unsigned int * rule_symmetry,
145  const unsigned int n_pts);
146 
187  void kim_rule(const Real rule_data[][4],
188  const unsigned int * rule_id,
189  const unsigned int n_pts);
190 };
191 
192 } // namespace libMesh
193 
194 #endif // LIBMESH_QUADRATURE_MONOMIAL_H
virtual ~QMonomial()=default
void wissmann_rule(const Real rule_data[][3], const unsigned int n_pts)
ElemType _type
Definition: quadrature.h:337
Implements quadrature rules for non-tensor polynomials.
virtual QuadratureType type() const override
void kim_rule(const Real rule_data[][4], const unsigned int *rule_id, const unsigned int n_pts)
QMonomial & operator=(const QMonomial &)=default
QMonomial(unsigned int dim, Order order=INVALID_ORDER)
virtual void init_1D(const ElemType, unsigned int=0) override
void stroud_rule(const Real rule_data[][3], const unsigned int *rule_symmetry, const unsigned int n_pts)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void init_3D(const ElemType _type=INVALID_ELEM, unsigned int p_level=0) override
virtual void init_2D(const ElemType _type=INVALID_ELEM, unsigned int p_level=0) override
Base class for all quadrature families and orders.
Definition: quadrature.h:62