libMesh
Loading...
Searching...
No Matches
quadrature_gauss_lobatto_3D.C
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
20// Local includes
21#include "libmesh/quadrature_gauss_lobatto.h"
22#include "libmesh/enum_to_string.h"
23#include "libmesh/quadrature_gauss.h"
24
25namespace libMesh
26{
27
29{
30 switch (_type)
31 {
32 case HEX8:
33 case HEX20:
34 case HEX27:
35 {
36 // We compute the 3D quadrature rule as a tensor
37 // product of the 1D quadrature rule.
38 QGaussLobatto q1D(1, get_order());
40 return;
41 }
42
43 // We fall back on a Gauss type rule for other types of elements,
44 // but we warn the user (once) that we are doing this instead of
45 // silently switching out quadrature rules on them.
46 default:
47 {
48 libmesh_warning("Warning: QGaussLobatto falling back on QGauss rule "
49 "for unsupported Elem type: " << Utility::enum_to_string(_type));
50
51 QGauss gauss_rule(_dim, _order);
52 gauss_rule.init(*this);
53
54 // Swap points and weights with the about-to-be destroyed rule.
55 _points.swap (gauss_rule.get_points() );
56 _weights.swap(gauss_rule.get_weights());
57 }
58 }
59}
60
61} // namespace libMesh
std::vector< Point > _points
The locations of the quadrature points in reference element space.
Definition quadrature.h:409
ElemType _type
The type of element for which the current values have been computed.
Definition quadrature.h:391
Order get_order() const
Definition quadrature.h:249
unsigned int _dim
The spatial dimension of the quadrature rule.
Definition quadrature.h:379
const std::vector< Point > & get_points() const
Definition quadrature.h:156
const std::vector< Real > & get_weights() const
Definition quadrature.h:168
std::vector< Real > _weights
The quadrature weights.
Definition quadrature.h:415
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
void tensor_product_hex(const QBase &q1D)
Computes the tensor product quadrature rule [q1D x q1D x q1D] from the 1D rule q1D.
Definition quadrature.C:283
Order _order
The polynomial order which the quadrature rule is capable of integrating exactly.
Definition quadrature.h:385
This class implements Gauss-Lobatto quadrature for 1D elements and 2D/3D tensor product elements.
virtual void init_3D() override
Initializes the 3D quadrature rule by filling the points and weights vectors with the appropriate val...
This class implements specific orders of Gauss quadrature.
std::string enum_to_string(const T e)
The libMesh namespace provides an interface to certain functionality in the library.