21#include "libmesh/libmesh_config.h"
22#ifdef LIBMESH_ENABLE_HIGHER_ORDER_SHAPES
24#include "libmesh/libmesh_common.h"
25#include "libmesh/elem.h"
26#include "libmesh/fe.h"
27#include "libmesh/fe_interface.h"
48 const bool add_p_level)
53 FEType fe_type(order, _underlying_fe_family);
66 libmesh_error_msg(
"Rational bases require the real element \nto query nodal weighting.");
76 const bool add_p_level)
89 const bool add_p_level)
93 FEType underlying_fe_type(order, _underlying_fe_family);
107 libmesh_error_msg(
"Rational bases require the real element \nto query nodal weighting.");
115 const unsigned int i,
116 const unsigned int j,
118 const bool add_p_level)
127#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
133 const unsigned int i,
134 const unsigned int j,
136 const bool add_p_level)
141 FEType underlying_fe_type(order, _underlying_fe_family);
155 libmesh_error_msg(
"Rational bases require the real element \nto query nodal weighting.");
165 const unsigned int i,
166 const unsigned int j,
168 const bool add_p_level)
182 const unsigned int i,
183 const std::vector<Point> & p,
184 std::vector<OutputShape> & vi,
185 const bool add_p_level)
187 libmesh_assert_equal_to(p.size(), vi.size());
196 const std::vector<Point> & p,
197 std::vector<std::vector<OutputShape>> & v,
198 const bool add_p_level)
200 FEType underlying_fe_type(o, _underlying_fe_family);
210 const unsigned int i,
211 const unsigned int j,
212 const std::vector<Point> & p,
213 std::vector<OutputShape> & v,
214 const bool add_p_level)
216 libmesh_assert_equal_to(p.size(), v.size());
226 const std::vector<Point> & p,
227 std::vector<std::vector<Real>> * comps[3],
228 const bool add_p_level)
230 FEType underlying_fe_type(o, _underlying_fe_family);
This is the base class from which all geometric element types are derived.
class FEType hides (possibly multiple) FEFamily and approximation orders, thereby enabling specialize...
OrderWrapper order
The approximation order of the element (at 0 p-refinement level).
A specific instantiation of the FEBase class.
static void shapes(const Elem *elem, const Order o, const unsigned int i, const std::vector< Point > &p, std::vector< OutputShape > &v, const bool add_p_level=true)
Fills v with the values of the shape function, evaluated at all points p.
static void all_shapes(const Elem *elem, const Order o, const std::vector< Point > &p, std::vector< std::vector< OutputShape > > &v, const bool add_p_level=true)
Fills v[i][qp] with the values of the shape functions, evaluated at all points in p.
static OutputShape shape(const ElemType t, const Order o, const unsigned int i, const Point &p)
static void all_shape_derivs(const Elem *elem, const Order o, const std::vector< Point > &p, std::vector< std::vector< OutputShape > > *comps[3], const bool add_p_level=true)
Fills comps with dphidxi (and in higher dimensions, eta/zeta) derivative component values for all sha...
static OutputShape shape_second_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
static void shape_derivs(const Elem *elem, const Order o, const unsigned int i, const unsigned int j, const std::vector< Point > &p, std::vector< OutputShape > &v, const bool add_p_level=true)
Fills v with the derivative of the shape function, evaluated at all points p.
static OutputShape shape_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
A Point defines a location in LIBMESH_DIM dimensional Real space.
The libMesh namespace provides an interface to certain functionality in the library.
auto index_range(const T &sizable)
Helper function that returns an IntRange<std::size_t> representing all the indices of the passed-in v...
Real rational_fe_shape_second_deriv(const Elem &elem, const FEType underlying_fe_type, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
ElemType
Defines an enum for geometric element types.
Real rational_fe_shape_deriv(const Elem &elem, const FEType underlying_fe_type, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
Real rational_fe_shape(const Elem &elem, const FEType underlying_fe_type, const unsigned int i, const Point &p, const bool add_p_level)
void rational_all_shapes(const Elem &elem, const FEType underlying_fe_type, const std::vector< Point > &p, std::vector< std::vector< Real > > &v, const bool add_p_level)
void rational_all_shape_derivs(const Elem &elem, const FEType underlying_fe_type, const std::vector< Point > &p, std::vector< std::vector< OutputShape > > *comps[3], const bool add_p_level)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real