20 #include "libmesh/libmesh_config.h"    21 #ifdef LIBMESH_ENABLE_HIGHER_ORDER_SHAPES    23 #include "libmesh/elem.h"    24 #include "libmesh/fe.h"    25 #include "libmesh/fe_interface.h"    46                                      const bool add_p_level)
    51   FEType fe_type(order, _underlying_fe_family);
    64   libmesh_error_msg(
"Rational bases require the real element \nto query nodal weighting.");
    73                                      const bool add_p_level)
    76     (elem, fet.
order, i, p, add_p_level);
    86                                            const bool add_p_level)
    90   FEType underlying_fe_type(order, _underlying_fe_family);
   104   libmesh_error_msg(
"Rational bases require the real element \nto query nodal weighting.");
   112                                            const unsigned int i,
   113                                            const unsigned int j,
   115                                            const bool add_p_level)
   118     (elem, fet.
order, i, j, p, add_p_level);
   123 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES   128                                                   const unsigned int i,
   129                                                   const unsigned int j,
   131                                                   const bool add_p_level)
   136   FEType underlying_fe_type(order, _underlying_fe_family);
   151   libmesh_error_msg(
"Rational bases require the real element \nto query nodal weighting.");
   159                                                   const unsigned int i,
   160                                                   const unsigned int j,
   162                                                   const bool add_p_level)
   165     (elem, fet.
order, i, j, p, add_p_level);
   176    const unsigned int i,
   177    const std::vector<Point> & p,
   178    std::vector<OutputShape> & vi,
   179    const bool add_p_level)
   181   libmesh_assert_equal_to(p.size(), vi.size());
   190    const std::vector<Point> & p,
   191    std::vector<std::vector<OutputShape>> & v,
   192    const bool add_p_level)
   194   FEType underlying_fe_type(o, _underlying_fe_family);
   204    const unsigned int i,
   205    const unsigned int j,
   206    const std::vector<Point> & p,
   207    std::vector<OutputShape> & v,
   208    const bool add_p_level)
   210   libmesh_assert_equal_to(p.size(), v.size());
   220                                             const std::vector<Point> & p,
   221                                             std::vector<std::vector<Real>> * comps[3],
   222                                             const bool add_p_level)
   224   FEType underlying_fe_type(o, _underlying_fe_family);
   234 #endif// LIBMESH_ENABLE_HIGHER_ORDER_SHAPES class FEType hides (possibly multiple) FEFamily and approximation orders, thereby enabling specialize...
ElemType
Defines an enum for geometric element types. 
Order
defines an enum for polynomial orders. 
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...
This is the base class from which all geometric element types are derived. 
static OutputShape shape_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
OrderWrapper order
The approximation order of the element. 
The libMesh namespace provides an interface to certain functionality in the library. 
A specific instantiation of the FEBase class. 
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)
Real rational_fe_shape(const Elem &elem, const FEType underlying_fe_type, const unsigned int i, const Point &p, const bool add_p_level)
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)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
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 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. 
FEFamily
defines an enum for finite element families. 
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)
A Point defines a location in LIBMESH_DIM dimensional Real space. 
auto index_range(const T &sizable)
Helper function that returns an IntRange<std::size_t> representing all the indices of the passed-in v...
static OutputShape shape_second_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
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)
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...