21#include "libmesh/elem.h"
22#include "libmesh/enum_to_string.h"
23#include "libmesh/fe.h"
24#include "libmesh/fe_interface.h"
25#include "libmesh/fe_lagrange_gll_shape_1D.h"
26#include "libmesh/fe_macro.h"
43 libmesh_assert_greater (o, 0);
45 const unsigned int n =
static_cast<unsigned int>(o) + 1;
48 "The L2_LAGRANGE_GLL basis of order " << o <<
" needs " << n
49 <<
" Gauss-Lobatto points, but QGaussLobatto tabulates at most "
79 libmesh_error_msg(
"The L2_LAGRANGE_GLL basis is a tensor product and is not defined on "
100 const std::vector<Number> & elem_soln,
101 std::vector<Number> & nodal_soln,
102 const bool add_p_level)
110 const unsigned int n_sf =
113 std::vector<Point> refspace_nodes;
115 libmesh_assert_equal_to (refspace_nodes.size(),
n_nodes);
116 libmesh_assert_equal_to (elem_soln.size(), n_sf);
118 std::fill(nodal_soln.begin(), nodal_soln.end(), 0);
122 nodal_soln[n] += elem_soln[i] *
180#ifdef LIBMESH_ENABLE_AMR
The constraint matrix storage format.
This class handles the numbering of degrees of freedom on a mesh.
This is the base class from which all geometric element types are derived.
virtual unsigned int n_nodes() const =0
virtual ElemType type() const =0
static void get_refspace_nodes(const ElemType t, std::vector< Point > &nodes)
static Real shape(const unsigned int dim, const FEType &fe_t, const ElemType t, const unsigned int i, const Point &p)
static unsigned int n_shape_functions(const unsigned int dim, const FEType &fe_t, const ElemType t)
class FEType hides (possibly multiple) FEFamily and approximation orders, thereby enabling specialize...
virtual bool is_hierarchic() const override
static unsigned int n_dofs_per_elem(const ElemType t, const Order o)
virtual FEContinuity get_continuity() const override
static void compute_constraints(DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
Computes the constraint matrix contributions (for non-conforming adapted meshes) corresponding to var...
static unsigned int n_dofs(const ElemType t, const Order o)
static unsigned int n_dofs_at_node(const ElemType t, const Order o, const unsigned int n)
virtual bool shapes_need_reinit() const override
std::string enum_to_string(const T e)
The libMesh namespace provides an interface to certain functionality in the library.
LIBMESH_FE_NODAL_SOLN(BERNSTEIN, bernstein_nodal_soln)
void l2_lagrange_gll_nodal_soln(const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool add_p_level)
Evaluates the solution at the nodes of elem, for output formats that write nodal values.
ElemType
Defines an enum for geometric element types.
unsigned int l2_lagrange_gll_n_dofs(const ElemType t, const Order o)
constexpr unsigned int fe_lagrange_gll_max_points_1D
The number of points in the largest Gauss-Lobatto rule that QGaussLobatto tabulates,...
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
LIBMESH_FE_SIDE_NODAL_SOLN(HIERARCHIC_VEC)
const dof_id_type n_nodes