libMesh
Loading...
Searching...
No Matches
quadrature_gauss_lobatto_2D.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 QUAD4:
33 case QUADSHELL4:
34 case QUAD8:
35 case QUADSHELL8:
36 case QUAD9:
37 case QUADSHELL9:
38 {
39 // We compute the 2D quadrature rule as a tensor
40 // product of the 1D quadrature rule.
41 QGaussLobatto q1D(1, get_order());
43 return;
44 }
45
46 // We fall back on a Gauss type rule for other types of elements,
47 // but we warn the user (once) that we are doing this instead of
48 // silently switching out quadrature rules on them.
49 default:
50 {
51 libmesh_warning("Warning: QGaussLobatto falling back on QGauss rule "
52 "for unsupported Elem type: " << Utility::enum_to_string(_type));
53
54 QGauss gauss_rule(_dim, _order);
55 gauss_rule.init(*this);
56
57 // Swap points and weights with the about-to-be destroyed rule.
58 _points.swap (gauss_rule.get_points() );
59 _weights.swap(gauss_rule.get_weights());
60 }
61 }
62}
63
64} // 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
void tensor_product_quad(const QBase &q1D)
Constructs a 2D rule from the tensor product of q1D with itself.
Definition quadrature.C:256
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
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_2D() override
Initializes the 2D 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.