libMesh
Loading...
Searching...
No Matches
quadrature_conical.h
Go to the documentation of this file.
1// The libMesh Finite Element Library.
2// Copyright (C) 2002-2026 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#ifndef LIBMESH_QUADRATURE_CONICAL_H
20#define LIBMESH_QUADRATURE_CONICAL_H
21
22// Local includes
23#include "libmesh/quadrature.h"
24
25namespace libMesh
26{
27
43class QConical final : public QBase
44{
45public:
46
50 QConical (unsigned int d,
52 QBase(d,o)
53 {
54 if (d == 1)
55 init(EDGE2);
56 }
57
62 QConical (const QConical &) = default;
63 QConical (QConical &&) = default;
64 QConical & operator= (const QConical &) = default;
65 QConical & operator= (QConical &&) = default;
66 virtual ~QConical() = default;
67
71 virtual QuadratureType type() const override;
72
73 virtual std::unique_ptr<QBase> clone() const override;
74
75private:
76
82 virtual void init_1D () override;
83 virtual void init_2D () override;
84 virtual void init_3D () override;
85
91
97
103};
104
105} // namespace libMesh
106
107#endif // LIBMESH_QUADRATURE_CONICAL_H
The QBase class provides the basic functionality from which various quadrature rules can be derived.
Definition quadrature.h:62
virtual void init(const Elem &e, unsigned int p_level=invalid_uint)
Initializes the data structures for a quadrature rule for the element e.
Definition quadrature.C:65
This class implements the so-called conical product quadrature rules for Tri and Tet elements.
virtual ~QConical()=default
virtual void init_1D() override
In 1D, use a Gauss rule.
void conical_product_tri()
Implementation of conical product rule for a Tri in 2D of order get_order().
void conical_product_tet()
Implementation of conical product rule for a Tet in 3D of order get_order().
virtual QuadratureType type() const override
QConical & operator=(const QConical &)=default
QConical(unsigned int d, Order o=INVALID_ORDER)
Constructor.
void conical_product_pyramid()
Implementation of conical product rule for a Pyramid in 3D of order get_order().
virtual std::unique_ptr< QBase > clone() const override
virtual void init_3D() override
Initializes the 3D quadrature rule by filling the points and weights vectors with the appropriate val...
virtual void init_2D() override
Initializes the 2D quadrature rule by filling the points and weights vectors with the appropriate val...
QConical(QConical &&)=default
QConical(const QConical &)=default
Copy/move ctor, copy/move assignment operator, and destructor are all explicitly defaulted for this s...
The libMesh namespace provides an interface to certain functionality in the library.
QuadratureType
Defines an enum for currently available quadrature rules.
@ INVALID_ORDER
Definition enum_order.h:88