quadrature_gauss.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_GAUSS_H
21 #define LIBMESH_QUADRATURE_GAUSS_H
22 
23 // Local includes
24 #include "libmesh/quadrature.h"
25 
26 namespace libMesh
27 {
28 
39 class QGauss : public QBase
40 {
41 public:
42 
52  QGauss (unsigned int dim,
53  Order order=INVALID_ORDER) :
54  QBase(dim, order)
55  {
56  if (dim == 1)
57  init(EDGE2);
58  }
59 
64  QGauss (const QGauss &) = default;
65  QGauss (QGauss &&) = default;
66  QGauss & operator= (const QGauss &) = default;
67  QGauss & operator= (QGauss &&) = default;
68  virtual ~QGauss() = default;
69 
73  virtual QuadratureType type() const override;
74 
75 
76 private:
77 
78  virtual void init_1D (const ElemType _type=INVALID_ELEM,
79  unsigned int p_level=0) override;
80  virtual void init_2D (const ElemType _type=INVALID_ELEM,
81  unsigned int p_level=0) override;
82  virtual void init_3D (const ElemType _type=INVALID_ELEM,
83  unsigned int p_level=0) override;
84 
90  void dunavant_rule(const Real rule_data[][4],
91  const unsigned int n_pts);
92 
93  void dunavant_rule2(const Real * wts,
94  const Real * a,
95  const Real * b,
96  const unsigned int * permutation_ids,
97  const unsigned int n_wts);
98 
104  void keast_rule(const Real rule_data[][4],
105  const unsigned int n_pts);
106 };
107 
108 } // namespace libMesh
109 
110 #endif // LIBMESH_QUADRATURE_GAUSS_H
virtual void init(const ElemType type=INVALID_ELEM, unsigned int p_level=0)
Definition: quadrature.C:28
virtual QuadratureType type() const override
virtual void init_2D(const ElemType _type=INVALID_ELEM, unsigned int p_level=0) override
ElemType _type
Definition: quadrature.h:337
virtual void init_1D(const ElemType _type=INVALID_ELEM, unsigned int p_level=0) override
virtual void init_3D(const ElemType _type=INVALID_ELEM, unsigned int p_level=0) override
void dunavant_rule2(const Real *wts, const Real *a, const Real *b, const unsigned int *permutation_ids, const unsigned int n_wts)
virtual ~QGauss()=default
void dunavant_rule(const Real rule_data[][4], const unsigned int n_pts)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void keast_rule(const Real rule_data[][4], const unsigned int n_pts)
Implements 1, 2, and 3D "Gaussian" quadrature rules.
QGauss(unsigned int dim, Order order=INVALID_ORDER)
Base class for all quadrature families and orders.
Definition: quadrature.h:62
QGauss & operator=(const QGauss &)=default