libMesh
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
libMesh::FELagrangeVec< Dim > Class Template Reference

FELagrangeVec objects are used for working with vector-valued finite elements. More...

#include <fe.h>

Inheritance diagram for libMesh::FELagrangeVec< Dim >:
[legend]

Public Types

typedef FEGenericBase< typenameFEOutputType< T >::type >::OutputShape OutputShape
 
typedef TensorTools::IncrementRank< OutputShape >::type OutputGradient
 
typedef TensorTools::IncrementRank< OutputGradient >::type OutputTensor
 
typedef TensorTools::DecrementRank< OutputShape >::type OutputDivergence
 
typedef TensorTools::MakeNumber< OutputShape >::type OutputNumber
 
typedef TensorTools::IncrementRank< OutputNumber >::type OutputNumberGradient
 
typedef TensorTools::IncrementRank< OutputNumberGradient >::type OutputNumberTensor
 
typedef TensorTools::DecrementRank< OutputNumber >::type OutputNumberDivergence
 

Public Member Functions

 FELagrangeVec (const FEType &fet)
 Constructor.
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 Subdivision finite elements.
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *libmesh_dbg_var(elem), const Order, const unsigned int, const Point &, const bool)
 
Real shape (const FEType, const Elem *libmesh_dbg_var(elem), const unsigned int, const Point &, const bool)
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const Point &p, const bool libmesh_dbg_var(add_p_level))
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int, const Point &, const bool)
 
Real shape (const ElemType elem_type, const Order order, const unsigned int i, const Point &p)
 
Real shape (const ElemType, const Order, const unsigned int i, const Point &p)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *, const Order, const unsigned int i, const Point &p, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int i, const Point &p, const bool)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const ElemType, const Order order, const unsigned int i, const Point &p)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
Real shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
RealVectorValue shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealVectorValue shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealVectorValue shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
RealVectorValue shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealVectorValue shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealVectorValue shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealVectorValue shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
RealGradient shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
RealGradient shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int, const Point &, const bool)
 
Real shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int, const Point &, const bool)
 
Real shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int, const Point &, const bool)
 
Real shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int, const Point &, const bool)
 
Real shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const Elem *, const Order, const unsigned int, const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int, const Point &, const bool)
 
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const FEType, const Elem *, const unsigned int libmesh_dbg_var(i), const Point &, const bool)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
Real shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level)
 
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)
 
void shapes (const Elem *elem, const Order o, const unsigned int i, const std::vector< Point > &p, std::vector< OutputShape > &vi, const bool add_p_level)
 
void shapes (const Elem *elem, const Order o, const unsigned int i, const std::vector< Point > &p, std::vector< OutputShape > &vi, const bool add_p_level)
 
void shapes (const Elem *elem, const Order o, const unsigned int i, const std::vector< Point > &p, std::vector< OutputShape > &vi, const bool add_p_level)
 
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)
 
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)
 
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)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &p)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *libmesh_dbg_var(elem), const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *libmesh_dbg_var(elem), const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int, const Point &p, const bool libmesh_dbg_var(add_p_level))
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType elem_type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const ElemType elem_type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &p)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealVectorValue shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealVectorValue shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealVectorValue shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealVectorValue shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealVectorValue shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealVectorValue shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealVectorValue shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealVectorValue shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &, const bool add_p_level)
 
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &p)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_deriv (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &point_in, const bool libmesh_dbg_var(add_p_level))
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &point_in, const bool libmesh_dbg_var(add_p_level))
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_deriv (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &point_in, const bool libmesh_dbg_var(add_p_level))
 
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
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)
 
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)
 
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)
 
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)
 
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)
 
void all_shape_derivs (const Elem *elem, const Order o, const std::vector< Point > &p, std::vector< std::vector< Real > > *comps[3], const bool add_p_level)
 
void all_shape_derivs (const Elem *elem, const Order o, const std::vector< Point > &p, std::vector< std::vector< Real > > *comps[3], const bool add_p_level)
 
void all_shape_derivs (const Elem *elem, const Order o, const std::vector< Point > &p, std::vector< std::vector< Real > > *comps[3], const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &p)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *libmesh_dbg_var(elem), const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *libmesh_dbg_var(elem), const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int, const Point &p, const bool libmesh_dbg_var(add_p_level))
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType elem_type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const ElemType elem_type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &p)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealVectorValue shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealVectorValue shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealVectorValue shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealVectorValue shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
RealVectorValue shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealVectorValue shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealVectorValue shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealVectorValue shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &, const bool add_p_level)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int libmesh_dbg_var(i), const unsigned int libmesh_dbg_var(j), const Point &, const bool add_p_level)
 
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
RealGradient shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
RealGradient shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const FEType, const Elem *, const unsigned int, const unsigned int, const Point &, const bool)
 
Real shape_second_deriv (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &point_in, const bool libmesh_dbg_var(add_p_level))
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &point_in, const bool libmesh_dbg_var(add_p_level))
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
Real shape_second_deriv (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &point_in, const bool libmesh_dbg_var(add_p_level))
 
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
Real shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level)
 
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool add_p_level, const unsigned)
 
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool add_p_level, const unsigned)
 
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool add_p_level, const unsigned)
 
void nodal_soln (const Elem *, const Order, const std::vector< Number > &, std::vector< Number > &, bool, const unsigned)
 
void nodal_soln (const Elem *, const Order, const std::vector< Number > &, std::vector< Number > &, bool, const unsigned)
 
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool add_p_level, const unsigned vdim)
 
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool add_p_level, const unsigned)
 
void nodal_soln (const Elem *, const Order, const std::vector< Number > &, std::vector< Number > &, bool, const unsigned)
 
void nodal_soln (const Elem *, const Order, const std::vector< Number > &, std::vector< Number > &, bool, const unsigned)
 
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool add_p_level, const unsigned vdim)
 
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool add_p_level, const unsigned)
 
void nodal_soln (const Elem *, const Order, const std::vector< Number > &, std::vector< Number > &, bool, const unsigned)
 
void nodal_soln (const Elem *, const Order, const std::vector< Number > &, std::vector< Number > &, bool, const unsigned)
 
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool add_p_level, const unsigned vdim)
 
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool add_p_level, const unsigned)
 
void nodal_soln (const Elem *elem, const Order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, const bool, const unsigned)
 
void side_nodal_soln (const Elem *, const Order, const unsigned int side, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln_on_side, const bool, const unsigned)
 
void side_nodal_soln (const Elem *elem, const Order o, const unsigned int side, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln_on_side, const bool add_p_level, const unsigned)
 
void side_nodal_soln (const Elem *elem, const Order o, const unsigned int side, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln_on_side, const bool add_p_level, const unsigned)
 
virtual unsigned int n_shape_functions () const override
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType, const Order)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *, const Order)
 
unsigned int n_dofs (const Elem *, const Order)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType, const Order)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *, const Order)
 
unsigned int n_dofs (const Elem *, const Order)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType, const Order)
 
unsigned int n_dofs (const ElemType, const Order)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *, const Order)
 
unsigned int n_dofs (const Elem *, const Order)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType, const Order o)
 
unsigned int n_dofs (const ElemType, const Order o)
 
unsigned int n_dofs (const ElemType, const Order o)
 
unsigned int n_dofs (const Elem *, const Order o)
 
unsigned int n_dofs (const Elem *, const Order o)
 
unsigned int n_dofs (const Elem *, const Order o)
 
unsigned int n_dofs (const Elem *, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType, const Order)
 
unsigned int n_dofs (const Elem *, const Order)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const ElemType t, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs (const Elem *e, const Order o)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_at_node (const Elem &, const Order, const unsigned int)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
unsigned int n_dofs_per_elem (const Elem &, const Order)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
virtual FEContinuity get_continuity () const override
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
FEContinuity get_continuity () const
 
virtual bool is_hierarchic () const override
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
bool is_hierarchic () const
 
void dofs_on_side (const Elem *const, const Order, unsigned int, std::vector< unsigned int > &di, bool)
 
void dofs_on_edge (const Elem *const, const Order, unsigned int, std::vector< unsigned int > &di, bool)
 
Point inverse_map (const Elem *, const Point &, const Real, const bool)
 
void inverse_map (const Elem *, const std::vector< Point > &, std::vector< Point > &, Real, bool)
 
virtual void reinit (const Elem *elem, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr) override
 This is at the core of this class.
 
virtual void reinit (const Elem *elem, const unsigned int side, const Real tolerance=TOLERANCE, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr) override
 Reinitializes all the physical element-dependent data based on the side of face.
 
virtual void reinit_dual_shape_coeffs (const Elem *elem, const std::vector< Point > &pts, const std::vector< Real > &JxW) override
 This re-computes the dual shape function coefficients.
 
virtual void reinit_default_dual_shape_coeffs (const Elem *elem) override
 This computes the default dual shape function coefficients.
 
virtual void edge_reinit (const Elem *elem, const unsigned int edge, const Real tolerance=TOLERANCE, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr) override
 Reinitializes all the physical element-dependent data based on the edge.
 
void edge_reinit (Elem const *, unsigned int, Real, const std::vector< Point > *const, const std::vector< Real > *const)
 Reinitializes all the physical element-dependent data based on the edge of the element elem.
 
virtual void side_map (const Elem *elem, const Elem *side, const unsigned int s, const std::vector< Point > &reference_side_points, std::vector< Point > &reference_points) override
 Computes the reference space quadrature points on the side of an element based on the side quadrature points.
 
void side_map (const Elem *, const Elem *, const unsigned int, const std::vector< Point > &, std::vector< Point > &)
 Computes the reference space quadrature points on the side of an element based on the side quadrature points.
 
virtual void edge_map (const Elem *elem, const Elem *edge, const unsigned int e, const std::vector< Point > &reference_edge_points, std::vector< Point > &reference_points)
 Computes the reference space quadrature points on the side of an element based on the edge quadrature points.
 
virtual void attach_quadrature_rule (QBase *q) override
 Provides the class with the quadrature rule, which provides the locations (on a reference element) where the shape functions are to be calculated.
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
virtual bool shapes_need_reinit () const override
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
bool shapes_need_reinit () const
 
std::unique_ptr< FEGenericBase< Real > > build (const unsigned int dim, const FEType &fet)
 
std::unique_ptr< FEGenericBase< RealGradient > > build (const unsigned int dim, const FEType &fet)
 
std::unique_ptr< FEGenericBase< Real > > build_InfFE (const unsigned int dim, const FEType &fet)
 
std::unique_ptr< FEGenericBase< RealGradient > > build_InfFE (const unsigned int, const FEType &)
 
const std::vector< std::vector< OutputShape > > & get_phi () const
 
const std::vector< std::vector< OutputShape > > & get_dual_phi () const
 
virtual void request_phi () const override
 request phi calculations
 
virtual void request_dual_phi () const override
 
const std::vector< std::vector< OutputGradient > > & get_dphi () const
 
const std::vector< std::vector< OutputGradient > > & get_dual_dphi () const
 
virtual void request_dphi () const override
 request dphi calculations
 
virtual void request_dual_dphi () const override
 
const DenseMatrix< Real > & get_dual_coeff () const
 
virtual_for_inffe const std::vector< std::vector< OutputShape > > & get_curl_phi () const
 
virtual_for_inffe const std::vector< std::vector< OutputDivergence > > & get_div_phi () const
 
const std::vector< std::vector< OutputShape > > & get_dphidx () const
 
const std::vector< std::vector< OutputShape > > & get_dphidy () const
 
const std::vector< std::vector< OutputShape > > & get_dphidz () const
 
const std::vector< std::vector< OutputShape > > & get_dphidxi () const
 
const std::vector< std::vector< OutputShape > > & get_dphideta () const
 
const std::vector< std::vector< OutputShape > > & get_dphidzeta () const
 
const std::vector< std::vector< OutputTensor > > & get_d2phi () const
 
const std::vector< std::vector< OutputTensor > > & get_dual_d2phi () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidx2 () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidxdy () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidxdz () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidy2 () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidydz () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidz2 () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidxi2 () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidxideta () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidxidzeta () const
 
const std::vector< std::vector< OutputShape > > & get_d2phideta2 () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidetadzeta () const
 
const std::vector< std::vector< OutputShape > > & get_d2phidzeta2 () const
 
const std::vector< OutputGradient > & get_dphase () const
 
virtual const std::vector< Real > & get_Sobolev_weight () const
 
virtual const std::vector< RealGradient > & get_Sobolev_dweight () const
 
virtual const std::vector< Real > & get_Sobolev_weightxR_sq () const
 
virtual const std::vector< RealGradient > & get_Sobolev_dweightxR_sq () const
 
virtual const std::vector< std::vector< OutputShape > > & get_phi_over_decayxR () const
 
virtual const std::vector< std::vector< OutputGradient > > & get_dphi_over_decayxR () const
 
virtual const std::vector< std::vector< OutputGradient > > & get_dphi_over_decay () const
 
virtual void print_phi (std::ostream &os) const override
 Prints the value of each shape function at each quadrature point.
 
virtual void print_dual_phi (std::ostream &os) const override
 
virtual void print_dphi (std::ostream &os) const override
 Prints the value of each shape function's derivative at each quadrature point.
 
virtual void print_dual_dphi (std::ostream &os) const override
 
virtual void print_d2phi (std::ostream &os) const override
 Prints the value of each shape function's second derivatives at each quadrature point.
 
virtual void print_dual_d2phi (std::ostream &os) const override
 
unsigned int get_dim () const
 
void get_nothing () const
 
virtual_for_inffe const std::vector< Point > & get_xyz () const
 
virtual const std::vector< Real > & get_JxWxdecay_sq () const
 This function is the variant of get_JxW() for InfFE.
 
virtual_for_inffe const std::vector< Real > & get_JxW () const
 
virtual_for_inffe const std::vector< RealGradient > & get_dxyzdxi () const
 
virtual_for_inffe const std::vector< RealGradient > & get_dxyzdeta () const
 
virtual_for_inffe const std::vector< RealGradient > & get_dxyzdzeta () const
 
virtual_for_inffe const std::vector< RealGradient > & get_d2xyzdxi2 () const
 
virtual_for_inffe const std::vector< RealGradient > & get_d2xyzdeta2 () const
 
virtual_for_inffe const std::vector< RealGradient > & get_d2xyzdzeta2 () const
 
virtual_for_inffe const std::vector< RealGradient > & get_d2xyzdxideta () const
 
virtual_for_inffe const std::vector< RealGradient > & get_d2xyzdxidzeta () const
 
virtual_for_inffe const std::vector< RealGradient > & get_d2xyzdetadzeta () const
 
virtual_for_inffe const std::vector< Real > & get_dxidx () const
 
virtual_for_inffe const std::vector< Real > & get_dxidy () const
 
virtual_for_inffe const std::vector< Real > & get_dxidz () const
 
virtual_for_inffe const std::vector< Real > & get_detadx () const
 
virtual_for_inffe const std::vector< Real > & get_detady () const
 
virtual_for_inffe const std::vector< Real > & get_detadz () const
 
virtual_for_inffe const std::vector< Real > & get_dzetadx () const
 
virtual_for_inffe const std::vector< Real > & get_dzetady () const
 
virtual_for_inffe const std::vector< Real > & get_dzetadz () const
 
virtual_for_inffe const std::vector< std::vector< Point > > & get_tangents () const
 
virtual_for_inffe const std::vector< Point > & get_normals () const
 
virtual_for_inffe const std::vector< Real > & get_curvatures () const
 
virtual unsigned int n_quadrature_points () const
 
const Elemget_elem () const
 
ElemType get_type () const
 
unsigned int get_p_level () const
 
FEType get_fe_type () const
 
Order get_order () const
 
void set_fe_order (int new_order)
 Sets the base FE order of the finite element.
 
FEFamily get_family () const
 
const FEMapget_fe_map () const
 
FEMapget_fe_map ()
 
void print_JxW (std::ostream &os) const
 Prints the Jacobian times the weight for each quadrature point.
 
void print_xyz (std::ostream &os) const
 Prints the spatial location of each quadrature point (on the physical element).
 
void print_info (std::ostream &os) const
 Prints all the relevant information about the current element.
 
void set_calculate_dual (const bool val)
 set calculate_dual as needed
 
void set_calculate_default_dual_coeff (const bool val)
 set calculate_default_dual_coeff as needed
 
void add_p_level_in_reinit (bool value)
 Indicate whether to add p-refinement levels in init/reinit methods.
 
bool add_p_level_in_reinit () const
 Whether to add p-refinement levels in init/reinit methods.
 

Static Public Member Functions

static OutputShape shape (const ElemType t, const Order o, const unsigned int i, const Point &p)
 
static OutputShape shape (const Elem *elem, const Order o, const unsigned int i, const Point &p, const bool add_p_level=true)
 
static OutputShape shape (const FEType fet, const Elem *elem, const unsigned int i, const Point &p, const bool add_p_level=true)
 
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 \( i^{th} \) 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 \( i^{th} \) shape functions, evaluated at all points in p.
 
static OutputShape shape_deriv (const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
 
static OutputShape shape_deriv (const Elem *elem, const Order o, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level=true)
 
static OutputShape shape_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level=true)
 
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 \( j^{th} \) derivative of the \( i^{th} \) shape function, evaluated at all points 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 shape functions, evaluated at all points in p.
 
static OutputShape shape_second_deriv (const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)
 
static OutputShape shape_second_deriv (const Elem *elem, const Order o, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level=true)
 
static OutputShape shape_second_deriv (const FEType fet, const Elem *elem, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level=true)
 
static void nodal_soln (const Elem *elem, const Order o, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, bool add_p_level=true, const unsigned vdim=1)
 Build the nodal soln from the element soln.
 
static void side_nodal_soln (const Elem *elem, const Order o, const unsigned int side, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln_on_side, bool add_p_level=true, const unsigned vdim=1)
 Build the nodal soln on one side from the (full) element soln.
 
static unsigned int n_shape_functions (const ElemType t, const Order o)
 
static unsigned int n_dofs (const ElemType t, const Order o)
 
static unsigned int n_dofs (const Elem *e, const Order o)
 
static unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
static unsigned int n_dofs_at_node (const Elem &e, const Order o, const unsigned int n)
 
static unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
static unsigned int n_dofs_per_elem (const Elem &e, const Order o)
 
static void dofs_on_side (const Elem *const elem, const Order o, unsigned int s, std::vector< unsigned int > &di, bool add_p_level=true)
 Fills the vector di with the local degree of freedom indices associated with side s of element elem.
 
static void dofs_on_edge (const Elem *const elem, const Order o, unsigned int e, std::vector< unsigned int > &di, bool add_p_level=true)
 Fills the vector di with the local degree of freedom indices associated with edge e of element elem.
 
static Point inverse_map (const Elem *elem, const Point &p, const Real tolerance=TOLERANCE, const bool secure=true)
 
static void inverse_map (const Elem *elem, const std::vector< Point > &physical_points, std::vector< Point > &reference_points, const Real tolerance=TOLERANCE, const bool secure=true)
 
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 variable number var_number, using element-specific optimizations if possible.
 
static Point map (const Elem *elem, const Point &reference_point)
 
static Point map_xi (const Elem *elem, const Point &reference_point)
 
static Point map_eta (const Elem *elem, const Point &reference_point)
 
static Point map_zeta (const Elem *elem, const Point &reference_point)
 
static std::unique_ptr< FEGenericBasebuild (const unsigned int dim, const FEType &type)
 Builds a specific finite element type.
 
static std::unique_ptr< FEGenericBasebuild_InfFE (const unsigned int dim, const FEType &type)
 Builds a specific infinite element type.
 
static void compute_proj_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 variable number var_number, using generic projections.
 
static void coarsened_dof_values (const NumericVector< Number > &global_vector, const DofMap &dof_map, const Elem *coarse_elem, DenseVector< Number > &coarse_dofs, const unsigned int var, const bool use_old_dof_indices=false)
 Creates a local projection on coarse_elem, based on the DoF values in global_vector for it's children.
 
static void coarsened_dof_values (const NumericVector< Number > &global_vector, const DofMap &dof_map, const Elem *coarse_elem, DenseVector< Number > &coarse_dofs, const bool use_old_dof_indices=false)
 Creates a local projection on coarse_elem, based on the DoF values in global_vector for it's children.
 
static void compute_periodic_constraints (DofConstraints &constraints, DofMap &dof_map, const PeriodicBoundaries &boundaries, const MeshBase &mesh, const PointLocatorBase *point_locator, const unsigned int variable_number, const Elem *elem)
 Computes the constraint matrix contributions (for meshes with periodic boundary conditions) corresponding to variable number var_number, using generic projections.
 
static bool on_reference_element (const Point &p, const ElemType t, const Real eps=TOLERANCE)
 
static void get_refspace_nodes (const ElemType t, std::vector< Point > &nodes)
 
static void compute_node_constraints (NodeConstraints &constraints, const Elem *elem)
 Computes the nodal constraint contributions (for non-conforming adapted meshes), using Lagrange geometry.
 
static void compute_periodic_node_constraints (NodeConstraints &constraints, const PeriodicBoundaries &boundaries, const MeshBase &mesh, const PointLocatorBase *point_locator, const Elem *elem)
 Computes the node position constraint equation contributions (for meshes with periodic boundary conditions)
 
static void print_info (std::ostream &out_stream=libMesh::out)
 Prints the reference information, by default to libMesh::out.
 
static std::string get_info ()
 Gets a string containing the reference information.
 
static unsigned int n_objects ()
 Prints the number of outstanding (created, but not yet destroyed) objects.
 
static void enable_print_counter_info ()
 Methods to enable/disable the reference counter output from print_info().
 
static void disable_print_counter_info ()
 

Protected Types

typedef std::map< std::string, std::pair< unsigned int, unsigned int > > Counts
 Data structure to log the information.
 

Protected Member Functions

virtual void init_shape_functions (const std::vector< Point > &qp, const Elem *e)
 Update the various member data fields phi, dphidxi, dphideta, dphidzeta, etc.
 
void init_dual_shape_functions (unsigned int n_shapes, unsigned int n_qp)
 Init dual_phi and potentially dual_dphi, dual_d2phi.
 
virtual void init_base_shape_functions (const std::vector< Point > &qp, const Elem *e) override
 Initialize the data fields for the base of an an infinite element.
 
void cache (const Elem *elem)
 Repopulate the element cache with the node locations, edge and face orientations of the element elem.
 
bool matches_cache (const Elem *elem)
 Check if the node locations, edge and face orientations held in the element cache match those of element elem.
 
virtual_for_inffe void determine_calculations ()
 Determine which values are to be calculated, for both the FE itself and for the FEMap.
 
bool calculating_nothing () const
 
virtual void compute_shape_functions (const Elem *elem, const std::vector< Point > &qp) override
 After having updated the jacobian and the transformation from local to global coordinates in FEMap::compute_map(), the first derivatives of the shape functions are transformed to global coordinates, giving dphi, dphidx, dphidy, and dphidz.
 
void compute_dual_shape_coeffs (const std::vector< Real > &JxW, const std::vector< std::vector< OutputShape > > &phi)
 Compute the dual basis coefficients dual_coeff we rely on the JxW (or weights) and the phi values, which can come from default or customized qrule.
 
void compute_dual_shape_coeffs (const std::vector< Real > &, const std::vector< std::vector< OutputShape > > &)
 
void compute_dual_shape_coeffs (const std::vector< Real > &JxW, const std::vector< std::vector< OutputShape > > &phi_vals)
 
void compute_dual_shape_functions ()
 Compute dual_phi, dual_dphi, dual_d2phi It is only valid for this to be called after reinit has occurred with a quadrature rule.
 
void compute_dual_shape_functions ()
 
void compute_dual_shape_functions ()
 
void increment_constructor_count (const std::string &name) noexcept
 Increments the construction counter.
 
void increment_destructor_count (const std::string &name) noexcept
 Increments the destruction counter.
 

Static Protected Member Functions

static void default_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)
 A default implementation for all_shape_derivs.
 
static void default_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)
 A default implementation for shapes.
 
static void default_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)
 A default implementation for all_shapes.
 
static void default_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)
 A default implementation for shape_derivs.
 
static void default_side_nodal_soln (const Elem *elem, const Order o, const unsigned int side, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln_on_side, bool add_p_level=true, const unsigned vdim=1)
 A default implementation for side_nodal_soln.
 

Protected Attributes

std::vector< Pointcached_nodes
 Vectors holding the node locations, edge and face orientations of the last element we cached.
 
std::vector< bool > cached_edges
 
std::vector< bool > cached_faces
 
ElemType last_side
 The last side and last edge we did a reinit on.
 
ElemType last_edge
 
std::unique_ptr< FETransformationBase< FEOutputType< T >::type > > _fe_trans
 Object that handles computing shape function values, gradients, etc in the physical domain.
 
std::vector< std::vector< OutputShape > > phi
 Shape function values.
 
std::vector< std::vector< OutputShape > > dual_phi
 
std::vector< std::vector< OutputGradient > > dphi
 Shape function derivative values.
 
std::vector< std::vector< OutputGradient > > dual_dphi
 
DenseMatrix< Realdual_coeff
 Coefficient matrix for the dual basis.
 
std::vector< std::vector< OutputShape > > curl_phi
 Shape function curl values.
 
std::vector< std::vector< OutputDivergence > > div_phi
 Shape function divergence values.
 
std::vector< std::vector< OutputShape > > dphidxi
 Shape function derivatives in the xi direction.
 
std::vector< std::vector< OutputShape > > dphideta
 Shape function derivatives in the eta direction.
 
std::vector< std::vector< OutputShape > > dphidzeta
 Shape function derivatives in the zeta direction.
 
std::vector< std::vector< OutputShape > > dphidx
 Shape function derivatives in the x direction.
 
std::vector< std::vector< OutputShape > > dphidy
 Shape function derivatives in the y direction.
 
std::vector< std::vector< OutputShape > > dphidz
 Shape function derivatives in the z direction.
 
std::vector< std::vector< OutputTensor > > d2phi
 Shape function second derivative values.
 
std::vector< std::vector< OutputTensor > > dual_d2phi
 
std::vector< std::vector< OutputShape > > d2phidxi2
 Shape function second derivatives in the xi direction.
 
std::vector< std::vector< OutputShape > > d2phidxideta
 Shape function second derivatives in the xi-eta direction.
 
std::vector< std::vector< OutputShape > > d2phidxidzeta
 Shape function second derivatives in the xi-zeta direction.
 
std::vector< std::vector< OutputShape > > d2phideta2
 Shape function second derivatives in the eta direction.
 
std::vector< std::vector< OutputShape > > d2phidetadzeta
 Shape function second derivatives in the eta-zeta direction.
 
std::vector< std::vector< OutputShape > > d2phidzeta2
 Shape function second derivatives in the zeta direction.
 
std::vector< std::vector< OutputShape > > d2phidx2
 Shape function second derivatives in the x direction.
 
std::vector< std::vector< OutputShape > > d2phidxdy
 Shape function second derivatives in the x-y direction.
 
std::vector< std::vector< OutputShape > > d2phidxdz
 Shape function second derivatives in the x-z direction.
 
std::vector< std::vector< OutputShape > > d2phidy2
 Shape function second derivatives in the y direction.
 
std::vector< std::vector< OutputShape > > d2phidydz
 Shape function second derivatives in the y-z direction.
 
std::vector< std::vector< OutputShape > > d2phidz2
 Shape function second derivatives in the z direction.
 
std::vector< OutputGradientdphase
 Used for certain infinite element families: the first derivatives of the phase term in global coordinates, over all quadrature points.
 
std::vector< RealGradientdweight
 Used for certain infinite element families: the global derivative of the additional radial weight \( 1/{r^2} \), over all quadrature points.
 
std::vector< Realweight
 Used for certain infinite element families: the additional radial weight \( 1/{r^2} \) in local coordinates, over all quadrature points.
 
std::unique_ptr< FEMap_fe_map
 
const unsigned int dim
 The dimensionality of the object.
 
bool calculations_started
 Have calculations with this object already been started? Then all get_* functions should already have been called.
 
bool calculate_dual
 Are we calculating dual basis?
 
bool calculate_default_dual_coeff
 Are we calculating the coefficient for the dual basis using the default qrule?
 
bool calculate_nothing
 Are we potentially deliberately calculating nothing?
 
bool calculate_map
 Are we calculating mapping functions?
 
bool calculate_phi
 Should we calculate shape functions?
 
bool calculate_dphi
 Should we calculate shape function gradients?
 
bool calculate_d2phi
 Should we calculate shape function hessians?
 
const bool calculate_d2phi =false
 
bool calculate_curl_phi
 Should we calculate shape function curls?
 
bool calculate_div_phi
 Should we calculate shape function divergences?
 
bool calculate_dphiref
 Should we calculate reference shape function gradients?
 
FEType fe_type
 The finite element type for this object.
 
ElemType _elem_type
 The element type the current data structures were set up for.
 
const Elem_elem
 The element the current data structures were set up for.
 
unsigned int _elem_p_level
 The element p-refinement level the current data structures are set up for.
 
unsigned int _p_level
 The p refinement level the current data structures are set up for.
 
QBaseqrule
 A pointer to the quadrature rule employed.
 
bool shapes_on_quadrature
 A flag indicating if current data structures correspond to quadrature rule points.
 
unsigned int _n_total_qp
 The total number of quadrature points for the current configuration.
 
bool _add_p_level_in_reinit
 Whether to add p-refinement levels in init/reinit methods.
 

Static Protected Attributes

static Counts _counts
 Actually holds the data.
 
static Threads::atomic< unsigned int_n_objects
 The number of objects.
 
static Threads::spin_mutex _mutex
 Mutual exclusion object to enable thread-safe reference counting.
 
static bool _enable_print_counter = true
 Flag to control whether reference count information is printed when print_info is called.
 

Detailed Description

template<unsigned int Dim>
class libMesh::FELagrangeVec< Dim >

FELagrangeVec objects are used for working with vector-valued finite elements.

Author
Paul T. Bauman
Date
2013

Definition at line 1243 of file fe.h.

Member Typedef Documentation

◆ Counts

typedef std::map<std::string, std::pair<unsigned int, unsigned int> > libMesh::ReferenceCounter::Counts
protectedinherited

Data structure to log the information.

The log is identified by the class name.

Definition at line 119 of file reference_counter.h.

◆ OutputDivergence

typedef TensorTools::DecrementRank<OutputShape>::type libMesh::FEGenericBase< FEOutputType< T >::type >::OutputDivergence
inherited

Definition at line 122 of file fe_base.h.

◆ OutputGradient

typedef TensorTools::IncrementRank<OutputShape>::type libMesh::FEGenericBase< FEOutputType< T >::type >::OutputGradient
inherited

Definition at line 120 of file fe_base.h.

◆ OutputNumber

typedef TensorTools::MakeNumber<OutputShape>::type libMesh::FEGenericBase< FEOutputType< T >::type >::OutputNumber
inherited

Definition at line 123 of file fe_base.h.

◆ OutputNumberDivergence

typedef TensorTools::DecrementRank<OutputNumber>::type libMesh::FEGenericBase< FEOutputType< T >::type >::OutputNumberDivergence
inherited

Definition at line 126 of file fe_base.h.

◆ OutputNumberGradient

typedef TensorTools::IncrementRank<OutputNumber>::type libMesh::FEGenericBase< FEOutputType< T >::type >::OutputNumberGradient
inherited

Definition at line 124 of file fe_base.h.

◆ OutputNumberTensor

typedef TensorTools::IncrementRank<OutputNumberGradient>::type libMesh::FEGenericBase< FEOutputType< T >::type >::OutputNumberTensor
inherited

Definition at line 125 of file fe_base.h.

◆ OutputShape

typedef FEGenericBase<typenameFEOutputType<T>::type>::OutputShape libMesh::FE< Dim, T >::OutputShape
inherited

Definition at line 139 of file fe.h.

◆ OutputTensor

typedef TensorTools::IncrementRank<OutputGradient>::type libMesh::FEGenericBase< FEOutputType< T >::type >::OutputTensor
inherited

Definition at line 121 of file fe_base.h.

Constructor & Destructor Documentation

◆ FELagrangeVec()

template<unsigned int Dim>
libMesh::FELagrangeVec< Dim >::FELagrangeVec ( const FEType fet)
inlineexplicit

Constructor.

Creates a vector Lagrange finite element to be used in dimension Dim.

Definition at line 1252 of file fe.h.

1252 :
1253 FE<Dim,LAGRANGE_VEC> (fet)
1254 {}

Member Function Documentation

◆ add_p_level_in_reinit() [1/2]

bool libMesh::FEAbstract::add_p_level_in_reinit ( ) const
inlineinherited

Whether to add p-refinement levels in init/reinit methods.

Definition at line 636 of file fe_abstract.h.

636{ return _add_p_level_in_reinit; }
bool _add_p_level_in_reinit
Whether to add p-refinement levels in init/reinit methods.

References libMesh::FEAbstract::_add_p_level_in_reinit.

◆ add_p_level_in_reinit() [2/2]

void libMesh::FEAbstract::add_p_level_in_reinit ( bool  value)
inlineinherited

Indicate whether to add p-refinement levels in init/reinit methods.

Definition at line 631 of file fe_abstract.h.

static const bool value
Definition xdr_io.C:55

References libMesh::FEAbstract::_add_p_level_in_reinit, and value.

Referenced by libMesh::FEMContext::build_new_fe().

◆ all_shape_derivs() [1/5]

void libMesh::FE< 3, LAGRANGE >::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 
)
inherited

Definition at line 238 of file fe_lagrange_shape_3D.C.

244{
245 const ElemType type = elem->type();
246
247 // Just loop on the harder-to-optimize cases
248 if (type != HEX8 && type != HEX27)
249 {
251 (elem,o,p,comps,add_p_level);
252 return;
253 }
254
255#if LIBMESH_DIM == 3
256
257 libmesh_assert(comps[0]);
258 libmesh_assert(comps[1]);
259 libmesh_assert(comps[2]);
260 const unsigned int n_sf = comps[0]->size();
261
262 switch (o)
263 {
264 // linear Lagrange shape functions
265 case FIRST:
266 {
267 switch (type)
268 {
269 // trilinear hexahedral shape functions
270 case HEX8:
271 case HEX20:
272 case HEX27:
273 {
274 libmesh_assert_equal_to (n_sf, 8);
275
276 // 0 1 2 3 4 5 6 7
277 static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0};
278 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1};
279 static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1};
280
281 for (auto qp : index_range(p))
282 {
283 const Point & q_point = p[qp];
284 // Compute hex shape functions as a tensor-product
285 const Real xi = q_point(0);
286 const Real eta = q_point(1);
287 const Real zeta = q_point(2);
288
289 // one_d_shapes[dim][i] = phi_i(p(dim))
290 Real one_d_shapes[3][2] = {
297
298 // one_d_derivs[dim][i] = dphi_i/dxi(p(dim))
299 Real one_d_derivs[3][2] = {
306
307 for (unsigned int i : make_range(n_sf))
308 {
309 (*comps[0])[i][qp] = one_d_derivs[0][i0[i]] *
310 one_d_shapes[1][i1[i]] *
311 one_d_shapes[2][i2[i]];
312 (*comps[1])[i][qp] = one_d_shapes[0][i0[i]] *
313 one_d_derivs[1][i1[i]] *
314 one_d_shapes[2][i2[i]];
315 (*comps[2])[i][qp] = one_d_shapes[0][i0[i]] *
316 one_d_shapes[1][i1[i]] *
317 one_d_derivs[2][i2[i]];
318 }
319 }
320 return;
321 }
322
323 default:
324 libmesh_error(); // How did we get here?
325 }
326 }
327
328
329 // quadratic Lagrange shape functions
330 case SECOND:
331 {
332 switch (type)
333 {
334 // triquadratic hexahedral shape functions
335 case HEX8:
336// TODO: refactor to optimize this
337// libmesh_assert_msg(T == L2_LAGRANGE,
338// "High order on first order elements only supported for L2 families");
339 libmesh_fallthrough();
340 case HEX27:
341 {
342 libmesh_assert_less_equal (n_sf, 27);
343
344 // The only way to make any sense of this
345 // is to look at the mgflo/mg2/mgf documentation
346 // and make the cut-out cube!
347 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
348 static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 2, 0, 2, 2, 1, 2, 0, 2, 2};
349 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 2, 2, 0, 2, 1, 2, 2, 2};
350 static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, 1, 2};
351
352 for (auto qp : index_range(p))
353 {
354 const Point & q_point = p[qp];
355 // Compute hex shape functions as a tensor-product
356 const Real xi = q_point(0);
357 const Real eta = q_point(1);
358 const Real zeta = q_point(2);
359
360 // one_d_shapes[dim][i] = phi_i(p(dim))
361 Real one_d_shapes[3][3] = {
371
372 // one_d_derivs[dim][i] = dphi_i/dxi(p(dim))
373 Real one_d_derivs[3][3] = {
383
384 for (unsigned int i : make_range(n_sf))
385 {
386 (*comps[0])[i][qp] = one_d_derivs[0][i0[i]] *
387 one_d_shapes[1][i1[i]] *
388 one_d_shapes[2][i2[i]];
389 (*comps[1])[i][qp] = one_d_shapes[0][i0[i]] *
390 one_d_derivs[1][i1[i]] *
391 one_d_shapes[2][i2[i]];
392 (*comps[2])[i][qp] = one_d_shapes[0][i0[i]] *
393 one_d_shapes[1][i1[i]] *
394 one_d_derivs[2][i2[i]];
395 }
396 }
397 return;
398 }
399
400 default:
401 libmesh_error(); // How did we get here?
402 }
403 }
404
405 // unsupported order
406 default:
407 libmesh_error_msg("ERROR: Unsupported 3D FE order on HEX!: " << o);
408 }
409#else // LIBMESH_DIM != 3
410 libmesh_ignore(elem, o, p, v, add_p_level);
411 libmesh_not_implemented();
412#endif // LIBMESH_DIM == 3
413}
virtual ElemType type() const =0
static void default_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)
A default implementation for all_shape_derivs.
Definition fe.C:736
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition point.h:40
Real fe_lagrange_1D_quadratic_shape(const unsigned int i, const Real xi)
auto index_range(const T &sizable)
Helper function that returns an IntRange<std::size_t> representing all the indices of the passed-in v...
Definition int_range.h:153
Real fe_lagrange_1D_quadratic_shape_deriv(const unsigned int i, const unsigned int libmesh_dbg_var(j), const Real xi)
ElemType
Defines an enum for geometric element types.
void libmesh_ignore(const Args &...)
libmesh_assert(ctx)
Real fe_lagrange_1D_linear_shape(const unsigned int i, const Real xi)
Real fe_lagrange_1D_linear_shape_deriv(const unsigned int i, const unsigned int libmesh_dbg_var(j), const Real)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
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...
Definition int_range.h:176

◆ all_shape_derivs() [2/5]

static void libMesh::FE< Dim, T >::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 
)
staticinherited

Fills comps with dphidxi (and in higher dimensions, eta/zeta) derivative component values for all shape functions, evaluated at all points in p.

You must specify element order directly. Output component arrays in comps should already be the appropriate size.

On a p-refined element, o should be the base order of the element if add_p_level is left true, or can be the base order of the element if add_p_level is set to false.

◆ all_shape_derivs() [3/5]

void libMesh::FE< 1, RATIONAL_BERNSTEIN >::all_shape_derivs ( const Elem elem,
const Order  o,
const std::vector< Point > &  p,
std::vector< std::vector< Real > > *  comps[3],
const bool  add_p_level 
)
inherited

Definition at line 224 of file fe_rational_shape_1D.C.

229{
230 FEType underlying_fe_type(o, _underlying_fe_family);
231
232 rational_all_shape_derivs (*elem, underlying_fe_type, p,
233 comps, add_p_level);
234}
class FEType hides (possibly multiple) FEFamily and approximation orders, thereby enabling specialize...
Definition fe_type.h:197
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)
Definition fe.C:1338

◆ all_shape_derivs() [4/5]

void libMesh::FE< 2, RATIONAL_BERNSTEIN >::all_shape_derivs ( const Elem elem,
const Order  o,
const std::vector< Point > &  p,
std::vector< std::vector< Real > > *  comps[3],
const bool  add_p_level 
)
inherited

Definition at line 222 of file fe_rational_shape_2D.C.

227{
228 FEType underlying_fe_type(o, _underlying_fe_family);
229
230 rational_all_shape_derivs (*elem, underlying_fe_type, p,
231 comps, add_p_level);
232}

◆ all_shape_derivs() [5/5]

void libMesh::FE< 3, RATIONAL_BERNSTEIN >::all_shape_derivs ( const Elem elem,
const Order  o,
const std::vector< Point > &  p,
std::vector< std::vector< Real > > *  comps[3],
const bool  add_p_level 
)
inherited

Definition at line 218 of file fe_rational_shape_3D.C.

223{
224 FEType underlying_fe_type(o, _underlying_fe_family);
225
226 rational_all_shape_derivs (*elem, underlying_fe_type, p,
227 comps, add_p_level);
228}

◆ all_shapes() [1/4]

void libMesh::FE< 1, RATIONAL_BERNSTEIN >::all_shapes ( const Elem elem,
const Order  o,
const std::vector< Point > &  p,
std::vector< std::vector< OutputShape > > &  v,
const bool  add_p_level 
)
inherited

Definition at line 193 of file fe_rational_shape_1D.C.

199{
200 FEType underlying_fe_type(o, _underlying_fe_family);
201
202 rational_all_shapes(*elem, underlying_fe_type, p, v, add_p_level);
203}
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)
Definition fe.C:1308

◆ all_shapes() [2/4]

void libMesh::FE< 2, RATIONAL_BERNSTEIN >::all_shapes ( const Elem elem,
const Order  o,
const std::vector< Point > &  p,
std::vector< std::vector< OutputShape > > &  v,
const bool  add_p_level 
)
inherited

Definition at line 191 of file fe_rational_shape_2D.C.

197{
198 FEType underlying_fe_type(o, _underlying_fe_family);
199
200 rational_all_shapes(*elem, underlying_fe_type, p, v, add_p_level);
201}

◆ all_shapes() [3/4]

void libMesh::FE< 3, RATIONAL_BERNSTEIN >::all_shapes ( const Elem elem,
const Order  o,
const std::vector< Point > &  p,
std::vector< std::vector< OutputShape > > &  v,
const bool  add_p_level 
)
inherited

Definition at line 187 of file fe_rational_shape_3D.C.

193{
194 FEType underlying_fe_type(o, _underlying_fe_family);
195
196 rational_all_shapes(*elem, underlying_fe_type, p, v, add_p_level);
197}

◆ all_shapes() [4/4]

static void libMesh::FE< Dim, T >::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 
)
staticinherited

Fills v[i][qp] with the values of the \( i^{th} \) shape functions, evaluated at all points in p.

You must specify element order directly. v should already be the appropriate size.

On a p-refined element, o should be the base order of the element if add_p_level is left true, or can be the base order of the element if add_p_level is set to false.

◆ attach_quadrature_rule()

void libMesh::FE< Dim, T >::attach_quadrature_rule ( QBase q)
overridevirtualinherited

Provides the class with the quadrature rule, which provides the locations (on a reference element) where the shape functions are to be calculated.

Implements libMesh::FEAbstract.

Definition at line 637 of file fe.C.

88{
90 this->qrule = q;
91 // make sure we don't cache results from a previous quadrature rule
92 this->_elem = nullptr;
94 return;
95}
const Elem * _elem
The element the current data structures were set up for.
ElemType _elem_type
The element type the current data structures were set up for.
QBase * qrule
A pointer to the quadrature rule employed.

◆ build() [1/3]

std::unique_ptr< FEGenericBase< Real > > libMesh::FEGenericBase< Real >::build ( const unsigned int  dim,
const FEType fet 
)
inherited

Definition at line 191 of file fe_base.C.

193{
194 switch (dim)
195 {
196 // 0D
197 case 0:
198 {
199 switch (fet.family)
200 {
201 case CLOUGH:
202 return std::make_unique<FE<0,CLOUGH>>(fet);
203
204 case HERMITE:
205 return std::make_unique<FE<0,HERMITE>>(fet);
206
207 case LAGRANGE:
208 return std::make_unique<FE<0,LAGRANGE>>(fet);
209
210 case L2_LAGRANGE:
211 return std::make_unique<FE<0,L2_LAGRANGE>>(fet);
212
213 case HIERARCHIC:
214 return std::make_unique<FE<0,HIERARCHIC>>(fet);
215
216 case L2_HIERARCHIC:
217 return std::make_unique<FE<0,L2_HIERARCHIC>>(fet);
218
219 case SIDE_HIERARCHIC:
220 return std::make_unique<FE<0,SIDE_HIERARCHIC>>(fet);
221
222 case MONOMIAL:
223 return std::make_unique<FE<0,MONOMIAL>>(fet);
224
225#ifdef LIBMESH_ENABLE_HIGHER_ORDER_SHAPES
226 case SZABAB:
227 return std::make_unique<FE<0,SZABAB>>(fet);
228
229 case BERNSTEIN:
230 return std::make_unique<FE<0,BERNSTEIN>>(fet);
231
233 return std::make_unique<FE<0,RATIONAL_BERNSTEIN>>(fet);
234#endif
235
236 case XYZ:
237 return std::make_unique<FEXYZ<0>>(fet);
238
239 case SCALAR:
240 return std::make_unique<FEScalar<0>>(fet);
241
242 default:
243 libmesh_error_msg("ERROR: Bad FEType.family == " << Utility::enum_to_string(fet.family));
244 }
245 }
246 // 1D
247 case 1:
248 {
249 switch (fet.family)
250 {
251 case CLOUGH:
252 return std::make_unique<FE<1,CLOUGH>>(fet);
253
254 case HERMITE:
255 return std::make_unique<FE<1,HERMITE>>(fet);
256
257 case LAGRANGE:
258 return std::make_unique<FE<1,LAGRANGE>>(fet);
259
260 case L2_LAGRANGE:
261 return std::make_unique<FE<1,L2_LAGRANGE>>(fet);
262
263 case HIERARCHIC:
264 return std::make_unique<FE<1,HIERARCHIC>>(fet);
265
266 case L2_HIERARCHIC:
267 return std::make_unique<FE<1,L2_HIERARCHIC>>(fet);
268
269 case SIDE_HIERARCHIC:
270 return std::make_unique<FE<1,SIDE_HIERARCHIC>>(fet);
271
272 case MONOMIAL:
273 return std::make_unique<FE<1,MONOMIAL>>(fet);
274
275#ifdef LIBMESH_ENABLE_HIGHER_ORDER_SHAPES
276 case SZABAB:
277 return std::make_unique<FE<1,SZABAB>>(fet);
278
279 case BERNSTEIN:
280 return std::make_unique<FE<1,BERNSTEIN>>(fet);
281
283 return std::make_unique<FE<1,RATIONAL_BERNSTEIN>>(fet);
284#endif
285
286 case XYZ:
287 return std::make_unique<FEXYZ<1>>(fet);
288
289 case SCALAR:
290 return std::make_unique<FEScalar<1>>(fet);
291
292 default:
293 libmesh_error_msg("ERROR: Bad FEType.family == " << Utility::enum_to_string(fet.family));
294 }
295 }
296
297
298 // 2D
299 case 2:
300 {
301 switch (fet.family)
302 {
303 case CLOUGH:
304 return std::make_unique<FE<2,CLOUGH>>(fet);
305
306 case HERMITE:
307 return std::make_unique<FE<2,HERMITE>>(fet);
308
309 case LAGRANGE:
310 return std::make_unique<FE<2,LAGRANGE>>(fet);
311
312 case L2_LAGRANGE:
313 return std::make_unique<FE<2,L2_LAGRANGE>>(fet);
314
315 case HIERARCHIC:
316 return std::make_unique<FE<2,HIERARCHIC>>(fet);
317
318 case L2_HIERARCHIC:
319 return std::make_unique<FE<2,L2_HIERARCHIC>>(fet);
320
321 case SIDE_HIERARCHIC:
322 return std::make_unique<FE<2,SIDE_HIERARCHIC>>(fet);
323
324 case MONOMIAL:
325 return std::make_unique<FE<2,MONOMIAL>>(fet);
326
327#ifdef LIBMESH_ENABLE_HIGHER_ORDER_SHAPES
328 case SZABAB:
329 return std::make_unique<FE<2,SZABAB>>(fet);
330
331 case BERNSTEIN:
332 return std::make_unique<FE<2,BERNSTEIN>>(fet);
333
335 return std::make_unique<FE<2,RATIONAL_BERNSTEIN>>(fet);
336#endif
337
338 case XYZ:
339 return std::make_unique<FEXYZ<2>>(fet);
340
341 case SCALAR:
342 return std::make_unique<FEScalar<2>>(fet);
343
344 case SUBDIVISION:
345 return std::make_unique<FESubdivision>(fet);
346
347 default:
348 libmesh_error_msg("ERROR: Bad FEType.family == " << Utility::enum_to_string(fet.family));
349 }
350 }
351
352
353 // 3D
354 case 3:
355 {
356 switch (fet.family)
357 {
358 case CLOUGH:
359 libmesh_error_msg("ERROR: Clough-Tocher elements currently only support 1D and 2D");
360
361 case HERMITE:
362 return std::make_unique<FE<3,HERMITE>>(fet);
363
364 case LAGRANGE:
365 return std::make_unique<FE<3,LAGRANGE>>(fet);
366
367 case L2_LAGRANGE:
368 return std::make_unique<FE<3,L2_LAGRANGE>>(fet);
369
370 case HIERARCHIC:
371 return std::make_unique<FE<3,HIERARCHIC>>(fet);
372
373 case L2_HIERARCHIC:
374 return std::make_unique<FE<3,L2_HIERARCHIC>>(fet);
375
376 case SIDE_HIERARCHIC:
377 return std::make_unique<FE<3,SIDE_HIERARCHIC>>(fet);
378
379 case MONOMIAL:
380 return std::make_unique<FE<3,MONOMIAL>>(fet);
381
382#ifdef LIBMESH_ENABLE_HIGHER_ORDER_SHAPES
383 case SZABAB:
384 return std::make_unique<FE<3,SZABAB>>(fet);
385
386 case BERNSTEIN:
387 return std::make_unique<FE<3,BERNSTEIN>>(fet);
388
390 return std::make_unique<FE<3,RATIONAL_BERNSTEIN>>(fet);
391#endif
392
393 case XYZ:
394 return std::make_unique<FEXYZ<3>>(fet);
395
396 case SCALAR:
397 return std::make_unique<FEScalar<3>>(fet);
398
399 default:
400 libmesh_error_msg("ERROR: Bad FEType.family == " << Utility::enum_to_string(fet.family));
401 }
402 }
403
404 default:
405 libmesh_error_msg("Invalid dimension dim = " << dim);
406 }
407}
const unsigned int dim
The dimensionality of the object.
FEFamily family
The type of finite element.
Definition fe_type.h:228
std::string enum_to_string(const T e)
@ RATIONAL_BERNSTEIN

◆ build() [2/3]

std::unique_ptr< FEGenericBase< RealGradient > > libMesh::FEGenericBase< RealGradient >::build ( const unsigned int  dim,
const FEType fet 
)
inherited

Definition at line 413 of file fe_base.C.

415{
416 switch (dim)
417 {
418 // 0D
419 case 0:
420 {
421 switch (fet.family)
422 {
423 case HIERARCHIC_VEC:
424 return std::make_unique<FEHierarchicVec<0>>(fet);
425
427 return std::make_unique<FEL2HierarchicVec<0>>(fet);
428
429 case LAGRANGE_VEC:
430 return std::make_unique<FELagrangeVec<0>>(fet);
431
432 case L2_LAGRANGE_VEC:
433 return std::make_unique<FEL2LagrangeVec<0>>(fet);
434
435 case MONOMIAL_VEC:
436 return std::make_unique<FEMonomialVec<0>>(fet);
437
438 default:
439 libmesh_error_msg("ERROR: Bad FEType.family == " << Utility::enum_to_string(fet.family));
440 }
441 }
442 case 1:
443 {
444 switch (fet.family)
445 {
446 case HIERARCHIC_VEC:
447 return std::make_unique<FEHierarchicVec<1>>(fet);
448
450 return std::make_unique<FEL2HierarchicVec<1>>(fet);
451
452 case LAGRANGE_VEC:
453 return std::make_unique<FELagrangeVec<1>>(fet);
454
455 case L2_LAGRANGE_VEC:
456 return std::make_unique<FEL2LagrangeVec<1>>(fet);
457
458 case MONOMIAL_VEC:
459 return std::make_unique<FEMonomialVec<1>>(fet);
460
461 default:
462 libmesh_error_msg("ERROR: Bad FEType.family == " << Utility::enum_to_string(fet.family));
463 }
464 }
465 case 2:
466 {
467 switch (fet.family)
468 {
469 case HIERARCHIC_VEC:
470 return std::make_unique<FEHierarchicVec<2>>(fet);
471
473 return std::make_unique<FEL2HierarchicVec<2>>(fet);
474
475 case LAGRANGE_VEC:
476 return std::make_unique<FELagrangeVec<2>>(fet);
477
478 case L2_LAGRANGE_VEC:
479 return std::make_unique<FEL2LagrangeVec<2>>(fet);
480
481 case MONOMIAL_VEC:
482 return std::make_unique<FEMonomialVec<2>>(fet);
483
484 case NEDELEC_ONE:
485 return std::make_unique<FENedelecOne<2>>(fet);
486
487 case RAVIART_THOMAS:
488 return std::make_unique<FERaviartThomas<2>>(fet);
489
491 return std::make_unique<FEL2RaviartThomas<2>>(fet);
492
493 default:
494 libmesh_error_msg("ERROR: Bad FEType.family == " << Utility::enum_to_string(fet.family));
495 }
496 }
497 case 3:
498 {
499 switch (fet.family)
500 {
501 case HIERARCHIC_VEC:
502 return std::make_unique<FEHierarchicVec<3>>(fet);
503
505 return std::make_unique<FEL2HierarchicVec<3>>(fet);
506
507 case LAGRANGE_VEC:
508 return std::make_unique<FELagrangeVec<3>>(fet);
509
510 case L2_LAGRANGE_VEC:
511 return std::make_unique<FEL2LagrangeVec<3>>(fet);
512
513 case MONOMIAL_VEC:
514 return std::make_unique<FEMonomialVec<3>>(fet);
515
516 case NEDELEC_ONE:
517 return std::make_unique<FENedelecOne<3>>(fet);
518
519 case RAVIART_THOMAS:
520 return std::make_unique<FERaviartThomas<3>>(fet);
521
523 return std::make_unique<FEL2RaviartThomas<3>>(fet);
524
525 default:
526 libmesh_error_msg("ERROR: Bad FEType.family == " << Utility::enum_to_string(fet.family));
527 }
528 }
529
530 default:
531 libmesh_error_msg("Invalid dimension dim = " << dim);
532 } // switch(dim)
533}
@ L2_RAVIART_THOMAS
@ L2_HIERARCHIC_VEC

◆ build() [3/3]

static std::unique_ptr< FEGenericBase > libMesh::FEGenericBase< FEOutputType< T >::type >::build ( const unsigned int  dim,
const FEType type 
)
staticinherited

Builds a specific finite element type.

A std::unique_ptr<FEGenericBase> is returned to prevent a memory leak. This way the user need not remember to delete the object.

The build call will fail if the OutputType of this class is not compatible with the output required for the requested type

◆ build_InfFE() [1/3]

std::unique_ptr< FEGenericBase< Real > > libMesh::FEGenericBase< Real >::build_InfFE ( const unsigned int  dim,
const FEType fet 
)
inherited

Definition at line 546 of file fe_base.C.

548{
549 switch (dim)
550 {
551
552 // 1D
553 case 1:
554 {
555 switch (fet.radial_family)
556 {
557 case INFINITE_MAP:
558 libmesh_error_msg("ERROR: Can't build an infinite element with FEFamily = " << Utility::enum_to_string(fet.radial_family));
559
560 case JACOBI_20_00:
561 {
562 switch (fet.inf_map)
563 {
564 case CARTESIAN:
565 return std::make_unique<InfFE<1,JACOBI_20_00,CARTESIAN>>(fet);
566
567 default:
568 libmesh_error_msg("ERROR: Can't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
569 }
570 }
571
572 case JACOBI_30_00:
573 {
574 switch (fet.inf_map)
575 {
576 case CARTESIAN:
577 return std::make_unique<InfFE<1,JACOBI_30_00,CARTESIAN>>(fet);
578
579 default:
580 libmesh_error_msg("ERROR: Can't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
581 }
582 }
583
584 case LEGENDRE:
585 {
586 switch (fet.inf_map)
587 {
588 case CARTESIAN:
589 return std::make_unique<InfFE<1,LEGENDRE,CARTESIAN>>(fet);
590
591 default:
592 libmesh_error_msg("ERROR: Can't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
593 }
594 }
595
596 case LAGRANGE:
597 {
598 switch (fet.inf_map)
599 {
600 case CARTESIAN:
601 return std::make_unique<InfFE<1,LAGRANGE,CARTESIAN>>(fet);
602
603 default:
604 libmesh_error_msg("ERROR: Can't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
605 }
606 }
607
608 default:
609 libmesh_error_msg("ERROR: Bad FEType.radial_family= " << Utility::enum_to_string(fet.radial_family));
610 }
611 }
612
613
614
615
616 // 2D
617 case 2:
618 {
619 switch (fet.radial_family)
620 {
621 case INFINITE_MAP:
622 libmesh_error_msg("ERROR: Can't build an infinite element with FEFamily = " << Utility::enum_to_string(fet.radial_family));
623
624 case JACOBI_20_00:
625 {
626 switch (fet.inf_map)
627 {
628 case CARTESIAN:
629 return std::make_unique<InfFE<2,JACOBI_20_00,CARTESIAN>>(fet);
630
631 default:
632 libmesh_error_msg("ERROR: Don't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
633 }
634 }
635
636 case JACOBI_30_00:
637 {
638 switch (fet.inf_map)
639 {
640 case CARTESIAN:
641 return std::make_unique<InfFE<2,JACOBI_30_00,CARTESIAN>>(fet);
642
643 default:
644 libmesh_error_msg("ERROR: Don't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
645 }
646 }
647
648 case LEGENDRE:
649 {
650 switch (fet.inf_map)
651 {
652 case CARTESIAN:
653 return std::make_unique<InfFE<2,LEGENDRE,CARTESIAN>>(fet);
654
655 default:
656 libmesh_error_msg("ERROR: Don't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
657 }
658 }
659
660 case LAGRANGE:
661 {
662 switch (fet.inf_map)
663 {
664 case CARTESIAN:
665 return std::make_unique<InfFE<2,LAGRANGE,CARTESIAN>>(fet);
666
667 default:
668 libmesh_error_msg("ERROR: Don't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
669 }
670 }
671
672 default:
673 libmesh_error_msg("ERROR: Bad FEType.radial_family= " << Utility::enum_to_string(fet.radial_family));
674 }
675 }
676
677
678
679
680 // 3D
681 case 3:
682 {
683 switch (fet.radial_family)
684 {
685 case INFINITE_MAP:
686 libmesh_error_msg("ERROR: Don't build an infinite element with FEFamily = " << Utility::enum_to_string(fet.radial_family));
687
688 case JACOBI_20_00:
689 {
690 switch (fet.inf_map)
691 {
692 case CARTESIAN:
693 return std::make_unique<InfFE<3,JACOBI_20_00,CARTESIAN>>(fet);
694
695 default:
696 libmesh_error_msg("ERROR: Don't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
697 }
698 }
699
700 case JACOBI_30_00:
701 {
702 switch (fet.inf_map)
703 {
704 case CARTESIAN:
705 return std::make_unique<InfFE<3,JACOBI_30_00,CARTESIAN>>(fet);
706
707 default:
708 libmesh_error_msg("ERROR: Don't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
709 }
710 }
711
712 case LEGENDRE:
713 {
714 switch (fet.inf_map)
715 {
716 case CARTESIAN:
717 return std::make_unique<InfFE<3,LEGENDRE,CARTESIAN>>(fet);
718
719 default:
720 libmesh_error_msg("ERROR: Don't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
721 }
722 }
723
724 case LAGRANGE:
725 {
726 switch (fet.inf_map)
727 {
728 case CARTESIAN:
729 return std::make_unique<InfFE<3,LAGRANGE,CARTESIAN>>(fet);
730
731 default:
732 libmesh_error_msg("ERROR: Don't build an infinite element with InfMapType = " << Utility::enum_to_string(fet.inf_map));
733 }
734 }
735
736 default:
737 libmesh_error_msg("ERROR: Bad FEType.radial_family= " << Utility::enum_to_string(fet.radial_family));
738 }
739 }
740
741 default:
742 libmesh_error_msg("Invalid dimension dim = " << dim);
743 }
744}
InfMapType inf_map
The coordinate mapping type of the infinite element.
Definition fe_type.h:284
FEFamily radial_family
The type of approximation in radial direction.
Definition fe_type.h:276

◆ build_InfFE() [2/3]

static std::unique_ptr< FEGenericBase > libMesh::FEGenericBase< FEOutputType< T >::type >::build_InfFE ( const unsigned int  dim,
const FEType type 
)
staticinherited

Builds a specific infinite element type.

A std::unique_ptr<FEGenericBase> is returned to prevent a memory leak. This way the user need not remember to delete the object.

The build call will fail if the OutputShape of this class is not compatible with the output required for the requested type

◆ build_InfFE() [3/3]

std::unique_ptr< FEGenericBase< RealGradient > > libMesh::FEGenericBase< RealGradient >::build_InfFE ( const unsigned int  ,
const FEType  
)
inherited

Definition at line 750 of file fe_base.C.

752{
753 // No vector types defined... YET.
754 libmesh_not_implemented();
755 return std::unique_ptr<FEVectorBase>();
756}

◆ cache()

void libMesh::FE< Dim, T >::cache ( const Elem elem)
protectedinherited

Repopulate the element cache with the node locations, edge and face orientations of the element elem.

Definition at line 803 of file fe.C.

154{
155 cached_nodes.resize(elem->n_nodes());
156 for (auto n : elem->node_index_range())
157 cached_nodes[n] = elem->point(n);
158
159 if (FEInterface::orientation_dependent(T))
160 {
161 cached_edges.resize(elem->n_edges());
162 for (auto n : elem->edge_index_range())
163 cached_edges[n] = elem->positive_edge_orientation(n);
164
165 cached_faces.resize(elem->n_faces());
166 for (auto n : elem->face_index_range())
167 cached_faces[n] = elem->positive_face_orientation(n);
168 }
169}
std::vector< bool > cached_faces
Definition fe.h:797
std::vector< Point > cached_nodes
Vectors holding the node locations, edge and face orientations of the last element we cached.
Definition fe.h:796
std::vector< bool > cached_edges
Definition fe.h:797

◆ calculating_nothing()

bool libMesh::FEGenericBase< FEOutputType< T >::type >::calculating_nothing ( ) const
inlineprotectedinherited
Returns
true iff no calculations have been requested of this FE object or of its associated FEMap

Definition at line 568 of file fe_base.h.

569 {
570 return calculate_nothing &&
571 !this->calculate_phi && !this->calculate_dphi &&
572#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
573 !this->calculate_d2phi &&
574#endif
575 !this->calculate_curl_phi && !this->calculate_div_phi &&
576 !this->calculate_map;
577 }
bool calculate_map
Are we calculating mapping functions?
bool calculate_nothing
Are we potentially deliberately calculating nothing?
bool calculate_d2phi
Should we calculate shape function hessians?
bool calculate_phi
Should we calculate shape functions?
bool calculate_dphi
Should we calculate shape function gradients?
bool calculate_curl_phi
Should we calculate shape function curls?
bool calculate_div_phi
Should we calculate shape function divergences?

◆ coarsened_dof_values() [1/2]

void libMesh::FEGenericBase< FEOutputType< T >::type >::coarsened_dof_values ( const NumericVector< Number > &  global_vector,
const DofMap dof_map,
const Elem coarse_elem,
DenseVector< Number > &  coarse_dofs,
const bool  use_old_dof_indices = false 
)
staticinherited

Creates a local projection on coarse_elem, based on the DoF values in global_vector for it's children.

Computes a vector of coefficients corresponding to all dof_indices.

Definition at line 178 of file fe_base.C.

1516{
1517 Ue.resize(0);
1518
1519 for (auto v : make_range(dof_map.n_variables()))
1520 {
1522
1523 coarsened_dof_values(old_vector, dof_map, elem, Usub,
1524 v, use_old_dof_indices);
1525
1526 Ue.append (Usub);
1527 }
1528}
Defines a dense vector for use in Finite Element-type computations.
static void coarsened_dof_values(const NumericVector< Number > &global_vector, const DofMap &dof_map, const Elem *coarse_elem, DenseVector< Number > &coarse_dofs, const unsigned int var, const bool use_old_dof_indices=false)
Creates a local projection on coarse_elem, based on the DoF values in global_vector for it's children...
Definition fe_base.C:976

◆ coarsened_dof_values() [2/2]

void libMesh::FEGenericBase< FEOutputType< T >::type >::coarsened_dof_values ( const NumericVector< Number > &  global_vector,
const DofMap dof_map,
const Elem coarse_elem,
DenseVector< Number > &  coarse_dofs,
const unsigned int  var,
const bool  use_old_dof_indices = false 
)
staticinherited

Creates a local projection on coarse_elem, based on the DoF values in global_vector for it's children.

Computes a vector of coefficients corresponding to dof_indices for only the single given var

Definition at line 165 of file fe_base.C.

982{
983 // Side/edge local DOF indices
984 std::vector<unsigned int> new_side_dofs, old_side_dofs;
985
986 // FIXME: what about 2D shells in 3D space?
987 unsigned int dim = elem->dim();
988
989 // Cache n_children(); it's a virtual call but it's const.
990 const unsigned int n_children = elem->n_children();
991
992 // We use local FE objects for now
993 // FIXME: we should use more, external objects instead for efficiency
994 const FEType & base_fe_type = dof_map.variable_type(var);
995 std::unique_ptr<FEGenericBase<OutputShape>> fe
996 (FEGenericBase<OutputShape>::build(dim, base_fe_type));
997 std::unique_ptr<FEGenericBase<OutputShape>> fe_coarse
998 (FEGenericBase<OutputShape>::build(dim, base_fe_type));
999
1000 std::unique_ptr<QBase> qrule (base_fe_type.default_quadrature_rule(dim));
1001 std::unique_ptr<QBase> qedgerule (base_fe_type.default_quadrature_rule(1));
1002 std::unique_ptr<QBase> qsiderule (base_fe_type.default_quadrature_rule(dim-1));
1003 std::vector<Point> coarse_qpoints;
1004
1005 // The values of the shape functions at the quadrature
1006 // points
1007 const std::vector<std::vector<OutputShape>> & phi_values =
1008 fe->get_phi();
1009 const std::vector<std::vector<OutputShape>> & phi_coarse =
1010 fe_coarse->get_phi();
1011
1012 // The gradients of the shape functions at the quadrature
1013 // points on the child element.
1014 const std::vector<std::vector<OutputGradient>> * dphi_values =
1015 nullptr;
1016 const std::vector<std::vector<OutputGradient>> * dphi_coarse =
1017 nullptr;
1018
1019 const FEContinuity cont = fe->get_continuity();
1020
1021 if (cont == C_ONE)
1022 {
1023 const std::vector<std::vector<OutputGradient>> &
1024 ref_dphi_values = fe->get_dphi();
1025 dphi_values = &ref_dphi_values;
1026 const std::vector<std::vector<OutputGradient>> &
1027 ref_dphi_coarse = fe_coarse->get_dphi();
1028 dphi_coarse = &ref_dphi_coarse;
1029 }
1030
1031 // The Jacobian * quadrature weight at the quadrature points
1032 const std::vector<Real> & JxW =
1033 fe->get_JxW();
1034
1035 // The XYZ locations of the quadrature points on the
1036 // child element
1037 const std::vector<Point> & xyz_values =
1038 fe->get_xyz();
1039
1040 // Number of nodes on parent element
1041 const unsigned int n_nodes = elem->n_nodes();
1042
1043 // Number of dofs on parent element
1044 const unsigned int new_n_dofs =
1045 FEInterface::n_dofs(base_fe_type, elem->max_descendant_p_level(), elem);
1046
1047 // Fixed vs. free DoFs on edge/face projections
1048 std::vector<char> dof_is_fixed(new_n_dofs, false); // bools
1049 std::vector<int> free_dof(new_n_dofs, 0);
1050
1053 Ue.resize(new_n_dofs); Ue.zero();
1054
1055
1056 // When coarsening, in general, we need a series of
1057 // projections to ensure a unique and continuous
1058 // solution. We start by interpolating nodes, then
1059 // hold those fixed and project edges, then
1060 // hold those fixed and project faces, then
1061 // hold those fixed and project interiors
1062
1063 // Copy node values first
1064 {
1065 std::vector<dof_id_type> node_dof_indices;
1066 if (use_old_dof_indices)
1067 dof_map.old_dof_indices (elem, node_dof_indices, var);
1068 else
1069 dof_map.dof_indices (elem, node_dof_indices, var);
1070
1071 unsigned int current_dof = 0;
1072 for (unsigned int n=0; n!= n_nodes; ++n)
1073 {
1074 // FIXME: this should go through the DofMap,
1075 // not duplicate dof_indices code badly!
1076 const unsigned int my_nc =
1077 FEInterface::n_dofs_at_node (base_fe_type, elem->max_descendant_p_level(), elem, n);
1078 if (!elem->is_vertex(n))
1079 {
1080 current_dof += my_nc;
1081 continue;
1082 }
1083
1084 // We're assuming here that child n shares vertex n,
1085 // which is wrong on non-simplices right now
1086 // ... but this code isn't necessary except on elements
1087 // where p refinement creates more vertex dofs; we have
1088 // no such elements yet.
1089 int extra_order = 0;
1090 // if (elem->child_ptr(n)->p_level() < elem->p_level())
1091 // extra_order = elem->child_ptr(n)->p_level();
1092 const unsigned int nc =
1093 FEInterface::n_dofs_at_node (base_fe_type, extra_order, elem, n);
1094 for (unsigned int i=0; i!= nc; ++i)
1095 {
1096 Ue(current_dof) =
1097 old_vector(node_dof_indices[current_dof]);
1098 dof_is_fixed[current_dof] = true;
1099 current_dof++;
1100 }
1101 }
1102 }
1103
1104 FEType fe_type = base_fe_type, temp_fe_type;
1105 fe_type.order = fe_type.order + elem->max_descendant_p_level();
1106
1107 // In 3D, project any edge values next
1108 if (dim > 2 && cont != DISCONTINUOUS)
1109 for (auto e : elem->edge_index_range())
1110 {
1112 e, new_side_dofs);
1113
1114 const unsigned int n_new_side_dofs =
1115 cast_int<unsigned int>(new_side_dofs.size());
1116
1117 // Some edge dofs are on nodes and already
1118 // fixed, others are free to calculate
1119 unsigned int free_dofs = 0;
1120 for (unsigned int i=0; i != n_new_side_dofs; ++i)
1121 if (!dof_is_fixed[new_side_dofs[i]])
1122 free_dof[free_dofs++] = i;
1123 Ke.resize (free_dofs, free_dofs); Ke.zero();
1124 Fe.resize (free_dofs); Fe.zero();
1125 // The new edge coefficients
1126 DenseVector<Number> Uedge(free_dofs);
1127
1128 // Add projection terms from each child sharing
1129 // this edge
1130 for (unsigned int c=0; c != n_children; ++c)
1131 {
1132 if (!elem->is_child_on_edge(c,e))
1133 continue;
1134 const Elem * child = elem->child_ptr(c);
1135
1136 std::vector<dof_id_type> child_dof_indices;
1137 if (use_old_dof_indices)
1138 dof_map.old_dof_indices (child,
1139 child_dof_indices, var);
1140 else
1141 dof_map.dof_indices (child,
1142 child_dof_indices, var);
1143 const unsigned int child_n_dofs =
1144 cast_int<unsigned int>
1145 (child_dof_indices.size());
1146
1147 temp_fe_type = base_fe_type;
1148 temp_fe_type.order = temp_fe_type.order + child->p_level();
1149
1151 temp_fe_type, e, old_side_dofs);
1152
1153 // Initialize both child and parent FE data
1154 // on the child's edge
1155 fe->attach_quadrature_rule (qedgerule.get());
1156 fe->edge_reinit (child, e);
1157 const unsigned int n_qp = qedgerule->n_points();
1158
1159 FEMap::inverse_map (dim, elem, xyz_values,
1160 coarse_qpoints);
1161
1162 fe_coarse->reinit(elem, &coarse_qpoints);
1163
1164 // Loop over the quadrature points
1165 for (unsigned int qp=0; qp<n_qp; qp++)
1166 {
1167 // solution value at the quadrature point
1168 OutputNumber fineval = libMesh::zero;
1169 // solution grad at the quadrature point
1170 OutputNumberGradient finegrad;
1171
1172 // Sum the solution values * the DOF
1173 // values at the quadrature point to
1174 // get the solution value and gradient.
1175 for (unsigned int i=0; i<child_n_dofs;
1176 i++)
1177 {
1178 fineval +=
1179 (old_vector(child_dof_indices[i])*
1180 phi_values[i][qp]);
1181 if (cont == C_ONE)
1182 finegrad += (*dphi_values)[i][qp] *
1183 old_vector(child_dof_indices[i]);
1184 }
1185
1186 // Form edge projection matrix
1187 for (unsigned int sidei=0, freei=0; sidei != n_new_side_dofs; ++sidei)
1188 {
1189 unsigned int i = new_side_dofs[sidei];
1190 // fixed DoFs aren't test functions
1191 if (dof_is_fixed[i])
1192 continue;
1193 for (unsigned int sidej=0, freej=0; sidej != n_new_side_dofs; ++sidej)
1194 {
1195 unsigned int j =
1196 new_side_dofs[sidej];
1197 if (dof_is_fixed[j])
1198 Fe(freei) -=
1199 TensorTools::inner_product(phi_coarse[i][qp],
1200 phi_coarse[j][qp]) *
1201 JxW[qp] * Ue(j);
1202 else
1203 Ke(freei,freej) +=
1204 TensorTools::inner_product(phi_coarse[i][qp],
1205 phi_coarse[j][qp]) *
1206 JxW[qp];
1207 if (cont == C_ONE)
1208 {
1209 if (dof_is_fixed[j])
1210 Fe(freei) -=
1211 TensorTools::inner_product((*dphi_coarse)[i][qp],
1212 (*dphi_coarse)[j][qp]) *
1213 JxW[qp] * Ue(j);
1214 else
1215 Ke(freei,freej) +=
1216 TensorTools::inner_product((*dphi_coarse)[i][qp],
1217 (*dphi_coarse)[j][qp]) *
1218 JxW[qp];
1219 }
1220 if (!dof_is_fixed[j])
1221 freej++;
1222 }
1223 Fe(freei) += TensorTools::inner_product(phi_coarse[i][qp],
1224 fineval) * JxW[qp];
1225 if (cont == C_ONE)
1226 Fe(freei) +=
1227 TensorTools::inner_product(finegrad, (*dphi_coarse)[i][qp]) * JxW[qp];
1228 freei++;
1229 }
1230 }
1231 }
1232 Ke.cholesky_solve(Fe, Uedge);
1233
1234 // Transfer new edge solutions to element
1235 for (unsigned int i=0; i != free_dofs; ++i)
1236 {
1237 Number & ui = Ue(new_side_dofs[free_dof[i]]);
1238 libmesh_assert(std::abs(ui) < TOLERANCE ||
1239 std::abs(ui - Uedge(i)) < TOLERANCE);
1240 ui = Uedge(i);
1241 dof_is_fixed[new_side_dofs[free_dof[i]]] = true;
1242 }
1243 }
1244
1245 // Project any side values (edges in 2D, faces in 3D)
1246 if (dim > 1 && cont != DISCONTINUOUS)
1247 for (auto s : elem->side_index_range())
1248 {
1250 s, new_side_dofs);
1251
1252 const unsigned int n_new_side_dofs =
1253 cast_int<unsigned int>(new_side_dofs.size());
1254
1255 // Some side dofs are on nodes/edges and already
1256 // fixed, others are free to calculate
1257 unsigned int free_dofs = 0;
1258 for (unsigned int i=0; i != n_new_side_dofs; ++i)
1259 if (!dof_is_fixed[new_side_dofs[i]])
1260 free_dof[free_dofs++] = i;
1261 Ke.resize (free_dofs, free_dofs); Ke.zero();
1262 Fe.resize (free_dofs); Fe.zero();
1263 // The new side coefficients
1264 DenseVector<Number> Uside(free_dofs);
1265
1266 // Add projection terms from each child sharing
1267 // this side
1268 for (unsigned int c=0; c != n_children; ++c)
1269 {
1270 if (!elem->is_child_on_side(c,s))
1271 continue;
1272 const Elem * child = elem->child_ptr(c);
1273
1274 std::vector<dof_id_type> child_dof_indices;
1275 if (use_old_dof_indices)
1276 dof_map.old_dof_indices (child,
1277 child_dof_indices, var);
1278 else
1279 dof_map.dof_indices (child,
1280 child_dof_indices, var);
1281 const unsigned int child_n_dofs =
1282 cast_int<unsigned int>
1283 (child_dof_indices.size());
1284
1285 temp_fe_type = base_fe_type;
1286 temp_fe_type.order = temp_fe_type.order + child->p_level();
1287
1289 temp_fe_type, s, old_side_dofs);
1290
1291 // Initialize both child and parent FE data
1292 // on the child's side
1293 fe->attach_quadrature_rule (qsiderule.get());
1294 fe->reinit (child, s);
1295 const unsigned int n_qp = qsiderule->n_points();
1296
1297 FEMap::inverse_map (dim, elem, xyz_values,
1298 coarse_qpoints);
1299
1300 fe_coarse->reinit(elem, &coarse_qpoints);
1301
1302 // Loop over the quadrature points
1303 for (unsigned int qp=0; qp<n_qp; qp++)
1304 {
1305 // solution value at the quadrature point
1306 OutputNumber fineval = libMesh::zero;
1307 // solution grad at the quadrature point
1308 OutputNumberGradient finegrad;
1309
1310 // Sum the solution values * the DOF
1311 // values at the quadrature point to
1312 // get the solution value and gradient.
1313 for (unsigned int i=0; i<child_n_dofs;
1314 i++)
1315 {
1316 fineval +=
1317 old_vector(child_dof_indices[i]) *
1318 phi_values[i][qp];
1319 if (cont == C_ONE)
1320 finegrad += (*dphi_values)[i][qp] *
1321 old_vector(child_dof_indices[i]);
1322 }
1323
1324 // Form side projection matrix
1325 for (unsigned int sidei=0, freei=0; sidei != n_new_side_dofs; ++sidei)
1326 {
1327 unsigned int i = new_side_dofs[sidei];
1328 // fixed DoFs aren't test functions
1329 if (dof_is_fixed[i])
1330 continue;
1331 for (unsigned int sidej=0, freej=0; sidej != n_new_side_dofs; ++sidej)
1332 {
1333 unsigned int j =
1334 new_side_dofs[sidej];
1335 if (dof_is_fixed[j])
1336 Fe(freei) -=
1337 TensorTools::inner_product(phi_coarse[i][qp],
1338 phi_coarse[j][qp]) *
1339 JxW[qp] * Ue(j);
1340 else
1341 Ke(freei,freej) +=
1342 TensorTools::inner_product(phi_coarse[i][qp],
1343 phi_coarse[j][qp]) *
1344 JxW[qp];
1345 if (cont == C_ONE)
1346 {
1347 if (dof_is_fixed[j])
1348 Fe(freei) -=
1349 TensorTools::inner_product((*dphi_coarse)[i][qp],
1350 (*dphi_coarse)[j][qp]) *
1351 JxW[qp] * Ue(j);
1352 else
1353 Ke(freei,freej) +=
1354 TensorTools::inner_product((*dphi_coarse)[i][qp],
1355 (*dphi_coarse)[j][qp]) *
1356 JxW[qp];
1357 }
1358 if (!dof_is_fixed[j])
1359 freej++;
1360 }
1361 Fe(freei) += TensorTools::inner_product(fineval, phi_coarse[i][qp]) * JxW[qp];
1362 if (cont == C_ONE)
1363 Fe(freei) +=
1364 TensorTools::inner_product(finegrad, (*dphi_coarse)[i][qp]) * JxW[qp];
1365 freei++;
1366 }
1367 }
1368 }
1369 Ke.cholesky_solve(Fe, Uside);
1370
1371 // Transfer new side solutions to element
1372 for (unsigned int i=0; i != free_dofs; ++i)
1373 {
1374 Number & ui = Ue(new_side_dofs[free_dof[i]]);
1375 libmesh_assert(std::abs(ui) < TOLERANCE ||
1376 std::abs(ui - Uside(i)) < TOLERANCE);
1377 ui = Uside(i);
1378 dof_is_fixed[new_side_dofs[free_dof[i]]] = true;
1379 }
1380 }
1381
1382 // Project the interior values, finally
1383
1384 // Some interior dofs are on nodes/edges/sides and
1385 // already fixed, others are free to calculate
1386 unsigned int free_dofs = 0;
1387 for (unsigned int i=0; i != new_n_dofs; ++i)
1388 if (!dof_is_fixed[i])
1389 free_dof[free_dofs++] = i;
1390 Ke.resize (free_dofs, free_dofs); Ke.zero();
1391 Fe.resize (free_dofs); Fe.zero();
1392 // The new interior coefficients
1393 DenseVector<Number> Uint(free_dofs);
1394
1395 // Add projection terms from each child
1396 for (auto & child : elem->child_ref_range())
1397 {
1398 std::vector<dof_id_type> child_dof_indices;
1399 if (use_old_dof_indices)
1400 dof_map.old_dof_indices (&child,
1401 child_dof_indices, var);
1402 else
1403 dof_map.dof_indices (&child,
1404 child_dof_indices, var);
1405 const unsigned int child_n_dofs =
1406 cast_int<unsigned int>
1407 (child_dof_indices.size());
1408
1409 // Initialize both child and parent FE data
1410 // on the child's quadrature points
1411 fe->attach_quadrature_rule (qrule.get());
1412 fe->reinit (&child);
1413 const unsigned int n_qp = qrule->n_points();
1414
1415 FEMap::inverse_map (dim, elem, xyz_values, coarse_qpoints);
1416
1417 fe_coarse->reinit(elem, &coarse_qpoints);
1418
1419 // Loop over the quadrature points
1420 for (unsigned int qp=0; qp<n_qp; qp++)
1421 {
1422 // solution value at the quadrature point
1423 OutputNumber fineval = libMesh::zero;
1424 // solution grad at the quadrature point
1425 OutputNumberGradient finegrad;
1426
1427 // Sum the solution values * the DOF
1428 // values at the quadrature point to
1429 // get the solution value and gradient.
1430 for (unsigned int i=0; i<child_n_dofs; i++)
1431 {
1432 fineval +=
1433 (old_vector(child_dof_indices[i]) *
1434 phi_values[i][qp]);
1435 if (cont == C_ONE)
1436 finegrad += (*dphi_values)[i][qp] *
1437 old_vector(child_dof_indices[i]);
1438 }
1439
1440 // Form interior projection matrix
1441 for (unsigned int i=0, freei=0;
1442 i != new_n_dofs; ++i)
1443 {
1444 // fixed DoFs aren't test functions
1445 if (dof_is_fixed[i])
1446 continue;
1447 for (unsigned int j=0, freej=0; j !=
1448 new_n_dofs; ++j)
1449 {
1450 if (dof_is_fixed[j])
1451 Fe(freei) -=
1452 TensorTools::inner_product(phi_coarse[i][qp],
1453 phi_coarse[j][qp]) *
1454 JxW[qp] * Ue(j);
1455 else
1456 Ke(freei,freej) +=
1457 TensorTools::inner_product(phi_coarse[i][qp],
1458 phi_coarse[j][qp]) *
1459 JxW[qp];
1460 if (cont == C_ONE)
1461 {
1462 if (dof_is_fixed[j])
1463 Fe(freei) -=
1464 TensorTools::inner_product((*dphi_coarse)[i][qp],
1465 (*dphi_coarse)[j][qp]) *
1466 JxW[qp] * Ue(j);
1467 else
1468 Ke(freei,freej) +=
1469 TensorTools::inner_product((*dphi_coarse)[i][qp],
1470 (*dphi_coarse)[j][qp]) *
1471 JxW[qp];
1472 }
1473 if (!dof_is_fixed[j])
1474 freej++;
1475 }
1476 Fe(freei) += TensorTools::inner_product(phi_coarse[i][qp], fineval) *
1477 JxW[qp];
1478 if (cont == C_ONE)
1479 Fe(freei) += TensorTools::inner_product(finegrad, (*dphi_coarse)[i][qp]) * JxW[qp];
1480 freei++;
1481 }
1482 }
1483 }
1484 Ke.cholesky_solve(Fe, Uint);
1485
1486 // Transfer new interior solutions to element
1487 for (unsigned int i=0; i != free_dofs; ++i)
1488 {
1489 Number & ui = Ue(free_dof[i]);
1490 libmesh_assert(std::abs(ui) < TOLERANCE ||
1491 std::abs(ui - Uint(i)) < TOLERANCE);
1492 ui = Uint(i);
1493 // We should be fixing all dofs by now; no need to keep track of
1494 // that unless we're debugging
1495#ifndef NDEBUG
1496 dof_is_fixed[free_dof[i]] = true;
1497#endif
1498 }
1499
1500#ifndef NDEBUG
1501 // Make sure every DoF got reached!
1502 for (unsigned int i=0; i != new_n_dofs; ++i)
1503 libmesh_assert(dof_is_fixed[i]);
1504#endif
1505}
Defines a dense matrix for use in Finite Element-type computations.
void cholesky_solve(const DenseVector< T2 > &b, DenseVector< T2 > &x)
For symmetric positive definite (SPD) matrices.
void resize(const unsigned int new_m, const unsigned int new_n)
Resizes the matrix to the specified size and calls zero().
virtual void zero() override final
Sets all elements of the matrix to 0 and resets any decomposition flag which may have been previously...
void resize(const unsigned int n)
Resize the vector.
virtual void zero() override final
Set every element in the vector to 0.
void dof_indices(const Elem *const elem, std::vector< dof_id_type > &di) const
Definition dof_map.C:2201
const FEType & variable_type(const unsigned int i) const
Definition dof_map.h:2388
void old_dof_indices(const Elem &elem, unsigned int n, std::vector< dof_id_type > &di, const unsigned int vn) const
Appends to the vector di the old global degree of freedom indices for elem.node_ref(n),...
Definition dof_map.C:2478
This is the base class from which all geometric element types are derived.
Definition elem.h:96
const Elem * child_ptr(unsigned int i) const
Definition elem.h:3180
unsigned int p_level() const
Definition elem.h:3125
FEType fe_type
The finite element type for this object.
This class forms the foundation from which generic finite elements may be derived.
Definition fe_base.h:86
TensorTools::IncrementRank< OutputNumber >::type OutputNumberGradient
Definition fe_base.h:124
TensorTools::MakeNumber< OutputShape >::type OutputNumber
Definition fe_base.h:123
static void dofs_on_side(const Elem *const elem, const unsigned int dim, const FEType &fe_t, unsigned int s, std::vector< unsigned int > &di, const bool add_p_level=true)
Fills the vector di with the local degree of freedom indices associated with side s of element elem A...
static unsigned int n_dofs(const unsigned int dim, const FEType &fe_t, const ElemType t)
static unsigned int n_dofs_at_node(const unsigned int dim, const FEType &fe_t, const ElemType t, const unsigned int n)
static void dofs_on_edge(const Elem *const elem, const unsigned int dim, const FEType &fe_t, unsigned int e, std::vector< unsigned int > &di, const bool add_p_level=true)
Fills the vector di with the local degree of freedom indices associated with edge e of element elem A...
static Point inverse_map(const unsigned int dim, const Elem *elem, const Point &p, const Real tolerance=TOLERANCE, const bool secure=true, const bool extra_checks=true)
Definition fe_map.C:1512
std::unique_ptr< QBase > default_quadrature_rule(const unsigned int dim, const int extraorder=0) const
Definition fe_type.C:34
OrderWrapper order
The approximation order of the element (at 0 p-refinement level).
Definition fe_type.h:203
unsigned int n_points() const
Definition quadrature.h:131
std::enable_if< ScalarTraits< T >::value &&ScalarTraits< T2 >::value, typenameCompareTypes< T, T2 >::supertype >::type inner_product(const T &a, const T2 &b)
const Number zero
.
Definition libmesh.h:297
static constexpr Real TOLERANCE
const dof_id_type n_nodes
Definition tecplot_io.C:67

◆ compute_constraints() [1/49]

void libMesh::FE< 2, L2_HIERARCHIC >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 202 of file fe_l2_hierarchic.C.

206{ }

◆ compute_constraints() [2/49]

void libMesh::FE< 3, L2_HIERARCHIC >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 209 of file fe_l2_hierarchic.C.

213{ }

◆ compute_constraints() [3/49]

void libMesh::FE< 2, L2_LAGRANGE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 277 of file fe_l2_lagrange.C.

281{ }

◆ compute_constraints() [4/49]

void libMesh::FE< 3, L2_LAGRANGE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 284 of file fe_l2_lagrange.C.

288{ }

◆ compute_constraints() [5/49]

void libMesh::FE< 2, MONOMIAL >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 438 of file fe_monomial.C.

438{}

◆ compute_constraints() [6/49]

void libMesh::FE< 3, MONOMIAL >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 439 of file fe_monomial.C.

439{}

◆ compute_constraints() [7/49]

void libMesh::FE< 2, MONOMIAL_VEC >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 778 of file fe_monomial_vec.C.

782{
783}

◆ compute_constraints() [8/49]

void libMesh::FE< 3, MONOMIAL_VEC >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 787 of file fe_monomial_vec.C.

791{
792}

◆ compute_constraints() [9/49]

void libMesh::FE< 0, NEDELEC_ONE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 427 of file fe_nedelec_one.C.

431{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ compute_constraints() [10/49]

void libMesh::FE< 1, NEDELEC_ONE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 434 of file fe_nedelec_one.C.

438{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ compute_constraints() [11/49]

void libMesh::FE< 0, RAVIART_THOMAS >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 491 of file fe_raviart.C.

495{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ compute_constraints() [12/49]

void libMesh::FE< 1, RAVIART_THOMAS >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 498 of file fe_raviart.C.

502{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ compute_constraints() [13/49]

void libMesh::FE< 0, L2_RAVIART_THOMAS >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 519 of file fe_raviart.C.

523{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ compute_constraints() [14/49]

void libMesh::FE< 1, L2_RAVIART_THOMAS >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 526 of file fe_raviart.C.

530{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ compute_constraints() [15/49]

void libMesh::FE< 2, SCALAR >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 110 of file fe_scalar.C.

114{ }

◆ compute_constraints() [16/49]

void libMesh::FE< 3, SCALAR >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 117 of file fe_scalar.C.

121{ }

◆ compute_constraints() [17/49]

void libMesh::FE< 2, XYZ >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 423 of file fe_xyz.C.

423{}

◆ compute_constraints() [18/49]

void libMesh::FE< 3, XYZ >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned int  ,
const Elem  
)
inherited

Definition at line 424 of file fe_xyz.C.

424{}

◆ compute_constraints() [19/49]

static void libMesh::FE< Dim, T >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
staticinherited

Computes the constraint matrix contributions (for non-conforming adapted meshes) corresponding to variable number var_number, using element-specific optimizations if possible.

◆ compute_constraints() [20/49]

void libMesh::FE< 2, BERNSTEIN >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 436 of file fe_bernstein.C.

440{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }
static void compute_proj_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...
Definition fe_base.C:1534

◆ compute_constraints() [21/49]

void libMesh::FE< 3, BERNSTEIN >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 443 of file fe_bernstein.C.

447{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [22/49]

void libMesh::FE< 2, CLOUGH >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 284 of file fe_clough.C.

288{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [23/49]

void libMesh::FE< 3, CLOUGH >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 291 of file fe_clough.C.

295{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [24/49]

void libMesh::FE< 2, HERMITE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 327 of file fe_hermite.C.

331{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [25/49]

void libMesh::FE< 3, HERMITE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 334 of file fe_hermite.C.

338{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [26/49]

void libMesh::FE< 2, HIERARCHIC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 490 of file fe_hierarchic.C.

494{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [27/49]

void libMesh::FE< 3, HIERARCHIC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 497 of file fe_hierarchic.C.

501{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [28/49]

void libMesh::FE< 2, HIERARCHIC_VEC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 810 of file fe_hierarchic_vec.C.

814{ //libmesh_not_implemented();
815 FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem);
816}

◆ compute_constraints() [29/49]

void libMesh::FE< 3, HIERARCHIC_VEC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 819 of file fe_hierarchic_vec.C.

823{ //libmesh_not_implemented();
824 FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem);
825}

◆ compute_constraints() [30/49]

void libMesh::FE< 2, L2_HIERARCHIC_VEC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 828 of file fe_hierarchic_vec.C.

832{ //libmesh_not_implemented();
833 FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem);
834}

◆ compute_constraints() [31/49]

void libMesh::FE< 3, L2_HIERARCHIC_VEC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 837 of file fe_hierarchic_vec.C.

841{ //libmesh_not_implemented();
842 FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem);
843}

◆ compute_constraints() [32/49]

void libMesh::FE< 2, LAGRANGE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 1137 of file fe_lagrange.C.

1141{ lagrange_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/2); }

◆ compute_constraints() [33/49]

void libMesh::FE< 3, LAGRANGE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 1144 of file fe_lagrange.C.

1148{ lagrange_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/3); }

◆ compute_constraints() [34/49]

void libMesh::FE< 2, LAGRANGE_VEC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 1379 of file fe_lagrange_vec.C.

1383{ //libmesh_not_implemented();
1384 FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem);
1385}

◆ compute_constraints() [35/49]

void libMesh::FE< 3, LAGRANGE_VEC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 1388 of file fe_lagrange_vec.C.

1392{ //libmesh_not_implemented();
1393 FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem);
1394}

◆ compute_constraints() [36/49]

void libMesh::FE< 2, L2_LAGRANGE_VEC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 1397 of file fe_lagrange_vec.C.

1401{ //libmesh_not_implemented();
1402 FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem);
1403}

◆ compute_constraints() [37/49]

void libMesh::FE< 3, L2_LAGRANGE_VEC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 1406 of file fe_lagrange_vec.C.

1410{ //libmesh_not_implemented();
1411 FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem);
1412}

◆ compute_constraints() [38/49]

void libMesh::FE< 2, NEDELEC_ONE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 441 of file fe_nedelec_one.C.

445{ nedelec_one_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/2); }

◆ compute_constraints() [39/49]

void libMesh::FE< 3, NEDELEC_ONE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 448 of file fe_nedelec_one.C.

452{ nedelec_one_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/3); }

◆ compute_constraints() [40/49]

void libMesh::FE< 2, RATIONAL_BERNSTEIN >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 174 of file fe_rational.C.

178{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [41/49]

void libMesh::FE< 3, RATIONAL_BERNSTEIN >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 181 of file fe_rational.C.

185{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [42/49]

void libMesh::FE< 2, RAVIART_THOMAS >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 505 of file fe_raviart.C.

509{ raviart_thomas_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/2); }

◆ compute_constraints() [43/49]

void libMesh::FE< 3, RAVIART_THOMAS >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 512 of file fe_raviart.C.

516{ raviart_thomas_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/3); }

◆ compute_constraints() [44/49]

void libMesh::FE< 2, L2_RAVIART_THOMAS >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 533 of file fe_raviart.C.

537{ raviart_thomas_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/2); }

◆ compute_constraints() [45/49]

void libMesh::FE< 3, L2_RAVIART_THOMAS >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 540 of file fe_raviart.C.

544{ raviart_thomas_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/3); }

◆ compute_constraints() [46/49]

void libMesh::FE< 2, SIDE_HIERARCHIC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 341 of file fe_side_hierarchic.C.

345{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [47/49]

void libMesh::FE< 3, SIDE_HIERARCHIC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 348 of file fe_side_hierarchic.C.

352{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [48/49]

void libMesh::FE< 2, SZABAB >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 1339 of file fe_szabab.C.

1343{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_constraints() [49/49]

void libMesh::FE< 3, SZABAB >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
inherited

Definition at line 1346 of file fe_szabab.C.

1350{ compute_proj_constraints(constraints, dof_map, variable_number, elem); }

◆ compute_dual_shape_coeffs() [1/3]

void libMesh::FEGenericBase< Real >::compute_dual_shape_coeffs ( const std::vector< Real > &  ,
const std::vector< std::vector< OutputShape > > &   
)
protectedinherited

◆ compute_dual_shape_coeffs() [2/3]

void libMesh::FEGenericBase< FEOutputType< T >::type >::compute_dual_shape_coeffs ( const std::vector< Real > &  JxW,
const std::vector< std::vector< OutputShape > > &  phi 
)
protectedinherited

Compute the dual basis coefficients dual_coeff we rely on the JxW (or weights) and the phi values, which can come from default or customized qrule.

Definition at line 596 of file fe_base.h.

801{
802 libmesh_error_msg(
803 "Computation of dual shape functions for vector finite element "
804 "families is not currently implemented");
805}

◆ compute_dual_shape_coeffs() [3/3]

void libMesh::FEGenericBase< Real >::compute_dual_shape_coeffs ( const std::vector< Real > &  JxW,
const std::vector< std::vector< OutputShape > > &  phi_vals 
)
protectedinherited

Definition at line 804 of file fe_base.C.

805{
806 // Start logging the dual coeff computation
807 LOG_SCOPE("compute_dual_shape_coeffs()", "FE");
808
809 const unsigned int sz=phi_vals.size();
810 libmesh_error_msg_if(!sz, "ERROR: cannot compute dual shape coefficients with empty phi values");
811
812 //compute dual basis coefficient (dual_coeff)
813 dual_coeff.resize(sz, sz);
814 DenseMatrix<Real> A(sz, sz), D(sz, sz);
815
816 for (const auto i : index_range(phi_vals))
817 for (const auto qp : index_range(phi_vals[i]))
818 {
819 D(i,i) += JxW[qp]*phi_vals[i][qp];
820 for (const auto j : index_range(phi_vals))
821 A(i,j) += JxW[qp]*phi_vals[i][qp]*phi_vals[j][qp];
822 }
823
824 // dual_coeff = A^-1*D
825 for (const auto j : index_range(phi_vals))
826 {
827 DenseVector<Real> Dcol(sz), coeffcol(sz);
828 for (const auto i : index_range(phi_vals))
829 Dcol(i) = D(i, j);
830 A.cholesky_solve(Dcol, coeffcol);
831
832 for (const auto row : index_range(phi_vals))
833 dual_coeff(row, j)=coeffcol(row);
834 }
835}
DenseMatrix< Real > dual_coeff
Coefficient matrix for the dual basis.
Definition fe_base.h:626

◆ compute_dual_shape_functions() [1/3]

void libMesh::FEGenericBase< FEOutputType< T >::type >::compute_dual_shape_functions ( )
protectedinherited

Compute dual_phi, dual_dphi, dual_d2phi It is only valid for this to be called after reinit has occurred with a quadrature rule.

Definition at line 603 of file fe_base.h.

793{
794 libmesh_error_msg(
795 "Computation of dual shape functions for vector finite element "
796 "families is not currently implemented");
797}

◆ compute_dual_shape_functions() [2/3]

void libMesh::FEGenericBase< Real >::compute_dual_shape_functions ( )
protectedinherited

◆ compute_dual_shape_functions() [3/3]

void libMesh::FEGenericBase< Real >::compute_dual_shape_functions ( )
protectedinherited

Definition at line 838 of file fe_base.C.

839{
840 // Start logging the shape function computation
841 LOG_SCOPE("compute_dual_shape_functions()", "FE");
842
843 // The dual coeffs matrix should have the same size as phi
844 libmesh_assert(dual_coeff.m() == phi.size());
845 libmesh_assert(dual_coeff.n() == phi.size());
846
847 // initialize dual basis
848 for (const auto j : index_range(phi))
849 for (const auto qp : index_range(phi[j]))
850 {
851 dual_phi[j][qp] = 0;
852 if (calculate_dphi)
853 dual_dphi[j][qp] = 0;
854#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
855 if (calculate_d2phi)
856 dual_d2phi[j][qp] = 0;
857#endif
858 }
859
860 // compute dual basis
861 for (const auto j : index_range(phi))
862 for (const auto i : index_range(phi))
863 for (const auto qp : index_range(phi[j]))
864 {
865 dual_phi[j][qp] += dual_coeff(i, j) * phi[i][qp];
866 if (calculate_dphi)
867 dual_dphi[j][qp] += dual_coeff(i, j) * dphi[i][qp];
868#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
869 if (calculate_d2phi)
870 dual_d2phi[j][qp] += dual_coeff(i, j) * d2phi[i][qp];
871#endif
872 }
873}
std::vector< std::vector< OutputTensor > > d2phi
Shape function second derivative values.
Definition fe_base.h:674
std::vector< std::vector< OutputGradient > > dual_dphi
Definition fe_base.h:621
std::vector< std::vector< OutputGradient > > dphi
Shape function derivative values.
Definition fe_base.h:620
std::vector< std::vector< OutputShape > > phi
Shape function values.
Definition fe_base.h:614
std::vector< std::vector< OutputTensor > > dual_d2phi
Definition fe_base.h:675
std::vector< std::vector< OutputShape > > dual_phi
Definition fe_base.h:615

◆ compute_node_constraints()

void libMesh::FEAbstract::compute_node_constraints ( NodeConstraints constraints,
const Elem elem 
)
staticinherited

Computes the nodal constraint contributions (for non-conforming adapted meshes), using Lagrange geometry.

Definition at line 886 of file fe_abstract.C.

888{
889 libmesh_assert(elem);
890
891 const unsigned int Dim = elem->dim();
892
893 // Only constrain elements in 2,3D.
894 if (Dim == 1)
895 return;
896
897 // Only constrain active and ancestor elements
898 if (elem->subactive())
899 return;
900
901
902#ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
903 if (elem->infinite())
904 {
905 const FEType fe_t(elem->default_order(), FEMap::map_fe_type(*elem));
906
907 // expand the infinite_compute_constraint in its template-arguments.
908 switch(Dim)
909 {
910 case 2:
911 {
912 inf_fe_family_mapping_switch(2, inf_compute_node_constraints (constraints, elem) , ,; break;);
913 break;
914 }
915 case 3:
916 {
917 inf_fe_family_mapping_switch(3, inf_compute_node_constraints (constraints, elem) , ,; break;);
918 break;
919 }
920 default:
921 libmesh_error_msg("Invalid dim = " << Dim);
922 }
923 return;
924 }
925
926#endif
927 const FEFamily mapping_family = FEMap::map_fe_type(*elem);
928 const FEType fe_type(elem->default_side_order(), mapping_family);
929
930 // Pull objects out of the loop to reduce heap operations
931 std::vector<const Node *> my_nodes, parent_nodes;
932 std::unique_ptr<const Elem> my_side, parent_side;
933
934 // Look at the element faces. Check to see if we need to
935 // build constraints.
936 for (auto s : elem->side_index_range())
937 if (elem->neighbor_ptr(s) != nullptr &&
938 elem->neighbor_ptr(s) != remote_elem)
939 if (elem->neighbor_ptr(s)->level() < elem->level()) // constrain dofs shared between
940 { // this element and ones coarser
941 // than this element.
942 // Get pointers to the elements of interest and its parent.
943 const Elem * parent = elem->parent();
944
945 // This can't happen... Only level-0 elements have nullptr
946 // parents, and no level-0 elements can be at a higher
947 // level than their neighbors!
948 libmesh_assert(parent);
949
950 elem->build_side_ptr(my_side, s);
951 parent->build_side_ptr(parent_side, s);
952
953 const unsigned int n_side_nodes = my_side->n_nodes();
954
955 my_nodes.clear();
956 my_nodes.reserve (n_side_nodes);
957 parent_nodes.clear();
958 parent_nodes.reserve (n_side_nodes);
959
960 for (unsigned int n=0; n != n_side_nodes; ++n)
961 my_nodes.push_back(my_side->node_ptr(n));
962
963 for (unsigned int n=0; n != n_side_nodes; ++n)
964 parent_nodes.push_back(parent_side->node_ptr(n));
965
966 for (unsigned int my_side_n=0;
967 my_side_n < n_side_nodes;
968 my_side_n++)
969 {
970 // We can have an FE type that supports an order
971 // partially, such that sides do not support the same
972 // order. E.g. we say that a LAGRANGE PRISM21 supports
973 // "third" order to distinguish its shape functions from
974 // a PRISM18, but the QUAD9 sides will still only
975 // support second order.
976 FEType side_fe_type = fe_type;
977 const int side_max_order =
978 FEInterface::max_order(fe_type, my_side->type());
979
980 if ((int)fe_type.order > side_max_order)
981 side_fe_type.order = side_max_order;
982
983 // Do not use the p_level(), if any, that is inherited by the side.
984 libmesh_assert_less
985 (my_side_n,
986 FEInterface::n_dofs(side_fe_type, /*extra_order=*/0,
987 my_side.get()));
988
989 const Node * my_node = my_nodes[my_side_n];
990
991 // The support point of the DOF
992 const Point & support_point = *my_node;
993
994 // Figure out where my node lies on their reference element.
995 const Point mapped_point = FEMap::inverse_map(Dim-1,
996 parent_side.get(),
997 support_point);
998
999 // Compute the parent's side shape function values.
1000 for (unsigned int their_side_n=0;
1001 their_side_n < n_side_nodes;
1002 their_side_n++)
1003 {
1004 // Do not use the p_level(), if any, that is inherited by the side.
1005 libmesh_assert_less
1006 (their_side_n,
1007 FEInterface::n_dofs(side_fe_type,
1008 /*extra_order=*/0,
1009 parent_side.get()));
1010
1011 const Node * their_node = parent_nodes[their_side_n];
1012 libmesh_assert(their_node);
1013
1014 // Do not use the p_level(), if any, that is inherited by the side.
1015 const Real their_value = FEInterface::shape(side_fe_type,
1016 /*extra_order=*/0,
1017 parent_side.get(),
1018 their_side_n,
1019 mapped_point);
1020
1021 const Real their_mag = std::abs(their_value);
1022#ifdef DEBUG
1023 // Protect for the case u_i ~= u_j,
1024 // in which case i better equal j.
1025 if (their_mag > 0.999)
1026 {
1027 libmesh_assert_equal_to (my_node, their_node);
1028 libmesh_assert_less (std::abs(their_value - 1.), 0.001);
1029 }
1030 else
1031#endif
1032 // To make nodal constraints useful for constructing
1033 // sparsity patterns faster, we need to get EVERY
1034 // POSSIBLE constraint coupling identified, even if
1035 // there is no coupling in the isoparametric
1036 // Lagrange case.
1037 if (their_mag < 1.e-5)
1038 {
1039 // since we may be running this method concurrently
1040 // on multiple threads we need to acquire a lock
1041 // before modifying the shared constraint_row object.
1042 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1043
1044 // A reference to the constraint row.
1045 NodeConstraintRow & constraint_row = constraints[my_node].first;
1046
1047 constraint_row.emplace(their_node, 0.);
1048 }
1049 // To get nodal coordinate constraints right, only
1050 // add non-zero and non-identity values for Lagrange
1051 // basis functions.
1052 else // (1.e-5 <= their_mag <= .999)
1053 {
1054 // since we may be running this method concurrently
1055 // on multiple threads we need to acquire a lock
1056 // before modifying the shared constraint_row object.
1057 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1058
1059 // A reference to the constraint row.
1060 NodeConstraintRow & constraint_row = constraints[my_node].first;
1061
1062 constraint_row.emplace(their_node, their_value);
1063 }
1064 }
1065 }
1066 }
1067}
static Real shape(const unsigned int dim, const FEType &fe_t, const ElemType t, const unsigned int i, const Point &p)
static unsigned int max_order(const FEType &fe_t, const ElemType &el_t)
static FEFamily map_fe_type(const Elem &elem)
Definition fe_map.C:46
spin_mutex spin_mtx
A convenient spin mutex object which can be used for obtaining locks.
Definition threads.C:30
std::map< const Node *, Real, std::less< const Node * >, Threads::scalable_allocator< std::pair< const Node *const, Real > > > NodeConstraintRow
A row of the Node constraint mapping.
Definition dof_map.h:148
const RemoteElem * remote_elem
Definition remote_elem.C:57

References libMesh::Elem::build_side_ptr(), libMesh::Elem::default_order(), libMesh::Elem::default_side_order(), libMesh::Elem::dim(), libMesh::FEAbstract::fe_type, libMesh::Elem::infinite(), libMesh::FEMap::inverse_map(), libMesh::Elem::level(), libMesh::libmesh_assert(), libMesh::FEMap::map_fe_type(), libMesh::FEInterface::max_order(), libMesh::FEInterface::n_dofs(), libMesh::Elem::neighbor_ptr(), libMesh::FEType::order, libMesh::Elem::parent(), libMesh::Real, libMesh::remote_elem, libMesh::FEInterface::shape(), libMesh::Elem::side_index_range(), libMesh::Threads::spin_mtx, and libMesh::Elem::subactive().

◆ compute_periodic_constraints()

void libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints ( DofConstraints constraints,
DofMap dof_map,
const PeriodicBoundaries boundaries,
const MeshBase mesh,
const PointLocatorBase point_locator,
const unsigned int  variable_number,
const Elem elem 
)
staticinherited

Computes the constraint matrix contributions (for meshes with periodic boundary conditions) corresponding to variable number var_number, using generic projections.

Definition at line 193 of file fe_base.C.

1849{
1850 // Only bother if we truly have periodic boundaries
1851 if (boundaries.empty())
1852 return;
1853
1854 libmesh_assert(elem);
1855
1856 // Only constrain active elements with this method
1857 if (!elem->active())
1858 return;
1859
1860 if (elem->infinite())
1861 libmesh_not_implemented();
1862
1863 const unsigned int Dim = elem->dim();
1864
1865 // We need sys_number and variable_number for DofObject methods
1866 // later
1867 const unsigned int sys_number = dof_map.sys_number();
1868
1869 const FEType & base_fe_type = dof_map.variable_type(variable_number);
1870
1871 // Construct FE objects for this element and its pseudo-neighbors.
1872 std::unique_ptr<FEGenericBase<OutputShape>> my_fe
1873 (FEGenericBase<OutputShape>::build(Dim, base_fe_type));
1874 const FEContinuity cont = my_fe->get_continuity();
1875
1876 // We don't need to constrain discontinuous elements
1877 if (cont == DISCONTINUOUS)
1878 return;
1879 libmesh_assert (cont == C_ZERO || cont == C_ONE);
1880
1881 // We'll use element size to generate relative tolerances later
1882 const Real primary_hmin = elem->hmin();
1883
1884 std::unique_ptr<FEGenericBase<OutputShape>> neigh_fe
1885 (FEGenericBase<OutputShape>::build(Dim, base_fe_type));
1886
1887 QGauss my_qface(Dim-1, base_fe_type.default_quadrature_order());
1888 my_fe->attach_quadrature_rule (&my_qface);
1889 std::vector<Point> neigh_qface;
1890
1891 const std::vector<Real> & JxW = my_fe->get_JxW();
1892 const std::vector<Point> & q_point = my_fe->get_xyz();
1893 const std::vector<std::vector<OutputShape>> & phi = my_fe->get_phi();
1894 const std::vector<std::vector<OutputShape>> & neigh_phi =
1895 neigh_fe->get_phi();
1896 const std::vector<Point> * face_normals = nullptr;
1897 const std::vector<std::vector<OutputGradient>> * dphi = nullptr;
1898 const std::vector<std::vector<OutputGradient>> * neigh_dphi = nullptr;
1899 std::vector<dof_id_type> my_dof_indices, neigh_dof_indices;
1900 std::vector<unsigned int> my_side_dofs, neigh_side_dofs;
1901
1902 if (cont != C_ZERO)
1903 {
1904 const std::vector<Point> & ref_face_normals =
1905 my_fe->get_normals();
1906 face_normals = &ref_face_normals;
1907 const std::vector<std::vector<OutputGradient>> & ref_dphi =
1908 my_fe->get_dphi();
1909 dphi = &ref_dphi;
1910 const std::vector<std::vector<OutputGradient>> & ref_neigh_dphi =
1911 neigh_fe->get_dphi();
1912 neigh_dphi = &ref_neigh_dphi;
1913 }
1914
1917 std::vector<DenseVector<Real>> Ue;
1918
1919 // Container to catch the boundary ids that BoundaryInfo hands us.
1920 std::vector<boundary_id_type> bc_ids;
1921
1922 // Look at the element faces. Check to see if we need to
1923 // build constraints.
1924 const unsigned short int max_ns = elem->n_sides();
1925 for (unsigned short int s = 0; s != max_ns; ++s)
1926 {
1927 if (elem->neighbor_ptr(s))
1928 continue;
1929
1930 mesh.get_boundary_info().boundary_ids (elem, s, bc_ids);
1931
1932 for (const auto & boundary_id : bc_ids)
1933 {
1934 const PeriodicBoundaryBase * periodic = boundaries.boundary(boundary_id);
1935 if (!periodic || !periodic->is_my_variable(variable_number))
1936 continue;
1937
1938 libmesh_assert(point_locator);
1939
1940 // Get pointers to the element's neighbor.
1941 unsigned int s_neigh;
1942 const Elem * neigh = boundaries.neighbor(boundary_id, *point_locator, elem, s, &s_neigh);
1943
1944 libmesh_error_msg_if(neigh == nullptr,
1945 "PeriodicBoundaries point locator object returned nullptr!");
1946
1947 // periodic (and possibly h refinement) constraints:
1948 // constrain dofs shared between
1949 // this element and ones as coarse
1950 // as or coarser than this element.
1951 if (neigh->level() <= elem->level())
1952 {
1953#ifdef LIBMESH_ENABLE_AMR
1954 // Find the minimum p level; we build the h constraint
1955 // matrix with this and then constrain away all higher p
1956 // DoFs.
1957 libmesh_assert(neigh->active());
1958 const unsigned int min_p_level =
1959 std::min(elem->p_level(), neigh->p_level());
1960
1961 // we may need to make the FE objects reinit with the
1962 // minimum shared p_level
1963 // FIXME - I hate using const_cast<> and avoiding
1964 // accessor functions; there's got to be a
1965 // better way to do this!
1966 const unsigned int old_elem_level = elem->p_level();
1967 if (old_elem_level != min_p_level)
1968 (const_cast<Elem *>(elem))->hack_p_level(min_p_level);
1969 const unsigned int old_neigh_level = neigh->p_level();
1970 if (old_neigh_level != min_p_level)
1971 (const_cast<Elem *>(neigh))->hack_p_level(min_p_level);
1972#endif // #ifdef LIBMESH_ENABLE_AMR
1973
1974 // We can do a projection with a single integration,
1975 // due to the assumption of nested finite element
1976 // subspaces.
1977 // FIXME: it might be more efficient to do nodes,
1978 // then edges, then side, to reduce the size of the
1979 // Cholesky factorization(s)
1980 my_fe->reinit(elem, s);
1981
1982 dof_map.dof_indices (elem, my_dof_indices,
1983 variable_number);
1984 dof_map.dof_indices (neigh, neigh_dof_indices,
1985 variable_number);
1986
1987 // We use neigh_dof_indices_all_variables in the case that the
1988 // periodic boundary condition involves mappings between multiple
1989 // variables.
1990 std::vector<std::vector<dof_id_type>> neigh_dof_indices_all_variables;
1991 if(periodic->has_transformation_matrix())
1992 {
1993 const std::set<unsigned int> & variables = periodic->get_variables();
1994 neigh_dof_indices_all_variables.resize(variables.size());
1995 unsigned int index = 0;
1996 for(unsigned int var : variables)
1997 {
1998 dof_map.dof_indices (neigh, neigh_dof_indices_all_variables[index],
1999 var);
2000 index++;
2001 }
2002 }
2003
2004 const unsigned int n_qp = my_qface.n_points();
2005
2006 // Translate the quadrature points over to the
2007 // neighbor's boundary
2008 std::vector<Point> neigh_point(q_point.size());
2009 for (auto i : index_range(neigh_point))
2010 neigh_point[i] = periodic->get_corresponding_pos(q_point[i]);
2011
2012 FEMap::inverse_map (Dim, neigh, neigh_point,
2013 neigh_qface);
2014
2015 neigh_fe->reinit(neigh, &neigh_qface);
2016
2017 // We're only concerned with DOFs whose values (and/or first
2018 // derivatives for C1 elements) are supported on side nodes
2019 FEInterface::dofs_on_side(elem, Dim, base_fe_type, s, my_side_dofs);
2020 FEInterface::dofs_on_side(neigh, Dim, base_fe_type, s_neigh, neigh_side_dofs);
2021
2022 // We're done with functions that examine Elem::p_level(),
2023 // so let's unhack those levels
2024#ifdef LIBMESH_ENABLE_AMR
2025 if (elem->p_level() != old_elem_level)
2026 (const_cast<Elem *>(elem))->hack_p_level(old_elem_level);
2027 if (neigh->p_level() != old_neigh_level)
2028 (const_cast<Elem *>(neigh))->hack_p_level(old_neigh_level);
2029#endif // #ifdef LIBMESH_ENABLE_AMR
2030
2031 const unsigned int n_side_dofs =
2032 cast_int<unsigned int>
2033 (my_side_dofs.size());
2034 libmesh_assert_equal_to (n_side_dofs, neigh_side_dofs.size());
2035
2036 Ke.resize (n_side_dofs, n_side_dofs);
2037 Ue.resize(n_side_dofs);
2038
2039 // Form the projection matrix, (inner product of fine basis
2040 // functions against fine test functions)
2041 for (unsigned int is = 0; is != n_side_dofs; ++is)
2042 {
2043 const unsigned int i = my_side_dofs[is];
2044 for (unsigned int js = 0; js != n_side_dofs; ++js)
2045 {
2046 const unsigned int j = my_side_dofs[js];
2047 for (unsigned int qp = 0; qp != n_qp; ++qp)
2048 {
2049 Ke(is,js) += JxW[qp] *
2051 phi[j][qp]);
2052 if (cont != C_ZERO)
2053 Ke(is,js) += JxW[qp] *
2055 (*face_normals)[qp],
2056 (*dphi)[j][qp] *
2057 (*face_normals)[qp]);
2058 }
2059 }
2060 }
2061
2062 // Form the right hand sides, (inner product of coarse basis
2063 // functions against fine test functions)
2064 for (unsigned int is = 0; is != n_side_dofs; ++is)
2065 {
2066 const unsigned int i = neigh_side_dofs[is];
2067 Fe.resize (n_side_dofs);
2068 for (unsigned int js = 0; js != n_side_dofs; ++js)
2069 {
2070 const unsigned int j = my_side_dofs[js];
2071 for (unsigned int qp = 0; qp != n_qp; ++qp)
2072 {
2073 Fe(js) += JxW[qp] *
2074 TensorTools::inner_product(neigh_phi[i][qp],
2075 phi[j][qp]);
2076 if (cont != C_ZERO)
2077 Fe(js) += JxW[qp] *
2078 TensorTools::inner_product((*neigh_dphi)[i][qp] *
2079 (*face_normals)[qp],
2080 (*dphi)[j][qp] *
2081 (*face_normals)[qp]);
2082 }
2083 }
2084 Ke.cholesky_solve(Fe, Ue[is]);
2085 }
2086
2087 // Make sure we're not adding recursive constraints
2088 // due to the redundancy in the way we add periodic
2089 // boundary constraints
2090 //
2091 // In order for this to work while threaded or on
2092 // distributed meshes, we need a rigorous way to
2093 // avoid recursive constraints. Here it is:
2094 //
2095 // For vertex DoFs, if there is a "prior" element
2096 // (i.e. a coarser element or an equally refined
2097 // element with a lower id) on this boundary which
2098 // contains the vertex point, then we will avoid
2099 // generating constraints; the prior element (or
2100 // something prior to it) may do so. If we are the
2101 // most prior (or "primary") element on this
2102 // boundary sharing this point, then we look at the
2103 // boundary periodic to us, we find the primary
2104 // element there, and if that primary is coarser or
2105 // equal-but-lower-id, then our vertex dofs are
2106 // constrained in terms of that element.
2107 //
2108 // For edge DoFs, if there is a coarser element
2109 // on this boundary sharing this edge, then we will
2110 // avoid generating constraints (we will be
2111 // constrained indirectly via AMR constraints
2112 // connecting us to the coarser element's DoFs). If
2113 // we are the coarsest element sharing this edge,
2114 // then we generate constraints if and only if we
2115 // are finer than the coarsest element on the
2116 // boundary periodic to us sharing the corresponding
2117 // periodic edge, or if we are at equal level but
2118 // our edge nodes have higher ids than the periodic
2119 // edge nodes (sorted from highest to lowest, then
2120 // compared lexicographically)
2121 //
2122 // For face DoFs, we generate constraints if we are
2123 // finer than our periodic neighbor, or if we are at
2124 // equal level but our element id is higher than its
2125 // element id.
2126 //
2127 // If the primary neighbor is also the current elem
2128 // (a 1-element-thick mesh) then we choose which
2129 // vertex dofs to constrain via lexicographic
2130 // ordering on point locations
2131
2132 // FIXME: This code doesn't yet properly handle
2133 // cases where multiple different periodic BCs
2134 // intersect.
2135 std::set<dof_id_type> my_constrained_dofs;
2136
2137 // Container to catch boundary IDs handed back by BoundaryInfo.
2138 std::vector<boundary_id_type> new_bc_ids;
2139
2140 for (auto n : elem->node_index_range())
2141 {
2142 if (!elem->is_node_on_side(n,s))
2143 continue;
2144
2145 const Node & my_node = elem->node_ref(n);
2146
2147 if (elem->is_vertex(n))
2148 {
2149 // Find all boundary ids that include this
2150 // point and have periodic boundary
2151 // conditions for this variable
2152 std::set<boundary_id_type> point_bcids;
2153
2154 for (unsigned int new_s = 0;
2155 new_s != max_ns; ++new_s)
2156 {
2157 if (!elem->is_node_on_side(n,new_s))
2158 continue;
2159
2160 mesh.get_boundary_info().boundary_ids (elem, s, new_bc_ids);
2161
2162 for (const auto & new_boundary_id : new_bc_ids)
2163 {
2164 const PeriodicBoundaryBase * new_periodic = boundaries.boundary(new_boundary_id);
2165 if (new_periodic && new_periodic->is_my_variable(variable_number))
2166 point_bcids.insert(new_boundary_id);
2167 }
2168 }
2169
2170 // See if this vertex has point neighbors to
2171 // defer to
2172 if (primary_boundary_point_neighbor
2173 (elem, my_node, mesh.get_boundary_info(), point_bcids)
2174 != elem)
2175 continue;
2176
2177 // Find the complementary boundary id set
2178 std::set<boundary_id_type> point_pairedids;
2179 for (const auto & new_boundary_id : point_bcids)
2180 {
2181 const PeriodicBoundaryBase * new_periodic = boundaries.boundary(new_boundary_id);
2182 point_pairedids.insert(new_periodic->pairedboundary);
2183 }
2184
2185 // What do we want to constrain against?
2186 const Elem * primary_elem = nullptr;
2187 const Elem * main_neigh = nullptr;
2188 Point main_pt = my_node,
2189 primary_pt = my_node;
2190
2191 for (const auto & new_boundary_id : point_bcids)
2192 {
2193 // Find the corresponding periodic point and
2194 // its primary neighbor
2195 const PeriodicBoundaryBase * new_periodic = boundaries.boundary(new_boundary_id);
2196
2197 const Point neigh_pt =
2198 new_periodic->get_corresponding_pos(my_node);
2199
2200 // If the point is getting constrained
2201 // to itself by this PBC then we don't
2202 // generate any constraints
2203 if (neigh_pt.absolute_fuzzy_equals
2204 (my_node, primary_hmin*TOLERANCE))
2205 continue;
2206
2207 // Otherwise we'll have a constraint in
2208 // one direction or another
2209 if (!primary_elem)
2210 primary_elem = elem;
2211
2212 const Elem * primary_neigh =
2213 primary_boundary_point_neighbor(neigh, neigh_pt,
2215 point_pairedids);
2216
2217 libmesh_assert(primary_neigh);
2218
2219 if (new_boundary_id == boundary_id)
2220 {
2221 main_neigh = primary_neigh;
2222 main_pt = neigh_pt;
2223 }
2224
2225 // Finer elements will get constrained in
2226 // terms of coarser neighbors, not the
2227 // other way around
2228 if ((primary_neigh->level() > primary_elem->level()) ||
2229
2230 // For equal-level elements, the one with
2231 // higher id gets constrained in terms of
2232 // the one with lower id
2233 (primary_neigh->level() == primary_elem->level() &&
2234 primary_neigh->id() > primary_elem->id()) ||
2235
2236 // On a one-element-thick mesh, we compare
2237 // points to see what side gets constrained
2238 (primary_neigh == primary_elem &&
2239 (neigh_pt > primary_pt)))
2240 continue;
2241
2242 primary_elem = primary_neigh;
2243 primary_pt = neigh_pt;
2244 }
2245
2246 if (!primary_elem ||
2247 primary_elem != main_neigh ||
2248 primary_pt != main_pt)
2249 continue;
2250 }
2251 else if (elem->is_edge(n))
2252 {
2253 // Find which edge we're on
2254 unsigned int e=0, ne = elem->n_edges();
2255 for (; e != ne; ++e)
2256 {
2257 if (elem->is_node_on_edge(n,e))
2258 break;
2259 }
2260 libmesh_assert_less (e, elem->n_edges());
2261
2262 // Find the edge end nodes
2263 const Node
2264 * e1 = nullptr,
2265 * e2 = nullptr;
2266 for (auto nn : elem->node_index_range())
2267 {
2268 if (nn == n)
2269 continue;
2270
2271 if (elem->is_node_on_edge(nn, e))
2272 {
2273 if (e1 == nullptr)
2274 {
2275 e1 = elem->node_ptr(nn);
2276 }
2277 else
2278 {
2279 e2 = elem->node_ptr(nn);
2280 break;
2281 }
2282 }
2283 }
2284 libmesh_assert (e1 && e2);
2285
2286 // Find all boundary ids that include this
2287 // edge and have periodic boundary
2288 // conditions for this variable
2289 std::set<boundary_id_type> edge_bcids;
2290
2291 for (unsigned int new_s = 0;
2292 new_s != max_ns; ++new_s)
2293 {
2294 if (!elem->is_node_on_side(n,new_s))
2295 continue;
2296
2297 // We're reusing the new_bc_ids vector created outside the loop over nodes.
2298 mesh.get_boundary_info().boundary_ids (elem, s, new_bc_ids);
2299
2300 for (const auto & new_boundary_id : new_bc_ids)
2301 {
2302 const PeriodicBoundaryBase * new_periodic = boundaries.boundary(new_boundary_id);
2303 if (new_periodic && new_periodic->is_my_variable(variable_number))
2304 edge_bcids.insert(new_boundary_id);
2305 }
2306 }
2307
2308
2309 // See if this edge has neighbors to defer to
2310 if (primary_boundary_edge_neighbor
2311 (elem, *e1, *e2, mesh.get_boundary_info(), edge_bcids)
2312 != elem)
2313 continue;
2314
2315 // Find the complementary boundary id set
2316 std::set<boundary_id_type> edge_pairedids;
2317 for (const auto & new_boundary_id : edge_bcids)
2318 {
2319 const PeriodicBoundaryBase * new_periodic = boundaries.boundary(new_boundary_id);
2320 edge_pairedids.insert(new_periodic->pairedboundary);
2321 }
2322
2323 // What do we want to constrain against?
2324 const Elem * primary_elem = nullptr;
2325 const Elem * main_neigh = nullptr;
2326 Point main_pt1 = *e1,
2327 main_pt2 = *e2,
2328 primary_pt1 = *e1,
2329 primary_pt2 = *e2;
2330
2331 for (const auto & new_boundary_id : edge_bcids)
2332 {
2333 // Find the corresponding periodic edge and
2334 // its primary neighbor
2335 const PeriodicBoundaryBase * new_periodic = boundaries.boundary(new_boundary_id);
2336
2337 Point neigh_pt1 = new_periodic->get_corresponding_pos(*e1),
2338 neigh_pt2 = new_periodic->get_corresponding_pos(*e2);
2339
2340 // If the edge is getting constrained
2341 // to itself by this PBC then we don't
2342 // generate any constraints
2343 if (neigh_pt1.absolute_fuzzy_equals
2344 (*e1, primary_hmin*TOLERANCE) &&
2345 neigh_pt2.absolute_fuzzy_equals
2346 (*e2, primary_hmin*TOLERANCE))
2347 continue;
2348
2349 // Otherwise we'll have a constraint in
2350 // one direction or another
2351 if (!primary_elem)
2352 primary_elem = elem;
2353
2354 const Elem * primary_neigh = primary_boundary_edge_neighbor
2355 (neigh, neigh_pt1, neigh_pt2,
2356 mesh.get_boundary_info(), edge_pairedids);
2357
2358 libmesh_assert(primary_neigh);
2359
2360 if (new_boundary_id == boundary_id)
2361 {
2362 main_neigh = primary_neigh;
2363 main_pt1 = neigh_pt1;
2364 main_pt2 = neigh_pt2;
2365 }
2366
2367 // If we have a one-element thick mesh,
2368 // we'll need to sort our points to get a
2369 // consistent ordering rule
2370 //
2371 // Use >= in this test to make sure that,
2372 // for angular constraints, no node gets
2373 // constrained to itself.
2374 if (primary_neigh == primary_elem)
2375 {
2376 if (primary_pt1 > primary_pt2)
2377 std::swap(primary_pt1, primary_pt2);
2378 if (neigh_pt1 > neigh_pt2)
2379 std::swap(neigh_pt1, neigh_pt2);
2380
2381 if (neigh_pt2 >= primary_pt2)
2382 continue;
2383 }
2384
2385 // Otherwise:
2386 // Finer elements will get constrained in
2387 // terms of coarser ones, not the other way
2388 // around
2389 if ((primary_neigh->level() > primary_elem->level()) ||
2390
2391 // For equal-level elements, the one with
2392 // higher id gets constrained in terms of
2393 // the one with lower id
2394 (primary_neigh->level() == primary_elem->level() &&
2395 primary_neigh->id() > primary_elem->id()))
2396 continue;
2397
2398 primary_elem = primary_neigh;
2399 primary_pt1 = neigh_pt1;
2400 primary_pt2 = neigh_pt2;
2401 }
2402
2403 if (!primary_elem ||
2404 primary_elem != main_neigh ||
2405 primary_pt1 != main_pt1 ||
2406 primary_pt2 != main_pt2)
2407 continue;
2408 }
2409 else if (elem->is_face(n))
2410 {
2411 // If we have a one-element thick mesh,
2412 // use the ordering of the face node and its
2413 // periodic counterpart to determine what
2414 // gets constrained
2415 if (neigh == elem)
2416 {
2417 const Point neigh_pt =
2418 periodic->get_corresponding_pos(my_node);
2419 if (neigh_pt > my_node)
2420 continue;
2421 }
2422
2423 // Otherwise:
2424 // Finer elements will get constrained in
2425 // terms of coarser ones, not the other way
2426 // around
2427 if ((neigh->level() > elem->level()) ||
2428
2429 // For equal-level elements, the one with
2430 // higher id gets constrained in terms of
2431 // the one with lower id
2432 (neigh->level() == elem->level() &&
2433 neigh->id() > elem->id()))
2434 continue;
2435 }
2436
2437 // If we made it here without hitting a continue
2438 // statement, then we're at a node whose dofs
2439 // should be constrained by this element's
2440 // calculations.
2441 const unsigned int n_comp =
2442 my_node.n_comp(sys_number, variable_number);
2443
2444 for (unsigned int i=0; i != n_comp; ++i)
2445 my_constrained_dofs.insert
2446 (my_node.dof_number
2447 (sys_number, variable_number, i));
2448 }
2449
2450 // FIXME: old code for disambiguating periodic BCs:
2451 // this is not threadsafe nor safe to run on a
2452 // non-serialized mesh.
2453 /*
2454 std::vector<bool> recursive_constraint(n_side_dofs, false);
2455
2456 for (unsigned int is = 0; is != n_side_dofs; ++is)
2457 {
2458 const unsigned int i = neigh_side_dofs[is];
2459 const dof_id_type their_dof_g = neigh_dof_indices[i];
2460 libmesh_assert_not_equal_to (their_dof_g, DofObject::invalid_id);
2461
2462 {
2463 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
2464
2465 if (!dof_map.is_constrained_dof(their_dof_g))
2466 continue;
2467 }
2468
2469 DofConstraintRow & their_constraint_row =
2470 constraints[their_dof_g].first;
2471
2472 for (unsigned int js = 0; js != n_side_dofs; ++js)
2473 {
2474 const unsigned int j = my_side_dofs[js];
2475 const dof_id_type my_dof_g = my_dof_indices[j];
2476 libmesh_assert_not_equal_to (my_dof_g, DofObject::invalid_id);
2477
2478 if (their_constraint_row.count(my_dof_g))
2479 recursive_constraint[js] = true;
2480 }
2481 }
2482 */
2483
2484 for (unsigned int js = 0; js != n_side_dofs; ++js)
2485 {
2486 // FIXME: old code path
2487 // if (recursive_constraint[js])
2488 // continue;
2489
2490 const unsigned int j = my_side_dofs[js];
2491 const dof_id_type my_dof_g = my_dof_indices[j];
2492 libmesh_assert_not_equal_to (my_dof_g, DofObject::invalid_id);
2493
2494 // FIXME: new code path
2495 if (!my_constrained_dofs.count(my_dof_g))
2496 continue;
2497
2498 DofConstraintRow * constraint_row;
2499
2500 // we may be running constraint methods concurrently
2501 // on multiple threads, so we need a lock to
2502 // ensure that this constraint is "ours"
2503 {
2504 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
2505
2506 if (dof_map.is_constrained_dof(my_dof_g))
2507 continue;
2508
2509 constraint_row = &(constraints[my_dof_g]);
2510 libmesh_assert(constraint_row->empty());
2511 }
2512
2513 for (unsigned int is = 0; is != n_side_dofs; ++is)
2514 {
2515 const unsigned int i = neigh_side_dofs[is];
2516 const dof_id_type their_dof_g = neigh_dof_indices[i];
2517 libmesh_assert_not_equal_to (their_dof_g, DofObject::invalid_id);
2518
2519 // Periodic constraints should never be
2520 // self-constraints
2521 // libmesh_assert_not_equal_to (their_dof_g, my_dof_g);
2522
2523 const Real their_dof_value = Ue[is](js);
2524
2525 if (their_dof_g == my_dof_g)
2526 {
2527 libmesh_assert_less (std::abs(their_dof_value-1.), 1.e-5);
2528 for (unsigned int k = 0; k != n_side_dofs; ++k)
2529 libmesh_assert(k == is || std::abs(Ue[k](js)) < 1.e-5);
2530 continue;
2531 }
2532
2533 if (std::abs(their_dof_value) < 10*TOLERANCE)
2534 continue;
2535
2536 if(!periodic->has_transformation_matrix())
2537 {
2538 constraint_row->emplace(their_dof_g, their_dof_value);
2539 }
2540 else
2541 {
2542 // In this case the current variable is constrained in terms of other variables.
2543 // We assume that all variables in this constraint have the same FE type (this
2544 // is asserted below), and hence we can create the constraint row contribution
2545 // by multiplying their_dof_value by the corresponding row of the transformation
2546 // matrix.
2547
2548 const std::set<unsigned int> & variables = periodic->get_variables();
2549 neigh_dof_indices_all_variables.resize(variables.size());
2550 unsigned int index = 0;
2551 for(unsigned int other_var : variables)
2552 {
2553 libmesh_assert_msg(base_fe_type == dof_map.variable_type(other_var), "FE types must match for all variables involved in constraint");
2554
2555 Real var_weighting = periodic->get_transformation_matrix()(variable_number, other_var);
2556 constraint_row->emplace(neigh_dof_indices_all_variables[index][i],
2557 var_weighting*their_dof_value);
2558 index++;
2559 }
2560 }
2561
2562 }
2563 }
2564 }
2565 // p refinement constraints:
2566 // constrain dofs shared between
2567 // active elements and neighbors with
2568 // lower polynomial degrees
2569#ifdef LIBMESH_ENABLE_AMR
2570 const unsigned int min_p_level =
2571 neigh->min_p_level_by_neighbor(elem, elem->p_level());
2572 if (min_p_level < elem->p_level())
2573 {
2574 // Adaptive p refinement of non-hierarchic bases will
2575 // require more coding
2576 libmesh_assert(my_fe->is_hierarchic());
2577 dof_map.constrain_p_dofs(variable_number, elem,
2578 s, min_p_level);
2579 }
2580#endif // #ifdef LIBMESH_ENABLE_AMR
2581 }
2582 }
2583}
void boundary_ids(const Node *node, std::vector< boundary_id_type > &vec_to_fill) const
Fills a user-provided std::vector with the boundary ids associated with Node node.
void constrain_p_dofs(unsigned int var, const Elem *elem, unsigned int s, unsigned int p)
Constrains degrees of freedom on side s of element elem which correspond to variable number var and t...
unsigned int sys_number() const
Definition dof_map.h:2340
bool is_constrained_dof(const dof_id_type dof) const
Definition dof_map.h:2426
unsigned int n_comp(const unsigned int s, const unsigned int var) const
Definition dof_object.h:978
dof_id_type dof_number(const unsigned int s, const unsigned int var, const unsigned int comp) const
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition dof_object.h:473
dof_id_type id() const
Definition dof_object.h:819
virtual bool is_node_on_side(const unsigned int n, const unsigned int s) const =0
bool active() const
Definition elem.h:2958
const Node & node_ref(const unsigned int i) const
Definition elem.h:2538
virtual bool is_face(const unsigned int i) const =0
virtual Real hmin() const
Definition elem.C:683
virtual unsigned short dim() const =0
virtual bool is_edge(const unsigned int i) const =0
unsigned int level() const
Definition elem.h:3091
unsigned int min_p_level_by_neighbor(const Elem *neighbor, unsigned int current_min) const
Definition elem.C:2350
const Node * node_ptr(const unsigned int i) const
Definition elem.h:2516
virtual bool is_vertex(const unsigned int i) const =0
virtual bool is_node_on_edge(const unsigned int n, const unsigned int e) const =0
virtual unsigned int n_edges() const =0
virtual unsigned int n_sides() const =0
const Elem * neighbor_ptr(unsigned int i) const
Definition elem.h:2615
virtual bool infinite() const =0
Order default_quadrature_order() const
Definition fe_type.h:415
const BoundaryInfo & get_boundary_info() const
The information about boundary ids on the mesh.
Definition mesh_base.h:170
A Node is like a Point, but with more information.
Definition node.h:55
PeriodicBoundaryBase * boundary(boundary_id_type id)
const Elem * neighbor(boundary_id_type boundary_id, const PointLocatorBase &point_locator, const Elem *e, unsigned int side, unsigned int *neigh_side=nullptr) const
The base class for defining periodic boundaries.
const DenseMatrix< Real > & get_transformation_matrix() const
Get the transformation matrix, if it is defined.
bool is_my_variable(unsigned int var_num) const
const std::set< unsigned int > & get_variables() const
Get the set of variables for this periodic boundary condition.
virtual Point get_corresponding_pos(const Point &pt) const =0
This function should be overridden by derived classes to define how one finds corresponding nodes on ...
This class implements specific orders of Gauss quadrature.
bool absolute_fuzzy_equals(const TypeVector< T > &rhs, Real tol=TOLERANCE) const
MeshBase & mesh
std::map< dof_id_type, Real, std::less< dof_id_type >, Threads::scalable_allocator< std::pair< const dof_id_type, Real > > > DofConstraintRow
A row of the Dof constraint matrix.
Definition dof_map.h:100
PetscErrorCode PetscInt const PetscInt IS * is
uint8_t dof_id_type
Definition id_types.h:67

◆ compute_periodic_node_constraints()

void libMesh::FEAbstract::compute_periodic_node_constraints ( NodeConstraints constraints,
const PeriodicBoundaries boundaries,
const MeshBase mesh,
const PointLocatorBase point_locator,
const Elem elem 
)
staticinherited

Computes the node position constraint equation contributions (for meshes with periodic boundary conditions)

Definition at line 1078 of file fe_abstract.C.

1083{
1084 // Only bother if we truly have periodic boundaries
1085 if (boundaries.empty())
1086 return;
1087
1088 libmesh_assert(elem);
1089
1090 // Only constrain active elements with this method
1091 if (!elem->active())
1092 return;
1093
1094 const unsigned int Dim = elem->dim();
1095
1096 const FEFamily mapping_family = FEMap::map_fe_type(*elem);
1097 const FEType fe_type(elem->default_side_order(), mapping_family);
1098
1099 // Pull objects out of the loop to reduce heap operations
1100 std::vector<const Node *> my_nodes, neigh_nodes;
1101 std::unique_ptr<const Elem> my_side, neigh_side;
1102
1103 // Look at the element faces. Check to see if we need to
1104 // build constraints.
1105 std::vector<boundary_id_type> bc_ids;
1106 for (auto s : elem->side_index_range())
1107 {
1108 if (elem->neighbor_ptr(s))
1109 continue;
1110
1111 mesh.get_boundary_info().boundary_ids (elem, s, bc_ids);
1112 for (const auto & boundary_id : bc_ids)
1113 {
1114 const PeriodicBoundaryBase * periodic = boundaries.boundary(boundary_id);
1115 if (periodic)
1116 {
1117 libmesh_assert(point_locator);
1118
1119 // Get pointers to the element's neighbor.
1120 unsigned int s_neigh;
1121 const Elem * neigh = boundaries.neighbor(boundary_id, *point_locator, elem, s, &s_neigh);
1122
1123 libmesh_error_msg_if
1124 (!neigh, "PeriodicBoundaries can't find a periodic neighbor for element " <<
1125 elem->id() << " side " << s);
1126
1127 // h refinement constraints:
1128 // constrain dofs shared between
1129 // this element and ones as coarse
1130 // as or coarser than this element.
1131 if (neigh->level() <= elem->level())
1132 {
1133#ifdef LIBMESH_ENABLE_AMR
1134 libmesh_assert(neigh->active());
1135#endif // #ifdef LIBMESH_ENABLE_AMR
1136
1137 elem->build_side_ptr(my_side, s);
1138 neigh->build_side_ptr(neigh_side, s_neigh);
1139
1140 const unsigned int n_side_nodes = my_side->n_nodes();
1141
1142 my_nodes.clear();
1143 my_nodes.reserve (n_side_nodes);
1144 neigh_nodes.clear();
1145 neigh_nodes.reserve (n_side_nodes);
1146
1147 for (unsigned int n=0; n != n_side_nodes; ++n)
1148 my_nodes.push_back(my_side->node_ptr(n));
1149
1150 for (unsigned int n=0; n != n_side_nodes; ++n)
1151 neigh_nodes.push_back(neigh_side->node_ptr(n));
1152
1153 // Make sure we're not adding recursive constraints
1154 // due to the redundancy in the way we add periodic
1155 // boundary constraints, or adding constraints to
1156 // nodes that already have AMR constraints
1157 std::vector<bool> skip_constraint(n_side_nodes, false);
1158
1159 for (unsigned int my_side_n=0;
1160 my_side_n < n_side_nodes;
1161 my_side_n++)
1162 {
1163 // Do not use the p_level(), if any, that is inherited by the side.
1164 libmesh_assert_less (my_side_n, FEInterface::n_dofs(fe_type, /*extra_order=*/0, my_side.get()));
1165
1166 const Node * my_node = my_nodes[my_side_n];
1167
1168 // If we've already got a constraint on this
1169 // node, then the periodic constraint is
1170 // redundant
1171 {
1172 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1173
1174 if (constraints.count(my_node))
1175 {
1176 skip_constraint[my_side_n] = true;
1177 continue;
1178 }
1179 }
1180
1181 // Compute the neighbors's side shape function values.
1182 for (unsigned int their_side_n=0;
1183 their_side_n < n_side_nodes;
1184 their_side_n++)
1185 {
1186 // Do not use the p_level(), if any, that is inherited by the side.
1187 libmesh_assert_less (their_side_n, FEInterface::n_dofs(fe_type, /*extra_order=*/0, neigh_side.get()));
1188
1189 const Node * their_node = neigh_nodes[their_side_n];
1190
1191 // If there's a constraint on an opposing node,
1192 // we need to see if it's constrained by
1193 // *our side* making any periodic constraint
1194 // on us recursive
1195 {
1196 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1197
1198 if (!constraints.count(their_node))
1199 continue;
1200
1201 const NodeConstraintRow & their_constraint_row =
1202 constraints[their_node].first;
1203
1204 for (unsigned int orig_side_n=0;
1205 orig_side_n < n_side_nodes;
1206 orig_side_n++)
1207 {
1208 // Do not use the p_level(), if any, that is inherited by the side.
1209 libmesh_assert_less (orig_side_n, FEInterface::n_dofs(fe_type, /*extra_order=*/0, my_side.get()));
1210
1211 const Node * orig_node = my_nodes[orig_side_n];
1212
1213 if (their_constraint_row.count(orig_node))
1214 skip_constraint[orig_side_n] = true;
1215 }
1216 }
1217 }
1218 }
1219 for (unsigned int my_side_n=0;
1220 my_side_n < n_side_nodes;
1221 my_side_n++)
1222 {
1223 // Do not use the p_level(), if any, that is inherited by the side.
1224 libmesh_assert_less (my_side_n, FEInterface::n_dofs(fe_type, /*extra_order=*/0, my_side.get()));
1225
1226 if (skip_constraint[my_side_n])
1227 continue;
1228
1229 const Node * my_node = my_nodes[my_side_n];
1230
1231 // Figure out where my node lies on their reference element.
1232 const Point neigh_point = periodic->get_corresponding_pos(*my_node);
1233
1234 // Figure out where my node lies on their reference element.
1235 const Point mapped_point =
1236 FEMap::inverse_map(Dim-1, neigh_side.get(),
1237 neigh_point);
1238
1239 for (unsigned int their_side_n=0;
1240 their_side_n < n_side_nodes;
1241 their_side_n++)
1242 {
1243 // Do not use the p_level(), if any, that is inherited by the side.
1244 libmesh_assert_less (their_side_n, FEInterface::n_dofs(fe_type, /*extra_order=*/0, neigh_side.get()));
1245
1246 const Node * their_node = neigh_nodes[their_side_n];
1247 libmesh_assert(their_node);
1248
1249 // Do not use the p_level(), if any, that is inherited by the side.
1250 const Real their_value = FEInterface::shape(fe_type,
1251 /*extra_order=*/0,
1252 neigh_side.get(),
1253 their_side_n,
1254 mapped_point);
1255
1256 // since we may be running this method concurrently
1257 // on multiple threads we need to acquire a lock
1258 // before modifying the shared constraint_row object.
1259 {
1260 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1261
1262 NodeConstraintRow & constraint_row =
1263 constraints[my_node].first;
1264
1265 constraint_row.emplace(their_node, their_value);
1266 }
1267 }
1268 }
1269 }
1270 }
1271 }
1272 }
1273}

References libMesh::Elem::active(), libMesh::PeriodicBoundaries::boundary(), libMesh::Elem::build_side_ptr(), libMesh::Elem::default_side_order(), libMesh::Elem::dim(), libMesh::FEAbstract::fe_type, libMesh::PeriodicBoundaryBase::get_corresponding_pos(), libMesh::DofObject::id(), libMesh::FEMap::inverse_map(), libMesh::Elem::level(), libMesh::libmesh_assert(), libMesh::FEMap::map_fe_type(), mesh, libMesh::FEInterface::n_dofs(), libMesh::PeriodicBoundaries::neighbor(), libMesh::Elem::neighbor_ptr(), libMesh::Real, libMesh::FEInterface::shape(), libMesh::Elem::side_index_range(), and libMesh::Threads::spin_mtx.

◆ compute_proj_constraints()

void libMesh::FEGenericBase< FEOutputType< T >::type >::compute_proj_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
staticinherited

Computes the constraint matrix contributions (for non-conforming adapted meshes) corresponding to variable number var_number, using generic projections.

Definition at line 153 of file fe_base.C.

1538{
1539 libmesh_assert(elem);
1540
1541 const unsigned int Dim = elem->dim();
1542
1543 // Only constrain elements in 2,3D.
1544 if (Dim == 1)
1545 return;
1546
1547 // Only constrain active elements with this method
1548 if (!elem->active())
1549 return;
1550
1551 const Variable & var = dof_map.variable(variable_number);
1552 const FEType & base_fe_type = var.type();
1553 const bool add_p_level = base_fe_type.p_refinement;
1554
1555 // Construct FE objects for this element and its neighbors.
1556 std::unique_ptr<FEGenericBase<OutputShape>> my_fe
1557 (FEGenericBase<OutputShape>::build(Dim, base_fe_type));
1558 my_fe->add_p_level_in_reinit(add_p_level);
1559 const FEContinuity cont = my_fe->get_continuity();
1560
1561 // We don't need to constrain discontinuous elements
1562 if (cont == DISCONTINUOUS)
1563 return;
1564 libmesh_assert (cont == C_ZERO || cont == C_ONE ||
1565 cont == SIDE_DISCONTINUOUS);
1566
1567 // this would require some generalisation:
1568 // - e.g. the 'my_fe'-object needs generalisation
1569 // - due to lack of one-to-one correspondence of DOFs and nodes,
1570 // this doesn't work easily.
1571 if (elem->infinite())
1572 libmesh_not_implemented();
1573
1574 std::unique_ptr<FEGenericBase<OutputShape>> neigh_fe
1575 (FEGenericBase<OutputShape>::build(Dim, base_fe_type));
1576 neigh_fe->add_p_level_in_reinit(add_p_level);
1577
1578 QGauss my_qface(Dim-1, base_fe_type.default_quadrature_order());
1579 my_fe->attach_quadrature_rule (&my_qface);
1580 std::vector<Point> neigh_qface;
1581
1582 const std::vector<Real> & JxW = my_fe->get_JxW();
1583 const std::vector<Point> & q_point = my_fe->get_xyz();
1584 const std::vector<std::vector<OutputShape>> & phi = my_fe->get_phi();
1585 const std::vector<std::vector<OutputShape>> & neigh_phi =
1586 neigh_fe->get_phi();
1587 const std::vector<Point> * face_normals = nullptr;
1588 const std::vector<std::vector<OutputGradient>> * dphi = nullptr;
1589 const std::vector<std::vector<OutputGradient>> * neigh_dphi = nullptr;
1590
1591 std::vector<dof_id_type> my_dof_indices, neigh_dof_indices;
1592 std::vector<unsigned int> my_side_dofs, neigh_side_dofs;
1593
1594 if (cont == C_ONE)
1595 {
1596 const std::vector<Point> & ref_face_normals =
1597 my_fe->get_normals();
1598 face_normals = &ref_face_normals;
1599 const std::vector<std::vector<OutputGradient>> & ref_dphi =
1600 my_fe->get_dphi();
1601 dphi = &ref_dphi;
1602 const std::vector<std::vector<OutputGradient>> & ref_neigh_dphi =
1603 neigh_fe->get_dphi();
1604 neigh_dphi = &ref_neigh_dphi;
1605 }
1606
1609 std::vector<DenseVector<Real>> Ue;
1610
1611 // Look at the element faces. Check to see if we need to
1612 // build constraints.
1613 for (auto s : elem->side_index_range())
1614 {
1615 // Get pointers to the element's neighbor.
1616 const Elem * neigh = elem->neighbor_ptr(s);
1617
1618 if (!neigh)
1619 continue;
1620
1621 if (!var.active_on_subdomain(neigh->subdomain_id()))
1622 continue;
1623
1624 // h refinement constraints:
1625 // constrain dofs shared between
1626 // this element and ones coarser
1627 // than this element.
1628 if (neigh->level() < elem->level())
1629 {
1630 unsigned int s_neigh = neigh->which_neighbor_am_i(elem);
1631 libmesh_assert_less (s_neigh, neigh->n_neighbors());
1632
1633 // Find the minimum p level; we build the h constraint
1634 // matrix with this and then constrain away all higher p
1635 // DoFs.
1636 libmesh_assert(neigh->active());
1637 const unsigned int min_p_level = add_p_level *
1638 std::min(elem->p_level(), neigh->p_level());
1639 // we may need to make the FE objects reinit with the
1640 // minimum shared p_level
1641 const unsigned int old_elem_level = add_p_level * elem->p_level();
1642 if (old_elem_level != min_p_level)
1643 my_fe->set_fe_order(my_fe->get_fe_type().order.get_order() + min_p_level - old_elem_level);
1644 const unsigned int old_neigh_level = add_p_level * neigh->p_level();
1645 if (old_neigh_level != min_p_level)
1646 neigh_fe->set_fe_order(neigh_fe->get_fe_type().order.get_order() + min_p_level - old_neigh_level);
1647
1648 my_fe->reinit(elem, s);
1649
1650 // This function gets called element-by-element, so there
1651 // will be a lot of memory allocation going on. We can
1652 // at least minimize this for the case of the dof indices
1653 // by efficiently preallocating the requisite storage.
1654 // n_nodes is not necessarily n_dofs, but it is better
1655 // than nothing!
1656 my_dof_indices.reserve (elem->n_nodes());
1657 neigh_dof_indices.reserve (neigh->n_nodes());
1658
1659 dof_map.dof_indices (elem, my_dof_indices,
1660 variable_number,
1661 min_p_level);
1662 dof_map.dof_indices (neigh, neigh_dof_indices,
1663 variable_number,
1664 min_p_level);
1665
1666 const unsigned int n_qp = my_qface.n_points();
1667
1668 FEMap::inverse_map (Dim, neigh, q_point, neigh_qface);
1669
1670 neigh_fe->reinit(neigh, &neigh_qface);
1671
1672 // We're only concerned with DOFs whose values (and/or first
1673 // derivatives for C1 elements) are supported on side nodes
1674 FEType elem_fe_type = base_fe_type;
1675 if (old_elem_level != min_p_level)
1676 elem_fe_type.order = base_fe_type.order.get_order() + min_p_level - old_elem_level;
1677 FEType neigh_fe_type = base_fe_type;
1678 if (old_neigh_level != min_p_level)
1679 neigh_fe_type.order = base_fe_type.order.get_order() + min_p_level - old_neigh_level;
1680 FEInterface::dofs_on_side(elem, Dim, elem_fe_type, s, my_side_dofs);
1681 FEInterface::dofs_on_side(neigh, Dim, neigh_fe_type, s_neigh, neigh_side_dofs);
1682
1683 const unsigned int n_side_dofs =
1684 cast_int<unsigned int>(my_side_dofs.size());
1685 libmesh_assert_equal_to (n_side_dofs, neigh_side_dofs.size());
1686
1687#ifndef NDEBUG
1688 for (auto i : my_side_dofs)
1689 libmesh_assert_less(i, my_dof_indices.size());
1690 for (auto i : neigh_side_dofs)
1691 libmesh_assert_less(i, neigh_dof_indices.size());
1692#endif
1693
1694 Ke.resize (n_side_dofs, n_side_dofs);
1695 Ue.resize(n_side_dofs);
1696
1697 // Form the projection matrix, (inner product of fine basis
1698 // functions against fine test functions)
1699 for (unsigned int is = 0; is != n_side_dofs; ++is)
1700 {
1701 const unsigned int i = my_side_dofs[is];
1702 for (unsigned int js = 0; js != n_side_dofs; ++js)
1703 {
1704 const unsigned int j = my_side_dofs[js];
1705 for (unsigned int qp = 0; qp != n_qp; ++qp)
1706 {
1707 Ke(is,js) += JxW[qp] * TensorTools::inner_product(phi[i][qp], phi[j][qp]);
1708 if (cont == C_ONE)
1709 Ke(is,js) += JxW[qp] *
1711 (*face_normals)[qp],
1712 (*dphi)[j][qp] *
1713 (*face_normals)[qp]);
1714 }
1715 }
1716 }
1717
1718 // Form the right hand sides, (inner product of coarse basis
1719 // functions against fine test functions)
1720 for (unsigned int is = 0; is != n_side_dofs; ++is)
1721 {
1722 const unsigned int i = neigh_side_dofs[is];
1723 Fe.resize (n_side_dofs);
1724 for (unsigned int js = 0; js != n_side_dofs; ++js)
1725 {
1726 const unsigned int j = my_side_dofs[js];
1727 for (unsigned int qp = 0; qp != n_qp; ++qp)
1728 {
1729 Fe(js) += JxW[qp] *
1730 TensorTools::inner_product(neigh_phi[i][qp],
1731 phi[j][qp]);
1732 if (cont == C_ONE)
1733 Fe(js) += JxW[qp] *
1734 TensorTools::inner_product((*neigh_dphi)[i][qp] *
1735 (*face_normals)[qp],
1736 (*dphi)[j][qp] *
1737 (*face_normals)[qp]);
1738 }
1739 }
1740 Ke.cholesky_solve(Fe, Ue[is]);
1741 }
1742
1743 for (unsigned int js = 0; js != n_side_dofs; ++js)
1744 {
1745 const unsigned int j = my_side_dofs[js];
1746 const dof_id_type my_dof_g = my_dof_indices[j];
1747 libmesh_assert_not_equal_to (my_dof_g, DofObject::invalid_id);
1748
1749 // Hunt for "constraining against myself" cases before
1750 // we bother creating a constraint row
1751 bool self_constraint = false;
1752 for (unsigned int is = 0; is != n_side_dofs; ++is)
1753 {
1754 const unsigned int i = neigh_side_dofs[is];
1755 const dof_id_type their_dof_g = neigh_dof_indices[i];
1756 libmesh_assert_not_equal_to (their_dof_g, DofObject::invalid_id);
1757
1758 if (their_dof_g == my_dof_g)
1759 {
1760#ifndef NDEBUG
1761 const Real their_dof_value = Ue[is](js);
1762 libmesh_assert_less (std::abs(their_dof_value-1.),
1763 10*TOLERANCE);
1764
1765 for (unsigned int k = 0; k != n_side_dofs; ++k)
1766 libmesh_assert(k == is ||
1767 std::abs(Ue[k](js)) <
1768 10*TOLERANCE);
1769#endif
1770
1771 self_constraint = true;
1772 break;
1773 }
1774 }
1775
1776 if (self_constraint)
1777 continue;
1778
1779 DofConstraintRow * constraint_row;
1780
1781 // we may be running constraint methods concurrently
1782 // on multiple threads, so we need a lock to
1783 // ensure that this constraint is "ours"
1784 {
1785 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1786
1787 if (dof_map.is_constrained_dof(my_dof_g))
1788 continue;
1789
1790 constraint_row = &(constraints[my_dof_g]);
1791 libmesh_assert(constraint_row->empty());
1792 }
1793
1794 for (unsigned int is = 0; is != n_side_dofs; ++is)
1795 {
1796 const unsigned int i = neigh_side_dofs[is];
1797 const dof_id_type their_dof_g = neigh_dof_indices[i];
1798 libmesh_assert_not_equal_to (their_dof_g, DofObject::invalid_id);
1799 libmesh_assert_not_equal_to (their_dof_g, my_dof_g);
1800
1801 const Real their_dof_value = Ue[is](js);
1802
1803 if (std::abs(their_dof_value) < 10*TOLERANCE)
1804 continue;
1805
1806 constraint_row->emplace(their_dof_g, their_dof_value);
1807 }
1808 }
1809
1810 my_fe->set_fe_order(my_fe->get_fe_type().order.get_order() + old_elem_level - min_p_level);
1811 neigh_fe->set_fe_order(neigh_fe->get_fe_type().order.get_order() + old_neigh_level - min_p_level);
1812 }
1813
1814 if (add_p_level)
1815 {
1816 // p refinement constraints:
1817 // constrain dofs shared between
1818 // active elements and neighbors with
1819 // lower polynomial degrees
1820 const unsigned int min_p_level =
1821 neigh->min_p_level_by_neighbor(elem, elem->p_level());
1822 if (min_p_level < elem->p_level())
1823 {
1824 // Adaptive p refinement of non-hierarchic bases will
1825 // require more coding
1826 libmesh_assert(my_fe->is_hierarchic());
1827 dof_map.constrain_p_dofs(variable_number, elem,
1828 s, min_p_level);
1829 }
1830 }
1831 }
1832}
const Variable & variable(const unsigned int c) const override
Definition dof_map.h:2358
virtual unsigned int n_nodes() const =0
unsigned int which_neighbor_am_i(const Elem *e) const
This function tells you which neighbor e is.
Definition elem.h:2936
unsigned int n_neighbors() const
Definition elem.h:713
subdomain_id_type subdomain_id() const
Definition elem.h:2591
bool p_refinement
Whether or not the finite elements for this type increase their p refinement level on geometric eleme...
Definition fe_type.h:292
int get_order() const
Explicitly request the order as an int.
Definition fe_type.h:80
This class defines the notion of a variable in the system.
Definition variable.h:51
bool active_on_subdomain(subdomain_id_type sid) const
Definition variable.h:167
const FEType & type() const
Definition variable.h:144
@ SIDE_DISCONTINUOUS

◆ compute_shape_functions()

void libMesh::FEGenericBase< FEOutputType< T >::type >::compute_shape_functions ( const Elem elem,
const std::vector< Point > &  qp 
)
overrideprotectedvirtualinherited

After having updated the jacobian and the transformation from local to global coordinates in FEMap::compute_map(), the first derivatives of the shape functions are transformed to global coordinates, giving dphi, dphidx, dphidy, and dphidz.

This method should rarely be re-defined in derived classes, but still should be usable for children. Therefore, keep it protected.

Implements libMesh::FEAbstract.

Reimplemented in libMesh::FEXYZ< Dim >.

Definition at line 589 of file fe_base.C.

764{
765 //-------------------------------------------------------------------------
766 // Compute the shape function values (and derivatives)
767 // at the Quadrature points. Note that the actual values
768 // have already been computed via init_shape_functions
769
770 // Start logging the shape function computation
771 LOG_SCOPE("compute_shape_functions()", "FE");
772
774
775 if (calculate_phi)
776 this->_fe_trans->map_phi(this->dim, elem, qp, (*this), this->phi, this->_add_p_level_in_reinit);
777
778 if (calculate_dphi)
779 this->_fe_trans->map_dphi(this->dim, elem, qp, (*this), this->dphi,
780 this->dphidx, this->dphidy, this->dphidz);
781
782#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
783 if (calculate_d2phi)
784 this->_fe_trans->map_d2phi(this->dim, qp, (*this), this->d2phi,
785 this->d2phidx2, this->d2phidxdy, this->d2phidxdz,
786 this->d2phidy2, this->d2phidydz, this->d2phidz2);
787#endif //LIBMESH_ENABLE_SECOND_DERIVATIVES
788
789 // Only compute curl for vector-valued elements
791 this->_fe_trans->map_curl(this->dim, elem, qp, (*this), this->curl_phi);
792
793 // Only compute div for vector-valued elements
795 this->_fe_trans->map_div(this->dim, elem, qp, (*this), this->div_phi);
796}
virtual_for_inffe void determine_calculations()
Determine which values are to be calculated, for both the FE itself and for the FEMap.
Definition fe_base.C:913
std::vector< std::vector< OutputShape > > d2phidxdz
Shape function second derivatives in the x-z direction.
Definition fe_base.h:720
std::vector< std::vector< OutputShape > > d2phidx2
Shape function second derivatives in the x direction.
Definition fe_base.h:710
std::vector< std::vector< OutputShape > > d2phidz2
Shape function second derivatives in the z direction.
Definition fe_base.h:735
std::vector< std::vector< OutputShape > > dphidx
Shape function derivatives in the x direction.
Definition fe_base.h:656
std::vector< std::vector< OutputShape > > d2phidy2
Shape function second derivatives in the y direction.
Definition fe_base.h:725
std::vector< std::vector< OutputShape > > dphidy
Shape function derivatives in the y direction.
Definition fe_base.h:661
std::vector< std::vector< OutputShape > > d2phidydz
Shape function second derivatives in the y-z direction.
Definition fe_base.h:730
std::vector< std::vector< OutputDivergence > > div_phi
Shape function divergence values.
Definition fe_base.h:636
std::vector< std::vector< OutputShape > > dphidz
Shape function derivatives in the z direction.
Definition fe_base.h:666
std::unique_ptr< FETransformationBase< FEOutputType< T >::type > > _fe_trans
Object that handles computing shape function values, gradients, etc in the physical domain.
Definition fe_base.h:609
std::vector< std::vector< OutputShape > > d2phidxdy
Shape function second derivatives in the x-y direction.
Definition fe_base.h:715
std::vector< std::vector< OutputShape > > curl_phi
Shape function curl values.
Definition fe_base.h:631

◆ default_all_shape_derivs()

void libMesh::FE< Dim, T >::default_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 
)
staticprotectedinherited

A default implementation for all_shape_derivs.

Definition at line 712 of file fe.C.

741{
742 for (unsigned int d=0; d != Dim; ++d)
743 {
744 auto & comps_d = *comps[d];
745 for (auto i : index_range(comps_d))
746 FE<Dim,T>::shape_derivs
747 (elem,o,i,d,p,comps_d[i],add_p_level);
748 }
749}
FE(const FEType &fet)
Constructor.
Definition fe.C:62
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.

◆ default_all_shapes()

static void libMesh::FE< Dim, T >::default_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 
)
inlinestaticprotectedinherited

A default implementation for all_shapes.

Definition at line 753 of file fe.h.

758 {
759 for (auto i : index_range(v))
760 {
761 libmesh_assert_equal_to ( p.size(), v[i].size() );
762 FE<Dim,T>::shapes (elem, o, i, p, v[i], add_p_level);
763 }
764 }

◆ default_shape_derivs()

static void libMesh::FE< Dim, T >::default_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 
)
inlinestaticprotectedinherited

A default implementation for shape_derivs.

Definition at line 769 of file fe.h.

776 {
777 libmesh_assert_equal_to(p.size(), v.size());
778 for (auto vi : index_range(v))
779 v[vi] = FE<Dim,T>::shape_deriv (elem, o, i, j, p[vi], add_p_level);
780 }
static OutputShape shape_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)

◆ default_shapes()

static void libMesh::FE< Dim, T >::default_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 
)
inlinestaticprotectedinherited

A default implementation for shapes.

Definition at line 738 of file fe.h.

744 {
745 libmesh_assert_equal_to(p.size(), v.size());
746 for (auto vi : index_range(v))
747 v[vi] = FE<Dim,T>::shape (elem, o, i, p[vi], add_p_level);
748 }
static OutputShape shape(const ElemType t, const Order o, const unsigned int i, const Point &p)

◆ default_side_nodal_soln()

void libMesh::FE< Dim, T >::default_side_nodal_soln ( const Elem elem,
const Order  o,
const unsigned int  side,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln_on_side,
bool  add_p_level = true,
const unsigned  vdim = 1 
)
staticprotectedinherited

A default implementation for side_nodal_soln.

Definition at line 785 of file fe.C.

760{
761 std::vector<Number> full_nodal_soln;
762 nodal_soln(elem, o, elem_soln, full_nodal_soln, add_p_level, vdim);
763 const std::vector<unsigned int> side_nodes =
764 elem->nodes_on_side(side);
765
766 std::size_t n_side_nodes = side_nodes.size();
767 nodal_soln_on_side.resize(n_side_nodes);
768 for (auto n : make_range(n_side_nodes))
769 nodal_soln_on_side[n] = full_nodal_soln[side_nodes[n]];
770}
static void nodal_soln(const Elem *elem, const Order o, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln, bool add_p_level=true, const unsigned vdim=1)
Build the nodal soln from the element soln.

◆ determine_calculations()

void libMesh::FEGenericBase< FEOutputType< T >::type >::determine_calculations ( )
protectedinherited

Determine which values are to be calculated, for both the FE itself and for the FEMap.

Definition at line 562 of file fe_base.C.

914{
915 this->calculations_started = true;
916
917 // If the user did not explicitly pre-request something (or nothing)
918 // to be computed, then we throw an error here.
919 bool requested_ok =
920 this->calculate_nothing || this->calculate_phi || this->calculate_dphi ||
922 this->calculate_map;
923
924#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
925 requested_ok = requested_ok || this->calculate_d2phi;
926#endif
927
928 libmesh_error_msg_if(
929 !requested_ok,
930 "You must call one or more of the FE accessors "
931 "(e.g. get_phi(), get_dphi(), get_nothing()) "
932 "_before_ calling reinit()!");
933
934 // Request whichever terms are necessary from the FEMap
935 if (this->calculate_phi)
936 this->_fe_trans->init_map_phi(*this);
937
938 if (this->calculate_dphiref)
939 this->_fe_trans->init_map_dphi(*this);
940
941#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
942 if (this->calculate_d2phi)
943 this->_fe_trans->init_map_d2phi(*this);
944#endif //LIBMESH_ENABLE_SECOND_DERIVATIVES
945}
bool calculations_started
Have calculations with this object already been started? Then all get_* functions should already have...
bool calculate_dphiref
Should we calculate reference shape function gradients?

◆ disable_print_counter_info()

void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

Definition at line 100 of file reference_counter.C.

101{
102 _enable_print_counter = false;
103 return;
104}
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called.

References libMesh::ReferenceCounter::_enable_print_counter.

◆ dofs_on_edge() [1/2]

void libMesh::FE< Dim, T >::dofs_on_edge ( const Elem *const  elem,
const Order  o,
unsigned int  e,
std::vector< unsigned int > &  di,
bool  add_p_level = true 
)
staticinherited

Fills the vector di with the local degree of freedom indices associated with edge e of element elem.

On a p-refined element, o should be the base order of the element.

Definition at line 528 of file fe.C.

131{
132 libmesh_assert(elem);
133 libmesh_assert_less (e, elem->n_edges());
134
135 di.clear();
136 unsigned int nodenum = 0;
137 const unsigned int n_nodes = elem->n_nodes();
138 for (unsigned int n = 0; n != n_nodes; ++n)
139 {
140 const unsigned int n_dofs =
141 n_dofs_at_node(*elem, static_cast<Order>(o + add_p_level*elem->p_level()), n);
142 if (elem->is_node_on_edge(n, e))
143 for (unsigned int i = 0; i != n_dofs; ++i)
144 di.push_back(nodenum++);
145 else
146 nodenum += n_dofs;
147 }
148}
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)

◆ dofs_on_edge() [2/2]

void libMesh::FE< 2, SUBDIVISION >::dofs_on_edge ( const Elem * const  ,
const Order  ,
unsigned int  ,
std::vector< unsigned int > &  di,
bool   
)
inherited

Definition at line 971 of file fe_subdivision_2D.C.

971{ di.resize(0); }

◆ dofs_on_side() [1/2]

void libMesh::FE< Dim, T >::dofs_on_side ( const Elem *const  elem,
const Order  o,
unsigned int  s,
std::vector< unsigned int > &  di,
bool  add_p_level = true 
)
staticinherited

Fills the vector di with the local degree of freedom indices associated with side s of element elem.

On a p-refined element, o should be the base order of the element.

Definition at line 517 of file fe.C.

104{
105 libmesh_assert(elem);
106 libmesh_assert_less (s, elem->n_sides());
107
108 di.clear();
109 unsigned int nodenum = 0;
110 const unsigned int n_nodes = elem->n_nodes();
111 for (unsigned int n = 0; n != n_nodes; ++n)
112 {
113 const unsigned int n_dofs =
114 n_dofs_at_node(*elem, static_cast<Order>(o + add_p_level*elem->p_level()), n);
115 if (elem->is_node_on_side(n, s))
116 for (unsigned int i = 0; i != n_dofs; ++i)
117 di.push_back(nodenum++);
118 else
119 nodenum += n_dofs;
120 }
121}

◆ dofs_on_side() [2/2]

void libMesh::FE< 2, SUBDIVISION >::dofs_on_side ( const Elem * const  ,
const Order  ,
unsigned int  ,
std::vector< unsigned int > &  di,
bool   
)
inherited

Definition at line 970 of file fe_subdivision_2D.C.

970{ di.resize(0); }

◆ edge_map()

void libMesh::FE< Dim, T >::edge_map ( const Elem elem,
const Elem edge,
const unsigned int  e,
const std::vector< Point > &  reference_edge_points,
std::vector< Point > &  reference_points 
)
virtualinherited

Computes the reference space quadrature points on the side of an element based on the edge quadrature points.

Definition at line 626 of file fe_boundary.C.

408{
409 // We're calculating mappings - we need at least first order info
410 this->calculate_phi = true;
412
413 unsigned int edge_p_level = elem->p_level();
414
415 if (edge->type() != last_edge ||
416 (elem->runtime_topology() &&
417 this->_elem != elem) ||
418 edge_p_level != this->_elem_p_level ||
419 !this->shapes_on_quadrature)
420 {
421 // Set the element type
422 this->_elem = elem;
423 this->_elem_type = elem->type();
424 this->_elem_p_level = edge_p_level;
425 this->_p_level = this->_add_p_level_in_reinit * edge_p_level;
426
427 // Set the last_edge
428 last_edge = edge->type();
429
430 // Initialize the edge shape functions
431 this->_fe_map->template init_edge_shape_functions<Dim>(reference_edge_points, edge);
432 }
433 else
434 this->_elem = elem;
435
436 const unsigned int n_points =
437 cast_int<unsigned int>(reference_edge_points.size());
438 reference_points.resize(n_points);
439 for (unsigned int i = 0; i < n_points; i++)
440 reference_points[i].zero();
441
442 std::vector<Point> refspace_nodes;
443 this->get_refspace_nodes(elem->type(), refspace_nodes);
444
445 const std::vector<std::vector<Real>> & psi_map = this->_fe_map->get_psi();
446
447 // sum over the nodes
448 for (auto i : index_range(psi_map))
449 {
450 const Point & edge_node = refspace_nodes[elem->local_edge_node(e,i)];
451 for (unsigned int p=0; p<n_points; p++)
452 reference_points[p].add_scaled (edge_node, psi_map[i][p]);
453 }
454}
std::unique_ptr< FEMap > _fe_map
unsigned int _p_level
The p refinement level the current data structures are set up for.
unsigned int _elem_p_level
The element p-refinement level the current data structures are set up for.
static void get_refspace_nodes(const ElemType t, std::vector< Point > &nodes)

◆ edge_reinit() [1/2]

void libMesh::FE< Dim, T >::edge_reinit ( const Elem elem,
const unsigned int  edge,
const Real  tolerance = TOLERANCE,
const std::vector< Point > *const  pts = nullptr,
const std::vector< Real > *const  weights = nullptr 
)
overridevirtualinherited

Reinitializes all the physical element-dependent data based on the edge.

The tolerance parameter is passed to the involved call to inverse_map(). By default the shape functions and associated data are computed at the quadrature points specified by the quadrature rule qrule, but may be any points specified on the reference side element specified in the optional argument pts.

Implements libMesh::FEAbstract.

Definition at line 606 of file fe_boundary.C.

248{
249 libmesh_assert(elem);
250 libmesh_assert (this->qrule != nullptr || pts != nullptr);
251 // We don't do this for 1D elements!
252 libmesh_assert_not_equal_to (Dim, 1);
253
254 // We're (possibly re-) calculating now! Time to determine what.
255 // FIXME - we currently just assume that we're using JxW and calling
256 // edge_map later.
257 this->_fe_map->add_calculations();
258 this->_fe_map->get_JxW();
259 this->_fe_map->get_xyz();
261
262 // Build the side of interest
263 const std::unique_ptr<const Elem> edge(elem->build_edge_ptr(e));
264
265 // Initialize the shape functions at the user-specified
266 // points
267 if (pts != nullptr)
268 {
269 // The shape functions do not correspond to the qrule
270 this->shapes_on_quadrature = false;
271
272 // Initialize the edge shape functions
273 this->_fe_map->template init_edge_shape_functions<Dim> (*pts, edge.get());
274
275 // Compute the Jacobian*Weight on the face for integration
276 if (weights != nullptr)
277 {
278 this->_fe_map->compute_edge_map (Dim, *weights, edge.get());
279 }
280 else
281 {
282 std::vector<Real> dummy_weights (pts->size(), 1.);
283 this->_fe_map->compute_edge_map (Dim, dummy_weights, edge.get());
284 }
285 }
286 // If there are no user specified points, we use the
287 // quadrature rule
288 else
289 {
290 // initialize quadrature rule
291 this->qrule->init(*edge, elem->p_level());
292
293 if (this->qrule->shapes_need_reinit())
294 this->shapes_on_quadrature = false;
295
296 // We might not need to reinitialize the shape functions
297 if ((this->get_type() != elem->type()) ||
298 (elem->runtime_topology() &&
299 this->_elem != elem) ||
300 (edge->type() != last_edge) ||
301 this->shapes_need_reinit() ||
302 !this->shapes_on_quadrature)
303 {
304 // Set the element
305 this->_elem = elem;
306 this->_elem_type = elem->type();
307
308 // Set the last_edge
309 last_edge = edge->type();
310
311 // Initialize the edge shape functions
312 this->_fe_map->template init_edge_shape_functions<Dim> (this->qrule->get_points(), edge.get());
313 }
314 else
315 this->_elem = elem;
316
317 // Compute the Jacobian*Weight on the face for integration
318 this->_fe_map->compute_edge_map (Dim, this->qrule->get_weights(), edge.get());
319
320 // The shape functions correspond to the qrule
321 this->shapes_on_quadrature = true;
322 }
323
324 // make a copy of the Jacobian for integration
325 const std::vector<Real> JxW_int(this->_fe_map->get_JxW());
326
327 // Find where the integration points are located on the
328 // full element.
329 const std::vector<Point> * ref_qp;
330 if (pts != nullptr)
331 ref_qp = pts;
332 else
333 ref_qp = & this->qrule->get_points();
334
335 std::vector<Point> qp;
336 this->edge_map(elem, edge.get(), e, *ref_qp, qp);
337
338 // compute the shape function and derivative values
339 // at the points qp
340 this->reinit (elem, &qp);
341
342 // copy back old data
343 this->_fe_map->get_JxW() = JxW_int;
344}
bool shapes_on_quadrature
A flag indicating if current data structures correspond to quadrature rule points.
ElemType get_type() const
virtual void reinit(const Elem *elem, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr) override
This is at the core of this class.
Definition fe.C:197
virtual void edge_map(const Elem *elem, const Elem *edge, const unsigned int e, const std::vector< Point > &reference_edge_points, std::vector< Point > &reference_points)
Computes the reference space quadrature points on the side of an element based on the edge quadrature...
const std::vector< Point > & get_points() const
Definition quadrature.h:156
virtual bool shapes_need_reinit()
Definition quadrature.h:286
const std::vector< Real > & get_weights() const
Definition quadrature.h:168
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

◆ edge_reinit() [2/2]

void libMesh::FE< 2, SUBDIVISION >::edge_reinit ( Elem const *  ,
unsigned int  ,
Real  ,
const std::vector< Point > * const  ,
const std::vector< Real > * const   
)
virtualinherited

Reinitializes all the physical element-dependent data based on the edge of the element elem.

The tolerance parameter is passed to the involved call to inverse_map(). By default the element data are computed at the quadrature points specified by the quadrature rule qrule, but any set of points on the reference edge element may be specified in the optional argument pts.

Implements libMesh::FEAbstract.

Definition at line 927 of file fe_subdivision_2D.C.

932{
933 libmesh_not_implemented();
934}

◆ enable_print_counter_info()

void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

Methods to enable/disable the reference counter output from print_info().

Enabled by default.

Definition at line 94 of file reference_counter.C.

95{
97 return;
98}

References libMesh::ReferenceCounter::_enable_print_counter.

Referenced by libMesh::LibMeshInit::~LibMeshInit().

◆ get_continuity() [1/82]

FEContinuity libMesh::FE< 1, BERNSTEIN >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 423 of file fe_bernstein.C.

423{ return C_ZERO; }

◆ get_continuity() [2/82]

FEContinuity libMesh::FE< 2, BERNSTEIN >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 424 of file fe_bernstein.C.

424{ return C_ZERO; }

◆ get_continuity() [3/82]

FEContinuity libMesh::FE< 3, BERNSTEIN >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 425 of file fe_bernstein.C.

425{ return C_ZERO; }

◆ get_continuity() [4/82]

FEContinuity libMesh::FE< 1, CLOUGH >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 271 of file fe_clough.C.

271{ return C_ONE; }

◆ get_continuity() [5/82]

FEContinuity libMesh::FE< 2, CLOUGH >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 272 of file fe_clough.C.

272{ return C_ONE; }

◆ get_continuity() [6/82]

FEContinuity libMesh::FE< 3, CLOUGH >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 273 of file fe_clough.C.

273{ return C_ONE; }

◆ get_continuity() [7/82]

FEContinuity libMesh::FE< 1, HERMITE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 313 of file fe_hermite.C.

313{ return C_ONE; }

◆ get_continuity() [8/82]

FEContinuity libMesh::FE< 2, HERMITE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 314 of file fe_hermite.C.

314{ return C_ONE; }

◆ get_continuity() [9/82]

FEContinuity libMesh::FE< 3, HERMITE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 315 of file fe_hermite.C.

315{ return C_ONE; }

◆ get_continuity() [10/82]

FEContinuity libMesh::FE< 1, HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 477 of file fe_hierarchic.C.

477{ return C_ZERO; }

◆ get_continuity() [11/82]

FEContinuity libMesh::FE< 2, HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 478 of file fe_hierarchic.C.

478{ return C_ZERO; }

◆ get_continuity() [12/82]

FEContinuity libMesh::FE< 3, HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 479 of file fe_hierarchic.C.

479{ return C_ZERO; }

◆ get_continuity() [13/82]

FEContinuity libMesh::FE< 0, HIERARCHIC_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 773 of file fe_hierarchic_vec.C.

773{ return C_ZERO; }

◆ get_continuity() [14/82]

FEContinuity libMesh::FE< 1, HIERARCHIC_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 774 of file fe_hierarchic_vec.C.

774{ return C_ZERO; }

◆ get_continuity() [15/82]

FEContinuity libMesh::FE< 2, HIERARCHIC_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 775 of file fe_hierarchic_vec.C.

775{ return C_ZERO; }

◆ get_continuity() [16/82]

FEContinuity libMesh::FE< 3, HIERARCHIC_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 776 of file fe_hierarchic_vec.C.

776{ return C_ZERO; }

◆ get_continuity() [17/82]

FEContinuity libMesh::FE< 0, L2_HIERARCHIC_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 779 of file fe_hierarchic_vec.C.

779{ return DISCONTINUOUS; }

◆ get_continuity() [18/82]

FEContinuity libMesh::FE< 1, L2_HIERARCHIC_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 780 of file fe_hierarchic_vec.C.

780{ return DISCONTINUOUS; }

◆ get_continuity() [19/82]

FEContinuity libMesh::FE< 2, L2_HIERARCHIC_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 781 of file fe_hierarchic_vec.C.

781{ return DISCONTINUOUS; }

◆ get_continuity() [20/82]

FEContinuity libMesh::FE< 3, L2_HIERARCHIC_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 782 of file fe_hierarchic_vec.C.

782{ return DISCONTINUOUS; }

◆ get_continuity() [21/82]

FEContinuity libMesh::FE< 0, L2_HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 188 of file fe_l2_hierarchic.C.

188{ return DISCONTINUOUS; }

◆ get_continuity() [22/82]

FEContinuity libMesh::FE< 1, L2_HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 189 of file fe_l2_hierarchic.C.

189{ return DISCONTINUOUS; }

◆ get_continuity() [23/82]

FEContinuity libMesh::FE< 2, L2_HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 190 of file fe_l2_hierarchic.C.

190{ return DISCONTINUOUS; }

◆ get_continuity() [24/82]

FEContinuity libMesh::FE< 3, L2_HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 191 of file fe_l2_hierarchic.C.

191{ return DISCONTINUOUS; }

◆ get_continuity() [25/82]

FEContinuity libMesh::FE< 0, L2_LAGRANGE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 256 of file fe_l2_lagrange.C.

256{ return DISCONTINUOUS; }

◆ get_continuity() [26/82]

FEContinuity libMesh::FE< 1, L2_LAGRANGE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 257 of file fe_l2_lagrange.C.

257{ return DISCONTINUOUS; }

◆ get_continuity() [27/82]

FEContinuity libMesh::FE< 2, L2_LAGRANGE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 258 of file fe_l2_lagrange.C.

258{ return DISCONTINUOUS; }

◆ get_continuity() [28/82]

FEContinuity libMesh::FE< 3, L2_LAGRANGE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 259 of file fe_l2_lagrange.C.

259{ return DISCONTINUOUS; }

◆ get_continuity() [29/82]

FEContinuity libMesh::FE< 0, LAGRANGE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1114 of file fe_lagrange.C.

1114{ return C_ZERO; }

◆ get_continuity() [30/82]

FEContinuity libMesh::FE< 1, LAGRANGE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1115 of file fe_lagrange.C.

1115{ return C_ZERO; }

◆ get_continuity() [31/82]

FEContinuity libMesh::FE< 2, LAGRANGE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1116 of file fe_lagrange.C.

1116{ return C_ZERO; }

◆ get_continuity() [32/82]

FEContinuity libMesh::FE< 3, LAGRANGE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1117 of file fe_lagrange.C.

1117{ return C_ZERO; }

◆ get_continuity() [33/82]

FEContinuity libMesh::FE< 0, LAGRANGE_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1342 of file fe_lagrange_vec.C.

1342{ return C_ZERO; }

◆ get_continuity() [34/82]

FEContinuity libMesh::FE< 1, LAGRANGE_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1343 of file fe_lagrange_vec.C.

1343{ return C_ZERO; }

◆ get_continuity() [35/82]

FEContinuity libMesh::FE< 2, LAGRANGE_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1344 of file fe_lagrange_vec.C.

1344{ return C_ZERO; }

◆ get_continuity() [36/82]

FEContinuity libMesh::FE< 3, LAGRANGE_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1345 of file fe_lagrange_vec.C.

1345{ return C_ZERO; }

◆ get_continuity() [37/82]

FEContinuity libMesh::FE< 0, L2_LAGRANGE_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1348 of file fe_lagrange_vec.C.

1348{ return DISCONTINUOUS; }

◆ get_continuity() [38/82]

FEContinuity libMesh::FE< 1, L2_LAGRANGE_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1349 of file fe_lagrange_vec.C.

1349{ return DISCONTINUOUS; }

◆ get_continuity() [39/82]

FEContinuity libMesh::FE< 2, L2_LAGRANGE_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1350 of file fe_lagrange_vec.C.

1350{ return DISCONTINUOUS; }

◆ get_continuity() [40/82]

FEContinuity libMesh::FE< 3, L2_LAGRANGE_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1351 of file fe_lagrange_vec.C.

1351{ return DISCONTINUOUS; }

◆ get_continuity() [41/82]

FEContinuity libMesh::FE< 0, MONOMIAL >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 421 of file fe_monomial.C.

421{ return DISCONTINUOUS; }

◆ get_continuity() [42/82]

FEContinuity libMesh::FE< 1, MONOMIAL >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 422 of file fe_monomial.C.

422{ return DISCONTINUOUS; }

◆ get_continuity() [43/82]

FEContinuity libMesh::FE< 2, MONOMIAL >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 423 of file fe_monomial.C.

423{ return DISCONTINUOUS; }

◆ get_continuity() [44/82]

FEContinuity libMesh::FE< 3, MONOMIAL >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 424 of file fe_monomial.C.

424{ return DISCONTINUOUS; }

◆ get_continuity() [45/82]

FEContinuity libMesh::FE< 0, MONOMIAL_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 697 of file fe_monomial_vec.C.

698{
699 return DISCONTINUOUS;
700}

◆ get_continuity() [46/82]

FEContinuity libMesh::FE< 1, MONOMIAL_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 703 of file fe_monomial_vec.C.

704{
705 return DISCONTINUOUS;
706}

◆ get_continuity() [47/82]

FEContinuity libMesh::FE< 2, MONOMIAL_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 709 of file fe_monomial_vec.C.

710{
711 return DISCONTINUOUS;
712}

◆ get_continuity() [48/82]

FEContinuity libMesh::FE< 3, MONOMIAL_VEC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 715 of file fe_monomial_vec.C.

716{
717 return DISCONTINUOUS;
718}

◆ get_continuity() [49/82]

FEContinuity libMesh::FE< 0, NEDELEC_ONE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 408 of file fe_nedelec_one.C.

408{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ get_continuity() [50/82]

FEContinuity libMesh::FE< 1, NEDELEC_ONE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 409 of file fe_nedelec_one.C.

409{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ get_continuity() [51/82]

FEContinuity libMesh::FE< 2, NEDELEC_ONE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 410 of file fe_nedelec_one.C.

410{ return H_CURL; }

◆ get_continuity() [52/82]

FEContinuity libMesh::FE< 3, NEDELEC_ONE >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 411 of file fe_nedelec_one.C.

411{ return H_CURL; }

◆ get_continuity() [53/82]

FEContinuity libMesh::FE< 0, RATIONAL_BERNSTEIN >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 160 of file fe_rational.C.

160{ return C_ZERO; }

◆ get_continuity() [54/82]

FEContinuity libMesh::FE< 1, RATIONAL_BERNSTEIN >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 161 of file fe_rational.C.

161{ return C_ZERO; }

◆ get_continuity() [55/82]

FEContinuity libMesh::FE< 2, RATIONAL_BERNSTEIN >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 162 of file fe_rational.C.

162{ return C_ZERO; }

◆ get_continuity() [56/82]

FEContinuity libMesh::FE< 3, RATIONAL_BERNSTEIN >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 163 of file fe_rational.C.

163{ return C_ZERO; }

◆ get_continuity() [57/82]

FEContinuity libMesh::FE< 0, RAVIART_THOMAS >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 456 of file fe_raviart.C.

456{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ get_continuity() [58/82]

FEContinuity libMesh::FE< 1, RAVIART_THOMAS >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 457 of file fe_raviart.C.

457{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ get_continuity() [59/82]

FEContinuity libMesh::FE< 2, RAVIART_THOMAS >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 458 of file fe_raviart.C.

458{ return H_DIV; }

◆ get_continuity() [60/82]

FEContinuity libMesh::FE< 3, RAVIART_THOMAS >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 459 of file fe_raviart.C.

459{ return H_DIV; }

◆ get_continuity() [61/82]

FEContinuity libMesh::FE< 0, L2_RAVIART_THOMAS >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 462 of file fe_raviart.C.

462{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ get_continuity() [62/82]

FEContinuity libMesh::FE< 1, L2_RAVIART_THOMAS >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 463 of file fe_raviart.C.

463{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ get_continuity() [63/82]

FEContinuity libMesh::FE< 2, L2_RAVIART_THOMAS >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 464 of file fe_raviart.C.

464{ return DISCONTINUOUS; }

◆ get_continuity() [64/82]

FEContinuity libMesh::FE< 3, L2_RAVIART_THOMAS >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 465 of file fe_raviart.C.

465{ return DISCONTINUOUS; }

◆ get_continuity() [65/82]

FEContinuity libMesh::FE< 0, SCALAR >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 95 of file fe_scalar.C.

95{ return DISCONTINUOUS; }

◆ get_continuity() [66/82]

FEContinuity libMesh::FE< 1, SCALAR >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 96 of file fe_scalar.C.

96{ return DISCONTINUOUS; }

◆ get_continuity() [67/82]

FEContinuity libMesh::FE< 2, SCALAR >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 97 of file fe_scalar.C.

97{ return DISCONTINUOUS; }

◆ get_continuity() [68/82]

FEContinuity libMesh::FE< 3, SCALAR >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 98 of file fe_scalar.C.

98{ return DISCONTINUOUS; }

◆ get_continuity() [69/82]

FEContinuity libMesh::FE< 0, SIDE_HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 327 of file fe_side_hierarchic.C.

327{ return SIDE_DISCONTINUOUS; }

◆ get_continuity() [70/82]

FEContinuity libMesh::FE< 1, SIDE_HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 328 of file fe_side_hierarchic.C.

328{ return SIDE_DISCONTINUOUS; }

◆ get_continuity() [71/82]

FEContinuity libMesh::FE< 2, SIDE_HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 329 of file fe_side_hierarchic.C.

329{ return SIDE_DISCONTINUOUS; }

◆ get_continuity() [72/82]

FEContinuity libMesh::FE< 3, SIDE_HIERARCHIC >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 330 of file fe_side_hierarchic.C.

330{ return SIDE_DISCONTINUOUS; }

◆ get_continuity() [73/82]

FEContinuity libMesh::FE< 2, SUBDIVISION >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 974 of file fe_subdivision_2D.C.

974{ return C_ONE; }

◆ get_continuity() [74/82]

FEContinuity libMesh::FE< 0, SZABAB >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1325 of file fe_szabab.C.

1325{ return C_ZERO; }

◆ get_continuity() [75/82]

FEContinuity libMesh::FE< 1, SZABAB >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1326 of file fe_szabab.C.

1326{ return C_ZERO; }

◆ get_continuity() [76/82]

FEContinuity libMesh::FE< 2, SZABAB >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1327 of file fe_szabab.C.

1327{ return C_ZERO; }

◆ get_continuity() [77/82]

FEContinuity libMesh::FE< 3, SZABAB >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1328 of file fe_szabab.C.

1328{ return C_ZERO; }

◆ get_continuity() [78/82]

FEContinuity libMesh::FE< 0, XYZ >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 406 of file fe_xyz.C.

406{ return DISCONTINUOUS; }

◆ get_continuity() [79/82]

FEContinuity libMesh::FE< 1, XYZ >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 407 of file fe_xyz.C.

407{ return DISCONTINUOUS; }

◆ get_continuity() [80/82]

FEContinuity libMesh::FE< 2, XYZ >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 408 of file fe_xyz.C.

408{ return DISCONTINUOUS; }

◆ get_continuity() [81/82]

FEContinuity libMesh::FE< 3, XYZ >::get_continuity ( ) const
virtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 409 of file fe_xyz.C.

409{ return DISCONTINUOUS; }

◆ get_continuity() [82/82]

virtual FEContinuity libMesh::FE< Dim, T >::get_continuity ( ) const
overridevirtualinherited
Returns
The continuity level of the finite element.

Implements libMesh::FEAbstract.

◆ get_curl_phi()

virtual_for_inffe const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_curl_phi ( ) const
inlineinherited
Returns
The curl of the shape function at the quadrature points.

Definition at line 252 of file fe_base.h.

253 { libmesh_assert(!calculations_started || calculate_curl_phi);

◆ get_curvatures()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_curvatures ( ) const
inlineinherited
Returns
The curvatures for use in face integration.

Definition at line 467 of file fe_abstract.h.

468 { calculate_map = true; return this->_fe_map->get_curvatures();}

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_d2phi()

const std::vector< std::vector< OutputTensor > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phi ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points.

Definition at line 319 of file fe_base.h.

320 { libmesh_assert(!calculations_started || calculate_d2phi);
321 calculate_d2phi = calculate_dphiref = true; return d2phi; }

◆ get_d2phideta2()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phideta2 ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points, in reference coordinates

Definition at line 403 of file fe_base.h.

404 { libmesh_assert(!calculations_started || calculate_d2phi);
std::vector< std::vector< OutputShape > > d2phideta2
Shape function second derivatives in the eta direction.
Definition fe_base.h:695

◆ get_d2phidetadzeta()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidetadzeta ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points, in reference coordinates

Definition at line 411 of file fe_base.h.

412 { libmesh_assert(!calculations_started || calculate_d2phi);
std::vector< std::vector< OutputShape > > d2phidetadzeta
Shape function second derivatives in the eta-zeta direction.
Definition fe_base.h:700

◆ get_d2phidx2()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidx2 ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points.

Definition at line 331 of file fe_base.h.

332 { libmesh_assert(!calculations_started || calculate_d2phi);
333 calculate_d2phi = calculate_dphiref = true; return d2phidx2; }

◆ get_d2phidxdy()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidxdy ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points.

Definition at line 339 of file fe_base.h.

340 { libmesh_assert(!calculations_started || calculate_d2phi);

◆ get_d2phidxdz()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidxdz ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points.

Definition at line 347 of file fe_base.h.

348 { libmesh_assert(!calculations_started || calculate_d2phi);

◆ get_d2phidxi2()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidxi2 ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points, in reference coordinates

Definition at line 379 of file fe_base.h.

380 { libmesh_assert(!calculations_started || calculate_d2phi);
std::vector< std::vector< OutputShape > > d2phidxi2
Shape function second derivatives in the xi direction.
Definition fe_base.h:680

◆ get_d2phidxideta()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidxideta ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points, in reference coordinates

Definition at line 387 of file fe_base.h.

388 { libmesh_assert(!calculations_started || calculate_d2phi);
std::vector< std::vector< OutputShape > > d2phidxideta
Shape function second derivatives in the xi-eta direction.
Definition fe_base.h:685

◆ get_d2phidxidzeta()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidxidzeta ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points, in reference coordinates

Definition at line 395 of file fe_base.h.

396 { libmesh_assert(!calculations_started || calculate_d2phi);
std::vector< std::vector< OutputShape > > d2phidxidzeta
Shape function second derivatives in the xi-zeta direction.
Definition fe_base.h:690

◆ get_d2phidy2()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidy2 ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points.

Definition at line 355 of file fe_base.h.

356 { libmesh_assert(!calculations_started || calculate_d2phi);
357 calculate_d2phi = calculate_dphiref = true; return d2phidy2; }

◆ get_d2phidydz()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidydz ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points.

Definition at line 363 of file fe_base.h.

364 { libmesh_assert(!calculations_started || calculate_d2phi);

◆ get_d2phidz2()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidz2 ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points.

Definition at line 371 of file fe_base.h.

372 { libmesh_assert(!calculations_started || calculate_d2phi);
373 calculate_d2phi = calculate_dphiref = true; return d2phidz2; }

◆ get_d2phidzeta2()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidzeta2 ( ) const
inlineinherited
Returns
The shape function second derivatives at the quadrature points, in reference coordinates

Definition at line 419 of file fe_base.h.

420 { libmesh_assert(!calculations_started || calculate_d2phi);
std::vector< std::vector< OutputShape > > d2phidzeta2
Shape function second derivatives in the zeta direction.
Definition fe_base.h:705

◆ get_d2xyzdeta2()

virtual_for_inffe const std::vector< RealGradient > & libMesh::FEAbstract::get_d2xyzdeta2 ( ) const
inlineinherited
Returns
The second partial derivatives in eta.

Definition at line 343 of file fe_abstract.h.

344 { calculate_map = true; return this->_fe_map->get_d2xyzdeta2(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_d2xyzdetadzeta()

virtual_for_inffe const std::vector< RealGradient > & libMesh::FEAbstract::get_d2xyzdetadzeta ( ) const
inlineinherited
Returns
The second partial derivatives in eta-zeta.

Definition at line 371 of file fe_abstract.h.

372 { calculate_map = true; return this->_fe_map->get_d2xyzdetadzeta(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_d2xyzdxi2()

virtual_for_inffe const std::vector< RealGradient > & libMesh::FEAbstract::get_d2xyzdxi2 ( ) const
inlineinherited
Returns
The second partial derivatives in xi.

Definition at line 336 of file fe_abstract.h.

337 { calculate_map = true; return this->_fe_map->get_d2xyzdxi2(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_d2xyzdxideta()

virtual_for_inffe const std::vector< RealGradient > & libMesh::FEAbstract::get_d2xyzdxideta ( ) const
inlineinherited
Returns
The second partial derivatives in xi-eta.

Definition at line 357 of file fe_abstract.h.

358 { calculate_map = true; return this->_fe_map->get_d2xyzdxideta(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_d2xyzdxidzeta()

virtual_for_inffe const std::vector< RealGradient > & libMesh::FEAbstract::get_d2xyzdxidzeta ( ) const
inlineinherited
Returns
The second partial derivatives in xi-zeta.

Definition at line 364 of file fe_abstract.h.

365 { calculate_map = true; return this->_fe_map->get_d2xyzdxidzeta(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_d2xyzdzeta2()

virtual_for_inffe const std::vector< RealGradient > & libMesh::FEAbstract::get_d2xyzdzeta2 ( ) const
inlineinherited
Returns
The second partial derivatives in zeta.

Definition at line 350 of file fe_abstract.h.

351 { calculate_map = true; return this->_fe_map->get_d2xyzdzeta2(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_detadx()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_detadx ( ) const
inlineinherited
Returns
The deta/dx entry in the transformation matrix from physical to local coordinates.

Definition at line 405 of file fe_abstract.h.

406 { calculate_map = true; return this->_fe_map->get_detadx(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_detady()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_detady ( ) const
inlineinherited
Returns
The deta/dy entry in the transformation matrix from physical to local coordinates.

Definition at line 413 of file fe_abstract.h.

414 { calculate_map = true; return this->_fe_map->get_detady(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_detadz()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_detadz ( ) const
inlineinherited
Returns
The deta/dz entry in the transformation matrix from physical to local coordinates.

Definition at line 421 of file fe_abstract.h.

422 { calculate_map = true; return this->_fe_map->get_detadz(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_dim()

unsigned int libMesh::FEAbstract::get_dim ( ) const
inlineinherited
Returns
the dimension of this FE

Definition at line 258 of file fe_abstract.h.

259 { return dim; }

References libMesh::FEAbstract::dim.

◆ get_div_phi()

virtual_for_inffe const std::vector< std::vector< OutputDivergence > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_div_phi ( ) const
inlineinherited
Returns
The divergence of the shape function at the quadrature points.

Definition at line 261 of file fe_base.h.

262 { libmesh_assert(!calculations_started || calculate_div_phi);

◆ get_dphase()

const std::vector< OutputGradient > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphase ( ) const
inlineinherited
Returns
The global first derivative of the phase term which is used in infinite elements, evaluated at the quadrature points.

In case of the general finite element class FE this field is initialized to all zero, so that the variational formulation for an infinite element produces correct element matrices for a mesh using both finite and infinite elements.

Definition at line 437 of file fe_base.h.

438 { return dphase; }
std::vector< OutputGradient > dphase
Used for certain infinite element families: the first derivatives of the phase term in global coordin...
Definition fe_base.h:753

◆ get_dphi()

const std::vector< std::vector< OutputGradient > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphi ( ) const
inlineinherited
Returns
The shape function derivatives at the quadrature points.

Definition at line 230 of file fe_base.h.

231 { libmesh_assert(!calculations_started || calculate_dphi);
232 calculate_dphi = calculate_dphiref = true; return dphi; }

◆ get_dphi_over_decay()

virtual const std::vector< std::vector< OutputGradient > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphi_over_decay ( ) const
inlinevirtualinherited
Returns
the gradient of the shape function (see get_dphi()), but in case of InfFE, weighted with 1/decay.

In contrast to the shape function, its gradient stays finite when divided by the decay function.

Definition at line 511 of file fe_base.h.

512 { return get_dphi();}
const std::vector< std::vector< OutputGradient > > & get_dphi() const
Definition fe_base.h:230

◆ get_dphi_over_decayxR()

virtual const std::vector< std::vector< OutputGradient > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphi_over_decayxR ( ) const
inlinevirtualinherited
Returns
the gradient of the shape function (see get_dphi()), but in case of InfFE, weighted with r/decay. See get_phi_over_decayxR() for details.

Definition at line 501 of file fe_base.h.

502 { return get_dphi();}

◆ get_dphideta()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphideta ( ) const
inlineinherited
Returns
The shape function eta-derivative at the quadrature points.

Definition at line 301 of file fe_base.h.

302 { libmesh_assert(!calculations_started || calculate_dphiref);
303 calculate_dphiref = true; return dphideta; }
std::vector< std::vector< OutputShape > > dphideta
Shape function derivatives in the eta direction.
Definition fe_base.h:646

◆ get_dphidx()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphidx ( ) const
inlineinherited
Returns
The shape function x-derivative at the quadrature points.

Definition at line 269 of file fe_base.h.

270 { libmesh_assert(!calculations_started || calculate_dphi);
271 calculate_dphi = calculate_dphiref = true; return dphidx; }

◆ get_dphidxi()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphidxi ( ) const
inlineinherited
Returns
The shape function xi-derivative at the quadrature points.

Definition at line 293 of file fe_base.h.

294 { libmesh_assert(!calculations_started || calculate_dphiref);
295 calculate_dphiref = true; return dphidxi; }
std::vector< std::vector< OutputShape > > dphidxi
Shape function derivatives in the xi direction.
Definition fe_base.h:641

◆ get_dphidy()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphidy ( ) const
inlineinherited
Returns
The shape function y-derivative at the quadrature points.

Definition at line 277 of file fe_base.h.

278 { libmesh_assert(!calculations_started || calculate_dphi);
279 calculate_dphi = calculate_dphiref = true; return dphidy; }

◆ get_dphidz()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphidz ( ) const
inlineinherited
Returns
The shape function z-derivative at the quadrature points.

Definition at line 285 of file fe_base.h.

286 { libmesh_assert(!calculations_started || calculate_dphi);
287 calculate_dphi = calculate_dphiref = true; return dphidz; }

◆ get_dphidzeta()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphidzeta ( ) const
inlineinherited
Returns
The shape function zeta-derivative at the quadrature points.

Definition at line 309 of file fe_base.h.

310 { libmesh_assert(!calculations_started || calculate_dphiref);
311 calculate_dphiref = true; return dphidzeta; }
std::vector< std::vector< OutputShape > > dphidzeta
Shape function derivatives in the zeta direction.
Definition fe_base.h:651

◆ get_dual_coeff()

const DenseMatrix< Real > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dual_coeff ( ) const
inlineinherited

Definition at line 244 of file fe_base.h.

245 { return dual_coeff; }

◆ get_dual_d2phi()

const std::vector< std::vector< OutputTensor > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dual_d2phi ( ) const
inlineinherited

Definition at line 323 of file fe_base.h.

324 { libmesh_assert(!calculations_started || calculate_d2phi);
bool calculate_dual
Are we calculating dual basis?

◆ get_dual_dphi()

const std::vector< std::vector< OutputGradient > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dual_dphi ( ) const
inlineinherited

Definition at line 234 of file fe_base.h.

235 { libmesh_assert(!calculations_started || calculate_dphi);

◆ get_dual_phi()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_dual_phi ( ) const
inlineinherited

Definition at line 211 of file fe_base.h.

212 {
213 libmesh_assert(!calculations_started || calculate_dual);
214 calculate_dual = true;
215 // Dual phi computation relies on primal phi computation
216 this->request_phi();
217 return dual_phi;
218 }
virtual void request_phi() const override
Definition fe_base.h:220

◆ get_dxidx()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_dxidx ( ) const
inlineinherited
Returns
The dxi/dx entry in the transformation matrix from physical to local coordinates.

Definition at line 381 of file fe_abstract.h.

382 { calculate_map = true; return this->_fe_map->get_dxidx(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_dxidy()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_dxidy ( ) const
inlineinherited
Returns
The dxi/dy entry in the transformation matrix from physical to local coordinates.

Definition at line 389 of file fe_abstract.h.

390 { calculate_map = true; return this->_fe_map->get_dxidy(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_dxidz()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_dxidz ( ) const
inlineinherited
Returns
The dxi/dz entry in the transformation matrix from physical to local coordinates.

Definition at line 397 of file fe_abstract.h.

398 { calculate_map = true; return this->_fe_map->get_dxidz(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_dxyzdeta()

virtual_for_inffe const std::vector< RealGradient > & libMesh::FEAbstract::get_dxyzdeta ( ) const
inlineinherited
Returns
The element tangents in eta-direction at the quadrature points.

Definition at line 319 of file fe_abstract.h.

320 { calculate_map = true; return this->_fe_map->get_dxyzdeta(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_dxyzdxi()

virtual_for_inffe const std::vector< RealGradient > & libMesh::FEAbstract::get_dxyzdxi ( ) const
inlineinherited
Returns
The element tangents in xi-direction at the quadrature points.

Definition at line 311 of file fe_abstract.h.

312 { calculate_map = true; return this->_fe_map->get_dxyzdxi(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_dxyzdzeta()

virtual_for_inffe const std::vector< RealGradient > & libMesh::FEAbstract::get_dxyzdzeta ( ) const
inlineinherited
Returns
The element tangents in zeta-direction at the quadrature points.

Definition at line 327 of file fe_abstract.h.

328 { return _fe_map->get_dxyzdzeta(); }

References libMesh::FEAbstract::_fe_map.

◆ get_dzetadx()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_dzetadx ( ) const
inlineinherited
Returns
The dzeta/dx entry in the transformation matrix from physical to local coordinates.

Definition at line 429 of file fe_abstract.h.

430 { calculate_map = true; return this->_fe_map->get_dzetadx(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_dzetady()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_dzetady ( ) const
inlineinherited
Returns
The dzeta/dy entry in the transformation matrix from physical to local coordinates.

Definition at line 437 of file fe_abstract.h.

438 { calculate_map = true; return this->_fe_map->get_dzetady(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_dzetadz()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_dzetadz ( ) const
inlineinherited
Returns
The dzeta/dz entry in the transformation matrix from physical to local coordinates.

Definition at line 445 of file fe_abstract.h.

446 { calculate_map = true; return this->_fe_map->get_dzetadz(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_elem()

const Elem * libMesh::FEAbstract::get_elem ( ) const
inlineinherited
Returns
The element that the current shape functions have been calculated for. Useful in determining when shape functions must be recomputed.

Definition at line 496 of file fe_abstract.h.

496{ return _elem; }

References libMesh::FEAbstract::_elem.

◆ get_family()

FEFamily libMesh::FEAbstract::get_family ( ) const
inlineinherited
Returns
The finite element family of this element.

Definition at line 547 of file fe_abstract.h.

547{ return fe_type.family; }

References libMesh::FEType::family, and libMesh::FEAbstract::fe_type.

Referenced by libMesh::FE< Dim, T >::FE().

◆ get_fe_map() [1/2]

FEMap & libMesh::FEAbstract::get_fe_map ( )
inlineinherited

Definition at line 555 of file fe_abstract.h.

555{ return *_fe_map.get(); }

References libMesh::FEAbstract::_fe_map.

◆ get_fe_map() [2/2]

const FEMap & libMesh::FEAbstract::get_fe_map ( ) const
inlineinherited

◆ get_fe_type()

FEType libMesh::FEAbstract::get_fe_type ( ) const
inlineinherited

◆ get_info()

std::string libMesh::ReferenceCounter::get_info ( )
staticinherited

Gets a string containing the reference information.

Definition at line 47 of file reference_counter.C.

48{
49#if defined(LIBMESH_ENABLE_REFERENCE_COUNTING) && defined(DEBUG)
50
51 std::ostringstream oss;
52
53 oss << '\n'
54 << " ---------------------------------------------------------------------------- \n"
55 << "| Reference count information |\n"
56 << " ---------------------------------------------------------------------------- \n";
57
58 for (const auto & [name, cd] : _counts)
59 oss << "| " << name << " reference count information:\n"
60 << "| Creations: " << cd.first << '\n'
61 << "| Destructions: " << cd.second << '\n';
62
63 oss << " ---------------------------------------------------------------------------- \n";
64
65 return oss.str();
66
67#else
68
69 return "";
70
71#endif
72}
static Counts _counts
Actually holds the data.
std::string name(const ElemQuality q)
This function returns a string containing some name for q.

References libMesh::ReferenceCounter::_counts.

Referenced by libMesh::ReferenceCounter::print_info().

◆ get_JxW()

virtual_for_inffe const std::vector< Real > & libMesh::FEAbstract::get_JxW ( ) const
inlineinherited
Returns
The element Jacobian times the quadrature weight for each quadrature point.

For InfFE, use get_JxWxdecay_sq() instead.

Definition at line 303 of file fe_abstract.h.

304 { calculate_map = true; return this->_fe_map->get_JxW(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

Referenced by libMesh::ExactSolution::_compute_error(), assembly_with_dg_fem_context(), libMesh::DiscontinuityMeasure::boundary_side_integration(), libMesh::KellyErrorEstimator::boundary_side_integration(), compute_enriched_soln(), libMesh::FirstOrderUnsteadySolver::compute_second_order_eqns(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubProjector::construct_projection(), CoupledSystem::element_constraint(), NavierSystem::element_constraint(), LaplaceSystem::element_postprocess(), PoissonSystem::element_postprocess(), LaplaceQoI::element_qoi(), HeatSystem::element_qoi(), HeatSystem::element_qoi_derivative(), LaplaceSystem::element_qoi_derivative(), LaplaceQoI::element_qoi_derivative(), LaplaceSystem::element_time_derivative(), CoupledSystem::element_time_derivative(), HeatSystem::element_time_derivative(), PoissonSystem::element_time_derivative(), NavierSystem::element_time_derivative(), SolidSystem::element_time_derivative(), ElasticitySystem::element_time_derivative(), CurlCurlSystem::element_time_derivative(), SigmaPhysics::element_time_derivative(), libMesh::ExactErrorEstimator::find_squared_element_error(), libMesh::FEAbstract::get_JxWxdecay_sq(), CoupledSystemQoI::init_context(), libMesh::FEMSystem::init_context(), LaplaceSystem::init_context(), LaplaceQoI::init_context(), CoupledSystem::init_context(), HeatSystem::init_context(), PoissonSystem::init_context(), NavierSystem::init_context(), SolidSystem::init_context(), ElasticitySystem::init_context(), CurlCurlSystem::init_context(), SigmaPhysics::init_context(), ElasticityRBConstruction::init_context(), libMesh::DiscontinuityMeasure::init_context(), HilbertSystem::init_context(), libMesh::DiscontinuityMeasure::internal_side_integration(), libMesh::LaplacianErrorEstimator::internal_side_integration(), libMesh::KellyErrorEstimator::internal_side_integration(), libMesh::FEMPhysics::mass_residual(), NavierSystem::mass_residual(), ElasticitySystem::mass_residual(), Integrate::operator()(), LaplaceSystem::side_constraint(), LaplaceSystem::side_postprocess(), CoupledSystemQoI::side_qoi(), LaplaceSystem::side_qoi_derivative(), CoupledSystemQoI::side_qoi_derivative(), SolidSystem::side_time_derivative(), ElasticitySystem::side_time_derivative(), CurlCurlSystem::side_time_derivative(), and libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubFunctor::SubFunctor().

◆ get_JxWxdecay_sq()

virtual const std::vector< Real > & libMesh::FEAbstract::get_JxWxdecay_sq ( ) const
inlinevirtualinherited

This function is the variant of get_JxW() for InfFE.

Since J diverges there, a respectize decay-function must be applied to obtain well-defined quantities.

For FE, it is equivalent to the common get_JxW().

Reimplemented in libMesh::InfFE< Dim, T_radial, T_map >.

Definition at line 292 of file fe_abstract.h.

293 { return get_JxW();}
virtual_for_inffe const std::vector< Real > & get_JxW() const

References libMesh::FEAbstract::get_JxW().

Referenced by assemble_func(), assemble_SchroedingerEquation(), and assemble_wave().

◆ get_normals()

virtual_for_inffe const std::vector< Point > & libMesh::FEAbstract::get_normals ( ) const
inlineinherited

◆ get_nothing()

void libMesh::FEAbstract::get_nothing ( ) const
inlineinherited
Returns
nothing, but lets the FE know you're explicitly prerequesting calculations. This is useful when you only want the FE for n_quadrature_points, n_dofs_on_side, or other methods that don't require shape function calculations, but you don't want libMesh "backwards compatibility" mode to assume you've made no prerequests and need to calculate everything.

Definition at line 269 of file fe_abstract.h.

270 { calculate_nothing = true; }

References libMesh::FEAbstract::calculate_nothing.

Referenced by libMesh::ExactSolution::_compute_error(), libMesh::ParsedFEMFunction< Output >::init_context(), libMesh::WrappedFunctor< Output >::init_context(), CoupledSystemQoI::init_context(), CoupledSystem::init_context(), HeatSystem::init_context(), NavierSystem::init_context(), ElasticitySystem::init_context(), SigmaPhysics::init_context(), HilbertSystem::init_context(), libMesh::VariationalSmootherSystem::init_context(), and Integrate::operator()().

◆ get_order()

Order libMesh::FEAbstract::get_order ( ) const
inlineinherited
Returns
The approximation order of the finite element.

Definition at line 525 of file fe_abstract.h.

526 { return fe_type.order + _p_level; }

References libMesh::FEAbstract::_p_level, libMesh::FEAbstract::fe_type, and libMesh::FEType::order.

◆ get_p_level()

unsigned int libMesh::FEAbstract::get_p_level ( ) const
inlineinherited
Returns
The p refinement level that the current shape functions have been calculated for.

Definition at line 515 of file fe_abstract.h.

515{ return _p_level; }

References libMesh::FEAbstract::_p_level.

◆ get_phi()

const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_phi ( ) const
inlineinherited
Returns
The shape function values at the quadrature points on the element.

Definition at line 207 of file fe_base.h.

208 { libmesh_assert(!calculations_started || calculate_phi);
209 calculate_phi = true; return phi; }

◆ get_phi_over_decayxR()

virtual const std::vector< std::vector< OutputShape > > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_phi_over_decayxR ( ) const
inlinevirtualinherited
Returns
The shape function phi (for FE) and phi weighted by r/decay for InfFE.

To compensate for the decay function applied to the Jacobian (see get_JxWxdecay_sq), the wave function phi should be divided by this function.

The factor r must be compensated for by the Sobolev weight. (i.e. by using get_Sobolev_weightxR_sq())

Definition at line 493 of file fe_base.h.

494 { return get_phi();}
const std::vector< std::vector< OutputShape > > & get_phi() const
Definition fe_base.h:207

◆ get_refspace_nodes()

void libMesh::FEAbstract::get_refspace_nodes ( const ElemType  t,
std::vector< Point > &  nodes 
)
staticinherited
Returns
The reference space coordinates of nodes based on the element type.

Definition at line 400 of file fe_abstract.C.

401{
402 const unsigned int n_nodes = Elem::type_to_n_nodes_map[itemType];
403 if (n_nodes == invalid_uint)
404 libmesh_error_msg("Number of nodes is not well-defined for " <<
405 Utility::enum_to_string(itemType));
406
407 nodes.resize(n_nodes);
408 switch(itemType)
409 {
410 case NODEELEM:
411 {
412 nodes[0] = Point (0.,0.,0.);
413 return;
414 }
415 case EDGE3:
416 {
417 nodes[2] = Point (0.,0.,0.);
418 libmesh_fallthrough();
419 }
420 case EDGE2:
421 {
422 nodes[0] = Point (-1.,0.,0.);
423 nodes[1] = Point (1.,0.,0.);
424 return;
425 }
426 case EDGE4: // not nested with EDGE3
427 {
428 nodes[0] = Point (-1.,0.,0.);
429 nodes[1] = Point (1.,0.,0.);
430 nodes[2] = Point (-1./3.,0.,0.);
431 nodes[3] - Point (1./3.,0.,0.);
432 return;
433 }
434 case TRI7:
435 {
436 nodes[6] = Point (1./3.,1./3.,0.);
437 libmesh_fallthrough();
438 }
439 case TRI6:
440 {
441 nodes[3] = Point (.5,0.,0.);
442 nodes[4] = Point (.5,.5,0.);
443 nodes[5] = Point (0.,.5,0.);
444 libmesh_fallthrough();
445 }
446 case TRI3:
447 case TRISHELL3:
448 {
449 nodes[0] = Point (0.,0.,0.);
450 nodes[1] = Point (1.,0.,0.);
451 nodes[2] = Point (0.,1.,0.);
452 return;
453 }
454 case QUAD9:
455 case QUADSHELL9:
456 {
457 nodes[8] = Point (0.,0.,0.);
458 libmesh_fallthrough();
459 }
460 case QUAD8:
461 case QUADSHELL8:
462 {
463 nodes[4] = Point (0.,-1.,0.);
464 nodes[5] = Point (1.,0.,0.);
465 nodes[6] = Point (0.,1.,0.);
466 nodes[7] = Point (-1.,0.,0.);
467 libmesh_fallthrough();
468 }
469 case QUAD4:
470 case QUADSHELL4:
471 {
472 nodes[0] = Point (-1.,-1.,0.);
473 nodes[1] = Point (1.,-1.,0.);
474 nodes[2] = Point (1.,1.,0.);
475 nodes[3] = Point (-1.,1.,0.);
476 return;
477 }
478 case TET14:
479 {
480 nodes[10] = Point (1/Real(3),1/Real(3),0.);
481 nodes[11] = Point (1/Real(3),0.,1/Real(3));
482 nodes[12] = Point (1/Real(3),1/Real(3),1/Real(3));
483 nodes[13] = Point (0.,1/Real(3),1/Real(3));
484 libmesh_fallthrough();
485 }
486 case TET10:
487 {
488 nodes[4] = Point (.5,0.,0.);
489 nodes[5] = Point (.5,.5,0.);
490 nodes[6] = Point (0.,.5,0.);
491 nodes[7] = Point (0.,0.,.5);
492 nodes[8] = Point (.5,0.,.5);
493 nodes[9] = Point (0.,.5,.5);
494 libmesh_fallthrough();
495 }
496 case TET4:
497 {
498 nodes[0] = Point (0.,0.,0.);
499 nodes[1] = Point (1.,0.,0.);
500 nodes[2] = Point (0.,1.,0.);
501 nodes[3] = Point (0.,0.,1.);
502 return;
503 }
504 case HEX27:
505 {
506 nodes[20] = Point (0.,0.,-1.);
507 nodes[21] = Point (0.,-1.,0.);
508 nodes[22] = Point (1.,0.,0.);
509 nodes[23] = Point (0.,1.,0.);
510 nodes[24] = Point (-1.,0.,0.);
511 nodes[25] = Point (0.,0.,1.);
512 nodes[26] = Point (0.,0.,0.);
513 libmesh_fallthrough();
514 }
515 case HEX20:
516 {
517 nodes[8] = Point (0.,-1.,-1.);
518 nodes[9] = Point (1.,0.,-1.);
519 nodes[10] = Point (0.,1.,-1.);
520 nodes[11] = Point (-1.,0.,-1.);
521 nodes[12] = Point (-1.,-1.,0.);
522 nodes[13] = Point (1.,-1.,0.);
523 nodes[14] = Point (1.,1.,0.);
524 nodes[15] = Point (-1.,1.,0.);
525 nodes[16] = Point (0.,-1.,1.);
526 nodes[17] = Point (1.,0.,1.);
527 nodes[18] = Point (0.,1.,1.);
528 nodes[19] = Point (-1.,0.,1.);
529 libmesh_fallthrough();
530 }
531 case HEX8:
532 {
533 nodes[0] = Point (-1.,-1.,-1.);
534 nodes[1] = Point (1.,-1.,-1.);
535 nodes[2] = Point (1.,1.,-1.);
536 nodes[3] = Point (-1.,1.,-1.);
537 nodes[4] = Point (-1.,-1.,1.);
538 nodes[5] = Point (1.,-1.,1.);
539 nodes[6] = Point (1.,1.,1.);
540 nodes[7] = Point (-1.,1.,1.);
541 return;
542 }
543 case PRISM21:
544 {
545 nodes[20] = Point (1/Real(3),1/Real(3),0);
546 libmesh_fallthrough();
547 }
548 case PRISM20:
549 {
550 nodes[18] = Point (1/Real(3),1/Real(3),-1);
551 nodes[19] = Point (1/Real(3),1/Real(3),1);
552 libmesh_fallthrough();
553 }
554 case PRISM18:
555 {
556 nodes[15] = Point (.5,0.,0.);
557 nodes[16] = Point (.5,.5,0.);
558 nodes[17] = Point (0.,.5,0.);
559 libmesh_fallthrough();
560 }
561 case PRISM15:
562 {
563 nodes[6] = Point (.5,0.,-1.);
564 nodes[7] = Point (.5,.5,-1.);
565 nodes[8] = Point (0.,.5,-1.);
566 nodes[9] = Point (0.,0.,0.);
567 nodes[10] = Point (1.,0.,0.);
568 nodes[11] = Point (0.,1.,0.);
569 nodes[12] = Point (.5,0.,1.);
570 nodes[13] = Point (.5,.5,1.);
571 nodes[14] = Point (0.,.5,1.);
572 libmesh_fallthrough();
573 }
574 case PRISM6:
575 {
576 nodes[0] = Point (0.,0.,-1.);
577 nodes[1] = Point (1.,0.,-1.);
578 nodes[2] = Point (0.,1.,-1.);
579 nodes[3] = Point (0.,0.,1.);
580 nodes[4] = Point (1.,0.,1.);
581 nodes[5] = Point (0.,1.,1.);
582 return;
583 }
584 case PYRAMID18:
585 {
586 // triangle centers
587 nodes[14] = Point (-2/Real(3),0.,1/Real(3));
588 nodes[15] = Point (0.,2/Real(3),1/Real(3));
589 nodes[16] = Point (2/Real(3),0.,1/Real(3));
590 nodes[17] = Point (0.,-2/Real(3),1/Real(3));
591
592 libmesh_fallthrough();
593 }
594 case PYRAMID14:
595 {
596 // base center
597 nodes[13] = Point (0.,0.,0.);
598
599 libmesh_fallthrough();
600 }
601 case PYRAMID13:
602 {
603 // base midedge
604 nodes[5] = Point (0.,-1.,0.);
605 nodes[6] = Point (1.,0.,0.);
606 nodes[7] = Point (0.,1.,0.);
607 nodes[8] = Point (-1,0.,0.);
608
609 // lateral midedge
610 nodes[9] = Point (-.5,-.5,.5);
611 nodes[10] = Point (.5,-.5,.5);
612 nodes[11] = Point (.5,.5,.5);
613 nodes[12] = Point (-.5,.5,.5);
614
615 libmesh_fallthrough();
616 }
617 case PYRAMID5:
618 {
619 // base corners
620 nodes[0] = Point (-1.,-1.,0.);
621 nodes[1] = Point (1.,-1.,0.);
622 nodes[2] = Point (1.,1.,0.);
623 nodes[3] = Point (-1.,1.,0.);
624 // apex
625 nodes[4] = Point (0.,0.,1.);
626 return;
627 }
628
629 default:
630 libmesh_error_msg("ERROR: Unknown element type " << Utility::enum_to_string(itemType));
631 }
632}
static const unsigned int type_to_n_nodes_map[INVALID_ELEM]
This array maps the integer representation of the ElemType enum to the number of nodes in the element...
Definition elem.h:643
const unsigned int invalid_uint
A number which is used quite often to represent an invalid or uninitialized value for an unsigned int...
Definition libmesh.h:303

References libMesh::EDGE2, libMesh::EDGE3, libMesh::EDGE4, libMesh::Utility::enum_to_string(), libMesh::HEX20, libMesh::HEX27, libMesh::HEX8, libMesh::invalid_uint, n_nodes, libMesh::NODEELEM, libMesh::PRISM15, libMesh::PRISM18, libMesh::PRISM20, libMesh::PRISM21, libMesh::PRISM6, libMesh::PYRAMID13, libMesh::PYRAMID14, libMesh::PYRAMID18, libMesh::PYRAMID5, libMesh::QUAD4, libMesh::QUAD8, libMesh::QUAD9, libMesh::QUADSHELL4, libMesh::QUADSHELL8, libMesh::QUADSHELL9, libMesh::Real, libMesh::TET10, libMesh::TET14, libMesh::TET4, libMesh::TRI3, libMesh::TRI6, libMesh::TRI7, libMesh::TRISHELL3, and libMesh::Elem::type_to_n_nodes_map.

Referenced by libMesh::LIBMESH_DEFAULT_VECTORIZED_FE(), libMesh::LIBMESH_DEFAULT_VECTORIZED_FE(), libMesh::LIBMESH_DEFAULT_VECTORIZED_FE(), and libMesh::LIBMESH_DEFAULT_VECTORIZED_FE().

◆ get_Sobolev_dweight()

virtual const std::vector< RealGradient > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_Sobolev_dweight ( ) const
inlinevirtualinherited
Returns
The first global derivative of the multiplicative weight at each quadrature point. See get_Sobolev_weight() for details. In case of FE initialized to all zero.

Definition at line 461 of file fe_base.h.

462 { return dweight; }
std::vector< RealGradient > dweight
Used for certain infinite element families: the global derivative of the additional radial weight ,...
Definition fe_base.h:760

◆ get_Sobolev_dweightxR_sq()

virtual const std::vector< RealGradient > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_Sobolev_dweightxR_sq ( ) const
inlinevirtualinherited
Returns
The first global derivative of the multiplicative weight (see dget_Sobolev_weight) but weighted with the square of the radial coordinate.

In finite elements, this is 0.

Definition at line 480 of file fe_base.h.

481 { return dweight; }

◆ get_Sobolev_weight()

virtual const std::vector< Real > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_Sobolev_weight ( ) const
inlinevirtualinherited
Returns
The multiplicative weight at each quadrature point. This weight is used for certain infinite element weak formulations, so that weighted Sobolev spaces are used for the trial function space. This renders the variational form easily computable.

In case of the general finite element class FE this field is initialized to all ones, so that the variational formulation for an infinite element produces correct element matrices for a mesh using both finite and infinite elements.

Definition at line 453 of file fe_base.h.

454 { return weight; }
std::vector< Real > weight
Used for certain infinite element families: the additional radial weight in local coordinates,...
Definition fe_base.h:767

◆ get_Sobolev_weightxR_sq()

virtual const std::vector< Real > & libMesh::FEGenericBase< FEOutputType< T >::type >::get_Sobolev_weightxR_sq ( ) const
inlinevirtualinherited
Returns
The multiplicative weight (see get_Sobolev_weight) but weighted with the radial coordinate square.

In finite elements, this gives just 1, similar to get_Sobolev_Weight()

Definition at line 470 of file fe_base.h.

471 { return weight; }

◆ get_tangents()

virtual_for_inffe const std::vector< std::vector< Point > > & libMesh::FEAbstract::get_tangents ( ) const
inlineinherited
Returns
The tangent vectors for face integration.

Definition at line 452 of file fe_abstract.h.

453 { calculate_map = true; return this->_fe_map->get_tangents(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

◆ get_type()

ElemType libMesh::FEAbstract::get_type ( ) const
inlineinherited
Returns
The element type that the current shape functions have been calculated for, or INVALID_ELEM if no such element exists. Useful in determining when shape functions must be recomputed.

This is generally redundant with _elem->type(), but must be cached separately for cases (such as internal FE use in QComposite) where _elem might be a dangling pointer to a temporary.

Definition at line 509 of file fe_abstract.h.

509{ return _elem_type; }

References libMesh::FEAbstract::_elem_type.

◆ get_xyz()

virtual_for_inffe const std::vector< Point > & libMesh::FEAbstract::get_xyz ( ) const
inlineinherited
Returns
The xyz spatial locations of the quadrature points on the element.

It is overwritten by infinite elements since there FEMap cannot be used to compute xyz.

Definition at line 280 of file fe_abstract.h.

281 { calculate_map = true; return this->_fe_map->get_xyz(); }

References libMesh::FEAbstract::_fe_map, and libMesh::FEAbstract::calculate_map.

Referenced by libMesh::ExactSolution::_compute_error(), assemble_SchroedingerEquation(), libMesh::DiscontinuityMeasure::boundary_side_integration(), libMesh::KellyErrorEstimator::boundary_side_integration(), compute_enriched_soln(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubProjector::construct_projection(), LaplaceSystem::element_postprocess(), PoissonSystem::element_postprocess(), LaplaceQoI::element_qoi(), LaplaceSystem::element_qoi_derivative(), LaplaceQoI::element_qoi_derivative(), HeatSystem::element_time_derivative(), PoissonSystem::element_time_derivative(), NavierSystem::element_time_derivative(), CurlCurlSystem::element_time_derivative(), SigmaPhysics::element_time_derivative(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::ParsedFEMFunction< Output >::eval_args(), libMesh::ExactErrorEstimator::find_squared_element_error(), libMesh::ParsedFEMFunction< Output >::init_context(), CoupledSystemQoI::init_context(), LaplaceSystem::init_context(), LaplaceQoI::init_context(), CoupledSystem::init_context(), HeatSystem::init_context(), PoissonSystem::init_context(), NavierSystem::init_context(), SolidSystem::init_context(), CurlCurlSystem::init_context(), SigmaPhysics::init_context(), HilbertSystem::init_context(), libMesh::DGFEMContext::neighbor_side_fe_reinit(), Integrate::operator()(), libMesh::JumpErrorEstimator::reinit_sides(), LaplaceSystem::side_constraint(), LaplaceSystem::side_postprocess(), CoupledSystemQoI::side_qoi(), LaplaceSystem::side_qoi_derivative(), CoupledSystemQoI::side_qoi_derivative(), SolidSystem::side_time_derivative(), CurlCurlSystem::side_time_derivative(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubFunctor::SubFunctor(), SlitMeshRefinedSystemTest::testRestart(), and SlitMeshRefinedSystemTest::testSystem().

◆ increment_constructor_count()

void libMesh::ReferenceCounter::increment_constructor_count ( const std::string &  name)
inlineprotectednoexceptinherited

Increments the construction counter.

Should be called in the constructor of any derived class that will be reference counted.

Definition at line 183 of file reference_counter.h.

184{
185 libmesh_try
186 {
187 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
188 std::pair<unsigned int, unsigned int> & p = _counts[name];
189 p.first++;
190 }
191 libmesh_catch (...)
192 {
193 auto stream = libMesh::err.get();
194 stream->exceptions(stream->goodbit); // stream must not throw
195 libMesh::err << "Encountered unrecoverable error while calling "
196 << "ReferenceCounter::increment_constructor_count() "
197 << "for a(n) " << name << " object." << std::endl;
198 std::terminate();
199 }
200}
streamT * get()
Rather than implement every ostream/ios/ios_base function, we'll be lazy and make esoteric uses go th...
OStreamProxy err

References libMesh::err, libMesh::BasicOStreamProxy< charT, traits >::get(), and libMesh::Threads::spin_mtx.

Referenced by libMesh::ReferenceCountedObject< T >::ReferenceCountedObject(), libMesh::ReferenceCountedObject< T >::ReferenceCountedObject(), and libMesh::ReferenceCountedObject< T >::ReferenceCountedObject().

◆ increment_destructor_count()

void libMesh::ReferenceCounter::increment_destructor_count ( const std::string &  name)
inlineprotectednoexceptinherited

Increments the destruction counter.

Should be called in the destructor of any derived class that will be reference counted.

Definition at line 207 of file reference_counter.h.

208{
209 libmesh_try
210 {
211 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
212 std::pair<unsigned int, unsigned int> & p = _counts[name];
213 p.second++;
214 }
215 libmesh_catch (...)
216 {
217 auto stream = libMesh::err.get();
218 stream->exceptions(stream->goodbit); // stream must not throw
219 libMesh::err << "Encountered unrecoverable error while calling "
220 << "ReferenceCounter::increment_destructor_count() "
221 << "for a(n) " << name << " object." << std::endl;
222 std::terminate();
223 }
224}

References libMesh::err, libMesh::BasicOStreamProxy< charT, traits >::get(), and libMesh::Threads::spin_mtx.

Referenced by libMesh::ReferenceCountedObject< T >::~ReferenceCountedObject().

◆ init_base_shape_functions()

void libMesh::FE< Dim, T >::init_base_shape_functions ( const std::vector< Point > &  qp,
const Elem e 
)
overrideprotectedvirtualinherited

Initialize the data fields for the base of an an infinite element.

Implements libMesh::FEGenericBase< FEOutputType< T >::type >.

Definition at line 730 of file fe.C.

780{
781 this->_elem = e;
782 this->_elem_type = e->type();
783 this->_fe_map->template init_reference_to_physical_map<Dim>(qp, e);
785}
virtual void init_shape_functions(const std::vector< Point > &qp, const Elem *e)
Update the various member data fields phi, dphidxi, dphideta, dphidzeta, etc.
Definition fe.C:441

◆ init_dual_shape_functions()

void libMesh::FE< Dim, T >::init_dual_shape_functions ( unsigned int  n_shapes,
unsigned int  n_qp 
)
protectedinherited

Init dual_phi and potentially dual_dphi, dual_d2phi.

Definition at line 722 of file fe.C.

412{
413 if (!this->calculate_dual)
414 return;
415
416 libmesh_assert_msg(this->calculate_phi,
417 "dual shape function calculation relies on "
418 "primal shape functions being calculated");
419
420 this->dual_phi.resize(n_shapes);
421 if (this->calculate_dphi)
422 this->dual_dphi.resize(n_shapes);
423#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
424 if (this->calculate_d2phi)
425 this->dual_d2phi.resize(n_shapes);
426#endif
427
428 for (auto i : index_range(this->dual_phi))
429 {
430 this->dual_phi[i].resize(n_qp);
431 if (this->calculate_dphi)
432 this->dual_dphi[i].resize(n_qp);
433#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
434 if (this->calculate_d2phi)
435 this->dual_d2phi[i].resize(n_qp);
436#endif
437 }
438}

◆ init_shape_functions()

void libMesh::FE< Dim, T >::init_shape_functions ( const std::vector< Point > &  qp,
const Elem e 
)
protectedvirtualinherited

Update the various member data fields phi, dphidxi, dphideta, dphidzeta, etc.

for the current element. These data will be computed at the points qp, which are generally (but need not be) the quadrature points.

Definition at line 706 of file fe.C.

443{
444 // Start logging the shape function initialization
445 LOG_SCOPE("init_shape_functions()", "FE");
446
447 // The number of quadrature points.
448 const unsigned int n_qp = cast_int<unsigned int>(qp.size());
449 this->_n_total_qp = n_qp;
450
451 // Number of shape functions in the finite element approximation
452 // space.
453 const unsigned int n_approx_shape_functions =
454 this->n_dofs(elem, this->get_order());
455
456 // Maybe we already have correctly-sized data? Check data sizes,
457 // and get ready to break out of a "loop" if all these resize()
458 // calls are redundant.
459 unsigned int old_n_qp = 0;
460 do
461 {
462 // resize the vectors to hold current data
463 // Phi are the shape functions used for the FE approximation
464 // Phi_map are the shape functions used for the FE mapping
465 if (this->calculate_phi)
466 {
467 if (this->phi.size() == n_approx_shape_functions)
468 {
469 old_n_qp = n_approx_shape_functions ? this->phi[0].size() : 0;
470 break;
471 }
472 this->phi.resize (n_approx_shape_functions);
473 }
474 if (this->calculate_dphi)
475 {
476 if (this->dphi.size() == n_approx_shape_functions)
477 {
478 old_n_qp = n_approx_shape_functions ? this->dphi[0].size() : 0;
479 break;
480 }
481 this->dphi.resize (n_approx_shape_functions);
482 this->dphidx.resize (n_approx_shape_functions);
483 this->dphidy.resize (n_approx_shape_functions);
484 this->dphidz.resize (n_approx_shape_functions);
485 }
486
487 if (this->calculate_dphiref)
488 {
489 if (Dim > 0)
490 {
491 if (this->dphidxi.size() == n_approx_shape_functions)
492 {
493 old_n_qp = n_approx_shape_functions ? this->dphidxi[0].size() : 0;
494 break;
495 }
496 this->dphidxi.resize (n_approx_shape_functions);
497 }
498
499 if (Dim > 1)
500 this->dphideta.resize (n_approx_shape_functions);
501
502 if (Dim > 2)
503 this->dphidzeta.resize (n_approx_shape_functions);
504 }
505
506 if (this->calculate_curl_phi && (FEInterface::field_type(T) == TYPE_VECTOR))
507 this->curl_phi.resize(n_approx_shape_functions);
508
509 if (this->calculate_div_phi && (FEInterface::field_type(T) == TYPE_VECTOR))
510 this->div_phi.resize(n_approx_shape_functions);
511
512#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
513 if (this->calculate_d2phi)
514 {
515 if (this->d2phi.size() == n_approx_shape_functions)
516 {
517 old_n_qp = n_approx_shape_functions ? this->d2phi[0].size() : 0;
518 break;
519 }
520
521 this->d2phi.resize (n_approx_shape_functions);
522 this->d2phidx2.resize (n_approx_shape_functions);
523 this->d2phidxdy.resize (n_approx_shape_functions);
524 this->d2phidxdz.resize (n_approx_shape_functions);
525 this->d2phidy2.resize (n_approx_shape_functions);
526 this->d2phidydz.resize (n_approx_shape_functions);
527 this->d2phidz2.resize (n_approx_shape_functions);
528
529 if (Dim > 0)
530 this->d2phidxi2.resize (n_approx_shape_functions);
531
532 if (Dim > 1)
533 {
534 this->d2phidxideta.resize (n_approx_shape_functions);
535 this->d2phideta2.resize (n_approx_shape_functions);
536 }
537 if (Dim > 2)
538 {
539 this->d2phidxidzeta.resize (n_approx_shape_functions);
540 this->d2phidetadzeta.resize (n_approx_shape_functions);
541 this->d2phidzeta2.resize (n_approx_shape_functions);
542 }
543 }
544#endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
545 }
546 while (false);
547
548 if (old_n_qp != n_qp)
549 for (unsigned int i=0; i<n_approx_shape_functions; i++)
550 {
551 if (this->calculate_phi)
552 this->phi[i].resize (n_qp);
553
554 if (this->calculate_dphi)
555 {
556 this->dphi[i].resize (n_qp);
557 this->dphidx[i].resize (n_qp);
558 this->dphidy[i].resize (n_qp);
559 this->dphidz[i].resize (n_qp);
560 }
561
562 if (this->calculate_dphiref)
563 {
564 if (Dim > 0)
565 this->dphidxi[i].resize(n_qp);
566
567 if (Dim > 1)
568 this->dphideta[i].resize(n_qp);
569
570 if (Dim > 2)
571 this->dphidzeta[i].resize(n_qp);
572 }
573
574 if (this->calculate_curl_phi && (FEInterface::field_type(T) == TYPE_VECTOR))
575 this->curl_phi[i].resize(n_qp);
576
577 if (this->calculate_div_phi && (FEInterface::field_type(T) == TYPE_VECTOR))
578 this->div_phi[i].resize(n_qp);
579
580#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
581 if (this->calculate_d2phi)
582 {
583 this->d2phi[i].resize (n_qp);
584 this->d2phidx2[i].resize (n_qp);
585 this->d2phidxdy[i].resize (n_qp);
586 this->d2phidxdz[i].resize (n_qp);
587 this->d2phidy2[i].resize (n_qp);
588 this->d2phidydz[i].resize (n_qp);
589 this->d2phidz2[i].resize (n_qp);
590 if (Dim > 0)
591 this->d2phidxi2[i].resize (n_qp);
592 if (Dim > 1)
593 {
594 this->d2phidxideta[i].resize (n_qp);
595 this->d2phideta2[i].resize (n_qp);
596 }
597 if (Dim > 2)
598 {
599 this->d2phidxidzeta[i].resize (n_qp);
600 this->d2phidetadzeta[i].resize (n_qp);
601 this->d2phidzeta2[i].resize (n_qp);
602 }
603 }
604#endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
605 }
606
607
608#ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
609 //------------------------------------------------------------
610 // Initialize the data fields, which should only be used for infinite
611 // elements, to some sensible values, so that using a FE with the
612 // variational formulation of an InfFE, correct element matrices are
613 // returned
614
615 {
616 if (this->calculate_phi || this->calculate_dphi)
617 {
618 this->weight.resize (n_qp);
619 for (unsigned int p=0; p<n_qp; p++)
620 this->weight[p] = 1.;
621 }
622
623 if (this->calculate_dphi)
624 {
625 this->dweight.resize (n_qp);
626 this->dphase.resize (n_qp);
627 for (unsigned int p=0; p<n_qp; p++)
628 {
629 this->dweight[p].zero();
630 this->dphase[p].zero();
631 }
632 }
633 }
634#endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
635
636 // Compute the values of the shape function derivatives
637 if (this->calculate_dphiref && Dim > 0)
638 {
639 std::vector<std::vector<OutputShape>> * comps[3]
640 { &this->dphidxi, &this->dphideta, &this->dphidzeta };
641 FE<Dim,T>::all_shape_derivs(elem, this->fe_type.order, qp, comps, this->_add_p_level_in_reinit);
642 }
643
644 switch (Dim)
645 {
646
647 //------------------------------------------------------------
648 // 0D
649 case 0:
650 {
651 break;
652 }
653
654 //------------------------------------------------------------
655 // 1D
656 case 1:
657 {
658#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
659 // Compute the value of shape function i Hessians at quadrature point p
660 if (this->calculate_d2phi)
661 for (unsigned int i=0; i<n_approx_shape_functions; i++)
662 for (unsigned int p=0; p<n_qp; p++)
663 this->d2phidxi2[i][p] = FE<Dim, T>::shape_second_deriv(
664 elem, this->fe_type.order, i, 0, qp[p], this->_add_p_level_in_reinit);
665#endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
666
667 break;
668 }
669
670
671
672 //------------------------------------------------------------
673 // 2D
674 case 2:
675 {
676#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
677 // Compute the value of shape function i Hessians at quadrature point p
678 if (this->calculate_d2phi)
679 for (unsigned int i=0; i<n_approx_shape_functions; i++)
680 for (unsigned int p=0; p<n_qp; p++)
681 {
682 this->d2phidxi2[i][p] = FE<Dim, T>::shape_second_deriv(
683 elem, this->fe_type.order, i, 0, qp[p], this->_add_p_level_in_reinit);
684 this->d2phidxideta[i][p] = FE<Dim, T>::shape_second_deriv(
685 elem, this->fe_type.order, i, 1, qp[p], this->_add_p_level_in_reinit);
686 this->d2phideta2[i][p] = FE<Dim, T>::shape_second_deriv(
687 elem, this->fe_type.order, i, 2, qp[p], this->_add_p_level_in_reinit);
688 }
689#endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
690
691
692 break;
693 }
694
695
696
697 //------------------------------------------------------------
698 // 3D
699 case 3:
700 {
701#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
702 // Compute the value of shape function i Hessians at quadrature point p
703 if (this->calculate_d2phi)
704 for (unsigned int i=0; i<n_approx_shape_functions; i++)
705 for (unsigned int p=0; p<n_qp; p++)
706 {
707 this->d2phidxi2[i][p] = FE<Dim, T>::shape_second_deriv(
708 elem, this->fe_type.order, i, 0, qp[p], this->_add_p_level_in_reinit);
709 this->d2phidxideta[i][p] = FE<Dim, T>::shape_second_deriv(
710 elem, this->fe_type.order, i, 1, qp[p], this->_add_p_level_in_reinit);
711 this->d2phideta2[i][p] = FE<Dim, T>::shape_second_deriv(
712 elem, this->fe_type.order, i, 2, qp[p], this->_add_p_level_in_reinit);
713 this->d2phidxidzeta[i][p] = FE<Dim, T>::shape_second_deriv(
714 elem, this->fe_type.order, i, 3, qp[p], this->_add_p_level_in_reinit);
715 this->d2phidetadzeta[i][p] = FE<Dim, T>::shape_second_deriv(
716 elem, this->fe_type.order, i, 4, qp[p], this->_add_p_level_in_reinit);
717 this->d2phidzeta2[i][p] = FE<Dim, T>::shape_second_deriv(
718 elem, this->fe_type.order, i, 5, qp[p], this->_add_p_level_in_reinit);
719 }
720#endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
721
722 break;
723 }
724
725
726 default:
727 libmesh_error_msg("Invalid dimension Dim = " << Dim);
728 }
729
730 if (this->calculate_dual)
731 this->init_dual_shape_functions(n_approx_shape_functions, n_qp);
732}
Order get_order() const
unsigned int _n_total_qp
The total number of quadrature points for the current configuration.
void init_dual_shape_functions(unsigned int n_shapes, unsigned int n_qp)
Init dual_phi and potentially dual_dphi, dual_d2phi.
Definition fe.C:411

◆ inverse_map() [1/4]

Point libMesh::FE< 2, SUBDIVISION >::inverse_map ( const Elem ,
const Point ,
const Real  ,
const bool   
)
inherited

Definition at line 937 of file fe_subdivision_2D.C.

941{
942 libmesh_not_implemented();
943}

◆ inverse_map() [2/4]

void libMesh::FE< 2, SUBDIVISION >::inverse_map ( const Elem ,
const std::vector< Point > &  ,
std::vector< Point > &  ,
Real  ,
bool   
)
inherited

Definition at line 946 of file fe_subdivision_2D.C.

951{
952 libmesh_not_implemented();
953}

◆ inverse_map() [3/4]

static Point libMesh::FE< Dim, T >::inverse_map ( const Elem elem,
const Point p,
const Real  tolerance = TOLERANCE,
const bool  secure = true 
)
inlinestaticinherited

Definition at line 534 of file fe.h.

538 {
539 // libmesh_deprecated(); // soon
540 return FEMap::inverse_map(Dim, elem, p, tolerance, secure, secure);
541 }

◆ inverse_map() [4/4]

static void libMesh::FE< Dim, T >::inverse_map ( const Elem elem,
const std::vector< Point > &  physical_points,
std::vector< Point > &  reference_points,
const Real  tolerance = TOLERANCE,
const bool  secure = true 
)
inlinestaticinherited

Definition at line 543 of file fe.h.

548 {
549 // libmesh_deprecated(); // soon
550 FEMap::inverse_map(Dim, elem, physical_points, reference_points,
551 tolerance, secure, secure);
552 }

◆ is_hierarchic() [1/86]

bool libMesh::FE< 0, BERNSTEIN >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 428 of file fe_bernstein.C.

428{ return false; }

◆ is_hierarchic() [2/86]

bool libMesh::FE< 1, BERNSTEIN >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 429 of file fe_bernstein.C.

429{ return false; }

◆ is_hierarchic() [3/86]

bool libMesh::FE< 2, BERNSTEIN >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 430 of file fe_bernstein.C.

430{ return false; }

◆ is_hierarchic() [4/86]

bool libMesh::FE< 3, BERNSTEIN >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 431 of file fe_bernstein.C.

431{ return false; }

◆ is_hierarchic() [5/86]

bool libMesh::FE< 0, CLOUGH >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 276 of file fe_clough.C.

276{ return false; } // FIXME - this will be changed

◆ is_hierarchic() [6/86]

bool libMesh::FE< 1, CLOUGH >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 277 of file fe_clough.C.

277{ return false; } // FIXME - this will be changed

◆ is_hierarchic() [7/86]

bool libMesh::FE< 2, CLOUGH >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 278 of file fe_clough.C.

278{ return false; } // FIXME - this will be changed

◆ is_hierarchic() [8/86]

bool libMesh::FE< 3, CLOUGH >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 279 of file fe_clough.C.

279{ return false; } // FIXME - this will be changed

◆ is_hierarchic() [9/86]

bool libMesh::FE< 0, HERMITE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 318 of file fe_hermite.C.

318{ return true; }

◆ is_hierarchic() [10/86]

bool libMesh::FE< 1, HERMITE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 319 of file fe_hermite.C.

319{ return true; }

◆ is_hierarchic() [11/86]

bool libMesh::FE< 2, HERMITE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 320 of file fe_hermite.C.

320{ return true; }

◆ is_hierarchic() [12/86]

bool libMesh::FE< 3, HERMITE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 321 of file fe_hermite.C.

321{ return true; }

◆ is_hierarchic() [13/86]

bool libMesh::FE< 0, HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 482 of file fe_hierarchic.C.

482{ return true; }

◆ is_hierarchic() [14/86]

bool libMesh::FE< 1, HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 483 of file fe_hierarchic.C.

483{ return true; }

◆ is_hierarchic() [15/86]

bool libMesh::FE< 2, HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 484 of file fe_hierarchic.C.

484{ return true; }

◆ is_hierarchic() [16/86]

bool libMesh::FE< 3, HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 485 of file fe_hierarchic.C.

485{ return true; }

◆ is_hierarchic() [17/86]

bool libMesh::FE< 0, HIERARCHIC_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 785 of file fe_hierarchic_vec.C.

785{ return true; }

◆ is_hierarchic() [18/86]

bool libMesh::FE< 1, HIERARCHIC_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 786 of file fe_hierarchic_vec.C.

786{ return true; }

◆ is_hierarchic() [19/86]

bool libMesh::FE< 2, HIERARCHIC_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 787 of file fe_hierarchic_vec.C.

787{ return true; }

◆ is_hierarchic() [20/86]

bool libMesh::FE< 3, HIERARCHIC_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 788 of file fe_hierarchic_vec.C.

788{ return true; }

◆ is_hierarchic() [21/86]

bool libMesh::FE< 0, L2_HIERARCHIC_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 789 of file fe_hierarchic_vec.C.

789{ return true; }

◆ is_hierarchic() [22/86]

bool libMesh::FE< 1, L2_HIERARCHIC_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 790 of file fe_hierarchic_vec.C.

790{ return true; }

◆ is_hierarchic() [23/86]

bool libMesh::FE< 2, L2_HIERARCHIC_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 791 of file fe_hierarchic_vec.C.

791{ return true; }

◆ is_hierarchic() [24/86]

bool libMesh::FE< 3, L2_HIERARCHIC_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 792 of file fe_hierarchic_vec.C.

792{ return true; }

◆ is_hierarchic() [25/86]

bool libMesh::FE< 0, L2_HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 194 of file fe_l2_hierarchic.C.

194{ return true; }

◆ is_hierarchic() [26/86]

bool libMesh::FE< 1, L2_HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 195 of file fe_l2_hierarchic.C.

195{ return true; }

◆ is_hierarchic() [27/86]

bool libMesh::FE< 2, L2_HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 196 of file fe_l2_hierarchic.C.

196{ return true; }

◆ is_hierarchic() [28/86]

bool libMesh::FE< 3, L2_HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 197 of file fe_l2_hierarchic.C.

197{ return true; }

◆ is_hierarchic() [29/86]

bool libMesh::FE< 0, L2_LAGRANGE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 262 of file fe_l2_lagrange.C.

262{ return false; }

◆ is_hierarchic() [30/86]

bool libMesh::FE< 1, L2_LAGRANGE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 263 of file fe_l2_lagrange.C.

263{ return false; }

◆ is_hierarchic() [31/86]

bool libMesh::FE< 2, L2_LAGRANGE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 264 of file fe_l2_lagrange.C.

264{ return false; }

◆ is_hierarchic() [32/86]

bool libMesh::FE< 3, L2_LAGRANGE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 265 of file fe_l2_lagrange.C.

265{ return false; }

◆ is_hierarchic() [33/86]

bool libMesh::FE< 0, LAGRANGE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1120 of file fe_lagrange.C.

1120{ return false; }

◆ is_hierarchic() [34/86]

bool libMesh::FE< 1, LAGRANGE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1121 of file fe_lagrange.C.

1121{ return false; }

◆ is_hierarchic() [35/86]

bool libMesh::FE< 2, LAGRANGE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1122 of file fe_lagrange.C.

1122{ return false; }

◆ is_hierarchic() [36/86]

bool libMesh::FE< 3, LAGRANGE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1123 of file fe_lagrange.C.

1123{ return false; }

◆ is_hierarchic() [37/86]

bool libMesh::FE< 0, LAGRANGE_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1354 of file fe_lagrange_vec.C.

1354{ return false; }

◆ is_hierarchic() [38/86]

bool libMesh::FE< 1, LAGRANGE_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1355 of file fe_lagrange_vec.C.

1355{ return false; }

◆ is_hierarchic() [39/86]

bool libMesh::FE< 2, LAGRANGE_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1356 of file fe_lagrange_vec.C.

1356{ return false; }

◆ is_hierarchic() [40/86]

bool libMesh::FE< 3, LAGRANGE_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1357 of file fe_lagrange_vec.C.

1357{ return false; }

◆ is_hierarchic() [41/86]

bool libMesh::FE< 0, L2_LAGRANGE_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1358 of file fe_lagrange_vec.C.

1358{ return false; }

◆ is_hierarchic() [42/86]

bool libMesh::FE< 1, L2_LAGRANGE_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1359 of file fe_lagrange_vec.C.

1359{ return false; }

◆ is_hierarchic() [43/86]

bool libMesh::FE< 2, L2_LAGRANGE_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1360 of file fe_lagrange_vec.C.

1360{ return false; }

◆ is_hierarchic() [44/86]

bool libMesh::FE< 3, L2_LAGRANGE_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1361 of file fe_lagrange_vec.C.

1361{ return false; }

◆ is_hierarchic() [45/86]

bool libMesh::FE< 0, MONOMIAL >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 428 of file fe_monomial.C.

428{ return true; }

◆ is_hierarchic() [46/86]

bool libMesh::FE< 1, MONOMIAL >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 429 of file fe_monomial.C.

429{ return true; }

◆ is_hierarchic() [47/86]

bool libMesh::FE< 2, MONOMIAL >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 430 of file fe_monomial.C.

430{ return true; }

◆ is_hierarchic() [48/86]

bool libMesh::FE< 3, MONOMIAL >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 431 of file fe_monomial.C.

431{ return true; }

◆ is_hierarchic() [49/86]

bool libMesh::FE< 0, MONOMIAL_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 723 of file fe_monomial_vec.C.

724{
725 return true;
726}

◆ is_hierarchic() [50/86]

bool libMesh::FE< 1, MONOMIAL_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 729 of file fe_monomial_vec.C.

730{
731 return true;
732}

◆ is_hierarchic() [51/86]

bool libMesh::FE< 2, MONOMIAL_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 735 of file fe_monomial_vec.C.

736{
737 return true;
738}

◆ is_hierarchic() [52/86]

bool libMesh::FE< 3, MONOMIAL_VEC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 741 of file fe_monomial_vec.C.

742{
743 return true;
744}

◆ is_hierarchic() [53/86]

bool libMesh::FE< 0, NEDELEC_ONE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 414 of file fe_nedelec_one.C.

414{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ is_hierarchic() [54/86]

bool libMesh::FE< 1, NEDELEC_ONE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 415 of file fe_nedelec_one.C.

415{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ is_hierarchic() [55/86]

bool libMesh::FE< 2, NEDELEC_ONE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 416 of file fe_nedelec_one.C.

416{ return false; }

◆ is_hierarchic() [56/86]

bool libMesh::FE< 3, NEDELEC_ONE >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 417 of file fe_nedelec_one.C.

417{ return false; }

◆ is_hierarchic() [57/86]

bool libMesh::FE< 0, RATIONAL_BERNSTEIN >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 166 of file fe_rational.C.

166{ return false; }

◆ is_hierarchic() [58/86]

bool libMesh::FE< 1, RATIONAL_BERNSTEIN >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 167 of file fe_rational.C.

167{ return false; }

◆ is_hierarchic() [59/86]

bool libMesh::FE< 2, RATIONAL_BERNSTEIN >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 168 of file fe_rational.C.

168{ return false; }

◆ is_hierarchic() [60/86]

bool libMesh::FE< 3, RATIONAL_BERNSTEIN >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 169 of file fe_rational.C.

169{ return false; }

◆ is_hierarchic() [61/86]

bool libMesh::FE< 0, RAVIART_THOMAS >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 468 of file fe_raviart.C.

468{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ is_hierarchic() [62/86]

bool libMesh::FE< 1, RAVIART_THOMAS >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 469 of file fe_raviart.C.

469{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ is_hierarchic() [63/86]

bool libMesh::FE< 2, RAVIART_THOMAS >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 470 of file fe_raviart.C.

470{ return false; }

◆ is_hierarchic() [64/86]

bool libMesh::FE< 3, RAVIART_THOMAS >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 471 of file fe_raviart.C.

471{ return false; }

◆ is_hierarchic() [65/86]

bool libMesh::FE< 0, L2_RAVIART_THOMAS >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 472 of file fe_raviart.C.

472{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ is_hierarchic() [66/86]

bool libMesh::FE< 1, L2_RAVIART_THOMAS >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 473 of file fe_raviart.C.

473{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ is_hierarchic() [67/86]

bool libMesh::FE< 2, L2_RAVIART_THOMAS >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 474 of file fe_raviart.C.

474{ return false; }

◆ is_hierarchic() [68/86]

bool libMesh::FE< 3, L2_RAVIART_THOMAS >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 475 of file fe_raviart.C.

475{ return false; }

◆ is_hierarchic() [69/86]

bool libMesh::FE< 0, SCALAR >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 101 of file fe_scalar.C.

101{ return false; }

◆ is_hierarchic() [70/86]

bool libMesh::FE< 1, SCALAR >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 102 of file fe_scalar.C.

102{ return false; }

◆ is_hierarchic() [71/86]

bool libMesh::FE< 2, SCALAR >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 103 of file fe_scalar.C.

103{ return false; }

◆ is_hierarchic() [72/86]

bool libMesh::FE< 3, SCALAR >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 104 of file fe_scalar.C.

104{ return false; }

◆ is_hierarchic() [73/86]

bool libMesh::FE< 0, SIDE_HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 333 of file fe_side_hierarchic.C.

333{ return true; }

◆ is_hierarchic() [74/86]

bool libMesh::FE< 1, SIDE_HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 334 of file fe_side_hierarchic.C.

334{ return true; }

◆ is_hierarchic() [75/86]

bool libMesh::FE< 2, SIDE_HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 335 of file fe_side_hierarchic.C.

335{ return true; }

◆ is_hierarchic() [76/86]

bool libMesh::FE< 3, SIDE_HIERARCHIC >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 336 of file fe_side_hierarchic.C.

336{ return true; }

◆ is_hierarchic() [77/86]

bool libMesh::FE< 2, SUBDIVISION >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 977 of file fe_subdivision_2D.C.

977{ return false; }

◆ is_hierarchic() [78/86]

bool libMesh::FE< 0, SZABAB >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1331 of file fe_szabab.C.

1331{ return true; }

◆ is_hierarchic() [79/86]

bool libMesh::FE< 1, SZABAB >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1332 of file fe_szabab.C.

1332{ return true; }

◆ is_hierarchic() [80/86]

bool libMesh::FE< 2, SZABAB >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1333 of file fe_szabab.C.

1333{ return true; }

◆ is_hierarchic() [81/86]

bool libMesh::FE< 3, SZABAB >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 1334 of file fe_szabab.C.

1334{ return true; }

◆ is_hierarchic() [82/86]

bool libMesh::FE< 0, XYZ >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 413 of file fe_xyz.C.

413{ return true; }

◆ is_hierarchic() [83/86]

bool libMesh::FE< 1, XYZ >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 414 of file fe_xyz.C.

414{ return true; }

◆ is_hierarchic() [84/86]

bool libMesh::FE< 2, XYZ >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 415 of file fe_xyz.C.

415{ return true; }

◆ is_hierarchic() [85/86]

bool libMesh::FE< 3, XYZ >::is_hierarchic ( ) const
virtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

Definition at line 416 of file fe_xyz.C.

416{ return true; }

◆ is_hierarchic() [86/86]

virtual bool libMesh::FE< Dim, T >::is_hierarchic ( ) const
overridevirtualinherited
Returns
true if the finite element's higher order shape functions are hierarchic

Implements libMesh::FEAbstract.

◆ map()

static Point libMesh::FE< Dim, T >::map ( const Elem elem,
const Point reference_point 
)
inlinestaticinherited

Definition at line 660 of file fe.h.

662 {
663 // libmesh_deprecated(); // soon
664 return FEMap::map(Dim, elem, reference_point);
665 }

◆ map_eta()

static Point libMesh::FE< Dim, T >::map_eta ( const Elem elem,
const Point reference_point 
)
inlinestaticinherited

Definition at line 674 of file fe.h.

676 {
677 // libmesh_deprecated(); // soon
678 return FEMap::map_deriv(Dim, elem, 1, reference_point);
679 }

◆ map_xi()

static Point libMesh::FE< Dim, T >::map_xi ( const Elem elem,
const Point reference_point 
)
inlinestaticinherited

Definition at line 667 of file fe.h.

669 {
670 // libmesh_deprecated(); // soon
671 return FEMap::map_deriv(Dim, elem, 0, reference_point);
672 }

◆ map_zeta()

static Point libMesh::FE< Dim, T >::map_zeta ( const Elem elem,
const Point reference_point 
)
inlinestaticinherited

Definition at line 681 of file fe.h.

683 {
684 // libmesh_deprecated(); // soon
685 return FEMap::map_deriv(Dim, elem, 2, reference_point);
686 }

◆ matches_cache()

bool libMesh::FE< Dim, T >::matches_cache ( const Elem elem)
protectedinherited

Check if the node locations, edge and face orientations held in the element cache match those of element elem.

Definition at line 809 of file fe.C.

175{
176 bool m = cached_nodes.size() == elem->n_nodes();
177 for (unsigned n = 1; m && n < elem->n_nodes(); n++)
178 m = (elem->point(n) - elem->point(0)).relative_fuzzy_equals(cached_nodes[n] - cached_nodes[0]);
179
180 if (FEInterface::orientation_dependent(T))
181 {
182 m &= cached_edges.size() == elem->n_edges();
183 for (unsigned n = 0; m && n < elem->n_edges(); n++)
184 m = elem->positive_edge_orientation(n) == cached_edges[n];
185
186 m &= cached_faces.size() == elem->n_faces();
187 for (unsigned n = 0; m && n < elem->n_faces(); n++)
188 m = elem->positive_face_orientation(n) == cached_faces[n];
189 }
190
191 return m;
192}

◆ n_dofs() [1/121]

unsigned int libMesh::FE< 0, SCALAR >::n_dofs ( const Elem ,
const Order  o 
)
inherited

Definition at line 65 of file fe_scalar.C.

65{ return o; }

◆ n_dofs() [2/121]

unsigned int libMesh::FE< 1, SCALAR >::n_dofs ( const Elem ,
const Order  o 
)
inherited

Definition at line 66 of file fe_scalar.C.

66{ return o; }

◆ n_dofs() [3/121]

unsigned int libMesh::FE< 2, SCALAR >::n_dofs ( const Elem ,
const Order  o 
)
inherited

Definition at line 67 of file fe_scalar.C.

67{ return o; }

◆ n_dofs() [4/121]

unsigned int libMesh::FE< 3, SCALAR >::n_dofs ( const Elem ,
const Order  o 
)
inherited

Definition at line 68 of file fe_scalar.C.

68{ return o; }

◆ n_dofs() [5/121]

unsigned int libMesh::FE< 0, NEDELEC_ONE >::n_dofs ( const Elem ,
const Order   
)
inherited

Definition at line 382 of file fe_nedelec_one.C.

382{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs() [6/121]

unsigned int libMesh::FE< 1, NEDELEC_ONE >::n_dofs ( const Elem ,
const Order   
)
inherited

Definition at line 383 of file fe_nedelec_one.C.

383{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs() [7/121]

unsigned int libMesh::FE< 0, RAVIART_THOMAS >::n_dofs ( const Elem ,
const Order   
)
inherited

Definition at line 399 of file fe_raviart.C.

399{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs() [8/121]

unsigned int libMesh::FE< 1, RAVIART_THOMAS >::n_dofs ( const Elem ,
const Order   
)
inherited

Definition at line 400 of file fe_raviart.C.

400{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs() [9/121]

unsigned int libMesh::FE< 0, L2_RAVIART_THOMAS >::n_dofs ( const Elem ,
const Order   
)
inherited

Definition at line 409 of file fe_raviart.C.

409{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs() [10/121]

unsigned int libMesh::FE< 1, L2_RAVIART_THOMAS >::n_dofs ( const Elem ,
const Order   
)
inherited

Definition at line 410 of file fe_raviart.C.

410{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs() [11/121]

unsigned int libMesh::FE< 2, SUBDIVISION >::n_dofs ( const Elem ,
const Order   
)
inherited

Definition at line 959 of file fe_subdivision_2D.C.

959{ libmesh_not_implemented(); return 0; }

◆ n_dofs() [12/121]

static unsigned int libMesh::FE< Dim, T >::n_dofs ( const Elem e,
const Order  o 
)
staticinherited
Returns
The number of shape functions associated with this finite element.

On a p-refined element, o should be the total order of the element.

e should only be a null pointer if using a FE family like SCALAR that has degrees of freedom independent of any element.

◆ n_dofs() [13/121]

unsigned int libMesh::FE< 0, L2_HIERARCHIC_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 747 of file fe_hierarchic_vec.C.

747{ return FE<0,L2_HIERARCHIC>::n_dofs(e,o); }

◆ n_dofs() [14/121]

unsigned int libMesh::FE< 1, L2_HIERARCHIC_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 748 of file fe_hierarchic_vec.C.

748{ return FE<1,L2_HIERARCHIC>::n_dofs(e,o); }

◆ n_dofs() [15/121]

unsigned int libMesh::FE< 2, L2_HIERARCHIC_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 749 of file fe_hierarchic_vec.C.

749{ return 2*FE<2,L2_HIERARCHIC>::n_dofs(e,o); }

◆ n_dofs() [16/121]

unsigned int libMesh::FE< 3, L2_HIERARCHIC_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 750 of file fe_hierarchic_vec.C.

750{ return 3*FE<3,L2_HIERARCHIC>::n_dofs(e,o); }

◆ n_dofs() [17/121]

unsigned int libMesh::FE< 0, L2_HIERARCHIC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 159 of file fe_l2_hierarchic.C.

159{ return l2_hierarchic_n_dofs(e, o); }

◆ n_dofs() [18/121]

unsigned int libMesh::FE< 1, L2_HIERARCHIC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 160 of file fe_l2_hierarchic.C.

160{ return l2_hierarchic_n_dofs(e, o); }

◆ n_dofs() [19/121]

unsigned int libMesh::FE< 2, L2_HIERARCHIC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 161 of file fe_l2_hierarchic.C.

161{ return l2_hierarchic_n_dofs(e, o); }

◆ n_dofs() [20/121]

unsigned int libMesh::FE< 3, L2_HIERARCHIC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 162 of file fe_l2_hierarchic.C.

162{ return l2_hierarchic_n_dofs(e, o); }

◆ n_dofs() [21/121]

unsigned int libMesh::FE< 0, L2_LAGRANGE >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 228 of file fe_l2_lagrange.C.

228{ return l2_lagrange_n_dofs(e, o); }

◆ n_dofs() [22/121]

unsigned int libMesh::FE< 1, L2_LAGRANGE >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 229 of file fe_l2_lagrange.C.

229{ return l2_lagrange_n_dofs(e, o); }

◆ n_dofs() [23/121]

unsigned int libMesh::FE< 2, L2_LAGRANGE >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 230 of file fe_l2_lagrange.C.

230{ return l2_lagrange_n_dofs(e, o); }

◆ n_dofs() [24/121]

unsigned int libMesh::FE< 3, L2_LAGRANGE >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 231 of file fe_l2_lagrange.C.

231{ return l2_lagrange_n_dofs(e, o); }

◆ n_dofs() [25/121]

unsigned int libMesh::FE< 0, LAGRANGE >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1082 of file fe_lagrange.C.

1082{ return lagrange_n_dofs(e->type(), e, o); }

◆ n_dofs() [26/121]

unsigned int libMesh::FE< 1, LAGRANGE >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1083 of file fe_lagrange.C.

1083{ return lagrange_n_dofs(e->type(), e, o); }

◆ n_dofs() [27/121]

unsigned int libMesh::FE< 2, LAGRANGE >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1084 of file fe_lagrange.C.

1084{ return lagrange_n_dofs(e->type(), e, o); }

◆ n_dofs() [28/121]

unsigned int libMesh::FE< 3, LAGRANGE >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1085 of file fe_lagrange.C.

1085{ return lagrange_n_dofs(e->type(), e, o); }

◆ n_dofs() [29/121]

unsigned int libMesh::FE< 0, LAGRANGE_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1279 of file fe_lagrange_vec.C.

1279{ return FE<0,LAGRANGE>::n_dofs(e,o); }

◆ n_dofs() [30/121]

unsigned int libMesh::FE< 1, LAGRANGE_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1280 of file fe_lagrange_vec.C.

1280{ return FE<1,LAGRANGE>::n_dofs(e,o); }

◆ n_dofs() [31/121]

unsigned int libMesh::FE< 2, LAGRANGE_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1281 of file fe_lagrange_vec.C.

1281{ return 2*FE<2,LAGRANGE>::n_dofs(e,o); }

◆ n_dofs() [32/121]

unsigned int libMesh::FE< 3, LAGRANGE_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1282 of file fe_lagrange_vec.C.

1282{ return 3*FE<3,LAGRANGE>::n_dofs(e,o); }

◆ n_dofs() [33/121]

unsigned int libMesh::FE< 0, L2_LAGRANGE_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1289 of file fe_lagrange_vec.C.

1289{ return FE<0,L2_LAGRANGE>::n_dofs(e,o); }

◆ n_dofs() [34/121]

unsigned int libMesh::FE< 1, L2_LAGRANGE_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1290 of file fe_lagrange_vec.C.

1290{ return FE<1,L2_LAGRANGE>::n_dofs(e,o); }

◆ n_dofs() [35/121]

unsigned int libMesh::FE< 2, L2_LAGRANGE_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1291 of file fe_lagrange_vec.C.

1291{ return 2*FE<2,L2_LAGRANGE>::n_dofs(e,o); }

◆ n_dofs() [36/121]

unsigned int libMesh::FE< 3, L2_LAGRANGE_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1292 of file fe_lagrange_vec.C.

1292{ return 3*FE<3,L2_LAGRANGE>::n_dofs(e,o); }

◆ n_dofs() [37/121]

unsigned int libMesh::FE< 0, MONOMIAL >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 391 of file fe_monomial.C.

391{ return monomial_n_dofs(e, o); }
unsigned int monomial_n_dofs(const ElemType t, const Order o)
Helper functions for Discontinuous-Pn type basis functions.
Definition fe_monomial.C:37

◆ n_dofs() [38/121]

unsigned int libMesh::FE< 1, MONOMIAL >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 392 of file fe_monomial.C.

392{ return monomial_n_dofs(e, o); }

◆ n_dofs() [39/121]

unsigned int libMesh::FE< 2, MONOMIAL >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 393 of file fe_monomial.C.

393{ return monomial_n_dofs(e, o); }

◆ n_dofs() [40/121]

unsigned int libMesh::FE< 3, MONOMIAL >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 394 of file fe_monomial.C.

394{ return monomial_n_dofs(e, o); }

◆ n_dofs() [41/121]

unsigned int libMesh::FE< 0, MONOMIAL_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 669 of file fe_monomial_vec.C.

669{ return FE<0, MONOMIAL>::n_dofs(e, o); }

◆ n_dofs() [42/121]

unsigned int libMesh::FE< 1, MONOMIAL_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 670 of file fe_monomial_vec.C.

670{ return FE<1, MONOMIAL>::n_dofs(e, o); }

◆ n_dofs() [43/121]

unsigned int libMesh::FE< 2, MONOMIAL_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 671 of file fe_monomial_vec.C.

671{ return 2 * FE<2, MONOMIAL>::n_dofs(e, o); }

◆ n_dofs() [44/121]

unsigned int libMesh::FE< 3, MONOMIAL_VEC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 672 of file fe_monomial_vec.C.

672{ return 3 * FE<3, MONOMIAL>::n_dofs(e, o); }

◆ n_dofs() [45/121]

unsigned int libMesh::FE< 2, NEDELEC_ONE >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 384 of file fe_nedelec_one.C.

384{ return nedelec_one_n_dofs(e, o); }

◆ n_dofs() [46/121]

unsigned int libMesh::FE< 3, NEDELEC_ONE >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 385 of file fe_nedelec_one.C.

385{ return nedelec_one_n_dofs(e, o); }

◆ n_dofs() [47/121]

unsigned int libMesh::FE< 0, RATIONAL_BERNSTEIN >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 132 of file fe_rational.C.

◆ n_dofs() [48/121]

unsigned int libMesh::FE< 1, RATIONAL_BERNSTEIN >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 133 of file fe_rational.C.

◆ n_dofs() [49/121]

unsigned int libMesh::FE< 2, RATIONAL_BERNSTEIN >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 134 of file fe_rational.C.

◆ n_dofs() [50/121]

unsigned int libMesh::FE< 3, RATIONAL_BERNSTEIN >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 135 of file fe_rational.C.

◆ n_dofs() [51/121]

unsigned int libMesh::FE< 2, RAVIART_THOMAS >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 401 of file fe_raviart.C.

401{ return raviart_thomas_n_dofs(e, o); }

◆ n_dofs() [52/121]

unsigned int libMesh::FE< 3, RAVIART_THOMAS >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 402 of file fe_raviart.C.

402{ return raviart_thomas_n_dofs(e, o); }

◆ n_dofs() [53/121]

unsigned int libMesh::FE< 2, L2_RAVIART_THOMAS >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 411 of file fe_raviart.C.

411{ return raviart_thomas_n_dofs(e, o); }

◆ n_dofs() [54/121]

unsigned int libMesh::FE< 3, L2_RAVIART_THOMAS >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 412 of file fe_raviart.C.

412{ return raviart_thomas_n_dofs(e, o); }

◆ n_dofs() [55/121]

unsigned int libMesh::FE< 0, SIDE_HIERARCHIC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 299 of file fe_side_hierarchic.C.

299{ return side_hierarchic_n_dofs(e, o); }

◆ n_dofs() [56/121]

unsigned int libMesh::FE< 1, SIDE_HIERARCHIC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 300 of file fe_side_hierarchic.C.

300{ return side_hierarchic_n_dofs(e, o); }

◆ n_dofs() [57/121]

unsigned int libMesh::FE< 2, SIDE_HIERARCHIC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 301 of file fe_side_hierarchic.C.

301{ return side_hierarchic_n_dofs(e, o); }

◆ n_dofs() [58/121]

unsigned int libMesh::FE< 3, SIDE_HIERARCHIC >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 302 of file fe_side_hierarchic.C.

302{ return side_hierarchic_n_dofs(e, o); }

◆ n_dofs() [59/121]

unsigned int libMesh::FE< 0, SZABAB >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1297 of file fe_szabab.C.

1297{ return szabab_n_dofs(e, o); }

◆ n_dofs() [60/121]

unsigned int libMesh::FE< 1, SZABAB >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1298 of file fe_szabab.C.

1298{ return szabab_n_dofs(e, o); }

◆ n_dofs() [61/121]

unsigned int libMesh::FE< 2, SZABAB >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1299 of file fe_szabab.C.

1299{ return szabab_n_dofs(e, o); }

◆ n_dofs() [62/121]

unsigned int libMesh::FE< 3, SZABAB >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 1300 of file fe_szabab.C.

1300{ return szabab_n_dofs(e, o); }

◆ n_dofs() [63/121]

unsigned int libMesh::FE< 0, XYZ >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 377 of file fe_xyz.C.

377{ return monomial_n_dofs(e, o); }

◆ n_dofs() [64/121]

unsigned int libMesh::FE< 1, XYZ >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 378 of file fe_xyz.C.

378{ return monomial_n_dofs(e, o); }

◆ n_dofs() [65/121]

unsigned int libMesh::FE< 2, XYZ >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 379 of file fe_xyz.C.

379{ return monomial_n_dofs(e, o); }

◆ n_dofs() [66/121]

unsigned int libMesh::FE< 3, XYZ >::n_dofs ( const Elem e,
const Order  o 
)
inherited

Definition at line 380 of file fe_xyz.C.

380{ return monomial_n_dofs(e, o); }

◆ n_dofs() [67/121]

static unsigned int libMesh::FE< Dim, T >::n_dofs ( const ElemType  t,
const Order  o 
)
staticinherited
Returns
The number of shape functions associated with this finite element.

On a p-refined element, o should be the total order of the element.

This method does not support all finite element types; e.g. for an arbitrary polygon or polyhedron type the number of shape functions may depend on an individual element and not just its type.

◆ n_dofs() [68/121]

unsigned int libMesh::FE< 1, L2_HIERARCHIC_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 743 of file fe_hierarchic_vec.C.

743{ return FE<1,L2_HIERARCHIC>::n_dofs(t,o); }

◆ n_dofs() [69/121]

unsigned int libMesh::FE< 2, L2_HIERARCHIC_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 744 of file fe_hierarchic_vec.C.

744{ return 2*FE<2,L2_HIERARCHIC>::n_dofs(t,o); }

◆ n_dofs() [70/121]

unsigned int libMesh::FE< 3, L2_HIERARCHIC_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 745 of file fe_hierarchic_vec.C.

745{ return 3*FE<3,L2_HIERARCHIC>::n_dofs(t,o); }

◆ n_dofs() [71/121]

unsigned int libMesh::FE< 1, L2_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 155 of file fe_l2_hierarchic.C.

155{ return l2_hierarchic_n_dofs(t, o); }

◆ n_dofs() [72/121]

unsigned int libMesh::FE< 2, L2_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 156 of file fe_l2_hierarchic.C.

156{ return l2_hierarchic_n_dofs(t, o); }

◆ n_dofs() [73/121]

unsigned int libMesh::FE< 3, L2_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 157 of file fe_l2_hierarchic.C.

157{ return l2_hierarchic_n_dofs(t, o); }

◆ n_dofs() [74/121]

unsigned int libMesh::FE< 1, L2_LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 224 of file fe_l2_lagrange.C.

224{ return l2_lagrange_n_dofs(t, o); }

◆ n_dofs() [75/121]

unsigned int libMesh::FE< 2, L2_LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 225 of file fe_l2_lagrange.C.

225{ return l2_lagrange_n_dofs(t, o); }

◆ n_dofs() [76/121]

unsigned int libMesh::FE< 3, L2_LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 226 of file fe_l2_lagrange.C.

226{ return l2_lagrange_n_dofs(t, o); }

◆ n_dofs() [77/121]

unsigned int libMesh::FE< 1, LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1078 of file fe_lagrange.C.

1078{ return lagrange_n_dofs(t, nullptr, o); }

◆ n_dofs() [78/121]

unsigned int libMesh::FE< 2, LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1079 of file fe_lagrange.C.

1079{ return lagrange_n_dofs(t, nullptr, o); }

◆ n_dofs() [79/121]

unsigned int libMesh::FE< 3, LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1080 of file fe_lagrange.C.

1080{ return lagrange_n_dofs(t, nullptr, o); }

◆ n_dofs() [80/121]

unsigned int libMesh::FE< 0, LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1274 of file fe_lagrange_vec.C.

1274{ return FE<0,LAGRANGE>::n_dofs(t,o); }

◆ n_dofs() [81/121]

unsigned int libMesh::FE< 1, LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1275 of file fe_lagrange_vec.C.

1275{ return FE<1,LAGRANGE>::n_dofs(t,o); }

◆ n_dofs() [82/121]

unsigned int libMesh::FE< 2, LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1276 of file fe_lagrange_vec.C.

1276{ return 2*FE<2,LAGRANGE>::n_dofs(t,o); }

◆ n_dofs() [83/121]

unsigned int libMesh::FE< 3, LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1277 of file fe_lagrange_vec.C.

1277{ return 3*FE<3,LAGRANGE>::n_dofs(t,o); }

◆ n_dofs() [84/121]

unsigned int libMesh::FE< 0, L2_LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1284 of file fe_lagrange_vec.C.

1284{ return FE<0,L2_LAGRANGE>::n_dofs(t,o); }

◆ n_dofs() [85/121]

unsigned int libMesh::FE< 1, L2_LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1285 of file fe_lagrange_vec.C.

1285{ return FE<1,L2_LAGRANGE>::n_dofs(t,o); }

◆ n_dofs() [86/121]

unsigned int libMesh::FE< 2, L2_LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1286 of file fe_lagrange_vec.C.

1286{ return 2*FE<2,L2_LAGRANGE>::n_dofs(t,o); }

◆ n_dofs() [87/121]

unsigned int libMesh::FE< 3, L2_LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1287 of file fe_lagrange_vec.C.

1287{ return 3*FE<3,L2_LAGRANGE>::n_dofs(t,o); }

◆ n_dofs() [88/121]

unsigned int libMesh::FE< 1, MONOMIAL >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 387 of file fe_monomial.C.

387{ return monomial_n_dofs(t, o); }

◆ n_dofs() [89/121]

unsigned int libMesh::FE< 2, MONOMIAL >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 388 of file fe_monomial.C.

388{ return monomial_n_dofs(t, o); }

◆ n_dofs() [90/121]

unsigned int libMesh::FE< 3, MONOMIAL >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 389 of file fe_monomial.C.

389{ return monomial_n_dofs(t, o); }

◆ n_dofs() [91/121]

unsigned int libMesh::FE< 0, MONOMIAL_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 664 of file fe_monomial_vec.C.

664{ return FE<0, MONOMIAL>::n_dofs(t, o); }

◆ n_dofs() [92/121]

unsigned int libMesh::FE< 1, MONOMIAL_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 665 of file fe_monomial_vec.C.

665{ return FE<1, MONOMIAL>::n_dofs(t, o); }

◆ n_dofs() [93/121]

unsigned int libMesh::FE< 2, MONOMIAL_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 666 of file fe_monomial_vec.C.

666{ return 2 * FE<2, MONOMIAL>::n_dofs(t, o); }

◆ n_dofs() [94/121]

unsigned int libMesh::FE< 3, MONOMIAL_VEC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 667 of file fe_monomial_vec.C.

667{ return 3 * FE<3, MONOMIAL>::n_dofs(t, o); }

◆ n_dofs() [95/121]

unsigned int libMesh::FE< 2, NEDELEC_ONE >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 379 of file fe_nedelec_one.C.

379{ return nedelec_one_n_dofs(t, o); }

◆ n_dofs() [96/121]

unsigned int libMesh::FE< 3, NEDELEC_ONE >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 380 of file fe_nedelec_one.C.

380{ return nedelec_one_n_dofs(t, o); }

◆ n_dofs() [97/121]

unsigned int libMesh::FE< 1, RATIONAL_BERNSTEIN >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 128 of file fe_rational.C.

◆ n_dofs() [98/121]

unsigned int libMesh::FE< 2, RATIONAL_BERNSTEIN >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 129 of file fe_rational.C.

◆ n_dofs() [99/121]

unsigned int libMesh::FE< 3, RATIONAL_BERNSTEIN >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 130 of file fe_rational.C.

◆ n_dofs() [100/121]

unsigned int libMesh::FE< 2, RAVIART_THOMAS >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 396 of file fe_raviart.C.

396{ return raviart_thomas_n_dofs(t, o); }

◆ n_dofs() [101/121]

unsigned int libMesh::FE< 3, RAVIART_THOMAS >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 397 of file fe_raviart.C.

397{ return raviart_thomas_n_dofs(t, o); }

◆ n_dofs() [102/121]

unsigned int libMesh::FE< 2, L2_RAVIART_THOMAS >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 406 of file fe_raviart.C.

406{ return raviart_thomas_n_dofs(t, o); }

◆ n_dofs() [103/121]

unsigned int libMesh::FE< 3, L2_RAVIART_THOMAS >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 407 of file fe_raviart.C.

407{ return raviart_thomas_n_dofs(t, o); }

◆ n_dofs() [104/121]

unsigned int libMesh::FE< 0, SIDE_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 294 of file fe_side_hierarchic.C.

294{ return side_hierarchic_n_dofs(t, o); }

◆ n_dofs() [105/121]

unsigned int libMesh::FE< 1, SIDE_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 295 of file fe_side_hierarchic.C.

295{ return side_hierarchic_n_dofs(t, o); }

◆ n_dofs() [106/121]

unsigned int libMesh::FE< 2, SIDE_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 296 of file fe_side_hierarchic.C.

296{ return side_hierarchic_n_dofs(t, o); }

◆ n_dofs() [107/121]

unsigned int libMesh::FE< 3, SIDE_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 297 of file fe_side_hierarchic.C.

297{ return side_hierarchic_n_dofs(t, o); }

◆ n_dofs() [108/121]

unsigned int libMesh::FE< 1, SZABAB >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1293 of file fe_szabab.C.

1293{ return szabab_n_dofs(t, o); }

◆ n_dofs() [109/121]

unsigned int libMesh::FE< 2, SZABAB >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1294 of file fe_szabab.C.

1294{ return szabab_n_dofs(t, o); }

◆ n_dofs() [110/121]

unsigned int libMesh::FE< 3, SZABAB >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1295 of file fe_szabab.C.

1295{ return szabab_n_dofs(t, o); }

◆ n_dofs() [111/121]

unsigned int libMesh::FE< 1, XYZ >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 373 of file fe_xyz.C.

373{ return monomial_n_dofs(t, o); }

◆ n_dofs() [112/121]

unsigned int libMesh::FE< 2, XYZ >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 374 of file fe_xyz.C.

374{ return monomial_n_dofs(t, o); }

◆ n_dofs() [113/121]

unsigned int libMesh::FE< 3, XYZ >::n_dofs ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 375 of file fe_xyz.C.

375{ return monomial_n_dofs(t, o); }

◆ n_dofs() [114/121]

unsigned int libMesh::FE< 1, SCALAR >::n_dofs ( const ElemType  ,
const Order  o 
)
inherited

Definition at line 61 of file fe_scalar.C.

61{ return o; }

◆ n_dofs() [115/121]

unsigned int libMesh::FE< 2, SCALAR >::n_dofs ( const ElemType  ,
const Order  o 
)
inherited

Definition at line 62 of file fe_scalar.C.

62{ return o; }

◆ n_dofs() [116/121]

unsigned int libMesh::FE< 3, SCALAR >::n_dofs ( const ElemType  ,
const Order  o 
)
inherited

Definition at line 63 of file fe_scalar.C.

63{ return o; }

◆ n_dofs() [117/121]

unsigned int libMesh::FE< 1, NEDELEC_ONE >::n_dofs ( const ElemType  ,
const Order   
)
inherited

Definition at line 378 of file fe_nedelec_one.C.

378{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs() [118/121]

unsigned int libMesh::FE< 1, RAVIART_THOMAS >::n_dofs ( const ElemType  ,
const Order   
)
inherited

Definition at line 395 of file fe_raviart.C.

395{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs() [119/121]

unsigned int libMesh::FE< 0, L2_RAVIART_THOMAS >::n_dofs ( const ElemType  ,
const Order   
)
inherited

Definition at line 404 of file fe_raviart.C.

404{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs() [120/121]

unsigned int libMesh::FE< 1, L2_RAVIART_THOMAS >::n_dofs ( const ElemType  ,
const Order   
)
inherited

Definition at line 405 of file fe_raviart.C.

405{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs() [121/121]

unsigned int libMesh::FE< 2, SUBDIVISION >::n_dofs ( const ElemType  ,
const Order   
)
inherited

Definition at line 958 of file fe_subdivision_2D.C.

958{ libmesh_not_implemented(); return 0; }

◆ n_dofs_at_node() [1/132]

unsigned int libMesh::FE< 0, L2_HIERARCHIC_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 757 of file fe_hierarchic_vec.C.

757{ return 0; }

◆ n_dofs_at_node() [2/132]

unsigned int libMesh::FE< 1, L2_HIERARCHIC_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 758 of file fe_hierarchic_vec.C.

758{ return 0; }

◆ n_dofs_at_node() [3/132]

unsigned int libMesh::FE< 2, L2_HIERARCHIC_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 759 of file fe_hierarchic_vec.C.

759{ return 0; }

◆ n_dofs_at_node() [4/132]

unsigned int libMesh::FE< 3, L2_HIERARCHIC_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 760 of file fe_hierarchic_vec.C.

760{ return 0; }

◆ n_dofs_at_node() [5/132]

unsigned int libMesh::FE< 0, L2_HIERARCHIC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 171 of file fe_l2_hierarchic.C.

171{ return 0; }

◆ n_dofs_at_node() [6/132]

unsigned int libMesh::FE< 1, L2_HIERARCHIC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 172 of file fe_l2_hierarchic.C.

172{ return 0; }

◆ n_dofs_at_node() [7/132]

unsigned int libMesh::FE< 2, L2_HIERARCHIC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 173 of file fe_l2_hierarchic.C.

173{ return 0; }

◆ n_dofs_at_node() [8/132]

unsigned int libMesh::FE< 3, L2_HIERARCHIC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 174 of file fe_l2_hierarchic.C.

174{ return 0; }

◆ n_dofs_at_node() [9/132]

unsigned int libMesh::FE< 0, L2_LAGRANGE >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 239 of file fe_l2_lagrange.C.

239{ return 0; }

◆ n_dofs_at_node() [10/132]

unsigned int libMesh::FE< 1, L2_LAGRANGE >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 240 of file fe_l2_lagrange.C.

240{ return 0; }

◆ n_dofs_at_node() [11/132]

unsigned int libMesh::FE< 2, L2_LAGRANGE >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 241 of file fe_l2_lagrange.C.

241{ return 0; }

◆ n_dofs_at_node() [12/132]

unsigned int libMesh::FE< 3, L2_LAGRANGE >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 242 of file fe_l2_lagrange.C.

242{ return 0; }

◆ n_dofs_at_node() [13/132]

unsigned int libMesh::FE< 0, L2_LAGRANGE_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 1312 of file fe_lagrange_vec.C.

1312{ return 0; }

◆ n_dofs_at_node() [14/132]

unsigned int libMesh::FE< 1, L2_LAGRANGE_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 1313 of file fe_lagrange_vec.C.

1313{ return 0; }

◆ n_dofs_at_node() [15/132]

unsigned int libMesh::FE< 2, L2_LAGRANGE_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 1314 of file fe_lagrange_vec.C.

1314{ return 0; }

◆ n_dofs_at_node() [16/132]

unsigned int libMesh::FE< 3, L2_LAGRANGE_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 1315 of file fe_lagrange_vec.C.

1315{ return 0; }

◆ n_dofs_at_node() [17/132]

unsigned int libMesh::FE< 0, MONOMIAL >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 403 of file fe_monomial.C.

403{ return 0; }

◆ n_dofs_at_node() [18/132]

unsigned int libMesh::FE< 1, MONOMIAL >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 404 of file fe_monomial.C.

404{ return 0; }

◆ n_dofs_at_node() [19/132]

unsigned int libMesh::FE< 2, MONOMIAL >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 405 of file fe_monomial.C.

405{ return 0; }

◆ n_dofs_at_node() [20/132]

unsigned int libMesh::FE< 3, MONOMIAL >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 406 of file fe_monomial.C.

406{ return 0; }

◆ n_dofs_at_node() [21/132]

unsigned int libMesh::FE< 0, MONOMIAL_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 679 of file fe_monomial_vec.C.

679{ return 0; }

◆ n_dofs_at_node() [22/132]

unsigned int libMesh::FE< 1, MONOMIAL_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 680 of file fe_monomial_vec.C.

680{ return 0; }

◆ n_dofs_at_node() [23/132]

unsigned int libMesh::FE< 2, MONOMIAL_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 681 of file fe_monomial_vec.C.

681{ return 0; }

◆ n_dofs_at_node() [24/132]

unsigned int libMesh::FE< 3, MONOMIAL_VEC >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 682 of file fe_monomial_vec.C.

682{ return 0; }

◆ n_dofs_at_node() [25/132]

unsigned int libMesh::FE< 0, NEDELEC_ONE >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 392 of file fe_nedelec_one.C.

392{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [26/132]

unsigned int libMesh::FE< 1, NEDELEC_ONE >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 393 of file fe_nedelec_one.C.

393{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [27/132]

unsigned int libMesh::FE< 0, RAVIART_THOMAS >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 419 of file fe_raviart.C.

419{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [28/132]

unsigned int libMesh::FE< 1, RAVIART_THOMAS >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 420 of file fe_raviart.C.

420{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [29/132]

unsigned int libMesh::FE< 0, L2_RAVIART_THOMAS >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 429 of file fe_raviart.C.

429{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [30/132]

unsigned int libMesh::FE< 1, L2_RAVIART_THOMAS >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 430 of file fe_raviart.C.

430{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [31/132]

unsigned int libMesh::FE< 2, L2_RAVIART_THOMAS >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 431 of file fe_raviart.C.

431{ return 0; }

◆ n_dofs_at_node() [32/132]

unsigned int libMesh::FE< 3, L2_RAVIART_THOMAS >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 432 of file fe_raviart.C.

432{ return 0; }

◆ n_dofs_at_node() [33/132]

unsigned int libMesh::FE< 0, SCALAR >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 77 of file fe_scalar.C.

77{ return 0; }

◆ n_dofs_at_node() [34/132]

unsigned int libMesh::FE< 1, SCALAR >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 78 of file fe_scalar.C.

78{ return 0; }

◆ n_dofs_at_node() [35/132]

unsigned int libMesh::FE< 2, SCALAR >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 79 of file fe_scalar.C.

79{ return 0; }

◆ n_dofs_at_node() [36/132]

unsigned int libMesh::FE< 3, SCALAR >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 80 of file fe_scalar.C.

80{ return 0; }

◆ n_dofs_at_node() [37/132]

unsigned int libMesh::FE< 2, SUBDIVISION >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 963 of file fe_subdivision_2D.C.

963{ return 1; }

◆ n_dofs_at_node() [38/132]

unsigned int libMesh::FE< 0, XYZ >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 389 of file fe_xyz.C.

389{ return 0; }

◆ n_dofs_at_node() [39/132]

unsigned int libMesh::FE< 1, XYZ >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 390 of file fe_xyz.C.

390{ return 0; }

◆ n_dofs_at_node() [40/132]

unsigned int libMesh::FE< 2, XYZ >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 391 of file fe_xyz.C.

391{ return 0; }

◆ n_dofs_at_node() [41/132]

unsigned int libMesh::FE< 3, XYZ >::n_dofs_at_node ( const Elem ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 392 of file fe_xyz.C.

392{ return 0; }

◆ n_dofs_at_node() [42/132]

static unsigned int libMesh::FE< Dim, T >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
staticinherited
Returns
The number of dofs at node n for a finite element of type t and order o.

On a p-refined element, o should be the total order of the element.

◆ n_dofs_at_node() [43/132]

unsigned int libMesh::FE< 0, LAGRANGE >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1095 of file fe_lagrange.C.

1095{ return lagrange_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [44/132]

unsigned int libMesh::FE< 1, LAGRANGE >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1096 of file fe_lagrange.C.

1096{ return lagrange_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [45/132]

unsigned int libMesh::FE< 2, LAGRANGE >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1097 of file fe_lagrange.C.

1097{ return lagrange_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [46/132]

unsigned int libMesh::FE< 3, LAGRANGE >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1098 of file fe_lagrange.C.

1098{ return lagrange_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [47/132]

unsigned int libMesh::FE< 0, LAGRANGE_VEC >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1302 of file fe_lagrange_vec.C.

1302{ return FE<0,LAGRANGE>::n_dofs_at_node(e,o,n); }

◆ n_dofs_at_node() [48/132]

unsigned int libMesh::FE< 1, LAGRANGE_VEC >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1303 of file fe_lagrange_vec.C.

1303{ return FE<1,LAGRANGE>::n_dofs_at_node(e,o,n); }

◆ n_dofs_at_node() [49/132]

unsigned int libMesh::FE< 2, LAGRANGE_VEC >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1304 of file fe_lagrange_vec.C.

1304{ return 2*FE<2,LAGRANGE>::n_dofs_at_node(e,o,n); }

◆ n_dofs_at_node() [50/132]

unsigned int libMesh::FE< 3, LAGRANGE_VEC >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1305 of file fe_lagrange_vec.C.

1305{ return 3*FE<3,LAGRANGE>::n_dofs_at_node(e,o,n); }

◆ n_dofs_at_node() [51/132]

unsigned int libMesh::FE< 2, NEDELEC_ONE >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 394 of file fe_nedelec_one.C.

394{ return nedelec_one_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [52/132]

unsigned int libMesh::FE< 3, NEDELEC_ONE >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 395 of file fe_nedelec_one.C.

395{ return nedelec_one_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [53/132]

unsigned int libMesh::FE< 0, RATIONAL_BERNSTEIN >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 143 of file fe_rational.C.

◆ n_dofs_at_node() [54/132]

unsigned int libMesh::FE< 1, RATIONAL_BERNSTEIN >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 144 of file fe_rational.C.

◆ n_dofs_at_node() [55/132]

unsigned int libMesh::FE< 2, RATIONAL_BERNSTEIN >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 145 of file fe_rational.C.

◆ n_dofs_at_node() [56/132]

unsigned int libMesh::FE< 3, RATIONAL_BERNSTEIN >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 146 of file fe_rational.C.

◆ n_dofs_at_node() [57/132]

unsigned int libMesh::FE< 2, RAVIART_THOMAS >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 421 of file fe_raviart.C.

421{ return raviart_thomas_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [58/132]

unsigned int libMesh::FE< 3, RAVIART_THOMAS >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 422 of file fe_raviart.C.

422{ return raviart_thomas_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [59/132]

unsigned int libMesh::FE< 0, SIDE_HIERARCHIC >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 310 of file fe_side_hierarchic.C.

310{ return side_hierarchic_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [60/132]

unsigned int libMesh::FE< 1, SIDE_HIERARCHIC >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 311 of file fe_side_hierarchic.C.

311{ return side_hierarchic_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [61/132]

unsigned int libMesh::FE< 2, SIDE_HIERARCHIC >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 312 of file fe_side_hierarchic.C.

312{ return side_hierarchic_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [62/132]

unsigned int libMesh::FE< 3, SIDE_HIERARCHIC >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 313 of file fe_side_hierarchic.C.

313{ return side_hierarchic_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [63/132]

unsigned int libMesh::FE< 0, SZABAB >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1308 of file fe_szabab.C.

1308{ return szabab_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [64/132]

unsigned int libMesh::FE< 1, SZABAB >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1309 of file fe_szabab.C.

1309{ return szabab_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [65/132]

unsigned int libMesh::FE< 2, SZABAB >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1310 of file fe_szabab.C.

1310{ return szabab_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [66/132]

unsigned int libMesh::FE< 3, SZABAB >::n_dofs_at_node ( const Elem e,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1311 of file fe_szabab.C.

1311{ return szabab_n_dofs_at_node(e, o, n); }

◆ n_dofs_at_node() [67/132]

static unsigned int libMesh::FE< Dim, T >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
staticinherited
Returns
The number of dofs at node n for a finite element of type t and order o.

On a p-refined element, o should be the total order of the element.

This method does not support all finite element types; e.g. for an arbitrary polygon or polyhedron type the meaning of a node index n may depend on an individual element and not just its type.

◆ n_dofs_at_node() [68/132]

unsigned int libMesh::FE< 0, LAGRANGE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1090 of file fe_lagrange.C.

1090{ return lagrange_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [69/132]

unsigned int libMesh::FE< 1, LAGRANGE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1091 of file fe_lagrange.C.

1091{ return lagrange_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [70/132]

unsigned int libMesh::FE< 2, LAGRANGE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1092 of file fe_lagrange.C.

1092{ return lagrange_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [71/132]

unsigned int libMesh::FE< 3, LAGRANGE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1093 of file fe_lagrange.C.

1093{ return lagrange_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [72/132]

unsigned int libMesh::FE< 0, LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1297 of file fe_lagrange_vec.C.

1297{ return FE<0,LAGRANGE>::n_dofs_at_node(t,o,n); }

◆ n_dofs_at_node() [73/132]

unsigned int libMesh::FE< 1, LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1298 of file fe_lagrange_vec.C.

1298{ return FE<1,LAGRANGE>::n_dofs_at_node(t,o,n); }

◆ n_dofs_at_node() [74/132]

unsigned int libMesh::FE< 2, LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1299 of file fe_lagrange_vec.C.

1299{ return 2*FE<2,LAGRANGE>::n_dofs_at_node(t,o,n); }

◆ n_dofs_at_node() [75/132]

unsigned int libMesh::FE< 3, LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1300 of file fe_lagrange_vec.C.

1300{ return 3*FE<3,LAGRANGE>::n_dofs_at_node(t,o,n); }

◆ n_dofs_at_node() [76/132]

unsigned int libMesh::FE< 2, NEDELEC_ONE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 389 of file fe_nedelec_one.C.

389{ return nedelec_one_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [77/132]

unsigned int libMesh::FE< 3, NEDELEC_ONE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 390 of file fe_nedelec_one.C.

390{ return nedelec_one_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [78/132]

unsigned int libMesh::FE< 0, RATIONAL_BERNSTEIN >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 138 of file fe_rational.C.

◆ n_dofs_at_node() [79/132]

unsigned int libMesh::FE< 1, RATIONAL_BERNSTEIN >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 139 of file fe_rational.C.

◆ n_dofs_at_node() [80/132]

unsigned int libMesh::FE< 2, RATIONAL_BERNSTEIN >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 140 of file fe_rational.C.

◆ n_dofs_at_node() [81/132]

unsigned int libMesh::FE< 3, RATIONAL_BERNSTEIN >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 141 of file fe_rational.C.

◆ n_dofs_at_node() [82/132]

unsigned int libMesh::FE< 2, RAVIART_THOMAS >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 416 of file fe_raviart.C.

416{ return raviart_thomas_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [83/132]

unsigned int libMesh::FE< 3, RAVIART_THOMAS >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 417 of file fe_raviart.C.

417{ return raviart_thomas_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [84/132]

unsigned int libMesh::FE< 0, SIDE_HIERARCHIC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 305 of file fe_side_hierarchic.C.

305{ return side_hierarchic_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [85/132]

unsigned int libMesh::FE< 1, SIDE_HIERARCHIC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 306 of file fe_side_hierarchic.C.

306{ return side_hierarchic_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [86/132]

unsigned int libMesh::FE< 2, SIDE_HIERARCHIC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 307 of file fe_side_hierarchic.C.

307{ return side_hierarchic_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [87/132]

unsigned int libMesh::FE< 3, SIDE_HIERARCHIC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 308 of file fe_side_hierarchic.C.

308{ return side_hierarchic_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [88/132]

unsigned int libMesh::FE< 0, SZABAB >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1303 of file fe_szabab.C.

1303{ return szabab_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [89/132]

unsigned int libMesh::FE< 1, SZABAB >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1304 of file fe_szabab.C.

1304{ return szabab_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [90/132]

unsigned int libMesh::FE< 2, SZABAB >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1305 of file fe_szabab.C.

1305{ return szabab_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [91/132]

unsigned int libMesh::FE< 3, SZABAB >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)
inherited

Definition at line 1306 of file fe_szabab.C.

1306{ return szabab_n_dofs_at_node(t, o, n); }

◆ n_dofs_at_node() [92/132]

unsigned int libMesh::FE< 0, L2_HIERARCHIC_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 752 of file fe_hierarchic_vec.C.

752{ return 0; }

◆ n_dofs_at_node() [93/132]

unsigned int libMesh::FE< 1, L2_HIERARCHIC_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 753 of file fe_hierarchic_vec.C.

753{ return 0; }

◆ n_dofs_at_node() [94/132]

unsigned int libMesh::FE< 2, L2_HIERARCHIC_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 754 of file fe_hierarchic_vec.C.

754{ return 0; }

◆ n_dofs_at_node() [95/132]

unsigned int libMesh::FE< 3, L2_HIERARCHIC_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 755 of file fe_hierarchic_vec.C.

755{ return 0; }

◆ n_dofs_at_node() [96/132]

unsigned int libMesh::FE< 0, L2_HIERARCHIC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 166 of file fe_l2_hierarchic.C.

166{ return 0; }

◆ n_dofs_at_node() [97/132]

unsigned int libMesh::FE< 1, L2_HIERARCHIC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 167 of file fe_l2_hierarchic.C.

167{ return 0; }

◆ n_dofs_at_node() [98/132]

unsigned int libMesh::FE< 2, L2_HIERARCHIC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 168 of file fe_l2_hierarchic.C.

168{ return 0; }

◆ n_dofs_at_node() [99/132]

unsigned int libMesh::FE< 3, L2_HIERARCHIC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 169 of file fe_l2_hierarchic.C.

169{ return 0; }

◆ n_dofs_at_node() [100/132]

unsigned int libMesh::FE< 0, L2_LAGRANGE >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 234 of file fe_l2_lagrange.C.

234{ return 0; }

◆ n_dofs_at_node() [101/132]

unsigned int libMesh::FE< 1, L2_LAGRANGE >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 235 of file fe_l2_lagrange.C.

235{ return 0; }

◆ n_dofs_at_node() [102/132]

unsigned int libMesh::FE< 2, L2_LAGRANGE >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 236 of file fe_l2_lagrange.C.

236{ return 0; }

◆ n_dofs_at_node() [103/132]

unsigned int libMesh::FE< 3, L2_LAGRANGE >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 237 of file fe_l2_lagrange.C.

237{ return 0; }

◆ n_dofs_at_node() [104/132]

unsigned int libMesh::FE< 0, L2_LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 1307 of file fe_lagrange_vec.C.

1307{ return 0; }

◆ n_dofs_at_node() [105/132]

unsigned int libMesh::FE< 1, L2_LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 1308 of file fe_lagrange_vec.C.

1308{ return 0; }

◆ n_dofs_at_node() [106/132]

unsigned int libMesh::FE< 2, L2_LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 1309 of file fe_lagrange_vec.C.

1309{ return 0; }

◆ n_dofs_at_node() [107/132]

unsigned int libMesh::FE< 3, L2_LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 1310 of file fe_lagrange_vec.C.

1310{ return 0; }

◆ n_dofs_at_node() [108/132]

unsigned int libMesh::FE< 0, MONOMIAL >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 398 of file fe_monomial.C.

398{ return 0; }

◆ n_dofs_at_node() [109/132]

unsigned int libMesh::FE< 1, MONOMIAL >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 399 of file fe_monomial.C.

399{ return 0; }

◆ n_dofs_at_node() [110/132]

unsigned int libMesh::FE< 2, MONOMIAL >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 400 of file fe_monomial.C.

400{ return 0; }

◆ n_dofs_at_node() [111/132]

unsigned int libMesh::FE< 3, MONOMIAL >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 401 of file fe_monomial.C.

401{ return 0; }

◆ n_dofs_at_node() [112/132]

unsigned int libMesh::FE< 0, MONOMIAL_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 674 of file fe_monomial_vec.C.

674{ return 0; }

◆ n_dofs_at_node() [113/132]

unsigned int libMesh::FE< 1, MONOMIAL_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 675 of file fe_monomial_vec.C.

675{ return 0; }

◆ n_dofs_at_node() [114/132]

unsigned int libMesh::FE< 2, MONOMIAL_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 676 of file fe_monomial_vec.C.

676{ return 0; }

◆ n_dofs_at_node() [115/132]

unsigned int libMesh::FE< 3, MONOMIAL_VEC >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 677 of file fe_monomial_vec.C.

677{ return 0; }

◆ n_dofs_at_node() [116/132]

unsigned int libMesh::FE< 0, NEDELEC_ONE >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 387 of file fe_nedelec_one.C.

387{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [117/132]

unsigned int libMesh::FE< 1, NEDELEC_ONE >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 388 of file fe_nedelec_one.C.

388{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [118/132]

unsigned int libMesh::FE< 0, RAVIART_THOMAS >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 414 of file fe_raviart.C.

414{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [119/132]

unsigned int libMesh::FE< 1, RAVIART_THOMAS >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 415 of file fe_raviart.C.

415{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [120/132]

unsigned int libMesh::FE< 0, L2_RAVIART_THOMAS >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 424 of file fe_raviart.C.

424{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [121/132]

unsigned int libMesh::FE< 1, L2_RAVIART_THOMAS >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 425 of file fe_raviart.C.

425{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_at_node() [122/132]

unsigned int libMesh::FE< 2, L2_RAVIART_THOMAS >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 426 of file fe_raviart.C.

426{ return 0; }

◆ n_dofs_at_node() [123/132]

unsigned int libMesh::FE< 3, L2_RAVIART_THOMAS >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 427 of file fe_raviart.C.

427{ return 0; }

◆ n_dofs_at_node() [124/132]

unsigned int libMesh::FE< 0, SCALAR >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 72 of file fe_scalar.C.

72{ return 0; }

◆ n_dofs_at_node() [125/132]

unsigned int libMesh::FE< 1, SCALAR >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 73 of file fe_scalar.C.

73{ return 0; }

◆ n_dofs_at_node() [126/132]

unsigned int libMesh::FE< 2, SCALAR >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 74 of file fe_scalar.C.

74{ return 0; }

◆ n_dofs_at_node() [127/132]

unsigned int libMesh::FE< 3, SCALAR >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 75 of file fe_scalar.C.

75{ return 0; }

◆ n_dofs_at_node() [128/132]

unsigned int libMesh::FE< 2, SUBDIVISION >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 962 of file fe_subdivision_2D.C.

962{ return 1; }

◆ n_dofs_at_node() [129/132]

unsigned int libMesh::FE< 0, XYZ >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 384 of file fe_xyz.C.

384{ return 0; }

◆ n_dofs_at_node() [130/132]

unsigned int libMesh::FE< 1, XYZ >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 385 of file fe_xyz.C.

385{ return 0; }

◆ n_dofs_at_node() [131/132]

unsigned int libMesh::FE< 2, XYZ >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 386 of file fe_xyz.C.

386{ return 0; }

◆ n_dofs_at_node() [132/132]

unsigned int libMesh::FE< 3, XYZ >::n_dofs_at_node ( const ElemType  ,
const Order  ,
const unsigned int   
)
inherited

Definition at line 387 of file fe_xyz.C.

387{ return 0; }

◆ n_dofs_per_elem() [1/132]

unsigned int libMesh::FE< 0, LAGRANGE >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 1108 of file fe_lagrange.C.

1108{ return 0; }

◆ n_dofs_per_elem() [2/132]

unsigned int libMesh::FE< 1, LAGRANGE >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 1109 of file fe_lagrange.C.

1109{ return 0; }

◆ n_dofs_per_elem() [3/132]

unsigned int libMesh::FE< 2, LAGRANGE >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 1110 of file fe_lagrange.C.

1110{ return 0; }

◆ n_dofs_per_elem() [4/132]

unsigned int libMesh::FE< 3, LAGRANGE >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 1111 of file fe_lagrange.C.

1111{ return 0; }

◆ n_dofs_per_elem() [5/132]

unsigned int libMesh::FE< 0, LAGRANGE_VEC >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 1325 of file fe_lagrange_vec.C.

1325{ return 0; }

◆ n_dofs_per_elem() [6/132]

unsigned int libMesh::FE< 1, LAGRANGE_VEC >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 1326 of file fe_lagrange_vec.C.

1326{ return 0; }

◆ n_dofs_per_elem() [7/132]

unsigned int libMesh::FE< 2, LAGRANGE_VEC >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 1327 of file fe_lagrange_vec.C.

1327{ return 0; }

◆ n_dofs_per_elem() [8/132]

unsigned int libMesh::FE< 3, LAGRANGE_VEC >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 1328 of file fe_lagrange_vec.C.

1328{ return 0; }

◆ n_dofs_per_elem() [9/132]

unsigned int libMesh::FE< 0, NEDELEC_ONE >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 402 of file fe_nedelec_one.C.

402{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [10/132]

unsigned int libMesh::FE< 1, NEDELEC_ONE >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 403 of file fe_nedelec_one.C.

403{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [11/132]

unsigned int libMesh::FE< 0, RAVIART_THOMAS >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 439 of file fe_raviart.C.

439{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [12/132]

unsigned int libMesh::FE< 1, RAVIART_THOMAS >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 440 of file fe_raviart.C.

440{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [13/132]

unsigned int libMesh::FE< 0, L2_RAVIART_THOMAS >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 450 of file fe_raviart.C.

450{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [14/132]

unsigned int libMesh::FE< 1, L2_RAVIART_THOMAS >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 451 of file fe_raviart.C.

451{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [15/132]

unsigned int libMesh::FE< 0, SCALAR >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 89 of file fe_scalar.C.

89{ return 0; }

◆ n_dofs_per_elem() [16/132]

unsigned int libMesh::FE< 1, SCALAR >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 90 of file fe_scalar.C.

90{ return 0; }

◆ n_dofs_per_elem() [17/132]

unsigned int libMesh::FE< 2, SCALAR >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 91 of file fe_scalar.C.

91{ return 0; }

◆ n_dofs_per_elem() [18/132]

unsigned int libMesh::FE< 3, SCALAR >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 92 of file fe_scalar.C.

92{ return 0; }

◆ n_dofs_per_elem() [19/132]

unsigned int libMesh::FE< 0, SIDE_HIERARCHIC >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 321 of file fe_side_hierarchic.C.

321{ return 0; }

◆ n_dofs_per_elem() [20/132]

unsigned int libMesh::FE< 1, SIDE_HIERARCHIC >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 322 of file fe_side_hierarchic.C.

322{ return 0; }

◆ n_dofs_per_elem() [21/132]

unsigned int libMesh::FE< 2, SIDE_HIERARCHIC >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 323 of file fe_side_hierarchic.C.

323{ return 0; }

◆ n_dofs_per_elem() [22/132]

unsigned int libMesh::FE< 3, SIDE_HIERARCHIC >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 324 of file fe_side_hierarchic.C.

324{ return 0; }

◆ n_dofs_per_elem() [23/132]

unsigned int libMesh::FE< 2, SUBDIVISION >::n_dofs_per_elem ( const Elem ,
const Order   
)
inherited

Definition at line 967 of file fe_subdivision_2D.C.

967{ return 0; }

◆ n_dofs_per_elem() [24/132]

static unsigned int libMesh::FE< Dim, T >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
staticinherited
Returns
The number of dofs interior to the element, not associated with any interior nodes.

On a p-refined element, o should be the total order of the element.

◆ n_dofs_per_elem() [25/132]

unsigned int libMesh::FE< 0, L2_HIERARCHIC_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 767 of file fe_hierarchic_vec.C.

767{ return FE<0,L2_HIERARCHIC_VEC>::n_dofs(&e, o); }

◆ n_dofs_per_elem() [26/132]

unsigned int libMesh::FE< 1, L2_HIERARCHIC_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 768 of file fe_hierarchic_vec.C.

768{ return FE<1,L2_HIERARCHIC_VEC>::n_dofs(&e, o); }

◆ n_dofs_per_elem() [27/132]

unsigned int libMesh::FE< 2, L2_HIERARCHIC_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 769 of file fe_hierarchic_vec.C.

769{ return FE<2,L2_HIERARCHIC_VEC>::n_dofs(&e, o); }

◆ n_dofs_per_elem() [28/132]

unsigned int libMesh::FE< 3, L2_HIERARCHIC_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 770 of file fe_hierarchic_vec.C.

770{ return FE<3,L2_HIERARCHIC_VEC>::n_dofs(&e, o); }

◆ n_dofs_per_elem() [29/132]

unsigned int libMesh::FE< 0, L2_HIERARCHIC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 182 of file fe_l2_hierarchic.C.

182{ return l2_hierarchic_n_dofs(&e, o); }

◆ n_dofs_per_elem() [30/132]

unsigned int libMesh::FE< 1, L2_HIERARCHIC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 183 of file fe_l2_hierarchic.C.

183{ return l2_hierarchic_n_dofs(&e, o); }

◆ n_dofs_per_elem() [31/132]

unsigned int libMesh::FE< 2, L2_HIERARCHIC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 184 of file fe_l2_hierarchic.C.

184{ return l2_hierarchic_n_dofs(&e, o); }

◆ n_dofs_per_elem() [32/132]

unsigned int libMesh::FE< 3, L2_HIERARCHIC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 185 of file fe_l2_hierarchic.C.

185{ return l2_hierarchic_n_dofs(&e, o); }

◆ n_dofs_per_elem() [33/132]

unsigned int libMesh::FE< 0, L2_LAGRANGE >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 250 of file fe_l2_lagrange.C.

250{ return l2_lagrange_n_dofs(&e, o); }

◆ n_dofs_per_elem() [34/132]

unsigned int libMesh::FE< 1, L2_LAGRANGE >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 251 of file fe_l2_lagrange.C.

251{ return l2_lagrange_n_dofs(&e, o); }

◆ n_dofs_per_elem() [35/132]

unsigned int libMesh::FE< 2, L2_LAGRANGE >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 252 of file fe_l2_lagrange.C.

252{ return l2_lagrange_n_dofs(&e, o); }

◆ n_dofs_per_elem() [36/132]

unsigned int libMesh::FE< 3, L2_LAGRANGE >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 253 of file fe_l2_lagrange.C.

253{ return l2_lagrange_n_dofs(&e, o); }

◆ n_dofs_per_elem() [37/132]

unsigned int libMesh::FE< 0, L2_LAGRANGE_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 1336 of file fe_lagrange_vec.C.

1336{ return FE<0,L2_LAGRANGE_VEC>::n_dofs(&e, o); }

◆ n_dofs_per_elem() [38/132]

unsigned int libMesh::FE< 1, L2_LAGRANGE_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 1337 of file fe_lagrange_vec.C.

1337{ return FE<1,L2_LAGRANGE_VEC>::n_dofs(&e, o); }

◆ n_dofs_per_elem() [39/132]

unsigned int libMesh::FE< 2, L2_LAGRANGE_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 1338 of file fe_lagrange_vec.C.

1338{ return FE<2,L2_LAGRANGE_VEC>::n_dofs(&e, o); }

◆ n_dofs_per_elem() [40/132]

unsigned int libMesh::FE< 3, L2_LAGRANGE_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 1339 of file fe_lagrange_vec.C.

1339{ return FE<3,L2_LAGRANGE_VEC>::n_dofs(&e, o); }

◆ n_dofs_per_elem() [41/132]

unsigned int libMesh::FE< 0, MONOMIAL >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 414 of file fe_monomial.C.

414{ return monomial_n_dofs(&e, o); }

◆ n_dofs_per_elem() [42/132]

unsigned int libMesh::FE< 1, MONOMIAL >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 415 of file fe_monomial.C.

415{ return monomial_n_dofs(&e, o); }

◆ n_dofs_per_elem() [43/132]

unsigned int libMesh::FE< 2, MONOMIAL >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 416 of file fe_monomial.C.

416{ return monomial_n_dofs(&e, o); }

◆ n_dofs_per_elem() [44/132]

unsigned int libMesh::FE< 3, MONOMIAL >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 417 of file fe_monomial.C.

417{ return monomial_n_dofs(&e, o); }

◆ n_dofs_per_elem() [45/132]

unsigned int libMesh::FE< 0, MONOMIAL_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 689 of file fe_monomial_vec.C.

689{ return FE<0, MONOMIAL>::n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [46/132]

unsigned int libMesh::FE< 1, MONOMIAL_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 690 of file fe_monomial_vec.C.

690{ return FE<1, MONOMIAL>::n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [47/132]

unsigned int libMesh::FE< 2, MONOMIAL_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 691 of file fe_monomial_vec.C.

691{ return 2 * FE<2, MONOMIAL>::n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [48/132]

unsigned int libMesh::FE< 3, MONOMIAL_VEC >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 692 of file fe_monomial_vec.C.

692{ return 3 * FE<3, MONOMIAL>::n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [49/132]

unsigned int libMesh::FE< 2, NEDELEC_ONE >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 404 of file fe_nedelec_one.C.

404{ return nedelec_one_n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [50/132]

unsigned int libMesh::FE< 3, NEDELEC_ONE >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 405 of file fe_nedelec_one.C.

405{ return nedelec_one_n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [51/132]

unsigned int libMesh::FE< 0, RATIONAL_BERNSTEIN >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 154 of file fe_rational.C.

static unsigned int n_dofs_per_elem(const ElemType t, const Order o)

◆ n_dofs_per_elem() [52/132]

unsigned int libMesh::FE< 1, RATIONAL_BERNSTEIN >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 155 of file fe_rational.C.

◆ n_dofs_per_elem() [53/132]

unsigned int libMesh::FE< 2, RATIONAL_BERNSTEIN >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 156 of file fe_rational.C.

◆ n_dofs_per_elem() [54/132]

unsigned int libMesh::FE< 3, RATIONAL_BERNSTEIN >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 157 of file fe_rational.C.

◆ n_dofs_per_elem() [55/132]

unsigned int libMesh::FE< 2, RAVIART_THOMAS >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 441 of file fe_raviart.C.

441{ return raviart_thomas_n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [56/132]

unsigned int libMesh::FE< 3, RAVIART_THOMAS >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 442 of file fe_raviart.C.

442{ return raviart_thomas_n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [57/132]

unsigned int libMesh::FE< 2, L2_RAVIART_THOMAS >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 452 of file fe_raviart.C.

452{ return n_dofs(&e, o); }

◆ n_dofs_per_elem() [58/132]

unsigned int libMesh::FE< 3, L2_RAVIART_THOMAS >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 453 of file fe_raviart.C.

453{ return n_dofs(&e, o); }

◆ n_dofs_per_elem() [59/132]

unsigned int libMesh::FE< 0, SZABAB >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 1319 of file fe_szabab.C.

1319{ return szabab_n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [60/132]

unsigned int libMesh::FE< 1, SZABAB >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 1320 of file fe_szabab.C.

1320{ return szabab_n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [61/132]

unsigned int libMesh::FE< 2, SZABAB >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 1321 of file fe_szabab.C.

1321{ return szabab_n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [62/132]

unsigned int libMesh::FE< 3, SZABAB >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 1322 of file fe_szabab.C.

1322{ return szabab_n_dofs_per_elem(e, o); }

◆ n_dofs_per_elem() [63/132]

unsigned int libMesh::FE< 0, XYZ >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 400 of file fe_xyz.C.

400{ return monomial_n_dofs(&e, o); }

◆ n_dofs_per_elem() [64/132]

unsigned int libMesh::FE< 1, XYZ >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 401 of file fe_xyz.C.

401{ return monomial_n_dofs(&e, o); }

◆ n_dofs_per_elem() [65/132]

unsigned int libMesh::FE< 2, XYZ >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 402 of file fe_xyz.C.

402{ return monomial_n_dofs(&e, o); }

◆ n_dofs_per_elem() [66/132]

unsigned int libMesh::FE< 3, XYZ >::n_dofs_per_elem ( const Elem e,
const Order  o 
)
inherited

Definition at line 403 of file fe_xyz.C.

403{ return monomial_n_dofs(&e, o); }

◆ n_dofs_per_elem() [67/132]

static unsigned int libMesh::FE< Dim, T >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
staticinherited
Returns
The number of dofs interior to the element, not associated with any interior nodes.

On a p-refined element, o should be the total order of the element.

This method may not support all finite element types, e.g. higher order polygons or polyhedra may differ from element to element.

◆ n_dofs_per_elem() [68/132]

unsigned int libMesh::FE< 0, L2_HIERARCHIC_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 762 of file fe_hierarchic_vec.C.

762{ return FE<0,L2_HIERARCHIC_VEC>::n_dofs(t, o); }

◆ n_dofs_per_elem() [69/132]

unsigned int libMesh::FE< 1, L2_HIERARCHIC_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 763 of file fe_hierarchic_vec.C.

763{ return FE<1,L2_HIERARCHIC_VEC>::n_dofs(t, o); }

◆ n_dofs_per_elem() [70/132]

unsigned int libMesh::FE< 2, L2_HIERARCHIC_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 764 of file fe_hierarchic_vec.C.

764{ return FE<2,L2_HIERARCHIC_VEC>::n_dofs(t, o); }

◆ n_dofs_per_elem() [71/132]

unsigned int libMesh::FE< 3, L2_HIERARCHIC_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 765 of file fe_hierarchic_vec.C.

765{ return FE<3,L2_HIERARCHIC_VEC>::n_dofs(t, o); }

◆ n_dofs_per_elem() [72/132]

unsigned int libMesh::FE< 0, L2_HIERARCHIC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 177 of file fe_l2_hierarchic.C.

177{ return l2_hierarchic_n_dofs(t, o); }

◆ n_dofs_per_elem() [73/132]

unsigned int libMesh::FE< 1, L2_HIERARCHIC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 178 of file fe_l2_hierarchic.C.

178{ return l2_hierarchic_n_dofs(t, o); }

◆ n_dofs_per_elem() [74/132]

unsigned int libMesh::FE< 2, L2_HIERARCHIC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 179 of file fe_l2_hierarchic.C.

179{ return l2_hierarchic_n_dofs(t, o); }

◆ n_dofs_per_elem() [75/132]

unsigned int libMesh::FE< 3, L2_HIERARCHIC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 180 of file fe_l2_hierarchic.C.

180{ return l2_hierarchic_n_dofs(t, o); }

◆ n_dofs_per_elem() [76/132]

unsigned int libMesh::FE< 0, L2_LAGRANGE >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 245 of file fe_l2_lagrange.C.

245{ return l2_lagrange_n_dofs(t, o); }

◆ n_dofs_per_elem() [77/132]

unsigned int libMesh::FE< 1, L2_LAGRANGE >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 246 of file fe_l2_lagrange.C.

246{ return l2_lagrange_n_dofs(t, o); }

◆ n_dofs_per_elem() [78/132]

unsigned int libMesh::FE< 2, L2_LAGRANGE >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 247 of file fe_l2_lagrange.C.

247{ return l2_lagrange_n_dofs(t, o); }

◆ n_dofs_per_elem() [79/132]

unsigned int libMesh::FE< 3, L2_LAGRANGE >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 248 of file fe_l2_lagrange.C.

248{ return l2_lagrange_n_dofs(t, o); }

◆ n_dofs_per_elem() [80/132]

unsigned int libMesh::FE< 0, L2_LAGRANGE_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1331 of file fe_lagrange_vec.C.

1331{ return FE<0,L2_LAGRANGE_VEC>::n_dofs(t, o); }

◆ n_dofs_per_elem() [81/132]

unsigned int libMesh::FE< 1, L2_LAGRANGE_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1332 of file fe_lagrange_vec.C.

1332{ return FE<1,L2_LAGRANGE_VEC>::n_dofs(t, o); }

◆ n_dofs_per_elem() [82/132]

unsigned int libMesh::FE< 2, L2_LAGRANGE_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1333 of file fe_lagrange_vec.C.

1333{ return FE<2,L2_LAGRANGE_VEC>::n_dofs(t, o); }

◆ n_dofs_per_elem() [83/132]

unsigned int libMesh::FE< 3, L2_LAGRANGE_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1334 of file fe_lagrange_vec.C.

1334{ return FE<3,L2_LAGRANGE_VEC>::n_dofs(t, o); }

◆ n_dofs_per_elem() [84/132]

unsigned int libMesh::FE< 0, MONOMIAL >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 409 of file fe_monomial.C.

409{ return monomial_n_dofs(t, o); }

◆ n_dofs_per_elem() [85/132]

unsigned int libMesh::FE< 1, MONOMIAL >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 410 of file fe_monomial.C.

410{ return monomial_n_dofs(t, o); }

◆ n_dofs_per_elem() [86/132]

unsigned int libMesh::FE< 2, MONOMIAL >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 411 of file fe_monomial.C.

411{ return monomial_n_dofs(t, o); }

◆ n_dofs_per_elem() [87/132]

unsigned int libMesh::FE< 3, MONOMIAL >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 412 of file fe_monomial.C.

412{ return monomial_n_dofs(t, o); }

◆ n_dofs_per_elem() [88/132]

unsigned int libMesh::FE< 0, MONOMIAL_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 684 of file fe_monomial_vec.C.

684{ return FE<0, MONOMIAL>::n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [89/132]

unsigned int libMesh::FE< 1, MONOMIAL_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 685 of file fe_monomial_vec.C.

685{ return FE<1, MONOMIAL>::n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [90/132]

unsigned int libMesh::FE< 2, MONOMIAL_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 686 of file fe_monomial_vec.C.

686{ return 2 * FE<2, MONOMIAL>::n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [91/132]

unsigned int libMesh::FE< 3, MONOMIAL_VEC >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 687 of file fe_monomial_vec.C.

687{ return 3 * FE<3, MONOMIAL>::n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [92/132]

unsigned int libMesh::FE< 2, NEDELEC_ONE >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 399 of file fe_nedelec_one.C.

399{ return nedelec_one_n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [93/132]

unsigned int libMesh::FE< 3, NEDELEC_ONE >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 400 of file fe_nedelec_one.C.

400{ return nedelec_one_n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [94/132]

unsigned int libMesh::FE< 0, RATIONAL_BERNSTEIN >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 149 of file fe_rational.C.

◆ n_dofs_per_elem() [95/132]

unsigned int libMesh::FE< 1, RATIONAL_BERNSTEIN >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 150 of file fe_rational.C.

◆ n_dofs_per_elem() [96/132]

unsigned int libMesh::FE< 2, RATIONAL_BERNSTEIN >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 151 of file fe_rational.C.

◆ n_dofs_per_elem() [97/132]

unsigned int libMesh::FE< 3, RATIONAL_BERNSTEIN >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 152 of file fe_rational.C.

◆ n_dofs_per_elem() [98/132]

unsigned int libMesh::FE< 2, RAVIART_THOMAS >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 436 of file fe_raviart.C.

436{ return raviart_thomas_n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [99/132]

unsigned int libMesh::FE< 3, RAVIART_THOMAS >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 437 of file fe_raviart.C.

437{ return raviart_thomas_n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [100/132]

unsigned int libMesh::FE< 2, L2_RAVIART_THOMAS >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 447 of file fe_raviart.C.

447{ return n_dofs(t, o); }

◆ n_dofs_per_elem() [101/132]

unsigned int libMesh::FE< 3, L2_RAVIART_THOMAS >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 448 of file fe_raviart.C.

448{ return n_dofs(t, o); }

◆ n_dofs_per_elem() [102/132]

unsigned int libMesh::FE< 0, SZABAB >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1314 of file fe_szabab.C.

1314{ return szabab_n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [103/132]

unsigned int libMesh::FE< 1, SZABAB >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1315 of file fe_szabab.C.

1315{ return szabab_n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [104/132]

unsigned int libMesh::FE< 2, SZABAB >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1316 of file fe_szabab.C.

1316{ return szabab_n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [105/132]

unsigned int libMesh::FE< 3, SZABAB >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 1317 of file fe_szabab.C.

1317{ return szabab_n_dofs_per_elem(t, o); }

◆ n_dofs_per_elem() [106/132]

unsigned int libMesh::FE< 0, XYZ >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 395 of file fe_xyz.C.

395{ return monomial_n_dofs(t, o); }

◆ n_dofs_per_elem() [107/132]

unsigned int libMesh::FE< 1, XYZ >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 396 of file fe_xyz.C.

396{ return monomial_n_dofs(t, o); }

◆ n_dofs_per_elem() [108/132]

unsigned int libMesh::FE< 2, XYZ >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 397 of file fe_xyz.C.

397{ return monomial_n_dofs(t, o); }

◆ n_dofs_per_elem() [109/132]

unsigned int libMesh::FE< 3, XYZ >::n_dofs_per_elem ( const ElemType  t,
const Order  o 
)
inherited

Definition at line 398 of file fe_xyz.C.

398{ return monomial_n_dofs(t, o); }

◆ n_dofs_per_elem() [110/132]

unsigned int libMesh::FE< 0, LAGRANGE >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 1103 of file fe_lagrange.C.

1103{ return 0; }

◆ n_dofs_per_elem() [111/132]

unsigned int libMesh::FE< 1, LAGRANGE >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 1104 of file fe_lagrange.C.

1104{ return 0; }

◆ n_dofs_per_elem() [112/132]

unsigned int libMesh::FE< 2, LAGRANGE >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 1105 of file fe_lagrange.C.

1105{ return 0; }

◆ n_dofs_per_elem() [113/132]

unsigned int libMesh::FE< 3, LAGRANGE >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 1106 of file fe_lagrange.C.

1106{ return 0; }

◆ n_dofs_per_elem() [114/132]

unsigned int libMesh::FE< 0, LAGRANGE_VEC >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 1320 of file fe_lagrange_vec.C.

1320{ return 0; }

◆ n_dofs_per_elem() [115/132]

unsigned int libMesh::FE< 1, LAGRANGE_VEC >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 1321 of file fe_lagrange_vec.C.

1321{ return 0; }

◆ n_dofs_per_elem() [116/132]

unsigned int libMesh::FE< 2, LAGRANGE_VEC >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 1322 of file fe_lagrange_vec.C.

1322{ return 0; }

◆ n_dofs_per_elem() [117/132]

unsigned int libMesh::FE< 3, LAGRANGE_VEC >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 1323 of file fe_lagrange_vec.C.

1323{ return 0; }

◆ n_dofs_per_elem() [118/132]

unsigned int libMesh::FE< 0, NEDELEC_ONE >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 397 of file fe_nedelec_one.C.

397{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [119/132]

unsigned int libMesh::FE< 1, NEDELEC_ONE >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 398 of file fe_nedelec_one.C.

398{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [120/132]

unsigned int libMesh::FE< 0, RAVIART_THOMAS >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 434 of file fe_raviart.C.

434{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [121/132]

unsigned int libMesh::FE< 1, RAVIART_THOMAS >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 435 of file fe_raviart.C.

435{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [122/132]

unsigned int libMesh::FE< 0, L2_RAVIART_THOMAS >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 445 of file fe_raviart.C.

445{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [123/132]

unsigned int libMesh::FE< 1, L2_RAVIART_THOMAS >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 446 of file fe_raviart.C.

446{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ n_dofs_per_elem() [124/132]

unsigned int libMesh::FE< 0, SCALAR >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 84 of file fe_scalar.C.

84{ return 0; }

◆ n_dofs_per_elem() [125/132]

unsigned int libMesh::FE< 1, SCALAR >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 85 of file fe_scalar.C.

85{ return 0; }

◆ n_dofs_per_elem() [126/132]

unsigned int libMesh::FE< 2, SCALAR >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 86 of file fe_scalar.C.

86{ return 0; }

◆ n_dofs_per_elem() [127/132]

unsigned int libMesh::FE< 3, SCALAR >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 87 of file fe_scalar.C.

87{ return 0; }

◆ n_dofs_per_elem() [128/132]

unsigned int libMesh::FE< 0, SIDE_HIERARCHIC >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 316 of file fe_side_hierarchic.C.

316{ return 0; }

◆ n_dofs_per_elem() [129/132]

unsigned int libMesh::FE< 1, SIDE_HIERARCHIC >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 317 of file fe_side_hierarchic.C.

317{ return 0; }

◆ n_dofs_per_elem() [130/132]

unsigned int libMesh::FE< 2, SIDE_HIERARCHIC >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 318 of file fe_side_hierarchic.C.

318{ return 0; }

◆ n_dofs_per_elem() [131/132]

unsigned int libMesh::FE< 3, SIDE_HIERARCHIC >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 319 of file fe_side_hierarchic.C.

319{ return 0; }

◆ n_dofs_per_elem() [132/132]

unsigned int libMesh::FE< 2, SUBDIVISION >::n_dofs_per_elem ( const ElemType  ,
const Order   
)
inherited

Definition at line 966 of file fe_subdivision_2D.C.

966{ return 0; }

◆ n_objects()

static unsigned int libMesh::ReferenceCounter::n_objects ( )
inlinestaticinherited

Prints the number of outstanding (created, but not yet destroyed) objects.

Definition at line 85 of file reference_counter.h.

86 { return _n_objects; }
static Threads::atomic< unsigned int > _n_objects
The number of objects.

References libMesh::ReferenceCounter::_n_objects.

Referenced by libMesh::LibMeshInit::~LibMeshInit().

◆ n_quadrature_points()

unsigned int libMesh::FEAbstract::n_quadrature_points ( ) const
virtualinherited

◆ n_shape_functions() [1/2]

unsigned int libMesh::FE< Dim, T >::n_shape_functions ( ) const
overridevirtualinherited
Returns
The number of shape functions associated with this finite element.

Implements libMesh::FEAbstract.

Definition at line 412 of file fe.C.

76{
77 if (this->_elem)
78 return this->n_dofs (this->_elem,
79 this->fe_type.order + this->_p_level);
80
81 return this->n_dofs (this->get_type(),
82 this->fe_type.order + this->_p_level);
83}

◆ n_shape_functions() [2/2]

static unsigned int libMesh::FE< Dim, T >::n_shape_functions ( const ElemType  t,
const Order  o 
)
inlinestaticinherited
Returns
The number of shape functions associated with a finite element of type t and approximation order o.

On a p-refined element, o should be the total order of the element.

This method does not support all finite element types; e.g. for an arbitrary polygon or polyhedron type the number of shape functions may depend on an individual element and not just its type.

Definition at line 425 of file fe.h.

427 { return FE<Dim,T>::n_dofs (t,o); }

◆ nodal_soln() [1/17]

void libMesh::FE< 0, NEDELEC_ONE >::nodal_soln ( const Elem ,
const Order  ,
const std::vector< Number > &  ,
std::vector< Number > &  ,
bool  ,
const unsigned   
)
inherited

Definition at line 337 of file fe_nedelec_one.C.

343{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ nodal_soln() [2/17]

void libMesh::FE< 1, NEDELEC_ONE >::nodal_soln ( const Elem ,
const Order  ,
const std::vector< Number > &  ,
std::vector< Number > &  ,
bool  ,
const unsigned   
)
inherited

Definition at line 346 of file fe_nedelec_one.C.

352{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ nodal_soln() [3/17]

void libMesh::FE< 0, RAVIART_THOMAS >::nodal_soln ( const Elem ,
const Order  ,
const std::vector< Number > &  ,
std::vector< Number > &  ,
bool  ,
const unsigned   
)
inherited

Definition at line 316 of file fe_raviart.C.

322{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ nodal_soln() [4/17]

void libMesh::FE< 1, RAVIART_THOMAS >::nodal_soln ( const Elem ,
const Order  ,
const std::vector< Number > &  ,
std::vector< Number > &  ,
bool  ,
const unsigned   
)
inherited

Definition at line 325 of file fe_raviart.C.

331{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ nodal_soln() [5/17]

void libMesh::FE< 0, L2_RAVIART_THOMAS >::nodal_soln ( const Elem ,
const Order  ,
const std::vector< Number > &  ,
std::vector< Number > &  ,
bool  ,
const unsigned   
)
inherited

Definition at line 352 of file fe_raviart.C.

358{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ nodal_soln() [6/17]

void libMesh::FE< 1, L2_RAVIART_THOMAS >::nodal_soln ( const Elem ,
const Order  ,
const std::vector< Number > &  ,
std::vector< Number > &  ,
bool  ,
const unsigned   
)
inherited

Definition at line 361 of file fe_raviart.C.

367{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ nodal_soln() [7/17]

static void libMesh::FE< Dim, T >::nodal_soln ( const Elem elem,
const Order  o,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
bool  add_p_level = true,
const unsigned  vdim = 1 
)
staticinherited

Build the nodal soln from the element soln.

This is the solution that will be plotted.

On a p-refined element, o should be the base order of the element.

◆ nodal_soln() [8/17]

void libMesh::FE< 2, NEDELEC_ONE >::nodal_soln ( const Elem elem,
const Order  order,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
const bool  add_p_level,
const unsigned  vdim 
)
inherited

Definition at line 355 of file fe_nedelec_one.C.

361{ nedelec_one_nodal_soln(elem, order, elem_soln, 2 /*dim*/, vdim, nodal_soln, add_p_level); }

◆ nodal_soln() [9/17]

void libMesh::FE< 2, RAVIART_THOMAS >::nodal_soln ( const Elem elem,
const Order  order,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
const bool  add_p_level,
const unsigned  vdim 
)
inherited

Definition at line 334 of file fe_raviart.C.

340{ raviart_thomas_nodal_soln(elem, order, elem_soln, 2 /*dim*/, vdim, nodal_soln, add_p_level); }

◆ nodal_soln() [10/17]

void libMesh::FE< 2, L2_RAVIART_THOMAS >::nodal_soln ( const Elem elem,
const Order  order,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
const bool  add_p_level,
const unsigned  vdim 
)
inherited

Definition at line 370 of file fe_raviart.C.

376{ raviart_thomas_nodal_soln(elem, order, elem_soln, 2 /*dim*/, vdim, nodal_soln, add_p_level); }

◆ nodal_soln() [11/17]

void libMesh::FE< 3, HIERARCHIC_VEC >::nodal_soln ( const Elem elem,
const Order  order,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
const bool  add_p_level,
const unsigned   
)
inherited

Definition at line 109 of file fe_hierarchic_vec.C.

115{ hierarchic_vec_nodal_soln(elem, order, elem_soln, 3 /*dim*/, nodal_soln, add_p_level); }

◆ nodal_soln() [12/17]

void libMesh::FE< 3, LAGRANGE_VEC >::nodal_soln ( const Elem elem,
const Order  order,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
const bool  add_p_level,
const unsigned   
)
inherited

Definition at line 649 of file fe_lagrange_vec.C.

655{ lagrange_vec_nodal_soln(elem, order, elem_soln, 3 /*dim*/, nodal_soln, add_p_level); }

◆ nodal_soln() [13/17]

void libMesh::FE< 3, MONOMIAL_VEC >::nodal_soln ( const Elem elem,
const Order  order,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
const bool  add_p_level,
const unsigned   
)
inherited

Definition at line 130 of file fe_monomial_vec.C.

136{
137 monomial_vec_nodal_soln(elem, order, elem_soln, 3 /*dim*/, nodal_soln, add_p_level);
138}

◆ nodal_soln() [14/17]

void libMesh::FE< 3, NEDELEC_ONE >::nodal_soln ( const Elem elem,
const Order  order,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
const bool  add_p_level,
const unsigned   
)
inherited

Definition at line 364 of file fe_nedelec_one.C.

370{ nedelec_one_nodal_soln(elem, order, elem_soln, 3 /*dim*/, 3 /*vdim*/, nodal_soln, add_p_level); }

◆ nodal_soln() [15/17]

void libMesh::FE< 3, RAVIART_THOMAS >::nodal_soln ( const Elem elem,
const Order  order,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
const bool  add_p_level,
const unsigned   
)
inherited

Definition at line 343 of file fe_raviart.C.

349{ raviart_thomas_nodal_soln(elem, order, elem_soln, 3 /*dim*/, 3 /*vdim*/, nodal_soln, add_p_level); }

◆ nodal_soln() [16/17]

void libMesh::FE< 3, L2_RAVIART_THOMAS >::nodal_soln ( const Elem elem,
const Order  order,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
const bool  add_p_level,
const unsigned   
)
inherited

Definition at line 379 of file fe_raviart.C.

385{ raviart_thomas_nodal_soln(elem, order, elem_soln, 3 /*dim*/, 3 /*vdim*/, nodal_soln, add_p_level); }

◆ nodal_soln() [17/17]

void libMesh::FE< 2, SUBDIVISION >::nodal_soln ( const Elem elem,
const Order  ,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln,
const bool  ,
const unsigned   
)
inherited

Definition at line 877 of file fe_subdivision_2D.C.

883{
884 libmesh_assert(elem);
885 libmesh_assert_equal_to(elem->type(), TRI3SUBDIVISION);
886 const Tri3Subdivision * sd_elem = static_cast<const Tri3Subdivision *>(elem);
887
888 nodal_soln.resize(3); // three nodes per element
889
890 // Ghost nodes are auxiliary.
891 if (sd_elem->is_ghost())
892 {
893 nodal_soln[0] = 0;
894 nodal_soln[1] = 0;
895 nodal_soln[2] = 0;
896 return;
897 }
898
899 // First node (node 0 in the element patch):
900 unsigned int j = sd_elem->local_node_number(sd_elem->get_ordered_node(0)->id());
901 nodal_soln[j] = elem_soln[0];
902
903 // Second node (node 1 in the element patch):
904 j = sd_elem->local_node_number(sd_elem->get_ordered_node(1)->id());
905 nodal_soln[j] = elem_soln[1];
906
907 // Third node (node 'valence' in the element patch):
908 j = sd_elem->local_node_number(sd_elem->get_ordered_node(2)->id());
909 nodal_soln[j] = elem_soln[sd_elem->get_ordered_valence(0)];
910}

◆ on_reference_element()

bool libMesh::FEAbstract::on_reference_element ( const Point p,
const ElemType  t,
const Real  eps = TOLERANCE 
)
staticinherited
Returns
true if the point p is located on the reference element for element type t, false otherwise. Since we are doing floating point comparisons here the parameter eps can be specified to indicate a tolerance. For example, \( x \le 1 \) becomes \( x \le 1 + \epsilon \).
Deprecated:
This method overload does not support all finite element types; e.g. the reference element for an arbitrary polygon or polyhedron type may differ from element to element. Use Elem::on_reference_element() instead.

Definition at line 637 of file fe_abstract.C.

638{
639 // Use Elem::on_reference_element() instead
640 libmesh_deprecated();
641
642 libmesh_assert_greater_equal (eps, 0.);
643
644 const Real xi = p(0);
645#if LIBMESH_DIM > 1
646 const Real eta = p(1);
647#else
648 const Real eta = 0.;
649#endif
650#if LIBMESH_DIM > 2
651 const Real zeta = p(2);
652#else
653 const Real zeta = 0.;
654#endif
655
656 switch (t)
657 {
658 case NODEELEM:
659 {
660 return (!xi && !eta && !zeta);
661 }
662 case EDGE2:
663 case EDGE3:
664 case EDGE4:
665 {
666 // The reference 1D element is [-1,1].
667 if ((xi >= -1.-eps) &&
668 (xi <= 1.+eps))
669 return true;
670
671 return false;
672 }
673
674
675 case TRI3:
676 case TRISHELL3:
677 case TRI6:
678 case TRI7:
679 {
680 // The reference triangle is isosceles
681 // and is bound by xi=0, eta=0, and xi+eta=1.
682 if ((xi >= 0.-eps) &&
683 (eta >= 0.-eps) &&
684 ((xi + eta) <= 1.+eps))
685 return true;
686
687 return false;
688 }
689
690
691 case QUAD4:
692 case QUADSHELL4:
693 case QUAD8:
694 case QUADSHELL8:
695 case QUAD9:
696 case QUADSHELL9:
697 {
698 // The reference quadrilateral element is [-1,1]^2.
699 if ((xi >= -1.-eps) &&
700 (xi <= 1.+eps) &&
701 (eta >= -1.-eps) &&
702 (eta <= 1.+eps))
703 return true;
704
705 return false;
706 }
707
708
709 case TET4:
710 case TET10:
711 case TET14:
712 {
713 // The reference tetrahedral is isosceles
714 // and is bound by xi=0, eta=0, zeta=0,
715 // and xi+eta+zeta=1.
716 if ((xi >= 0.-eps) &&
717 (eta >= 0.-eps) &&
718 (zeta >= 0.-eps) &&
719 ((xi + eta + zeta) <= 1.+eps))
720 return true;
721
722 return false;
723 }
724
725
726 case HEX8:
727 case HEX20:
728 case HEX27:
729 {
730 /*
731 if ((xi >= -1.) &&
732 (xi <= 1.) &&
733 (eta >= -1.) &&
734 (eta <= 1.) &&
735 (zeta >= -1.) &&
736 (zeta <= 1.))
737 return true;
738 */
739
740 // The reference hexahedral element is [-1,1]^3.
741 if ((xi >= -1.-eps) &&
742 (xi <= 1.+eps) &&
743 (eta >= -1.-eps) &&
744 (eta <= 1.+eps) &&
745 (zeta >= -1.-eps) &&
746 (zeta <= 1.+eps))
747 {
748 // libMesh::out << "Strange Point:\n";
749 // p.print();
750 return true;
751 }
752
753 return false;
754 }
755
756 case PRISM6:
757 case PRISM15:
758 case PRISM18:
759 case PRISM20:
760 case PRISM21:
761 {
762 // Figure this one out...
763 // inside the reference triangle with zeta in [-1,1]
764 if ((xi >= 0.-eps) &&
765 (eta >= 0.-eps) &&
766 (zeta >= -1.-eps) &&
767 (zeta <= 1.+eps) &&
768 ((xi + eta) <= 1.+eps))
769 return true;
770
771 return false;
772 }
773
774
775 case PYRAMID5:
776 case PYRAMID13:
777 case PYRAMID14:
778 case PYRAMID18:
779 {
780 // Check that the point is on the same side of all the faces
781 // by testing whether:
782 //
783 // n_i.(x - x_i) <= 0
784 //
785 // for each i, where:
786 // n_i is the outward normal of face i,
787 // x_i is a point on face i.
788 if ((-eta - 1. + zeta <= 0.+eps) &&
789 ( xi - 1. + zeta <= 0.+eps) &&
790 ( eta - 1. + zeta <= 0.+eps) &&
791 ( -xi - 1. + zeta <= 0.+eps) &&
792 ( zeta >= 0.-eps))
793 return true;
794
795 return false;
796 }
797
798#ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
799 case INFHEX8:
800 case INFHEX16:
801 case INFHEX18:
802 {
803 // The reference infhex8 is a [-1,1]^3.
804 if ((xi >= -1.-eps) &&
805 (xi <= 1.+eps) &&
806 (eta >= -1.-eps) &&
807 (eta <= 1.+eps) &&
808 (zeta >= -1.-eps) &&
809 (zeta <= 1.+eps))
810 {
811 return true;
812 }
813 return false;
814 }
815
816 case INFPRISM6:
817 case INFPRISM12:
818 {
819 // inside the reference triangle with zeta in [-1,1]
820 if ((xi >= 0.-eps) &&
821 (eta >= 0.-eps) &&
822 (zeta >= -1.-eps) &&
823 (zeta <= 1.+eps) &&
824 ((xi + eta) <= 1.+eps))
825 {
826 return true;
827 }
828
829 return false;
830 }
831#endif
832
833 default:
834 libmesh_error_msg("ERROR: Unknown element type " << Utility::enum_to_string(t));
835 }
836
837 // If we get here then the point is _not_ in the
838 // reference element. Better return false.
839
840 return false;
841}

References libMesh::EDGE2, libMesh::EDGE3, libMesh::EDGE4, libMesh::Utility::enum_to_string(), libMesh::HEX20, libMesh::HEX27, libMesh::HEX8, libMesh::INFHEX16, libMesh::INFHEX18, libMesh::INFHEX8, libMesh::INFPRISM12, libMesh::INFPRISM6, libMesh::NODEELEM, libMesh::PRISM15, libMesh::PRISM18, libMesh::PRISM20, libMesh::PRISM21, libMesh::PRISM6, libMesh::PYRAMID13, libMesh::PYRAMID14, libMesh::PYRAMID18, libMesh::PYRAMID5, libMesh::QUAD4, libMesh::QUAD8, libMesh::QUAD9, libMesh::QUADSHELL4, libMesh::QUADSHELL8, libMesh::QUADSHELL9, libMesh::Real, libMesh::TET10, libMesh::TET14, libMesh::TET4, libMesh::TRI3, libMesh::TRI6, libMesh::TRI7, and libMesh::TRISHELL3.

Referenced by libMesh::FEInterface::ifem_on_reference_element(), and libMesh::FEInterface::on_reference_element().

◆ print_d2phi()

void libMesh::FEGenericBase< FEOutputType< T >::type >::print_d2phi ( std::ostream &  os) const
overridevirtualinherited

Prints the value of each shape function's second derivatives at each quadrature point.

Implements libMesh::FEAbstract.

Definition at line 535 of file fe_base.C.

954{
955 for (auto i : index_range(dphi))
956 for (auto j : index_range(dphi[i]))
957 os << " d2phi[" << i << "][" << j << "]=" << d2phi[i][j];
958}

◆ print_dphi()

void libMesh::FEGenericBase< FEOutputType< T >::type >::print_dphi ( std::ostream &  os) const
overridevirtualinherited

Prints the value of each shape function's derivative at each quadrature point.

Implements libMesh::FEAbstract.

Definition at line 526 of file fe_base.C.

896{
897 for (auto i : index_range(dphi))
898 for (auto j : index_range(dphi[i]))
899 os << " dphi[" << i << "][" << j << "]=" << dphi[i][j];
900}

◆ print_dual_d2phi()

void libMesh::FEGenericBase< FEOutputType< T >::type >::print_dual_d2phi ( std::ostream &  os) const
overridevirtualinherited

Implements libMesh::FEAbstract.

Definition at line 536 of file fe_base.C.

962{
963 for (auto i : index_range(dual_d2phi))
964 for (auto j : index_range(dual_d2phi[i]))
965 os << " dual_d2phi[" << i << "][" << j << "]=" << dual_d2phi[i][j];
966}

◆ print_dual_dphi()

void libMesh::FEGenericBase< FEOutputType< T >::type >::print_dual_dphi ( std::ostream &  os) const
overridevirtualinherited

Implements libMesh::FEAbstract.

Definition at line 527 of file fe_base.C.

904{
905 for (auto i : index_range(dphi))
906 for (auto j : index_range(dphi[i]))
907 os << " dual_dphi[" << i << "][" << j << "]=" << dual_dphi[i][j];
908}

◆ print_dual_phi()

void libMesh::FEGenericBase< FEOutputType< T >::type >::print_dual_phi ( std::ostream &  os) const
overridevirtualinherited

Implements libMesh::FEAbstract.

Definition at line 520 of file fe_base.C.

885{
886 for (auto i : index_range(dual_phi))
887 for (auto j : index_range(dual_phi[i]))
888 os << " dual_phi[" << i << "][" << j << "]=" << dual_phi[i][j] << std::endl;
889}

◆ print_info() [1/2]

void libMesh::FEAbstract::print_info ( std::ostream &  os) const
inherited

Prints all the relevant information about the current element.

Definition at line 859 of file fe_abstract.C.

860{
861 os << "phi[i][j]: Shape function i at quadrature pt. j" << std::endl;
862 this->print_phi(os);
863
864 os << "dphi[i][j]: Shape function i's gradient at quadrature pt. j" << std::endl;
865 this->print_dphi(os);
866
867 os << "XYZ locations of the quadrature pts." << std::endl;
868 this->print_xyz(os);
869
870 os << "Values of JxW at the quadrature pts." << std::endl;
871 this->print_JxW(os);
872}
void print_JxW(std::ostream &os) const
Prints the Jacobian times the weight for each quadrature point.
virtual void print_dphi(std::ostream &os) const =0
Prints the value of each shape function's derivative at each quadrature point.
virtual void print_phi(std::ostream &os) const =0
Prints the value of each shape function at each quadrature point.
void print_xyz(std::ostream &os) const
Prints the spatial location of each quadrature point (on the physical element).

References libMesh::FEAbstract::print_dphi(), libMesh::FEAbstract::print_JxW(), libMesh::FEAbstract::print_phi(), and libMesh::FEAbstract::print_xyz().

◆ print_info() [2/2]

void libMesh::ReferenceCounter::print_info ( std::ostream &  out_stream = libMesh::out)
staticinherited

Prints the reference information, by default to libMesh::out.

Definition at line 81 of file reference_counter.C.

82{
84 out_stream << ReferenceCounter::get_info();
85}
static std::string get_info()
Gets a string containing the reference information.

References libMesh::ReferenceCounter::_enable_print_counter, and libMesh::ReferenceCounter::get_info().

Referenced by libMesh::LibMeshInit::~LibMeshInit().

◆ print_JxW()

void libMesh::FEAbstract::print_JxW ( std::ostream &  os) const
inherited

Prints the Jacobian times the weight for each quadrature point.

Definition at line 846 of file fe_abstract.C.

847{
848 this->_fe_map->print_JxW(os);
849}

References libMesh::FEAbstract::_fe_map.

Referenced by libMesh::FEAbstract::print_info().

◆ print_phi()

void libMesh::FEGenericBase< FEOutputType< T >::type >::print_phi ( std::ostream &  os) const
overridevirtualinherited

Prints the value of each shape function at each quadrature point.

Implements libMesh::FEAbstract.

Definition at line 519 of file fe_base.C.

877{
878 for (auto i : index_range(phi))
879 for (auto j : index_range(phi[i]))
880 os << " phi[" << i << "][" << j << "]=" << phi[i][j] << std::endl;
881}

◆ print_xyz()

void libMesh::FEAbstract::print_xyz ( std::ostream &  os) const
inherited

Prints the spatial location of each quadrature point (on the physical element).

Definition at line 853 of file fe_abstract.C.

854{
855 this->_fe_map->print_xyz(os);
856}

References libMesh::FEAbstract::_fe_map.

Referenced by libMesh::FEAbstract::print_info().

◆ reinit() [1/2]

void libMesh::FE< Dim, T >::reinit ( const Elem elem,
const std::vector< Point > *const  pts = nullptr,
const std::vector< Real > *const  weights = nullptr 
)
overridevirtualinherited

This is at the core of this class.

Use this for each new element in the mesh. Reinitializes all the physical element-dependent data based on the current element elem. By default the shape functions and associated data are computed at the quadrature points specified by the quadrature rule qrule, but may be any points specified on the reference element specified in the optional argument pts.

Implements libMesh::FEAbstract.

Definition at line 564 of file fe.C.

200{
201 // We can be called with no element. If we're evaluating SCALAR
202 // dofs we'll still have work to do.
203 // libmesh_assert(elem);
204
205 // We're calculating now! Time to determine what.
207
208 // Try to avoid calling init_shape_functions
209 // even when shapes_need_reinit
210 bool cached_elem_still_fits = false;
211
212 // Most of the hard work happens when we have an actual element
213 if (elem)
214 {
215 // Initialize the shape functions at the user-specified
216 // points
217 if (pts != nullptr)
218 {
219 // Set the type and p level for this element
220 this->_elem = elem;
221 this->_elem_type = elem->type();
222 this->_elem_p_level = elem->p_level();
223 this->_p_level = this->_add_p_level_in_reinit * elem->p_level();
224
225 // Initialize the shape functions
226 this->_fe_map->template init_reference_to_physical_map<Dim>
227 (*pts, elem);
228 this->init_shape_functions (*pts, elem);
229
230 // The shape functions do not correspond to the qrule
231 this->shapes_on_quadrature = false;
232 }
233
234 // If there are no user specified points, we use the
235 // quadrature rule
236
237 // update the type in accordance to the current cell
238 // and reinit if the cell type has changed or (as in
239 // the case of the hierarchics) the shape functions need
240 // reinit, since they depend on the particular element shape
241 else
242 {
243 libmesh_assert(this->qrule);
244 this->qrule->init(*elem);
245
246 if (this->qrule->shapes_need_reinit())
247 this->shapes_on_quadrature = false;
248
249 // We're not going to bother trying to cache nodal
250 // points *and* weights for fancier mapping types.
251 if (this->get_type() != elem->type() ||
252 (elem->runtime_topology() &&
253 this->_elem != elem) ||
254 this->_elem_p_level != elem->p_level() ||
255 !this->shapes_on_quadrature ||
256 elem->mapping_type() != LAGRANGE_MAP)
257 {
258 // Set the type and p level for this element
259 this->_elem = elem;
260 this->_elem_type = elem->type();
261 this->_elem_p_level = elem->p_level();
262 this->_p_level = this->_add_p_level_in_reinit * elem->p_level();
263
264 // Initialize the shape functions
265 this->_fe_map->template init_reference_to_physical_map<Dim>
266 (this->qrule->get_points(), elem);
267 this->init_shape_functions (this->qrule->get_points(), elem);
268 }
269 else
270 {
271 this->_elem = elem;
272
273 // Check if cached element's nodes, edge and face orientations still fit
274 cached_elem_still_fits = this->matches_cache(elem);
275
276 // Initialize the shape functions if needed
277 if (this->shapes_need_reinit() && !cached_elem_still_fits)
278 {
279 this->_fe_map->template init_reference_to_physical_map<Dim>
280 (this->qrule->get_points(), elem);
281 this->init_shape_functions (this->qrule->get_points(), elem);
282 }
283 }
284
285 // Replace cached nodes, edge and face orientations if no longer fitting
286 if (this->shapes_need_reinit() && !cached_elem_still_fits && *caching)
287 this->cache(elem);
288
289 // The shape functions correspond to the qrule
290 this->shapes_on_quadrature = true;
291 }
292 }
293 else // With no defined elem, so mapping or caching to
294 // be done, and our "quadrature rule" is one point for nonlocal
295 // (SCALAR) variables and zero points for local variables.
296 {
297 this->_elem = nullptr;
298 this->_elem_type = INVALID_ELEM;
299 this->_elem_p_level = 0;
300 this->_p_level = 0;
301
302 if (!pts)
303 {
304 if (T == SCALAR)
305 {
306 this->qrule->get_points() =
307 std::vector<Point>(1,Point(0));
308
309 this->qrule->get_weights() =
310 std::vector<Real>(1,1);
311 }
312 else
313 {
314 this->qrule->get_points().clear();
315 this->qrule->get_weights().clear();
316 }
317
318 this->init_shape_functions (this->qrule->get_points(), elem);
319 }
320 else
321 this->init_shape_functions (*pts, elem);
322 }
323
324 // Compute the map for this element.
325 if (pts != nullptr)
326 {
327 if (weights != nullptr)
328 {
329 this->_fe_map->compute_map (this->dim, *weights, elem, this->calculate_d2phi);
330 }
331 else
332 {
333 std::vector<Real> dummy_weights (pts->size(), 1.);
334 this->_fe_map->compute_map (this->dim, dummy_weights, elem, this->calculate_d2phi);
335 }
336 }
337 else
338 {
339 this->_fe_map->compute_map (this->dim, this->qrule->get_weights(), elem, this->calculate_d2phi);
340 }
341
342 // Compute the shape functions and the derivatives at all of the
343 // quadrature points.
344 if (!cached_elem_still_fits)
345 {
346 if (pts != nullptr)
347 this->compute_shape_functions (elem,*pts);
348 else
349 this->compute_shape_functions(elem,this->qrule->get_points());
350 if (this->calculate_dual)
351 {
352 if (T != LAGRANGE)
353 nonlagrange_dual_warning();
354 // Check if we need to calculate the dual coefficients based on the default QRule
355 // We keep the default dual coeff calculation for the initial stage of the simulation
356 // and in the middel of the simulation when a customized QRule is not provided.
357 // This is used in MOOSE mortar-based contact. Currently, we re-compute dual_coeff
358 // for all the elements on the mortar segment mesh by setting `calculate_default_dual_coeff' = false
359 // in MOOSE (in `Assembly::reinitDual`) and use the customized QRule for calculating the dual shape coefficients
360 // This is to be improved in the future
361 if (elem && this->calculate_default_dual_coeff)
363 // The dual shape functions relies on the customized shape functions
364 // and the coefficient matrix, \p dual_coeff
366 }
367 }
368}
unsigned int dim
virtual void compute_shape_functions(const Elem *elem, const std::vector< Point > &qp) override
After having updated the jacobian and the transformation from local to global coordinates in FEMap::c...
Definition fe_base.C:762
void compute_dual_shape_functions()
Compute dual_phi, dual_dphi, dual_d2phi It is only valid for this to be called after reinit has occur...
Definition fe_base.h:792
bool matches_cache(const Elem *elem)
Check if the node locations, edge and face orientations held in the element cache match those of elem...
Definition fe.C:174
void cache(const Elem *elem)
Repopulate the element cache with the node locations, edge and face orientations of the element elem.
Definition fe.C:153
virtual void reinit_default_dual_shape_coeffs(const Elem *elem) override
This computes the default dual shape function coefficients.
Definition fe.C:394
virtual bool shapes_need_reinit() const override

◆ reinit() [2/2]

void libMesh::FE< Dim, T >::reinit ( const Elem elem,
const unsigned int  side,
const Real  tolerance = TOLERANCE,
const std::vector< Point > *const  pts = nullptr,
const std::vector< Real > *const  weights = nullptr 
)
overridevirtualinherited

Reinitializes all the physical element-dependent data based on the side of face.

The tolerance parameter is passed to the involved call to inverse_map(). By default the shape functions and associated data are computed at the quadrature points specified by the quadrature rule qrule, but may be any points specified on the reference side element specified in the optional argument pts.

Implements libMesh::FEAbstract.

Definition at line 591 of file fe_boundary.C.

114{
115 libmesh_assert(elem);
116 libmesh_assert (this->qrule != nullptr || pts != nullptr);
117 // We now do this for 1D elements!
118 // libmesh_assert_not_equal_to (Dim, 1);
119
120 // If we called this function redundantly (e.g. in an FEMContext
121 // that is asked not to do any side calculations) then let's skip the
122 // whole inverse_map process that calculates side points
123 if (this->calculating_nothing())
124 {
125 this->calculations_started = true; // Ironic
126 return;
127 }
128
129 // We're (possibly re-) calculating now! FIXME - we currently
130 // expect to be able to use side_map and JxW later, but we could
131 // optimize further here.
132 this->_fe_map->add_calculations();
133 this->_fe_map->get_JxW();
134 this->_fe_map->get_xyz();
136
137 // Build the side of interest
138 const std::unique_ptr<const Elem> side(elem->build_side_ptr(s));
139
140 // Find the max p_level to select
141 // the right quadrature rule for side integration
142 unsigned int side_p_level = elem->p_level();
143 if (elem->neighbor_ptr(s) != nullptr)
144 side_p_level = std::max(side_p_level, elem->neighbor_ptr(s)->p_level());
145
146 // Initialize the shape functions at the user-specified
147 // points
148 if (pts != nullptr)
149 {
150 // The shape functions do not correspond to the qrule
151 this->shapes_on_quadrature = false;
152
153 // Initialize the face shape functions
154 this->_fe_map->template init_face_shape_functions<Dim>(*pts, side.get());
155
156 // Compute the Jacobian*Weight on the face for integration
157 if (weights != nullptr)
158 {
159 this->_fe_map->compute_face_map (Dim, *weights, side.get());
160 }
161 else
162 {
163 std::vector<Real> dummy_weights (pts->size(), 1.);
164 this->_fe_map->compute_face_map (Dim, dummy_weights, side.get());
165 }
166 }
167 // If there are no user specified points, we use the
168 // quadrature rule
169 else
170 {
171 // initialize quadrature rule
172 this->qrule->init(*side, side_p_level);
173
174 if (this->qrule->shapes_need_reinit())
175 this->shapes_on_quadrature = false;
176
177 // FIXME - could this break if the same FE object was used
178 // for both volume and face integrals? - RHS
179 // We might not need to reinitialize the shape functions
180 if ((this->get_type() != elem->type()) ||
181 (elem->runtime_topology() &&
182 this->_elem != elem) ||
183 (side->type() != last_side) ||
184 (this->_elem_p_level != side_p_level) ||
185 this->shapes_need_reinit() ||
186 !this->shapes_on_quadrature)
187 {
188 // Set the element
189 this->_elem = elem;
190 this->_elem_type = elem->type();
191
192 // Set the last_side
193 last_side = side->type();
194
195 // Set the last p level
196 this->_p_level = this->_add_p_level_in_reinit * side_p_level;
197
198 // Initialize the face shape functions
199 this->_fe_map->template init_face_shape_functions<Dim>(this->qrule->get_points(), side.get());
200 }
201 else
202 this->_elem = elem;
203
204 // Compute the Jacobian*Weight on the face for integration
205 this->_fe_map->compute_face_map (Dim, this->qrule->get_weights(), side.get());
206
207 // The shape functions correspond to the qrule
208 this->shapes_on_quadrature = true;
209 }
210
211 // make a copy of the Jacobian for integration
212 const std::vector<Real> JxW_int(this->_fe_map->get_JxW());
213
214 // make a copy of shape on quadrature info
215 bool shapes_on_quadrature_side = this->shapes_on_quadrature;
216
217 // Find where the integration points are located on the
218 // full element.
219 const std::vector<Point> * ref_qp;
220 if (pts != nullptr)
221 ref_qp = pts;
222 else
223 ref_qp = &this->qrule->get_points();
224
225 std::vector<Point> qp;
226 this->side_map(elem, side.get(), s, *ref_qp, qp);
227
228 // compute the shape function and derivative values
229 // at the points qp
230 this->reinit (elem, &qp);
231
232 this->shapes_on_quadrature = shapes_on_quadrature_side;
233
234 this->_elem_p_level = side_p_level;
235
236 // copy back old data
237 this->_fe_map->get_JxW() = JxW_int;
238}
virtual void side_map(const Elem *elem, const Elem *side, const unsigned int s, const std::vector< Point > &reference_side_points, std::vector< Point > &reference_points) override
Computes the reference space quadrature points on the side of an element based on the side quadrature...
ElemType last_side
The last side and last edge we did a reinit on.
Definition fe.h:814

◆ reinit_default_dual_shape_coeffs()

void libMesh::FE< Dim, T >::reinit_default_dual_shape_coeffs ( const Elem elem)
overridevirtualinherited

This computes the default dual shape function coefficients.

The dual shape coefficients are utilized when calculating dual shape functions.

Reimplemented from libMesh::FEAbstract.

Definition at line 580 of file fe.C.

395{
396 libmesh_assert(elem);
397
398 FEType default_fe_type(this->get_order(), T);
399 QGauss default_qrule(elem->dim(), default_fe_type.default_quadrature_order());
400 default_qrule.init(*elem);
401 // In preparation of computing dual_coeff, we compute the default shape
402 // function values and use these to compute the dual shape coefficients.
403 // The TRUE dual_phi values are computed in compute_dual_shape_functions()
404 this->reinit_dual_shape_coeffs(elem, default_qrule.get_points(), default_qrule.get_weights());
405 // we do not compute default dual coeff many times as this can be expensive
407}
void set_calculate_default_dual_coeff(const bool val)
set calculate_default_dual_coeff as needed
virtual void reinit_dual_shape_coeffs(const Elem *elem, const std::vector< Point > &pts, const std::vector< Real > &JxW) override
This re-computes the dual shape function coefficients.
Definition fe.C:371

◆ reinit_dual_shape_coeffs()

void libMesh::FE< Dim, T >::reinit_dual_shape_coeffs ( const Elem elem,
const std::vector< Point > &  pts,
const std::vector< Real > &  JxW 
)
overridevirtualinherited

This re-computes the dual shape function coefficients.

The dual shape coefficients are utilized when calculating dual shape functions.

Reimplemented from libMesh::FEAbstract.

Definition at line 572 of file fe.C.

374{
375 // Set the type and p level for this element
376 this->_elem = elem;
377 this->_elem_type = elem->type();
378 this->_elem_p_level = elem->p_level();
379 this->_p_level = this->_add_p_level_in_reinit * elem->p_level();
380
381 const unsigned int n_shapes =
382 this->n_dofs(elem, this->get_order());
383
384 std::vector<std::vector<OutputShape>> phi_vals;
385 phi_vals.resize(n_shapes);
386 for (const auto i : make_range(phi_vals.size()))
387 phi_vals[i].resize(pts.size());
388
389 all_shapes(elem, this->get_order(), pts, phi_vals);
390 this->compute_dual_shape_coeffs(JxW, phi_vals);
391}
void compute_dual_shape_coeffs(const std::vector< Real > &JxW, const std::vector< std::vector< OutputShape > > &phi)
Compute the dual basis coefficients dual_coeff we rely on the JxW (or weights) and the phi values,...
Definition fe_base.h:800
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.

◆ request_dphi()

virtual void libMesh::FEGenericBase< FEOutputType< T >::type >::request_dphi ( ) const
inlineoverridevirtualinherited

request dphi calculations

Implements libMesh::FEAbstract.

Definition at line 238 of file fe_base.h.

239 { get_dphi(); }

◆ request_dual_dphi()

virtual void libMesh::FEGenericBase< FEOutputType< T >::type >::request_dual_dphi ( ) const
inlineoverridevirtualinherited

Implements libMesh::FEAbstract.

Definition at line 241 of file fe_base.h.

242 { get_dual_dphi(); }
const std::vector< std::vector< OutputGradient > > & get_dual_dphi() const
Definition fe_base.h:234

◆ request_dual_phi()

virtual void libMesh::FEGenericBase< FEOutputType< T >::type >::request_dual_phi ( ) const
inlineoverridevirtualinherited

Implements libMesh::FEAbstract.

Definition at line 223 of file fe_base.h.

224 { get_dual_phi(); }
const std::vector< std::vector< OutputShape > > & get_dual_phi() const
Definition fe_base.h:211

◆ request_phi()

virtual void libMesh::FEGenericBase< FEOutputType< T >::type >::request_phi ( ) const
inlineoverridevirtualinherited

request phi calculations

Implements libMesh::FEAbstract.

Definition at line 220 of file fe_base.h.

221 { get_phi(); }

◆ set_calculate_default_dual_coeff()

void libMesh::FEAbstract::set_calculate_default_dual_coeff ( const bool  val)
inlineinherited

set calculate_default_dual_coeff as needed

Definition at line 626 of file fe_abstract.h.

bool calculate_default_dual_coeff
Are we calculating the coefficient for the dual basis using the default qrule?

References libMesh::FEAbstract::calculate_default_dual_coeff.

◆ set_calculate_dual()

void libMesh::FEAbstract::set_calculate_dual ( const bool  val)
inlineinherited

set calculate_dual as needed

Definition at line 621 of file fe_abstract.h.

621{calculate_dual = val; }

References libMesh::FEAbstract::calculate_dual.

◆ set_fe_order()

void libMesh::FEAbstract::set_fe_order ( int  new_order)
inlineinherited

Sets the base FE order of the finite element.

Definition at line 531 of file fe_abstract.h.

531{ fe_type.order = new_order; }

References libMesh::FEAbstract::fe_type, and libMesh::FEType::order.

◆ shape() [1/195]

Real libMesh::FE< 1, SIDE_HIERARCHIC >::shape ( const Elem ,
const Order  ,
const unsigned int  i,
const Point p,
const bool   
)
inherited

Definition at line 155 of file fe_hierarchic_shape_1D.C.

160{
161 unsigned int right_side = p(0) > 0; // 0 false, 1 true
162 return (right_side == i);
163}

◆ shape() [2/195]

Real libMesh::FE< 0, BERNSTEIN >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 46 of file fe_bernstein_shape_0D.C.

51{
52 libmesh_assert_less (i, 1);
53 return 1.;
54}

◆ shape() [3/195]

Real libMesh::FE< 0, CLOUGH >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 46 of file fe_clough_shape_0D.C.

51{
52 libmesh_assert_less (i, 1);
53 return 1.;
54}

◆ shape() [4/195]

Real libMesh::FE< 0, HERMITE >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 46 of file fe_hermite_shape_0D.C.

51{
52 libmesh_assert_less (i, 1);
53 return 1.;
54}

◆ shape() [5/195]

Real libMesh::FE< 0, HIERARCHIC >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 71 of file fe_hierarchic_shape_0D.C.

76{
77 libmesh_assert_less (i, 1);
78 return 1.;
79}

◆ shape() [6/195]

Real libMesh::FE< 0, L2_HIERARCHIC >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 84 of file fe_hierarchic_shape_0D.C.

89{
90 libmesh_assert_less (i, 1);
91 return 1.;
92}

◆ shape() [7/195]

Real libMesh::FE< 0, L2_LAGRANGE >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 56 of file fe_lagrange_shape_0D.C.

61{
62 libmesh_assert_less (i, 1);
63 return 1.;
64}

◆ shape() [8/195]

Real libMesh::FE< 0, LAGRANGE >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 68 of file fe_lagrange_shape_0D.C.

73{
74 libmesh_assert_less (i, 1);
75 return 1.;
76}

◆ shape() [9/195]

Real libMesh::FE< 0, MONOMIAL >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 46 of file fe_monomial_shape_0D.C.

51{
52 libmesh_assert_less (i, 1);
53 return 1.;
54}

◆ shape() [10/195]

Real libMesh::FE< 0, RATIONAL_BERNSTEIN >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 46 of file fe_rational_shape_0D.C.

51{
52 libmesh_assert_less (i, 1);
53 return 1.;
54}

◆ shape() [11/195]

Real libMesh::FE< 0, SZABAB >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 46 of file fe_szabab_shape_0D.C.

51{
52 libmesh_assert_less (i, 1);
53 return 1.;
54}

◆ shape() [12/195]

Real libMesh::FE< 0, XYZ >::shape ( const Elem ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 46 of file fe_xyz_shape_0D.C.

51{
52 libmesh_assert_less (i, 1);
53 return 1.;
54}

◆ shape() [13/195]

Real libMesh::FE< 0, SIDE_HIERARCHIC >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 97 of file fe_hierarchic_shape_0D.C.

102{
103 libmesh_error_msg("No side variables in 0D!");
104 return 1.;
105}

◆ shape() [14/195]

RealGradient libMesh::FE< 0, NEDELEC_ONE >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 460 of file fe_nedelec_one.C.

461{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape() [15/195]

RealGradient libMesh::FE< 1, NEDELEC_ONE >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 487 of file fe_nedelec_one.C.

488{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape() [16/195]

RealGradient libMesh::FE< 0, RAVIART_THOMAS >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 552 of file fe_raviart.C.

553{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape() [17/195]

RealGradient libMesh::FE< 0, L2_RAVIART_THOMAS >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 558 of file fe_raviart.C.

559{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape() [18/195]

RealGradient libMesh::FE< 1, RAVIART_THOMAS >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 601 of file fe_raviart.C.

602{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape() [19/195]

RealGradient libMesh::FE< 1, L2_RAVIART_THOMAS >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 607 of file fe_raviart.C.

608{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape() [20/195]

Real libMesh::FE< 0, SCALAR >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 43 of file fe_scalar_shape_0D.C.

48{
49 return 1.;
50}

◆ shape() [21/195]

Real libMesh::FE< 1, SCALAR >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 43 of file fe_scalar_shape_1D.C.

48{
49 return 1.;
50}

◆ shape() [22/195]

Real libMesh::FE< 2, SCALAR >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 43 of file fe_scalar_shape_2D.C.

48{
49 return 1.;
50}

◆ shape() [23/195]

Real libMesh::FE< 3, SCALAR >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 43 of file fe_scalar_shape_3D.C.

48{
49 return 1.;
50}

◆ shape() [24/195]

Real libMesh::FE< 3, SZABAB >::shape ( const Elem ,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 48 of file fe_szabab_shape_3D.C.

53{
54 libmesh_error_msg("Szabo-Babuska polynomials are not defined in 3D");
55 return 0.;
56}

◆ shape() [25/195]

Real libMesh::FE< 1, HERMITE >::shape ( const Elem elem,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const Point p,
const bool  libmesh_dbg_varadd_p_level 
)
inherited

Definition at line 182 of file fe_hermite_shape_1D.C.

187{
188 libmesh_assert(elem);
189
190 // Coefficient naming: d(1)d(2n) is the coefficient of the
191 // global shape function corresponding to value 1 in terms of the
192 // local shape function corresponding to normal derivative 2
193 Real d1xd1x, d2xd2x;
194
195 hermite_compute_coefs(elem, d1xd1x, d2xd2x);
196
197 const ElemType type = elem->type();
198
199#ifndef NDEBUG
200 const unsigned int totalorder =
201 order + add_p_level * elem->p_level();
202#endif
203
204 switch (type)
205 {
206 // C1 functions on the C1 cubic edge
207 case EDGE2:
208 case EDGE3:
209 {
210 libmesh_assert_less (i, totalorder+1);
211
212 switch (i)
213 {
214 case 0:
215 return FEHermite<1>::hermite_raw_shape(0, p(0));
216 case 1:
217 return d1xd1x * FEHermite<1>::hermite_raw_shape(2, p(0));
218 case 2:
219 return FEHermite<1>::hermite_raw_shape(1, p(0));
220 case 3:
221 return d2xd2x * FEHermite<1>::hermite_raw_shape(3, p(0));
222 default:
223 return FEHermite<1>::hermite_raw_shape(i, p(0));
224 }
225 }
226 default:
227 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
228 }
229}
static Real hermite_raw_shape(const unsigned int basis_num, const Real xi)

◆ shape() [26/195]

static OutputShape libMesh::FE< Dim, T >::shape ( const Elem elem,
const Order  o,
const unsigned int  i,
const Point p,
const bool  add_p_level = true 
)
staticinherited
Returns
The value of the \( i^{th} \) shape function at point p. This method allows you to specify the dimension, element type, and order directly. This allows the method to be static.

On a p-refined element, o should be the base order of the element if add_p_level is left true, or can be the base order of the element if add_p_level is set to false.

◆ shape() [27/195]

Real libMesh::FE< 2, SUBDIVISION >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Subdivision finite elements.

Template specialization prototypes are needed for calling from inside FESubdivision::init_shape_functions

◆ shape() [28/195]

Real libMesh::FE< 1, BERNSTEIN >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 193 of file fe_bernstein_shape_1D.C.

198{
199 libmesh_assert(elem);
200
201 return FE<1,BERNSTEIN>::shape
202 (elem->type(),
203 order + add_p_level*elem->p_level(), i, p);
204}

◆ shape() [29/195]

Real libMesh::FE< 1, HIERARCHIC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 101 of file fe_hierarchic_shape_1D.C.

106{
107 libmesh_assert(elem);
108
109 return fe_hierarchic_1D_shape(elem->type(), order + add_p_level*elem->p_level(), i, p);
110}

◆ shape() [30/195]

Real libMesh::FE< 1, L2_HIERARCHIC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 130 of file fe_hierarchic_shape_1D.C.

135{
136 libmesh_assert(elem);
137
138 return fe_hierarchic_1D_shape(elem->type(), order + add_p_level*elem->p_level(), i, p);
139}

◆ shape() [31/195]

Real libMesh::FE< 2, HIERARCHIC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 173 of file fe_hierarchic_shape_2D.C.

178{
179 return fe_hierarchic_2D_shape<HIERARCHIC>(elem, order, i, p, add_p_level);
180}

◆ shape() [32/195]

Real libMesh::FE< 2, L2_HIERARCHIC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 196 of file fe_hierarchic_shape_2D.C.

201{
202 return fe_hierarchic_2D_shape<L2_HIERARCHIC>(elem, order, i, p, add_p_level);
203}

◆ shape() [33/195]

Real libMesh::FE< 2, SIDE_HIERARCHIC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 218 of file fe_hierarchic_shape_2D.C.

223{
224 libmesh_assert(elem);
225 const ElemType type = elem->type();
226
227 const Order totalorder = order + add_p_level*elem->p_level();
228
229 const unsigned int dofs_per_side = totalorder+1u;
230
231 switch (type)
232 {
233 case TRI6:
234 case TRI7:
235 {
236 libmesh_assert_less(i, 3*dofs_per_side);
237
238 // Flip odd degree of freedom values if necessary
239 // to keep continuity on sides. We'll flip xi/eta rather than
240 // flipping phi, so that we can use this to handle the "nodal"
241 // degrees of freedom too.
242 Real f = 1.;
243
244 const Real zeta1 = p(0);
245 const Real zeta2 = p(1);
246 const Real zeta0 = 1. - zeta1 - zeta2;
247
248 if (zeta1 > zeta2 && zeta0 > zeta2) // side 0
249 {
250 if (i >= dofs_per_side)
251 return 0;
252
253 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
254 return 1;
255
256 if ((i < 2 || i % 2) &&
258 f = -1;
259
260 return FE<1,HIERARCHIC>::shape(EDGE3, totalorder, i, f*(zeta1-zeta0));
261 }
262 else if (zeta1 > zeta0 && zeta2 > zeta0) // side 1
263 {
264 if (i < dofs_per_side ||
265 i >= 2*dofs_per_side)
266 return 0;
267
268 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
269 return 1;
270
271 const unsigned int side_i = i - dofs_per_side;
272
273 if ((side_i < 2 || side_i % 2) &&
275 f = -1;
276
277 return FE<1,HIERARCHIC>::shape(EDGE3, totalorder, side_i, f*(zeta2-zeta1));
278 }
279 else // side 2
280 {
281 libmesh_assert (zeta2 >= zeta1 && zeta0 >= zeta1); // On a corner???
282
283 if (i < 2*dofs_per_side)
284 return 0;
285
286 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
287 return 1;
288
289 const unsigned int side_i = i - 2*dofs_per_side;
290
291 if ((side_i < 2 || side_i % 2) &&
293 f = -1;
294
295 return FE<1,HIERARCHIC>::shape(EDGE3, totalorder, side_i, f*(zeta0-zeta2));
296 }
297 }
298 case QUAD8:
299 case QUADSHELL8:
300 case QUAD9:
301 case QUADSHELL9:
302 {
303 libmesh_assert_less(i, 4*dofs_per_side);
304
305 // Flip odd degree of freedom values if necessary
306 // to keep continuity on sides. We'll flip xi/eta rather than
307 // flipping phi, so that we can use this to handle the "nodal"
308 // degrees of freedom too.
309 Real f = 1.;
310
311 const Real xi = p(0), eta = p(1);
312 if (eta < xi)
313 {
314 if (eta < -xi) // side 0
315 {
316 if (i >= dofs_per_side)
317 return 0;
318
319 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
320 return 1;
321
322 if ((i < 2 || i % 2) &&
324 f = -1;
325
326 return FE<1,HIERARCHIC>::shape(EDGE3, totalorder, i, f*xi);
327 }
328 else // side 1
329 {
330 if (i < dofs_per_side ||
331 i >= 2*dofs_per_side)
332 return 0;
333
334 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
335 return 1;
336
337 const unsigned int side_i = i - dofs_per_side;
338
339 if ((side_i < 2 || side_i % 2) &&
341 f = -1;
342
343 return FE<1,HIERARCHIC>::shape(EDGE3, totalorder, side_i, f*eta);
344 }
345 }
346 else // xi < eta
347 {
348 if (eta > -xi) // side 2
349 {
350 if (i < 2*dofs_per_side ||
351 i >= 3*dofs_per_side)
352 return 0;
353
354 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
355 return 1;
356
357 const unsigned int side_i = i - 2*dofs_per_side;
358
359 if ((side_i < 2 || side_i % 2) &&
361 f = -1;
362
363 return FE<1,HIERARCHIC>::shape(EDGE3, totalorder, side_i, f*xi);
364 }
365 else // side 3
366 {
367 if (i < 3*dofs_per_side)
368 return 0;
369
370 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
371 return 1;
372
373 const unsigned int side_i = i - 3*dofs_per_side;
374
375 if ((side_i < 2 || side_i % 2) &&
377 f = -1;
378
379 return FE<1,HIERARCHIC>::shape(EDGE3, totalorder, side_i, f*eta);
380 }
381 }
382 }
383 default:
384 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(elem->type()));
385 }
386 return 0;
387}
bool positive_edge_orientation(const unsigned int i) const
Definition elem.C:3634

◆ shape() [34/195]

Real libMesh::FE< 3, HIERARCHIC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1201 of file fe_hierarchic_shape_3D.C.

1206{
1207 return fe_hierarchic_3D_shape<HIERARCHIC>(elem, order, i, p, add_p_level);
1208}

◆ shape() [35/195]

Real libMesh::FE< 3, L2_HIERARCHIC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1225 of file fe_hierarchic_shape_3D.C.

1230{
1231 return fe_hierarchic_3D_shape<L2_HIERARCHIC>(elem, order, i, p, add_p_level);
1232}

◆ shape() [36/195]

Real libMesh::FE< 3, SIDE_HIERARCHIC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1248 of file fe_hierarchic_shape_3D.C.

1253{
1254#if LIBMESH_DIM == 3
1255 libmesh_assert(elem);
1256 const ElemType type = elem->type();
1257
1258 const Order totalorder = order + add_p_level*elem->p_level();
1259
1260 switch (type)
1261 {
1262 case HEX27:
1263 {
1264 const unsigned int dofs_per_side = (totalorder+1u)*(totalorder+1u);
1265 libmesh_assert_less(i, 6*dofs_per_side);
1266
1267 const unsigned int sidenum = cube_side(p);
1268 if (sidenum > 5)
1269 return std::numeric_limits<Real>::quiet_NaN();
1270
1271 const unsigned int dof_offset = sidenum * dofs_per_side;
1272
1273 if (i < dof_offset) // i is on a previous side
1274 return 0;
1275
1276 if (i >= dof_offset + dofs_per_side) // i is on a later side
1277 return 0;
1278
1279 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
1280 return 1;
1281
1282 unsigned int side_i = i - dof_offset;
1283
1284 std::unique_ptr<const Elem> side = elem->build_side_ptr(sidenum);
1285
1286 Point sidep = cube_side_point(sidenum, p);
1287
1288 cube_remap(side_i, *side, totalorder, sidep);
1289
1290 return FE<2,HIERARCHIC>::shape(side.get(), order, side_i, sidep, add_p_level);
1291 }
1292
1293 case TET14:
1294 {
1295 const unsigned int dofs_per_side = (totalorder+1u)*(totalorder+2u)/2u;
1296 libmesh_assert_less(i, 4*dofs_per_side);
1297
1298 const Real zeta[4] = { Real(1.) - p(0) - p(1) - p(2), p(0), p(1), p(2) };
1299
1300 unsigned int face_num = 0;
1301 if (zeta[0] > zeta[3] &&
1302 zeta[1] > zeta[3] &&
1303 zeta[2] > zeta[3])
1304 {
1305 face_num = 0;
1306 }
1307 else if (zeta[0] > zeta[2] &&
1308 zeta[1] > zeta[2] &&
1309 zeta[3] > zeta[2])
1310 {
1311 face_num = 1;
1312 }
1313 else if (zeta[1] > zeta[0] &&
1314 zeta[2] > zeta[0] &&
1315 zeta[3] > zeta[0])
1316 {
1317 face_num = 2;
1318 }
1319 else
1320 {
1321 // We'd better not be right between two faces
1322 libmesh_assert (zeta[0] > zeta[1] &&
1323 zeta[2] > zeta[1] &&
1324 zeta[3] > zeta[1]);
1325 face_num = 3;
1326 }
1327
1328 if (i < face_num * dofs_per_side ||
1329 i >= (face_num+1) * dofs_per_side)
1330 return 0;
1331
1332 if (totalorder == 0)
1333 return 1;
1334
1335 const std::array<unsigned int, 3> face_vertex =
1336 oriented_tet_nodes(*elem, face_num);
1337
1338 // We only need a Tri3 to evaluate L2_HIERARCHIC on the affine
1339 // master element
1340 Tri3 side;
1341
1342 // We pinky swear not to modify these nodes
1343 Elem & e = const_cast<Elem &>(*elem);
1344 side.set_node(0, e.node_ptr(face_vertex[0]));
1345 side.set_node(1, e.node_ptr(face_vertex[1]));
1346 side.set_node(2, e.node_ptr(face_vertex[2]));
1347
1348 const unsigned int basisnum = i - face_num*dofs_per_side;
1349
1350 Point sidep {zeta[face_vertex[1]], zeta[face_vertex[2]]};
1351
1352 return FE<2,L2_HIERARCHIC>::shape(&side, totalorder,
1353 basisnum, sidep, false);
1354 }
1355
1356 case PRISM20:
1357 case PRISM21:
1358 {
1359 const unsigned int dofs_per_quad = (totalorder+1u)*(totalorder+1u);
1360 const unsigned int dofs_per_tri = (totalorder+1u)*(totalorder+2u)/2u;
1361 libmesh_assert_less(i, 3*dofs_per_quad + 2*dofs_per_tri);
1362
1363 // We only need a Tri3 or Quad4 to evaluate L2_HIERARCHIC on
1364 // the affine master element
1365 Tri3 tri;
1366 Quad4 quad;
1367 Elem * side = &quad;
1368 unsigned int dofs_on_side = dofs_per_quad;
1369
1370 // We pinky swear not to modify the nodes we'll point to
1371 Elem & e = const_cast<Elem &>(*elem);
1372
1373 Point sidep;
1374
1375 // Face number calculation is tricky - the ordering of side
1376 // nodes on Prisms does *not* match the ordering of sides!
1377 // (the mid-triangle side nodes were added "later")
1378 // Here face_num will be the numbering that matches the side
1379 // number, but i_offset will have to consider the nodal
1380 // ordering.
1381 unsigned int face_num = 0;
1382 unsigned int i_offset = 0;
1383
1384 // Triangular coordinates
1385 const Real zeta[3] = { Real(1.) - p(0) - p(1), p(0), p(1) };
1386
1387 // Closeness to midplane
1388 const Real zmid = 1 - std::abs(p(2));
1389
1390 if (zeta[1] > zeta[2] && zeta[0] > zeta[2] &&
1391 zmid > 3*zeta[2]) // face 1, quad
1392 {
1393 face_num = 1;
1394 i_offset = 0;
1395 }
1396 else if (zeta[1] > zeta[0] && zeta[2] > zeta[0] &&
1397 zmid > 3*zeta[0]) // face 2, quad
1398 {
1399 face_num = 2;
1400 i_offset = dofs_per_quad;
1401 }
1402 else if (zeta[0] > zeta[1] && zeta[2] > zeta[1] &&
1403 zmid > 3*zeta[1]) // face 3, quad
1404 {
1405 face_num = 3;
1406 i_offset = 2*dofs_per_quad;
1407 }
1408 else if (p(2) + 1 < 3*zeta[0] &&
1409 p(2) + 1 < 3*zeta[1] &&
1410 p(2) + 1 < 3*zeta[2]) // face 0, tri
1411 {
1412 face_num = 0;
1413 i_offset = 3*dofs_per_quad;
1414 dofs_on_side = dofs_per_tri;
1415 side = &tri;
1416 }
1417 else if (1 - p(2) < 3*zeta[0] &&
1418 1 - p(2) < 3*zeta[1] &&
1419 1 - p(2) < 3*zeta[2]) // face 4, tri
1420 {
1421 face_num = 4;
1422 i_offset = dofs_per_tri + 3*dofs_per_quad;
1423 dofs_on_side = dofs_per_tri;
1424 side = &tri;
1425 }
1426 else
1427 {
1428 libmesh_error_msg("Evaluating SIDE_HIERARCHIC right between two Prism faces?");
1429 }
1430
1431 if (i < i_offset ||
1432 i >= i_offset + dofs_on_side)
1433 return 0;
1434
1435 if (totalorder == 0)
1436 return 1;
1437
1438 const std::array<unsigned int, 4> face_vertex =
1439 oriented_prism_nodes(*elem, face_num);
1440
1441 side->set_node(0, e.node_ptr(face_vertex[0]));
1442 side->set_node(1, e.node_ptr(face_vertex[1]));
1443 side->set_node(2, e.node_ptr(face_vertex[2]));
1444 if (face_vertex[3] < 21)
1445 side->set_node(3, e.node_ptr(face_vertex[3]));
1446
1447 if (face_num == 0 || face_num == 4)
1448 sidep = {zeta[face_vertex[1]%3], zeta[face_vertex[2]%3]};
1449 else
1450 {
1451 // Transform a coordinate from the master prism to the
1452 // master quad, based on two vertex indices defining the
1453 // coordinate's direction
1454 auto coord_val = [p](int v1, int v2){
1455 if (v2-v1 == 3)
1456 return p(2);
1457 else if (v2-v1 == -3)
1458 return -p(2);
1459 else if (v1%3 == 0 && v2%3 == 1)
1460 return 2*p(0)-1;
1461 else if (v2%3 == 0 && v1%3 == 1)
1462 return 1-2*p(0);
1463 else if (v1%3 == 1 && v2%3 == 2)
1464 return p(1)-p(0);
1465 else if (v2%3 == 1 && v1%3 == 2)
1466 return p(0)-p(1);
1467 else if (v1%3 == 2 && v2%3 == 0)
1468 return 1-2*p(1);
1469 else if (v2%3 == 2 && v1%3 == 0)
1470 return 2*p(1)-1;
1471 else
1472 libmesh_error();
1473 };
1474
1475 sidep = {coord_val(face_vertex[0], face_vertex[1]),
1476 coord_val(face_vertex[0], face_vertex[3])};
1477 }
1478
1479 const unsigned int basisnum = i - i_offset;
1480
1481 return FE<2,L2_HIERARCHIC>::shape(side, totalorder,
1482 basisnum, sidep, false);
1483 }
1484
1485
1486 default:
1487 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
1488 }
1489
1490#else // LIBMESH_DIM != 3
1491 libmesh_ignore(elem, order, i, p, add_p_level);
1492 libmesh_not_implemented();
1493#endif
1494}
virtual Node *& set_node(const unsigned int i)
Definition elem.h:2567
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i)=0
static void dofs_on_side(const Elem *const elem, const Order o, unsigned int s, std::vector< unsigned int > &di, bool add_p_level=true)
Fills the vector di with the local degree of freedom indices associated with side s of element elem.
Definition fe.C:99
The QUAD4 is an element in 2D composed of 4 nodes.
Definition face_quad4.h:54
The Tri3 is an element in 2D composed of 3 nodes.
Definition face_tri3.h:62

◆ shape() [37/195]

RealGradient libMesh::FE< 0, HIERARCHIC_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 418 of file fe_hierarchic_vec.C.

421{
422 const Real value = FE<0,HIERARCHIC>::shape(elem, order, i, p, add_p_level);
424}
RealVectorValue RealGradient

◆ shape() [38/195]

RealGradient libMesh::FE< 0, L2_HIERARCHIC_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 447 of file fe_hierarchic_vec.C.

450{
451 return FE<0,HIERARCHIC_VEC>::shape(elem, order, i, p, add_p_level);
452}

◆ shape() [39/195]

RealGradient libMesh::FE< 1, HIERARCHIC_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 475 of file fe_hierarchic_vec.C.

478{
479 Real value = FE<1,HIERARCHIC>::shape(elem, order, i, p, add_p_level);
481}

◆ shape() [40/195]

RealGradient libMesh::FE< 1, L2_HIERARCHIC_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 503 of file fe_hierarchic_vec.C.

506{
507 return FE<1,HIERARCHIC_VEC>::shape(elem, order, i, p, add_p_level);
508}

◆ shape() [41/195]

RealGradient libMesh::FE< 2, HIERARCHIC_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 531 of file fe_hierarchic_vec.C.

534{
535 const Real value = FE<2,HIERARCHIC>::shape(elem, order, i/2, p, add_p_level);
536
537 switch( i%2 )
538 {
539 case 0:
541
542 case 1:
543 return libMesh::RealGradient( Real(0), value );
544
545 default:
546 libmesh_error_msg("i%2 must be either 0 or 1!");
547 }
548
549 //dummy
550 return libMesh::RealGradient();
551}

◆ shape() [42/195]

RealGradient libMesh::FE< 2, L2_HIERARCHIC_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 601 of file fe_hierarchic_vec.C.

604{
605 return FE<2,HIERARCHIC_VEC>::shape(elem, order, i, p, add_p_level);
606}

◆ shape() [43/195]

RealGradient libMesh::FE< 3, HIERARCHIC_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 628 of file fe_hierarchic_vec.C.

631{
632 const Real value = FE<3,HIERARCHIC>::shape(elem, order, i/3, p, add_p_level);
633
634 switch( i%3 )
635 {
636 case 0:
638
639 case 1:
640 return libMesh::RealGradient( Real(0), value );
641
642 case 2:
643 return libMesh::RealGradient( Real(0), Real(0), value );
644
645 default:
646 libmesh_error_msg("i%3 must be 0, 1, or 2!");
647 }
648
649 //dummy
650 return libMesh::RealGradient();
651}

◆ shape() [44/195]

RealGradient libMesh::FE< 3, L2_HIERARCHIC_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 709 of file fe_hierarchic_vec.C.

712{
713 return FE<3,HIERARCHIC_VEC>::shape(elem, order, i, p, add_p_level);
714}

◆ shape() [45/195]

Real libMesh::FE< 1, LAGRANGE >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 53 of file fe_lagrange_shape_1D.C.

58{
59 libmesh_assert(elem);
60
61 return fe_lagrange_1D_shape(order + add_p_level*elem->p_level(), i, p(0));
62}
Real fe_lagrange_1D_shape(const Order order, const unsigned int i, const Real xi)

◆ shape() [46/195]

Real libMesh::FE< 1, L2_LAGRANGE >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 78 of file fe_lagrange_shape_1D.C.

83{
84 libmesh_assert(elem);
85
86 return fe_lagrange_1D_shape(order + add_p_level*elem->p_level(), i, p(0));
87}

◆ shape() [47/195]

Real libMesh::FE< 2, LAGRANGE >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 94 of file fe_lagrange_shape_2D.C.

99{
100 libmesh_assert(elem);
101
102 // call the orientation-independent shape functions
103 return fe_lagrange_2D_shape<LAGRANGE>(elem->type(), elem, order + add_p_level*elem->p_level(), i, p);
104}

◆ shape() [48/195]

Real libMesh::FE< 2, L2_LAGRANGE >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 109 of file fe_lagrange_shape_2D.C.

114{
115 libmesh_assert(elem);
116
117 // call the orientation-independent shape functions
118 return fe_lagrange_2D_shape<L2_LAGRANGE>(elem->type(), elem, order + add_p_level*elem->p_level(), i, p);
119}

◆ shape() [49/195]

Real libMesh::FE< 3, LAGRANGE >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 441 of file fe_lagrange_shape_3D.C.

446{
447 libmesh_assert(elem);
448
449 // call the orientation-independent shape functions
450 return fe_lagrange_3D_shape<LAGRANGE>(elem->type(), order + add_p_level*elem->p_level(), elem, i, p);
451}

◆ shape() [50/195]

Real libMesh::FE< 3, L2_LAGRANGE >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 456 of file fe_lagrange_shape_3D.C.

461{
462 libmesh_assert(elem);
463
464 // call the orientation-independent shape functions
465 return fe_lagrange_3D_shape<L2_LAGRANGE>(elem->type(), order + add_p_level*elem->p_level(), elem, i, p);
466}

◆ shape() [51/195]

RealGradient libMesh::FE< 0, LAGRANGE_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 958 of file fe_lagrange_vec.C.

961{
962 Real value = FE<0,LAGRANGE>::shape( elem->type(), order + add_p_level*elem->p_level(), i, p);
964}

◆ shape() [52/195]

RealGradient libMesh::FE< 0, L2_LAGRANGE_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 987 of file fe_lagrange_vec.C.

990{
991 return FE<0,LAGRANGE_VEC>::shape(elem, order, i, p, add_p_level);
992}

◆ shape() [53/195]

RealGradient libMesh::FE< 1, LAGRANGE_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1014 of file fe_lagrange_vec.C.

1017{
1018 Real value = FE<1,LAGRANGE>::shape( elem->type(), order + add_p_level*elem->p_level(), i, p);
1019 return libMesh::RealGradient( value );
1020}

◆ shape() [54/195]

RealGradient libMesh::FE< 1, L2_LAGRANGE_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1042 of file fe_lagrange_vec.C.

1045{
1046 return FE<1,LAGRANGE_VEC>::shape(elem, order, i, p, add_p_level);
1047}

◆ shape() [55/195]

RealGradient libMesh::FE< 2, LAGRANGE_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1069 of file fe_lagrange_vec.C.

1072{
1073 Real value = FE<2,LAGRANGE>::shape( elem->type(), order + add_p_level*elem->p_level(), i/2, p );
1074
1075 switch( i%2 )
1076 {
1077 case 0:
1078 return libMesh::RealGradient( value );
1079
1080 case 1:
1081 return libMesh::RealGradient( Real(0), value );
1082
1083 default:
1084 libmesh_error_msg("i%2 must be either 0 or 1!");
1085 }
1086
1087 //dummy
1088 return libMesh::RealGradient();
1089}

◆ shape() [56/195]

RealGradient libMesh::FE< 2, L2_LAGRANGE_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1139 of file fe_lagrange_vec.C.

1142{
1143 return FE<2,LAGRANGE_VEC>::shape(elem, order, i, p, add_p_level);
1144}

◆ shape() [57/195]

RealGradient libMesh::FE< 3, LAGRANGE_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1166 of file fe_lagrange_vec.C.

1169{
1170 Real value = FE<3,LAGRANGE>::shape( elem->type(), order + add_p_level*elem->p_level(), i/3, p );
1171
1172 switch( i%3 )
1173 {
1174 case 0:
1175 return libMesh::RealGradient( value );
1176
1177 case 1:
1178 return libMesh::RealGradient( Real(0), value );
1179
1180 case 2:
1181 return libMesh::RealGradient( Real(0), Real(0), value );
1182
1183 default:
1184 libmesh_error_msg("i%3 must be 0, 1, or 2!");
1185 }
1186
1187 //dummy
1188 return libMesh::RealGradient();
1189}

◆ shape() [58/195]

RealGradient libMesh::FE< 3, L2_LAGRANGE_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1246 of file fe_lagrange_vec.C.

1249{
1250 return FE<3,LAGRANGE_VEC>::shape(elem, order, i, p, add_p_level);
1251}

◆ shape() [59/195]

Real libMesh::FE< 1, MONOMIAL >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 72 of file fe_monomial_shape_1D.C.

77{
78 libmesh_assert(elem);
79
80 return FE<1,MONOMIAL>::shape(elem->type(), order + add_p_level*elem->p_level(), i, p);
81}

◆ shape() [60/195]

Real libMesh::FE< 2, MONOMIAL >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 122 of file fe_monomial_shape_2D.C.

127{
128 libmesh_assert(elem);
129
130 // by default call the orientation-independent shape functions
131 return FE<2,MONOMIAL>::shape(elem->type(), order + add_p_level*elem->p_level(), i, p);
132}

◆ shape() [61/195]

Real libMesh::FE< 3, MONOMIAL >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 190 of file fe_monomial_shape_3D.C.

195{
196 libmesh_assert(elem);
197
198 // call the orientation-independent shape functions
199 return FE<3,MONOMIAL>::shape(elem->type(), order + add_p_level*elem->p_level(), i, p);
200}

◆ shape() [62/195]

RealVectorValue libMesh::FE< 0, MONOMIAL_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 393 of file fe_monomial_vec.C.

398{
399 Real value =
400 FE<0, MONOMIAL>::shape(elem->type(), order + add_p_level*elem->p_level(), i, p);
402}
VectorValue< Real > RealVectorValue
Useful typedefs to allow transparent switching between Real and Complex data types.

◆ shape() [63/195]

RealVectorValue libMesh::FE< 1, MONOMIAL_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 438 of file fe_monomial_vec.C.

443{
444 Real value =
445 FE<1, MONOMIAL>::shape(elem->type(), order + add_p_level*elem->p_level(), i, p);
447}

◆ shape() [64/195]

RealVectorValue libMesh::FE< 2, MONOMIAL_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 482 of file fe_monomial_vec.C.

487{
488 Real value =
489 FE<2, MONOMIAL>::shape(elem->type(), order + add_p_level*elem->p_level(), i / 2, p);
490
491 switch (i % 2)
492 {
493 case 0:
495
496 case 1:
498
499 default:
500 libmesh_error_msg("i%2 must be either 0 or 1!");
501 }
502
503 // dummy
505}

◆ shape() [65/195]

RealVectorValue libMesh::FE< 3, MONOMIAL_VEC >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 568 of file fe_monomial_vec.C.

573{
574 Real value =
575 FE<3, MONOMIAL>::shape(elem->type(), order + add_p_level*elem->p_level(), i / 3, p);
576
577 switch (i % 3)
578 {
579 case 0:
581
582 case 1:
584
585 case 2:
586 return libMesh::RealVectorValue(Real(0), Real(0), value);
587
588 default:
589 libmesh_error_msg("i%3 must be 0, 1, or 2!");
590 }
591
592 // dummy
594}

◆ shape() [66/195]

RealGradient libMesh::FE< 2, NEDELEC_ONE >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 32 of file fe_nedelec_one_shape_2D.C.

37{
38#if LIBMESH_DIM > 1
39 libmesh_assert(elem);
40
41 const Order totalorder = order + add_p_level*elem->p_level();
42 libmesh_assert_less(i, n_dofs(elem->type(), totalorder));
43
44 const char sign = i >= totalorder * elem->n_edges() || elem->positive_edge_orientation(i / totalorder) ? 1 : -1;
45 const unsigned int ii = sign > 0 ? i : (i / totalorder * 2 + 1) * totalorder - 1 - i;
46
47 const Real xi = p(0);
48 const Real eta = p(1);
49
50 switch (totalorder)
51 {
52 // linear Nedelec (first kind) shape functions
53 case FIRST:
54 {
55 switch (elem->type())
56 {
57 case QUAD8:
58 case QUAD9:
59 {
60 // Even with a loose inverse_map tolerance we ought to
61 // be nearly on the element interior in master
62 // coordinates
63 libmesh_assert_less_equal ( std::fabs(xi), 1.0+10*TOLERANCE );
64 libmesh_assert_less_equal ( std::fabs(eta), 1.0+10*TOLERANCE );
65
66 switch(ii)
67 {
68 case 0:
69 return sign * RealGradient( -0.25*(1.0-eta), 0.0 );
70 case 1:
71 return sign * RealGradient( 0.0, -0.25*(1.0+xi) );
72 case 2:
73 return sign * RealGradient( 0.25*(1.0+eta), 0.0 );
74 case 3:
75 return sign * RealGradient( 0.0, -0.25*(xi-1.0) );
76
77 default:
78 libmesh_error_msg("Invalid i = " << i);
79 }
80 }
81
82 case TRI6:
83 case TRI7:
84 {
85 switch(ii)
86 {
87 case 0:
88 return sign * RealGradient( -1.0+eta, -xi );
89 case 1:
90 return sign * RealGradient( eta, -xi );
91 case 2:
92 return sign * RealGradient( eta, -xi+1.0 );
93
94 default:
95 libmesh_error_msg("Invalid i = " << i);
96 }
97 }
98
99 default:
100 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
101 }
102 }
103
104 // quadratic Nedelec (first kind) shape functions
105 case SECOND:
106 {
107 switch (elem->type())
108 {
109 case QUAD8:
110 case QUAD9:
111 {
112 // Even with a loose inverse_map tolerance we ought to
113 // be nearly on the element interior in master
114 // coordinates
115 libmesh_assert_less_equal ( std::fabs(xi), 1.0+10*TOLERANCE );
116 libmesh_assert_less_equal ( std::fabs(eta), 1.0+10*TOLERANCE );
117
118 const Real x = 0.5 * (xi + 1.0);
119 const Real y = 0.5 * (eta + 1.0);
120
121 switch(ii)
122 {
123 case 0:
124 return sign * RealGradient( 0.5*(-18.0*x*y*y+24.0*x*y-6.0*x+12.0*y*y-16.0*y+4.0), 0.0 );
125 case 1:
126 return sign * RealGradient( 0.5*( 18.0*x*y*y-24.0*x*y+6.0*x-6.0*y*y+8.0*y-2.0), 0.0 );
127 case 2:
128 return sign * RealGradient( 0.0, x*(-9.0*x*y+6.0*x+6.0*y-4.0) );
129 case 3:
130 return sign * RealGradient( 0.0, x*( 9.0*x*y-3.0*x-6.0*y+2.0) );
131 case 4:
132 return sign * RealGradient( y*(-9.0*x*y+6.0*x+3.0*y-2.0), 0.0 );
133 case 5:
134 return sign * RealGradient( y*( 9.0*x*y-6.0*x-6.0*y+4.0), 0.0 );
135 case 6:
136 return sign * RealGradient( 0.0, 0.5*(-18.0*x*x*y+6.0*x*x+24.0*x*y-8.0*x-6.0*y+2.0) );
137 case 7:
138 return sign * RealGradient( 0.0, 0.5*( 18.0*x*x*y-12.0*x*x-24.0*x*y+16.0*x+6.0*y-4.0) );
139 case 8:
140 return RealGradient( 0.0, 3.0*x*(3*x*y-2.0*x-3.0*y+2.0) );
141 case 9:
142 return RealGradient( 3.0*y*(-3.0*x*y+3.0*x+2.0*y-2.0), 0.0 );
143 case 10:
144 return RealGradient( 3.0*y*(3.0*x*y-3.0*x-y+1.0), 0.0 );
145 case 11:
146 return RealGradient( 0.0, 3.0*x*(-3.0*x*y+x+3.0*y-1.0) );
147
148 default:
149 libmesh_error_msg("Invalid i = " << i);
150 }
151 }
152
153 case TRI6:
154 case TRI7:
155 {
156 switch(ii)
157 {
158 case 0:
159 return sign * RealGradient( 8.0*xi*eta-6.0*xi+8.0*eta*eta-12.0*eta+4.0, 2.0*xi*(-4.0*xi-4.0*eta+3.0) );
160 case 1:
161 return sign * RealGradient( -8.0*xi*eta+6.0*xi+2.0*eta-2.0, 4.0*xi*(2.0*xi-1.0) );
162 case 2:
163 return sign * RealGradient( 2.0*eta*(1.0-4.0*xi), 4.0*xi*(2.0*xi-1.0) );
164 case 3:
165 return sign * RealGradient( 4.0*eta*(1.0-2.0*eta), 2.0*xi*(4.0*eta-1.0) );
166 case 4:
167 return sign * RealGradient( 4.0*eta*(1.0-2.0*eta), 8.0*xi*eta-2.0*xi-6.0*eta+2.0 );
168 case 5:
169 return sign * RealGradient( 2.0*eta*(4.0*xi+4*eta-3.0), -8.0*xi*xi-8.0*xi*eta+12.0*xi+6.0*eta-4.0 );
170 case 6:
171 return RealGradient( 8.0*eta*(-xi-2.0*eta+2.0), 8.0*xi*(xi+2.0*eta-1.0) );
172 case 7:
173 return RealGradient( 8.0*eta*(2.0*xi+eta-1.0), 8.0*xi*(-2.0*xi-eta+2.0) );
174
175 default:
176 libmesh_error_msg("Invalid i = " << i);
177 }
178 }
179
180 default:
181 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
182 }
183 }
184
185 // cubic Nedelec (first kind) shape functions
186 case THIRD:
187 {
188 switch (elem->type())
189 {
190 case QUAD8:
191 case QUAD9:
192 {
193 switch(ii)
194 {
195 case 0:
196 return sign * RealGradient(-81.*eta/4. - 9.*xi + 162.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 135.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 324.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 99./4. + 81.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 270.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 15.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 45.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
197 case 1:
198 return sign * RealGradient(27.*eta/8. + 15.*xi/4. - 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 135.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. + 135.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 75.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 51./8. - 27.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 135.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 15.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 75.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 15.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2., 0.);
199 case 2:
200 return sign * RealGradient(-27.*eta/4. - 6.*xi + 108.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 135.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 216.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 120.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 45./4. + 27.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 270.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 15.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 15.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
201 case 3:
202 return sign * RealGradient(0., 27.*xi/4. - 54.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 216.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 45.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 27./4. - 180.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 54.*(xi + 1.)*(xi + 1.)/(2.*2.) + 45.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
203 case 4:
204 return sign * RealGradient(0., -9.*xi/8. + 45.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 90.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 75.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 45.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 9./8. + 90.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 75.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 9.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 15.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2.);
205 case 5:
206 return sign * RealGradient(0., 9.*xi/4. - 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 144.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 45.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 9./4. - 180.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 18.*(xi + 1.)*(xi + 1.)/(2.*2.) + 15.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
207 case 6:
208 return sign * RealGradient(-9.*eta/4. + 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 45.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 144.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 120.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 9./4. + 18.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 180.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 15.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
209 case 7:
210 return sign * RealGradient(9.*eta/8. - 45.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 45.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. + 90.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 75.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 9./8. - 9.*(eta + 1.)*(eta + 1.)/(2.*2.) - 90.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 75.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 15.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2., 0.);
211 case 8:
212 return sign * RealGradient(-27.*eta/4. + 54.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 45.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 216.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 27./4. + 54.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 180.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 45.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
213 case 9:
214 return sign * RealGradient(0., 6.*eta + 27.*xi/4. - 108.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 216.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 135.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 45./4. - 15.*(eta + 1.)*(eta + 1.)/(2.*2.) - 270.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 27.*(xi + 1.)*(xi + 1.)/(2.*2.) + 15.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
215 case 10:
216 return sign * RealGradient(0., -15.*eta/4. - 27.*xi/8. + 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 135.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 75.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 135.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 51./8. + 15.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 75.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 27.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 15.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2.);
217 case 11:
218 return sign * RealGradient(0., 9.*eta + 81.*xi/4. - 162.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 324.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 135.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 99./4. - 15.*(eta + 1.)*(eta + 1.)/(2.*2.) - 270.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 81.*(xi + 1.)*(xi + 1.)/(2.*2.) + 45.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
219 case 12:
220 return RealGradient(0., 18.*xi - 144.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 324.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 120.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 18. - 270.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 81.*(xi + 1.)*(xi + 1.)/(2.*2.) + 45.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
221 case 13:
222 return RealGradient(0., -9.*xi/2. + 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 216.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 30.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 9./2. + 180.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 54.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 45.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
223 case 14:
224 return RealGradient(-18.*eta + 144.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 324.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 18. + 81.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 270.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 45.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
225 case 15:
226 return RealGradient(9.*eta/2. - 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 30.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 216.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 9./2. - 54.*(eta + 1.)*(eta + 1.)/(2.*2.) - 180.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 45.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
227 case 16:
228 return RealGradient(-6.*eta + 96.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 216.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 120.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 6. + 27.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 270.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 15.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
229 case 17:
230 return RealGradient(3.*eta/2. - 24.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 30.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 144.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 120.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3./2. - 18.*(eta + 1.)*(eta + 1.)/(2.*2.) - 180.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 15.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
231 case 18:
232 return RealGradient(0., 6.*xi - 96.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 216.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 120.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 6. - 270.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 27.*(xi + 1.)*(xi + 1.)/(2.*2.) + 15.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
233 case 19:
234 return RealGradient(0., -3.*xi/2. + 24.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 144.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 120.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 30.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 3./2. + 180.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 18.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 15.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
235 case 20:
236 return RealGradient(2.*eta + 2. - 9.*(eta + 1.)*(eta + 1.)/(2.*2.) + 5.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
237 case 21:
238 return RealGradient(0., 2.*xi + 2. - 9.*(xi + 1.)*(xi + 1.)/(2.*2.) + 5.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
239 case 22:
240 return RealGradient(0., -xi/2. - 1./2. + 6.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 5.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
241 case 23:
242 return RealGradient(-eta/2. - 1./2. + 6.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 5.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
243 default:
244 libmesh_error_msg("Invalid i = " << i);
245 }
246 }
247
248 case TRI6:
249 case TRI7:
250 {
251 switch(ii)
252 {
253 case 0:
254 return sign * RealGradient(120.*eta*xi - 54.*eta - 45.*eta*xi*xi - 36.*xi - 90.*xi*eta*eta + 9. + 90.*(eta*eta) + 30.*(xi*xi) - 45.*eta*eta*eta, -60.*eta*xi + 90.*eta*(xi*xi) + 18.*xi + 45.*xi*(eta*eta) - 60.*xi*xi + 45.*(xi*xi*xi));
255 case 1:
256 return sign * RealGradient(-75.*eta*xi/2. - 9.*eta/4. + 45.*eta*(xi*xi)/2. + 15.*xi + 45.*xi*(eta*eta)/2. - 3./2. + 15.*(eta*eta) - 15.*xi*xi - 45.*eta*eta*eta/4., -45.*eta*xi*xi/2. - 21.*xi/4. + 45.*xi*(eta*eta)/4. + 105.*(xi*xi)/4. - 45.*xi*xi*xi/2.);
257 case 2:
258 return sign * RealGradient(30.*eta*xi - 3.*eta - 45.*eta*xi*xi - 24.*xi + 3. + 30.*(xi*xi), 9.*xi - 45.*xi*xi + 45.*(xi*xi*xi));
259 case 3:
260 return sign * RealGradient(30.*eta*xi - 3.*eta - 45.*eta*xi*xi, 9.*xi - 45.*xi*xi + 45.*(xi*xi*xi));
261 case 4:
262 return sign * RealGradient(45.*eta*xi/2. - 6.*eta - 45.*eta*xi*xi/4. - 45.*xi*eta*eta + 75.*(eta*eta)/4. - 45.*eta*eta*eta/4., -45.*eta*xi/2. + 45.*eta*(xi*xi) + 6.*xi + 45.*xi*(eta*eta)/4. - 75.*xi*xi/4. + 45.*(xi*xi*xi)/4.);
263 case 5:
264 return sign * RealGradient(-9.*eta + 45.*(eta*eta) - 45.*eta*eta*eta, -30.*eta*xi + 3.*xi + 45.*xi*(eta*eta));
265 case 6:
266 return sign * RealGradient(-9.*eta + 45.*(eta*eta) - 45.*eta*eta*eta, -30.*eta*xi + 24.*eta + 3.*xi + 45.*xi*(eta*eta) - 3. - 30.*eta*eta);
267 case 7:
268 return sign * RealGradient(21.*eta/4. - 45.*eta*xi*xi/4. + 45.*xi*(eta*eta)/2. - 105.*eta*eta/4. + 45.*(eta*eta*eta)/2., 75.*eta*xi/2. - 15.*eta - 45.*eta*xi*xi/2. + 9.*xi/4. - 45.*xi*eta*eta/2. + 3./2. + 15.*(eta*eta) - 15.*xi*xi + 45.*(xi*xi*xi)/4.);
269 case 8:
270 return sign * RealGradient(60.*eta*xi - 18.*eta - 45.*eta*xi*xi - 90.*xi*eta*eta + 60.*(eta*eta) - 45.*eta*eta*eta, -120.*eta*xi + 36.*eta + 90.*eta*(xi*xi) + 54.*xi + 45.*xi*(eta*eta) - 9. - 30.*eta*eta - 90.*xi*xi + 45.*(xi*xi*xi));
271 case 9:
272 return RealGradient(-300.*eta*xi + 180.*eta + 90.*eta*(xi*xi) + 360.*xi*(eta*eta) - 450.*eta*eta + 270.*(eta*eta*eta), 300.*eta*xi - 360.*eta*xi*xi - 60.*xi - 270.*xi*eta*eta + 150.*(xi*xi) - 90.*xi*xi*xi);
273 case 10:
274 return RealGradient(300.*eta*xi - 60.*eta - 270.*eta*xi*xi - 360.*xi*eta*eta + 150.*(eta*eta) - 90.*eta*eta*eta, -300.*eta*xi + 360.*eta*(xi*xi) + 180.*xi + 90.*xi*(eta*eta) - 450.*xi*xi + 270.*(xi*xi*xi));
275 case 11:
276 return RealGradient(360.*eta*xi - 60.*eta - 180.*eta*xi*xi - 360.*xi*eta*eta + 60.*(eta*eta), -120.*eta*xi + 360.*eta*(xi*xi) + 60.*xi - 240.*xi*xi + 180.*(xi*xi*xi));
277 case 12:
278 return RealGradient(-240.*eta*xi + 30.*eta + 270.*eta*(xi*xi) + 180.*xi*(eta*eta) - 30.*eta*eta, 60.*eta*xi - 180.*eta*xi*xi - 90.*xi + 360.*(xi*xi) - 270.*xi*xi*xi);
279 case 13:
280 return RealGradient(60.*eta*xi - 90.*eta - 180.*xi*eta*eta + 360.*(eta*eta) - 270.*eta*eta*eta, -240.*eta*xi + 180.*eta*(xi*xi) + 30.*xi + 270.*xi*(eta*eta) - 30.*xi*xi);
281 case 14:
282 return RealGradient(-120.*eta*xi + 60.*eta + 360.*xi*(eta*eta) - 240.*eta*eta + 180.*(eta*eta*eta), 360.*eta*xi - 360.*eta*xi*xi - 60.*xi - 180.*xi*eta*eta + 60.*(xi*xi));
283 default:
284 libmesh_error_msg("Invalid i = " << i);
285 }
286 }
287
288 default:
289 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
290 } // end switch (type)
291 } // end case THIRD
292
293 // quartic Nedelec (first kind) shape functions
294 case FOURTH:
295 {
296 switch (elem->type())
297 {
298 case QUAD8:
299 case QUAD9:
300 {
301 switch(ii)
302 {
303 case 0:
304 return sign * RealGradient(-64.*eta - 30.*xi + 960.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1920.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 1120.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 4800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2100.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 86. + 480.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 7200.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 120.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 9600.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 640.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 5600.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 70.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 2450.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 280.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
305 case 1:
306 return sign * RealGradient(272.*eta/27. + 95.*xi/9. - 3040.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. + 6880.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 12320.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27. + 3800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/3. - 15200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 6650.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/9. + 523./27. - 680.*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 8600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 15400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 430.*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 34400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 15050.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/9. + 2720.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/27. - 61600.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27. + 770.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27. + 26950.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/27. - 1190.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/27., 0.);
307 case 2:
308 return sign * RealGradient(-128.*eta/27. - 50.*xi/9. + 1600.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. - 5440.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 12320.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27. - 2000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/3. + 8000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 3500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/9. - 262./27. + 320.*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 6800.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 15400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 340.*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 27200.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 11900.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/9. - 1280.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/27. + 61600.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27. - 770.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27. - 26950.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/27. + 560.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/27., 0.);
309 case 3:
310 return sign * RealGradient(16.*eta + 15.*xi - 480.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 1440.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 1050.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 29. - 120.*(eta + 1.)*(eta + 1.)/(2.*2.) - 5400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 4200.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 90.*(xi + 1.)*(xi + 1.)/(2.*2.) + 7200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 160.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 5600.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 70.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 2450.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 70.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
311 case 4:
312 return sign * RealGradient(0., -16.*xi + 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 3600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2100.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 480.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 280.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 16. + 3600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4200.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 240.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2100.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2450.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 480.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 280.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
313 case 5:
314 return sign * RealGradient(0., 68.*xi/27. - 760.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. + 1900.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 3800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/3. + 6650.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/9. + 1720.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/9. - 3080.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/27. + 68./27. - 4300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 8600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/3. - 15050.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/9. - 340.*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 7700.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 15400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 26950.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/27. + 680.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 1190.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/27.);
315 case 6:
316 return sign * RealGradient(0., -32.*xi/27. + 400.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. - 1000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 2000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/3. - 3500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/9. - 1360.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/9. + 3080.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/27. - 32./27. + 3400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 6800.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/3. + 11900.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/9. + 160.*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 7700.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 15400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 26950.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/27. - 320.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 560.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/27.);
317 case 7:
318 return sign * RealGradient(0., 4.*xi - 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 900.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1050.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 360.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 280.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4. - 2700.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3150.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 60.*(xi + 1.)*(xi + 1.)/(2.*2.) + 2100.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4200.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 120.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 70.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
319 case 8:
320 return sign * RealGradient(-4.*eta + 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 360.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 280.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 900.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 1800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1050.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 4. + 60.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 2700.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2100.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 5400.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3150.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 120.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2450.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 70.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
321 case 9:
322 return sign * RealGradient(32.*eta/27. - 400.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. + 1360.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 3080.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27. + 1000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/3. - 2000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/3. + 3500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/9. + 32./27. - 160.*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 3400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 7700.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. + 6800.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/3. - 11900.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/9. + 320.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 15400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 26950.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/27. - 560.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/27., 0.);
323 case 10:
324 return sign * RealGradient(-68.*eta/27. + 760.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. - 1720.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 3080.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27. - 1900.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/3. + 3800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/3. - 6650.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/9. - 68./27. + 340.*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 4300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 7700.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. - 8600.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/3. + 15050.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/9. - 680.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 15400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 26950.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/27. + 1190.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/27., 0.);
325 case 11:
326 return sign * RealGradient(16.*eta - 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 480.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 280.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 3600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2100.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 16. - 240.*(eta + 1.)*(eta + 1.)/(2.*2.) - 3600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2100.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 7200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4200.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 480.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4200.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2450.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 280.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
327 case 12:
328 return sign * RealGradient(0., -15.*eta - 16.*xi + 480.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1050.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1440.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 1120.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 29. + 90.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 5400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 120.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4200.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 70.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 5600.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2450.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 160.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 70.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
329 case 13:
330 return sign * RealGradient(0., 50.*eta/9. + 128.*xi/27. - 1600.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. + 2000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 8000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 3500.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/9. + 5440.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/9. - 12320.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/27. + 262./27. - 340.*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 6800.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 27200.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 11900.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/9. - 320.*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 15400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. + 770.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/27. - 61600.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27. + 26950.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/27. + 1280.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27. - 560.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/27.);
331 case 14:
332 return sign * RealGradient(0., -95.*eta/9. - 272.*xi/27. + 3040.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. - 3800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 15200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 6650.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/9. - 6880.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/9. + 12320.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/27. - 523./27. + 430.*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 8600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 34400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 15050.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/9. + 680.*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 15400.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. - 770.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/27. + 61600.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27. - 26950.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/27. - 2720.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27. + 1190.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/27.);
333 case 15:
334 return sign * RealGradient(0., 30.*eta + 64.*xi - 960.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1920.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 1120.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 86. - 120.*(eta + 1.)*(eta + 1.)/(2.*2.) - 7200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 9600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 480.*(xi + 1.)*(xi + 1.)/(2.*2.) + 4200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 70.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 5600.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 640.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 280.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
335 case 16:
336 return RealGradient(0., 52.*xi - 780.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3480.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1560.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 910.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 52. - 6960.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 9600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 464.*(xi + 1.)*(xi + 1.)/(2.*2.) + 4060.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 5600.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 640.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 280.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
337 case 17:
338 return RealGradient(0., 12.*xi - 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 1680.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3600.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 360.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 210.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 12. - 3360.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 7200.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 224.*(xi + 1.)*(xi + 1.)/(2.*2.) + 1960.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4200.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 480.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 280.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
339 case 18:
340 return RealGradient(0., 16.*xi - 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 240.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 480.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 280.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 16. - 480.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 32.*(xi + 1.)*(xi + 1.)/(2.*2.) + 280.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)));
341 case 19:
342 return RealGradient(-52.*eta + 780.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1560.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 910.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3480.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 4800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2100.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 52. + 464.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 6960.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4060.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 9600.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 640.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 5600.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2450.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 280.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
343 case 20:
344 return RealGradient(-12.*eta + 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 360.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 210.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1680.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 3600.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2100.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 12. + 224.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 3360.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1960.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 7200.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 480.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2450.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 280.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
345 case 21:
346 return RealGradient(-16.*eta + 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 480.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 280.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 240.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 16. + 32.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 480.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 280.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.), 0.);
347 case 22:
348 return RealGradient(13.*eta - 390.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 1170.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 910.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1740.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 1050.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 13. - 116.*(eta + 1.)*(eta + 1.)/(2.*2.) - 5220.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 4060.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 7200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 160.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 5600.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2450.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 70.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
349 case 23:
350 return RealGradient(3.*eta - 90.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 210.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 840.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 1800.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 1050.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 3. - 56.*(eta + 1.)*(eta + 1.)/(2.*2.) - 2520.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 1960.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 5400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 120.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4200.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2450.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 70.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
351 case 24:
352 return RealGradient(4.*eta - 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 360.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 280.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 120.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 4. - 8.*(eta + 1.)*(eta + 1.)/(2.*2.) - 360.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 280.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)), 0.);
353 case 25:
354 return RealGradient(0., -13.*xi + 390.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1740.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1050.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1170.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 910.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 13. + 5220.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 116.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4060.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 5600.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2450.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 160.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 70.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
355 case 26:
356 return RealGradient(0., -3.*xi + 90.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 840.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 1800.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1050.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 270.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 210.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3. + 2520.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 5400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 56.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1960.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2450.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 120.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 70.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
357 case 27:
358 return RealGradient(0., -4.*xi + 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 360.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 280.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4. + 360.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 8.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 280.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.));
359 case 28:
360 return RealGradient(12.*eta - 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 171.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 240.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 105.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 12. - 114.*(eta + 1.)*(eta + 1.)/(2.*2.) + 160.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 70.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
361 case 29:
362 return RealGradient(-6.*eta + 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 171.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 240.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 105.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 6. + 57.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 80.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 35.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
363 case 30:
364 return RealGradient(0., 12.*xi - 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 171.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 240.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 105.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 12. - 114.*(xi + 1.)*(xi + 1.)/(2.*2.) + 160.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 70.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
365 case 31:
366 return RealGradient(0., -6.*xi + 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 171.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 240.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 105.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 6. + 57.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 80.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 35.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
367 case 32:
368 return RealGradient(0., 2.*xi - 6.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 81.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 105.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 2. - 54.*(xi + 1.)*(xi + 1.)/(2.*2.) + 120.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 70.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
369 case 33:
370 return RealGradient(0., -xi + 6.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 81.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 105.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1. + 27.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 60.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 35.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
371 case 34:
372 return RealGradient(2.*eta - 6.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 81.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 105.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 2. - 54.*(eta + 1.)*(eta + 1.)/(2.*2.) + 120.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 70.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
373 case 35:
374 return RealGradient(-eta + 6.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 81.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 105.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 1. + 27.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 60.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 35.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
375 case 36:
376 return RealGradient(0., 6.*xi - 18.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 18.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 6. - 12.*(xi + 1.)*(xi + 1.)/(2.*2.));
377 case 37:
378 return RealGradient(-6.*eta + 18.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 18.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 6. + 12.*((eta + 1.)*(eta + 1.)/(2.*2.)), 0.);
379 case 38:
380 return RealGradient(3.*eta - 18.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 18.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 3. - 6.*(eta + 1.)*(eta + 1.)/(2.*2.), 0.);
381 case 39:
382 return RealGradient(0., -3.*xi + 18.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 18.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 3. + 6.*((xi + 1.)*(xi + 1.)/(2.*2.)));
383 default:
384 libmesh_error_msg("Invalid i = " << i);
385 }
386 }
387
388 case TRI6:
389 case TRI7:
390 {
391 switch(ii)
392 {
393 case 0:
394 return sign * RealGradient(720.*eta*xi - 160.*eta - 840.*eta*xi*xi + 224.*eta*(xi*xi*xi) - 120.*xi - 1260.*xi*eta*eta + 672.*xi*(eta*eta*eta) + 16. + 480.*(eta*eta) + 672.*(eta*eta)*(xi*xi) + 240.*(xi*xi) - 560.*eta*eta*eta - 140.*xi*xi*xi + 224.*(eta*eta*eta*eta), -240.*eta*xi + 840.*eta*(xi*xi) - 672.*eta*xi*xi*xi + 40.*xi + 420.*xi*(eta*eta) - 224.*xi*eta*eta*eta - 672.*eta*eta*xi*xi - 240.*xi*xi + 420.*(xi*xi*xi) - 224.*xi*xi*xi*xi);
395 case 1:
396 return sign * RealGradient(-200.*eta*xi - 76.*eta/27. + 2884.*eta*(xi*xi)/9. - 2464.*eta*xi*xi*xi/27. + 380.*xi/9. + 784.*xi*(eta*eta)/3. - 896.*xi*eta*eta*eta/9. - 68./27. + 608.*(eta*eta)/9. - 2240.*eta*eta*xi*xi/9. - 860.*xi*xi/9. - 3472.*eta*eta*eta/27. + 1540.*(xi*xi*xi)/27. + 1792.*(eta*eta*eta*eta)/27., 176.*eta*xi/9. - 2128.*eta*xi*xi/9. + 2240.*eta*(xi*xi*xi)/9. - 296.*xi/27. + 448.*xi*(eta*eta)/9. - 1792.*xi*eta*eta*eta/27. + 896.*(eta*eta)*(xi*xi)/9. + 800.*(xi*xi)/9. - 168.*xi*xi*xi + 2464.*(xi*xi*xi*xi)/27.);
397 case 2:
398 return sign * RealGradient(-16.*eta*xi + 112.*eta/27. - 1120.*eta*xi*xi/9. + 2464.*eta*(xi*xi*xi)/27. - 200.*xi/9. + 476.*xi*(eta*eta)/3. - 1120.*xi*eta*eta*eta/9. + 32./27. - 104.*eta*eta/9. + 224.*(eta*eta)*(xi*xi)/9. + 680.*(xi*xi)/9. - 56.*eta*eta*eta/27. - 1540.*xi*xi*xi/27. + 224.*(eta*eta*eta*eta)/27., 112.*eta*xi/9. - 392.*eta*xi*xi/9. - 224.*eta*xi*xi*xi/9. + 152.*xi/27. - 196.*xi*eta*eta/9. - 224.*xi*eta*eta*eta/27. + 1120.*(eta*eta)*(xi*xi)/9. - 512.*xi*xi/9. + 140.*(xi*xi*xi) - 2464.*xi*xi*xi*xi/27.);
399 case 3:
400 return sign * RealGradient(-72.*eta*xi + 4.*eta + 252.*eta*(xi*xi) - 224.*eta*xi*xi*xi + 60.*xi - 4. - 180.*xi*xi + 140.*(xi*xi*xi), -16.*xi + 144.*(xi*xi) - 336.*xi*xi*xi + 224.*(xi*xi*xi*xi));
401 case 4:
402 return sign * RealGradient(-72.*eta*xi + 4.*eta + 252.*eta*(xi*xi) - 224.*eta*xi*xi*xi, -16.*xi + 144.*(xi*xi) - 336.*xi*xi*xi + 224.*(xi*xi*xi*xi));
403 case 5:
404 return sign * RealGradient(-80.*eta*xi + 8.*eta + 448.*eta*(xi*xi)/3. - 1792.*eta*xi*xi*xi/27. + 784.*xi*(eta*eta)/3. - 448.*xi*eta*eta*eta/3. - 32.*eta*eta - 896.*eta*eta*xi*xi/3. + 280.*(eta*eta*eta)/9. - 224.*eta*eta*eta*eta/27., 56.*eta*xi - 896.*eta*xi*xi/3. + 896.*eta*(xi*xi*xi)/3. - 12.*xi - 140.*xi*eta*eta/3. + 224.*xi*(eta*eta*eta)/27. + 448.*(eta*eta)*(xi*xi)/3. + 80.*(xi*xi) - 1232.*xi*xi*xi/9. + 1792.*(xi*xi*xi*xi)/27.);
405 case 6:
406 return sign * RealGradient(-56.*eta*xi + 12.*eta + 140.*eta*(xi*xi)/3. - 224.*eta*xi*xi*xi/27. + 896.*xi*(eta*eta)/3. - 896.*xi*eta*eta*eta/3. - 80.*eta*eta - 448.*eta*eta*xi*xi/3. + 1232.*(eta*eta*eta)/9. - 1792.*eta*eta*eta*eta/27., 80.*eta*xi - 784.*eta*xi*xi/3. + 448.*eta*(xi*xi*xi)/3. - 8.*xi - 448.*xi*eta*eta/3. + 1792.*xi*(eta*eta*eta)/27. + 896.*(eta*eta)*(xi*xi)/3. + 32.*(xi*xi) - 280.*xi*xi*xi/9. + 224.*(xi*xi*xi*xi)/27.);
407 case 7:
408 return sign * RealGradient(16.*eta - 144.*eta*eta + 336.*(eta*eta*eta) - 224.*eta*eta*eta*eta, 72.*eta*xi - 4.*xi - 252.*xi*eta*eta + 224.*xi*(eta*eta*eta));
409 case 8:
410 return sign * RealGradient(16.*eta - 144.*eta*eta + 336.*(eta*eta*eta) - 224.*eta*eta*eta*eta, 72.*eta*xi - 60.*eta - 4.*xi - 252.*xi*eta*eta + 224.*xi*(eta*eta*eta) + 4. + 180.*(eta*eta) - 140.*eta*eta*eta);
411 case 9:
412 return sign * RealGradient(-112.*eta*xi/9. - 152.*eta/27. + 196.*eta*(xi*xi)/9. + 224.*eta*(xi*xi*xi)/27. + 392.*xi*(eta*eta)/9. + 224.*xi*(eta*eta*eta)/9. + 512.*(eta*eta)/9. - 1120.*eta*eta*xi*xi/9. - 140.*eta*eta*eta + 2464.*(eta*eta*eta*eta)/27., 16.*eta*xi + 200.*eta/9. - 476.*eta*xi*xi/3. + 1120.*eta*(xi*xi*xi)/9. - 112.*xi/27. + 1120.*xi*(eta*eta)/9. - 2464.*xi*eta*eta*eta/27. - 32./27. - 680.*eta*eta/9. - 224.*eta*eta*xi*xi/9. + 104.*(xi*xi)/9. + 1540.*(eta*eta*eta)/27. + 56.*(xi*xi*xi)/27. - 224.*xi*xi*xi*xi/27.);
413 case 10:
414 return sign * RealGradient(-176.*eta*xi/9. + 296.*eta/27. - 448.*eta*xi*xi/9. + 1792.*eta*(xi*xi*xi)/27. + 2128.*xi*(eta*eta)/9. - 2240.*xi*eta*eta*eta/9. - 800.*eta*eta/9. - 896.*eta*eta*xi*xi/9. + 168.*(eta*eta*eta) - 2464.*eta*eta*eta*eta/27., 200.*eta*xi - 380.*eta/9. - 784.*eta*xi*xi/3. + 896.*eta*(xi*xi*xi)/9. + 76.*xi/27. - 2884.*xi*eta*eta/9. + 2464.*xi*(eta*eta*eta)/27. + 68./27. + 860.*(eta*eta)/9. + 2240.*(eta*eta)*(xi*xi)/9. - 608.*xi*xi/9. - 1540.*eta*eta*eta/27. + 3472.*(xi*xi*xi)/27. - 1792.*xi*xi*xi*xi/27.);
415 case 11:
416 return sign * RealGradient(240.*eta*xi - 40.*eta - 420.*eta*xi*xi + 224.*eta*(xi*xi*xi) - 840.*xi*eta*eta + 672.*xi*(eta*eta*eta) + 240.*(eta*eta) + 672.*(eta*eta)*(xi*xi) - 420.*eta*eta*eta + 224.*(eta*eta*eta*eta), -720.*eta*xi + 120.*eta + 1260.*eta*(xi*xi) - 672.*eta*xi*xi*xi + 160.*xi + 840.*xi*(eta*eta) - 224.*xi*eta*eta*eta - 16. - 240.*eta*eta - 672.*eta*eta*xi*xi - 480.*xi*xi + 140.*(eta*eta*eta) + 560.*(xi*xi*xi) - 224.*xi*xi*xi*xi);
417 case 12:
418 return RealGradient(-3240.*eta*xi + 960.*eta + 3024.*eta*(xi*xi) - 672.*eta*xi*xi*xi + 9072.*xi*(eta*eta) - 6048.*xi*eta*eta*eta - 4320.*eta*eta - 4032.*eta*eta*xi*xi + 6048.*(eta*eta*eta) - 2688.*eta*eta*eta*eta, 2160.*eta*xi - 6048.*eta*xi*xi + 4032.*eta*(xi*xi*xi) - 240.*xi - 4536.*xi*eta*eta + 2688.*xi*(eta*eta*eta) + 6048.*(eta*eta)*(xi*xi) + 1080.*(xi*xi) - 1512.*xi*xi*xi + 672.*(xi*xi*xi*xi));
419 case 13:
420 return RealGradient(2160.*eta*xi - 240.*eta - 4536.*eta*xi*xi + 2688.*eta*(xi*xi*xi) - 6048.*xi*eta*eta + 4032.*xi*(eta*eta*eta) + 1080.*(eta*eta) + 6048.*(eta*eta)*(xi*xi) - 1512.*eta*eta*eta + 672.*(eta*eta*eta*eta), -3240.*eta*xi + 9072.*eta*(xi*xi) - 6048.*eta*xi*xi*xi + 960.*xi + 3024.*xi*(eta*eta) - 672.*xi*eta*eta*eta - 4032.*eta*eta*xi*xi - 4320.*xi*xi + 6048.*(xi*xi*xi) - 2688.*xi*xi*xi*xi);
421 case 14:
422 return RealGradient(-1944.*eta*xi + 144.*eta + 4536.*eta*(xi*xi) - 2016.*eta*xi*xi*xi + 2016.*xi*(eta*eta) - 144.*eta*eta - 4032.*eta*eta*xi*xi, 432.*eta*xi - 3024.*eta*xi*xi + 4032.*eta*(xi*xi*xi) - 216.*xi + 1728.*(xi*xi) - 3528.*xi*xi*xi + 2016.*(xi*xi*xi*xi));
423 case 15:
424 return RealGradient(1152.*eta*xi - 72.*eta - 3528.*eta*xi*xi + 2688.*eta*(xi*xi*xi) - 1008.*xi*eta*eta + 72.*(eta*eta) + 2016.*(eta*eta)*(xi*xi), -216.*eta*xi + 1512.*eta*(xi*xi) - 2016.*eta*xi*xi*xi + 288.*xi - 2304.*xi*xi + 4704.*(xi*xi*xi) - 2688.*xi*xi*xi*xi);
425 case 16:
426 return RealGradient(-216.*eta*xi + 288.*eta + 1512.*xi*(eta*eta) - 2016.*xi*eta*eta*eta - 2304.*eta*eta + 4704.*(eta*eta*eta) - 2688.*eta*eta*eta*eta, 1152.*eta*xi - 1008.*eta*xi*xi - 72.*xi - 3528.*xi*eta*eta + 2688.*xi*(eta*eta*eta) + 2016.*(eta*eta)*(xi*xi) + 72.*(xi*xi));
427 case 17:
428 return RealGradient(432.*eta*xi - 216.*eta - 3024.*xi*eta*eta + 4032.*xi*(eta*eta*eta) + 1728.*(eta*eta) - 3528.*eta*eta*eta + 2016.*(eta*eta*eta*eta), -1944.*eta*xi + 2016.*eta*(xi*xi) + 144.*xi + 4536.*xi*(eta*eta) - 2016.*xi*eta*eta*eta - 4032.*eta*eta*xi*xi - 144.*xi*xi);
429 case 18:
430 return RealGradient(-1332.*eta*xi + 216.*eta + 1638.*eta*(xi*xi) - 504.*eta*xi*xi*xi + 4788.*xi*(eta*eta) - 3528.*xi*eta*eta*eta - 1098.*eta*eta - 3024.*eta*eta*xi*xi + 1554.*(eta*eta*eta) - 672.*eta*eta*eta*eta, 1044.*eta*xi - 4032.*eta*xi*xi + 3024.*eta*(xi*xi*xi) - 144.*xi - 1638.*xi*eta*eta + 672.*xi*(eta*eta*eta) + 3528.*(eta*eta)*(xi*xi) + 774.*(xi*xi) - 1134.*xi*xi*xi + 504.*(xi*xi*xi*xi));
431 case 19:
432 return RealGradient(1044.*eta*xi - 144.*eta - 1638.*eta*xi*xi + 672.*eta*(xi*xi*xi) - 4032.*xi*eta*eta + 3024.*xi*(eta*eta*eta) + 774.*(eta*eta) + 3528.*(eta*eta)*(xi*xi) - 1134.*eta*eta*eta + 504.*(eta*eta*eta*eta), -1332.*eta*xi + 4788.*eta*(xi*xi) - 3528.*eta*xi*xi*xi + 216.*xi + 1638.*xi*(eta*eta) - 504.*xi*eta*eta*eta - 3024.*eta*eta*xi*xi - 1098.*xi*xi + 1554.*(xi*xi*xi) - 672.*xi*xi*xi*xi);
433 case 20:
434 return RealGradient(-216.*eta*xi - 48.*eta + 504.*eta*(xi*xi) - 168.*eta*xi*xi*xi - 756.*xi*eta*eta + 1008.*xi*(eta*eta*eta) + 720.*(eta*eta) - 1344.*eta*eta*eta + 672.*(eta*eta*eta*eta), -360.*eta*xi + 504.*eta*(xi*xi) + 12.*xi + 1008.*xi*(eta*eta) - 672.*xi*eta*eta*eta - 1008.*eta*eta*xi*xi + 72.*(xi*xi) - 252.*xi*xi*xi + 168.*(xi*xi*xi*xi));
435 case 21:
436 return RealGradient(-216.*eta*xi + 66.*eta - 378.*eta*xi*xi + 672.*eta*(xi*xi*xi) + 2268.*xi*(eta*eta) - 2016.*xi*eta*eta*eta - 486.*eta*eta - 1512.*eta*eta*xi*xi + 756.*(eta*eta*eta) - 336.*eta*eta*eta*eta, 1188.*eta*xi - 2772.*eta*xi*xi + 1512.*eta*(xi*xi*xi) + 6.*xi - 1512.*xi*eta*eta + 336.*xi*(eta*eta*eta) + 2016.*(eta*eta)*(xi*xi) - 468.*xi*xi + 1134.*(xi*xi*xi) - 672.*xi*xi*xi*xi);
437 case 22:
438 return RealGradient(1188.*eta*xi + 6.*eta - 1512.*eta*xi*xi + 336.*eta*(xi*xi*xi) - 2772.*xi*eta*eta + 1512.*xi*(eta*eta*eta) - 468.*eta*eta + 2016.*(eta*eta)*(xi*xi) + 1134.*(eta*eta*eta) - 672.*eta*eta*eta*eta, -216.*eta*xi + 2268.*eta*(xi*xi) - 2016.*eta*xi*xi*xi + 66.*xi - 378.*xi*eta*eta + 672.*xi*(eta*eta*eta) - 1512.*eta*eta*xi*xi - 486.*xi*xi + 756.*(xi*xi*xi) - 336.*xi*xi*xi*xi);
439 case 23:
440 return RealGradient(-360.*eta*xi + 12.*eta + 1008.*eta*(xi*xi) - 672.*eta*xi*xi*xi + 504.*xi*(eta*eta) + 72.*(eta*eta) - 1008.*eta*eta*xi*xi - 252.*eta*eta*eta + 168.*(eta*eta*eta*eta), -216.*eta*xi - 756.*eta*xi*xi + 1008.*eta*(xi*xi*xi) - 48.*xi + 504.*xi*(eta*eta) - 168.*xi*eta*eta*eta + 720.*(xi*xi) - 1344.*xi*xi*xi + 672.*(xi*xi*xi*xi));
441 default:
442 libmesh_error_msg("Invalid i = " << i);
443 }
444 }
445
446 default:
447 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
448 } // end switch (type)
449 } // end case FOURTH
450
451 // quintic Nedelec (first kind) shape functions
452 case FIFTH:
453 {
454 switch (elem->type())
455 {
456 case QUAD8:
457 case QUAD9:
458 {
459 switch(ii)
460 {
461 case 0:
462 return sign * RealGradient(-625.*eta/4. - 75.*xi + 3750.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 13125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 17500.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 7875.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 22500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 52500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 52500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 18900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 875./4. + 1875.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 78750.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 105000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 47250.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 525.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 183750.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 183750.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 66150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 4375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 245000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 110250.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 700.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 245000.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 88200.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 4375.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 110250.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 315.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 39690.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
463 case 1:
464 return sign * RealGradient(12125.*eta/512. + 2865.*xi/128. - 71625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. + 527625.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 340375.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 291375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 214875.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/32. - 501375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 501375.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/32. - 180495.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/32. + 22615./512. - 36375.*(eta + 1.)*(eta + 1.)/(2.*2.)/128. - 1582875.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/64. + 1021125.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 874125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. - 21105.*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 3693375.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 3693375.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 1329615.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. + 84875.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/128. - 2382625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 2039625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 13615.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. + 2382625.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/32. - 857745.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/32. - 84875.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. - 2039625.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. - 11655.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. + 734265.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. + 30555.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/128., 0.);
465 case 2:
466 return sign * RealGradient(-375.*eta/32. - 105.*xi/8. + 2625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/4. - 28875.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 23625.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 23625.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. - 7875.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 18375.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 18375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. + 6615.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/2. - 765./32. + 1125.*((eta + 1.)*(eta + 1.)/(2.*2.))/8. + 86625.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 70875.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 70875.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. + 1155.*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 202125.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 202125.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. - 72765.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/4. - 2625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/8. + 165375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 165375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. - 945.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. - 165375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. + 59535.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/2. + 2625.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. + 165375.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/8. - 59535.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/4. - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/8., 0.);
467 case 3:
468 return sign * RealGradient(2125.*eta/512. + 705.*xi/128. - 17625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. + 233625.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 242375.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 291375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 52875.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/32. - 123375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 123375.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/32. - 44415.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/32. + 4775./512. - 6375.*(eta + 1.)*(eta + 1.)/(2.*2.)/128. - 700875.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/64. + 727125.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 874125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. - 9345.*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 1635375.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 1635375.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 588735.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. + 14875.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/128. - 1696625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 2039625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 9695.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. + 1696625.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/32. - 610785.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/32. - 14875.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. - 2039625.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. - 11655.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. + 734265.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. + 5355.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/128., 0.);
469 case 4:
470 return sign * RealGradient(-125.*eta/4. - 30.*xi + 1500.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 7875.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 14000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 7875.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 9000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 21000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 21000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 7560.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 235./4. + 375.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 47250.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 84000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 47250.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 315.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 110250.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 110250.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 39690.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 875.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 196000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 110250.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 560.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 196000.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 70560.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 875.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 110250.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 315.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 39690.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 315.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
471 case 5:
472 return sign * RealGradient(0., 125.*xi/4. - 750.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 9000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 31500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 42000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 18900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 2625.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 3500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 1575.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 125./4. - 31500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 110250.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 147000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 66150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 750.*(xi + 1.)*(xi + 1.)/(2.*2.) + 42000.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 18900.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 147000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 196000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 88200.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 2625.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 66150.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 88200.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 3500.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
473 case 6:
474 return sign * RealGradient(0., -2425.*xi/512. + 14325.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. - 42975.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/16. + 300825.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 100275.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. + 180495.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/32. - 105525.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/128. + 68075.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 58275.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. - 2425./512. + 316575.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/32. - 2216025.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 738675.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/16. - 1329615.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 7275.*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 204225.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/16. + 174825.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/32. + 1429575.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 476525.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. + 857745.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/32. - 50925.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/128. - 1223775.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 407925.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/16. - 734265.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 16975.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/32. - 30555.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/128.);
475 case 7:
476 return sign * RealGradient(0., 75.*xi/32. - 525.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/4. + 1575.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 11025.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 7350.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 6615.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/2. + 5775.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/8. - 4725.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 4725.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. + 75./32. - 17325.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 121275.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 40425.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 72765.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/4. - 225.*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 14175.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 14175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 66150.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 59535.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/2. + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/8. + 99225.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. - 33075.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 59535.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/4. - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/8.);
477 case 8:
478 return sign * RealGradient(0., -425.*xi/512. + 3525.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. - 10575.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/16. + 74025.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 24675.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. + 44415.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/32. - 46725.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/128. + 48475.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 58275.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. - 425./512. + 140175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/32. - 981225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 327075.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/16. - 588735.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 1275.*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 145425.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/16. + 174825.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/32. + 1017975.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 339325.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. + 610785.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/32. - 8925.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/128. - 1223775.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 407925.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/16. - 734265.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 2975.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/32. - 5355.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/128.);
479 case 9:
480 return sign * RealGradient(0., 25.*xi/4. - 300.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 12600.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 16800.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 7560.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 1575.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2800.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 1575.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 25./4. - 18900.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 66150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 88200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 150.*(xi + 1.)*(xi + 1.)/(2.*2.) + 33600.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 18900.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 117600.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 156800.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 70560.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 525.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 66150.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 88200.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 700.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 315.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
481 case 10:
482 return sign * RealGradient(-25.*eta/4. + 300.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1575.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2800.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1575.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 3600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 12600.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 16800.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 7560.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 25./4. + 150.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 18900.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 33600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 18900.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 66150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 88200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 39690.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 525.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 117600.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 66150.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 156800.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 70560.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 700.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 88200.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 39690.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 315.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
483 case 11:
484 return sign * RealGradient(425.*eta/512. - 3525.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. + 46725.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 48475.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 58275.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 10575.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/16. - 74025.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 24675.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. - 44415.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/32. + 425./512. - 1275.*(eta + 1.)*(eta + 1.)/(2.*2.)/64. - 140175.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/32. + 145425.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/16. - 174825.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/32. + 981225.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 327075.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/16. + 588735.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. + 8925.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/128. - 1017975.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 1223775.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 339325.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. - 610785.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/32. - 2975.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/32. - 407925.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/16. + 734265.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. + 5355.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/128., 0.);
485 case 12:
486 return sign * RealGradient(-75.*eta/32. + 525.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/4. - 5775.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 4725.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 4725.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. - 1575.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 11025.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 7350.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 6615.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/2. - 75./32. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 17325.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 14175.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 14175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. - 121275.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 40425.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 72765.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/4. - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/8. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. - 66150.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 59535.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/2. + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 33075.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 59535.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/4. - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/8., 0.);
487 case 13:
488 return sign * RealGradient(2425.*eta/512. - 14325.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. + 105525.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 68075.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 58275.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 42975.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/16. - 300825.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 100275.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. - 180495.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/32. + 2425./512. - 7275.*(eta + 1.)*(eta + 1.)/(2.*2.)/64. - 316575.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/32. + 204225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/16. - 174825.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/32. + 2216025.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 738675.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/16. + 1329615.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. + 50925.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/128. - 1429575.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 1223775.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 476525.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. - 857745.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/32. - 16975.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/32. - 407925.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/16. + 734265.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. + 30555.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/128., 0.);
489 case 14:
490 return sign * RealGradient(-125.*eta/4. + 750.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 2625.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 3500.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1575.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 9000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 31500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 42000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 18900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 125./4. + 750.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 31500.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 42000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 18900.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 110250.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 147000.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 66150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 2625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 147000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 66150.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 196000.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 88200.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 3500.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 88200.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 39690.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
491 case 15:
492 return sign * RealGradient(0., 30.*eta + 125.*xi/4. - 1500.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 9000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 21000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 21000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 7560.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 7875.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 14000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 7875.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 235./4. - 315.*(eta + 1.)*(eta + 1.)/(2.*2.) - 47250.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 110250.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 110250.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 375.*(xi + 1.)*(xi + 1.)/(2.*2.) + 84000.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 47250.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 560.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 196000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 196000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 70560.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 875.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 110250.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 315.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 110250.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 875.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 315.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
493 case 16:
494 return sign * RealGradient(0., -705.*eta/128. - 2125.*xi/512. + 17625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. - 52875.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/32. + 123375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 123375.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/32. + 44415.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/32. - 233625.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/128. + 242375.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 291375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. - 4775./512. + 9345.*((eta + 1.)*(eta + 1.)/(2.*2.))/128. + 700875.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 1635375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 1635375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. - 588735.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 6375.*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 727125.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 874125.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. - 9695.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 1696625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 1696625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/32. + 610785.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/32. - 14875.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/128. - 2039625.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 11655.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/128. + 2039625.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. - 734265.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 14875.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. - 5355.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/128.);
495 case 17:
496 return sign * RealGradient(0., 105.*eta/8. + 375.*xi/32. - 2625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/4. + 7875.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 18375.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 18375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. - 6615.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/2. + 28875.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/8. - 23625.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 23625.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. + 765./32. - 1155.*(eta + 1.)*(eta + 1.)/(2.*2.)/8. - 86625.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 202125.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 202125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. + 72765.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/4. - 1125.*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 70875.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 70875.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4. + 945.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 165375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 165375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. - 59535.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/2. + 2625.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/8. + 165375.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/8. - 165375.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. + 59535.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/4. - 2625.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/8.);
497 case 18:
498 return sign * RealGradient(0., -2865.*eta/128. - 12125.*xi/512. + 71625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. - 214875.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/32. + 501375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 501375.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/32. + 180495.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/32. - 527625.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/128. + 340375.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 291375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. - 22615./512. + 21105.*((eta + 1.)*(eta + 1.)/(2.*2.))/128. + 1582875.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 3693375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 3693375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. - 1329615.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 36375.*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 1021125.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 874125.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. - 13615.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 2382625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 2382625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/32. + 857745.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/32. - 84875.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/128. - 2039625.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 11655.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/128. + 2039625.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. - 734265.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 84875.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. - 30555.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/128.);
499 case 19:
500 return sign * RealGradient(0., 75.*eta + 625.*xi/4. - 3750.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 22500.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 52500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 52500.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 18900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 13125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 17500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 7875.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 875./4. - 525.*(eta + 1.)*(eta + 1.)/(2.*2.) - 78750.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 183750.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 183750.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 66150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 1875.*(xi + 1.)*(xi + 1.)/(2.*2.) + 105000.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 47250.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 700.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 245000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 245000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 88200.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 4375.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 110250.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 315.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 110250.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 4375.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
501 case 20:
502 return RealGradient(0., 975.*xi/8. - 2925.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 21150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 51825.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 52500.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 18900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 20475.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 13650.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 12285.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 975./8. - 74025.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 362775.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 183750.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 66150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 3525.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 98700.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 44415.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 241850.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 245000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 88200.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 17275.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. + 217665.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. - 110250.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 4375.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
503 case 21:
504 return RealGradient(0., -25.*xi + 600.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 8325.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 30825.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 42000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 18900.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 2100.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 2800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1260.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 25. + 58275.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 215775.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 147000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 66150.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 2775.*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 38850.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 34965.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 143850.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 196000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 88200.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 10275.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. - 129465.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. + 88200.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 39690.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 3500.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
505 case 22:
506 return RealGradient(0., 225.*xi/4. - 1350.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2025.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4725.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 6300.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2835.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 225./4. - 23625.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 14175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 1125.*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 15750.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 14175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 9450.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 675.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. + 8505.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2.);
507 case 23:
508 return RealGradient(0., -225.*xi/8. + 675.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 2700.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2025.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4725.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 3150.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2835.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 225./8. + 9450.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 14175.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 225.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 12600.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 5670.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 9450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 675.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. - 8505.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2.);
509 case 24:
510 return RealGradient(-975.*eta/8. + 2925.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 20475.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 13650.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 12285.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. - 21150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 51825.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 52500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 18900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 975./8. + 3525.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 74025.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 98700.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 44415.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 362775.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 183750.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 66150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 17275.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 241850.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 217665.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. - 245000.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 88200.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 4375.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 110250.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 39690.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
511 case 25:
512 return RealGradient(25.*eta - 600.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 2100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1260.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 8325.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 30825.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 42000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 18900.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 25. - 2775.*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 58275.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 38850.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 34965.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. + 215775.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 147000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 66150.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 10275.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 143850.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 129465.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 196000.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 88200.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 3500.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 88200.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 1575.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
513 case 26:
514 return RealGradient(-225.*eta/4. + 1350.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 4725.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2835.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 3375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 2025.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 225./4. + 1125.*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 23625.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 15750.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 14175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. - 14175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. - 675.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 9450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 8505.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2., 0.);
515 case 27:
516 return RealGradient(225.*eta/8. - 675.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 4725.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 3150.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2835.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 2700.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2025.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 225./8. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.) - 9450.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 12600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5670.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 14175.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. + 675.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 9450.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 8505.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2., 0.);
517 case 28:
518 return RealGradient(-195.*eta/8. + 1170.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 12285.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 10920.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 12285.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. - 8460.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 20730.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 21000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 7560.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 195./8. + 705.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 44415.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 78960.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 44415.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 217665.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 110250.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 39690.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 3455.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 193480.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 217665.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. - 196000.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 70560.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 875.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 110250.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 39690.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 315.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
519 case 29:
520 return RealGradient(5.*eta - 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 1260.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2240.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1260.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 3330.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 12330.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 16800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 7560.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 5. - 555.*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 34965.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 31080.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 34965.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. + 129465.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 88200.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 39690.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 2055.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 115080.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 129465.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 156800.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 70560.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 700.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 88200.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 315.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
521 case 30:
522 return RealGradient(-45.*eta/4. + 540.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 2835.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5040.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2835.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1350.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 810.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 45./4. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 14175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 12600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 14175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. - 8505.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. - 135.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 7560.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 8505.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2., 0.);
523 case 31:
524 return RealGradient(45.*eta/8. - 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 2835.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 2520.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2835.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 1080.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 810.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 45./8. - 45.*(eta + 1.)*(eta + 1.)/(2.*2.) - 5670.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 10080.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5670.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 8505.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. + 135.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 7560.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 8505.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2., 0.);
525 case 32:
526 return RealGradient(0., 195.*xi/8. - 1170.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 8460.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 20730.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 21000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 7560.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 12285.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 10920.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 12285.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 195./8. - 44415.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 217665.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 110250.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 705.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 78960.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 44415.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 193480.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 196000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 70560.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 3455.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. + 217665.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. - 110250.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 875.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 315.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
527 case 33:
528 return RealGradient(0., -5.*xi + 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 3330.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 12330.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 16800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 7560.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 1260.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 2240.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1260.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 5. + 34965.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 129465.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 88200.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 39690.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 555.*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 31080.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 34965.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 115080.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 156800.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 70560.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 2055.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. - 129465.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. + 88200.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 39690.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 700.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 315.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
529 case 34:
530 return RealGradient(0., 45.*xi/4. - 540.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 1350.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 810.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2835.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 5040.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2835.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 45./4. - 14175.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 8505.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 225.*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 12600.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 14175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 7560.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 135.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. + 8505.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2.);
531 case 35:
532 return RealGradient(0., -45.*xi/8. + 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1080.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 810.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2835.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 2520.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2835.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 45./8. + 5670.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8505.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 45.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 10080.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 5670.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 7560.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 135.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. - 8505.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2.);
533 case 36:
534 return RealGradient(36.*eta - 288.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 240.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 2376.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 6120.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 6300.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 2268.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 36. - 594.*(eta + 1.)*(eta + 1.)/(2.*2.) - 1980.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5100.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 5250.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1890.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 1530.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 567.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
535 case 37:
536 return RealGradient(12.*eta - 192.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 240.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 1584.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 4080.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1512.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 12. - 198.*(eta + 1.)*(eta + 1.)/(2.*2.) - 1980.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5100.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 5250.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1890.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 510.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 525.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 189.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
537 case 38:
538 return RealGradient(-6.*eta + 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 990.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 2550.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2625.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 945.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 6. + 99.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 990.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2550.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2625.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 945.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 255.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. - 189.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/2., 0.);
539 case 39:
540 return RealGradient(0., 36.*xi - 288.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 2376.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 6300.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 2268.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 240.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 36. - 1980.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5100.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5250.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 1890.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 594.*(xi + 1.)*(xi + 1.)/(2.*2.) + 1530.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 567.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
541 case 40:
542 return RealGradient(0., 12.*xi - 192.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 1584.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4080.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 1512.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 240.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 12. - 1980.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5100.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5250.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 1890.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 198.*(xi + 1.)*(xi + 1.)/(2.*2.) + 510.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 189.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
543 case 41:
544 return RealGradient(0., -6.*xi + 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 990.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2550.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2625.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 945.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 120.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 6. + 990.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2550.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2625.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 945.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 99.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 255.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 525.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. - 189.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/2.);
545 case 42:
546 return RealGradient(0., -9.*xi/2. + 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 864.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 3600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5040.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 2268.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 30.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 9./2. + 720.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4200.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 1890.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 216.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 900.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1260.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 567.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
547 case 43:
548 return RealGradient(0., -3.*xi/2. + 24.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 576.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3360.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 1512.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 30.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 3./2. + 720.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4200.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 1890.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 72.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 300.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 420.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 189.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
549 case 44:
550 return RealGradient(0., 3.*xi/4. - 15.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 360.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 945.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 15.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 3./4. - 360.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 1500.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2100.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 945.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 36.*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 210.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 189.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/2.);
551 case 45:
552 return RealGradient(-9.*eta/2. + 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 30.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 864.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 3600.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 5040.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 2268.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 9./2. + 216.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 720.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1890.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 1260.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 567.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
553 case 46:
554 return RealGradient(-3.*eta/2. + 24.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 30.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 576.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 2400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3360.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1512.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 3./2. + 72.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 720.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1890.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 300.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 420.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 189.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
555 case 47:
556 return RealGradient(3.*eta/4. - 15.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 15.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 360.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 1500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2100.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 945.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 3./4. - 36.*(eta + 1.)*(eta + 1.)/(2.*2.) - 360.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 1500.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2100.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 945.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 150.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 210.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 189.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/2., 0.);
557 case 48:
558 return RealGradient(0., 18.*xi - 144.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 324.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 120.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 18. - 270.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 81.*(xi + 1.)*(xi + 1.)/(2.*2.) + 45.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
559 case 49:
560 return RealGradient(0., -9.*xi/2. + 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 216.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 30.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 9./2. + 180.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 54.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 45.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
561 case 50:
562 return RealGradient(-18.*eta + 144.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 324.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 18. + 81.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 270.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 45.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
563 case 51:
564 return RealGradient(9.*eta/2. - 36.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 30.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 216.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 9./2. - 54.*(eta + 1.)*(eta + 1.)/(2.*2.) - 180.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 45.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
565 case 52:
566 return RealGradient(-6.*eta + 96.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 216.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 120.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 6. + 27.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 270.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 15.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
567 case 53:
568 return RealGradient(3.*eta/2. - 24.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 30.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 144.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 120.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3./2. - 18.*(eta + 1.)*(eta + 1.)/(2.*2.) - 180.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 15.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
569 case 54:
570 return RealGradient(0., 6.*xi - 96.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 216.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 120.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 6. - 270.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 27.*(xi + 1.)*(xi + 1.)/(2.*2.) + 15.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
571 case 55:
572 return RealGradient(0., -3.*xi/2. + 24.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 144.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 120.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 30.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 3./2. + 180.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 18.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 15.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
573 case 56:
574 return RealGradient(2.*eta + 2. - 9.*(eta + 1.)*(eta + 1.)/(2.*2.) + 5.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
575 case 57:
576 return RealGradient(0., 2.*xi + 2. - 9.*(xi + 1.)*(xi + 1.)/(2.*2.) + 5.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
577 case 58:
578 return RealGradient(0., -xi/2. - 1./2. + 6.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 5.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
579 case 59:
580 return RealGradient(-eta/2. - 1./2. + 6.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 5.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
581 default:
582 libmesh_error_msg("Invalid i = " << i);
583 }
584 }
585
586 case TRI6:
587 case TRI7:
588 {
589 switch(ii)
590 {
591 case 0:
592 return sign * RealGradient(2800.*eta*xi - 375.*eta - 6300.*eta*xi*xi + 5040.*eta*(xi*xi*xi) - 1050.*eta*xi*xi*xi*xi - 300.*xi - 8400.*xi*eta*eta + 10080.*xi*(eta*eta*eta) - 4200.*xi*eta*eta*eta*eta + 25. + 1750.*(eta*eta) + 11340.*(eta*eta)*(xi*xi) - 4200.*eta*eta*xi*xi*xi + 1050.*(xi*xi) - 6300.*xi*xi*eta*eta*eta - 3500.*eta*eta*eta - 1400.*xi*xi*xi + 3150.*(eta*eta*eta*eta) + 630.*(xi*xi*xi*xi) - 1050.*eta*eta*eta*eta*eta, -700.*eta*xi + 4200.*eta*(xi*xi) - 7560.*eta*xi*xi*xi + 4200.*eta*(xi*xi*xi*xi) + 75.*xi + 2100.*xi*(eta*eta) - 2520.*xi*eta*eta*eta + 1050.*xi*(eta*eta*eta*eta) - 7560.*eta*eta*xi*xi + 6300.*(eta*eta)*(xi*xi*xi) - 700.*xi*xi + 4200.*(xi*xi)*(eta*eta*eta) + 2100.*(xi*xi*xi) - 2520.*xi*xi*xi*xi + 1050.*(xi*xi*xi*xi*xi));
593 case 1:
594 return sign * RealGradient(-12145.*eta*xi/16. + 695.*eta/128. + 136185.*eta*(xi*xi)/64. - 6825.*eta*xi*xi*xi/4. + 19425.*eta*(xi*xi*xi*xi)/64. + 2865.*xi/32. + 7245.*xi*(eta*eta)/4. - 25515.*xi*eta*eta*eta/16. + 14175.*xi*(eta*eta*eta*eta)/32. - 485./128. + 11235.*(eta*eta)/64. - 240975.*eta*eta*xi*xi/64. + 48825.*(eta*eta)*(xi*xi*xi)/32. - 21105.*xi*xi/64. + 127575.*(xi*xi)*(eta*eta*eta)/64. - 42525.*eta*eta*eta/64. + 13615.*(xi*xi*xi)/32. + 104895.*(eta*eta*eta*eta)/128. - 11655.*xi*xi*xi*xi/64. - 42525.*eta*eta*eta*eta*eta/128., 3045.*eta*xi/32. - 39375.*eta*xi*xi/32. + 84105.*eta*(xi*xi*xi)/32. - 48825.*eta*xi*xi*xi*xi/32. - 2395.*xi/128. + 2835.*xi*(eta*eta)/64. - 14175.*xi*eta*eta*eta/32. + 42525.*xi*(eta*eta*eta*eta)/128. + 25515.*(eta*eta)*(xi*xi)/16. - 127575.*eta*eta*xi*xi*xi/64. + 1715.*(xi*xi)/8. - 14175.*xi*xi*eta*eta*eta/32. - 41755.*xi*xi*xi/64. + 48615.*(xi*xi*xi*xi)/64. - 19425.*xi*xi*xi*xi*xi/64.);
595 case 2:
596 return sign * RealGradient(55.*eta/8. - 3255.*eta*xi*xi/4. + 1260.*eta*(xi*xi*xi) - 1575.*eta*xi*xi*xi*xi/4. - 105.*xi/2. + 840.*xi*(eta*eta) - 1575.*xi*eta*eta*eta + 1575.*xi*(eta*eta*eta*eta)/2. + 15./8. - 175.*eta*eta/4. + 945.*(eta*eta)*(xi*xi)/4. - 1575.*eta*eta*xi*xi*xi/2. + 1155.*(xi*xi)/4. + 1575.*(xi*xi)*(eta*eta*eta)/4. + 35.*(eta*eta*eta)/4. - 945.*xi*xi*xi/2. + 735.*(eta*eta*eta*eta)/8. + 945.*(xi*xi*xi*xi)/4. - 525.*eta*eta*eta*eta*eta/8., 35.*eta*xi/2. + 105.*eta*(xi*xi)/2. - 1575.*eta*xi*xi*xi/2. + 1575.*eta*(xi*xi*xi*xi)/2. + 85.*xi/8. - 525.*xi*eta*eta/4. + 105.*xi*(eta*eta*eta)/2. + 525.*xi*(eta*eta*eta*eta)/8. + 945.*(eta*eta)*(xi*xi) - 1575.*eta*eta*xi*xi*xi/4. - 315.*xi*xi/2. - 1575.*xi*xi*eta*eta*eta/2. + 2485.*(xi*xi*xi)/4. - 3465.*xi*xi*xi*xi/4. + 1575.*(xi*xi*xi*xi*xi)/4.);
597 case 3:
598 return sign * RealGradient(1855.*eta*xi/16. - 825.*eta/128. - 16695.*eta*xi*xi/64. - 945.*eta*xi*xi*xi/4. + 19425.*eta*(xi*xi*xi*xi)/64. + 705.*xi/32. - 1155.*xi*eta*eta/4. - 315.*xi*eta*eta*eta/16. + 5775.*xi*(eta*eta*eta*eta)/32. - 85./128. + 595.*(eta*eta)/64. + 76545.*(eta*eta)*(xi*xi)/64. - 9975.*eta*eta*xi*xi*xi/32. - 9345.*xi*xi/64. - 48825.*xi*xi*eta*eta*eta/64. + 595.*(eta*eta*eta)/64. + 9695.*(xi*xi*xi)/32. - 945.*eta*eta*eta*eta/128. - 11655.*xi*xi*xi*xi/64. - 525.*eta*eta*eta*eta*eta/128., -875.*eta*xi/32. + 9345.*eta*(xi*xi)/32. - 21735.*eta*xi*xi*xi/32. + 9975.*eta*(xi*xi*xi*xi)/32. - 555.*xi/128. + 1155.*xi*(eta*eta)/64. + 945.*xi*(eta*eta*eta)/32. + 525.*xi*(eta*eta*eta*eta)/128. - 4725.*eta*eta*xi*xi/16. + 48825.*(eta*eta)*(xi*xi*xi)/64. + 595.*(xi*xi)/8. - 5775.*xi*xi*eta*eta*eta/32. - 22155.*xi*xi*xi/64. + 36855.*(xi*xi*xi*xi)/64. - 19425.*xi*xi*xi*xi*xi/64.);
599 case 4:
600 return sign * RealGradient(140.*eta*xi - 5.*eta - 840.*eta*xi*xi + 1680.*eta*(xi*xi*xi) - 1050.*eta*xi*xi*xi*xi - 120.*xi + 5. + 630.*(xi*xi) - 1120.*xi*xi*xi + 630.*(xi*xi*xi*xi), 25.*xi - 350.*xi*xi + 1400.*(xi*xi*xi) - 2100.*xi*xi*xi*xi + 1050.*(xi*xi*xi*xi*xi));
601 case 5:
602 return sign * RealGradient(140.*eta*xi - 5.*eta - 840.*eta*xi*xi + 1680.*eta*(xi*xi*xi) - 1050.*eta*xi*xi*xi*xi, 25.*xi - 350.*xi*xi + 1400.*(xi*xi*xi) - 2100.*xi*xi*xi*xi + 1050.*(xi*xi*xi*xi*xi));
603 case 6:
604 return sign * RealGradient(735.*eta*xi/4. - 10.*eta - 2835.*eta*xi*xi/4. + 14175.*eta*(xi*xi*xi)/16. - 42525.*eta*xi*xi*xi*xi/128. - 1575.*xi*eta*eta/2. + 12285.*xi*(eta*eta*eta)/16. - 1575.*xi*eta*eta*eta*eta/8. + 385.*(eta*eta)/8. + 76545.*(eta*eta)*(xi*xi)/32. - 14175.*eta*eta*xi*xi*xi/8. - 42525.*xi*xi*eta*eta*eta/32. - 245.*eta*eta*eta/4. + 1785.*(eta*eta*eta*eta)/64. - 525.*eta*eta*eta*eta*eta/128., -455.*eta*xi/4. + 2205.*eta*(xi*xi)/2. - 42525.*eta*xi*xi*xi/16. + 14175.*eta*(xi*xi*xi*xi)/8. + 20.*xi + 525.*xi*(eta*eta)/4. - 735.*xi*eta*eta*eta/16. + 525.*xi*(eta*eta*eta*eta)/128. - 31185.*eta*eta*xi*xi/32. + 42525.*(eta*eta)*(xi*xi*xi)/32. - 1785.*xi*xi/8. + 1575.*(xi*xi)*(eta*eta*eta)/8. + 2835.*(xi*xi*xi)/4. - 53865.*xi*xi*xi*xi/64. + 42525.*(xi*xi*xi*xi*xi)/128.);
605 case 7:
606 return sign * RealGradient(175.*eta*xi - 15.*eta - 420.*eta*xi*xi + 315.*eta*(xi*xi*xi) - 525.*eta*xi*xi*xi*xi/8. - 1260.*xi*eta*eta + 2205.*xi*(eta*eta*eta) - 1050.*xi*eta*eta*eta*eta + 245.*(eta*eta)/2. + 4725.*(eta*eta)*(xi*xi)/2. - 1050.*eta*eta*xi*xi*xi - 4725.*xi*xi*eta*eta*eta/2. - 280.*eta*eta*eta + 945.*(eta*eta*eta*eta)/4. - 525.*eta*eta*eta*eta*eta/8., -175.*eta*xi + 1260.*eta*(xi*xi) - 2205.*eta*xi*xi*xi + 1050.*eta*(xi*xi*xi*xi) + 15.*xi + 420.*xi*(eta*eta) - 315.*xi*eta*eta*eta + 525.*xi*(eta*eta*eta*eta)/8. - 4725.*eta*eta*xi*xi/2. + 4725.*(eta*eta)*(xi*xi*xi)/2. - 245.*xi*xi/2. + 1050.*(xi*xi)*(eta*eta*eta) + 280.*(xi*xi*xi) - 945.*xi*xi*xi*xi/4. + 525.*(xi*xi*xi*xi*xi)/8.);
607 case 8:
608 return sign * RealGradient(455.*eta*xi/4. - 20.*eta - 525.*eta*xi*xi/4. + 735.*eta*(xi*xi*xi)/16. - 525.*eta*xi*xi*xi*xi/128. - 2205.*xi*eta*eta/2. + 42525.*xi*(eta*eta*eta)/16. - 14175.*xi*eta*eta*eta*eta/8. + 1785.*(eta*eta)/8. + 31185.*(eta*eta)*(xi*xi)/32. - 1575.*eta*eta*xi*xi*xi/8. - 42525.*xi*xi*eta*eta*eta/32. - 2835.*eta*eta*eta/4. + 53865.*(eta*eta*eta*eta)/64. - 42525.*eta*eta*eta*eta*eta/128., -735.*eta*xi/4. + 1575.*eta*(xi*xi)/2. - 12285.*eta*xi*xi*xi/16. + 1575.*eta*(xi*xi*xi*xi)/8. + 10.*xi + 2835.*xi*(eta*eta)/4. - 14175.*xi*eta*eta*eta/16. + 42525.*xi*(eta*eta*eta*eta)/128. - 76545.*eta*eta*xi*xi/32. + 42525.*(eta*eta)*(xi*xi*xi)/32. - 385.*xi*xi/8. + 14175.*(xi*xi)*(eta*eta*eta)/8. + 245.*(xi*xi*xi)/4. - 1785.*xi*xi*xi*xi/64. + 525.*(xi*xi*xi*xi*xi)/128.);
609 case 9:
610 return sign * RealGradient(-25.*eta + 350.*(eta*eta) - 1400.*eta*eta*eta + 2100.*(eta*eta*eta*eta) - 1050.*eta*eta*eta*eta*eta, -140.*eta*xi + 5.*xi + 840.*xi*(eta*eta) - 1680.*xi*eta*eta*eta + 1050.*xi*(eta*eta*eta*eta));
611 case 10:
612 return sign * RealGradient(-25.*eta + 350.*(eta*eta) - 1400.*eta*eta*eta + 2100.*(eta*eta*eta*eta) - 1050.*eta*eta*eta*eta*eta, -140.*eta*xi + 120.*eta + 5.*xi + 840.*xi*(eta*eta) - 1680.*xi*eta*eta*eta + 1050.*xi*(eta*eta*eta*eta) - 5. - 630.*eta*eta + 1120.*(eta*eta*eta) - 630.*eta*eta*eta*eta);
613 case 11:
614 return sign * RealGradient(875.*eta*xi/32. + 555.*eta/128. - 1155.*eta*xi*xi/64. - 945.*eta*xi*xi*xi/32. - 525.*eta*xi*xi*xi*xi/128. - 9345.*xi*eta*eta/32. + 21735.*xi*(eta*eta*eta)/32. - 9975.*xi*eta*eta*eta*eta/32. - 595.*eta*eta/8. + 4725.*(eta*eta)*(xi*xi)/16. + 5775.*(eta*eta)*(xi*xi*xi)/32. - 48825.*xi*xi*eta*eta*eta/64. + 22155.*(eta*eta*eta)/64. - 36855.*eta*eta*eta*eta/64. + 19425.*(eta*eta*eta*eta*eta)/64., -1855.*eta*xi/16. - 705.*eta/32. + 1155.*eta*(xi*xi)/4. + 315.*eta*(xi*xi*xi)/16. - 5775.*eta*xi*xi*xi*xi/32. + 825.*xi/128. + 16695.*xi*(eta*eta)/64. + 945.*xi*(eta*eta*eta)/4. - 19425.*xi*eta*eta*eta*eta/64. + 85./128. + 9345.*(eta*eta)/64. - 76545.*eta*eta*xi*xi/64. + 48825.*(eta*eta)*(xi*xi*xi)/64. - 595.*xi*xi/64. + 9975.*(xi*xi)*(eta*eta*eta)/32. - 9695.*eta*eta*eta/32. - 595.*xi*xi*xi/64. + 11655.*(eta*eta*eta*eta)/64. + 945.*(xi*xi*xi*xi)/128. + 525.*(xi*xi*xi*xi*xi)/128.);
615 case 12:
616 return sign * RealGradient(-35.*eta*xi/2. - 85.*eta/8. + 525.*eta*(xi*xi)/4. - 105.*eta*xi*xi*xi/2. - 525.*eta*xi*xi*xi*xi/8. - 105.*xi*eta*eta/2. + 1575.*xi*(eta*eta*eta)/2. - 1575.*xi*eta*eta*eta*eta/2. + 315.*(eta*eta)/2. - 945.*eta*eta*xi*xi + 1575.*(eta*eta)*(xi*xi*xi)/2. + 1575.*(xi*xi)*(eta*eta*eta)/4. - 2485.*eta*eta*eta/4. + 3465.*(eta*eta*eta*eta)/4. - 1575.*eta*eta*eta*eta*eta/4., 105.*eta/2. - 840.*eta*xi*xi + 1575.*eta*(xi*xi*xi) - 1575.*eta*xi*xi*xi*xi/2. - 55.*xi/8. + 3255.*xi*(eta*eta)/4. - 1260.*xi*eta*eta*eta + 1575.*xi*(eta*eta*eta*eta)/4. - 15./8. - 1155.*eta*eta/4. - 945.*eta*eta*xi*xi/4. - 1575.*eta*eta*xi*xi*xi/4. + 175.*(xi*xi)/4. + 1575.*(xi*xi)*(eta*eta*eta)/2. + 945.*(eta*eta*eta)/2. - 35.*xi*xi*xi/4. - 945.*eta*eta*eta*eta/4. - 735.*xi*xi*xi*xi/8. + 525.*(xi*xi*xi*xi*xi)/8.);
617 case 13:
618 return sign * RealGradient(-3045.*eta*xi/32. + 2395.*eta/128. - 2835.*eta*xi*xi/64. + 14175.*eta*(xi*xi*xi)/32. - 42525.*eta*xi*xi*xi*xi/128. + 39375.*xi*(eta*eta)/32. - 84105.*xi*eta*eta*eta/32. + 48825.*xi*(eta*eta*eta*eta)/32. - 1715.*eta*eta/8. - 25515.*eta*eta*xi*xi/16. + 14175.*(eta*eta)*(xi*xi*xi)/32. + 127575.*(xi*xi)*(eta*eta*eta)/64. + 41755.*(eta*eta*eta)/64. - 48615.*eta*eta*eta*eta/64. + 19425.*(eta*eta*eta*eta*eta)/64., 12145.*eta*xi/16. - 2865.*eta/32. - 7245.*eta*xi*xi/4. + 25515.*eta*(xi*xi*xi)/16. - 14175.*eta*xi*xi*xi*xi/32. - 695.*xi/128. - 136185.*xi*eta*eta/64. + 6825.*xi*(eta*eta*eta)/4. - 19425.*xi*eta*eta*eta*eta/64. + 485./128. + 21105.*(eta*eta)/64. + 240975.*(eta*eta)*(xi*xi)/64. - 127575.*eta*eta*xi*xi*xi/64. - 11235.*xi*xi/64. - 48825.*xi*xi*eta*eta*eta/32. - 13615.*eta*eta*eta/32. + 42525.*(xi*xi*xi)/64. + 11655.*(eta*eta*eta*eta)/64. - 104895.*xi*xi*xi*xi/128. + 42525.*(xi*xi*xi*xi*xi)/128.);
619 case 14:
620 return sign * RealGradient(700.*eta*xi - 75.*eta - 2100.*eta*xi*xi + 2520.*eta*(xi*xi*xi) - 1050.*eta*xi*xi*xi*xi - 4200.*xi*eta*eta + 7560.*xi*(eta*eta*eta) - 4200.*xi*eta*eta*eta*eta + 700.*(eta*eta) + 7560.*(eta*eta)*(xi*xi) - 4200.*eta*eta*xi*xi*xi - 6300.*xi*xi*eta*eta*eta - 2100.*eta*eta*eta + 2520.*(eta*eta*eta*eta) - 1050.*eta*eta*eta*eta*eta, -2800.*eta*xi + 300.*eta + 8400.*eta*(xi*xi) - 10080.*eta*xi*xi*xi + 4200.*eta*(xi*xi*xi*xi) + 375.*xi + 6300.*xi*(eta*eta) - 5040.*xi*eta*eta*eta + 1050.*xi*(eta*eta*eta*eta) - 25. - 1050.*eta*eta - 11340.*eta*eta*xi*xi + 6300.*(eta*eta)*(xi*xi*xi) - 1750.*xi*xi + 4200.*(xi*xi)*(eta*eta*eta) + 1400.*(eta*eta*eta) + 3500.*(xi*xi*xi) - 630.*eta*eta*eta*eta - 3150.*xi*xi*xi*xi + 1050.*(xi*xi*xi*xi*xi));
621 case 15:
622 return RealGradient(-19600.*eta*xi + 3500.*eta + 35280.*eta*(xi*xi) - 23520.*eta*xi*xi*xi + 4200.*eta*(xi*xi*xi*xi) + 94080.*xi*(eta*eta) - 141120.*xi*eta*eta*eta + 67200.*xi*(eta*eta*eta*eta) - 24500.*eta*eta - 105840.*eta*eta*xi*xi + 33600.*(eta*eta)*(xi*xi*xi) + 75600.*(xi*xi)*(eta*eta*eta) + 58800.*(eta*eta*eta) - 58800.*eta*eta*eta*eta + 21000.*(eta*eta*eta*eta*eta), 9800.*eta*xi - 47040.*eta*xi*xi + 70560.*eta*(xi*xi*xi) - 33600.*eta*xi*xi*xi*xi - 700.*xi - 35280.*xi*eta*eta + 47040.*xi*(eta*eta*eta) - 21000.*xi*eta*eta*eta*eta + 105840.*(eta*eta)*(xi*xi) - 75600.*eta*eta*xi*xi*xi + 4900.*(xi*xi) - 67200.*xi*xi*eta*eta*eta - 11760.*xi*xi*xi + 11760.*(xi*xi*xi*xi) - 4200.*xi*xi*xi*xi*xi);
623 case 16:
624 return RealGradient(9800.*eta*xi - 700.*eta - 35280.*eta*xi*xi + 47040.*eta*(xi*xi*xi) - 21000.*eta*xi*xi*xi*xi - 47040.*xi*eta*eta + 70560.*xi*(eta*eta*eta) - 33600.*xi*eta*eta*eta*eta + 4900.*(eta*eta) + 105840.*(eta*eta)*(xi*xi) - 67200.*eta*eta*xi*xi*xi - 75600.*xi*xi*eta*eta*eta - 11760.*eta*eta*eta + 11760.*(eta*eta*eta*eta) - 4200.*eta*eta*eta*eta*eta, -19600.*eta*xi + 94080.*eta*(xi*xi) - 141120.*eta*xi*xi*xi + 67200.*eta*(xi*xi*xi*xi) + 3500.*xi + 35280.*xi*(eta*eta) - 23520.*xi*eta*eta*eta + 4200.*xi*(eta*eta*eta*eta) - 105840.*eta*eta*xi*xi + 75600.*(eta*eta)*(xi*xi*xi) - 24500.*xi*xi + 33600.*(xi*xi)*(eta*eta*eta) + 58800.*(xi*xi*xi) - 58800.*xi*xi*xi*xi + 21000.*(xi*xi*xi*xi*xi));
625 case 17:
626 return RealGradient(6440.*eta*xi - 280.*eta - 30240.*eta*xi*xi + 43680.*eta*(xi*xi*xi) - 16800.*eta*xi*xi*xi*xi - 6720.*xi*eta*eta + 280.*(eta*eta) + 30240.*(eta*eta)*(xi*xi) - 33600.*eta*eta*xi*xi*xi, -1120.*eta*xi + 13440.*eta*(xi*xi) - 40320.*eta*xi*xi*xi + 33600.*eta*(xi*xi*xi*xi) + 560.*xi - 7280.*xi*xi + 26880.*(xi*xi*xi) - 36960.*xi*xi*xi*xi + 16800.*(xi*xi*xi*xi*xi));
627 case 18:
628 return RealGradient(-3640.*eta*xi + 140.*eta + 20160.*eta*(xi*xi) - 36960.*eta*xi*xi*xi + 21000.*eta*(xi*xi*xi*xi) + 3360.*xi*(eta*eta) - 140.*eta*eta - 15120.*eta*eta*xi*xi + 16800.*(eta*eta)*(xi*xi*xi), 560.*eta*xi - 6720.*eta*xi*xi + 20160.*eta*(xi*xi*xi) - 16800.*eta*xi*xi*xi*xi - 700.*xi + 9100.*(xi*xi) - 33600.*xi*xi*xi + 46200.*(xi*xi*xi*xi) - 21000.*xi*xi*xi*xi*xi);
629 case 19:
630 return RealGradient(560.*eta*xi - 700.*eta - 6720.*xi*eta*eta + 20160.*xi*(eta*eta*eta) - 16800.*xi*eta*eta*eta*eta + 9100.*(eta*eta) - 33600.*eta*eta*eta + 46200.*(eta*eta*eta*eta) - 21000.*eta*eta*eta*eta*eta, -3640.*eta*xi + 3360.*eta*(xi*xi) + 140.*xi + 20160.*xi*(eta*eta) - 36960.*xi*eta*eta*eta + 21000.*xi*(eta*eta*eta*eta) - 15120.*eta*eta*xi*xi - 140.*xi*xi + 16800.*(xi*xi)*(eta*eta*eta));
631 case 20:
632 return RealGradient(-1120.*eta*xi + 560.*eta + 13440.*xi*(eta*eta) - 40320.*xi*eta*eta*eta + 33600.*xi*(eta*eta*eta*eta) - 7280.*eta*eta + 26880.*(eta*eta*eta) - 36960.*eta*eta*eta*eta + 16800.*(eta*eta*eta*eta*eta), 6440.*eta*xi - 6720.*eta*xi*xi - 280.*xi - 30240.*xi*eta*eta + 43680.*xi*(eta*eta*eta) - 16800.*xi*eta*eta*eta*eta + 30240.*(eta*eta)*(xi*xi) + 280.*(xi*xi) - 33600.*xi*xi*eta*eta*eta);
633 case 21:
634 return RealGradient(17920.*eta*xi/3. - 420.*eta - 17920.*eta*xi*xi + 156800.*eta*(xi*xi*xi)/9. - 44800.*eta*xi*xi*xi*xi/9. - 29120.*xi*eta*eta + 116480.*xi*(eta*eta*eta)/3. - 140000.*xi*eta*eta*eta*eta/9. + 7420.*(eta*eta)/3. + 62720.*(eta*eta)*(xi*xi) - 291200.*eta*eta*xi*xi*xi/9. - 44800.*xi*xi*eta*eta*eta - 4480.*eta*eta*eta + 28840.*(eta*eta*eta*eta)/9. - 7000.*eta*eta*eta*eta*eta/9., -10360.*eta*xi/3. + 28000.*eta*(xi*xi) - 170240.*eta*xi*xi*xi/3. + 291200.*eta*(xi*xi*xi*xi)/9. + 420.*xi + 6720.*xi*(eta*eta) - 39200.*xi*eta*eta*eta/9. + 7000.*xi*(eta*eta*eta*eta)/9. - 40880.*eta*eta*xi*xi + 44800.*(eta*eta)*(xi*xi*xi) - 12460.*xi*xi/3. + 140000.*(xi*xi)*(eta*eta*eta)/9. + 35840.*(xi*xi*xi)/3. - 118720.*xi*xi*xi*xi/9. + 44800.*(xi*xi*xi*xi*xi)/9.);
635 case 22:
636 return RealGradient(-12880.*eta*xi/3. + 280.*eta + 14560.*eta*(xi*xi) - 152320.*eta*xi*xi*xi/9. + 56000.*eta*(xi*xi*xi*xi)/9. + 22400.*xi*(eta*eta) - 91840.*xi*eta*eta*eta/3. + 112000.*xi*(eta*eta*eta*eta)/9. - 5320.*eta*eta/3. - 54880.*eta*eta*xi*xi + 313600.*(eta*eta)*(xi*xi*xi)/9. + 39200.*(xi*xi)*(eta*eta*eta) + 3360.*(eta*eta*eta) - 22400.*eta*eta*eta*eta/9. + 5600.*(eta*eta*eta*eta*eta)/9., 12040.*eta*xi/3. - 31360.*eta*xi*xi + 185920.*eta*(xi*xi*xi)/3. - 313600.*eta*xi*xi*xi*xi/9. - 560.*xi - 6720.*xi*eta*eta + 34720.*xi*(eta*eta*eta)/9. - 5600.*xi*eta*eta*eta*eta/9. + 38080.*(eta*eta)*(xi*xi) - 39200.*eta*eta*xi*xi*xi + 16240.*(xi*xi)/3. - 112000.*xi*xi*eta*eta*eta/9. - 45920.*xi*xi*xi/3. + 150080.*(xi*xi*xi*xi)/9. - 56000.*xi*xi*xi*xi*xi/9.);
637 case 23:
638 return RealGradient(12040.*eta*xi/3. - 560.*eta - 6720.*eta*xi*xi + 34720.*eta*(xi*xi*xi)/9. - 5600.*eta*xi*xi*xi*xi/9. - 31360.*xi*eta*eta + 185920.*xi*(eta*eta*eta)/3. - 313600.*xi*eta*eta*eta*eta/9. + 16240.*(eta*eta)/3. + 38080.*(eta*eta)*(xi*xi) - 112000.*eta*eta*xi*xi*xi/9. - 39200.*xi*xi*eta*eta*eta - 45920.*eta*eta*eta/3. + 150080.*(eta*eta*eta*eta)/9. - 56000.*eta*eta*eta*eta*eta/9., -12880.*eta*xi/3. + 22400.*eta*(xi*xi) - 91840.*eta*xi*xi*xi/3. + 112000.*eta*(xi*xi*xi*xi)/9. + 280.*xi + 14560.*xi*(eta*eta) - 152320.*xi*eta*eta*eta/9. + 56000.*xi*(eta*eta*eta*eta)/9. - 54880.*eta*eta*xi*xi + 39200.*(eta*eta)*(xi*xi*xi) - 5320.*xi*xi/3. + 313600.*(xi*xi)*(eta*eta*eta)/9. + 3360.*(xi*xi*xi) - 22400.*xi*xi*xi*xi/9. + 5600.*(xi*xi*xi*xi*xi)/9.);
639 case 24:
640 return RealGradient(-10360.*eta*xi/3. + 420.*eta + 6720.*eta*(xi*xi) - 39200.*eta*xi*xi*xi/9. + 7000.*eta*(xi*xi*xi*xi)/9. + 28000.*xi*(eta*eta) - 170240.*xi*eta*eta*eta/3. + 291200.*xi*(eta*eta*eta*eta)/9. - 12460.*eta*eta/3. - 40880.*eta*eta*xi*xi + 140000.*(eta*eta)*(xi*xi*xi)/9. + 44800.*(xi*xi)*(eta*eta*eta) + 35840.*(eta*eta*eta)/3. - 118720.*eta*eta*eta*eta/9. + 44800.*(eta*eta*eta*eta*eta)/9., 17920.*eta*xi/3. - 29120.*eta*xi*xi + 116480.*eta*(xi*xi*xi)/3. - 140000.*eta*xi*xi*xi*xi/9. - 420.*xi - 17920.*xi*eta*eta + 156800.*xi*(eta*eta*eta)/9. - 44800.*xi*eta*eta*eta*eta/9. + 62720.*(eta*eta)*(xi*xi) - 44800.*eta*eta*xi*xi*xi + 7420.*(xi*xi)/3. - 291200.*xi*xi*eta*eta*eta/9. - 4480.*xi*xi*xi + 28840.*(xi*xi*xi*xi)/9. - 7000.*xi*xi*xi*xi*xi/9.);
641 case 25:
642 return RealGradient(-12880.*eta*xi/9. - 700.*eta/9. + 5600.*eta*(xi*xi) - 49280.*eta*xi*xi*xi/9. + 11200.*eta*(xi*xi*xi*xi)/9. - 15680.*xi*eta*eta/3. + 51520.*xi*(eta*eta*eta)/3. - 95200.*xi*eta*eta*eta*eta/9. + 25900.*(eta*eta)/9. - 1120.*eta*eta*xi*xi + 22400.*(eta*eta)*(xi*xi*xi)/9. - 5600.*xi*xi*eta*eta*eta - 28000.*eta*eta*eta/3. + 93800.*(eta*eta*eta*eta)/9. - 35000.*eta*eta*eta*eta*eta/9., -10360.*eta*xi/9. + 7840.*eta*(xi*xi)/3. + 2240.*eta*(xi*xi*xi)/3. - 22400.*eta*xi*xi*xi*xi/9. + 140.*xi/9. + 5600.*xi*(eta*eta) - 75040.*xi*eta*eta*eta/9. + 35000.*xi*(eta*eta*eta*eta)/9. - 12880.*eta*eta*xi*xi + 5600.*(eta*eta)*(xi*xi*xi) + 3220.*(xi*xi)/9. + 95200.*(xi*xi)*(eta*eta*eta)/9. - 5600.*xi*xi*xi/3. + 24640.*(xi*xi*xi*xi)/9. - 11200.*xi*xi*xi*xi*xi/9.);
643 case 26:
644 return RealGradient(-9520.*eta*xi/9. + 1400.*eta/9. - 1120.*eta*xi*xi + 71680.*eta*(xi*xi*xi)/9. - 56000.*eta*xi*xi*xi*xi/9. + 44800.*xi*(eta*eta)/3. - 82880.*xi*eta*eta*eta/3. + 123200.*xi*(eta*eta*eta*eta)/9. - 14840.*eta*eta/9. - 25760.*eta*eta*xi*xi + 89600.*(eta*eta)*(xi*xi*xi)/9. + 28000.*(xi*xi)*(eta*eta*eta) + 12320.*(eta*eta*eta)/3. - 34720.*eta*eta*eta*eta/9. + 11200.*(eta*eta*eta*eta*eta)/9., 51800.*eta*xi/9. - 69440.*eta*xi*xi/3. + 82880.*eta*(xi*xi*xi)/3. - 89600.*eta*xi*xi*xi*xi/9. + 560.*xi/9. - 13440.*xi*eta*eta + 79520.*xi*(eta*eta*eta)/9. - 11200.*xi*eta*eta*eta*eta/9. + 40320.*(eta*eta)*(xi*xi) - 28000.*eta*eta*xi*xi*xi - 24080.*xi*xi/9. - 123200.*xi*xi*eta*eta*eta/9. + 32480.*(xi*xi*xi)/3. - 129920.*xi*xi*xi*xi/9. + 56000.*(xi*xi*xi*xi*xi)/9.);
645 case 27:
646 return RealGradient(2800.*eta*xi/9. + 700.*eta/9. - 560.*eta*xi*xi - 1120.*eta*xi*xi*xi/9. + 1400.*eta*(xi*xi*xi*xi)/9. - 4480.*xi*eta*eta/3. - 11200.*xi*eta*eta*eta/3. + 44800.*xi*(eta*eta*eta*eta)/9. - 13300.*eta*eta/9. + 6160.*(eta*eta)*(xi*xi) - 22400.*eta*eta*xi*xi*xi/9. - 2800.*xi*xi*eta*eta*eta + 19600.*(eta*eta*eta)/3. - 81200.*eta*eta*eta*eta/9. + 35000.*(eta*eta*eta*eta*eta)/9., 5320.*eta*xi/9. + 2240.*eta*(xi*xi)/3. - 12320.*eta*xi*xi*xi/3. + 22400.*eta*(xi*xi*xi*xi)/9. - 140.*xi/9. - 3920.*xi*eta*eta + 64960.*xi*(eta*eta*eta)/9. - 35000.*xi*eta*eta*eta*eta/9. + 2800.*(eta*eta)*(xi*xi) + 2800.*(eta*eta)*(xi*xi*xi) - 700.*xi*xi/9. - 44800.*xi*xi*eta*eta*eta/9. + 560.*(xi*xi*xi)/3. + 560.*(xi*xi*xi*xi)/9. - 1400.*xi*xi*xi*xi*xi/9.);
647 case 28:
648 return RealGradient(280.*eta*xi/9. - 980.*eta/9. + 1680.*eta*(xi*xi) - 11200.*eta*xi*xi*xi/9. - 7000.*eta*xi*xi*xi*xi/9. - 11200.*xi*eta*eta/3. + 52640.*xi*(eta*eta*eta)/3. - 123200.*xi*eta*eta*eta*eta/9. + 13580.*(eta*eta)/9. - 9520.*eta*eta*xi*xi + 112000.*(eta*eta)*(xi*xi*xi)/9. - 2800.*xi*xi*eta*eta*eta - 16240.*eta*eta*eta/3. + 59920.*(eta*eta*eta*eta)/9. - 23800.*eta*eta*eta*eta*eta/9., -8960.*eta*xi/9. - 17920.*eta*xi*xi/3. + 58240.*eta*(xi*xi*xi)/3. - 112000.*eta*xi*xi*xi*xi/9. - 140.*xi/9. + 9520.*xi*(eta*eta) - 99680.*xi*eta*eta*eta/9. + 23800.*xi*(eta*eta*eta*eta)/9. - 15120.*eta*eta*xi*xi + 2800.*(eta*eta)*(xi*xi*xi) + 4340.*(xi*xi)/9. + 123200.*(xi*xi)*(eta*eta*eta)/9. - 560.*xi*xi*xi - 6160.*xi*xi*xi*xi/9. + 7000.*(xi*xi*xi*xi*xi)/9.);
649 case 29:
650 return RealGradient(51800.*eta*xi/9. + 560.*eta/9. - 13440.*eta*xi*xi + 79520.*eta*(xi*xi*xi)/9. - 11200.*eta*xi*xi*xi*xi/9. - 69440.*xi*eta*eta/3. + 82880.*xi*(eta*eta*eta)/3. - 89600.*xi*eta*eta*eta*eta/9. - 24080.*eta*eta/9. + 40320.*(eta*eta)*(xi*xi) - 123200.*eta*eta*xi*xi*xi/9. - 28000.*xi*xi*eta*eta*eta + 32480.*(eta*eta*eta)/3. - 129920.*eta*eta*eta*eta/9. + 56000.*(eta*eta*eta*eta*eta)/9., -9520.*eta*xi/9. + 44800.*eta*(xi*xi)/3. - 82880.*eta*xi*xi*xi/3. + 123200.*eta*(xi*xi*xi*xi)/9. + 1400.*xi/9. - 1120.*xi*eta*eta + 71680.*xi*(eta*eta*eta)/9. - 56000.*xi*eta*eta*eta*eta/9. - 25760.*eta*eta*xi*xi + 28000.*(eta*eta)*(xi*xi*xi) - 14840.*xi*xi/9. + 89600.*(xi*xi)*(eta*eta*eta)/9. + 12320.*(xi*xi*xi)/3. - 34720.*xi*xi*xi*xi/9. + 11200.*(xi*xi*xi*xi*xi)/9.);
651 case 30:
652 return RealGradient(-10360.*eta*xi/9. + 140.*eta/9. + 5600.*eta*(xi*xi) - 75040.*eta*xi*xi*xi/9. + 35000.*eta*(xi*xi*xi*xi)/9. + 7840.*xi*(eta*eta)/3. + 2240.*xi*(eta*eta*eta)/3. - 22400.*xi*eta*eta*eta*eta/9. + 3220.*(eta*eta)/9. - 12880.*eta*eta*xi*xi + 95200.*(eta*eta)*(xi*xi*xi)/9. + 5600.*(xi*xi)*(eta*eta*eta) - 5600.*eta*eta*eta/3. + 24640.*(eta*eta*eta*eta)/9. - 11200.*eta*eta*eta*eta*eta/9., -12880.*eta*xi/9. - 15680.*eta*xi*xi/3. + 51520.*eta*(xi*xi*xi)/3. - 95200.*eta*xi*xi*xi*xi/9. - 700.*xi/9. + 5600.*xi*(eta*eta) - 49280.*xi*eta*eta*eta/9. + 11200.*xi*(eta*eta*eta*eta)/9. - 1120.*eta*eta*xi*xi - 5600.*eta*eta*xi*xi*xi + 25900.*(xi*xi)/9. + 22400.*(xi*xi)*(eta*eta*eta)/9. - 28000.*xi*xi*xi/3. + 93800.*(xi*xi*xi*xi)/9. - 35000.*xi*xi*xi*xi*xi/9.);
653 case 31:
654 return RealGradient(-8960.*eta*xi/9. - 140.*eta/9. + 9520.*eta*(xi*xi) - 99680.*eta*xi*xi*xi/9. + 23800.*eta*(xi*xi*xi*xi)/9. - 17920.*xi*eta*eta/3. + 58240.*xi*(eta*eta*eta)/3. - 112000.*xi*eta*eta*eta*eta/9. + 4340.*(eta*eta)/9. - 15120.*eta*eta*xi*xi + 123200.*(eta*eta)*(xi*xi*xi)/9. + 2800.*(xi*xi)*(eta*eta*eta) - 560.*eta*eta*eta - 6160.*eta*eta*eta*eta/9. + 7000.*(eta*eta*eta*eta*eta)/9., 280.*eta*xi/9. - 11200.*eta*xi*xi/3. + 52640.*eta*(xi*xi*xi)/3. - 123200.*eta*xi*xi*xi*xi/9. - 980.*xi/9. + 1680.*xi*(eta*eta) - 11200.*xi*eta*eta*eta/9. - 7000.*xi*eta*eta*eta*eta/9. - 9520.*eta*eta*xi*xi - 2800.*eta*eta*xi*xi*xi + 13580.*(xi*xi)/9. + 112000.*(xi*xi)*(eta*eta*eta)/9. - 16240.*xi*xi*xi/3. + 59920.*(xi*xi*xi*xi)/9. - 23800.*xi*xi*xi*xi*xi/9.);
655 case 32:
656 return RealGradient(5320.*eta*xi/9. - 140.*eta/9. - 3920.*eta*xi*xi + 64960.*eta*(xi*xi*xi)/9. - 35000.*eta*xi*xi*xi*xi/9. + 2240.*xi*(eta*eta)/3. - 12320.*xi*eta*eta*eta/3. + 22400.*xi*(eta*eta*eta*eta)/9. - 700.*eta*eta/9. + 2800.*(eta*eta)*(xi*xi) - 44800.*eta*eta*xi*xi*xi/9. + 2800.*(xi*xi)*(eta*eta*eta) + 560.*(eta*eta*eta)/3. + 560.*(eta*eta*eta*eta)/9. - 1400.*eta*eta*eta*eta*eta/9., 2800.*eta*xi/9. - 4480.*eta*xi*xi/3. - 11200.*eta*xi*xi*xi/3. + 44800.*eta*(xi*xi*xi*xi)/9. + 700.*xi/9. - 560.*xi*eta*eta - 1120.*xi*eta*eta*eta/9. + 1400.*xi*(eta*eta*eta*eta)/9. + 6160.*(eta*eta)*(xi*xi) - 2800.*eta*eta*xi*xi*xi - 13300.*xi*xi/9. - 22400.*xi*xi*eta*eta*eta/9. + 19600.*(xi*xi*xi)/3. - 81200.*xi*xi*xi*xi/9. + 35000.*(xi*xi*xi*xi*xi)/9.);
657 case 33:
658 return RealGradient(-6440.*eta*xi/9. + 280.*eta/9. + 1680.*eta*(xi*xi) - 4480.*eta*xi*xi*xi/3. + 1400.*eta*(xi*xi*xi*xi)/3. + 19040.*xi*(eta*eta)/3. - 11200.*xi*eta*eta*eta + 5600.*xi*(eta*eta*eta*eta) - 2800.*eta*eta/9. - 9520.*eta*eta*xi*xi + 11200.*(eta*eta)*(xi*xi*xi)/3. + 8400.*(xi*xi)*(eta*eta*eta) + 560.*(eta*eta*eta) - 280.*eta*eta*eta*eta, 6160.*eta*xi/9. - 14560.*eta*xi*xi/3. + 7840.*eta*(xi*xi*xi) - 11200.*eta*xi*xi*xi*xi/3. - 560.*xi/9. - 1680.*xi*eta*eta + 1120.*xi*(eta*eta*eta) + 10080.*(eta*eta)*(xi*xi) - 8400.*eta*eta*xi*xi*xi + 4760.*(xi*xi)/9. - 5600.*xi*xi*eta*eta*eta - 3920.*xi*xi*xi/3. + 3920.*(xi*xi*xi*xi)/3. - 1400.*xi*xi*xi*xi*xi/3.);
659 case 34:
660 return RealGradient(6160.*eta*xi/9. - 560.*eta/9. - 1680.*eta*xi*xi + 1120.*eta*(xi*xi*xi) - 14560.*xi*eta*eta/3. + 7840.*xi*(eta*eta*eta) - 11200.*xi*eta*eta*eta*eta/3. + 4760.*(eta*eta)/9. + 10080.*(eta*eta)*(xi*xi) - 5600.*eta*eta*xi*xi*xi - 8400.*xi*xi*eta*eta*eta - 3920.*eta*eta*eta/3. + 3920.*(eta*eta*eta*eta)/3. - 1400.*eta*eta*eta*eta*eta/3., -6440.*eta*xi/9. + 19040.*eta*(xi*xi)/3. - 11200.*eta*xi*xi*xi + 5600.*eta*(xi*xi*xi*xi) + 280.*xi/9. + 1680.*xi*(eta*eta) - 4480.*xi*eta*eta*eta/3. + 1400.*xi*(eta*eta*eta*eta)/3. - 9520.*eta*eta*xi*xi + 8400.*(eta*eta)*(xi*xi*xi) - 2800.*xi*xi/9. + 11200.*(xi*xi)*(eta*eta*eta)/3. + 560.*(xi*xi*xi) - 280.*xi*xi*xi*xi);
661 default:
662 libmesh_error_msg("Invalid i = " << i);
663 }
664 }
665
666 default:
667 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
668 } // end switch (type)
669 } // end case FIFTH
670
671 // unsupported order
672 default:
673 libmesh_error_msg("ERROR: Unsupported 2D FE order!: " << totalorder);
674 }
675#else // LIBMESH_DIM > 1
676 libmesh_ignore(elem, order, i, p, add_p_level);
677 libmesh_not_implemented();
678#endif
679}

◆ shape() [67/195]

RealGradient libMesh::FE< 3, NEDELEC_ONE >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 28 of file fe_nedelec_one_shape_3D.C.

33{
34#if LIBMESH_DIM == 3
35 libmesh_assert(elem);
36
37 const Order totalorder = order + add_p_level*elem->p_level();
38 libmesh_assert_less(i, n_dofs(elem->type(), totalorder));
39
40 const char sign = elem->positive_edge_orientation(i) ? 1 : -1;
41
42 const Real xi = p(0);
43 const Real eta = p(1);
44 const Real zeta = p(2);
45
46 switch (totalorder)
47 {
48 // linear Nedelec (first kind) shape functions
49 case FIRST:
50 {
51 switch (elem->type())
52 {
53 case HEX20:
54 case HEX27:
55 {
56 // Even with a loose inverse_map tolerance we ought to
57 // be nearly on the element interior in master
58 // coordinates
59 libmesh_assert_less_equal ( std::fabs(xi), 1.0+10*TOLERANCE );
60 libmesh_assert_less_equal ( std::fabs(eta), 1.0+10*TOLERANCE );
61 libmesh_assert_less_equal ( std::fabs(zeta), 1.0+10*TOLERANCE );
62
63 switch(i)
64 {
65 case 0:
66 return sign * RealGradient( -0.125*(1.0-eta-zeta+eta*zeta), 0.0, 0.0 );
67 case 1:
68 return sign * RealGradient( 0.0, -0.125*(1.0+xi-zeta-xi*zeta), 0.0 );
69 case 2:
70 return sign * RealGradient( 0.125*(1.0+eta-zeta-eta*zeta), 0.0, 0.0 );
71 case 3:
72 return sign * RealGradient( 0.0, -0.125*(1.0-xi-zeta+xi*zeta), 0.0 );
73 case 4:
74 return sign * RealGradient( 0.0, 0.0, -0.125*(1.0-xi-eta+xi*eta) );
75 case 5:
76 return sign * RealGradient( 0.0, 0.0, -0.125*(1.0+xi-eta-xi*eta) );
77 case 6:
78 return sign * RealGradient( 0.0, 0.0, -0.125*(1.0+xi+eta+xi*eta) );
79 case 7:
80 return sign * RealGradient( 0.0, 0.0, -0.125*(1.0-xi+eta-xi*eta) );
81 case 8:
82 return sign * RealGradient( -0.125*(1.0-eta+zeta-eta*zeta), 0.0, 0.0 );
83 case 9:
84 return sign * RealGradient( 0.0, -0.125*(1.0+xi+zeta+xi*zeta), 0.0 );
85 case 10:
86 return sign * RealGradient( 0.125*(1.0+eta+zeta+eta*zeta), 0.0, 0.0 );
87 case 11:
88 return sign * RealGradient( 0.0, -0.125*(1.0-xi+zeta-xi*zeta), 0.0 );
89
90 default:
91 libmesh_error_msg("Invalid i = " << i);
92 }
93 }
94
95 case TET10:
96 case TET14:
97 {
98 switch(i)
99 {
100 case 0:
101 return sign * RealGradient( -1.0+eta+zeta, -xi, -xi );
102 case 1:
103 return sign * RealGradient( eta, -xi, 0.0 );
104 case 2:
105 return sign * RealGradient( -eta, -1.0+xi+zeta, -eta );
106 case 3:
107 return sign * RealGradient( -zeta, -zeta, -1.0+xi+eta );
108 case 4:
109 return sign * RealGradient( zeta, 0.0, -xi );
110 case 5:
111 return sign * RealGradient( 0.0, zeta, -eta );
112
113 default:
114 libmesh_error_msg("Invalid i = " << i);
115 }
116 }
117
118 default:
119 libmesh_error_msg("ERROR: Unsupported 3D element type!: " << Utility::enum_to_string(elem->type()));
120 }
121 }
122
123 // unsupported order
124 default:
125 libmesh_error_msg("ERROR: Unsupported 3D FE order!: " << totalorder);
126 }
127
128#else // LIBMESH_DIM != 3
129 libmesh_ignore(elem, order, i, p, add_p_level);
130 libmesh_not_implemented();
131#endif
132}

◆ shape() [68/195]

Real libMesh::FE< 1, RATIONAL_BERNSTEIN >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 44 of file fe_rational_shape_1D.C.

49{
50 libmesh_assert(elem);
51
52 // FEType object for the non-rational basis underlying this one
53 FEType fe_type(order, _underlying_fe_family);
54
55 return rational_fe_shape(*elem, fe_type, i, p, add_p_level);
56}
Real rational_fe_shape(const Elem &elem, const FEType underlying_fe_type, const unsigned int i, const Point &p, const bool add_p_level)
Definition fe.C:1119

◆ shape() [69/195]

Real libMesh::FE< 2, RATIONAL_BERNSTEIN >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 42 of file fe_rational_shape_2D.C.

47{
48 libmesh_assert(elem);
49
50 // FEType object for the non-rational basis underlying this one
51 FEType fe_type(order, _underlying_fe_family);
52
53 return rational_fe_shape(*elem, fe_type, i, p, add_p_level);
54}

◆ shape() [70/195]

Real libMesh::FE< 3, RATIONAL_BERNSTEIN >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 42 of file fe_rational_shape_3D.C.

47{
48 libmesh_assert(elem);
49
50 // FEType object for the non-rational basis underlying this one
51 FEType fe_type(order, _underlying_fe_family);
52
53 return rational_fe_shape(*elem, fe_type, i, p, add_p_level);
54}

◆ shape() [71/195]

RealGradient libMesh::FE< 2, RAVIART_THOMAS >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 30 of file fe_raviart_shape_2D.C.

35{
36 RealGradient ND1 = FE<2,NEDELEC_ONE>::shape(elem, order, i, p, add_p_level);
37 return RealGradient(-ND1(1), ND1(0));
38}

◆ shape() [72/195]

RealGradient libMesh::FE< 2, L2_RAVIART_THOMAS >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 41 of file fe_raviart_shape_2D.C.

46{
47 return FE<2,RAVIART_THOMAS>::shape(elem, order, i, p, add_p_level);
48}

◆ shape() [73/195]

RealGradient libMesh::FE< 3, RAVIART_THOMAS >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 28 of file fe_raviart_shape_3D.C.

33{
34#if LIBMESH_DIM == 3
35 libmesh_assert(elem);
36
37 const Order totalorder = order + add_p_level*elem->p_level();
38 libmesh_assert_less(i, n_dofs(elem->type(), totalorder));
39
40 const char sign = elem->positive_face_orientation(i) ? 1 : -1;
41
42 const Real xi = p(0);
43 const Real eta = p(1);
44 const Real zeta = p(2);
45
46 switch (totalorder)
47 {
48 // linear Raviart-Thomas shape functions
49 case FIRST:
50 {
51 switch (elem->type())
52 {
53 case HEX27:
54 {
55 // Even with a loose inverse_map tolerance we ought to
56 // be nearly on the element interior in master
57 // coordinates
58 libmesh_assert_less_equal ( std::fabs(xi), 1.0+10*TOLERANCE );
59 libmesh_assert_less_equal ( std::fabs(eta), 1.0+10*TOLERANCE );
60 libmesh_assert_less_equal ( std::fabs(zeta), 1.0+10*TOLERANCE );
61
62 switch(i)
63 {
64 case 0:
65 return sign * RealGradient( 0.0, 0.0, 0.125*(zeta-1.0) );
66 case 1:
67 return sign * RealGradient( 0.0, 0.125*(eta-1.0), 0.0 );
68 case 2:
69 return sign * RealGradient( 0.125*(xi+1.0), 0.0, 0.0 );
70 case 3:
71 return sign * RealGradient( 0.0, 0.125*(1.0+eta), 0.0 );
72 case 4:
73 return sign * RealGradient( 0.125*(xi-1.0), 0.0, 0.0 );
74 case 5:
75 return sign * RealGradient( 0.0, 0.0, 0.125*(1.0+zeta) );
76
77 default:
78 libmesh_error_msg("Invalid i = " << i);
79 }
80 }
81
82 case TET14:
83 {
84 switch(i)
85 {
86 case 0:
87 return sign * RealGradient( 2.0*xi, 2.0*eta, 2.0*zeta-2.0 );
88 case 1:
89 return sign * RealGradient( 2.0*xi, 2.0*eta-2.0, 2.0*zeta );
90 case 2:
91 return sign * RealGradient( 2.0*xi, 2.0*eta, 2.0*zeta );
92 case 3:
93 return sign * RealGradient( 2.0*xi-2.0, 2.0*eta, 2.0*zeta );
94
95 default:
96 libmesh_error_msg("Invalid i = " << i);
97 }
98 }
99
100 default:
101 libmesh_error_msg("ERROR: Unsupported 3D element type!: " << Utility::enum_to_string(elem->type()));
102 }
103 }
104
105 // unsupported order
106 default:
107 libmesh_error_msg("ERROR: Unsupported 3D FE order!: " << totalorder);
108 }
109
110#else // LIBMESH_DIM != 3
111 libmesh_ignore(elem, order, i, p, add_p_level);
112 libmesh_not_implemented();
113#endif
114}

◆ shape() [74/195]

RealGradient libMesh::FE< 3, L2_RAVIART_THOMAS >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 118 of file fe_raviart_shape_3D.C.

123{
124 return FE<3,RAVIART_THOMAS>::shape(elem, order, i, p, add_p_level);
125}

◆ shape() [75/195]

Real libMesh::FE< 2, SUBDIVISION >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 735 of file fe_subdivision_2D.C.

740{
741 libmesh_assert(elem);
742 const Order totalorder = order + add_p_level*elem->p_level();
743 return FE<2,SUBDIVISION>::shape(elem->type(), totalorder, i, p);
744}

◆ shape() [76/195]

Real libMesh::FE< 1, SZABAB >::shape ( const Elem elem,
const Order  order,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 83 of file fe_szabab_shape_1D.C.

88{
89 libmesh_assert(elem);
90
91 return FE<1,SZABAB>::shape(elem->type(), order + add_p_level*elem->p_level(), i, p);
92}

◆ shape() [77/195]

Real libMesh::FE< 3, CLOUGH >::shape ( const Elem libmesh_dbg_varelem,
const Order  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 48 of file fe_clough_shape_3D.C.

53{
54 libmesh_assert(elem);
55
56 libmesh_not_implemented();
57 return 0.;
58}

◆ shape() [78/195]

Real libMesh::FE< 1, L2_HIERARCHIC >::shape ( const ElemType  elem_type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 78 of file fe_hierarchic_shape_1D.C.

82{
83 return fe_hierarchic_1D_shape(elem_type, order, i, p);
84}

◆ shape() [79/195]

static OutputShape libMesh::FE< Dim, T >::shape ( const ElemType  t,
const Order  o,
const unsigned int  i,
const Point p 
)
staticinherited
Returns
The value of the \( i^{th} \) shape function at point p. This method allows you to specify the dimension, element type, and order directly. This allows the method to be static.

On a p-refined element, o should be the total order of the element.

◆ shape() [80/195]

RealGradient libMesh::FE< 0, L2_HIERARCHIC_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 155 of file fe_hierarchic_vec.C.

157{
158 return FE<0,HIERARCHIC_VEC>::shape(type, order, i, p);
159}

◆ shape() [81/195]

RealGradient libMesh::FE< 1, HIERARCHIC_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 178 of file fe_hierarchic_vec.C.

180{
181 Real value = FE<1,HIERARCHIC>::shape( type, order, i, p );
183}

◆ shape() [82/195]

RealGradient libMesh::FE< 1, L2_HIERARCHIC_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 202 of file fe_hierarchic_vec.C.

204{
205 return FE<1,HIERARCHIC_VEC>::shape(type, order, i, p);
206}

◆ shape() [83/195]

RealGradient libMesh::FE< 2, HIERARCHIC_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 225 of file fe_hierarchic_vec.C.

227{
228 Real value = FE<2,HIERARCHIC>::shape( type, order, i/2, p );
229
230 switch( i%2 )
231 {
232 case 0:
234
235 case 1:
236 return libMesh::RealGradient( Real(0), value );
237
238 default:
239 libmesh_error_msg("i%2 must be either 0 or 1!");
240 }
241
242 //dummy
243 return libMesh::RealGradient();
244}

◆ shape() [84/195]

RealGradient libMesh::FE< 2, L2_HIERARCHIC_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 292 of file fe_hierarchic_vec.C.

294{
295 return FE<2,HIERARCHIC_VEC>::shape(type, order, i, p);
296}

◆ shape() [85/195]

RealGradient libMesh::FE< 3, HIERARCHIC_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 316 of file fe_hierarchic_vec.C.

318{
319 Real value = FE<3,HIERARCHIC>::shape( type, order, i/3, p );
320
321 switch( i%3 )
322 {
323 case 0:
325
326 case 1:
327 return libMesh::RealGradient( Real(0), value );
328
329 case 2:
330 return libMesh::RealGradient( Real(0), Real(0), value );
331
332 default:
333 libmesh_error_msg("i%3 must be 0, 1, or 2!");
334 }
335
336 //dummy
337 return libMesh::RealGradient();
338}

◆ shape() [86/195]

RealGradient libMesh::FE< 3, L2_HIERARCHIC_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 393 of file fe_hierarchic_vec.C.

395{
396 return FE<3,HIERARCHIC_VEC>::shape(type, order, i, p);
397}

◆ shape() [87/195]

Real libMesh::FE< 2, L2_LAGRANGE >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 84 of file fe_lagrange_shape_2D.C.

88{
89 return fe_lagrange_2D_shape<L2_LAGRANGE>(type, nullptr, order, i, p);
90}

◆ shape() [88/195]

Real libMesh::FE< 3, LAGRANGE >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 419 of file fe_lagrange_shape_3D.C.

423{
424 return fe_lagrange_3D_shape<LAGRANGE>(type, order, nullptr, i, p);
425}

◆ shape() [89/195]

Real libMesh::FE< 3, L2_LAGRANGE >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 430 of file fe_lagrange_shape_3D.C.

434{
435 return fe_lagrange_3D_shape<L2_LAGRANGE>(type, order, nullptr, i, p);
436}

◆ shape() [90/195]

RealGradient libMesh::FE< 0, L2_LAGRANGE_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 695 of file fe_lagrange_vec.C.

697{
698 return FE<0,LAGRANGE_VEC>::shape(type, order, i, p);
699}

◆ shape() [91/195]

RealGradient libMesh::FE< 1, LAGRANGE_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 718 of file fe_lagrange_vec.C.

720{
721 Real value = FE<1,LAGRANGE>::shape( type, order, i, p );
723}

◆ shape() [92/195]

RealGradient libMesh::FE< 1, L2_LAGRANGE_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 742 of file fe_lagrange_vec.C.

744{
745 return FE<1,LAGRANGE_VEC>::shape(type, order, i, p);
746}

◆ shape() [93/195]

RealGradient libMesh::FE< 2, LAGRANGE_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 765 of file fe_lagrange_vec.C.

767{
768 Real value = FE<2,LAGRANGE>::shape( type, order, i/2, p );
769
770 switch( i%2 )
771 {
772 case 0:
774
775 case 1:
776 return libMesh::RealGradient( Real(0), value );
777
778 default:
779 libmesh_error_msg("i%2 must be either 0 or 1!");
780 }
781
782 //dummy
783 return libMesh::RealGradient();
784}

◆ shape() [94/195]

RealGradient libMesh::FE< 2, L2_LAGRANGE_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 832 of file fe_lagrange_vec.C.

834{
835 return FE<2,LAGRANGE_VEC>::shape(type, order, i, p);
836}

◆ shape() [95/195]

RealGradient libMesh::FE< 3, LAGRANGE_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 856 of file fe_lagrange_vec.C.

858{
859 Real value = FE<3,LAGRANGE>::shape( type, order, i/3, p );
860
861 switch( i%3 )
862 {
863 case 0:
865
866 case 1:
867 return libMesh::RealGradient( Real(0), value );
868
869 case 2:
870 return libMesh::RealGradient( Real(0), Real(0), value );
871
872 default:
873 libmesh_error_msg("i%3 must be 0, 1, or 2!");
874 }
875
876 //dummy
877 return libMesh::RealGradient();
878}

◆ shape() [96/195]

RealGradient libMesh::FE< 3, L2_LAGRANGE_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 933 of file fe_lagrange_vec.C.

935{
936 return FE<3,LAGRANGE_VEC>::shape(type, order, i, p);
937}

◆ shape() [97/195]

RealVectorValue libMesh::FE< 1, MONOMIAL_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 186 of file fe_monomial_vec.C.

190{
191 Real value = FE<1, MONOMIAL>::shape(type, order, i, p);
193}

◆ shape() [98/195]

RealVectorValue libMesh::FE< 2, MONOMIAL_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 223 of file fe_monomial_vec.C.

227{
228 Real value = FE<2, MONOMIAL>::shape(type, order, i / 2, p);
229
230 switch (i % 2)
231 {
232 case 0:
234
235 case 1:
237
238 default:
239 libmesh_error_msg("i%2 must be either 0 or 1!");
240 }
241
242 // dummy
244}

◆ shape() [99/195]

RealVectorValue libMesh::FE< 3, MONOMIAL_VEC >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 303 of file fe_monomial_vec.C.

307{
308 Real value = FE<3, MONOMIAL>::shape(type, order, i / 3, p);
309
310 switch (i % 3)
311 {
312 case 0:
314
315 case 1:
317
318 case 2:
319 return libMesh::RealVectorValue(Real(0), Real(0), value);
320
321 default:
322 libmesh_error_msg("i%3 must be 0, 1, or 2!");
323 }
324
325 // dummy
327}

◆ shape() [100/195]

Real libMesh::FE< 2, SUBDIVISION >::shape ( const ElemType  type,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 709 of file fe_subdivision_2D.C.

713{
714 switch (order)
715 {
716 case FOURTH:
717 {
718 switch (type)
719 {
720 case TRI3SUBDIVISION:
721 libmesh_assert_less(i, 12);
722 return FESubdivision::regular_shape(i,p(0),p(1));
723 default:
724 libmesh_error_msg("ERROR: Unsupported element type == " << Utility::enum_to_string(type));
725 }
726 }
727 default:
728 libmesh_error_msg("ERROR: Unsupported polynomial order == " << order);
729 }
730}

◆ shape() [101/195]

Real libMesh::FE< 1, L2_LAGRANGE >::shape ( const ElemType  ,
const Order  order,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 43 of file fe_lagrange_shape_1D.C.

47{
48 return fe_lagrange_1D_shape(order, i, p(0));
49}

◆ shape() [102/195]

Real libMesh::FE< 1, SIDE_HIERARCHIC >::shape ( const ElemType  ,
const Order  ,
const unsigned int  i,
const Point p 
)
inherited

Definition at line 89 of file fe_hierarchic_shape_1D.C.

93{
94 unsigned int right_side = p(0) > 0; // 0 false, 1 true
95 return (right_side == i);
96}

◆ shape() [103/195]

Real libMesh::FE< 0, L2_HIERARCHIC >::shape ( const ElemType  ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point  
)
inherited

Definition at line 47 of file fe_hierarchic_shape_0D.C.

51{
52 libmesh_assert_less (i, 1);
53 return 1.;
54}

◆ shape() [104/195]

Real libMesh::FE< 0, LAGRANGE >::shape ( const ElemType  ,
const Order  ,
const unsigned int  libmesh_dbg_vari,
const Point  
)
inherited

Definition at line 44 of file fe_lagrange_shape_0D.C.

48{
49 libmesh_assert_less (i, 1);
50 return 1.;
51}

◆ shape() [105/195]

Real libMesh::FE< 2, BERNSTEIN >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 393 of file fe_bernstein_shape_2D.C.

397{
398 libmesh_error_msg("Bernstein polynomials require the element type \nbecause edge orientation is needed.");
399 return 0.;
400}

◆ shape() [106/195]

Real libMesh::FE< 3, BERNSTEIN >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 894 of file fe_bernstein_shape_3D.C.

898{
899 libmesh_error_msg("Bernstein polynomials require the element type \nbecause edge and face orientation is needed.");
900 return 0.;
901}

◆ shape() [107/195]

Real libMesh::FE< 1, CLOUGH >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 281 of file fe_clough_shape_1D.C.

285{
286 libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
287 return 0.;
288}

◆ shape() [108/195]

Real libMesh::FE< 2, CLOUGH >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1946 of file fe_clough_shape_2D.C.

1950{
1951 libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
1952 return 0.;
1953}

◆ shape() [109/195]

Real libMesh::FE< 1, HERMITE >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 234 of file fe_hermite_shape_1D.C.

238{
239 libmesh_error_msg("Hermite elements require the real element \nto construct gradient-based degrees of freedom.");
240 return 0.;
241}

◆ shape() [110/195]

Real libMesh::FE< 2, HERMITE >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 248 of file fe_hermite_shape_2D.C.

252{
253 libmesh_error_msg("Hermite elements require the real element \nto construct gradient-based degrees of freedom.");
254 return 0.;
255}

◆ shape() [111/195]

Real libMesh::FE< 3, HERMITE >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 443 of file fe_hermite_shape_3D.C.

447{
448 libmesh_error_msg("Hermite elements require the real element \nto construct gradient-based degrees of freedom.");
449 return 0.;
450}

◆ shape() [112/195]

Real libMesh::FE< 0, SIDE_HIERARCHIC >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 59 of file fe_hierarchic_shape_0D.C.

63{
64 libmesh_error_msg("No side variables in 0D!");
65 return 1.;
66}

◆ shape() [113/195]

Real libMesh::FE< 2, L2_HIERARCHIC >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 149 of file fe_hierarchic_shape_2D.C.

153{
154 libmesh_error_msg("Hierarchic shape functions require an Elem for edge orientation.");
155 return 0.;
156}

◆ shape() [114/195]

Real libMesh::FE< 2, SIDE_HIERARCHIC >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 161 of file fe_hierarchic_shape_2D.C.

165{
166 libmesh_error_msg("Hierarchic shape functions require an Elem for edge orientation.");
167 return 0.;
168}

◆ shape() [115/195]

Real libMesh::FE< 3, L2_HIERARCHIC >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1177 of file fe_hierarchic_shape_3D.C.

1181{
1182 libmesh_error_msg("Hierarchic shape functions require an Elem for edge/face orientation.");
1183 return 0.;
1184}

◆ shape() [116/195]

Real libMesh::FE< 3, SIDE_HIERARCHIC >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1189 of file fe_hierarchic_shape_3D.C.

1193{
1194 libmesh_error_msg("Hierarchic shape functions require an Elem for edge/face orientation.");
1195 return 0.;
1196}

◆ shape() [117/195]

RealGradient libMesh::FE< 0, NEDELEC_ONE >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 457 of file fe_nedelec_one.C.

458{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape() [118/195]

RealGradient libMesh::FE< 1, NEDELEC_ONE >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 484 of file fe_nedelec_one.C.

485{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape() [119/195]

RealGradient libMesh::FE< 2, NEDELEC_ONE >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 685 of file fe_nedelec_one_shape_2D.C.

689{
690 libmesh_error_msg("Nedelec elements require the element type \nbecause edge orientation is needed.");
691 return RealGradient();
692}

◆ shape() [120/195]

RealGradient libMesh::FE< 3, NEDELEC_ONE >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 136 of file fe_nedelec_one_shape_3D.C.

140{
141 libmesh_error_msg("Nedelec elements require the element type \nbecause edge orientation is needed.");
142 return RealGradient();
143}

◆ shape() [121/195]

Real libMesh::FE< 1, RATIONAL_BERNSTEIN >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 61 of file fe_rational_shape_1D.C.

65{
66 libmesh_error_msg("Rational bases require the real element \nto query nodal weighting.");
67 return 0.;
68}

◆ shape() [122/195]

Real libMesh::FE< 2, RATIONAL_BERNSTEIN >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 59 of file fe_rational_shape_2D.C.

63{
64 libmesh_error_msg("Rational bases require the real element \nto query nodal weighting.");
65 return 0.;
66}

◆ shape() [123/195]

Real libMesh::FE< 3, RATIONAL_BERNSTEIN >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 59 of file fe_rational_shape_3D.C.

63{
64 libmesh_error_msg("Rational bases require the real element \nto query nodal weighting.");
65 return 0.;
66}

◆ shape() [124/195]

RealGradient libMesh::FE< 0, RAVIART_THOMAS >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 549 of file fe_raviart.C.

550{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape() [125/195]

RealGradient libMesh::FE< 0, L2_RAVIART_THOMAS >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 555 of file fe_raviart.C.

556{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape() [126/195]

RealGradient libMesh::FE< 1, RAVIART_THOMAS >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 598 of file fe_raviart.C.

599{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape() [127/195]

RealGradient libMesh::FE< 1, L2_RAVIART_THOMAS >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 604 of file fe_raviart.C.

605{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape() [128/195]

RealGradient libMesh::FE< 2, RAVIART_THOMAS >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 51 of file fe_raviart_shape_2D.C.

55{
56 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause edge orientation is needed.");
57 return RealGradient();
58}

◆ shape() [129/195]

RealGradient libMesh::FE< 2, L2_RAVIART_THOMAS >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 61 of file fe_raviart_shape_2D.C.

65{
66 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause edge orientation is needed.");
67 return RealGradient();
68}

◆ shape() [130/195]

RealGradient libMesh::FE< 3, RAVIART_THOMAS >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 129 of file fe_raviart_shape_3D.C.

133{
134 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause face orientation is needed.");
135 return RealGradient();
136}

◆ shape() [131/195]

RealGradient libMesh::FE< 3, L2_RAVIART_THOMAS >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 140 of file fe_raviart_shape_3D.C.

144{
145 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause face orientation is needed.");
146 return RealGradient();
147}

◆ shape() [132/195]

Real libMesh::FE< 2, SZABAB >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 644 of file fe_szabab_shape_2D.C.

648{
649 libmesh_error_msg("Szabo-Babuska polynomials require the element type \nbecause edge orientation is needed.");
650 return 0.;
651}

◆ shape() [133/195]

Real libMesh::FE< 1, XYZ >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 84 of file fe_xyz_shape_1D.C.

88{
89 libmesh_error_msg("XYZ polynomials require the element.");
90 return 0.;
91}

◆ shape() [134/195]

Real libMesh::FE< 2, XYZ >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 148 of file fe_xyz_shape_2D.C.

152{
153 libmesh_error_msg("XYZ polynomials require the element.");
154 return 0.;
155}

◆ shape() [135/195]

Real libMesh::FE< 3, XYZ >::shape ( const ElemType  ,
const Order  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 216 of file fe_xyz_shape_3D.C.

220{
221 libmesh_error_msg("XYZ polynomials require the element.");
222 return 0.;
223}

◆ shape() [136/195]

Real libMesh::FE< 1, BERNSTEIN >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 208 of file fe_bernstein_shape_1D.C.

213{
214 libmesh_assert(elem);
215 return FE<1,BERNSTEIN>::shape
216 (elem->type(),
217 fet.order + add_p_level*elem->p_level(), i, p);
218}

◆ shape() [137/195]

Real libMesh::FE< 2, BERNSTEIN >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 404 of file fe_bernstein_shape_2D.C.

409{
410 return FE<2,BERNSTEIN>::shape(elem, fet.order, i, p, add_p_level);
411}

◆ shape() [138/195]

Real libMesh::FE< 3, BERNSTEIN >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 905 of file fe_bernstein_shape_3D.C.

910{
911 return FE<3,BERNSTEIN>::shape(elem, fet.order, i, p, add_p_level);
912}

◆ shape() [139/195]

Real libMesh::FE< 1, CLOUGH >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 291 of file fe_clough_shape_1D.C.

296{
297 return FE<1,CLOUGH>::shape(elem, fet.order, i, p, add_p_level);
298}

◆ shape() [140/195]

Real libMesh::FE< 2, CLOUGH >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1957 of file fe_clough_shape_2D.C.

1962{
1963 return FE<2,CLOUGH>::shape(elem, fet.order, i, p, add_p_level);
1964}

◆ shape() [141/195]

Real libMesh::FE< 1, HERMITE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 245 of file fe_hermite_shape_1D.C.

250{
251 return FE<1,HERMITE>::shape(elem, fet.order, i, p, add_p_level);
252}

◆ shape() [142/195]

Real libMesh::FE< 2, HERMITE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 259 of file fe_hermite_shape_2D.C.

264{
265 return FE<2,HERMITE>::shape(elem, fet.order, i, p, add_p_level);
266}

◆ shape() [143/195]

Real libMesh::FE< 3, HERMITE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 453 of file fe_hermite_shape_3D.C.

458{
459 return FE<3,HERMITE>::shape(elem, fet.order, i, p, add_p_level);
460}

◆ shape() [144/195]

Real libMesh::FE< 1, HIERARCHIC >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 115 of file fe_hierarchic_shape_1D.C.

120{
121 libmesh_assert(elem);
122 return fe_hierarchic_1D_shape(elem->type(), fet.order + add_p_level*elem->p_level(), i, p);
123}

◆ shape() [145/195]

Real libMesh::FE< 1, L2_HIERARCHIC >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 142 of file fe_hierarchic_shape_1D.C.

147{
148 libmesh_assert(elem);
149 return fe_hierarchic_1D_shape(elem->type(), fet.order + add_p_level*elem->p_level(), i, p);
150}

◆ shape() [146/195]

Real libMesh::FE< 2, HIERARCHIC >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 185 of file fe_hierarchic_shape_2D.C.

190{
191 return fe_hierarchic_2D_shape<HIERARCHIC>(elem, fet.order, i, p, add_p_level);
192}

◆ shape() [147/195]

Real libMesh::FE< 2, L2_HIERARCHIC >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 207 of file fe_hierarchic_shape_2D.C.

212{
213 return fe_hierarchic_2D_shape<L2_HIERARCHIC>(elem, fet.order, i, p, add_p_level);
214}

◆ shape() [148/195]

Real libMesh::FE< 2, SIDE_HIERARCHIC >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 391 of file fe_hierarchic_shape_2D.C.

396{
397 return FE<2,SIDE_HIERARCHIC>::shape(elem, fet.order, i, p, add_p_level);
398}

◆ shape() [149/195]

Real libMesh::FE< 3, HIERARCHIC >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1212 of file fe_hierarchic_shape_3D.C.

1217{
1218 return fe_hierarchic_3D_shape<HIERARCHIC>(elem, fet.order, i, p, add_p_level);
1219}

◆ shape() [150/195]

Real libMesh::FE< 3, L2_HIERARCHIC >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1236 of file fe_hierarchic_shape_3D.C.

1241{
1242 return fe_hierarchic_3D_shape<L2_HIERARCHIC>(elem, fet.order, i, p, add_p_level);
1243}

◆ shape() [151/195]

Real libMesh::FE< 3, SIDE_HIERARCHIC >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1498 of file fe_hierarchic_shape_3D.C.

1503{
1504 return FE<3,SIDE_HIERARCHIC>::shape(elem,fet.order, i, p, add_p_level);
1505}

◆ shape() [152/195]

Real libMesh::FE< 1, LAGRANGE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 67 of file fe_lagrange_shape_1D.C.

72{
73 libmesh_assert(elem);
74 return fe_lagrange_1D_shape(fet.order + add_p_level*elem->p_level(), i, p(0));
75}

◆ shape() [153/195]

Real libMesh::FE< 1, L2_LAGRANGE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 90 of file fe_lagrange_shape_1D.C.

95{
96 libmesh_assert(elem);
97 return fe_lagrange_1D_shape(fet.order + add_p_level*elem->p_level(), i, p(0));
98}

◆ shape() [154/195]

Real libMesh::FE< 2, LAGRANGE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 123 of file fe_lagrange_shape_2D.C.

128{
129 libmesh_assert(elem);
130 return fe_lagrange_2D_shape<LAGRANGE>(elem->type(), elem, fet.order + add_p_level*elem->p_level(), i, p);
131}

◆ shape() [155/195]

Real libMesh::FE< 2, L2_LAGRANGE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 136 of file fe_lagrange_shape_2D.C.

141{
142 libmesh_assert(elem);
143 return fe_lagrange_2D_shape<L2_LAGRANGE>(elem->type(), elem, fet.order + add_p_level*elem->p_level(), i, p);
144}

◆ shape() [156/195]

Real libMesh::FE< 3, LAGRANGE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 471 of file fe_lagrange_shape_3D.C.

476{
477 libmesh_assert(elem);
478 return fe_lagrange_3D_shape<LAGRANGE>(elem->type(), fet.order + add_p_level*elem->p_level(), elem, i, p);
479}

◆ shape() [157/195]

Real libMesh::FE< 3, L2_LAGRANGE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 484 of file fe_lagrange_shape_3D.C.

489{
490 libmesh_assert(elem);
491 return fe_lagrange_3D_shape<L2_LAGRANGE>(elem->type(), fet.order + add_p_level*elem->p_level(), elem, i, p);
492}

◆ shape() [158/195]

Real libMesh::FE< 1, MONOMIAL >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 85 of file fe_monomial_shape_1D.C.

90{
91 libmesh_assert(elem);
92 return FE<1,MONOMIAL>::shape(elem->type(), fet.order + add_p_level*elem->p_level(), i, p);
93}

◆ shape() [159/195]

Real libMesh::FE< 2, MONOMIAL >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 136 of file fe_monomial_shape_2D.C.

141{
142 libmesh_assert(elem);
143 // by default call the orientation-independent shape functions
144 return FE<2,MONOMIAL>::shape(elem->type(), fet.order + add_p_level*elem->p_level(), i, p);
145}

◆ shape() [160/195]

Real libMesh::FE< 3, MONOMIAL >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 205 of file fe_monomial_shape_3D.C.

210{
211 libmesh_assert(elem);
212 // by default call the orientation-independent shape functions
213 return FE<3,MONOMIAL>::shape(elem->type(), fet.order + add_p_level*elem->p_level(), i, p);
214}

◆ shape() [161/195]

RealGradient libMesh::FE< 2, NEDELEC_ONE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 696 of file fe_nedelec_one_shape_2D.C.

701{
702 return FE<2,NEDELEC_ONE>::shape(elem, fet.order, i, p, add_p_level);
703}

◆ shape() [162/195]

RealGradient libMesh::FE< 3, NEDELEC_ONE >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 147 of file fe_nedelec_one_shape_3D.C.

152{
153 return FE<3,NEDELEC_ONE>::shape(elem, fet.order, i, p, add_p_level);
154}

◆ shape() [163/195]

Real libMesh::FE< 1, RATIONAL_BERNSTEIN >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 72 of file fe_rational_shape_1D.C.

77{
78 libmesh_assert(elem);
79 return FE<1,RATIONAL_BERNSTEIN>::shape(elem, fet.order, i, p, add_p_level);
80}

◆ shape() [164/195]

Real libMesh::FE< 2, RATIONAL_BERNSTEIN >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 71 of file fe_rational_shape_2D.C.

76{
78 (elem, fet.order, i, p, add_p_level);
79}

◆ shape() [165/195]

Real libMesh::FE< 3, RATIONAL_BERNSTEIN >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 69 of file fe_rational_shape_3D.C.

74{
76 (elem, fet.order, i, p, add_p_level);
77}

◆ shape() [166/195]

RealGradient libMesh::FE< 2, RAVIART_THOMAS >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 71 of file fe_raviart_shape_2D.C.

76{
77 return FE<2,RAVIART_THOMAS>::shape(elem, fet.order, i, p, add_p_level);
78}

◆ shape() [167/195]

RealGradient libMesh::FE< 2, L2_RAVIART_THOMAS >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 81 of file fe_raviart_shape_2D.C.

86{
87 return FE<2,L2_RAVIART_THOMAS>::shape(elem, fet.order, i, p, add_p_level);
88}

◆ shape() [168/195]

RealGradient libMesh::FE< 3, RAVIART_THOMAS >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 151 of file fe_raviart_shape_3D.C.

156{
157 return FE<3,RAVIART_THOMAS>::shape(elem, fet.order, i, p, add_p_level);
158}

◆ shape() [169/195]

RealGradient libMesh::FE< 3, L2_RAVIART_THOMAS >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 162 of file fe_raviart_shape_3D.C.

167{
168 return FE<3,L2_RAVIART_THOMAS>::shape(elem, fet.order, i, p, add_p_level);
169}

◆ shape() [170/195]

Real libMesh::FE< 2, SUBDIVISION >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 748 of file fe_subdivision_2D.C.

753{
754 libmesh_assert(elem);
755 const Order totalorder = fet.order + add_p_level*elem->p_level();
756 return FE<2,SUBDIVISION>::shape(elem->type(), totalorder, i, p);
757}

◆ shape() [171/195]

Real libMesh::FE< 1, SZABAB >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 96 of file fe_szabab_shape_1D.C.

101{
102 libmesh_assert(elem);
103
104 return FE<1,SZABAB>::shape(elem->type(), fet.order + add_p_level*elem->p_level(), i, p);
105}

◆ shape() [172/195]

Real libMesh::FE< 2, SZABAB >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 656 of file fe_szabab_shape_2D.C.

661{
662 return FE<2,SZABAB>::shape(elem, fet.order, i, p, add_p_level);
663}

◆ shape() [173/195]

Real libMesh::FE< 1, XYZ >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 97 of file fe_xyz_shape_1D.C.

102{
103 return FE<1,XYZ>::shape(elem, fet.order, i, p, add_p_level);
104}

◆ shape() [174/195]

Real libMesh::FE< 2, XYZ >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 160 of file fe_xyz_shape_2D.C.

165{
166 return FE<2,XYZ>::shape(elem, fet.order, i, p, add_p_level);
167}

◆ shape() [175/195]

Real libMesh::FE< 3, XYZ >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 228 of file fe_xyz_shape_3D.C.

233{
234 return FE<3,XYZ>::shape(elem, fet.order, i, p, add_p_level);
235}

◆ shape() [176/195]

static OutputShape libMesh::FE< Dim, T >::shape ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const Point p,
const bool  add_p_level = true 
)
staticinherited
Returns
The value of the \( i^{th} \) shape function at point p. This method allows you to specify the dimension and element type directly. The order is given by the FEType. This allows the method to be static.

On a p-refined element, o should be the base order of the element if add_p_level is left true, or can be the base order of the element if add_p_level is set to false.

◆ shape() [177/195]

Real libMesh::FE< 1, SIDE_HIERARCHIC >::shape ( const FEType  ,
const Elem ,
const unsigned int  i,
const Point p,
const bool   
)
inherited

Definition at line 166 of file fe_hierarchic_shape_1D.C.

171{
172 unsigned int right_side = p(0) > 0; // 0 false, 1 true
173 return (right_side == i);
174}

◆ shape() [178/195]

Real libMesh::FE< 0, BERNSTEIN >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 57 of file fe_bernstein_shape_0D.C.

62{
63 libmesh_assert_less (i, 1);
64 return 1.;
65}

◆ shape() [179/195]

Real libMesh::FE< 0, CLOUGH >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 58 of file fe_clough_shape_0D.C.

63{
64 libmesh_assert_less (i, 1);
65 return 1.;
66}

◆ shape() [180/195]

Real libMesh::FE< 0, HERMITE >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 57 of file fe_hermite_shape_0D.C.

62{
63 libmesh_assert_less (i, 1);
64 return 1.;
65}

◆ shape() [181/195]

Real libMesh::FE< 0, HIERARCHIC >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 110 of file fe_hierarchic_shape_0D.C.

115{
116 libmesh_assert_less (i, 1);
117 return 1.;
118}

◆ shape() [182/195]

Real libMesh::FE< 0, L2_HIERARCHIC >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 123 of file fe_hierarchic_shape_0D.C.

128{
129 libmesh_assert_less (i, 1);
130 return 1.;
131}

◆ shape() [183/195]

Real libMesh::FE< 0, L2_LAGRANGE >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 81 of file fe_lagrange_shape_0D.C.

86{
87 libmesh_assert_less (i, 1);
88 return 1.;
89}

◆ shape() [184/195]

Real libMesh::FE< 0, LAGRANGE >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 93 of file fe_lagrange_shape_0D.C.

98{
99 libmesh_assert_less (i, 1);
100 return 1.;
101}

◆ shape() [185/195]

Real libMesh::FE< 0, MONOMIAL >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 58 of file fe_monomial_shape_0D.C.

63{
64 libmesh_assert_less (i, 1);
65 return 1.;
66}

◆ shape() [186/195]

Real libMesh::FE< 0, RATIONAL_BERNSTEIN >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 57 of file fe_rational_shape_0D.C.

62{
63 libmesh_assert_less (i, 1);
64 return 1.;
65}

◆ shape() [187/195]

Real libMesh::FE< 0, SZABAB >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 58 of file fe_szabab_shape_0D.C.

63{
64 libmesh_assert_less (i, 1);
65 return 1.;
66}

◆ shape() [188/195]

Real libMesh::FE< 0, XYZ >::shape ( const FEType  ,
const Elem ,
const unsigned int  libmesh_dbg_vari,
const Point ,
const bool   
)
inherited

Definition at line 59 of file fe_xyz_shape_0D.C.

64{
65 libmesh_assert_less (i, 1);
66 return 1.;
67}

◆ shape() [189/195]

Real libMesh::FE< 0, SIDE_HIERARCHIC >::shape ( const FEType  ,
const Elem ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 136 of file fe_hierarchic_shape_0D.C.

141{
142 libmesh_error_msg("No side variables in 0D!");
143 return 1.;
144}

◆ shape() [190/195]

Real libMesh::FE< 0, SCALAR >::shape ( const FEType  ,
const Elem ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 53 of file fe_scalar_shape_0D.C.

58{
59 return 1.;
60}

◆ shape() [191/195]

Real libMesh::FE< 1, SCALAR >::shape ( const FEType  ,
const Elem ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 55 of file fe_scalar_shape_1D.C.

60{
61 return 0.;
62}

◆ shape() [192/195]

Real libMesh::FE< 2, SCALAR >::shape ( const FEType  ,
const Elem ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 54 of file fe_scalar_shape_2D.C.

59{
60 return 1.;
61}

◆ shape() [193/195]

Real libMesh::FE< 3, SCALAR >::shape ( const FEType  ,
const Elem ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 54 of file fe_scalar_shape_3D.C.

59{
60 return 1.;
61}

◆ shape() [194/195]

Real libMesh::FE< 3, SZABAB >::shape ( const FEType  ,
const Elem ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 60 of file fe_szabab_shape_3D.C.

65{
66 libmesh_error_msg("Szabo-Babuska polynomials are not defined in 3D");
67 return 0;
68}

◆ shape() [195/195]

Real libMesh::FE< 3, CLOUGH >::shape ( const FEType  ,
const Elem libmesh_dbg_varelem,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 62 of file fe_clough_shape_3D.C.

67{
68 libmesh_assert(elem);
69
70 libmesh_not_implemented();
71 return 0.;
72}

◆ shape_deriv() [1/233]

Real libMesh::FE< 0, BERNSTEIN >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 83 of file fe_bernstein_shape_0D.C.

89{
90 libmesh_error_msg("No spatial derivatives in 0D!");
91 return 0.;
92}

◆ shape_deriv() [2/233]

Real libMesh::FE< 0, CLOUGH >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 84 of file fe_clough_shape_0D.C.

90{
91 libmesh_error_msg("No spatial derivatives in 0D!");
92 return 0.;
93}

◆ shape_deriv() [3/233]

Real libMesh::FE< 0, HERMITE >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 84 of file fe_hermite_shape_0D.C.

90{
91 libmesh_error_msg("No spatial derivatives in 0D!");
92 return 0.;
93}

◆ shape_deriv() [4/233]

Real libMesh::FE< 0, HIERARCHIC >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 162 of file fe_hierarchic_shape_0D.C.

168{
169 libmesh_error_msg("No spatial derivatives in 0D!");
170 return 0.;
171}

◆ shape_deriv() [5/233]

Real libMesh::FE< 0, L2_HIERARCHIC >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 203 of file fe_hierarchic_shape_0D.C.

209{
210 libmesh_error_msg("No spatial derivatives in 0D!");
211 return 0.;
212}

◆ shape_deriv() [6/233]

Real libMesh::FE< 0, SIDE_HIERARCHIC >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 243 of file fe_hierarchic_shape_0D.C.

249{
250 libmesh_error_msg("No spatial derivatives in 0D!");
251 return 0.;
252}

◆ shape_deriv() [7/233]

Real libMesh::FE< 1, SIDE_HIERARCHIC >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 275 of file fe_hierarchic_shape_1D.C.

281{
282 return 0;
283}

◆ shape_deriv() [8/233]

Real libMesh::FE< 0, L2_LAGRANGE >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 118 of file fe_lagrange_shape_0D.C.

124{
125 libmesh_error_msg("No spatial derivatives in 0D!");
126 return 0.;
127}

◆ shape_deriv() [9/233]

Real libMesh::FE< 0, LAGRANGE >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 145 of file fe_lagrange_shape_0D.C.

151{
152 libmesh_error_msg("No spatial derivatives in 0D!");
153 return 0.;
154}

◆ shape_deriv() [10/233]

Real libMesh::FE< 0, MONOMIAL >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 85 of file fe_monomial_shape_0D.C.

91{
92 libmesh_error_msg("No spatial derivatives in 0D!");
93 return 0.;
94}

◆ shape_deriv() [11/233]

RealGradient libMesh::FE< 0, NEDELEC_ONE >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 467 of file fe_nedelec_one.C.

469{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [12/233]

RealGradient libMesh::FE< 1, NEDELEC_ONE >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 494 of file fe_nedelec_one.C.

496{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [13/233]

Real libMesh::FE< 0, RATIONAL_BERNSTEIN >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 82 of file fe_rational_shape_0D.C.

88{
89 libmesh_error_msg("No spatial derivatives in 0D!");
90 return 0.;
91}

◆ shape_deriv() [14/233]

RealGradient libMesh::FE< 0, RAVIART_THOMAS >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 565 of file fe_raviart.C.

567{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [15/233]

RealGradient libMesh::FE< 0, L2_RAVIART_THOMAS >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 573 of file fe_raviart.C.

575{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [16/233]

RealGradient libMesh::FE< 1, RAVIART_THOMAS >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 614 of file fe_raviart.C.

616{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [17/233]

RealGradient libMesh::FE< 1, L2_RAVIART_THOMAS >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 622 of file fe_raviart.C.

624{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [18/233]

Real libMesh::FE< 0, SCALAR >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 73 of file fe_scalar_shape_0D.C.

79{
80 return 0.;
81}

◆ shape_deriv() [19/233]

Real libMesh::FE< 1, SCALAR >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 76 of file fe_scalar_shape_1D.C.

82{
83 return 0.;
84}

◆ shape_deriv() [20/233]

Real libMesh::FE< 2, SCALAR >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 75 of file fe_scalar_shape_2D.C.

81{
82 return 0.;
83}

◆ shape_deriv() [21/233]

Real libMesh::FE< 3, SCALAR >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 74 of file fe_scalar_shape_3D.C.

80{
81 return 0.;
82}

◆ shape_deriv() [22/233]

Real libMesh::FE< 0, SZABAB >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 85 of file fe_szabab_shape_0D.C.

91{
92 libmesh_error_msg("No spatial derivatives in 0D!");
93 return 0.;
94}

◆ shape_deriv() [23/233]

Real libMesh::FE< 3, SZABAB >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 85 of file fe_szabab_shape_3D.C.

91{
92 libmesh_error_msg("Szabo-Babuska polynomials are not defined in 3D");
93 return 0.;
94}

◆ shape_deriv() [24/233]

Real libMesh::FE< 0, XYZ >::shape_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 85 of file fe_xyz_shape_0D.C.

91{
92 libmesh_error_msg("No spatial derivatives in 0D!");
93 return 0.;
94}

◆ shape_deriv() [25/233]

Real libMesh::FE< 2, XYZ >::shape_deriv ( const Elem elem,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  j,
const Point point_in,
const bool  libmesh_dbg_varadd_p_level 
)
inherited

Definition at line 174 of file fe_xyz_shape_2D.C.

180{
181#if LIBMESH_DIM > 1
182
183
184 libmesh_assert_less (j, 2);
185 libmesh_assert(elem);
186
187 Point avg = elem->vertex_average();
188 Point max_distance = Point(0.,0.,0.);
189 for (const Point & p : elem->node_ref_range())
190 for (unsigned int d = 0; d < 2; d++)
191 {
192 const Real distance = std::abs(avg(d) - p(d));
193 max_distance(d) = std::max(distance, max_distance(d));
194 }
195
196 const Real x = point_in(0);
197 const Real y = point_in(1);
198 const Real xc = avg(0);
199 const Real yc = avg(1);
200 const Real distx = max_distance(0);
201 const Real disty = max_distance(1);
202 const Real dx = (x - xc)/distx;
203 const Real dy = (y - yc)/disty;
204
205#ifndef NDEBUG
206 // totalorder is only used in the assertion below, so
207 // we avoid declaring it when asserts are not active.
208 const unsigned int totalorder = order + add_p_level * elem->p_level();
209#endif
210 libmesh_assert_less (i, (totalorder+1)*(totalorder+2)/2);
211
212 // monomials. since they are hierarchic we only need one case block.
213
214 switch (j)
215 {
216 // d()/dx
217 case 0:
218 {
219 switch (i)
220 {
221 // constants
222 case 0:
223 return 0.;
224
225 // linears
226 case 1:
227 return 1./distx;
228
229 case 2:
230 return 0.;
231
232 // quadratics
233 case 3:
234 return 2.*dx/distx;
235
236 case 4:
237 return dy/distx;
238
239 case 5:
240 return 0.;
241
242 // cubics
243 case 6:
244 return 3.*dx*dx/distx;
245
246 case 7:
247 return 2.*dx*dy/distx;
248
249 case 8:
250 return dy*dy/distx;
251
252 case 9:
253 return 0.;
254
255 // quartics
256 case 10:
257 return 4.*dx*dx*dx/distx;
258
259 case 11:
260 return 3.*dx*dx*dy/distx;
261
262 case 12:
263 return 2.*dx*dy*dy/distx;
264
265 case 13:
266 return dy*dy*dy/distx;
267
268 case 14:
269 return 0.;
270
271 default:
272 unsigned int o = 0;
273 for (; i >= (o+1)*(o+2)/2; o++) { }
274 unsigned int i2 = i - (o*(o+1)/2);
275 Real val = o - i2;
276 for (unsigned int index=i2+1; index < o; index++)
277 val *= dx;
278 for (unsigned int index=0; index != i2; index++)
279 val *= dy;
280 return val/distx;
281 }
282 }
283
284
285 // d()/dy
286 case 1:
287 {
288 switch (i)
289 {
290 // constants
291 case 0:
292 return 0.;
293
294 // linears
295 case 1:
296 return 0.;
297
298 case 2:
299 return 1./disty;
300
301 // quadratics
302 case 3:
303 return 0.;
304
305 case 4:
306 return dx/disty;
307
308 case 5:
309 return 2.*dy/disty;
310
311 // cubics
312 case 6:
313 return 0.;
314
315 case 7:
316 return dx*dx/disty;
317
318 case 8:
319 return 2.*dx*dy/disty;
320
321 case 9:
322 return 3.*dy*dy/disty;
323
324 // quartics
325 case 10:
326 return 0.;
327
328 case 11:
329 return dx*dx*dx/disty;
330
331 case 12:
332 return 2.*dx*dx*dy/disty;
333
334 case 13:
335 return 3.*dx*dy*dy/disty;
336
337 case 14:
338 return 4.*dy*dy*dy/disty;
339
340 default:
341 unsigned int o = 0;
342 for (; i >= (o+1)*(o+2)/2; o++) { }
343 unsigned int i2 = i - (o*(o+1)/2);
344 Real val = i2;
345 for (unsigned int index=i2; index != o; index++)
346 val *= dx;
347 for (unsigned int index=1; index <= i2; index++)
348 val *= dy;
349 return val/disty;
350 }
351 }
352
353
354 default:
355 libmesh_error_msg("Invalid j = " << j);
356 }
357
358#else // LIBMESH_DIM <= 1
359 libmesh_assert(true || order || add_p_level);
360 libmesh_ignore(elem, i, j, point_in);
361 libmesh_not_implemented();
362#endif
363}
void ErrorVector unsigned int
Real distance(const Point &p)

◆ shape_deriv() [26/233]

Real libMesh::FE< 3, XYZ >::shape_deriv ( const Elem elem,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  j,
const Point point_in,
const bool  libmesh_dbg_varadd_p_level 
)
inherited

Definition at line 242 of file fe_xyz_shape_3D.C.

248{
249#if LIBMESH_DIM == 3
250
251 libmesh_assert(elem);
252 libmesh_assert_less (j, 3);
253
254 Point avg = elem->vertex_average();
255 Point max_distance = Point(0.,0.,0.);
256 for (auto p : make_range(elem->n_nodes()))
257 for (unsigned int d = 0; d < 3; d++)
258 {
259 const Real distance = std::abs(avg(d) - elem->point(p)(d));
260 max_distance(d) = std::max(distance, max_distance(d));
261 }
262
263 const Real x = point_in(0);
264 const Real y = point_in(1);
265 const Real z = point_in(2);
266 const Real xc = avg(0);
267 const Real yc = avg(1);
268 const Real zc = avg(2);
269 const Real distx = max_distance(0);
270 const Real disty = max_distance(1);
271 const Real distz = max_distance(2);
272 const Real dx = (x - xc)/distx;
273 const Real dy = (y - yc)/disty;
274 const Real dz = (z - zc)/distz;
275
276#ifndef NDEBUG
277 // totalorder is only used in the assertion below, so
278 // we avoid declaring it when asserts are not active.
279 const unsigned int totalorder = order + add_p_level*elem->p_level();
280#endif
281 libmesh_assert_less (i, (totalorder+1) * (totalorder+2) *
282 (totalorder+3)/6);
283
284 switch (j)
285 {
286 // d()/dx
287 case 0:
288 {
289 switch (i)
290 {
291 // constant
292 case 0:
293 return 0.;
294
295 // linear
296 case 1:
297 return 1./distx;
298
299 case 2:
300 return 0.;
301
302 case 3:
303 return 0.;
304
305 // quadratic
306 case 4:
307 return 2.*dx/distx;
308
309 case 5:
310 return dy/distx;
311
312 case 6:
313 return 0.;
314
315 case 7:
316 return dz/distx;
317
318 case 8:
319 return 0.;
320
321 case 9:
322 return 0.;
323
324 // cubic
325 case 10:
326 return 3.*dx*dx/distx;
327
328 case 11:
329 return 2.*dx*dy/distx;
330
331 case 12:
332 return dy*dy/distx;
333
334 case 13:
335 return 0.;
336
337 case 14:
338 return 2.*dx*dz/distx;
339
340 case 15:
341 return dy*dz/distx;
342
343 case 16:
344 return 0.;
345
346 case 17:
347 return dz*dz/distx;
348
349 case 18:
350 return 0.;
351
352 case 19:
353 return 0.;
354
355 // quartics
356 case 20:
357 return 4.*dx*dx*dx/distx;
358
359 case 21:
360 return 3.*dx*dx*dy/distx;
361
362 case 22:
363 return 2.*dx*dy*dy/distx;
364
365 case 23:
366 return dy*dy*dy/distx;
367
368 case 24:
369 return 0.;
370
371 case 25:
372 return 3.*dx*dx*dz/distx;
373
374 case 26:
375 return 2.*dx*dy*dz/distx;
376
377 case 27:
378 return dy*dy*dz/distx;
379
380 case 28:
381 return 0.;
382
383 case 29:
384 return 2.*dx*dz*dz/distx;
385
386 case 30:
387 return dy*dz*dz/distx;
388
389 case 31:
390 return 0.;
391
392 case 32:
393 return dz*dz*dz/distx;
394
395 case 33:
396 return 0.;
397
398 case 34:
399 return 0.;
400
401 default:
402 unsigned int o = 0;
403 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
404 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
405 unsigned int block=o, nz = 0;
406 for (; block < i2; block += (o-nz+1)) { nz++; }
407 const unsigned int nx = block - i2;
408 const unsigned int ny = o - nx - nz;
409 Real val = nx;
410 for (unsigned int index=1; index < nx; index++)
411 val *= dx;
412 for (unsigned int index=0; index != ny; index++)
413 val *= dy;
414 for (unsigned int index=0; index != nz; index++)
415 val *= dz;
416 return val/distx;
417 }
418 }
419
420
421 // d()/dy
422 case 1:
423 {
424 switch (i)
425 {
426 // constant
427 case 0:
428 return 0.;
429
430 // linear
431 case 1:
432 return 0.;
433
434 case 2:
435 return 1./disty;
436
437 case 3:
438 return 0.;
439
440 // quadratic
441 case 4:
442 return 0.;
443
444 case 5:
445 return dx/disty;
446
447 case 6:
448 return 2.*dy/disty;
449
450 case 7:
451 return 0.;
452
453 case 8:
454 return dz/disty;
455
456 case 9:
457 return 0.;
458
459 // cubic
460 case 10:
461 return 0.;
462
463 case 11:
464 return dx*dx/disty;
465
466 case 12:
467 return 2.*dx*dy/disty;
468
469 case 13:
470 return 3.*dy*dy/disty;
471
472 case 14:
473 return 0.;
474
475 case 15:
476 return dx*dz/disty;
477
478 case 16:
479 return 2.*dy*dz/disty;
480
481 case 17:
482 return 0.;
483
484 case 18:
485 return dz*dz/disty;
486
487 case 19:
488 return 0.;
489
490 // quartics
491 case 20:
492 return 0.;
493
494 case 21:
495 return dx*dx*dx/disty;
496
497 case 22:
498 return 2.*dx*dx*dy/disty;
499
500 case 23:
501 return 3.*dx*dy*dy/disty;
502
503 case 24:
504 return 4.*dy*dy*dy/disty;
505
506 case 25:
507 return 0.;
508
509 case 26:
510 return dx*dx*dz/disty;
511
512 case 27:
513 return 2.*dx*dy*dz/disty;
514
515 case 28:
516 return 3.*dy*dy*dz/disty;
517
518 case 29:
519 return 0.;
520
521 case 30:
522 return dx*dz*dz/disty;
523
524 case 31:
525 return 2.*dy*dz*dz/disty;
526
527 case 32:
528 return 0.;
529
530 case 33:
531 return dz*dz*dz/disty;
532
533 case 34:
534 return 0.;
535
536 default:
537 unsigned int o = 0;
538 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
539 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
540 unsigned int block=o, nz = 0;
541 for (; block < i2; block += (o-nz+1)) { nz++; }
542 const unsigned int nx = block - i2;
543 const unsigned int ny = o - nx - nz;
544 Real val = ny;
545 for (unsigned int index=0; index != nx; index++)
546 val *= dx;
547 for (unsigned int index=1; index < ny; index++)
548 val *= dy;
549 for (unsigned int index=0; index != nz; index++)
550 val *= dz;
551 return val/disty;
552 }
553 }
554
555
556 // d()/dz
557 case 2:
558 {
559 switch (i)
560 {
561 // constant
562 case 0:
563 return 0.;
564
565 // linear
566 case 1:
567 return 0.;
568
569 case 2:
570 return 0.;
571
572 case 3:
573 return 1./distz;
574
575 // quadratic
576 case 4:
577 return 0.;
578
579 case 5:
580 return 0.;
581
582 case 6:
583 return 0.;
584
585 case 7:
586 return dx/distz;
587
588 case 8:
589 return dy/distz;
590
591 case 9:
592 return 2.*dz/distz;
593
594 // cubic
595 case 10:
596 return 0.;
597
598 case 11:
599 return 0.;
600
601 case 12:
602 return 0.;
603
604 case 13:
605 return 0.;
606
607 case 14:
608 return dx*dx/distz;
609
610 case 15:
611 return dx*dy/distz;
612
613 case 16:
614 return dy*dy/distz;
615
616 case 17:
617 return 2.*dx*dz/distz;
618
619 case 18:
620 return 2.*dy*dz/distz;
621
622 case 19:
623 return 3.*dz*dz/distz;
624
625 // quartics
626 case 20:
627 return 0.;
628
629 case 21:
630 return 0.;
631
632 case 22:
633 return 0.;
634
635 case 23:
636 return 0.;
637
638 case 24:
639 return 0.;
640
641 case 25:
642 return dx*dx*dx/distz;
643
644 case 26:
645 return dx*dx*dy/distz;
646
647 case 27:
648 return dx*dy*dy/distz;
649
650 case 28:
651 return dy*dy*dy/distz;
652
653 case 29:
654 return 2.*dx*dx*dz/distz;
655
656 case 30:
657 return 2.*dx*dy*dz/distz;
658
659 case 31:
660 return 2.*dy*dy*dz/distz;
661
662 case 32:
663 return 3.*dx*dz*dz/distz;
664
665 case 33:
666 return 3.*dy*dz*dz/distz;
667
668 case 34:
669 return 4.*dz*dz*dz/distz;
670
671 default:
672 unsigned int o = 0;
673 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
674 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
675 unsigned int block=o, nz = 0;
676 for (; block < i2; block += (o-nz+1)) { nz++; }
677 const unsigned int nx = block - i2;
678 const unsigned int ny = o - nx - nz;
679 Real val = nz;
680 for (unsigned int index=0; index != nx; index++)
681 val *= dx;
682 for (unsigned int index=0; index != ny; index++)
683 val *= dy;
684 for (unsigned int index=1; index < nz; index++)
685 val *= dz;
686 return val/distz;
687 }
688 }
689
690
691 default:
692 libmesh_error_msg("Invalid j = " << j);
693 }
694
695#else // LIBMESH_DIM != 3
696 libmesh_assert(true || order || add_p_level);
697 libmesh_ignore(elem, i, j, point_in);
698 libmesh_not_implemented();
699#endif
700}

◆ shape_deriv() [27/233]

Real libMesh::FE< 1, XYZ >::shape_deriv ( const Elem elem,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  libmesh_dbg_varj,
const Point point_in,
const bool  libmesh_dbg_varadd_p_level 
)
inherited

Definition at line 108 of file fe_xyz_shape_1D.C.

114{
115 libmesh_assert(elem);
116 libmesh_assert_less_equal (i, order + add_p_level * elem->p_level());
117
118 // only d()/dxi in 1D!
119
120 libmesh_assert_equal_to (j, 0);
121
122 Point avg = elem->vertex_average();
123 Real max_distance = 0.;
124 for (const Point & p : elem->node_ref_range())
125 {
126 const Real distance = std::abs(avg(0) - p(0));
127 max_distance = std::max(distance, max_distance);
128 }
129
130 const Real x = point_in(0);
131 const Real xc = avg(0);
132 const Real dx = (x - xc)/max_distance;
133
134 // monomials. since they are hierarchic we only need one case block.
135 switch (i)
136 {
137 case 0:
138 return 0.;
139
140 case 1:
141 return 1./max_distance;
142
143 case 2:
144 return 2.*dx/max_distance;
145
146 case 3:
147 return 3.*dx*dx/max_distance;
148
149 case 4:
150 return 4.*dx*dx*dx/max_distance;
151
152 default:
153 Real val = i;
154 for (unsigned int index = 1; index != i; ++index)
155 val *= dx;
156 return val/max_distance;
157 }
158}

◆ shape_deriv() [28/233]

Real libMesh::FE< 1, HERMITE >::shape_deriv ( const Elem elem,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  ,
const Point p,
const bool  libmesh_dbg_varadd_p_level 
)
inherited

Definition at line 256 of file fe_hermite_shape_1D.C.

262{
263 libmesh_assert(elem);
264
265 // Coefficient naming: d(1)d(2n) is the coefficient of the
266 // global shape function corresponding to value 1 in terms of the
267 // local shape function corresponding to normal derivative 2
268 Real d1xd1x, d2xd2x;
269
270 hermite_compute_coefs(elem, d1xd1x, d2xd2x);
271
272 const ElemType type = elem->type();
273
274#ifndef NDEBUG
275 const unsigned int totalorder =
276 order + add_p_level * elem->p_level();
277#endif
278
279 switch (type)
280 {
281 // C1 functions on the C1 cubic edge
282 case EDGE2:
283 case EDGE3:
284 {
285 libmesh_assert_less (i, totalorder+1);
286
287 switch (i)
288 {
289 case 0:
291 case 1:
292 return d1xd1x * FEHermite<1>::hermite_raw_shape_deriv(2, p(0));
293 case 2:
295 case 3:
296 return d2xd2x * FEHermite<1>::hermite_raw_shape_deriv(3, p(0));
297 default:
299 }
300 }
301 default:
302 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
303 }
304}
static Real hermite_raw_shape_deriv(const unsigned int basis_num, const Real xi)

◆ shape_deriv() [29/233]

static OutputShape libMesh::FE< Dim, T >::shape_deriv ( const Elem elem,
const Order  o,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level = true 
)
staticinherited
Returns
The \( j^{th} \) derivative of the \( i^{th} \) shape function. You must specify element type, and order directly.

On a p-refined element, o should be the base order of the element if add_p_level is left true, or can be the base order of the element if add_p_level is set to false.

◆ shape_deriv() [30/233]

RealGradient libMesh::FE< 3, RAVIART_THOMAS >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point ,
const bool  add_p_level 
)
inherited

Definition at line 173 of file fe_raviart_shape_3D.C.

179{
180#if LIBMESH_DIM == 3
181 libmesh_assert(elem);
182 libmesh_assert_less (j, 3);
183
184 const Order totalorder = order + add_p_level*elem->p_level();
185 libmesh_assert_less(i, n_dofs(elem->type(), totalorder));
186
187 const char sign = elem->positive_face_orientation(i) ? 1 : -1;
188
189 switch (totalorder)
190 {
191 // linear Raviart-Thomas shape function first derivatives
192 case FIRST:
193 {
194 switch (elem->type())
195 {
196 case HEX27:
197 {
198 switch (j)
199 {
200 // d()/dxi
201 case 0:
202 {
203 switch(i)
204 {
205 case 0:
206 case 1:
207 case 3:
208 case 5:
209 return RealGradient();
210 case 2:
211 case 4:
212 return sign * RealGradient( 0.125, 0.0, 0.0 );
213
214 default:
215 libmesh_error_msg("Invalid i = " << i);
216 } // switch(i)
217
218 } // j = 0
219
220 // d()/deta
221 case 1:
222 {
223 switch(i)
224 {
225 case 0:
226 case 2:
227 case 4:
228 case 5:
229 return RealGradient();
230 case 1:
231 case 3:
232 return sign * RealGradient( 0.0, 0.125, 0.0 );
233
234 default:
235 libmesh_error_msg("Invalid i = " << i);
236 } // switch(i)
237
238 } // j = 1
239
240 // d()/dzeta
241 case 2:
242 {
243 switch(i)
244 {
245 case 1:
246 case 2:
247 case 3:
248 case 4:
249 return RealGradient();
250 case 0:
251 case 5:
252 return sign * RealGradient( 0.0, 0.0, 0.125 );
253
254 default:
255 libmesh_error_msg("Invalid i = " << i);
256 } // switch(i)
257
258 } // j = 2
259
260 default:
261 libmesh_error_msg("Invalid j = " << j);
262 }
263 }
264
265 case TET14:
266 {
267 switch (j)
268 {
269 // d()/dxi
270 case 0:
271 {
272 switch(i)
273 {
274 case 0:
275 case 1:
276 case 2:
277 case 3:
278 return sign * RealGradient( 2.0, 0.0, 0.0 );
279
280 default:
281 libmesh_error_msg("Invalid i = " << i);
282 } // switch(i)
283
284 } // j = 0
285
286 // d()/deta
287 case 1:
288 {
289 switch(i)
290 {
291 case 0:
292 case 1:
293 case 2:
294 case 3:
295 return sign * RealGradient( 0.0, 2.0, 0.0 );
296
297 default:
298 libmesh_error_msg("Invalid i = " << i);
299 } // switch(i)
300
301 } // j = 1
302
303 // d()/dzeta
304 case 2:
305 {
306 switch(i)
307 {
308 case 0:
309 case 1:
310 case 2:
311 case 3:
312 return sign * RealGradient( 0.0, 0.0, 2.0 );
313
314 default:
315 libmesh_error_msg("Invalid i = " << i);
316 } // switch(i)
317
318 } // j = 2
319
320 default:
321 libmesh_error_msg("Invalid j = " << j);
322 }
323 }
324
325 default:
326 libmesh_error_msg("ERROR: Unsupported 3D element type!: " << Utility::enum_to_string(elem->type()));
327 }
328 }
329 // unsupported order
330 default:
331 libmesh_error_msg("ERROR: Unsupported 3D FE order!: " << totalorder);
332 }
333
334#else // LIBMESH_DIM != 3
335 libmesh_ignore(elem, order, i, j, p, add_p_level);
336 libmesh_not_implemented();
337#endif
338}

◆ shape_deriv() [31/233]

Real libMesh::FE< 2, SUBDIVISION >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

◆ shape_deriv() [32/233]

Real libMesh::FE< 1, BERNSTEIN >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 380 of file fe_bernstein_shape_1D.C.

386{
387 libmesh_assert(elem);
388
389 return FE<1,BERNSTEIN>::shape_deriv
390 (elem->type(),
391 order + add_p_level*elem->p_level(), i, j, p);
392}

◆ shape_deriv() [33/233]

Real libMesh::FE< 2, BERNSTEIN >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 416 of file fe_bernstein_shape_2D.C.

422{
423 libmesh_assert(elem);
424
425 const ElemType type = elem->type();
426
427 const Order totalorder =
428 order + add_p_level*elem->p_level();
429
430 switch (type)
431 {
432 // Hierarchic shape functions on the quadrilateral.
433 case QUAD4:
434 case QUAD9:
435 case QUADSHELL9:
436 {
437 // Compute quad shape functions as a tensor-product
438 auto [i0, i1] = quad_i0_i1(i, totalorder, *elem);
439
440 switch (j)
441 {
442 // d()/dxi
443 case 0:
444 return (FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i0, 0, p(0))*
445 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1, p(1)));
446
447 // d()/deta
448 case 1:
449 return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0, p(0))*
450 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i1, 0, p(1)));
451
452 default:
453 libmesh_error_msg("Invalid shape function derivative j = " << j);
454 }
455 }
456
457 // Bernstein shape functions on the 8-noded quadrilateral
458 // is handled separately.
459 case QUAD8:
460 case QUADSHELL8:
461 {
462 libmesh_assert_less (totalorder, 3);
463
464 const Real xi = p(0);
465 const Real eta = p(1);
466
467 libmesh_assert_less (i, 8);
468
469 // 0 1 2 3 4 5 6 7 8
470 static const unsigned int i0[] = {0, 1, 1, 0, 2, 1, 2, 0, 2};
471 static const unsigned int i1[] = {0, 0, 1, 1, 0, 2, 1, 2, 2};
472 static const Real scal[] = {-0.25, -0.25, -0.25, -0.25, 0.5, 0.5, 0.5, 0.5};
473 switch (j)
474 {
475 // d()/dxi
476 case 0:
477 return (FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi)*
478 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1[i], eta)
479 +scal[i]*
480 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i0[8], 0, xi)*
481 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1[8], eta));
482
483 // d()/deta
484 case 1:
485 return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0[i], xi)*
486 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta)
487 +scal[i]*
488 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0[8], xi)*
489 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i1[8], 0, eta));
490
491 default:
492 libmesh_error_msg("Invalid shape function derivative j = " << j);
493 }
494 }
495
496 case TRI3:
497 case TRISHELL3:
498 libmesh_assert_less (totalorder, 2);
499 libmesh_fallthrough();
500 case TRI6:
501 case TRI7:
502 {
503 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<2,BERNSTEIN>::shape);
504 }
505
506 default:
507 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
508 }
509}
A specific instantiation of the FEBase class.
Definition fe.h:128
OutputShape fe_fdm_deriv(const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level, OutputShape(*shape_func)(const Elem *, const Order, const unsigned int, const Point &, const bool))
Helper functions for finite differenced derivatives in cases where analytical calculations haven't be...
Definition fe.C:911

◆ shape_deriv() [34/233]

Real libMesh::FE< 3, BERNSTEIN >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 915 of file fe_bernstein_shape_3D.C.

921{
922
923#if LIBMESH_DIM == 3
924 libmesh_assert(elem);
925 const ElemType type = elem->type();
926
927 const Order totalorder =
928 order + add_p_level*elem->p_level();
929
930 libmesh_assert_less (j, 3);
931
932 switch (totalorder)
933 {
934 // 1st order Bernstein.
935 case FIRST:
936 {
937 switch (type)
938 {
939 // Bernstein shape functions on the tetrahedron.
940 case TET4:
941 case TET10:
942 case TET14:
943 {
944 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<3,BERNSTEIN>::shape);
945 }
946
947
948 // Bernstein shape functions on the hexahedral.
949 case HEX8:
950 case HEX20:
951 case HEX27:
952 {
953 libmesh_assert_less (i, 8);
954
955 // Compute hex shape functions as a tensor-product
956 const Real xi = p(0);
957 const Real eta = p(1);
958 const Real zeta = p(2);
959
960 // The only way to make any sense of this
961 // is to look at the mgflo/mg2/mgf documentation
962 // and make the cut-out cube!
963 // 0 1 2 3 4 5 6 7
964 static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0};
965 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1};
966 static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1};
967
968 switch (j)
969 {
970 // d()/dxi
971 case 0:
972 return (FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi)*
973 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1[i], eta)*
974 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i2[i], zeta));
975
976 // d()/deta
977 case 1:
978 return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0[i], xi)*
979 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta)*
980 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i2[i], zeta));
981
982 // d()/dzeta
983 case 2:
984 return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0[i], xi)*
985 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1[i], eta)*
986 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i2[i], 0, zeta));
987
988 default:
989 libmesh_error_msg("Invalid derivative index j = " << j);
990 }
991 }
992
993 default:
994 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
995 }
996 }
997
998
999
1000
1001 case SECOND:
1002 {
1003 switch (type)
1004 {
1005 // Bernstein shape functions on the tetrahedron.
1006 case TET10:
1007 case TET14:
1008 {
1009 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<3,BERNSTEIN>::shape);
1010 }
1011
1012 // Bernstein shape functions on the hexahedral.
1013 case HEX20:
1014 {
1015 libmesh_assert_less (i, 20);
1016
1017 // Compute hex shape functions as a tensor-product
1018 const Real xi = p(0);
1019 const Real eta = p(1);
1020 const Real zeta = p(2);
1021
1022 switch (j)
1023 {
1024 // d()/dxi
1025 case 0:
1026 return (FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i0[i], 0, xi)*
1027 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[i], eta)*
1028 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[i], zeta)
1029 +hex20_scal20[i]*
1030 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i0[20], 0, xi)*
1031 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[20], eta)*
1032 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[20], zeta)
1033 +hex20_scal21[i]*
1034 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i0[21], 0, xi)*
1035 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[21], eta)*
1036 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[21], zeta)
1037 +hex20_scal22[i]*
1038 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i0[22], 0, xi)*
1039 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[22], eta)*
1040 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[22], zeta)
1041 +hex20_scal23[i]*
1042 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i0[23], 0, xi)*
1043 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[23], eta)*
1044 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[23], zeta)
1045 +hex20_scal24[i]*
1046 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i0[24], 0, xi)*
1047 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[24], eta)*
1048 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[24], zeta)
1049 +hex20_scal25[i]*
1050 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i0[25], 0, xi)*
1051 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[25], eta)*
1052 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[25], zeta)
1053 +hex20_scal26[i]*
1054 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i0[26], 0, xi)*
1055 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[26], eta)*
1056 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[26], zeta));
1057
1058 // d()/deta
1059 case 1:
1060 return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[i], xi)*
1061 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i1[i], 0, eta)*
1062 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[i], zeta)
1063 +hex20_scal20[i]*
1064 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[20], xi)*
1065 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i1[20], 0, eta)*
1066 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[20], zeta)
1067 +hex20_scal21[i]*
1068 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[21], xi)*
1069 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i1[21], 0, eta)*
1070 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[21], zeta)
1071 +hex20_scal22[i]*
1072 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[22], xi)*
1073 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i1[22], 0, eta)*
1074 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[22], zeta)
1075 +hex20_scal23[i]*
1076 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[23], xi)*
1077 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i1[23], 0, eta)*
1078 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[23], zeta)
1079 +hex20_scal24[i]*
1080 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[24], xi)*
1081 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i1[24], 0, eta)*
1082 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[24], zeta)
1083 +hex20_scal25[i]*
1084 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[25], xi)*
1085 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i1[25], 0, eta)*
1086 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[25], zeta)
1087 +hex20_scal26[i]*
1088 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[26], xi)*
1089 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i1[26], 0, eta)*
1090 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i2[26], zeta));
1091
1092 // d()/dzeta
1093 case 2:
1094 return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[i], xi)*
1095 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[i], eta)*
1096 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i2[i], 0, zeta)
1097 +hex20_scal20[i]*
1098 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[20], xi)*
1099 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[20], eta)*
1100 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i2[20], 0, zeta)
1101 +hex20_scal21[i]*
1102 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[21], xi)*
1103 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[21], eta)*
1104 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i2[21], 0, zeta)
1105 +hex20_scal22[i]*
1106 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[22], xi)*
1107 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[22], eta)*
1108 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i2[22], 0, zeta)
1109 +hex20_scal23[i]*
1110 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[23], xi)*
1111 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[23], eta)*
1112 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i2[23], 0, zeta)
1113 +hex20_scal24[i]*
1114 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[24], xi)*
1115 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[24], eta)*
1116 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i2[24], 0, zeta)
1117 +hex20_scal25[i]*
1118 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[25], xi)*
1119 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[25], eta)*
1120 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i2[25], 0, zeta)
1121 +hex20_scal26[i]*
1122 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i0[26], xi)*
1123 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, hex20_i1[26], eta)*
1124 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, hex20_i2[26], 0, zeta));
1125
1126 default:
1127 libmesh_error_msg("Invalid derivative index j = " << j);
1128 }
1129 }
1130
1131 // Bernstein shape functions on the hexahedral.
1132 case HEX27:
1133 {
1134 libmesh_assert_less (i, 27);
1135
1136 // Compute hex shape functions as a tensor-product
1137 const Real xi = p(0);
1138 const Real eta = p(1);
1139 const Real zeta = p(2);
1140
1141 // The only way to make any sense of this
1142 // is to look at the mgflo/mg2/mgf documentation
1143 // and make the cut-out cube!
1144 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
1145 static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 2, 0, 2, 2, 1, 2, 0, 2, 2};
1146 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1, 0, 2, 1, 2, 0, 0, 1, 1, 0, 2, 1, 2, 2, 0, 2, 1, 2, 2, 2};
1147 static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, 0, 2, 2, 2, 2, 1, 2};
1148
1149 switch (j)
1150 {
1151 // d()/dxi
1152 case 0:
1153 return (FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi)*
1154 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1[i], eta)*
1155 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i2[i], zeta));
1156
1157 // d()/deta
1158 case 1:
1159 return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0[i], xi)*
1160 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta)*
1161 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i2[i], zeta));
1162
1163 // d()/dzeta
1164 case 2:
1165 return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0[i], xi)*
1166 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1[i], eta)*
1167 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i2[i], 0, zeta));
1168
1169 default:
1170 libmesh_error_msg("Invalid derivative index j = " << j);
1171 }
1172 }
1173
1174
1175 default:
1176 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
1177 }
1178 }
1179
1180
1181
1182 // 3rd-order Bernstein.
1183 case THIRD:
1184 {
1185 switch (type)
1186 {
1187
1188 // // Bernstein shape functions derivatives.
1189 // case TET10:
1190 // {
1191 // // I have been lazy here and am using finite differences
1192 // // to compute the derivatives!
1193 // const Real eps = 1.e-4;
1194
1195 // libmesh_assert_less (i, 20);
1196 // libmesh_assert_less (j, 3);
1197
1198 // switch (j)
1199 // {
1200 // // d()/dxi
1201 // case 0:
1202 // {
1203 // const Point pp(p(0)+eps, p(1), p(2));
1204 // const Point pm(p(0)-eps, p(1), p(2));
1205
1206 // return (FE<3,BERNSTEIN>::shape(elem, order, i, pp) -
1207 // FE<3,BERNSTEIN>::shape(elem, order, i, pm))/2./eps;
1208 // }
1209
1210 // // d()/deta
1211 // case 1:
1212 // {
1213 // const Point pp(p(0), p(1)+eps, p(2));
1214 // const Point pm(p(0), p(1)-eps, p(2));
1215
1216 // return (FE<3,BERNSTEIN>::shape(elem, order, i, pp) -
1217 // FE<3,BERNSTEIN>::shape(elem, order, i, pm))/2./eps;
1218 // }
1219 // // d()/dzeta
1220 // case 2:
1221 // {
1222 // const Point pp(p(0), p(1), p(2)+eps);
1223 // const Point pm(p(0), p(1), p(2)-eps);
1224
1225 // return (FE<3,BERNSTEIN>::shape(elem, order, i, pp) -
1226 // FE<3,BERNSTEIN>::shape(elem, order, i, pm))/2./eps;
1227 // }
1228 // default:
1229 // libmesh_error_msg("Invalid derivative index j = " << j);
1230 // }
1231
1232
1233 // }
1234
1235
1236 // Bernstein shape functions on the hexahedral.
1237 case HEX27:
1238 {
1239 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<3,BERNSTEIN>::shape);
1240 }
1241
1242 // // Compute hex shape functions as a tensor-product
1243 // const Real xi = p(0);
1244 // const Real eta = p(1);
1245 // const Real zeta = p(2);
1246 // Real xi_mapped = p(0);
1247 // Real eta_mapped = p(1);
1248 // Real zeta_mapped = p(2);
1249
1250 // // The only way to make any sense of this
1251 // // is to look at the mgflo/mg2/mgf documentation
1252 // // and make the cut-out cube!
1253 // // Nodes 0 1 2 3 4 5 6 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 20 20 21 21 21 21 22 22 22 22 23 23 23 23 24 24 24 24 25 25 25 25 26 26 26 26 26 26 26 26
1254 // // DOFS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 18 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 60 62 63
1255 // static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0, 2, 3, 1, 1, 2, 3, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 3, 1, 1, 2, 3, 0, 0, 2, 3, 2, 3, 2, 3, 2, 3, 1, 1, 1, 1, 2, 3, 2, 3, 0, 0, 0, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3};
1256 // static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 3, 1, 1, 2, 3, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 3, 1, 1, 2, 3, 2, 2, 3, 3, 0, 0, 0, 0, 2, 3, 2, 3, 1, 1, 1, 1, 2, 3, 2, 3, 2, 2, 3, 3, 2, 2, 3, 3, 2, 2, 3, 3};
1257 // static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 2, 3, 2, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 3, 3, 2, 2, 3, 3, 2, 2, 3, 3, 2, 2, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3};
1258
1259
1260
1261 // // handle the edge orientation
1262 // {
1263 // // Edge 0
1264 // if ((i1[i] == 0) && (i2[i] == 0))
1265 // {
1266 // if (elem->node_id(0) != std::min(elem->node_id(0), elem->node_id(1)))
1267 // xi_mapped = -xi;
1268 // }
1269 // // Edge 1
1270 // else if ((i0[i] == 1) && (i2[i] == 0))
1271 // {
1272 // if (elem->node_id(1) != std::min(elem->node_id(1), elem->node_id(2)))
1273 // eta_mapped = -eta;
1274 // }
1275 // // Edge 2
1276 // else if ((i1[i] == 1) && (i2[i] == 0))
1277 // {
1278 // if (elem->node_id(3) != std::min(elem->node_id(3), elem->node_id(2)))
1279 // xi_mapped = -xi;
1280 // }
1281 // // Edge 3
1282 // else if ((i0[i] == 0) && (i2[i] == 0))
1283 // {
1284 // if (elem->node_id(0) != std::min(elem->node_id(0), elem->node_id(3)))
1285 // eta_mapped = -eta;
1286 // }
1287 // // Edge 4
1288 // else if ((i0[i] == 0) && (i1[i] == 0))
1289 // {
1290 // if (elem->node_id(0) != std::min(elem->node_id(0), elem->node_id(4)))
1291 // zeta_mapped = -zeta;
1292 // }
1293 // // Edge 5
1294 // else if ((i0[i] == 1) && (i1[i] == 0))
1295 // {
1296 // if (elem->node_id(1) != std::min(elem->node_id(1), elem->node_id(5)))
1297 // zeta_mapped = -zeta;
1298 // }
1299 // // Edge 6
1300 // else if ((i0[i] == 1) && (i1[i] == 1))
1301 // {
1302 // if (elem->node_id(2) != std::min(elem->node_id(2), elem->node_id(6)))
1303 // zeta_mapped = -zeta;
1304 // }
1305 // // Edge 7
1306 // else if ((i0[i] == 0) && (i1[i] == 1))
1307 // {
1308 // if (elem->node_id(3) != std::min(elem->node_id(3), elem->node_id(7)))
1309 // zeta_mapped = -zeta;
1310 // }
1311 // // Edge 8
1312 // else if ((i1[i] == 0) && (i2[i] == 1))
1313 // {
1314 // if (elem->node_id(4) != std::min(elem->node_id(4), elem->node_id(5)))
1315 // xi_mapped = -xi;
1316 // }
1317 // // Edge 9
1318 // else if ((i0[i] == 1) && (i2[i] == 1))
1319 // {
1320 // if (elem->node_id(5) != std::min(elem->node_id(5), elem->node_id(6)))
1321 // eta_mapped = -eta;
1322 // }
1323 // // Edge 10
1324 // else if ((i1[i] == 1) && (i2[i] == 1))
1325 // {
1326 // if (elem->node_id(7) != std::min(elem->node_id(7), elem->node_id(6)))
1327 // xi_mapped = -xi;
1328 // }
1329 // // Edge 11
1330 // else if ((i0[i] == 0) && (i2[i] == 1))
1331 // {
1332 // if (elem->node_id(4) != std::min(elem->node_id(4), elem->node_id(7)))
1333 // eta_mapped = -eta;
1334 // }
1335 // }
1336
1337
1338 // // handle the face orientation
1339 // {
1340 // // Face 0
1341 // if ((i2[i] == 0) && (i0[i] >= 2) && (i1[i] >= 2))
1342 // {
1343 // const unsigned int min_node = std::min(elem->node_id(1),
1344 // std::min(elem->node_id(2),
1345 // std::min(elem->node_id(0),
1346 // elem->node_id(3))));
1347 // if (elem->node_id(0) == min_node)
1348 // if (elem->node_id(1) == std::min(elem->node_id(1), elem->node_id(3)))
1349 // {
1350 // // Case 1
1351 // xi_mapped = xi;
1352 // eta_mapped = eta;
1353 // }
1354 // else
1355 // {
1356 // // Case 2
1357 // xi_mapped = eta;
1358 // eta_mapped = xi;
1359 // }
1360
1361 // else if (elem->node_id(3) == min_node)
1362 // if (elem->node_id(0) == std::min(elem->node_id(0), elem->node_id(2)))
1363 // {
1364 // // Case 3
1365 // xi_mapped = -eta;
1366 // eta_mapped = xi;
1367 // }
1368 // else
1369 // {
1370 // // Case 4
1371 // xi_mapped = xi;
1372 // eta_mapped = -eta;
1373 // }
1374
1375 // else if (elem->node_id(2) == min_node)
1376 // if (elem->node_id(3) == std::min(elem->node_id(3), elem->node_id(1)))
1377 // {
1378 // // Case 5
1379 // xi_mapped = -xi;
1380 // eta_mapped = -eta;
1381 // }
1382 // else
1383 // {
1384 // // Case 6
1385 // xi_mapped = -eta;
1386 // eta_mapped = -xi;
1387 // }
1388
1389 // else if (elem->node_id(1) == min_node)
1390 // if (elem->node_id(2) == std::min(elem->node_id(2), elem->node_id(0)))
1391 // {
1392 // // Case 7
1393 // xi_mapped = eta;
1394 // eta_mapped = -xi;
1395 // }
1396 // else
1397 // {
1398 // // Case 8
1399 // xi_mapped = -xi;
1400 // eta_mapped = eta;
1401 // }
1402 // }
1403
1404
1405 // // Face 1
1406 // else if ((i1[i] == 0) && (i0[i] >= 2) && (i2[i] >= 2))
1407 // {
1408 // const unsigned int min_node = std::min(elem->node_id(0),
1409 // std::min(elem->node_id(1),
1410 // std::min(elem->node_id(5),
1411 // elem->node_id(4))));
1412 // if (elem->node_id(0) == min_node)
1413 // if (elem->node_id(1) == std::min(elem->node_id(1), elem->node_id(4)))
1414 // {
1415 // // Case 1
1416 // xi_mapped = xi;
1417 // zeta_mapped = zeta;
1418 // }
1419 // else
1420 // {
1421 // // Case 2
1422 // xi_mapped = zeta;
1423 // zeta_mapped = xi;
1424 // }
1425
1426 // else if (elem->node_id(1) == min_node)
1427 // if (elem->node_id(5) == std::min(elem->node_id(5), elem->node_id(0)))
1428 // {
1429 // // Case 3
1430 // xi_mapped = zeta;
1431 // zeta_mapped = -xi;
1432 // }
1433 // else
1434 // {
1435 // // Case 4
1436 // xi_mapped = -xi;
1437 // zeta_mapped = zeta;
1438 // }
1439
1440 // else if (elem->node_id(5) == min_node)
1441 // if (elem->node_id(4) == std::min(elem->node_id(4), elem->node_id(1)))
1442 // {
1443 // // Case 5
1444 // xi_mapped = -xi;
1445 // zeta_mapped = -zeta;
1446 // }
1447 // else
1448 // {
1449 // // Case 6
1450 // xi_mapped = -zeta;
1451 // zeta_mapped = -xi;
1452 // }
1453
1454 // else if (elem->node_id(4) == min_node)
1455 // if (elem->node_id(0) == std::min(elem->node_id(0), elem->node_id(5)))
1456 // {
1457 // // Case 7
1458 // xi_mapped = -xi;
1459 // zeta_mapped = zeta;
1460 // }
1461 // else
1462 // {
1463 // // Case 8
1464 // xi_mapped = xi;
1465 // zeta_mapped = -zeta;
1466 // }
1467 // }
1468
1469
1470 // // Face 2
1471 // else if ((i0[i] == 1) && (i1[i] >= 2) && (i2[i] >= 2))
1472 // {
1473 // const unsigned int min_node = std::min(elem->node_id(1),
1474 // std::min(elem->node_id(2),
1475 // std::min(elem->node_id(6),
1476 // elem->node_id(5))));
1477 // if (elem->node_id(1) == min_node)
1478 // if (elem->node_id(2) == std::min(elem->node_id(2), elem->node_id(5)))
1479 // {
1480 // // Case 1
1481 // eta_mapped = eta;
1482 // zeta_mapped = zeta;
1483 // }
1484 // else
1485 // {
1486 // // Case 2
1487 // eta_mapped = zeta;
1488 // zeta_mapped = eta;
1489 // }
1490
1491 // else if (elem->node_id(2) == min_node)
1492 // if (elem->node_id(6) == std::min(elem->node_id(6), elem->node_id(1)))
1493 // {
1494 // // Case 3
1495 // eta_mapped = zeta;
1496 // zeta_mapped = -eta;
1497 // }
1498 // else
1499 // {
1500 // // Case 4
1501 // eta_mapped = -eta;
1502 // zeta_mapped = zeta;
1503 // }
1504
1505 // else if (elem->node_id(6) == min_node)
1506 // if (elem->node_id(5) == std::min(elem->node_id(5), elem->node_id(2)))
1507 // {
1508 // // Case 5
1509 // eta_mapped = -eta;
1510 // zeta_mapped = -zeta;
1511 // }
1512 // else
1513 // {
1514 // // Case 6
1515 // eta_mapped = -zeta;
1516 // zeta_mapped = -eta;
1517 // }
1518
1519 // else if (elem->node_id(5) == min_node)
1520 // if (elem->node_id(1) == std::min(elem->node_id(1), elem->node_id(6)))
1521 // {
1522 // // Case 7
1523 // eta_mapped = -zeta;
1524 // zeta_mapped = eta;
1525 // }
1526 // else
1527 // {
1528 // // Case 8
1529 // eta_mapped = eta;
1530 // zeta_mapped = -zeta;
1531 // }
1532 // }
1533
1534
1535 // // Face 3
1536 // else if ((i1[i] == 1) && (i0[i] >= 2) && (i2[i] >= 2))
1537 // {
1538 // const unsigned int min_node = std::min(elem->node_id(2),
1539 // std::min(elem->node_id(3),
1540 // std::min(elem->node_id(7),
1541 // elem->node_id(6))));
1542 // if (elem->node_id(3) == min_node)
1543 // if (elem->node_id(2) == std::min(elem->node_id(2), elem->node_id(7)))
1544 // {
1545 // // Case 1
1546 // xi_mapped = xi;
1547 // zeta_mapped = zeta;
1548 // }
1549 // else
1550 // {
1551 // // Case 2
1552 // xi_mapped = zeta;
1553 // zeta_mapped = xi;
1554 // }
1555
1556 // else if (elem->node_id(7) == min_node)
1557 // if (elem->node_id(3) == std::min(elem->node_id(3), elem->node_id(6)))
1558 // {
1559 // // Case 3
1560 // xi_mapped = -zeta;
1561 // zeta_mapped = xi;
1562 // }
1563 // else
1564 // {
1565 // // Case 4
1566 // xi_mapped = xi;
1567 // zeta_mapped = -zeta;
1568 // }
1569
1570 // else if (elem->node_id(6) == min_node)
1571 // if (elem->node_id(7) == std::min(elem->node_id(7), elem->node_id(2)))
1572 // {
1573 // // Case 5
1574 // xi_mapped = -xi;
1575 // zeta_mapped = -zeta;
1576 // }
1577 // else
1578 // {
1579 // // Case 6
1580 // xi_mapped = -zeta;
1581 // zeta_mapped = -xi;
1582 // }
1583
1584 // else if (elem->node_id(2) == min_node)
1585 // if (elem->node_id(6) == std::min(elem->node_id(3), elem->node_id(6)))
1586 // {
1587 // // Case 7
1588 // xi_mapped = zeta;
1589 // zeta_mapped = -xi;
1590 // }
1591 // else
1592 // {
1593 // // Case 8
1594 // xi_mapped = -xi;
1595 // zeta_mapped = zeta;
1596 // }
1597 // }
1598
1599
1600 // // Face 4
1601 // else if ((i0[i] == 0) && (i1[i] >= 2) && (i2[i] >= 2))
1602 // {
1603 // const unsigned int min_node = std::min(elem->node_id(3),
1604 // std::min(elem->node_id(0),
1605 // std::min(elem->node_id(4),
1606 // elem->node_id(7))));
1607 // if (elem->node_id(0) == min_node)
1608 // if (elem->node_id(3) == std::min(elem->node_id(3), elem->node_id(4)))
1609 // {
1610 // // Case 1
1611 // eta_mapped = eta;
1612 // zeta_mapped = zeta;
1613 // }
1614 // else
1615 // {
1616 // // Case 2
1617 // eta_mapped = zeta;
1618 // zeta_mapped = eta;
1619 // }
1620
1621 // else if (elem->node_id(4) == min_node)
1622 // if (elem->node_id(0) == std::min(elem->node_id(0), elem->node_id(7)))
1623 // {
1624 // // Case 3
1625 // eta_mapped = -zeta;
1626 // zeta_mapped = eta;
1627 // }
1628 // else
1629 // {
1630 // // Case 4
1631 // eta_mapped = eta;
1632 // zeta_mapped = -zeta;
1633 // }
1634
1635 // else if (elem->node_id(7) == min_node)
1636 // if (elem->node_id(4) == std::min(elem->node_id(4), elem->node_id(3)))
1637 // {
1638 // // Case 5
1639 // eta_mapped = -eta;
1640 // zeta_mapped = -zeta;
1641 // }
1642 // else
1643 // {
1644 // // Case 6
1645 // eta_mapped = -zeta;
1646 // zeta_mapped = -eta;
1647 // }
1648
1649 // else if (elem->node_id(3) == min_node)
1650 // if (elem->node_id(7) == std::min(elem->node_id(7), elem->node_id(0)))
1651 // {
1652 // // Case 7
1653 // eta_mapped = zeta;
1654 // zeta_mapped = -eta;
1655 // }
1656 // else
1657 // {
1658 // // Case 8
1659 // eta_mapped = -eta;
1660 // zeta_mapped = zeta;
1661 // }
1662 // }
1663
1664
1665 // // Face 5
1666 // else if ((i2[i] == 1) && (i0[i] >= 2) && (i1[i] >= 2))
1667 // {
1668 // const unsigned int min_node = std::min(elem->node_id(4),
1669 // std::min(elem->node_id(5),
1670 // std::min(elem->node_id(6),
1671 // elem->node_id(7))));
1672 // if (elem->node_id(4) == min_node)
1673 // if (elem->node_id(5) == std::min(elem->node_id(5), elem->node_id(7)))
1674 // {
1675 // // Case 1
1676 // xi_mapped = xi;
1677 // eta_mapped = eta;
1678 // }
1679 // else
1680 // {
1681 // // Case 2
1682 // xi_mapped = eta;
1683 // eta_mapped = xi;
1684 // }
1685
1686 // else if (elem->node_id(5) == min_node)
1687 // if (elem->node_id(6) == std::min(elem->node_id(6), elem->node_id(4)))
1688 // {
1689 // // Case 3
1690 // xi_mapped = eta;
1691 // eta_mapped = -xi;
1692 // }
1693 // else
1694 // {
1695 // // Case 4
1696 // xi_mapped = -xi;
1697 // eta_mapped = eta;
1698 // }
1699
1700 // else if (elem->node_id(6) == min_node)
1701 // if (elem->node_id(7) == std::min(elem->node_id(7), elem->node_id(5)))
1702 // {
1703 // // Case 5
1704 // xi_mapped = -xi;
1705 // eta_mapped = -eta;
1706 // }
1707 // else
1708 // {
1709 // // Case 6
1710 // xi_mapped = -eta;
1711 // eta_mapped = -xi;
1712 // }
1713
1714 // else if (elem->node_id(7) == min_node)
1715 // if (elem->node_id(4) == std::min(elem->node_id(4), elem->node_id(6)))
1716 // {
1717 // // Case 7
1718 // xi_mapped = -eta;
1719 // eta_mapped = xi;
1720 // }
1721 // else
1722 // {
1723 // // Case 8
1724 // xi_mapped = xi;
1725 // eta_mapped = eta;
1726 // }
1727 // }
1728
1729
1730 // }
1731
1732
1733
1734 // libmesh_assert_less (j, 3);
1735
1736 // switch (j)
1737 // {
1738 // // d()/dxi
1739 // case 0:
1740 // return (FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi_mapped)*
1741 // FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1[i], eta_mapped)*
1742 // FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i2[i], zeta_mapped));
1743
1744 // // d()/deta
1745 // case 1:
1746 // return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0[i], xi_mapped)*
1747 // FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta_mapped)*
1748 // FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i2[i], zeta_mapped));
1749
1750 // // d()/dzeta
1751 // case 2:
1752 // return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0[i], xi_mapped)*
1753 // FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1[i], eta_mapped)*
1754 // FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i2[i], 0, zeta_mapped));
1755
1756 // default:
1757 // libmesh_error_msg("Invalid derivative index j = " << j);
1758 // }
1759
1760
1761 default:
1762 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
1763 }
1764 }
1765
1766 // 4th-order Bernstein.
1767 case FOURTH:
1768 {
1769 switch (type)
1770 {
1771
1772 // Bernstein shape functions derivatives on the hexahedral.
1773 case HEX27:
1774 {
1775 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<3,BERNSTEIN>::shape);
1776 }
1777
1778 // // Compute hex shape functions as a tensor-product
1779 // const Real xi = p(0);
1780 // const Real eta = p(1);
1781 // const Real zeta = p(2);
1782 // Real xi_mapped = p(0);
1783 // Real eta_mapped = p(1);
1784 // Real zeta_mapped = p(2);
1785
1786 // // The only way to make any sense of this
1787 // // is to look at the mgflo/mg2/mgf documentation
1788 // // and make the cut-out cube!
1789 // // Nodes 0 1 2 3 4 5 6 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 20 20 21 21 21 21 22 22 22 22 23 23 23 23 24 24 24 24 25 25 25 25 26 26 26 26 26 26 26 26
1790 // // DOFS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 18 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
1791 // static const unsigned int i0[] = {0, 1, 1, 0, 0, 1, 1, 0, 2, 3, 4, 1, 1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 3, 4, 1, 1, 1, 2, 3, 4, 0, 0, 0, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 2, 3, 4, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4};
1792 // static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 2, 3, 4, 1, 1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 3, 4, 1, 1, 1, 2, 3, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 2, 3, 4, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4};
1793 // static const unsigned int i2[] = {0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 3, 3, 3, 4, 4, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4};
1794
1795
1796
1797 // // handle the edge orientation
1798 // {
1799 // // Edge 0
1800 // if ((i1[i] == 0) && (i2[i] == 0))
1801 // {
1802 // if (elem->node_id(0) != std::min(elem->node_id(0), elem->node_id(1)))
1803 // xi_mapped = -xi;
1804 // }
1805 // // Edge 1
1806 // else if ((i0[i] == 1) && (i2[i] == 0))
1807 // {
1808 // if (elem->node_id(1) != std::min(elem->node_id(1), elem->node_id(2)))
1809 // eta_mapped = -eta;
1810 // }
1811 // // Edge 2
1812 // else if ((i1[i] == 1) && (i2[i] == 0))
1813 // {
1814 // if (elem->node_id(3) != std::min(elem->node_id(3), elem->node_id(2)))
1815 // xi_mapped = -xi;
1816 // }
1817 // // Edge 3
1818 // else if ((i0[i] == 0) && (i2[i] == 0))
1819 // {
1820 // if (elem->node_id(0) != std::min(elem->node_id(0), elem->node_id(3)))
1821 // eta_mapped = -eta;
1822 // }
1823 // // Edge 4
1824 // else if ((i0[i] == 0) && (i1[i] == 0))
1825 // {
1826 // if (elem->node_id(0) != std::min(elem->node_id(0), elem->node_id(4)))
1827 // zeta_mapped = -zeta;
1828 // }
1829 // // Edge 5
1830 // else if ((i0[i] == 1) && (i1[i] == 0))
1831 // {
1832 // if (elem->node_id(1) != std::min(elem->node_id(1), elem->node_id(5)))
1833 // zeta_mapped = -zeta;
1834 // }
1835 // // Edge 6
1836 // else if ((i0[i] == 1) && (i1[i] == 1))
1837 // {
1838 // if (elem->node_id(2) != std::min(elem->node_id(2), elem->node_id(6)))
1839 // zeta_mapped = -zeta;
1840 // }
1841 // // Edge 7
1842 // else if ((i0[i] == 0) && (i1[i] == 1))
1843 // {
1844 // if (elem->node_id(3) != std::min(elem->node_id(3), elem->node_id(7)))
1845 // zeta_mapped = -zeta;
1846 // }
1847 // // Edge 8
1848 // else if ((i1[i] == 0) && (i2[i] == 1))
1849 // {
1850 // if (elem->node_id(4) != std::min(elem->node_id(4), elem->node_id(5)))
1851 // xi_mapped = -xi;
1852 // }
1853 // // Edge 9
1854 // else if ((i0[i] == 1) && (i2[i] == 1))
1855 // {
1856 // if (elem->node_id(5) != std::min(elem->node_id(5), elem->node_id(6)))
1857 // eta_mapped = -eta;
1858 // }
1859 // // Edge 10
1860 // else if ((i1[i] == 1) && (i2[i] == 1))
1861 // {
1862 // if (elem->node_id(7) != std::min(elem->node_id(7), elem->node_id(6)))
1863 // xi_mapped = -xi;
1864 // }
1865 // // Edge 11
1866 // else if ((i0[i] == 0) && (i2[i] == 1))
1867 // {
1868 // if (elem->node_id(4) != std::min(elem->node_id(4), elem->node_id(7)))
1869 // eta_mapped = -eta;
1870 // }
1871 // }
1872
1873
1874 // // handle the face orientation
1875 // {
1876 // // Face 0
1877 // if ((i2[i] == 0) && (i0[i] >= 2) && (i1[i] >= 2))
1878 // {
1879 // const unsigned int min_node = std::min(elem->node_id(1),
1880 // std::min(elem->node_id(2),
1881 // std::min(elem->node_id(0),
1882 // elem->node_id(3))));
1883 // if (elem->node_id(0) == min_node)
1884 // if (elem->node_id(1) == std::min(elem->node_id(1), elem->node_id(3)))
1885 // {
1886 // // Case 1
1887 // xi_mapped = xi;
1888 // eta_mapped = eta;
1889 // }
1890 // else
1891 // {
1892 // // Case 2
1893 // xi_mapped = eta;
1894 // eta_mapped = xi;
1895 // }
1896
1897 // else if (elem->node_id(3) == min_node)
1898 // if (elem->node_id(0) == std::min(elem->node_id(0), elem->node_id(2)))
1899 // {
1900 // // Case 3
1901 // xi_mapped = -eta;
1902 // eta_mapped = xi;
1903 // }
1904 // else
1905 // {
1906 // // Case 4
1907 // xi_mapped = xi;
1908 // eta_mapped = -eta;
1909 // }
1910
1911 // else if (elem->node_id(2) == min_node)
1912 // if (elem->node_id(3) == std::min(elem->node_id(3), elem->node_id(1)))
1913 // {
1914 // // Case 5
1915 // xi_mapped = -xi;
1916 // eta_mapped = -eta;
1917 // }
1918 // else
1919 // {
1920 // // Case 6
1921 // xi_mapped = -eta;
1922 // eta_mapped = -xi;
1923 // }
1924
1925 // else if (elem->node_id(1) == min_node)
1926 // if (elem->node_id(2) == std::min(elem->node_id(2), elem->node_id(0)))
1927 // {
1928 // // Case 7
1929 // xi_mapped = eta;
1930 // eta_mapped = -xi;
1931 // }
1932 // else
1933 // {
1934 // // Case 8
1935 // xi_mapped = -xi;
1936 // eta_mapped = eta;
1937 // }
1938 // }
1939
1940
1941 // // Face 1
1942 // else if ((i1[i] == 0) && (i0[i] >= 2) && (i2[i] >= 2))
1943 // {
1944 // const unsigned int min_node = std::min(elem->node_id(0),
1945 // std::min(elem->node_id(1),
1946 // std::min(elem->node_id(5),
1947 // elem->node_id(4))));
1948 // if (elem->node_id(0) == min_node)
1949 // if (elem->node_id(1) == std::min(elem->node_id(1), elem->node_id(4)))
1950 // {
1951 // // Case 1
1952 // xi_mapped = xi;
1953 // zeta_mapped = zeta;
1954 // }
1955 // else
1956 // {
1957 // // Case 2
1958 // xi_mapped = zeta;
1959 // zeta_mapped = xi;
1960 // }
1961
1962 // else if (elem->node_id(1) == min_node)
1963 // if (elem->node_id(5) == std::min(elem->node_id(5), elem->node_id(0)))
1964 // {
1965 // // Case 3
1966 // xi_mapped = zeta;
1967 // zeta_mapped = -xi;
1968 // }
1969 // else
1970 // {
1971 // // Case 4
1972 // xi_mapped = -xi;
1973 // zeta_mapped = zeta;
1974 // }
1975
1976 // else if (elem->node_id(5) == min_node)
1977 // if (elem->node_id(4) == std::min(elem->node_id(4), elem->node_id(1)))
1978 // {
1979 // // Case 5
1980 // xi_mapped = -xi;
1981 // zeta_mapped = -zeta;
1982 // }
1983 // else
1984 // {
1985 // // Case 6
1986 // xi_mapped = -zeta;
1987 // zeta_mapped = -xi;
1988 // }
1989
1990 // else if (elem->node_id(4) == min_node)
1991 // if (elem->node_id(0) == std::min(elem->node_id(0), elem->node_id(5)))
1992 // {
1993 // // Case 7
1994 // xi_mapped = -xi;
1995 // zeta_mapped = zeta;
1996 // }
1997 // else
1998 // {
1999 // // Case 8
2000 // xi_mapped = xi;
2001 // zeta_mapped = -zeta;
2002 // }
2003 // }
2004
2005
2006 // // Face 2
2007 // else if ((i0[i] == 1) && (i1[i] >= 2) && (i2[i] >= 2))
2008 // {
2009 // const unsigned int min_node = std::min(elem->node_id(1),
2010 // std::min(elem->node_id(2),
2011 // std::min(elem->node_id(6),
2012 // elem->node_id(5))));
2013 // if (elem->node_id(1) == min_node)
2014 // if (elem->node_id(2) == std::min(elem->node_id(2), elem->node_id(5)))
2015 // {
2016 // // Case 1
2017 // eta_mapped = eta;
2018 // zeta_mapped = zeta;
2019 // }
2020 // else
2021 // {
2022 // // Case 2
2023 // eta_mapped = zeta;
2024 // zeta_mapped = eta;
2025 // }
2026
2027 // else if (elem->node_id(2) == min_node)
2028 // if (elem->node_id(6) == std::min(elem->node_id(6), elem->node_id(1)))
2029 // {
2030 // // Case 3
2031 // eta_mapped = zeta;
2032 // zeta_mapped = -eta;
2033 // }
2034 // else
2035 // {
2036 // // Case 4
2037 // eta_mapped = -eta;
2038 // zeta_mapped = zeta;
2039 // }
2040
2041 // else if (elem->node_id(6) == min_node)
2042 // if (elem->node_id(5) == std::min(elem->node_id(5), elem->node_id(2)))
2043 // {
2044 // // Case 5
2045 // eta_mapped = -eta;
2046 // zeta_mapped = -zeta;
2047 // }
2048 // else
2049 // {
2050 // // Case 6
2051 // eta_mapped = -zeta;
2052 // zeta_mapped = -eta;
2053 // }
2054
2055 // else if (elem->node_id(5) == min_node)
2056 // if (elem->node_id(1) == std::min(elem->node_id(1), elem->node_id(6)))
2057 // {
2058 // // Case 7
2059 // eta_mapped = -zeta;
2060 // zeta_mapped = eta;
2061 // }
2062 // else
2063 // {
2064 // // Case 8
2065 // eta_mapped = eta;
2066 // zeta_mapped = -zeta;
2067 // }
2068 // }
2069
2070
2071 // // Face 3
2072 // else if ((i1[i] == 1) && (i0[i] >= 2) && (i2[i] >= 2))
2073 // {
2074 // const unsigned int min_node = std::min(elem->node_id(2),
2075 // std::min(elem->node_id(3),
2076 // std::min(elem->node_id(7),
2077 // elem->node_id(6))));
2078 // if (elem->node_id(3) == min_node)
2079 // if (elem->node_id(2) == std::min(elem->node_id(2), elem->node_id(7)))
2080 // {
2081 // // Case 1
2082 // xi_mapped = xi;
2083 // zeta_mapped = zeta;
2084 // }
2085 // else
2086 // {
2087 // // Case 2
2088 // xi_mapped = zeta;
2089 // zeta_mapped = xi;
2090 // }
2091
2092 // else if (elem->node_id(7) == min_node)
2093 // if (elem->node_id(3) == std::min(elem->node_id(3), elem->node_id(6)))
2094 // {
2095 // // Case 3
2096 // xi_mapped = -zeta;
2097 // zeta_mapped = xi;
2098 // }
2099 // else
2100 // {
2101 // // Case 4
2102 // xi_mapped = xi;
2103 // zeta_mapped = -zeta;
2104 // }
2105
2106 // else if (elem->node_id(6) == min_node)
2107 // if (elem->node_id(7) == std::min(elem->node_id(7), elem->node_id(2)))
2108 // {
2109 // // Case 5
2110 // xi_mapped = -xi;
2111 // zeta_mapped = -zeta;
2112 // }
2113 // else
2114 // {
2115 // // Case 6
2116 // xi_mapped = -zeta;
2117 // zeta_mapped = -xi;
2118 // }
2119
2120 // else if (elem->node_id(2) == min_node)
2121 // if (elem->node_id(6) == std::min(elem->node_id(3), elem->node_id(6)))
2122 // {
2123 // // Case 7
2124 // xi_mapped = zeta;
2125 // zeta_mapped = -xi;
2126 // }
2127 // else
2128 // {
2129 // // Case 8
2130 // xi_mapped = -xi;
2131 // zeta_mapped = zeta;
2132 // }
2133 // }
2134
2135
2136 // // Face 4
2137 // else if ((i0[i] == 0) && (i1[i] >= 2) && (i2[i] >= 2))
2138 // {
2139 // const unsigned int min_node = std::min(elem->node_id(3),
2140 // std::min(elem->node_id(0),
2141 // std::min(elem->node_id(4),
2142 // elem->node_id(7))));
2143 // if (elem->node_id(0) == min_node)
2144 // if (elem->node_id(3) == std::min(elem->node_id(3), elem->node_id(4)))
2145 // {
2146 // // Case 1
2147 // eta_mapped = eta;
2148 // zeta_mapped = zeta;
2149 // }
2150 // else
2151 // {
2152 // // Case 2
2153 // eta_mapped = zeta;
2154 // zeta_mapped = eta;
2155 // }
2156
2157 // else if (elem->node_id(4) == min_node)
2158 // if (elem->node_id(0) == std::min(elem->node_id(0), elem->node_id(7)))
2159 // {
2160 // // Case 3
2161 // eta_mapped = -zeta;
2162 // zeta_mapped = eta;
2163 // }
2164 // else
2165 // {
2166 // // Case 4
2167 // eta_mapped = eta;
2168 // zeta_mapped = -zeta;
2169 // }
2170
2171 // else if (elem->node_id(7) == min_node)
2172 // if (elem->node_id(4) == std::min(elem->node_id(4), elem->node_id(3)))
2173 // {
2174 // // Case 5
2175 // eta_mapped = -eta;
2176 // zeta_mapped = -zeta;
2177 // }
2178 // else
2179 // {
2180 // // Case 6
2181 // eta_mapped = -zeta;
2182 // zeta_mapped = -eta;
2183 // }
2184
2185 // else if (elem->node_id(3) == min_node)
2186 // if (elem->node_id(7) == std::min(elem->node_id(7), elem->node_id(0)))
2187 // {
2188 // // Case 7
2189 // eta_mapped = zeta;
2190 // zeta_mapped = -eta;
2191 // }
2192 // else
2193 // {
2194 // // Case 8
2195 // eta_mapped = -eta;
2196 // zeta_mapped = zeta;
2197 // }
2198 // }
2199
2200
2201 // // Face 5
2202 // else if ((i2[i] == 1) && (i0[i] >= 2) && (i1[i] >= 2))
2203 // {
2204 // const unsigned int min_node = std::min(elem->node_id(4),
2205 // std::min(elem->node_id(5),
2206 // std::min(elem->node_id(6),
2207 // elem->node_id(7))));
2208 // if (elem->node_id(4) == min_node)
2209 // if (elem->node_id(5) == std::min(elem->node_id(5), elem->node_id(7)))
2210 // {
2211 // // Case 1
2212 // xi_mapped = xi;
2213 // eta_mapped = eta;
2214 // }
2215 // else
2216 // {
2217 // // Case 2
2218 // xi_mapped = eta;
2219 // eta_mapped = xi;
2220 // }
2221
2222 // else if (elem->node_id(5) == min_node)
2223 // if (elem->node_id(6) == std::min(elem->node_id(6), elem->node_id(4)))
2224 // {
2225 // // Case 3
2226 // xi_mapped = eta;
2227 // eta_mapped = -xi;
2228 // }
2229 // else
2230 // {
2231 // // Case 4
2232 // xi_mapped = -xi;
2233 // eta_mapped = eta;
2234 // }
2235
2236 // else if (elem->node_id(6) == min_node)
2237 // if (elem->node_id(7) == std::min(elem->node_id(7), elem->node_id(5)))
2238 // {
2239 // // Case 5
2240 // xi_mapped = -xi;
2241 // eta_mapped = -eta;
2242 // }
2243 // else
2244 // {
2245 // // Case 6
2246 // xi_mapped = -eta;
2247 // eta_mapped = -xi;
2248 // }
2249
2250 // else if (elem->node_id(7) == min_node)
2251 // if (elem->node_id(4) == std::min(elem->node_id(4), elem->node_id(6)))
2252 // {
2253 // // Case 7
2254 // xi_mapped = -eta;
2255 // eta_mapped = xi;
2256 // }
2257 // else
2258 // {
2259 // // Case 8
2260 // xi_mapped = xi;
2261 // eta_mapped = eta;
2262 // }
2263 // }
2264
2265
2266 // }
2267
2268
2269
2270 // libmesh_assert_less (j, 3);
2271
2272 // switch (j)
2273 // {
2274 // // d()/dxi
2275 // case 0:
2276 // return (FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi_mapped)*
2277 // FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1[i], eta_mapped)*
2278 // FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i2[i], zeta_mapped));
2279
2280 // // d()/deta
2281 // case 1:
2282 // return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0[i], xi_mapped)*
2283 // FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta_mapped)*
2284 // FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i2[i], zeta_mapped));
2285
2286 // // d()/dzeta
2287 // case 2:
2288 // return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0[i], xi_mapped)*
2289 // FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1[i], eta_mapped)*
2290 // FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i2[i], 0, zeta_mapped));
2291
2292 // default:
2293 // libmesh_error_msg("Invalid derivative index j = " << j);
2294 // }
2295
2296
2297 default:
2298 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
2299 }
2300 }
2301
2302
2303 default:
2304 libmesh_error_msg("Invalid totalorder = " << totalorder);
2305 }
2306
2307#else // LIBMESH_DIM != 3
2308 libmesh_ignore(elem, order, i, j, p, add_p_level);
2309 libmesh_not_implemented();
2310#endif
2311}

◆ shape_deriv() [35/233]

Real libMesh::FE< 1, CLOUGH >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 317 of file fe_clough_shape_1D.C.

323{
324 libmesh_assert(elem);
325
326 clough_compute_coefs(elem);
327
328 const ElemType type = elem->type();
329
330 const Order totalorder =
331 order + add_p_level*elem->p_level();
332
333 switch (totalorder)
334 {
335 // 3rd-order C1 cubic element
336 case THIRD:
337 {
338 switch (type)
339 {
340 // C1 functions on the C1 cubic edge
341 case EDGE2:
342 case EDGE3:
343 {
344 switch (i)
345 {
346 case 0:
347 return clough_raw_shape_deriv(0, j, p);
348 case 1:
349 return clough_raw_shape_deriv(1, j, p);
350 case 2:
351 return d1xd1x * clough_raw_shape_deriv(2, j, p);
352 case 3:
353 return d2xd2x * clough_raw_shape_deriv(3, j, p);
354 default:
355 libmesh_error_msg("Invalid shape function index i = " << i);
356 }
357 }
358 default:
359 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
360 }
361 }
362 // by default throw an error
363 default:
364 libmesh_error_msg("ERROR: Unsupported polynomial order = " << totalorder);
365 }
366}

◆ shape_deriv() [36/233]

Real libMesh::FE< 2, CLOUGH >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1970 of file fe_clough_shape_2D.C.

1976{
1977 libmesh_assert(elem);
1978
1979 CloughCoefs coefs;
1980 clough_compute_coefs(elem, coefs);
1981
1982 const ElemType type = elem->type();
1983
1984 const Order totalorder =
1985 order + add_p_level*elem->p_level();
1986
1987 switch (totalorder)
1988 {
1989 // 2nd-order restricted Clough-Tocher element
1990 case SECOND:
1991 {
1992 // There may be a bug in the 2nd order case; the 3rd order
1993 // Clough-Tocher elements are pretty uniformly better anyways
1994 // so use those instead.
1995 libmesh_experimental();
1996 switch (type)
1997 {
1998 // C1 functions on the Clough-Tocher triangle.
1999 case TRI6:
2000 case TRI7:
2001 {
2002 libmesh_assert_less (i, 9);
2003 // FIXME: it would be nice to calculate (and cache)
2004 // clough_raw_shape(j,p) only once per triangle, not 1-7
2005 // times
2006 switch (i)
2007 {
2008 // Note: these DoF numbers are "scrambled" because my
2009 // initial numbering conventions didn't match libMesh
2010 case 0:
2011 return clough_raw_shape_deriv(0, j, p)
2012 + coefs.d1d2n * clough_raw_shape_deriv(10, j, p)
2013 + coefs.d1d3n * clough_raw_shape_deriv(11, j, p);
2014 case 3:
2015 return clough_raw_shape_deriv(1, j, p)
2016 + coefs.d2d3n * clough_raw_shape_deriv(11, j, p)
2017 + coefs.d2d1n * clough_raw_shape_deriv(9, j, p);
2018 case 6:
2019 return clough_raw_shape_deriv(2, j, p)
2020 + coefs.d3d1n * clough_raw_shape_deriv(9, j, p)
2021 + coefs.d3d2n * clough_raw_shape_deriv(10, j, p);
2022 case 1:
2023 return coefs.d1xd1x * clough_raw_shape_deriv(3, j, p)
2024 + coefs.d1xd1y * clough_raw_shape_deriv(4, j, p)
2025 + coefs.d1xd2n * clough_raw_shape_deriv(10, j, p)
2026 + coefs.d1xd3n * clough_raw_shape_deriv(11, j, p)
2027 + 0.5 * coefs.N01x * coefs.d3nd3n * clough_raw_shape_deriv(11, j, p)
2028 + 0.5 * coefs.N02x * coefs.d2nd2n * clough_raw_shape_deriv(10, j, p);
2029 case 2:
2030 return coefs.d1yd1y * clough_raw_shape_deriv(4, j, p)
2031 + coefs.d1yd1x * clough_raw_shape_deriv(3, j, p)
2032 + coefs.d1yd2n * clough_raw_shape_deriv(10, j, p)
2033 + coefs.d1yd3n * clough_raw_shape_deriv(11, j, p)
2034 + 0.5 * coefs.N01y * coefs.d3nd3n * clough_raw_shape_deriv(11, j, p)
2035 + 0.5 * coefs.N02y * coefs.d2nd2n * clough_raw_shape_deriv(10, j, p);
2036 case 4:
2037 return coefs.d2xd2x * clough_raw_shape_deriv(5, j, p)
2038 + coefs.d2xd2y * clough_raw_shape_deriv(6, j, p)
2039 + coefs.d2xd3n * clough_raw_shape_deriv(11, j, p)
2040 + coefs.d2xd1n * clough_raw_shape_deriv(9, j, p)
2041 + 0.5 * coefs.N10x * coefs.d3nd3n * clough_raw_shape_deriv(11, j, p)
2042 + 0.5 * coefs.N12x * coefs.d1nd1n * clough_raw_shape_deriv(9, j, p);
2043 case 5:
2044 return coefs.d2yd2y * clough_raw_shape_deriv(6, j, p)
2045 + coefs.d2yd2x * clough_raw_shape_deriv(5, j, p)
2046 + coefs.d2yd3n * clough_raw_shape_deriv(11, j, p)
2047 + coefs.d2yd1n * clough_raw_shape_deriv(9, j, p)
2048 + 0.5 * coefs.N10y * coefs.d3nd3n * clough_raw_shape_deriv(11, j, p)
2049 + 0.5 * coefs.N12y * coefs.d1nd1n * clough_raw_shape_deriv(9, j, p);
2050 case 7:
2051 return coefs.d3xd3x * clough_raw_shape_deriv(7, j, p)
2052 + coefs.d3xd3y * clough_raw_shape_deriv(8, j, p)
2053 + coefs.d3xd1n * clough_raw_shape_deriv(9, j, p)
2054 + coefs.d3xd2n * clough_raw_shape_deriv(10, j, p)
2055 + 0.5 * coefs.N20x * coefs.d2nd2n * clough_raw_shape_deriv(10, j, p)
2056 + 0.5 * coefs.N21x * coefs.d1nd1n * clough_raw_shape_deriv(9, j, p);
2057 case 8:
2058 return coefs.d3yd3y * clough_raw_shape_deriv(8, j, p)
2059 + coefs.d3yd3x * clough_raw_shape_deriv(7, j, p)
2060 + coefs.d3yd1n * clough_raw_shape_deriv(9, j, p)
2061 + coefs.d3yd2n * clough_raw_shape_deriv(10, j, p)
2062 + 0.5 * coefs.N20y * coefs.d2nd2n * clough_raw_shape_deriv(10, j, p)
2063 + 0.5 * coefs.N21y * coefs.d1nd1n * clough_raw_shape_deriv(9, j, p);
2064 default:
2065 libmesh_error_msg("Invalid shape function index i = " << i);
2066 }
2067 }
2068 default:
2069 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
2070 }
2071 }
2072 // 3rd-order Clough-Tocher element
2073 case THIRD:
2074 {
2075 switch (type)
2076 {
2077 // C1 functions on the Clough-Tocher triangle.
2078 case TRI6:
2079 case TRI7:
2080 {
2081 libmesh_assert_less (i, 12);
2082
2083 // FIXME: it would be nice to calculate (and cache)
2084 // clough_raw_shape(j,p) only once per triangle, not 1-7
2085 // times
2086 switch (i)
2087 {
2088 // Note: these DoF numbers are "scrambled" because my
2089 // initial numbering conventions didn't match libMesh
2090 case 0:
2091 return clough_raw_shape_deriv(0, j, p)
2092 + coefs.d1d2n * clough_raw_shape_deriv(10, j, p)
2093 + coefs.d1d3n * clough_raw_shape_deriv(11, j, p);
2094 case 3:
2095 return clough_raw_shape_deriv(1, j, p)
2096 + coefs.d2d3n * clough_raw_shape_deriv(11, j, p)
2097 + coefs.d2d1n * clough_raw_shape_deriv(9, j, p);
2098 case 6:
2099 return clough_raw_shape_deriv(2, j, p)
2100 + coefs.d3d1n * clough_raw_shape_deriv(9, j, p)
2101 + coefs.d3d2n * clough_raw_shape_deriv(10, j, p);
2102 case 1:
2103 return coefs.d1xd1x * clough_raw_shape_deriv(3, j, p)
2104 + coefs.d1xd1y * clough_raw_shape_deriv(4, j, p)
2105 + coefs.d1xd2n * clough_raw_shape_deriv(10, j, p)
2106 + coefs.d1xd3n * clough_raw_shape_deriv(11, j, p);
2107 case 2:
2108 return coefs.d1yd1y * clough_raw_shape_deriv(4, j, p)
2109 + coefs.d1yd1x * clough_raw_shape_deriv(3, j, p)
2110 + coefs.d1yd2n * clough_raw_shape_deriv(10, j, p)
2111 + coefs.d1yd3n * clough_raw_shape_deriv(11, j, p);
2112 case 4:
2113 return coefs.d2xd2x * clough_raw_shape_deriv(5, j, p)
2114 + coefs.d2xd2y * clough_raw_shape_deriv(6, j, p)
2115 + coefs.d2xd3n * clough_raw_shape_deriv(11, j, p)
2116 + coefs.d2xd1n * clough_raw_shape_deriv(9, j, p);
2117 case 5:
2118 return coefs.d2yd2y * clough_raw_shape_deriv(6, j, p)
2119 + coefs.d2yd2x * clough_raw_shape_deriv(5, j, p)
2120 + coefs.d2yd3n * clough_raw_shape_deriv(11, j, p)
2121 + coefs.d2yd1n * clough_raw_shape_deriv(9, j, p);
2122 case 7:
2123 return coefs.d3xd3x * clough_raw_shape_deriv(7, j, p)
2124 + coefs.d3xd3y * clough_raw_shape_deriv(8, j, p)
2125 + coefs.d3xd1n * clough_raw_shape_deriv(9, j, p)
2126 + coefs.d3xd2n * clough_raw_shape_deriv(10, j, p);
2127 case 8:
2128 return coefs.d3yd3y * clough_raw_shape_deriv(8, j, p)
2129 + coefs.d3yd3x * clough_raw_shape_deriv(7, j, p)
2130 + coefs.d3yd1n * clough_raw_shape_deriv(9, j, p)
2131 + coefs.d3yd2n * clough_raw_shape_deriv(10, j, p);
2132 case 10:
2133 return coefs.d1nd1n * clough_raw_shape_deriv(9, j, p);
2134 case 11:
2135 return coefs.d2nd2n * clough_raw_shape_deriv(10, j, p);
2136 case 9:
2137 return coefs.d3nd3n * clough_raw_shape_deriv(11, j, p);
2138
2139 default:
2140 libmesh_error_msg("Invalid shape function index i = " << i);
2141 }
2142 }
2143 default:
2144 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
2145 }
2146 }
2147 // by default throw an error
2148 default:
2149 libmesh_error_msg("ERROR: Unsupported polynomial order = " << order);
2150 }
2151}

◆ shape_deriv() [37/233]

Real libMesh::FE< 2, HERMITE >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 270 of file fe_hermite_shape_2D.C.

276{
277 libmesh_assert(elem);
278 libmesh_assert (j == 0 || j == 1);
279
280 std::vector<std::vector<Real>> dxdxi(2, std::vector<Real>(2, 0));
281
282#ifdef DEBUG
283 std::vector<Real> dxdeta(2), dydxi(2);
284#endif
285
286 hermite_compute_coefs(elem,dxdxi
287#ifdef DEBUG
288 ,dxdeta,dydxi
289#endif
290 );
291
292 const ElemType type = elem->type();
293
294 const Order totalorder =
295 order + add_p_level*elem->p_level();
296
297 switch (type)
298 {
299 case QUAD4:
300 case QUADSHELL4:
301 libmesh_assert_less (totalorder, 4);
302 libmesh_fallthrough();
303 case QUAD8:
304 case QUADSHELL8:
305 case QUAD9:
306 case QUADSHELL9:
307 {
308 libmesh_assert_less (i, (totalorder+1u)*(totalorder+1u));
309
310 std::vector<unsigned int> bases1D;
311
312 Real coef = hermite_bases_2D(bases1D, dxdxi, totalorder, i);
313
314 switch (j)
315 {
316 case 0:
317 return coef *
319 FEHermite<1>::hermite_raw_shape(bases1D[1],p(1));
320 case 1:
321 return coef *
322 FEHermite<1>::hermite_raw_shape(bases1D[0],p(0)) *
324 default:
325 libmesh_error_msg("Invalid derivative index j = " << j);
326 }
327 }
328 default:
329 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
330 }
331}

◆ shape_deriv() [38/233]

Real libMesh::FE< 3, HERMITE >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 465 of file fe_hermite_shape_3D.C.

471{
472 libmesh_assert(elem);
473 libmesh_assert (j == 0 || j == 1 || j == 2);
474
475 std::vector<std::vector<Real>> dxdxi(3, std::vector<Real>(2, 0));
476
477#ifdef DEBUG
478 std::vector<Real> dydxi(2), dzdeta(2), dxdzeta(2);
479 std::vector<Real> dzdxi(2), dxdeta(2), dydzeta(2);
480#endif //DEBUG
481
482 hermite_compute_coefs(elem, dxdxi
483#ifdef DEBUG
484 , dydxi, dzdeta, dxdzeta, dzdxi, dxdeta, dydzeta
485#endif
486 );
487
488 const ElemType type = elem->type();
489
490 const Order totalorder =
491 order + add_p_level*elem->p_level();
492
493 switch (totalorder)
494 {
495 // 3rd-order tricubic Hermite functions
496 case THIRD:
497 {
498 switch (type)
499 {
500 case HEX8:
501 case HEX20:
502 case HEX27:
503 {
504 libmesh_assert_less (i, 64);
505
506 std::vector<unsigned int> bases1D;
507
508 Real coef = hermite_bases_3D(bases1D, dxdxi, totalorder, i);
509
510 switch (j) // Derivative type
511 {
512 case 0:
513 return coef *
515 FEHermite<1>::hermite_raw_shape(bases1D[1],p(1)) *
516 FEHermite<1>::hermite_raw_shape(bases1D[2],p(2));
517 break;
518 case 1:
519 return coef *
520 FEHermite<1>::hermite_raw_shape(bases1D[0],p(0)) *
522 FEHermite<1>::hermite_raw_shape(bases1D[2],p(2));
523 break;
524 case 2:
525 return coef *
526 FEHermite<1>::hermite_raw_shape(bases1D[0],p(0)) *
527 FEHermite<1>::hermite_raw_shape(bases1D[1],p(1)) *
529 break;
530 default:
531 libmesh_error_msg("Invalid shape function derivative j = " << j);
532 }
533
534 }
535 default:
536 libmesh_error_msg("ERROR: Unsupported element type " << Utility::enum_to_string(type));
537 }
538 }
539 // by default throw an error
540 default:
541 libmesh_error_msg("ERROR: Unsupported polynomial order " << totalorder);
542 }
543}

◆ shape_deriv() [39/233]

Real libMesh::FE< 1, HIERARCHIC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 214 of file fe_hierarchic_shape_1D.C.

220{
221 libmesh_assert(elem);
222
223 return fe_hierarchic_1D_shape_deriv(elem->type(),
224 order + add_p_level*elem->p_level(), i, j, p);
225}

◆ shape_deriv() [40/233]

Real libMesh::FE< 1, L2_HIERARCHIC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 245 of file fe_hierarchic_shape_1D.C.

251{
252 libmesh_assert(elem);
253
254 return fe_hierarchic_1D_shape_deriv(elem->type(),
255 order + add_p_level*elem->p_level(), i, j, p);
256}

◆ shape_deriv() [41/233]

Real libMesh::FE< 2, HIERARCHIC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 441 of file fe_hierarchic_shape_2D.C.

447{
448 return fe_hierarchic_2D_shape_deriv<HIERARCHIC>(elem, order, i, j, p, add_p_level);
449}

◆ shape_deriv() [42/233]

Real libMesh::FE< 2, L2_HIERARCHIC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 467 of file fe_hierarchic_shape_2D.C.

473{
474 return fe_hierarchic_2D_shape_deriv<L2_HIERARCHIC>(elem, order, i, j, p, add_p_level);
475}

◆ shape_deriv() [43/233]

Real libMesh::FE< 2, SIDE_HIERARCHIC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 492 of file fe_hierarchic_shape_2D.C.

498{
499 libmesh_assert(elem);
500
501 const ElemType type = elem->type();
502
503 const Order totalorder = order + add_p_level*elem->p_level();
504
505 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
506 return 0;
507
508 const unsigned int dofs_per_side = totalorder+1u;
509
510 switch (type)
511 {
512 case TRI6:
513 case TRI7:
514 {
515 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<2,SIDE_HIERARCHIC>::shape);
516 }
517#if 0
518 {
519 libmesh_assert_less(i, 3*dofs_per_side);
520 libmesh_assert_less (j, 2);
521
522 // Flip odd degree of freedom values if necessary
523 // to keep continuity on sides. We'll flip xi/eta rather than
524 // flipping phi, so that we can use this to handle the "nodal"
525 // degrees of freedom too.
526 Real f = 1.;
527
528 const Real zeta1 = p(0);
529 const Real zeta2 = p(1);
530 const Real zeta0 = 1. - zeta1 - zeta2;
531
532 if (zeta1 > zeta2 && zeta0 > zeta2) // side 0
533 {
534 if (j == 1) // d/deta is perpendicular here
535 return 0;
536
537 if (i >= dofs_per_side)
538 return 0;
539
540 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
541 return 0;
542
543 if ((i < 2 || i % 2) &&
545 f = -1;
546
547 return f*FE<1,HIERARCHIC>::shape_deriv(EDGE3, totalorder, i, 0, f*(zeta1-zeta0));
548 }
549 else if (zeta1 > zeta0 && zeta2 > zeta0) // side 1
550 {
551 if (i < dofs_per_side ||
552 i >= 2*dofs_per_side)
553 return 0;
554
555 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
556 return 0;
557
558 const unsigned int side_i = i - dofs_per_side;
559
560 if ((side_i < 2 || side_i % 2) &&
562 f = -1;
563
564 Real g = 1;
565 if (j == 0) // 2D d/dxi is in the opposite direction on this edge
566 g = -1;
567
568 return f*g*FE<1,HIERARCHIC>::shape_deriv(EDGE3, totalorder, side_i, 0, f*(zeta2-zeta1));
569 }
570 else // side 2
571 {
572 libmesh_assert (zeta2 >= zeta1 && zeta0 >= zeta1); // On a corner???
573
574 if (j == 0) // d/dxi is perpendicular here
575 return 0;
576
577 if (i < 2*dofs_per_side)
578 return 0;
579
580 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
581 return 0;
582
583 const unsigned int side_i = i - 2*dofs_per_side;
584
585 if ((side_i < 2 || side_i % 2) &&
587 f = -1;
588
589 return -f*FE<1,HIERARCHIC>::shape_deriv(EDGE3, totalorder, side_i, 0, f*(zeta0-zeta2));
590 }
591 }
592#endif
593 case QUAD8:
594 case QUADSHELL8:
595 case QUAD9:
596 case QUADSHELL9:
597 {
598 libmesh_assert_less(i, 4*dofs_per_side);
599
600 // Flip odd degree of freedom values if necessary
601 // to keep continuity on sides. We'll flip xi/eta rather than
602 // flipping phi, so that we can use this to handle the "nodal"
603 // degrees of freedom too.
604 Real f = 1.;
605
606 const Real xi = p(0), eta = p(1);
607 if (eta < xi)
608 {
609 if (eta < -xi) // side 0
610 {
611 if (i >= dofs_per_side)
612 return 0;
613 if (j != 0)
614 return 0;
615 if ((i < 2 || i % 2) &&
617 f = -1;
618
619 return f*FE<1,HIERARCHIC>::shape_deriv(EDGE3, totalorder, i, 0, f*xi);
620 }
621 else // side 1
622 {
623 if (i < dofs_per_side ||
624 i >= 2*dofs_per_side)
625 return 0;
626 if (j != 1)
627 return 0;
628
629 const unsigned int side_i = i - dofs_per_side;
630
631 if ((side_i < 2 || side_i % 2) &&
633 f = -1;
634
635 return f*FE<1,HIERARCHIC>::shape_deriv(EDGE3, totalorder, side_i, 0, f*eta);
636 }
637 }
638 else // xi < eta
639 {
640 if (eta > -xi) // side 2
641 {
642 if (i < 2*dofs_per_side ||
643 i >= 3*dofs_per_side)
644 return 0;
645 if (j != 0)
646 return 0;
647
648 const unsigned int side_i = i - 2*dofs_per_side;
649
650 if ((side_i < 2 || side_i % 2) &&
652 f = -1;
653
654 return f*FE<1,HIERARCHIC>::shape_deriv(EDGE3, totalorder, side_i, 0, f*xi);
655 }
656 else // side 3
657 {
658 if (i < 3*dofs_per_side)
659 return 0;
660 if (j != 1)
661 return 0;
662
663 const unsigned int side_i = i - 3*dofs_per_side;
664
665 if ((side_i < 2 || side_i % 2) &&
667 f = -1;
668
669 return f*FE<1,HIERARCHIC>::shape_deriv(EDGE3, totalorder, side_i, 0, f*eta);
670 }
671 }
672 }
673 default:
674 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(elem->type()));
675 }
676 return 0;
677}

◆ shape_deriv() [44/233]

Real libMesh::FE< 3, HIERARCHIC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1548 of file fe_hierarchic_shape_3D.C.

1554{
1555 return fe_hierarchic_3D_shape_deriv<HIERARCHIC>(elem, order, i, j, p, add_p_level);
1556}

◆ shape_deriv() [45/233]

Real libMesh::FE< 3, L2_HIERARCHIC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1573 of file fe_hierarchic_shape_3D.C.

1579{
1580 return fe_hierarchic_3D_shape_deriv<L2_HIERARCHIC>(elem, order, i, j, p, add_p_level);
1581}

◆ shape_deriv() [46/233]

Real libMesh::FE< 3, SIDE_HIERARCHIC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1598 of file fe_hierarchic_shape_3D.C.

1604{
1605#if LIBMESH_DIM == 3
1606 libmesh_assert(elem);
1607 const ElemType type = elem->type();
1608
1609 const Order totalorder = order + add_p_level*elem->p_level();
1610
1611 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
1612 return 0; // constants have zero derivative
1613
1614 switch (type)
1615 {
1616 case HEX27:
1617 {
1618 // I need to debug the p>2 case here...
1619 if (totalorder > 2)
1620 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<3,SIDE_HIERARCHIC>::shape);
1621
1622 const unsigned int dofs_per_side = (totalorder+1u)*(totalorder+1u);
1623 libmesh_assert_less(i, 6*dofs_per_side);
1624
1625 const unsigned int sidenum = cube_side(p);
1626 if (sidenum > 5)
1627 return std::numeric_limits<Real>::quiet_NaN();
1628
1629 const unsigned int dof_offset = sidenum * dofs_per_side;
1630
1631 if (i < dof_offset) // i is on a previous side
1632 return 0;
1633
1634 if (i >= dof_offset + dofs_per_side) // i is on a later side
1635 return 0;
1636
1637 unsigned int side_i = i - dof_offset;
1638
1639 std::unique_ptr<const Elem> side = elem->build_side_ptr(sidenum);
1640
1641 Point sidep = cube_side_point(sidenum, p);
1642
1643 cube_remap(side_i, *side, totalorder, sidep);
1644
1645 // What direction on the side corresponds to the derivative
1646 // direction we want?
1647 unsigned int sidej = 100;
1648
1649 // Do we need a -1 here to flip that direction?
1650 Real f = 1.;
1651
1652 switch (j)
1653 {
1654 case 0: // d()/dxi
1655 {
1656 switch (sidenum)
1657 {
1658 case 0:
1659 sidej = 1;
1660 break;
1661 case 1:
1662 sidej = 0;
1663 break;
1664 case 2:
1665 return 0;
1666 case 3:
1667 sidej = 0;
1668 f = -1;
1669 break;
1670 case 4:
1671 return 0;
1672 case 5:
1673 sidej = 0;
1674 break;
1675 default:
1676 libmesh_error();
1677 }
1678 break;
1679 }
1680 case 1: // d()/deta
1681 {
1682 switch (sidenum)
1683 {
1684 case 0:
1685 sidej = 0;
1686 break;
1687 case 1:
1688 return 0;
1689 case 2:
1690 sidej = 0;
1691 break;
1692 case 3:
1693 return 0;
1694 case 4:
1695 sidej = 0;
1696 f = -1;
1697 break;
1698 case 5:
1699 sidej = 1;
1700 break;
1701 default:
1702 libmesh_error();
1703 }
1704 break;
1705 }
1706 case 2: // d()/dzeta
1707 {
1708 switch (sidenum)
1709 {
1710 case 0:
1711 return 0;
1712 case 1:
1713 case 2:
1714 case 3:
1715 case 4:
1716 sidej = 1;
1717 break;
1718 case 5:
1719 return 0;
1720 default:
1721 libmesh_error();
1722 }
1723 break;
1724 }
1725
1726 default:
1727 libmesh_error_msg("Invalid derivative index j = " << j);
1728 }
1729
1730 return f * FE<2,HIERARCHIC>::shape_deriv(side.get(), order,
1731 side_i, sidej, sidep,
1732 add_p_level);
1733 }
1734
1735 case TET14:
1736 case PRISM20:
1737 case PRISM21:
1738 {
1739 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<3,SIDE_HIERARCHIC>::shape);
1740 }
1741
1742 default:
1743 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
1744 }
1745
1746#else // LIBMESH_DIM != 3
1747 libmesh_ignore(elem, order, i, j, p, add_p_level);
1748 libmesh_not_implemented();
1749#endif
1750}

◆ shape_deriv() [47/233]

RealGradient libMesh::FE< 0, HIERARCHIC_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 425 of file fe_hierarchic_vec.C.

429{
430 const Real value = FE<0,HIERARCHIC>::shape_deriv(elem, order, i, j, p, add_p_level);
432}

◆ shape_deriv() [48/233]

RealGradient libMesh::FE< 0, L2_HIERARCHIC_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 454 of file fe_hierarchic_vec.C.

458{
459 return FE<0,HIERARCHIC_VEC>::shape_deriv(elem, order, i, j, p, add_p_level);
460}

◆ shape_deriv() [49/233]

RealGradient libMesh::FE< 1, HIERARCHIC_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 482 of file fe_hierarchic_vec.C.

486{
487 Real value = FE<1,HIERARCHIC>::shape_deriv(elem, order, i, j, p, add_p_level);
489}

◆ shape_deriv() [50/233]

RealGradient libMesh::FE< 1, L2_HIERARCHIC_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 510 of file fe_hierarchic_vec.C.

514{
515 return FE<1,HIERARCHIC_VEC>::shape_deriv(elem, order, i, j, p, add_p_level);
516}

◆ shape_deriv() [51/233]

RealGradient libMesh::FE< 2, HIERARCHIC_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 552 of file fe_hierarchic_vec.C.

556{
557 const Real value = FE<2,HIERARCHIC>::shape_deriv(elem, order, i/2, j, p, add_p_level);
558
559 switch( i%2 )
560 {
561 case 0:
563
564 case 1:
565 return libMesh::RealGradient( Real(0), value );
566
567 default:
568 libmesh_error_msg("i%2 must be either 0 or 1!");
569 }
570
571 //dummy
572 return libMesh::RealGradient();
573}

◆ shape_deriv() [52/233]

RealGradient libMesh::FE< 2, L2_HIERARCHIC_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 607 of file fe_hierarchic_vec.C.

611{
612 return FE<2,HIERARCHIC_VEC>::shape_deriv(elem, order, i, j, p, add_p_level);
613}

◆ shape_deriv() [53/233]

RealGradient libMesh::FE< 3, HIERARCHIC_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 653 of file fe_hierarchic_vec.C.

657{
658 const Real value = FE<3,HIERARCHIC>::shape_deriv(elem, order, i/3, j, p, add_p_level);
659
660 switch( i%3 )
661 {
662 case 0:
664
665 case 1:
666 return libMesh::RealGradient( Real(0), value );
667
668 case 2:
669 return libMesh::RealGradient( Real(0), Real(0), value );
670
671 default:
672 libmesh_error_msg("i%3 must be 0, 1, or 2!");
673 }
674
675 //dummy
676 return libMesh::RealGradient();
677}

◆ shape_deriv() [54/233]

RealGradient libMesh::FE< 3, L2_HIERARCHIC_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 716 of file fe_hierarchic_vec.C.

720{
721 return FE<3,HIERARCHIC_VEC>::shape_deriv(elem, order, i, j, p, add_p_level);
722}

◆ shape_deriv() [55/233]

Real libMesh::FE< 1, LAGRANGE >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 127 of file fe_lagrange_shape_1D.C.

133{
134 libmesh_assert(elem);
135
136 return fe_lagrange_1D_shape_deriv(order + add_p_level*elem->p_level(), i, j, p(0));
137}
Real fe_lagrange_1D_shape_deriv(const Order order, const unsigned int i, const unsigned int j, const Real xi)

◆ shape_deriv() [56/233]

Real libMesh::FE< 1, L2_LAGRANGE >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 142 of file fe_lagrange_shape_1D.C.

148{
149 libmesh_assert(elem);
150
151 return fe_lagrange_1D_shape_deriv(order + add_p_level*elem->p_level(), i, j, p(0));
152}

◆ shape_deriv() [57/233]

Real libMesh::FE< 2, LAGRANGE >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 172 of file fe_lagrange_shape_2D.C.

178{
179 libmesh_assert(elem);
180
181 // call the orientation-independent shape functions
182 return fe_lagrange_2D_shape_deriv<LAGRANGE>(elem->type(), elem, order + add_p_level*elem->p_level(), i, j, p);
183}

◆ shape_deriv() [58/233]

Real libMesh::FE< 2, L2_LAGRANGE >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 188 of file fe_lagrange_shape_2D.C.

194{
195 libmesh_assert(elem);
196
197 // call the orientation-independent shape functions
198 return fe_lagrange_2D_shape_deriv<L2_LAGRANGE>(elem->type(), elem, order + add_p_level*elem->p_level(), i, j, p);
199}

◆ shape_deriv() [59/233]

Real libMesh::FE< 3, LAGRANGE >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 519 of file fe_lagrange_shape_3D.C.

525{
526 libmesh_assert(elem);
527
528 // call the orientation-independent shape function derivatives
529 return fe_lagrange_3D_shape_deriv<LAGRANGE>(elem->type(), order + add_p_level*elem->p_level(), elem, i, j, p);
530}

◆ shape_deriv() [60/233]

Real libMesh::FE< 3, L2_LAGRANGE >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 534 of file fe_lagrange_shape_3D.C.

540{
541 libmesh_assert(elem);
542
543 // call the orientation-independent shape function derivatives
544 return fe_lagrange_3D_shape_deriv<L2_LAGRANGE>(elem->type(), order + add_p_level*elem->p_level(), elem, i, j, p);
545}

◆ shape_deriv() [61/233]

RealGradient libMesh::FE< 0, LAGRANGE_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 965 of file fe_lagrange_vec.C.

969{
970 Real value = FE<0,LAGRANGE>::shape_deriv( elem->type(), order + add_p_level*elem->p_level(), i, j, p);
972}

◆ shape_deriv() [62/233]

RealGradient libMesh::FE< 0, L2_LAGRANGE_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 993 of file fe_lagrange_vec.C.

997{
998 return FE<0,LAGRANGE_VEC>::shape_deriv(elem, order, i, j, p, add_p_level);
999}

◆ shape_deriv() [63/233]

RealGradient libMesh::FE< 1, LAGRANGE_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1021 of file fe_lagrange_vec.C.

1025{
1026 Real value = FE<1,LAGRANGE>::shape_deriv( elem->type(), order + add_p_level*elem->p_level(), i, j, p);
1027 return libMesh::RealGradient( value );
1028}

◆ shape_deriv() [64/233]

RealGradient libMesh::FE< 1, L2_LAGRANGE_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1048 of file fe_lagrange_vec.C.

1052{
1053 return FE<1,LAGRANGE_VEC>::shape_deriv(elem, order, i, j, p, add_p_level);
1054}

◆ shape_deriv() [65/233]

RealGradient libMesh::FE< 2, LAGRANGE_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1090 of file fe_lagrange_vec.C.

1094{
1095 Real value = FE<2,LAGRANGE>::shape_deriv( elem->type(), order + add_p_level*elem->p_level(), i/2, j, p );
1096
1097 switch( i%2 )
1098 {
1099 case 0:
1100 return libMesh::RealGradient( value );
1101
1102 case 1:
1103 return libMesh::RealGradient( Real(0), value );
1104
1105 default:
1106 libmesh_error_msg("i%2 must be either 0 or 1!");
1107 }
1108
1109 //dummy
1110 return libMesh::RealGradient();
1111}

◆ shape_deriv() [66/233]

RealGradient libMesh::FE< 2, L2_LAGRANGE_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1145 of file fe_lagrange_vec.C.

1149{
1150 return FE<2,LAGRANGE_VEC>::shape_deriv(elem, order, i, j, p, add_p_level);
1151}

◆ shape_deriv() [67/233]

RealGradient libMesh::FE< 3, LAGRANGE_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1190 of file fe_lagrange_vec.C.

1194{
1195 Real value = FE<3,LAGRANGE>::shape_deriv( elem->type(), order + add_p_level*elem->p_level(), i/3, j, p );
1196
1197 switch( i%3 )
1198 {
1199 case 0:
1200 return libMesh::RealGradient( value );
1201
1202 case 1:
1203 return libMesh::RealGradient( Real(0), value );
1204
1205 case 2:
1206 return libMesh::RealGradient( Real(0), Real(0), value );
1207
1208 default:
1209 libmesh_error_msg("i%3 must be 0, 1, or 2!");
1210 }
1211
1212 //dummy
1213 return libMesh::RealGradient();
1214}

◆ shape_deriv() [68/233]

RealGradient libMesh::FE< 3, L2_LAGRANGE_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1252 of file fe_lagrange_vec.C.

1256{
1257 return FE<3,LAGRANGE_VEC>::shape_deriv(elem, order, i, j, p, add_p_level);
1258}

◆ shape_deriv() [69/233]

Real libMesh::FE< 1, MONOMIAL >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 140 of file fe_monomial_shape_1D.C.

146{
147 libmesh_assert(elem);
148
149 return FE<1,MONOMIAL>::shape_deriv(elem->type(),
150 order + add_p_level*elem->p_level(), i, j, p);
151}

◆ shape_deriv() [70/233]

Real libMesh::FE< 2, MONOMIAL >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 324 of file fe_monomial_shape_2D.C.

330{
331 libmesh_assert(elem);
332
333 // by default call the orientation-independent shape functions
334 return FE<2,MONOMIAL>::shape_deriv(elem->type(), order + add_p_level*elem->p_level(), i, j, p);
335}

◆ shape_deriv() [71/233]

Real libMesh::FE< 3, MONOMIAL >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 659 of file fe_monomial_shape_3D.C.

665{
666 libmesh_assert(elem);
667
668 // call the orientation-independent shape function derivatives
669 return FE<3,MONOMIAL>::shape_deriv(elem->type(), order + add_p_level*elem->p_level(), i, j, p);
670}

◆ shape_deriv() [72/233]

RealVectorValue libMesh::FE< 0, MONOMIAL_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 405 of file fe_monomial_vec.C.

411{
412 Real value = FE<0, MONOMIAL>::shape_deriv(
413 elem->type(), order + add_p_level*elem->p_level(), i, j, p);
415}

◆ shape_deriv() [73/233]

RealVectorValue libMesh::FE< 1, MONOMIAL_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 450 of file fe_monomial_vec.C.

456{
457 Real value = FE<1, MONOMIAL>::shape_deriv(
458 elem->type(), order + add_p_level*elem->p_level(), i, j, p);
460}

◆ shape_deriv() [74/233]

RealVectorValue libMesh::FE< 2, MONOMIAL_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 508 of file fe_monomial_vec.C.

514{
515 Real value = FE<2, MONOMIAL>::shape_deriv(
516 elem->type(), order + add_p_level*elem->p_level(), i / 2, j, p);
517
518 switch (i % 2)
519 {
520 case 0:
522
523 case 1:
525
526 default:
527 libmesh_error_msg("i%2 must be either 0 or 1!");
528 }
529
530 // dummy
532}

◆ shape_deriv() [75/233]

RealVectorValue libMesh::FE< 3, MONOMIAL_VEC >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 597 of file fe_monomial_vec.C.

603{
604 Real value = FE<3, MONOMIAL>::shape_deriv(
605 elem->type(), order + add_p_level*elem->p_level(), i / 3, j, p);
606
607 switch (i % 3)
608 {
609 case 0:
611
612 case 1:
614
615 case 2:
616 return libMesh::RealVectorValue(Real(0), Real(0), value);
617
618 default:
619 libmesh_error_msg("i%3 must be 0, 1, or 2!");
620 }
621
622 // dummy
624}

◆ shape_deriv() [76/233]

RealGradient libMesh::FE< 2, NEDELEC_ONE >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 706 of file fe_nedelec_one_shape_2D.C.

712{
713#if LIBMESH_DIM > 1
714 libmesh_assert(elem);
715 libmesh_assert_less (j, 2);
716
717 const Order totalorder = order + add_p_level*elem->p_level();
718 libmesh_assert_less(i, n_dofs(elem->type(), totalorder));
719
720 const char sign = i >= totalorder * elem->n_edges() || elem->positive_edge_orientation(i / totalorder) ? 1 : -1;
721 const unsigned int ii = sign > 0 ? i : (i / totalorder * 2 + 1) * totalorder - 1 - i;
722
723 const Real xi = p(0);
724 const Real eta = p(1);
725
726 switch (totalorder)
727 {
728 // linear Nedelec (first kind) shape function first derivatives
729 case FIRST:
730 {
731 switch (elem->type())
732 {
733 case QUAD8:
734 case QUAD9:
735 {
736 switch (j)
737 {
738 // d()/dxi
739 case 0:
740 {
741 switch(ii)
742 {
743 case 0:
744 case 2:
745 return RealGradient();
746 case 1:
747 case 3:
748 return sign * RealGradient( 0.0, -0.25 );
749
750 default:
751 libmesh_error_msg("Invalid i = " << i);
752 }
753 } // j = 0
754
755 // d()/deta
756 case 1:
757 {
758 switch(ii)
759 {
760 case 1:
761 case 3:
762 return RealGradient();
763 case 0:
764 case 2:
765 return sign * RealGradient( 0.25 );
766
767 default:
768 libmesh_error_msg("Invalid i = " << i);
769 }
770 } // j = 1
771
772 default:
773 libmesh_error_msg("Invalid j = " << j);
774 }
775 }
776
777 case TRI6:
778 case TRI7:
779 {
780 switch (j)
781 {
782 // d()/dxi
783 case 0:
784 return sign * RealGradient( 0.0, -1.0 );
785
786 // d()/deta
787 case 1:
788 return sign * RealGradient( 1.0 );
789
790 default:
791 libmesh_error_msg("Invalid j = " << j);
792 }
793 }
794
795 default:
796 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
797 }
798 }
799
800 // quadratic Nedelec (first kind) shape function first derivatives
801 case SECOND:
802 {
803 switch (elem->type())
804 {
805 case QUAD8:
806 case QUAD9:
807 {
808 // Even with a loose inverse_map tolerance we ought to
809 // be nearly on the element interior in master
810 // coordinates
811 libmesh_assert_less_equal ( std::fabs(xi), 1.0+10*TOLERANCE );
812 libmesh_assert_less_equal ( std::fabs(eta), 1.0+10*TOLERANCE );
813
814 const Real x = 0.5 * (xi + 1.0);
815 const Real y = 0.5 * (eta + 1.0);
816
817 switch (j)
818 {
819 // d()/dxi
820 case 0:
821 {
822 switch(ii)
823 {
824 case 0:
825 return sign * RealGradient( 0.25*(-18.0*y*y+24.0*y-6.0), 0.0 );
826 case 1:
827 return sign * RealGradient( 0.25*( 18.0*y*y-24.0*y+6.0), 0.0 );
828 case 2:
829 return sign * RealGradient( 0.0, 0.25*(-36.0*x*y+24.0*x+12.0*y-8.0) );
830 case 3:
831 return sign * RealGradient( 0.0, 0.25*( 36.0*x*y-12.0*x-12.0*y+4.0) );
832 case 4:
833 return sign * RealGradient( 0.25*(-18.0*y*y+12.0*y), 0.0 );
834 case 5:
835 return sign * RealGradient( 0.25*( 18.0*y*y-12.0*y), 0.0 );
836 case 6:
837 return sign * RealGradient( 0.0, 0.25*(-36.0*x*y+12.0*x+24.0*y-8.0) );
838 case 7:
839 return sign * RealGradient( 0.0, 0.25*( 36.0*x*y-24.0*x-24.0*y+16.0) );
840 case 8:
841 return RealGradient( 0.0, 1.5*(6.0*x*y-4.0*x-3.0*y+2.0) );
842 case 9:
843 return RealGradient( 1.5*y*(-3.0*y+3.0), 0.0 );
844 case 10:
845 return RealGradient( 1.5*y*(3.0*y-3.0), 0.0 );
846 case 11:
847 return RealGradient( 0.0, 1.5*(-6.0*x*y+2.0*x+3.0*y-1.0) );
848
849 default:
850 libmesh_error_msg("Invalid i = " << i);
851 }
852 } // j = 0
853
854 // d()/deta
855 case 1:
856 {
857 switch(ii)
858 {
859 case 0:
860 return sign * RealGradient( 0.25*(-36.0*x*y+24.0*x+24.0*y-16.0), 0.0 );
861 case 1:
862 return sign * RealGradient( 0.25*( 36.0*x*y-24.0*x-12.0*y+8.0), 0.0 );
863 case 2:
864 return sign * RealGradient( 0.0, 0.25*x*(-18.0*x+12.0) );
865 case 3:
866 return sign * RealGradient( 0.0, 0.25*x*( 18.0*x-12.0) );
867 case 4:
868 return sign * RealGradient( 0.25*(-36.0*x*y+12.0*x+12.0*y-4.0), 0.0 );
869 case 5:
870 return sign * RealGradient( 0.25*( 36.0*x*y-12.0*x-24.0*y+8.0), 0.0 );
871 case 6:
872 return sign * RealGradient( 0.0, 0.25*(-18.0*x*x+24.0*x-6.0) );
873 case 7:
874 return sign * RealGradient( 0.0, 0.25*( 18.0*x*x-24.0*x+6.0) );
875 case 8:
876 return RealGradient( 0.0, 1.5*x*(3.0*x-3.0) );
877 case 9:
878 return RealGradient( 1.5*(-6.0*x*y+3.0*x+4.0*y-2.0), 0.0 );
879 case 10:
880 return RealGradient( 1.5*(6.0*x*y-3.0*x-2.0*y+1.0), 0.0 );
881 case 11:
882 return RealGradient( 0.0, 1.5*x*(-3.0*x+3.0) );
883
884 default:
885 libmesh_error_msg("Invalid i = " << i);
886 }
887 } // j = 1
888
889 default:
890 libmesh_error_msg("Invalid j = " << j);
891 }
892 }
893
894 case TRI6:
895 case TRI7:
896 {
897 switch (j)
898 {
899 // d()/dxi
900 case 0:
901 {
902 switch(ii)
903 {
904 case 0:
905 return sign * RealGradient( 8.0*eta-6.0, -16.0*xi-8.0*eta+6.0 );
906 case 1:
907 return sign * RealGradient( -8.0*eta+6.0, 16.0*xi-4.0 );
908 case 2:
909 return sign * RealGradient( -8.0*eta, 16.0*xi-4.0 );
910 case 3:
911 return sign * RealGradient( 0.0, 8.0*eta-2.0 );
912 case 4:
913 return sign * RealGradient( 0.0, 8.0*eta-2.0 );
914 case 5:
915 return sign * RealGradient( 8.0*eta, -16.0*xi-8.0*eta+12.0 );
916 case 6:
917 return RealGradient( -8.0*eta, 16.0*xi+16.0*eta-8.0 );
918 case 7:
919 return RealGradient( 16.0*eta, -32.0*xi-8.0*eta+16.0 );
920
921 default:
922 libmesh_error_msg("Invalid i = " << i);
923 }
924 } // j = 0
925
926 // d()/deta
927 case 1:
928 {
929 switch(ii)
930 {
931 case 0:
932 return sign * RealGradient( 8.0*xi+16.0*eta-12.0, -8.0*xi );
933 case 1:
934 return sign * RealGradient( -8.0*xi+2.0, 0.0 );
935 case 2:
936 return sign * RealGradient( 2.0-8.0*xi, 0.0 );
937 case 3:
938 return sign * RealGradient( 4.0-16.0*eta, 8.0*xi );
939 case 4:
940 return sign * RealGradient( 4.0-16.0*eta,8.0*xi-6.0 );
941 case 5:
942 return sign * RealGradient( 8.0*xi+16*eta-6.0,-8.0*xi+6.0 );
943 case 6:
944 return RealGradient( -8.0*xi-32.0*eta+16.0, 16.0*xi );
945 case 7:
946 return RealGradient( 16.0*xi+16.0*eta-8.0,-8.0*xi );
947
948 default:
949 libmesh_error_msg("Invalid i = " << i);
950 }
951 } // j = 1
952
953 default:
954 libmesh_error_msg("Invalid j = " << j);
955 }
956 }
957
958 default:
959 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
960 }
961 }
962
963 // cubic Nedelec (first kind) shape function first derivatives
964 case THIRD:
965 {
966 switch (elem->type())
967 {
968 case QUAD8:
969 case QUAD9:
970 {
971 switch (j)
972 {
973 // d()/dxi
974 case 0:
975 {
976 switch(ii)
977 {
978 case 0:
979 return sign * RealGradient(81.*eta/2. + 15.*xi/2. - 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 39. - 162.*(eta + 1.)*(eta + 1.)/(2.*2.) + 90.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
980 case 1:
981 return sign * RealGradient(-135.*eta/8. - 15.*xi/4. + 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 135.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 75.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 135./8. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 75.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2., 0.);
982 case 2:
983 return sign * RealGradient(27.*eta + 15.*xi/2. - 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 57./2. - 108.*(eta + 1.)*(eta + 1.)/(2.*2.) + 60.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
984 case 3:
985 return sign * RealGradient(0., -27.*eta/2. - 27.*xi + 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 135./4. + 45.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 135.*((xi + 1.)*(xi + 1.)/(2.*2.))/2.);
986 case 4:
987 return sign * RealGradient(0., 45.*eta/8. + 9.*xi/2. - 90.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. + 90.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 9. - 45.*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. - 45.*(xi + 1.)*(xi + 1.)/(2.*2.)/4.);
988 case 5:
989 return sign * RealGradient(0., -9.*eta - 9.*xi + 144.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 63./4. + 45.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 45.*((xi + 1.)*(xi + 1.)/(2.*2.))/2.);
990 case 6:
991 return sign * RealGradient(9.*eta - 45.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 9. - 72.*(eta + 1.)*(eta + 1.)/(2.*2.) + 60.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
992 case 7:
993 return sign * RealGradient(-45.*eta/8. + 45.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 90.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 75.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 45./8. + 45.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 75.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2., 0.);
994 case 8:
995 return sign * RealGradient(27.*eta/2. - 45.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 27./2. - 108.*(eta + 1.)*(eta + 1.)/(2.*2.) + 90.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
996 case 9:
997 return sign * RealGradient(0., -27.*eta - 27.*xi/2. + 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 270.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 135./4. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 45.*((xi + 1.)*(xi + 1.)/(2.*2.))/2.);
998 case 10:
999 return sign * RealGradient(0., 135.*eta/8. + 27.*xi/4. - 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. + 135.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 81./4. - 135.*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. - 45.*(xi + 1.)*(xi + 1.)/(2.*2.)/4.);
1000 case 11:
1001 return sign * RealGradient(0., -81.*eta/2. - 81.*xi/2. + 324.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 270.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 243./4. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 135.*((xi + 1.)*(xi + 1.)/(2.*2.))/2.);
1002 case 12:
1003 return RealGradient(0., -36.*eta - 81.*xi/2. + 324.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 270.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 117./2. + 60.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 135.*((xi + 1.)*(xi + 1.)/(2.*2.))/2.);
1004 case 13:
1005 return RealGradient(0., 9.*eta + 27.*xi - 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 63./2. - 15.*(eta + 1.)*(eta + 1.)/(2.*2.) - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 135.*(xi + 1.)*(xi + 1.)/(2.*2.)/2.);
1006 case 14:
1007 return RealGradient(36.*eta - 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 36. - 162.*(eta + 1.)*(eta + 1.)/(2.*2.) + 90.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
1008 case 15:
1009 return RealGradient(-9.*eta + 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 150.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 9. + 108.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 90.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
1010 case 16:
1011 return RealGradient(24.*eta - 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 24. - 108.*(eta + 1.)*(eta + 1.)/(2.*2.) + 60.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
1012 case 17:
1013 return RealGradient(-6.*eta + 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 150.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 6. + 72.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 60.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
1014 case 18:
1015 return RealGradient(0., -24.*eta - 27.*xi/2. + 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 270.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 63./2. + 60.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 45.*((xi + 1.)*(xi + 1.)/(2.*2.))/2.);
1016 case 19:
1017 return RealGradient(0., 6.*eta + 9.*xi - 144.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 27./2. - 15.*(eta + 1.)*(eta + 1.)/(2.*2.) - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 45.*(xi + 1.)*(xi + 1.)/(2.*2.)/2.);
1018 case 20:
1019 return RealGradient(0., 0.);
1020 case 21:
1021 return RealGradient(0., -9.*xi/2. - 5./2. + 15.*((xi + 1.)*(xi + 1.)/(2.*2.))/2.);
1022 case 22:
1023 return RealGradient(0., 3.*xi + 5./2. - 15.*(xi + 1.)*(xi + 1.)/(2.*2.)/2.);
1024 case 23:
1025 return RealGradient(0., 0.);
1026 default:
1027 libmesh_error_msg("Invalid i = " << i);
1028 }
1029 } // j = 0
1030
1031 // d()/deta
1032 case 1:
1033 {
1034 switch(ii)
1035 {
1036 case 0:
1037 return sign * RealGradient(81.*eta/2. + 81.*xi/2. - 324.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 243./4. - 135.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 135.*(xi + 1.)*(xi + 1.)/(2.*2.)/2., 0.);
1038 case 1:
1039 return sign * RealGradient(-27.*eta/4. - 135.*xi/8. + 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 135.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 81./4. + 45.*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. + 135.*((xi + 1.)*(xi + 1.)/(2.*2.))/4., 0.);
1040 case 2:
1041 return sign * RealGradient(27.*eta/2. + 27.*xi - 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 135./4. - 45.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 135.*(xi + 1.)*(xi + 1.)/(2.*2.)/2., 0.);
1042 case 3:
1043 return sign * RealGradient(0., -27.*xi/2. + 45.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 27./2. + 108.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 90.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1044 case 4:
1045 return sign * RealGradient(0., 45.*xi/8. - 45.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 90.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 75.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 45./8. - 45.*(xi + 1.)*(xi + 1.)/(2.*2.) + 75.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2.);
1046 case 5:
1047 return sign * RealGradient(0., -9.*xi + 45.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 9. + 72.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 60.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1048 case 6:
1049 return sign * RealGradient(9.*eta + 9.*xi - 144.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 63./4. - 45.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 45.*(xi + 1.)*(xi + 1.)/(2.*2.)/2., 0.);
1050 case 7:
1051 return sign * RealGradient(-9.*eta/2. - 45.*xi/8. + 90.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 90.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 9. + 45.*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. + 45.*((xi + 1.)*(xi + 1.)/(2.*2.))/4., 0.);
1052 case 8:
1053 return sign * RealGradient(27.*eta + 27.*xi/2. - 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 135./4. - 135.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 45.*(xi + 1.)*(xi + 1.)/(2.*2.)/2., 0.);
1054 case 9:
1055 return sign * RealGradient(0., -15.*eta/2. - 27.*xi + 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 57./2. + 108.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 60.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1056 case 10:
1057 return sign * RealGradient(0., 15.*eta/4. + 135.*xi/8. - 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 135.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 75.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 135./8. - 135.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 75.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2.);
1058 case 11:
1059 return sign * RealGradient(0., -15.*eta/2. - 81.*xi/2. + 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 39. + 162.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 90.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1060 case 12:
1061 return RealGradient(0., -36.*xi + 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 36. + 162.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 90.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1062 case 13:
1063 return RealGradient(0., 9.*xi - 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 9. - 108.*(xi + 1.)*(xi + 1.)/(2.*2.) + 90.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1064 case 14:
1065 return RealGradient(81.*eta/2. + 36.*xi - 324.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 117./2. - 135.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 60.*(xi + 1.)*(xi + 1.)/(2.*2.), 0.);
1066 case 15:
1067 return RealGradient(-27.*eta - 9.*xi + 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 270.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 63./2. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 15.*((xi + 1.)*(xi + 1.)/(2.*2.)), 0.);
1068 case 16:
1069 return RealGradient(27.*eta/2. + 24.*xi - 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 63./2. - 45.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 60.*(xi + 1.)*(xi + 1.)/(2.*2.), 0.);
1070 case 17:
1071 return RealGradient(-9.*eta - 6.*xi + 144.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 27./2. + 45.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 15.*((xi + 1.)*(xi + 1.)/(2.*2.)), 0.);
1072 case 18:
1073 return RealGradient(0., -24.*xi + 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 24. + 108.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 60.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1074 case 19:
1075 return RealGradient(0., 6.*xi - 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 6. - 72.*(xi + 1.)*(xi + 1.)/(2.*2.) + 60.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1076 case 20:
1077 return RealGradient(-9.*eta/2. - 5./2. + 15.*((eta + 1.)*(eta + 1.)/(2.*2.))/2., 0.);
1078 case 21:
1079 return RealGradient(0., 0.);
1080 case 22:
1081 return RealGradient(0., 0.);
1082 case 23:
1083 return RealGradient(3.*eta + 5./2. - 15.*(eta + 1.)*(eta + 1.)/(2.*2.)/2., 0.);
1084 default:
1085 libmesh_error_msg("Invalid i = " << i);
1086 }
1087 } // j = 1
1088
1089 default:
1090 libmesh_error_msg("Invalid j = " << j);
1091 }
1092 }
1093
1094 case TRI6:
1095 case TRI7:
1096 {
1097 switch (j)
1098 {
1099 // d()/dxi
1100 case 0:
1101 {
1102 switch(ii)
1103 {
1104 case 0:
1105 return sign * RealGradient(-90.*eta*xi + 120.*eta + 60.*xi - 36. - 90.*eta*eta, 180.*eta*xi - 60.*eta - 120.*xi + 18. + 45.*(eta*eta) + 135.*(xi*xi));
1106 case 1:
1107 return sign * RealGradient(45.*eta*xi - 75.*eta/2. - 30.*xi + 15. + 45.*(eta*eta)/2., -45.*eta*xi + 105.*xi/2. - 21./4. + 45.*(eta*eta)/4. - 135.*xi*xi/2.);
1108 case 2:
1109 return sign * RealGradient(-90.*eta*xi + 30.*eta + 60.*xi - 24., -90.*xi + 9. + 135.*(xi*xi));
1110 case 3:
1111 return sign * RealGradient(-90.*eta*xi + 30.*eta, -90.*xi + 9. + 135.*(xi*xi));
1112 case 4:
1113 return sign * RealGradient(-45.*eta*xi/2. + 45.*eta/2. - 45.*eta*eta, 90.*eta*xi - 45.*eta/2. - 75.*xi/2. + 6. + 45.*(eta*eta)/4. + 135.*(xi*xi)/4.);
1114 case 5:
1115 return sign * RealGradient(0., -30.*eta + 3. + 45.*(eta*eta));
1116 case 6:
1117 return sign * RealGradient(0., -30.*eta + 3. + 45.*(eta*eta));
1118 case 7:
1119 return sign * RealGradient(-45.*eta*xi/2. + 45.*(eta*eta)/2., -45.*eta*xi + 75.*eta/2. - 30.*xi + 9./4. - 45.*eta*eta/2. + 135.*(xi*xi)/4.);
1120 case 8:
1121 return sign * RealGradient(-90.*eta*xi + 60.*eta - 90.*eta*eta, 180.*eta*xi - 120.*eta - 180.*xi + 54. + 45.*(eta*eta) + 135.*(xi*xi));
1122 case 9:
1123 return RealGradient(180.*eta*xi - 300.*eta + 360.*(eta*eta), -720.*eta*xi + 300.*eta + 300.*xi - 60. - 270.*eta*eta - 270.*xi*xi);
1124 case 10:
1125 return RealGradient(-540.*eta*xi + 300.*eta - 360.*eta*eta, 720.*eta*xi - 300.*eta - 900.*xi + 180. + 90.*(eta*eta) + 810.*(xi*xi));
1126 case 11:
1127 return RealGradient(-360.*eta*xi + 360.*eta - 360.*eta*eta, 720.*eta*xi - 120.*eta - 480.*xi + 60. + 540.*(xi*xi));
1128 case 12:
1129 return RealGradient(540.*eta*xi - 240.*eta + 180.*(eta*eta), -360.*eta*xi + 60.*eta + 720.*xi - 90. - 810.*xi*xi);
1130 case 13:
1131 return RealGradient(60.*eta - 180.*eta*eta, 360.*eta*xi - 240.*eta - 60.*xi + 30. + 270.*(eta*eta));
1132 case 14:
1133 return RealGradient(-120.*eta + 360.*(eta*eta), -720.*eta*xi + 360.*eta + 120.*xi - 60. - 180.*eta*eta);
1134 default:
1135 libmesh_error_msg("Invalid i = " << i);
1136 }
1137 } // j = 0
1138
1139 // d()/deta
1140 case 1:
1141 {
1142 switch(ii)
1143 {
1144 case 0:
1145 return sign * RealGradient(-180.*eta*xi + 180.*eta + 120.*xi - 54. - 135.*eta*eta - 45.*xi*xi, 90.*eta*xi - 60.*xi + 90.*(xi*xi));
1146 case 1:
1147 return sign * RealGradient(45.*eta*xi + 30.*eta - 75.*xi/2. - 9./4. - 135.*eta*eta/4. + 45.*(xi*xi)/2., 45.*eta*xi/2. - 45.*xi*xi/2.);
1148 case 2:
1149 return sign * RealGradient(30.*xi - 3. - 45.*xi*xi, 0.);
1150 case 3:
1151 return sign * RealGradient(30.*xi - 3. - 45.*xi*xi, 0.);
1152 case 4:
1153 return sign * RealGradient(-90.*eta*xi + 75.*eta/2. + 45.*xi/2. - 6. - 135.*eta*eta/4. - 45.*xi*xi/4., 45.*eta*xi/2. - 45.*xi/2. + 45.*(xi*xi));
1154 case 5:
1155 return sign * RealGradient(90.*eta - 9. - 135.*eta*eta, 90.*eta*xi - 30.*xi);
1156 case 6:
1157 return sign * RealGradient(90.*eta - 9. - 135.*eta*eta, 90.*eta*xi - 60.*eta - 30.*xi + 24.);
1158 case 7:
1159 return sign * RealGradient(45.*eta*xi - 105.*eta/2. + 21./4. + 135.*(eta*eta)/2. - 45.*xi*xi/4., -45.*eta*xi + 30.*eta + 75.*xi/2. - 15. - 45.*xi*xi/2.);
1160 case 8:
1161 return sign * RealGradient(-180.*eta*xi + 120.*eta + 60.*xi - 18. - 135.*eta*eta - 45.*xi*xi, 90.*eta*xi - 60.*eta - 120.*xi + 36. + 90.*(xi*xi));
1162 case 9:
1163 return RealGradient(720.*eta*xi - 900.*eta - 300.*xi + 180. + 810.*(eta*eta) + 90.*(xi*xi), -540.*eta*xi + 300.*xi - 360.*xi*xi);
1164 case 10:
1165 return RealGradient(-720.*eta*xi + 300.*eta + 300.*xi - 60. - 270.*eta*eta - 270.*xi*xi, 180.*eta*xi - 300.*xi + 360.*(xi*xi));
1166 case 11:
1167 return RealGradient(-720.*eta*xi + 120.*eta + 360.*xi - 60. - 180.*xi*xi, -120.*xi + 360.*(xi*xi));
1168 case 12:
1169 return RealGradient(360.*eta*xi - 60.*eta - 240.*xi + 30. + 270.*(xi*xi), 60.*xi - 180.*xi*xi);
1170 case 13:
1171 return RealGradient(-360.*eta*xi + 720.*eta + 60.*xi - 90. - 810.*eta*eta, 540.*eta*xi - 240.*xi + 180.*(xi*xi));
1172 case 14:
1173 return RealGradient(720.*eta*xi - 480.*eta - 120.*xi + 60. + 540.*(eta*eta), -360.*eta*xi + 360.*xi - 360.*xi*xi);
1174 default:
1175 libmesh_error_msg("Invalid i = " << i);
1176 }
1177 } // j = 1
1178
1179 default:
1180 libmesh_error_msg("Invalid j = " << j);
1181 }
1182 }
1183
1184 default:
1185 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
1186 } // end switch (type)
1187 } // end case THIRD
1188
1189 // quartic Nedelec (first kind) shape function first derivatives
1190 case FOURTH:
1191 {
1192 switch (elem->type())
1193 {
1194 case QUAD8:
1195 case QUAD9:
1196 {
1197 switch (j)
1198 {
1199 // d()/dxi
1200 case 0:
1201 {
1202 switch(ii)
1203 {
1204 case 0:
1205 return sign * RealGradient(240.*eta + 60.*xi - 1920.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 1680.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 7200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 9600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 270. - 1800.*(eta + 1.)*(eta + 1.)/(2.*2.) - 6300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 105.*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3675.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 2400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1050.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
1206 case 1:
1207 return sign * RealGradient(-760.*eta/9. - 215.*xi/9. + 6880.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. - 6160.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/9. - 8600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/3. + 34400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 15050.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/9. - 880./9. + 1900.*((eta + 1.)*(eta + 1.)/(2.*2.))/3. + 7700.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. + 385.*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 30800.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 13475.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/9. - 7600.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 3325.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/9., 0.);
1208 case 2:
1209 return sign * RealGradient(400.*eta/9. + 170.*xi/9. - 5440.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. + 6160.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/9. + 6800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/3. - 27200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 11900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/9. + 520./9. - 1000.*(eta + 1.)*(eta + 1.)/(2.*2.)/3. - 7700.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. - 385.*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 30800.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 13475.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/9. + 4000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 1750.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/9., 0.);
1210 case 3:
1211 return sign * RealGradient(-120.*eta - 45.*xi + 1440.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1680.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 5400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 7200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 150. + 900.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 6300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 105.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3675.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1200.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
1212 case 4:
1213 return sign * RealGradient(0., 60.*eta + 120.*xi - 1800.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 5400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3600.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2100.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 164. - 240.*(eta + 1.)*(eta + 1.)/(2.*2.) - 10800.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 720.*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 140.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 560.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1214 case 5:
1215 return sign * RealGradient(0., -190.*eta/9. - 170.*xi/9. + 1900.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. - 1900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 13300.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 4300.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/3. + 7700.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 1012./27. + 860.*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 4300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 30100.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 340.*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 7700.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/3. - 1540.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/27. + 53900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27. - 2380.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27.);
1216 case 6:
1217 return sign * RealGradient(0., 100.*eta/9. + 80.*xi/9. - 1000.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. + 1000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 3400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/3. - 7700.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 508./27. - 680.*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 3400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 23800.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 160.*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 7700.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/3. + 1540.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/27. - 53900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27. + 1120.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27.);
1218 case 7:
1219 return sign * RealGradient(0., -30.*eta - 30.*xi + 900.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 2700.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2700.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 2100.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 56. + 180.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 8100.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 180.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 140.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 140.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1220 case 8:
1221 return sign * RealGradient(30.*eta - 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 420.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 2700.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 5400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3150.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 30. - 450.*(eta + 1.)*(eta + 1.)/(2.*2.) - 3150.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3675.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 525.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
1222 case 9:
1223 return sign * RealGradient(-100.*eta/9. + 1360.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. - 1540.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/9. - 3400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/3. + 6800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/3. - 11900.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/9. - 100./9. + 500.*((eta + 1.)*(eta + 1.)/(2.*2.))/3. + 3850.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 7700.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/3. + 13475.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/9. - 1000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/3. + 1750.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/9., 0.);
1224 case 10:
1225 return sign * RealGradient(190.*eta/9. - 1720.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. + 1540.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/9. + 4300.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/3. - 8600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/3. + 15050.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/9. + 190./9. - 950.*(eta + 1.)*(eta + 1.)/(2.*2.)/3. - 3850.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 7700.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/3. - 13475.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/9. + 1900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/3. - 3325.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/9., 0.);
1226 case 11:
1227 return sign * RealGradient(-60.*eta + 480.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 420.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 3600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 7200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 60. + 900.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 3150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3675.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1800.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 1050.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
1228 case 12:
1229 return sign * RealGradient(0., 120.*eta + 60.*xi - 1800.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2100.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 5400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 4200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 164. - 720.*(eta + 1.)*(eta + 1.)/(2.*2.) - 10800.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 240.*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 560.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 140.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1230 case 13:
1231 return sign * RealGradient(0., -400.*eta/9. - 160.*xi/9. + 2000.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. - 4000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 7000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 6800.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/3. + 15400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 1552./27. + 2720.*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 13600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 23800.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 640.*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 30800.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. - 6160.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/27. + 53900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27. - 1120.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27.);
1232 case 14:
1233 return sign * RealGradient(0., 760.*eta/9. + 340.*xi/9. - 3800.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. + 7600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 13300.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 8600.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/3. - 15400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 3028./27. - 3440.*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 17200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 30100.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 1360.*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 30800.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. + 6160.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/27. - 53900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27. + 2380.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27.);
1234 case 15:
1235 return sign * RealGradient(0., -240.*eta - 240.*xi + 3600.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 7200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 4200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 7200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 4200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 416. + 960.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 14400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 960.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 560.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 560.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1236 case 16:
1237 return RealGradient(0., -195.*eta - 232.*xi + 3480.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 7200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 4200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 6960.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 4060.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 375. + 780.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 14400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 960.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 455.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 560.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1238 case 17:
1239 return RealGradient(0., -45.*eta - 112.*xi + 1680.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 5400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 4200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3360.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 1960.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 145. + 180.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 10800.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 720.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 105.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 560.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1240 case 18:
1241 return RealGradient(0., -60.*eta - 16.*xi + 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 480.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 280.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 60. + 240.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 140.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.));
1242 case 19:
1243 return RealGradient(195.*eta - 1560.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 1365.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 6960.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 9600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 195. - 1740.*(eta + 1.)*(eta + 1.)/(2.*2.) - 6090.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3675.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 2400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1050.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
1244 case 20:
1245 return RealGradient(45.*eta - 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 315.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 3360.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 7200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 45. - 840.*(eta + 1.)*(eta + 1.)/(2.*2.) - 2940.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3675.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1800.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1050.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
1246 case 21:
1247 return RealGradient(60.*eta - 480.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 420.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 480.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 60. - 120.*(eta + 1.)*(eta + 1.)/(2.*2.) - 420.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.), 0.);
1248 case 22:
1249 return RealGradient(-195.*eta/2. + 1170.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1365.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 5220.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 7200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 195./2. + 870.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 6090.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3675.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1200.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
1250 case 23:
1251 return RealGradient(-45.*eta/2. + 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 315.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 2520.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 5400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 45./2. + 420.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 2940.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3675.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
1252 case 24:
1253 return RealGradient(-30.*eta + 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 420.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 360.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 30. + 60.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 420.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)), 0.);
1254 case 25:
1255 return RealGradient(0., 195.*eta/2. + 58.*xi - 1740.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2100.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 5220.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 4060.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 285./2. - 585.*(eta + 1.)*(eta + 1.)/(2.*2.) - 10800.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 240.*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 455.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 140.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1256 case 26:
1257 return RealGradient(0., 45.*eta/2. + 28.*xi - 840.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 2700.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2100.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2520.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 1960.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 95./2. - 135.*(eta + 1.)*(eta + 1.)/(2.*2.) - 8100.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 180.*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 105.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 140.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1258 case 27:
1259 return RealGradient(0., 30.*eta + 4.*xi - 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 360.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 280.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 30. - 180.*(eta + 1.)*(eta + 1.)/(2.*2.) + 140.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)));
1260 case 28:
1261 return RealGradient(-9.*eta - 9. + 171.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 120.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 105.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2., 0.);
1262 case 29:
1263 return RealGradient(9.*eta + 9. - 171.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 120.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 105.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2., 0.);
1264 case 30:
1265 return RealGradient(0., -9.*eta - 57.*xi + 171.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 360.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 210.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 54. + 240.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 140.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1266 case 31:
1267 return RealGradient(0., 9.*eta + 57.*xi/2. - 171.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 360.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 210.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 63./2. - 120.*(xi + 1.)*(xi + 1.)/(2.*2.) + 70.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1268 case 32:
1269 return RealGradient(0., -3.*eta/2. - 27.*xi + 81.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 210.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 53./2. + 180.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 140.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1270 case 33:
1271 return RealGradient(0., 3.*eta/2. + 27.*xi/2. - 81.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 210.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 14. - 90.*(xi + 1.)*(xi + 1.)/(2.*2.) + 70.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1272 case 34:
1273 return RealGradient(-3.*eta/2. - 3./2. + 81.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 90.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 105.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2., 0.);
1274 case 35:
1275 return RealGradient(3.*eta/2. + 3./2. - 81.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 90.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 105.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2., 0.);
1276 case 36:
1277 return RealGradient(0., -9.*eta/2. - 6.*xi + 18.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 9./2.);
1278 case 37:
1279 return RealGradient(9.*eta/2. + 9./2. - 9.*(eta + 1.)*(eta + 1.)/(2.*2.), 0.);
1280 case 38:
1281 return RealGradient(-9.*eta/2. - 9./2. + 9.*((eta + 1.)*(eta + 1.)/(2.*2.)), 0.);
1282 case 39:
1283 return RealGradient(0., 9.*eta/2. + 3.*xi - 18.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 9./2.);
1284 default:
1285 libmesh_error_msg("Invalid i = " << i);
1286 }
1287 } // j = 0
1288
1289 // d()/deta
1290 case 1:
1291 {
1292 switch(ii)
1293 {
1294 case 0:
1295 return sign * RealGradient(240.*eta + 240.*xi - 3600.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 7200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 7200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 4200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 416. - 960.*(eta + 1.)*(eta + 1.)/(2.*2.) - 14400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 960.*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 560.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 560.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)), 0.);
1296 case 1:
1297 return sign * RealGradient(-340.*eta/9. - 760.*xi/9. + 3800.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. - 8600.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 15400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 7600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/3. + 13300.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 3028./27. + 1360.*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 17200.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 30800.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 3440.*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 30100.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. - 2380.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/27. + 53900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27. - 6160.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27., 0.);
1298 case 2:
1299 return sign * RealGradient(160.*eta/9. + 400.*xi/9. - 2000.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. + 6800.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 15400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 4000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/3. - 7000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 1552./27. - 640.*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 13600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 30800.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 2720.*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 23800.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. + 1120.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/27. - 53900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27. + 6160.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27., 0.);
1300 case 3:
1301 return sign * RealGradient(-60.*eta - 120.*xi + 1800.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 5400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 4200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 2100.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 164. + 240.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 10800.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 720.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 140.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 560.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.), 0.);
1302 case 4:
1303 return sign * RealGradient(0., 60.*xi - 480.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 420.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 60. - 3150.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 900.*(xi + 1.)*(xi + 1.)/(2.*2.) + 1800.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1050.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
1304 case 5:
1305 return sign * RealGradient(0., -190.*xi/9. + 1720.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. - 4300.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 8600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/3. - 15050.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/9. - 1540.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 190./9. + 3850.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 7700.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/3. + 13475.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/9. + 950.*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 1900.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/3. + 3325.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/9.);
1306 case 6:
1307 return sign * RealGradient(0., 100.*xi/9. - 1360.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. + 3400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 6800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/3. + 11900.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/9. + 1540.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 100./9. - 3850.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 7700.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/3. - 13475.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/9. - 500.*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 1000.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/3. - 1750.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/9.);
1308 case 7:
1309 return sign * RealGradient(0., -30.*xi + 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 2700.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3150.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 420.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 30. + 3150.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3675.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 450.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 900.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 525.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
1310 case 8:
1311 return sign * RealGradient(30.*eta + 30.*xi - 900.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 2700.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2100.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2700.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2100.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 56. - 180.*(eta + 1.)*(eta + 1.)/(2.*2.) - 8100.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 180.*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 140.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 140.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)), 0.);
1312 case 9:
1313 return sign * RealGradient(-80.*eta/9. - 100.*xi/9. + 1000.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. - 3400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 7700.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 1000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 7000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 508./27. + 160.*((eta + 1.)*(eta + 1.)/(2.*2.))/3. + 3400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7700.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/3. + 680.*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 23800.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. - 1120.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/27. + 53900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27. - 1540.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27., 0.);
1314 case 10:
1315 return sign * RealGradient(170.*eta/9. + 190.*xi/9. - 1900.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. + 4300.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 7700.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 1900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 13300.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 1012./27. - 340.*(eta + 1.)*(eta + 1.)/(2.*2.)/3. - 4300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 7700.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/3. - 860.*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 30100.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. + 2380.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/27. - 53900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/27. + 1540.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/27., 0.);
1316 case 11:
1317 return sign * RealGradient(-120.*eta - 60.*xi + 1800.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 3600.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 4200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 164. + 720.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 10800.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 240.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 560.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 140.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.), 0.);
1318 case 12:
1319 return sign * RealGradient(0., 45.*eta + 120.*xi - 1440.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 5400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1680.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 150. - 105.*(eta + 1.)*(eta + 1.)/(2.*2.) - 6300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 900.*(xi + 1.)*(xi + 1.)/(2.*2.) + 1200.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
1320 case 13:
1321 return sign * RealGradient(0., -170.*eta/9. - 400.*xi/9. + 5440.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. - 6800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 27200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 11900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/9. - 6160.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 520./9. + 385.*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 7700.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 30800.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 13475.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/9. + 1000.*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 4000.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 1750.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/9.);
1322 case 14:
1323 return sign * RealGradient(0., 215.*eta/9. + 760.*xi/9. - 6880.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/9. + 8600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 34400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 15050.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/9. + 6160.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 880./9. - 385.*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 7700.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 30800.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 13475.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/9. - 1900.*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 7600.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 3325.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/9.);
1324 case 15:
1325 return sign * RealGradient(0., -60.*eta - 240.*xi + 1920.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 7200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 9600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1680.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 270. + 105.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 6300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3675.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1800.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2400.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1050.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
1326 case 16:
1327 return RealGradient(0., -195.*xi + 1560.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 6960.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 9600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1365.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 195. + 6090.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3675.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1740.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2400.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1050.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
1328 case 17:
1329 return RealGradient(0., -45.*xi + 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 3360.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 7200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 315.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 45. + 2940.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3675.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 840.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1800.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1050.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
1330 case 18:
1331 return RealGradient(0., -60.*xi + 480.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 480.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 420.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 60. + 420.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 120.*((xi + 1.)*(xi + 1.)/(2.*2.)));
1332 case 19:
1333 return RealGradient(232.*eta + 195.*xi - 3480.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 6960.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4060.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 7200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 4200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 375. - 960.*(eta + 1.)*(eta + 1.)/(2.*2.) - 14400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 780.*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 560.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 455.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)), 0.);
1334 case 20:
1335 return RealGradient(112.*eta + 45.*xi - 1680.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3360.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1960.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 5400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 4200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 145. - 720.*(eta + 1.)*(eta + 1.)/(2.*2.) - 10800.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 180.*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 560.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4900.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 105.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)), 0.);
1336 case 21:
1337 return RealGradient(16.*eta + 60.*xi - 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 480.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 280.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 60. - 240.*(xi + 1.)*(xi + 1.)/(2.*2.) + 140.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)), 0.);
1338 case 22:
1339 return RealGradient(-58.*eta - 195.*xi/2. + 1740.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 5220.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 4060.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 2100.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 285./2. + 240.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 10800.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 585.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 140.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 455.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.), 0.);
1340 case 23:
1341 return RealGradient(-28.*eta - 45.*xi/2. + 840.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 2520.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 1960.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2700.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 2100.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 95./2. + 180.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 8100.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 135.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 140.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4900.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 105.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.), 0.);
1342 case 24:
1343 return RealGradient(-4.*eta - 30.*xi + 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 360.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 280.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 30. + 180.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 140.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.), 0.);
1344 case 25:
1345 return RealGradient(0., 195.*xi/2. - 1170.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 5220.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1365.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 195./2. - 6090.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 870.*(xi + 1.)*(xi + 1.)/(2.*2.) + 1200.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
1346 case 26:
1347 return RealGradient(0., 45.*xi/2. - 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 2520.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 5400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 315.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 45./2. - 2940.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 420.*(xi + 1.)*(xi + 1.)/(2.*2.) + 900.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
1348 case 27:
1349 return RealGradient(0., 30.*xi - 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 360.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 420.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 30. - 420.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 60.*(xi + 1.)*(xi + 1.)/(2.*2.));
1350 case 28:
1351 return RealGradient(-57.*eta - 9.*xi + 171.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 360.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 210.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 54. + 240.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 140.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
1352 case 29:
1353 return RealGradient(57.*eta/2. + 9.*xi - 171.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 360.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 210.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 63./2. - 120.*(eta + 1.)*(eta + 1.)/(2.*2.) + 70.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
1354 case 30:
1355 return RealGradient(0., -9.*xi - 9. + 171.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 120.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 105.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2.);
1356 case 31:
1357 return RealGradient(0., 9.*xi + 9. - 171.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 120.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 105.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2.);
1358 case 32:
1359 return RealGradient(0., -3.*xi/2. - 3./2. + 81.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 90.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 105.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2.);
1360 case 33:
1361 return RealGradient(0., 3.*xi/2. + 3./2. - 81.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 90.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 105.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2.);
1362 case 34:
1363 return RealGradient(-27.*eta - 3.*xi/2. + 81.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 210.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 53./2. + 180.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 140.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
1364 case 35:
1365 return RealGradient(27.*eta/2. + 3.*xi/2. - 81.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 210.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 14. - 90.*(eta + 1.)*(eta + 1.)/(2.*2.) + 70.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
1366 case 36:
1367 return RealGradient(0., -9.*xi/2. - 9./2. + 9.*((xi + 1.)*(xi + 1.)/(2.*2.)));
1368 case 37:
1369 return RealGradient(6.*eta + 9.*xi/2. - 18.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 9./2., 0.);
1370 case 38:
1371 return RealGradient(-3.*eta - 9.*xi/2. + 18.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 9./2., 0.);
1372 case 39:
1373 return RealGradient(0., 9.*xi/2. + 9./2. - 9.*(xi + 1.)*(xi + 1.)/(2.*2.));
1374 default:
1375 libmesh_error_msg("Invalid i = " << i);
1376 }
1377 } // j = 1
1378
1379 default:
1380 libmesh_error_msg("Invalid j = " << j);
1381 }
1382 }
1383
1384 case TRI6:
1385 case TRI7:
1386 {
1387 switch (j)
1388 {
1389 // d()/dxi
1390 case 0:
1391 {
1392 switch(ii)
1393 {
1394 case 0:
1395 return sign * RealGradient(-1680.*eta*xi + 720.*eta + 672.*eta*(xi*xi) + 480.*xi + 1344.*xi*(eta*eta) - 120. - 1260.*eta*eta - 420.*xi*xi + 672.*(eta*eta*eta), 1680.*eta*xi - 240.*eta - 2016.*eta*xi*xi - 480.*xi - 1344.*xi*eta*eta + 40. + 420.*(eta*eta) + 1260.*(xi*xi) - 224.*eta*eta*eta - 896.*xi*xi*xi);
1396 case 1:
1397 return sign * RealGradient(5768.*eta*xi/9. - 200.*eta - 2464.*eta*xi*xi/9. - 1720.*xi/9. - 4480.*xi*eta*eta/9. + 380./9. + 784.*(eta*eta)/3. + 1540.*(xi*xi)/9. - 896.*eta*eta*eta/9., -4256.*eta*xi/9. + 176.*eta/9. + 2240.*eta*(xi*xi)/3. + 1600.*xi/9. + 1792.*xi*(eta*eta)/9. - 296./27. + 448.*(eta*eta)/9. - 504.*xi*xi - 1792.*eta*eta*eta/27. + 9856.*(xi*xi*xi)/27.);
1398 case 2:
1399 return sign * RealGradient(-2240.*eta*xi/9. - 16.*eta + 2464.*eta*(xi*xi)/9. + 1360.*xi/9. + 448.*xi*(eta*eta)/9. - 200./9. + 476.*(eta*eta)/3. - 1540.*xi*xi/9. - 1120.*eta*eta*eta/9., -784.*eta*xi/9. + 112.*eta/9. - 224.*eta*xi*xi/3. - 1024.*xi/9. + 2240.*xi*(eta*eta)/9. + 152./27. - 196.*eta*eta/9. + 420.*(xi*xi) - 224.*eta*eta*eta/27. - 9856.*xi*xi*xi/27.);
1400 case 3:
1401 return sign * RealGradient(504.*eta*xi - 72.*eta - 672.*eta*xi*xi - 360.*xi + 60. + 420.*(xi*xi), 288.*xi - 16. - 1008.*xi*xi + 896.*(xi*xi*xi));
1402 case 4:
1403 return sign * RealGradient(504.*eta*xi - 72.*eta - 672.*eta*xi*xi, 288.*xi - 16. - 1008.*xi*xi + 896.*(xi*xi*xi));
1404 case 5:
1405 return sign * RealGradient(896.*eta*xi/3. - 80.*eta - 1792.*eta*xi*xi/9. - 1792.*xi*eta*eta/3. + 784.*(eta*eta)/3. - 448.*eta*eta*eta/3., -1792.*eta*xi/3. + 56.*eta + 896.*eta*(xi*xi) + 160.*xi + 896.*xi*(eta*eta)/3. - 12. - 140.*eta*eta/3. - 1232.*xi*xi/3. + 224.*(eta*eta*eta)/27. + 7168.*(xi*xi*xi)/27.);
1406 case 6:
1407 return sign * RealGradient(280.*eta*xi/3. - 56.*eta - 224.*eta*xi*xi/9. - 896.*xi*eta*eta/3. + 896.*(eta*eta)/3. - 896.*eta*eta*eta/3., -1568.*eta*xi/3. + 80.*eta + 448.*eta*(xi*xi) + 64.*xi + 1792.*xi*(eta*eta)/3. - 8. - 448.*eta*eta/3. - 280.*xi*xi/3. + 1792.*(eta*eta*eta)/27. + 896.*(xi*xi*xi)/27.);
1408 case 7:
1409 return sign * RealGradient(0., 72.*eta - 4. - 252.*eta*eta + 224.*(eta*eta*eta));
1410 case 8:
1411 return sign * RealGradient(0., 72.*eta - 4. - 252.*eta*eta + 224.*(eta*eta*eta));
1412 case 9:
1413 return sign * RealGradient(392.*eta*xi/9. - 112.*eta/9. + 224.*eta*(xi*xi)/9. - 2240.*xi*eta*eta/9. + 392.*(eta*eta)/9. + 224.*(eta*eta*eta)/9., -952.*eta*xi/3. + 16.*eta + 1120.*eta*(xi*xi)/3. + 208.*xi/9. - 448.*xi*eta*eta/9. - 112./27. + 1120.*(eta*eta)/9. + 56.*(xi*xi)/9. - 2464.*eta*eta*eta/27. - 896.*xi*xi*xi/27.);
1414 case 10:
1415 return sign * RealGradient(-896.*eta*xi/9. - 176.*eta/9. + 1792.*eta*(xi*xi)/9. - 1792.*xi*eta*eta/9. + 2128.*(eta*eta)/9. - 2240.*eta*eta*eta/9., -1568.*eta*xi/3. + 200.*eta + 896.*eta*(xi*xi)/3. - 1216.*xi/9. + 4480.*xi*(eta*eta)/9. + 76./27. - 2884.*eta*eta/9. + 3472.*(xi*xi)/9. + 2464.*(eta*eta*eta)/27. - 7168.*xi*xi*xi/27.);
1416 case 11:
1417 return sign * RealGradient(-840.*eta*xi + 240.*eta + 672.*eta*(xi*xi) + 1344.*xi*(eta*eta) - 840.*eta*eta + 672.*(eta*eta*eta), 2520.*eta*xi - 720.*eta - 2016.*eta*xi*xi - 960.*xi - 1344.*xi*eta*eta + 160. + 840.*(eta*eta) + 1680.*(xi*xi) - 224.*eta*eta*eta - 896.*xi*xi*xi);
1418 case 12:
1419 return RealGradient(6048.*eta*xi - 3240.*eta - 2016.*eta*xi*xi - 8064.*xi*eta*eta + 9072.*(eta*eta) - 6048.*eta*eta*eta, -12096.*eta*xi + 2160.*eta + 12096.*eta*(xi*xi) + 2160.*xi + 12096.*xi*(eta*eta) - 240. - 4536.*eta*eta - 4536.*xi*xi + 2688.*(eta*eta*eta) + 2688.*(xi*xi*xi));
1420 case 13:
1421 return RealGradient(-9072.*eta*xi + 2160.*eta + 8064.*eta*(xi*xi) + 12096.*xi*(eta*eta) - 6048.*eta*eta + 4032.*(eta*eta*eta), 18144.*eta*xi - 3240.*eta - 18144.*eta*xi*xi - 8640.*xi - 8064.*xi*eta*eta + 960. + 3024.*(eta*eta) + 18144.*(xi*xi) - 672.*eta*eta*eta - 10752.*xi*xi*xi);
1422 case 14:
1423 return RealGradient(9072.*eta*xi - 1944.*eta - 6048.*eta*xi*xi - 8064.*xi*eta*eta + 2016.*(eta*eta), -6048.*eta*xi + 432.*eta + 12096.*eta*(xi*xi) + 3456.*xi - 216. - 10584.*xi*xi + 8064.*(xi*xi*xi));
1424 case 15:
1425 return RealGradient(-7056.*eta*xi + 1152.*eta + 8064.*eta*(xi*xi) + 4032.*xi*(eta*eta) - 1008.*eta*eta, 3024.*eta*xi - 216.*eta - 6048.*eta*xi*xi - 4608.*xi + 288. + 14112.*(xi*xi) - 10752.*xi*xi*xi);
1426 case 16:
1427 return RealGradient(-216.*eta + 1512.*(eta*eta) - 2016.*eta*eta*eta, -2016.*eta*xi + 1152.*eta + 144.*xi + 4032.*xi*(eta*eta) - 72. - 3528.*eta*eta + 2688.*(eta*eta*eta));
1428 case 17:
1429 return RealGradient(432.*eta - 3024.*eta*eta + 4032.*(eta*eta*eta), 4032.*eta*xi - 1944.*eta - 288.*xi - 8064.*xi*eta*eta + 144. + 4536.*(eta*eta) - 2016.*eta*eta*eta);
1430 case 18:
1431 return RealGradient(3276.*eta*xi - 1332.*eta - 1512.*eta*xi*xi - 6048.*xi*eta*eta + 4788.*(eta*eta) - 3528.*eta*eta*eta, -8064.*eta*xi + 1044.*eta + 9072.*eta*(xi*xi) + 1548.*xi + 7056.*xi*(eta*eta) - 144. - 1638.*eta*eta - 3402.*xi*xi + 672.*(eta*eta*eta) + 2016.*(xi*xi*xi));
1432 case 19:
1433 return RealGradient(-3276.*eta*xi + 1044.*eta + 2016.*eta*(xi*xi) + 7056.*xi*(eta*eta) - 4032.*eta*eta + 3024.*(eta*eta*eta), 9576.*eta*xi - 1332.*eta - 10584.*eta*xi*xi - 2196.*xi - 6048.*xi*eta*eta + 216. + 1638.*(eta*eta) + 4662.*(xi*xi) - 504.*eta*eta*eta - 2688.*xi*xi*xi);
1434 case 20:
1435 return RealGradient(1008.*eta*xi - 216.*eta - 504.*eta*xi*xi - 756.*eta*eta + 1008.*(eta*eta*eta), 1008.*eta*xi - 360.*eta + 144.*xi - 2016.*xi*eta*eta + 12. + 1008.*(eta*eta) - 756.*xi*xi - 672.*eta*eta*eta + 672.*(xi*xi*xi));
1436 case 21:
1437 return RealGradient(-756.*eta*xi - 216.*eta + 2016.*eta*(xi*xi) - 3024.*xi*eta*eta + 2268.*(eta*eta) - 2016.*eta*eta*eta, -5544.*eta*xi + 1188.*eta + 4536.*eta*(xi*xi) - 936.*xi + 4032.*xi*(eta*eta) + 6. - 1512.*eta*eta + 3402.*(xi*xi) + 336.*(eta*eta*eta) - 2688.*xi*xi*xi);
1438 case 22:
1439 return RealGradient(-3024.*eta*xi + 1188.*eta + 1008.*eta*(xi*xi) + 4032.*xi*(eta*eta) - 2772.*eta*eta + 1512.*(eta*eta*eta), 4536.*eta*xi - 216.*eta - 6048.*eta*xi*xi - 972.*xi - 3024.*xi*eta*eta + 66. - 378.*eta*eta + 2268.*(xi*xi) + 672.*(eta*eta*eta) - 1344.*xi*xi*xi);
1440 case 23:
1441 return RealGradient(2016.*eta*xi - 360.*eta - 2016.*eta*xi*xi - 2016.*xi*eta*eta + 504.*(eta*eta), -1512.*eta*xi - 216.*eta + 3024.*eta*(xi*xi) + 1440.*xi - 48. + 504.*(eta*eta) - 4032.*xi*xi - 168.*eta*eta*eta + 2688.*(xi*xi*xi));
1442 default:
1443 libmesh_error_msg("Invalid i = " << i);
1444 }
1445 } // j = 0
1446
1447 // d()/deta
1448 case 1:
1449 {
1450 switch(ii)
1451 {
1452 case 0:
1453 return sign * RealGradient(-2520.*eta*xi + 960.*eta + 1344.*eta*(xi*xi) + 720.*xi + 2016.*xi*(eta*eta) - 160. - 1680.*eta*eta - 840.*xi*xi + 896.*(eta*eta*eta) + 224.*(xi*xi*xi), 840.*eta*xi - 1344.*eta*xi*xi - 240.*xi - 672.*xi*eta*eta + 840.*(xi*xi) - 672.*xi*xi*xi);
1454 case 1:
1455 return sign * RealGradient(1568.*eta*xi/3. + 1216.*eta/9. - 4480.*eta*xi*xi/9. - 200.*xi - 896.*xi*eta*eta/3. - 76./27. - 3472.*eta*eta/9. + 2884.*(xi*xi)/9. + 7168.*(eta*eta*eta)/27. - 2464.*xi*xi*xi/27., 896.*eta*xi/9. + 1792.*eta*(xi*xi)/9. + 176.*xi/9. - 1792.*xi*eta*eta/9. - 2128.*xi*xi/9. + 2240.*(xi*xi*xi)/9.);
1456 case 2:
1457 return sign * RealGradient(952.*eta*xi/3. - 208.*eta/9. + 448.*eta*(xi*xi)/9. - 16.*xi - 1120.*xi*eta*eta/3. + 112./27. - 56.*eta*eta/9. - 1120.*xi*xi/9. + 896.*(eta*eta*eta)/27. + 2464.*(xi*xi*xi)/27., -392.*eta*xi/9. + 2240.*eta*(xi*xi)/9. + 112.*xi/9. - 224.*xi*eta*eta/9. - 392.*xi*xi/9. - 224.*xi*xi*xi/9.);
1458 case 3:
1459 return sign * RealGradient(-72.*xi + 4. + 252.*(xi*xi) - 224.*xi*xi*xi, 0.);
1460 case 4:
1461 return sign * RealGradient(-72.*xi + 4. + 252.*(xi*xi) - 224.*xi*xi*xi, 0.);
1462 case 5:
1463 return sign * RealGradient(1568.*eta*xi/3. - 64.*eta - 1792.*eta*xi*xi/3. - 80.*xi - 448.*xi*eta*eta + 8. + 280.*(eta*eta)/3. + 448.*(xi*xi)/3. - 896.*eta*eta*eta/27. - 1792.*xi*xi*xi/27., -280.*eta*xi/3. + 896.*eta*(xi*xi)/3. + 56.*xi + 224.*xi*(eta*eta)/9. - 896.*xi*xi/3. + 896.*(xi*xi*xi)/3.);
1464 case 6:
1465 return sign * RealGradient(1792.*eta*xi/3. - 160.*eta - 896.*eta*xi*xi/3. - 56.*xi - 896.*xi*eta*eta + 12. + 1232.*(eta*eta)/3. + 140.*(xi*xi)/3. - 7168.*eta*eta*eta/27. - 224.*xi*xi*xi/27., -896.*eta*xi/3. + 1792.*eta*(xi*xi)/3. + 80.*xi + 1792.*xi*(eta*eta)/9. - 784.*xi*xi/3. + 448.*(xi*xi*xi)/3.);
1466 case 7:
1467 return sign * RealGradient(-288.*eta + 16. + 1008.*(eta*eta) - 896.*eta*eta*eta, -504.*eta*xi + 72.*xi + 672.*xi*(eta*eta));
1468 case 8:
1469 return sign * RealGradient(-288.*eta + 16. + 1008.*(eta*eta) - 896.*eta*eta*eta, -504.*eta*xi + 360.*eta + 72.*xi + 672.*xi*(eta*eta) - 60. - 420.*eta*eta);
1470 case 9:
1471 return sign * RealGradient(784.*eta*xi/9. + 1024.*eta/9. - 2240.*eta*xi*xi/9. - 112.*xi/9. + 224.*xi*(eta*eta)/3. - 152./27. - 420.*eta*eta + 196.*(xi*xi)/9. + 9856.*(eta*eta*eta)/27. + 224.*(xi*xi*xi)/27., 2240.*eta*xi/9. - 1360.*eta/9. - 448.*eta*xi*xi/9. + 16.*xi - 2464.*xi*eta*eta/9. + 200./9. + 1540.*(eta*eta)/9. - 476.*xi*xi/3. + 1120.*(xi*xi*xi)/9.);
1472 case 10:
1473 return sign * RealGradient(4256.*eta*xi/9. - 1600.*eta/9. - 1792.*eta*xi*xi/9. - 176.*xi/9. - 2240.*xi*eta*eta/3. + 296./27. + 504.*(eta*eta) - 448.*xi*xi/9. - 9856.*eta*eta*eta/27. + 1792.*(xi*xi*xi)/27., -5768.*eta*xi/9. + 1720.*eta/9. + 4480.*eta*(xi*xi)/9. + 200.*xi + 2464.*xi*(eta*eta)/9. - 380./9. - 1540.*eta*eta/9. - 784.*xi*xi/3. + 896.*(xi*xi*xi)/9.);
1474 case 11:
1475 return sign * RealGradient(-1680.*eta*xi + 480.*eta + 1344.*eta*(xi*xi) + 240.*xi + 2016.*xi*(eta*eta) - 40. - 1260.*eta*eta - 420.*xi*xi + 896.*(eta*eta*eta) + 224.*(xi*xi*xi), 1680.*eta*xi - 480.*eta - 1344.*eta*xi*xi - 720.*xi - 672.*xi*eta*eta + 120. + 420.*(eta*eta) + 1260.*(xi*xi) - 672.*xi*xi*xi);
1476 case 12:
1477 return RealGradient(18144.*eta*xi - 8640.*eta - 8064.*eta*xi*xi - 3240.*xi - 18144.*xi*eta*eta + 960. + 18144.*(eta*eta) + 3024.*(xi*xi) - 10752.*eta*eta*eta - 672.*xi*xi*xi, -9072.*eta*xi + 12096.*eta*(xi*xi) + 2160.*xi + 8064.*xi*(eta*eta) - 6048.*xi*xi + 4032.*(xi*xi*xi));
1478 case 13:
1479 return RealGradient(-12096.*eta*xi + 2160.*eta + 12096.*eta*(xi*xi) + 2160.*xi + 12096.*xi*(eta*eta) - 240. - 4536.*eta*eta - 4536.*xi*xi + 2688.*(eta*eta*eta) + 2688.*(xi*xi*xi), 6048.*eta*xi - 8064.*eta*xi*xi - 3240.*xi - 2016.*xi*eta*eta + 9072.*(xi*xi) - 6048.*xi*xi*xi);
1480 case 14:
1481 return RealGradient(4032.*eta*xi - 288.*eta - 8064.*eta*xi*xi - 1944.*xi + 144. + 4536.*(xi*xi) - 2016.*xi*xi*xi, 432.*xi - 3024.*xi*xi + 4032.*(xi*xi*xi));
1482 case 15:
1483 return RealGradient(-2016.*eta*xi + 144.*eta + 4032.*eta*(xi*xi) + 1152.*xi - 72. - 3528.*xi*xi + 2688.*(xi*xi*xi), -216.*xi + 1512.*(xi*xi) - 2016.*xi*xi*xi);
1484 case 16:
1485 return RealGradient(3024.*eta*xi - 4608.*eta - 216.*xi - 6048.*xi*eta*eta + 288. + 14112.*(eta*eta) - 10752.*eta*eta*eta, -7056.*eta*xi + 4032.*eta*(xi*xi) + 1152.*xi + 8064.*xi*(eta*eta) - 1008.*xi*xi);
1486 case 17:
1487 return RealGradient(-6048.*eta*xi + 3456.*eta + 432.*xi + 12096.*xi*(eta*eta) - 216. - 10584.*eta*eta + 8064.*(eta*eta*eta), 9072.*eta*xi - 8064.*eta*xi*xi - 1944.*xi - 6048.*xi*eta*eta + 2016.*(xi*xi));
1488 case 18:
1489 return RealGradient(9576.*eta*xi - 2196.*eta - 6048.*eta*xi*xi - 1332.*xi - 10584.*xi*eta*eta + 216. + 4662.*(eta*eta) + 1638.*(xi*xi) - 2688.*eta*eta*eta - 504.*xi*xi*xi, -3276.*eta*xi + 7056.*eta*(xi*xi) + 1044.*xi + 2016.*xi*(eta*eta) - 4032.*xi*xi + 3024.*(xi*xi*xi));
1490 case 19:
1491 return RealGradient(-8064.*eta*xi + 1548.*eta + 7056.*eta*(xi*xi) + 1044.*xi + 9072.*xi*(eta*eta) - 144. - 3402.*eta*eta - 1638.*xi*xi + 2016.*(eta*eta*eta) + 672.*(xi*xi*xi), 3276.*eta*xi - 6048.*eta*xi*xi - 1332.*xi - 1512.*xi*eta*eta + 4788.*(xi*xi) - 3528.*xi*xi*xi);
1492 case 20:
1493 return RealGradient(-1512.*eta*xi + 1440.*eta - 216.*xi + 3024.*xi*(eta*eta) - 48. - 4032.*eta*eta + 504.*(xi*xi) + 2688.*(eta*eta*eta) - 168.*xi*xi*xi, 2016.*eta*xi - 2016.*eta*xi*xi - 360.*xi - 2016.*xi*eta*eta + 504.*(xi*xi));
1494 case 21:
1495 return RealGradient(4536.*eta*xi - 972.*eta - 3024.*eta*xi*xi - 216.*xi - 6048.*xi*eta*eta + 66. + 2268.*(eta*eta) - 378.*xi*xi - 1344.*eta*eta*eta + 672.*(xi*xi*xi), -3024.*eta*xi + 4032.*eta*(xi*xi) + 1188.*xi + 1008.*xi*(eta*eta) - 2772.*xi*xi + 1512.*(xi*xi*xi));
1496 case 22:
1497 return RealGradient(-5544.*eta*xi - 936.*eta + 4032.*eta*(xi*xi) + 1188.*xi + 4536.*xi*(eta*eta) + 6. + 3402.*(eta*eta) - 1512.*xi*xi - 2688.*eta*eta*eta + 336.*(xi*xi*xi), -756.*eta*xi - 3024.*eta*xi*xi - 216.*xi + 2016.*xi*(eta*eta) + 2268.*(xi*xi) - 2016.*xi*xi*xi);
1498 case 23:
1499 return RealGradient(1008.*eta*xi + 144.*eta - 2016.*eta*xi*xi - 360.*xi + 12. - 756.*eta*eta + 1008.*(xi*xi) + 672.*(eta*eta*eta) - 672.*xi*xi*xi, 1008.*eta*xi - 216.*xi - 504.*xi*eta*eta - 756.*xi*xi + 1008.*(xi*xi*xi));
1500 default:
1501 libmesh_error_msg("Invalid i = " << i);
1502 }
1503 } // j = 1
1504
1505 default:
1506 libmesh_error_msg("Invalid j = " << j);
1507 }
1508 }
1509
1510 default:
1511 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
1512 } // end switch (type)
1513 } // end case FOURTH
1514
1515 // quintic Nedelec (first kind) shape function first derivatives
1516 case FIFTH:
1517 {
1518 switch (elem->type())
1519 {
1520 case QUAD8:
1521 case QUAD9:
1522 {
1523 switch (j)
1524 {
1525 // d()/dxi
1526 case 0:
1527 {
1528 switch(ii)
1529 {
1530 case 0:
1531 return sign * RealGradient(1875.*eta/2. + 525.*xi/2. - 13125.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 26250.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 15750.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 78750.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 183750.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 183750.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 66150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 1125. - 11250.*(eta + 1.)*(eta + 1.)/(2.*2.) - 157500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 94500.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1050.*(xi + 1.)*(xi + 1.)/(2.*2.) + 367500.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 367500.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 132300.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 26250.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 630.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 220500.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 79380.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 26250.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 9450.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
1532 case 1:
1533 return sign * RealGradient(-71625.*eta/256. - 21105.*xi/256. + 527625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/128. - 1021125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 291375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 1582875.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/64. + 3693375.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 3693375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 1329615.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. - 10875./32. + 214875.*((eta + 1.)*(eta + 1.)/(2.*2.))/64. + 3063375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 874125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 40845.*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 7147875.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 7147875.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. - 2573235.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/64. - 501375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 2039625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 11655.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. - 2039625.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/32. + 734265.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/32. + 501375.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. - 180495.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/64., 0.);
1534 case 2:
1535 return sign * RealGradient(2625.*eta/16. + 1155.*xi/16. - 28875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/8. + 70875.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 23625.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 86625.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/4. - 202125.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 202125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. - 72765.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/4. + 1785./8. - 7875.*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 212625.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 70875.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 2835.*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 496125.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 496125.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4. + 178605.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/4. + 18375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 165375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. + 165375.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. - 59535.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/2. - 18375.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4. + 6615.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/4., 0.);
1536 case 3:
1537 return sign * RealGradient(-17625.*eta/256. - 9345.*xi/256. + 233625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/128. - 727125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 291375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 700875.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/64. + 1635375.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 1635375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 588735.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. - 3195./32. + 52875.*((eta + 1.)*(eta + 1.)/(2.*2.))/64. + 2181375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 874125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 29085.*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 5089875.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 5089875.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. - 1832355.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/64. - 123375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 2039625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 11655.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. - 2039625.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/32. + 734265.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/32. + 123375.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. - 44415.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/64., 0.);
1538 case 4:
1539 return sign * RealGradient(375.*eta + 315.*xi/2. - 7875.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 21000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 15750.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 47250.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 110250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 110250.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 39690.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 1005./2. - 4500.*(eta + 1.)*(eta + 1.)/(2.*2.) - 126000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 94500.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 840.*(xi + 1.)*(xi + 1.)/(2.*2.) + 294000.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 294000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 105840.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 10500.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 630.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 220500.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 79380.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 10500.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 3780.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
1540 case 5:
1541 return sign * RealGradient(0., -375.*eta/2. - 375.*xi + 9000.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 47250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 84000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 47250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 31500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 42000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 18900.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 2125./4. + 2625.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 165375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 294000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 165375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 7875.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 220500.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 99225.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1750.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 392000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 7000.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 176400.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1575.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 7875.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2.);
1542 case 6:
1543 return sign * RealGradient(0., 14325.*eta/256. + 7275.*xi/128. - 42975.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/16. + 902475.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 100275.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 902475.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 316575.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/32. - 204225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/16. + 174825.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/32. + 55325./512. - 105525.*(eta + 1.)*(eta + 1.)/(2.*2.)/256. - 6648075.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 738675.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/8. - 6648075.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 152775.*(xi + 1.)*(xi + 1.)/(2.*2.)/256. + 4288725.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 3671325.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. + 68075.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/128. - 476525.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 4288725.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 16975.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/16. + 407925.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. - 58275.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/256. - 3671325.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 152775.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/256.);
1544 case 7:
1545 return sign * RealGradient(0., -525.*eta/16. - 225.*xi/8. + 1575.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 33075.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 14700.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 33075.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. - 17325.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 14175.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 14175.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 1875./32. + 5775.*((eta + 1.)*(eta + 1.)/(2.*2.))/16. + 363825.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 80850.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 363825.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/8. + 4725.*((xi + 1.)*(xi + 1.)/(2.*2.))/16. - 297675.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 297675.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. - 4725.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/8. + 132300.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 297675.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 66150.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 4725.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/16. + 297675.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/8. + 4725.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/16.);
1546 case 8:
1547 return sign * RealGradient(0., 3525.*eta/256. + 1275.*xi/128. - 10575.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/16. + 222075.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 24675.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 222075.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 140175.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/32. - 145425.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/16. + 174825.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/32. + 11725./512. - 46725.*(eta + 1.)*(eta + 1.)/(2.*2.)/256. - 2943675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 327075.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/8. - 2943675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 26775.*(xi + 1.)*(xi + 1.)/(2.*2.)/256. + 3053925.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 3671325.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. + 48475.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/128. - 339325.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 3053925.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 2975.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/16. + 407925.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. - 58275.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/256. - 3671325.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 26775.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/256.);
1548 case 9:
1549 return sign * RealGradient(0., -75.*eta - 75.*xi + 3600.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 18900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 33600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 18900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 18900.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 33600.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 18900.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 575./4. + 1575.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 99225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 176400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 99225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1575.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 176400.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 99225.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 313600.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 176400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1400.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 176400.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1575.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2.);
1550 case 10:
1551 return sign * RealGradient(75.*eta - 1575.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 4200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3150.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 18900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 66150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 88200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 39690.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 75. - 1800.*(eta + 1.)*(eta + 1.)/(2.*2.) - 50400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 37800.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 176400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 235200.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 105840.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 6300.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 132300.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 176400.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 79380.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 8400.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 3780.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
1552 case 11:
1553 return sign * RealGradient(-3525.*eta/256. + 46725.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/128. - 145425.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 58275.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 140175.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/32. + 981225.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 327075.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/16. + 588735.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. - 3525./256. + 10575.*((eta + 1.)*(eta + 1.)/(2.*2.))/32. + 436275.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/32. - 174825.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/16. - 3053925.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 1017975.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/16. - 1832355.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/64. - 74025.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 1223775.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 407925.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/8. + 734265.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/32. + 24675.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/16. - 44415.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/64., 0.);
1554 case 12:
1555 return sign * RealGradient(525.*eta/16. - 5775.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/8. + 14175.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 4725.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 17325.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 121275.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 40425.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 72765.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/4. + 525./16. - 1575.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 42525.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 14175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 297675.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 99225.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 178605.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/4. + 11025.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 66150.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 59535.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/2. - 3675.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 6615.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/4., 0.);
1556 case 13:
1557 return sign * RealGradient(-14325.*eta/256. + 105525.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/128. - 204225.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 58275.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 316575.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/32. + 2216025.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 738675.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/16. + 1329615.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/64. - 14325./256. + 42975.*((eta + 1.)*(eta + 1.)/(2.*2.))/32. + 612675.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/32. - 174825.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/16. - 4288725.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 1429575.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/16. - 2573235.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/64. - 300825.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 1223775.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 407925.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/8. + 734265.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/32. + 100275.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/16. - 180495.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/64., 0.);
1558 case 14:
1559 return sign * RealGradient(375.*eta/2. - 2625.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 5250.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3150.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 31500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 110250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 147000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 66150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 375./2. - 4500.*(eta + 1.)*(eta + 1.)/(2.*2.) - 63000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 37800.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 220500.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 294000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 132300.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 15750.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 132300.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 176400.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 79380.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 21000.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 9450.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
1560 case 15:
1561 return sign * RealGradient(0., -375.*eta - 375.*xi/2. + 9000.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 31500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 42000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 18900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 47250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 84000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 47250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 2125./4. + 7875.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 165375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 99225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 2625.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 294000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 165375.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 7000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 392000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 176400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1750.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 220500.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 7875.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2.);
1562 case 16:
1563 return sign * RealGradient(0., 17625.*eta/256. + 6375.*xi/256. - 52875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/32. + 370125.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 123375.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/16. + 222075.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 700875.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/64. - 727125.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 874125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. + 45875./512. - 233625.*(eta + 1.)*(eta + 1.)/(2.*2.)/256. - 4906125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 1635375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 2943675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 44625.*(xi + 1.)*(xi + 1.)/(2.*2.)/256. + 5089875.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 6118875.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. + 242375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/128. - 1696625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/16. + 3053925.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 14875.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. + 2039625.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/32. - 291375.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/256. - 3671325.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 26775.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/256.);
1564 case 17:
1565 return sign * RealGradient(0., -2625.*eta/16. - 1125.*xi/16. + 7875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 55125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 18375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 33075.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. - 86625.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/4. + 70875.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 70875.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4. - 7125./32. + 28875.*((eta + 1.)*(eta + 1.)/(2.*2.))/16. + 606375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 202125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 363825.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/8. + 7875.*((xi + 1.)*(xi + 1.)/(2.*2.))/16. - 496125.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 496125.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. - 23625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/8. + 165375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 297675.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. - 2625.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. - 165375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. + 23625.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/16. + 297675.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/8. + 4725.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/16.);
1566 case 18:
1567 return sign * RealGradient(0., 71625.*eta/256. + 36375.*xi/256. - 214875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/32. + 1504125.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 501375.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/16. + 902475.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 1582875.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/64. - 1021125.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 874125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. + 203875./512. - 527625.*(eta + 1.)*(eta + 1.)/(2.*2.)/256. - 11080125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 3693375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 6648075.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 254625.*(xi + 1.)*(xi + 1.)/(2.*2.)/256. + 7147875.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 6118875.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. + 340375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/128. - 2382625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/16. + 4288725.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. + 84875.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. + 2039625.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/32. - 291375.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/256. - 3671325.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 152775.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/256.);
1568 case 19:
1569 return sign * RealGradient(0., -1875.*eta/2. - 1875.*xi/2. + 22500.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 78750.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 105000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 47250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 78750.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 105000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 47250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 6875./4. + 13125.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 275625.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 367500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 165375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 13125.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 367500.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 165375.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 8750.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 490000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 8750.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 220500.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 7875.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 7875.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2.);
1570 case 20:
1571 return RealGradient(0., -2925.*eta/4. - 3525.*xi/4. + 21150.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 155475.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 105000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 47250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 74025.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 98700.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 44415.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 11925./8. + 20475.*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 1088325.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 367500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 165375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 51825.*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 362775.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 652995.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. - 6825.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 490000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 8750.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 220500.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 12285.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 7875.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2.);
1572 case 21:
1573 return RealGradient(0., 150.*eta + 2775.*xi/8. - 8325.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 92475.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 84000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 47250.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 58275.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 38850.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 34965.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 3775./8. - 1050.*(eta + 1.)*(eta + 1.)/(2.*2.) - 647325.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 294000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 165375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 30825.*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 215775.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 388395.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4. + 1400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 392000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 220500.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 7000.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 176400.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 630.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 7875.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2.);
1574 case 22:
1575 return RealGradient(0., -675.*eta/2. - 1125.*xi/8. + 3375.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 6075.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. - 23625.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 15750.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 14175.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 3375./8. + 4725.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 42525.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/4. + 2025.*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 14175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 25515.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. - 3150.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2835.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2.);
1576 case 23:
1577 return RealGradient(0., 675.*eta/4. + 225.*xi/2. - 2700.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 6075.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. + 9450.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 12600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 5670.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 2025./8. - 4725.*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 42525.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. - 2025.*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 14175.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 25515.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4. + 1575.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2835.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4.);
1578 case 24:
1579 return RealGradient(2925.*eta/4. - 20475.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 20475.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 12285.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 74025.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 362775.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 183750.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 66150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 2925./4. - 10575.*(eta + 1.)*(eta + 1.)/(2.*2.) - 148050.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 88830.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 362775.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 367500.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 132300.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 51825.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 217665.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 220500.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 79380.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 26250.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 9450.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
1580 case 25:
1581 return RealGradient(-150.*eta + 2100.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 4200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2520.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 58275.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 215775.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 147000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 66150.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 150. + 8325.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 58275.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 34965.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 215775.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 294000.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 132300.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 30825.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 129465.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 176400.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 79380.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 21000.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 9450.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
1582 case 26:
1583 return RealGradient(675.*eta/2. - 4725.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 9450.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 5670.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 23625.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 14175.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 675./2. - 3375.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 23625.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 14175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 14175.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 2025.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 8505.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.), 0.);
1584 case 27:
1585 return RealGradient(-675.*eta/4. + 4725.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 4725.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2835.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 9450.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 14175.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 675./4. + 1350.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 18900.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 11340.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 14175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 2025.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 8505.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)), 0.);
1586 case 28:
1587 return RealGradient(585.*eta/2. - 12285.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 16380.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 12285.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 44415.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 217665.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 110250.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 39690.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 585./2. - 4230.*(eta + 1.)*(eta + 1.)/(2.*2.) - 118440.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 88830.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 290220.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 294000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 105840.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 10365.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 217665.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 220500.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 79380.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 10500.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 3780.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
1588 case 29:
1589 return RealGradient(-60.*eta + 1260.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 3360.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2520.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 34965.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 129465.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 88200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 39690.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 60. + 1665.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 46620.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 34965.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 172620.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 235200.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 105840.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) - 6165.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 129465.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 176400.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 79380.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) + 8400.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 3780.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
1590 case 30:
1591 return RealGradient(135.*eta - 2835.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 7560.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 5670.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 14175.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 8505.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 135. - 675.*(eta + 1.)*(eta + 1.)/(2.*2.) - 18900.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 14175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 11340.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 405.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 8505.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.), 0.);
1592 case 31:
1593 return RealGradient(-135.*eta/2. + 2835.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 3780.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 2835.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5670.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 8505.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 135./2. + 540.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 15120.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 11340.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 11340.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 405.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 8505.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)), 0.);
1594 case 32:
1595 return RealGradient(0., -585.*eta/2. - 705.*xi/4. + 8460.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 31095.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 42000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 18900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 44415.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 78960.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 44415.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 3555./8. + 12285.*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 652995.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 220500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 99225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 10365.*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 290220.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 652995.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. - 5460.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 392000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 176400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1750.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 220500.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 12285.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2.);
1596 case 33:
1597 return RealGradient(0., 60.*eta + 555.*xi/8. - 3330.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 18495.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 33600.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 18900.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 34965.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 31080.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 34965.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 995./8. - 630.*(eta + 1.)*(eta + 1.)/(2.*2.) - 388395.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 176400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 99225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 6165.*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 172620.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 388395.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4. + 1120.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 313600.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 176400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1400.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 176400.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 630.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2.);
1598 case 34:
1599 return RealGradient(0., -135.*eta - 225.*xi/8. + 1350.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1215.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 14175.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 12600.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 14175.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 1215./8. + 2835.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 25515.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/4. + 405.*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 11340.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 25515.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. - 2520.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2835.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2.);
1600 case 35:
1601 return RealGradient(0., 135.*eta/2. + 45.*xi/2. - 1080.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 1215.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 5670.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 10080.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 5670.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 675./8. - 2835.*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 25515.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. - 405.*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 11340.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 25515.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4. + 1260.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2835.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4.);
1602 case 36:
1603 return RealGradient(-72.*eta + 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1980.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 5100.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 5250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1890.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 72. + 1188.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 3060.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3150.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1134.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
1604 case 37:
1605 return RealGradient(-48.*eta + 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1980.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 5100.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 5250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1890.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 48. + 792.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2040.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2100.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 756.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.), 0.);
1606 case 38:
1607 return RealGradient(30.*eta - 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 990.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2550.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2625.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 945.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 30. - 495.*(eta + 1.)*(eta + 1.)/(2.*2.) + 1275.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2625.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. + 945.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.))/2., 0.);
1608 case 39:
1609 return RealGradient(0., -72.*eta - 297.*xi + 2376.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 9180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 12600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5670.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1980.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 333. + 120.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 7650.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 10500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4725.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 2295.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3150.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2835.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2.);
1610 case 40:
1611 return RealGradient(0., -48.*eta - 99.*xi + 1584.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 6120.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3780.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1980.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 135. + 120.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 7650.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 10500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4725.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 765.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1050.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2.);
1612 case 41:
1613 return RealGradient(0., 30.*eta + 99.*xi/2. - 990.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3825.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 5250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4725.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 990.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 147./2. - 60.*(eta + 1.)*(eta + 1.)/(2.*2.) - 3825.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5250.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4725.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. - 765.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 525.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 945.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4.);
1614 case 42:
1615 return RealGradient(0., 9.*eta + 108.*xi - 864.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 5400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 10080.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 5670.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 720.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 225./2. - 15.*(eta + 1.)*(eta + 1.)/(2.*2.) - 4500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4725.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1350.*(xi + 1.)*(xi + 1.)/(2.*2.) + 2520.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2835.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2.);
1616 case 43:
1617 return RealGradient(0., 6.*eta + 36.*xi - 576.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6720.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3780.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 720.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 81./2. - 15.*(eta + 1.)*(eta + 1.)/(2.*2.) - 4500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4725.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 450.*(xi + 1.)*(xi + 1.)/(2.*2.) + 840.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 945.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2.);
1618 case 44:
1619 return RealGradient(0., -15.*eta/4. - 18.*xi + 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 2250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 4200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4725.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. - 360.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 21. + 15.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 2250.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4725.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 225.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 420.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4.);
1620 case 45:
1621 return RealGradient(9.*eta - 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 720.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 3000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1890.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 9. - 432.*(eta + 1.)*(eta + 1.)/(2.*2.) + 1800.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2520.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1134.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
1622 case 46:
1623 return RealGradient(6.*eta - 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 720.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 3000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1890.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.) + 6. - 288.*(eta + 1.)*(eta + 1.)/(2.*2.) + 1200.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1680.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 756.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)), 0.);
1624 case 47:
1625 return RealGradient(-15.*eta/4. + 15.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 360.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 1500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2100.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 945.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)) - 15./4. + 180.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 750.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 1050.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.*2.)/2., 0.);
1626 case 48:
1627 return RealGradient(0., -36.*eta - 81.*xi/2. + 324.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 270.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 117./2. + 60.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 135.*((xi + 1.)*(xi + 1.)/(2.*2.))/2.);
1628 case 49:
1629 return RealGradient(0., 9.*eta + 27.*xi - 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 63./2. - 15.*(eta + 1.)*(eta + 1.)/(2.*2.) - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 135.*(xi + 1.)*(xi + 1.)/(2.*2.)/2.);
1630 case 50:
1631 return RealGradient(36.*eta - 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 36. - 162.*(eta + 1.)*(eta + 1.)/(2.*2.) + 90.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
1632 case 51:
1633 return RealGradient(-9.*eta + 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 150.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 9. + 108.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 90.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
1634 case 52:
1635 return RealGradient(24.*eta - 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 24. - 108.*(eta + 1.)*(eta + 1.)/(2.*2.) + 60.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
1636 case 53:
1637 return RealGradient(-6.*eta + 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 150.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 6. + 72.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 60.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
1638 case 54:
1639 return RealGradient(0., -24.*eta - 27.*xi/2. + 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 270.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 63./2. + 60.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 45.*((xi + 1.)*(xi + 1.)/(2.*2.))/2.);
1640 case 55:
1641 return RealGradient(0., 6.*eta + 9.*xi - 144.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 27./2. - 15.*(eta + 1.)*(eta + 1.)/(2.*2.) - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 45.*(xi + 1.)*(xi + 1.)/(2.*2.)/2.);
1642 case 56:
1643 return RealGradient(0., 0.);
1644 case 57:
1645 return RealGradient(0., -9.*xi/2. - 5./2. + 15.*((xi + 1.)*(xi + 1.)/(2.*2.))/2.);
1646 case 58:
1647 return RealGradient(0., 3.*xi + 5./2. - 15.*(xi + 1.)*(xi + 1.)/(2.*2.)/2.);
1648 case 59:
1649 return RealGradient(0., 0.);
1650 default:
1651 libmesh_error_msg("Invalid i = " << i);
1652 }
1653 } // j = 0
1654
1655 // d()/deta
1656 case 1:
1657 {
1658 switch(ii)
1659 {
1660 case 0:
1661 return sign * RealGradient(1875.*eta/2. + 1875.*xi/2. - 22500.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 78750.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 105000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 47250.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 78750.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 105000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 47250.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 6875./4. - 13125.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 275625.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 367500.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 165375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 13125.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 367500.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 165375.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 8750.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 490000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 220500.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 8750.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 220500.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 7875.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 7875.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2., 0.);
1662 case 1:
1663 return sign * RealGradient(-36375.*eta/256. - 71625.*xi/256. + 214875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/32. - 1582875.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/64. + 1021125.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 874125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. - 1504125.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/64. + 501375.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/16. - 902475.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. - 203875./512. + 254625.*((eta + 1.)*(eta + 1.)/(2.*2.))/256. + 11080125.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 7147875.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 6118875.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 527625.*((xi + 1.)*(xi + 1.)/(2.*2.))/256. - 3693375.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 6648075.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/128. - 84875.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 2382625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/16. - 2039625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/32. - 340375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/128. - 4288725.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 152775.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/256. + 3671325.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 291375.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/256., 0.);
1664 case 2:
1665 return sign * RealGradient(1125.*eta/16. + 2625.*xi/16. - 7875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 86625.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 70875.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 70875.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. + 55125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/4. - 18375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 33075.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. + 7125./32. - 7875.*(eta + 1.)*(eta + 1.)/(2.*2.)/16. - 606375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 496125.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 496125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. - 28875.*(xi + 1.)*(xi + 1.)/(2.*2.)/16. + 202125.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 363825.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/8. + 2625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 165375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 165375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 23625.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/8. + 297675.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. - 4725.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/16. - 297675.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. - 23625.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/16., 0.);
1666 case 3:
1667 return sign * RealGradient(-6375.*eta/256. - 17625.*xi/256. + 52875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/32. - 700875.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/64. + 727125.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 874125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. - 370125.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/64. + 123375.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/16. - 222075.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. - 45875./512. + 44625.*((eta + 1.)*(eta + 1.)/(2.*2.))/256. + 4906125.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 5089875.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 6118875.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 233625.*((xi + 1.)*(xi + 1.)/(2.*2.))/256. - 1635375.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 2943675.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/128. - 14875.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 1696625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/16. - 2039625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/32. - 242375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/128. - 3053925.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 26775.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/256. + 3671325.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 291375.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/256., 0.);
1668 case 4:
1669 return sign * RealGradient(375.*eta/2. + 375.*xi - 9000.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 47250.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 84000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 47250.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 31500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 42000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 18900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 2125./4. - 2625.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 165375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 294000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 165375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 7875.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 220500.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 99225.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1750.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 392000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 220500.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 7000.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 176400.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 7875.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2., 0.);
1670 case 5:
1671 return sign * RealGradient(0., -375.*xi/2. + 2625.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 31500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 110250.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 147000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 66150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 5250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 3150.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 375./2. + 63000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 294000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 132300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 4500.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 37800.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 132300.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 176400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 79380.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 15750.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 21000.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 9450.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
1672 case 6:
1673 return sign * RealGradient(0., 14325.*xi/256. - 105525.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/128. + 316575.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/32. - 2216025.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 738675.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/16. - 1329615.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 204225.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/128. - 58275.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 14325./256. - 612675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/32. + 4288725.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 1429575.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/16. + 2573235.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/64. - 42975.*(xi + 1.)*(xi + 1.)/(2.*2.)/32. + 174825.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/16. - 1223775.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 407925.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/8. - 734265.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/32. + 300825.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 100275.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/16. + 180495.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/64.);
1674 case 7:
1675 return sign * RealGradient(0., -525.*xi/16. + 5775.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/8. - 17325.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 121275.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 40425.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 72765.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/4. - 14175.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/8. + 4725.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 525./16. + 42525.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 297675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 99225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 178605.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/4. + 1575.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 14175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 66150.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 59535.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/2. - 11025.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 3675.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 6615.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/4.);
1676 case 8:
1677 return sign * RealGradient(0., 3525.*xi/256. - 46725.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/128. + 140175.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/32. - 981225.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 327075.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/16. - 588735.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 145425.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/128. - 58275.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 3525./256. - 436275.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/32. + 3053925.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 1017975.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/16. + 1832355.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/64. - 10575.*(xi + 1.)*(xi + 1.)/(2.*2.)/32. + 174825.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/16. - 1223775.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 407925.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/8. - 734265.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/32. + 74025.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 24675.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/16. + 44415.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/64.);
1678 case 9:
1679 return sign * RealGradient(0., -75.*xi + 1575.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 18900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 66150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 88200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 4200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 3150.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 75. + 50400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 176400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 235200.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 105840.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 1800.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 37800.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 132300.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 176400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 79380.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 6300.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 8400.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 3780.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
1680 case 10:
1681 return sign * RealGradient(75.*eta + 75.*xi - 3600.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 18900.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 33600.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 18900.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 18900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 33600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 18900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 575./4. - 1575.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 99225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 176400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 99225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1575.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 176400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 99225.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 313600.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 176400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1400.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 176400.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2., 0.);
1682 case 11:
1683 return sign * RealGradient(-1275.*eta/128. - 3525.*xi/256. + 10575.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/16. - 140175.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/32. + 145425.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/16. - 174825.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/32. - 222075.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/64. + 24675.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 222075.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. - 11725./512. + 26775.*((eta + 1.)*(eta + 1.)/(2.*2.))/256. + 2943675.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 3053925.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 3671325.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 46725.*((xi + 1.)*(xi + 1.)/(2.*2.))/256. - 327075.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/8. + 2943675.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/128. - 2975.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/16. + 339325.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 407925.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. - 48475.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/128. - 3053925.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 26775.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/256. + 3671325.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 58275.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/256., 0.);
1684 case 12:
1685 return sign * RealGradient(225.*eta/8. + 525.*xi/16. - 1575.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 17325.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 14175.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 14175.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 33075.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/4. - 14700.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 33075.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. + 1875./32. - 4725.*(eta + 1.)*(eta + 1.)/(2.*2.)/16. - 363825.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 297675.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 297675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. - 5775.*(xi + 1.)*(xi + 1.)/(2.*2.)/16. + 80850.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 363825.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/8. + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 132300.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 66150.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 4725.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/8. + 297675.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4. - 4725.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/16. - 297675.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. - 4725.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/16., 0.);
1686 case 13:
1687 return sign * RealGradient(-7275.*eta/128. - 14325.*xi/256. + 42975.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/16. - 316575.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/32. + 204225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/16. - 174825.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/32. - 902475.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/64. + 100275.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 902475.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. - 55325./512. + 152775.*((eta + 1.)*(eta + 1.)/(2.*2.))/256. + 6648075.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 4288725.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 3671325.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 105525.*((xi + 1.)*(xi + 1.)/(2.*2.))/256. - 738675.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/8. + 6648075.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/128. - 16975.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/16. + 476525.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 407925.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. - 68075.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/128. - 4288725.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/64. + 152775.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/256. + 3671325.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 58275.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/256., 0.);
1688 case 14:
1689 return sign * RealGradient(375.*eta + 375.*xi/2. - 9000.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 31500.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 42000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 18900.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 47250.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 84000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 47250.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 2125./4. - 7875.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 165375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 220500.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 99225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 2625.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 294000.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 165375.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 7000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 392000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 176400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 1750.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 220500.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 7875.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2., 0.);
1690 case 15:
1691 return sign * RealGradient(0., -315.*eta/2. - 375.*xi + 7875.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 47250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 110250.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 110250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 21000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 15750.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1005./2. + 840.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 126000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 294000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 294000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 105840.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 4500.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 94500.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 630.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 220500.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 79380.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 10500.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 10500.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 3780.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
1692 case 16:
1693 return sign * RealGradient(0., 9345.*eta/256. + 17625.*xi/256. - 233625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/128. + 700875.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 1635375.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 1635375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. - 588735.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 727125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/128. - 291375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 3195./32. - 29085.*(eta + 1.)*(eta + 1.)/(2.*2.)/128. - 2181375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/64. + 5089875.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 5089875.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. + 1832355.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/64. - 52875.*(xi + 1.)*(xi + 1.)/(2.*2.)/64. + 874125.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/32. + 11655.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 2039625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 2039625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/32. - 734265.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/32. + 123375.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 123375.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. + 44415.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/64.);
1694 case 17:
1695 return sign * RealGradient(0., -1155.*eta/16. - 2625.*xi/16. + 28875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/8. - 86625.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 202125.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 202125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. + 72765.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/4. - 70875.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/8. + 23625.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. - 1785./8. + 2835.*((eta + 1.)*(eta + 1.)/(2.*2.))/8. + 212625.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 496125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 496125.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. - 178605.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/4. + 7875.*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 70875.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/4. + 165375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 165375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. + 59535.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/2. - 18375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 18375.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. - 6615.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/4.);
1696 case 18:
1697 return sign * RealGradient(0., 21105.*eta/256. + 71625.*xi/256. - 527625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/128. + 1582875.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 3693375.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/64. + 3693375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/64. - 1329615.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/64. + 1021125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/128. - 291375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. + 10875./32. - 40845.*(eta + 1.)*(eta + 1.)/(2.*2.)/128. - 3063375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/64. + 7147875.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 7147875.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. + 2573235.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/64. - 214875.*(xi + 1.)*(xi + 1.)/(2.*2.)/64. + 874125.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/32. + 11655.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/64. - 2039625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 2039625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/32. - 734265.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/32. + 501375.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 501375.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. + 180495.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/64.);
1698 case 19:
1699 return sign * RealGradient(0., -525.*eta/2. - 1875.*xi/2. + 13125.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 78750.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 183750.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 183750.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 66150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 26250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 15750.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1125. + 1050.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 157500.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 367500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 367500.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 132300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 11250.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 94500.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 630.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 220500.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 79380.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 26250.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 26250.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 9450.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
1700 case 20:
1701 return RealGradient(0., -2925.*xi/4. + 20475.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 74025.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 362775.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 183750.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 66150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 20475.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 12285.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2925./4. + 148050.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 362775.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 367500.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 132300.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 10575.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 88830.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 217665.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 79380.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 51825.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 26250.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 9450.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
1702 case 21:
1703 return RealGradient(0., 150.*xi - 2100.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 58275.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 215775.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 147000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 66150.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 4200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2520.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 150. - 58275.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 215775.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 294000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 132300.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 8325.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 34965.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 129465.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 176400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 79380.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 30825.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 21000.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 9450.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
1704 case 22:
1705 return RealGradient(0., -675.*xi/2. + 4725.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 23625.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 14175.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 9450.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 5670.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 675./2. + 23625.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 14175.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3375.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 14175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 8505.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2025.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2.);
1706 case 23:
1707 return RealGradient(0., 675.*xi/4. - 4725.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 9450.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 14175.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 4725.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2835.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 675./4. - 18900.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 14175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1350.*(xi + 1.)*(xi + 1.)/(2.*2.) + 11340.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 8505.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2025.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2.);
1708 case 24:
1709 return RealGradient(3525.*eta/4. + 2925.*xi/4. - 21150.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 74025.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 98700.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 44415.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 155475.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 105000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 47250.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 11925./8. - 51825.*(eta + 1.)*(eta + 1.)/(2.*2.)/8. - 1088325.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 362775.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 652995.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. - 20475.*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 367500.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 165375.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 8750.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 490000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 220500.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 6825.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 220500.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 7875.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 12285.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4., 0.);
1710 case 25:
1711 return RealGradient(-2775.*eta/8. - 150.*xi + 8325.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 58275.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 38850.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 34965.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. - 92475.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. + 84000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 47250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 3775./8. + 30825.*((eta + 1.)*(eta + 1.)/(2.*2.))/8. + 647325.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 215775.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 388395.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. + 1050.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 294000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 165375.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 7000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 392000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 176400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1400.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 220500.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 7875.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 630.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)), 0.);
1712 case 26:
1713 return RealGradient(1125.*eta/8. + 675.*xi/2. - 3375.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 23625.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 15750.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 14175.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 6075.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 3375./8. - 2025.*(eta + 1.)*(eta + 1.)/(2.*2.)/8. - 42525.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 14175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 25515.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. - 4725.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 3150.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2835.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2., 0.);
1714 case 27:
1715 return RealGradient(-225.*eta/2. - 675.*xi/4. + 2700.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 9450.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 12600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5670.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 6075.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 2025./8. + 2025.*((eta + 1.)*(eta + 1.)/(2.*2.))/8. + 42525.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 14175.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 25515.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. + 4725.*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2835.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4., 0.);
1716 case 28:
1717 return RealGradient(705.*eta/4. + 585.*xi/2. - 8460.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 44415.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 78960.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 44415.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 31095.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 42000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 18900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 3555./8. - 10365.*(eta + 1.)*(eta + 1.)/(2.*2.)/8. - 652995.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 290220.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 652995.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. - 12285.*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 220500.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 99225.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1750.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 392000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 220500.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 5460.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 176400.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 12285.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4., 0.);
1718 case 29:
1719 return RealGradient(-555.*eta/8. - 60.*xi + 3330.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 34965.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 31080.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 34965.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. - 18495.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 33600.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 18900.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 995./8. + 6165.*((eta + 1.)*(eta + 1.)/(2.*2.))/8. + 388395.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 172620.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 388395.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. + 630.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 176400.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 99225.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 313600.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 176400.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1120.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 176400.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 1575.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 630.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)), 0.);
1720 case 30:
1721 return RealGradient(225.*eta/8. + 135.*xi - 1350.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 14175.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 12600.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 14175.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 1215.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 1215./8. - 405.*(eta + 1.)*(eta + 1.)/(2.*2.)/8. - 25515.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 11340.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 25515.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4. - 2835.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 2520.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2835.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2., 0.);
1722 case 31:
1723 return RealGradient(-45.*eta/2. - 135.*xi/2. + 1080.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 5670.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 10080.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5670.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 1215.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 675./8. + 405.*((eta + 1.)*(eta + 1.)/(2.*2.))/8. + 25515.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 11340.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 25515.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. + 2835.*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 1260.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2835.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4., 0.);
1724 case 32:
1725 return RealGradient(0., -585.*xi/2. + 12285.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 44415.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 217665.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 110250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 39690.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 16380.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 12285.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 585./2. + 118440.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 290220.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 294000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 105840.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 4230.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 88830.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 217665.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 220500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 79380.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 10365.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 10500.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 3780.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
1726 case 33:
1727 return RealGradient(0., 60.*xi - 1260.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 34965.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 129465.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 88200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 39690.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 3360.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2520.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 60. - 46620.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 172620.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 235200.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 105840.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 1665.*(xi + 1.)*(xi + 1.)/(2.*2.) + 34965.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 129465.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 176400.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 79380.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 6165.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 8400.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 3780.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
1728 case 34:
1729 return RealGradient(0., -135.*xi + 2835.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 14175.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 8505.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 7560.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 5670.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 135. + 18900.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 11340.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 675.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 14175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 8505.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 405.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1730 case 35:
1731 return RealGradient(0., 135.*xi/2. - 2835.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 5670.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8505.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 3780.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 2835.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 135./2. - 15120.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 11340.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 540.*(xi + 1.)*(xi + 1.)/(2.*2.) + 11340.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 8505.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 405.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1732 case 36:
1733 return RealGradient(-297.*eta - 72.*xi + 2376.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1980.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 9180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 12600.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 5670.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 333. + 2295.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 7650.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 120.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 10500.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4725.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 3150.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2835.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2., 0.);
1734 case 37:
1735 return RealGradient(-99.*eta - 48.*xi + 1584.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1980.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 6120.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 8400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 3780.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 135. + 765.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 7650.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 120.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 10500.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4725.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 1050.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 945.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2., 0.);
1736 case 38:
1737 return RealGradient(99.*eta/2. + 30.*xi - 990.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 990.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 3825.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 5250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4725.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 147./2. - 765.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 3825.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 60.*(xi + 1.)*(xi + 1.)/(2.*2.) + 5250.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4725.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4., 0.);
1738 case 39:
1739 return RealGradient(0., -72.*xi + 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1980.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 1890.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 72. + 1188.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3060.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3150.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 1134.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
1740 case 40:
1741 return RealGradient(0., -48.*xi + 240.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 1980.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 5250.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 1890.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 48. + 792.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2040.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2100.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 756.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.));
1742 case 41:
1743 return RealGradient(0., 30.*xi - 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 990.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2550.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2625.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 945.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 30. - 495.*(xi + 1.)*(xi + 1.)/(2.*2.) + 1275.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2625.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.))/2.);
1744 case 42:
1745 return RealGradient(0., 9.*xi - 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 720.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 1890.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 9. - 432.*(xi + 1.)*(xi + 1.)/(2.*2.) + 1800.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2520.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 1134.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
1746 case 43:
1747 return RealGradient(0., 6.*xi - 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 720.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4200.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 1890.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.) + 6. - 288.*(xi + 1.)*(xi + 1.)/(2.*2.) + 1200.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1680.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 756.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)));
1748 case 44:
1749 return RealGradient(0., -15.*xi/4. + 15.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 360.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 1500.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2100.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) + 945.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)) - 15./4. + 180.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 750.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1050.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) - 945.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.*2.)/2.);
1750 case 45:
1751 return RealGradient(108.*eta + 9.*xi - 864.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 720.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 5400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 10080.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 5670.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 225./2. - 1350.*(eta + 1.)*(eta + 1.)/(2.*2.) - 4500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 15.*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4725.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 2520.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2835.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2., 0.);
1752 case 46:
1753 return RealGradient(36.*eta + 6.*xi - 576.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 720.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 3600.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 6720.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3780.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 81./2. - 450.*(eta + 1.)*(eta + 1.)/(2.*2.) - 4500.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 15.*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4725.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 840.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2., 0.);
1754 case 47:
1755 return RealGradient(-18.*eta - 15.*xi/4. + 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 360.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 2250.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 4200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4725.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 21. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 2250.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 15.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 4200.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4725.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. - 420.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 945.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4., 0.);
1756 case 48:
1757 return RealGradient(0., -36.*xi + 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 36. + 162.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 90.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1758 case 49:
1759 return RealGradient(0., 9.*xi - 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 9. - 108.*(xi + 1.)*(xi + 1.)/(2.*2.) + 90.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1760 case 50:
1761 return RealGradient(81.*eta/2. + 36.*xi - 324.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 270.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 117./2. - 135.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 60.*(xi + 1.)*(xi + 1.)/(2.*2.), 0.);
1762 case 51:
1763 return RealGradient(-27.*eta - 9.*xi + 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 270.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 63./2. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 15.*((xi + 1.)*(xi + 1.)/(2.*2.)), 0.);
1764 case 52:
1765 return RealGradient(27.*eta/2. + 24.*xi - 216.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 270.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 180.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 63./2. - 45.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 60.*(xi + 1.)*(xi + 1.)/(2.*2.), 0.);
1766 case 53:
1767 return RealGradient(-9.*eta - 6.*xi + 144.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 180.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 180.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 27./2. + 45.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 225.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 15.*((xi + 1.)*(xi + 1.)/(2.*2.)), 0.);
1768 case 54:
1769 return RealGradient(0., -24.*xi + 120.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 270.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 24. + 108.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 60.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
1770 case 55:
1771 return RealGradient(0., 6.*xi - 30.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 180.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 150.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 6. - 72.*(xi + 1.)*(xi + 1.)/(2.*2.) + 60.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
1772 case 56:
1773 return RealGradient(-9.*eta/2. - 5./2. + 15.*((eta + 1.)*(eta + 1.)/(2.*2.))/2., 0.);
1774 case 57:
1775 return RealGradient(0., 0.);
1776 case 58:
1777 return RealGradient(0., 0.);
1778 case 59:
1779 return RealGradient(3.*eta + 5./2. - 15.*(eta + 1.)*(eta + 1.)/(2.*2.)/2., 0.);
1780 default:
1781 libmesh_error_msg("Invalid i = " << i);
1782 }
1783 } // j = 1
1784
1785 default:
1786 libmesh_error_msg("Invalid j = " << j);
1787 }
1788 }
1789
1790 case TRI6:
1791 case TRI7:
1792 {
1793 switch (j)
1794 {
1795 // d()/dxi
1796 case 0:
1797 {
1798 switch(ii)
1799 {
1800 case 0:
1801 return sign * RealGradient(-12600.*eta*xi + 2800.*eta + 15120.*eta*(xi*xi) - 4200.*eta*xi*xi*xi + 2100.*xi + 22680.*xi*(eta*eta) - 12600.*xi*eta*eta*eta - 300. - 8400.*eta*eta - 12600.*eta*eta*xi*xi - 4200.*xi*xi + 10080.*(eta*eta*eta) + 2520.*(xi*xi*xi) - 4200.*eta*eta*eta*eta, 8400.*eta*xi - 700.*eta - 22680.*eta*xi*xi + 16800.*eta*(xi*xi*xi) - 1400.*xi - 15120.*xi*eta*eta + 8400.*xi*(eta*eta*eta) + 75. + 2100.*(eta*eta) + 18900.*(eta*eta)*(xi*xi) + 6300.*(xi*xi) - 2520.*eta*eta*eta - 10080.*xi*xi*xi + 1050.*(eta*eta*eta*eta) + 5250.*(xi*xi*xi*xi));
1802 case 1:
1803 return sign * RealGradient(136185.*eta*xi/32. - 12145.*eta/16. - 20475.*eta*xi*xi/4. + 19425.*eta*(xi*xi*xi)/16. - 21105.*xi/32. - 240975.*xi*eta*eta/32. + 127575.*xi*(eta*eta*eta)/32. + 2865./32. + 7245.*(eta*eta)/4. + 146475.*(eta*eta)*(xi*xi)/32. + 40845.*(xi*xi)/32. - 25515.*eta*eta*eta/16. - 11655.*xi*xi*xi/16. + 14175.*(eta*eta*eta*eta)/32., -39375.*eta*xi/16. + 3045.*eta/32. + 252315.*eta*(xi*xi)/32. - 48825.*eta*xi*xi*xi/8. + 1715.*xi/4. + 25515.*xi*(eta*eta)/8. - 14175.*xi*eta*eta*eta/16. - 2395./128. + 2835.*(eta*eta)/64. - 382725.*eta*eta*xi*xi/64. - 125265.*xi*xi/64. - 14175.*eta*eta*eta/32. + 48615.*(xi*xi*xi)/16. + 42525.*(eta*eta*eta*eta)/128. - 97125.*xi*xi*xi*xi/64.);
1804 case 2:
1805 return sign * RealGradient(-3255.*eta*xi/2. + 3780.*eta*(xi*xi) - 1575.*eta*xi*xi*xi + 1155.*xi/2. + 945.*xi*(eta*eta)/2. + 1575.*xi*(eta*eta*eta)/2. - 105./2. + 840.*(eta*eta) - 4725.*eta*eta*xi*xi/2. - 2835.*xi*xi/2. - 1575.*eta*eta*eta + 945.*(xi*xi*xi) + 1575.*(eta*eta*eta*eta)/2., 105.*eta*xi + 35.*eta/2. - 4725.*eta*xi*xi/2. + 3150.*eta*(xi*xi*xi) - 315.*xi + 1890.*xi*(eta*eta) - 1575.*xi*eta*eta*eta + 85./8. - 525.*eta*eta/4. - 4725.*eta*eta*xi*xi/4. + 7455.*(xi*xi)/4. + 105.*(eta*eta*eta)/2. - 3465.*xi*xi*xi + 525.*(eta*eta*eta*eta)/8. + 7875.*(xi*xi*xi*xi)/4.);
1806 case 3:
1807 return sign * RealGradient(-16695.*eta*xi/32. + 1855.*eta/16. - 2835.*eta*xi*xi/4. + 19425.*eta*(xi*xi*xi)/16. - 9345.*xi/32. + 76545.*xi*(eta*eta)/32. - 48825.*xi*eta*eta*eta/32. + 705./32. - 1155.*eta*eta/4. - 29925.*eta*eta*xi*xi/32. + 29085.*(xi*xi)/32. - 315.*eta*eta*eta/16. - 11655.*xi*xi*xi/16. + 5775.*(eta*eta*eta*eta)/32., 9345.*eta*xi/16. - 875.*eta/32. - 65205.*eta*xi*xi/32. + 9975.*eta*(xi*xi*xi)/8. + 595.*xi/4. - 4725.*xi*eta*eta/8. - 5775.*xi*eta*eta*eta/16. - 555./128. + 1155.*(eta*eta)/64. + 146475.*(eta*eta)*(xi*xi)/64. - 66465.*xi*xi/64. + 945.*(eta*eta*eta)/32. + 36855.*(xi*xi*xi)/16. + 525.*(eta*eta*eta*eta)/128. - 97125.*xi*xi*xi*xi/64.);
1808 case 4:
1809 return sign * RealGradient(-1680.*eta*xi + 140.*eta + 5040.*eta*(xi*xi) - 4200.*eta*xi*xi*xi + 1260.*xi - 120. - 3360.*xi*xi + 2520.*(xi*xi*xi), -700.*xi + 25. + 4200.*(xi*xi) - 8400.*xi*xi*xi + 5250.*(xi*xi*xi*xi));
1810 case 5:
1811 return sign * RealGradient(-1680.*eta*xi + 140.*eta + 5040.*eta*(xi*xi) - 4200.*eta*xi*xi*xi, -700.*xi + 25. + 4200.*(xi*xi) - 8400.*xi*xi*xi + 5250.*(xi*xi*xi*xi));
1812 case 6:
1813 return sign * RealGradient(-2835.*eta*xi/2. + 735.*eta/4. + 42525.*eta*(xi*xi)/16. - 42525.*eta*xi*xi*xi/32. + 76545.*xi*(eta*eta)/16. - 42525.*xi*eta*eta*eta/16. - 1575.*eta*eta/2. - 42525.*eta*eta*xi*xi/8. + 12285.*(eta*eta*eta)/16. - 1575.*eta*eta*eta*eta/8., 2205.*eta*xi - 455.*eta/4. - 127575.*eta*xi*xi/16. + 14175.*eta*(xi*xi*xi)/2. - 1785.*xi/4. - 31185.*xi*eta*eta/16. + 1575.*xi*(eta*eta*eta)/4. + 20. + 525.*(eta*eta)/4. + 127575.*(eta*eta)*(xi*xi)/32. + 8505.*(xi*xi)/4. - 735.*eta*eta*eta/16. - 53865.*xi*xi*xi/16. + 525.*(eta*eta*eta*eta)/128. + 212625.*(xi*xi*xi*xi)/128.);
1814 case 7:
1815 return sign * RealGradient(-840.*eta*xi + 175.*eta + 945.*eta*(xi*xi) - 525.*eta*xi*xi*xi/2. + 4725.*xi*(eta*eta) - 4725.*xi*eta*eta*eta - 1260.*eta*eta - 3150.*eta*eta*xi*xi + 2205.*(eta*eta*eta) - 1050.*eta*eta*eta*eta, 2520.*eta*xi - 175.*eta - 6615.*eta*xi*xi + 4200.*eta*(xi*xi*xi) - 245.*xi - 4725.*xi*eta*eta + 2100.*xi*(eta*eta*eta) + 15. + 420.*(eta*eta) + 14175.*(eta*eta)*(xi*xi)/2. + 840.*(xi*xi) - 315.*eta*eta*eta - 945.*xi*xi*xi + 525.*(eta*eta*eta*eta)/8. + 2625.*(xi*xi*xi*xi)/8.);
1816 case 8:
1817 return sign * RealGradient(-525.*eta*xi/2. + 455.*eta/4. + 2205.*eta*(xi*xi)/16. - 525.*eta*xi*xi*xi/32. + 31185.*xi*(eta*eta)/16. - 42525.*xi*eta*eta*eta/16. - 2205.*eta*eta/2. - 4725.*eta*eta*xi*xi/8. + 42525.*(eta*eta*eta)/16. - 14175.*eta*eta*eta*eta/8., 1575.*eta*xi - 735.*eta/4. - 36855.*eta*xi*xi/16. + 1575.*eta*(xi*xi*xi)/2. - 385.*xi/4. - 76545.*xi*eta*eta/16. + 14175.*xi*(eta*eta*eta)/4. + 10. + 2835.*(eta*eta)/4. + 127575.*(eta*eta)*(xi*xi)/32. + 735.*(xi*xi)/4. - 14175.*eta*eta*eta/16. - 1785.*xi*xi*xi/16. + 42525.*(eta*eta*eta*eta)/128. + 2625.*(xi*xi*xi*xi)/128.);
1818 case 9:
1819 return sign * RealGradient(0., -140.*eta + 5. + 840.*(eta*eta) - 1680.*eta*eta*eta + 1050.*(eta*eta*eta*eta));
1820 case 10:
1821 return sign * RealGradient(0., -140.*eta + 5. + 840.*(eta*eta) - 1680.*eta*eta*eta + 1050.*(eta*eta*eta*eta));
1822 case 11:
1823 return sign * RealGradient(-1155.*eta*xi/32. + 875.*eta/32. - 2835.*eta*xi*xi/32. - 525.*eta*xi*xi*xi/32. + 4725.*xi*(eta*eta)/8. - 48825.*xi*eta*eta*eta/32. - 9345.*eta*eta/32. + 17325.*(eta*eta)*(xi*xi)/32. + 21735.*(eta*eta*eta)/32. - 9975.*eta*eta*eta*eta/32., 1155.*eta*xi/2. - 1855.*eta/16. + 945.*eta*(xi*xi)/16. - 5775.*eta*xi*xi*xi/8. - 595.*xi/32. - 76545.*xi*eta*eta/32. + 9975.*xi*(eta*eta*eta)/16. + 825./128. + 16695.*(eta*eta)/64. + 146475.*(eta*eta)*(xi*xi)/64. - 1785.*xi*xi/64. + 945.*(eta*eta*eta)/4. + 945.*(xi*xi*xi)/32. - 19425.*eta*eta*eta*eta/64. + 2625.*(xi*xi*xi*xi)/128.);
1824 case 12:
1825 return sign * RealGradient(525.*eta*xi/2. - 35.*eta/2. - 315.*eta*xi*xi/2. - 525.*eta*xi*xi*xi/2. - 1890.*xi*eta*eta + 1575.*xi*(eta*eta*eta)/2. - 105.*eta*eta/2. + 4725.*(eta*eta)*(xi*xi)/2. + 1575.*(eta*eta*eta)/2. - 1575.*eta*eta*eta*eta/2., -1680.*eta*xi + 4725.*eta*(xi*xi) - 3150.*eta*xi*xi*xi + 175.*xi/2. - 945.*xi*eta*eta/2. + 1575.*xi*(eta*eta*eta) - 55./8. + 3255.*(eta*eta)/4. - 4725.*eta*eta*xi*xi/4. - 105.*xi*xi/4. - 1260.*eta*eta*eta - 735.*xi*xi*xi/2. + 1575.*(eta*eta*eta*eta)/4. + 2625.*(xi*xi*xi*xi)/8.);
1826 case 13:
1827 return sign * RealGradient(-2835.*eta*xi/32. - 3045.*eta/32. + 42525.*eta*(xi*xi)/32. - 42525.*eta*xi*xi*xi/32. - 25515.*xi*eta*eta/8. + 127575.*xi*(eta*eta*eta)/32. + 39375.*(eta*eta)/32. + 42525.*(eta*eta)*(xi*xi)/32. - 84105.*eta*eta*eta/32. + 48825.*(eta*eta*eta*eta)/32., -7245.*eta*xi/2. + 12145.*eta/16. + 76545.*eta*(xi*xi)/16. - 14175.*eta*xi*xi*xi/8. - 11235.*xi/32. + 240975.*xi*(eta*eta)/32. - 48825.*xi*eta*eta*eta/16. - 695./128. - 136185.*eta*eta/64. - 382725.*eta*eta*xi*xi/64. + 127575.*(xi*xi)/64. + 6825.*(eta*eta*eta)/4. - 104895.*xi*xi*xi/32. - 19425.*eta*eta*eta*eta/64. + 212625.*(xi*xi*xi*xi)/128.);
1828 case 14:
1829 return sign * RealGradient(-4200.*eta*xi + 700.*eta + 7560.*eta*(xi*xi) - 4200.*eta*xi*xi*xi + 15120.*xi*(eta*eta) - 12600.*xi*eta*eta*eta - 4200.*eta*eta - 12600.*eta*eta*xi*xi + 7560.*(eta*eta*eta) - 4200.*eta*eta*eta*eta, 16800.*eta*xi - 2800.*eta - 30240.*eta*xi*xi + 16800.*eta*(xi*xi*xi) - 3500.*xi - 22680.*xi*eta*eta + 8400.*xi*(eta*eta*eta) + 375. + 6300.*(eta*eta) + 18900.*(eta*eta)*(xi*xi) + 10500.*(xi*xi) - 5040.*eta*eta*eta - 12600.*xi*xi*xi + 1050.*(eta*eta*eta*eta) + 5250.*(xi*xi*xi*xi));
1830 case 15:
1831 return RealGradient(70560.*eta*xi - 19600.*eta - 70560.*eta*xi*xi + 16800.*eta*(xi*xi*xi) - 211680.*xi*eta*eta + 151200.*xi*(eta*eta*eta) + 94080.*(eta*eta) + 100800.*(eta*eta)*(xi*xi) - 141120.*eta*eta*eta + 67200.*(eta*eta*eta*eta), -94080.*eta*xi + 9800.*eta + 211680.*eta*(xi*xi) - 134400.*eta*xi*xi*xi + 9800.*xi + 211680.*xi*(eta*eta) - 134400.*xi*eta*eta*eta - 700. - 35280.*eta*eta - 226800.*eta*eta*xi*xi - 35280.*xi*xi + 47040.*(eta*eta*eta) + 47040.*(xi*xi*xi) - 21000.*eta*eta*eta*eta - 21000.*xi*xi*xi*xi);
1832 case 16:
1833 return RealGradient(-70560.*eta*xi + 9800.*eta + 141120.*eta*(xi*xi) - 84000.*eta*xi*xi*xi + 211680.*xi*(eta*eta) - 151200.*xi*eta*eta*eta - 47040.*eta*eta - 201600.*eta*eta*xi*xi + 70560.*(eta*eta*eta) - 33600.*eta*eta*eta*eta, 188160.*eta*xi - 19600.*eta - 423360.*eta*xi*xi + 268800.*eta*(xi*xi*xi) - 49000.*xi - 211680.*xi*eta*eta + 67200.*xi*(eta*eta*eta) + 3500. + 35280.*(eta*eta) + 226800.*(eta*eta)*(xi*xi) + 176400.*(xi*xi) - 23520.*eta*eta*eta - 235200.*xi*xi*xi + 4200.*(eta*eta*eta*eta) + 105000.*(xi*xi*xi*xi));
1834 case 17:
1835 return RealGradient(-60480.*eta*xi + 6440.*eta + 131040.*eta*(xi*xi) - 67200.*eta*xi*xi*xi + 60480.*xi*(eta*eta) - 6720.*eta*eta - 100800.*eta*eta*xi*xi, 26880.*eta*xi - 1120.*eta - 120960.*eta*xi*xi + 134400.*eta*(xi*xi*xi) - 14560.*xi + 560. + 80640.*(xi*xi) - 147840.*xi*xi*xi + 84000.*(xi*xi*xi*xi));
1836 case 18:
1837 return RealGradient(40320.*eta*xi - 3640.*eta - 110880.*eta*xi*xi + 84000.*eta*(xi*xi*xi) - 30240.*xi*eta*eta + 3360.*(eta*eta) + 50400.*(eta*eta)*(xi*xi), -13440.*eta*xi + 560.*eta + 60480.*eta*(xi*xi) - 67200.*eta*xi*xi*xi + 18200.*xi - 700. - 100800.*xi*xi + 184800.*(xi*xi*xi) - 105000.*xi*xi*xi*xi);
1838 case 19:
1839 return RealGradient(560.*eta - 6720.*eta*eta + 20160.*(eta*eta*eta) - 16800.*eta*eta*eta*eta, 6720.*eta*xi - 3640.*eta - 280.*xi - 30240.*xi*eta*eta + 33600.*xi*(eta*eta*eta) + 140. + 20160.*(eta*eta) - 36960.*eta*eta*eta + 21000.*(eta*eta*eta*eta));
1840 case 20:
1841 return RealGradient(-1120.*eta + 13440.*(eta*eta) - 40320.*eta*eta*eta + 33600.*(eta*eta*eta*eta), -13440.*eta*xi + 6440.*eta + 560.*xi + 60480.*xi*(eta*eta) - 67200.*xi*eta*eta*eta - 280. - 30240.*eta*eta + 43680.*(eta*eta*eta) - 16800.*eta*eta*eta*eta);
1842 case 21:
1843 return RealGradient(-35840.*eta*xi + 17920.*eta/3. + 156800.*eta*(xi*xi)/3. - 179200.*eta*xi*xi*xi/9. + 125440.*xi*(eta*eta) - 89600.*xi*eta*eta*eta - 29120.*eta*eta - 291200.*eta*eta*xi*xi/3. + 116480.*(eta*eta*eta)/3. - 140000.*eta*eta*eta*eta/9., 56000.*eta*xi - 10360.*eta/3. - 170240.*eta*xi*xi + 1164800.*eta*(xi*xi*xi)/9. - 24920.*xi/3. - 81760.*xi*eta*eta + 280000.*xi*(eta*eta*eta)/9. + 420. + 6720.*(eta*eta) + 134400.*(eta*eta)*(xi*xi) + 35840.*(xi*xi) - 39200.*eta*eta*eta/9. - 474880.*xi*xi*xi/9. + 7000.*(eta*eta*eta*eta)/9. + 224000.*(xi*xi*xi*xi)/9.);
1844 case 22:
1845 return RealGradient(29120.*eta*xi - 12880.*eta/3. - 152320.*eta*xi*xi/3. + 224000.*eta*(xi*xi*xi)/9. - 109760.*xi*eta*eta + 78400.*xi*(eta*eta*eta) + 22400.*(eta*eta) + 313600.*(eta*eta)*(xi*xi)/3. - 91840.*eta*eta*eta/3. + 112000.*(eta*eta*eta*eta)/9., -62720.*eta*xi + 12040.*eta/3. + 185920.*eta*(xi*xi) - 1254400.*eta*xi*xi*xi/9. + 32480.*xi/3. + 76160.*xi*(eta*eta) - 224000.*xi*eta*eta*eta/9. - 560. - 6720.*eta*eta - 117600.*eta*eta*xi*xi - 45920.*xi*xi + 34720.*(eta*eta*eta)/9. + 600320.*(xi*xi*xi)/9. - 5600.*eta*eta*eta*eta/9. - 280000.*xi*xi*xi*xi/9.);
1846 case 23:
1847 return RealGradient(-13440.*eta*xi + 12040.*eta/3. + 34720.*eta*(xi*xi)/3. - 22400.*eta*xi*xi*xi/9. + 76160.*xi*(eta*eta) - 78400.*xi*eta*eta*eta - 31360.*eta*eta - 112000.*eta*eta*xi*xi/3. + 185920.*(eta*eta*eta)/3. - 313600.*eta*eta*eta*eta/9., 44800.*eta*xi - 12880.*eta/3. - 91840.*eta*xi*xi + 448000.*eta*(xi*xi*xi)/9. - 10640.*xi/3. - 109760.*xi*eta*eta + 627200.*xi*(eta*eta*eta)/9. + 280. + 14560.*(eta*eta) + 117600.*(eta*eta)*(xi*xi) + 10080.*(xi*xi) - 152320.*eta*eta*eta/9. - 89600.*xi*xi*xi/9. + 56000.*(eta*eta*eta*eta)/9. + 28000.*(xi*xi*xi*xi)/9.);
1848 case 24:
1849 return RealGradient(13440.*eta*xi - 10360.*eta/3. - 39200.*eta*xi*xi/3. + 28000.*eta*(xi*xi*xi)/9. - 81760.*xi*eta*eta + 89600.*xi*(eta*eta*eta) + 28000.*(eta*eta) + 140000.*(eta*eta)*(xi*xi)/3. - 170240.*eta*eta*eta/3. + 291200.*(eta*eta*eta*eta)/9., -58240.*eta*xi + 17920.*eta/3. + 116480.*eta*(xi*xi) - 560000.*eta*xi*xi*xi/9. + 14840.*xi/3. + 125440.*xi*(eta*eta) - 582400.*xi*eta*eta*eta/9. - 420. - 17920.*eta*eta - 134400.*eta*eta*xi*xi - 13440.*xi*xi + 156800.*(eta*eta*eta)/9. + 115360.*(xi*xi*xi)/9. - 44800.*eta*eta*eta*eta/9. - 35000.*xi*xi*xi*xi/9.);
1850 case 25:
1851 return RealGradient(11200.*eta*xi - 12880.*eta/9. - 49280.*eta*xi*xi/3. + 44800.*eta*(xi*xi*xi)/9. - 2240.*xi*eta*eta - 11200.*xi*eta*eta*eta - 15680.*eta*eta/3. + 22400.*(eta*eta)*(xi*xi)/3. + 51520.*(eta*eta*eta)/3. - 95200.*eta*eta*eta*eta/9., 15680.*eta*xi/3. - 10360.*eta/9. + 2240.*eta*(xi*xi) - 89600.*eta*xi*xi*xi/9. + 6440.*xi/9. - 25760.*xi*eta*eta + 190400.*xi*(eta*eta*eta)/9. + 140./9. + 5600.*(eta*eta) + 16800.*(eta*eta)*(xi*xi) - 5600.*xi*xi - 75040.*eta*eta*eta/9. + 98560.*(xi*xi*xi)/9. + 35000.*(eta*eta*eta*eta)/9. - 56000.*xi*xi*xi*xi/9.);
1852 case 26:
1853 return RealGradient(-2240.*eta*xi - 9520.*eta/9. + 71680.*eta*(xi*xi)/3. - 224000.*eta*xi*xi*xi/9. - 51520.*xi*eta*eta + 56000.*xi*(eta*eta*eta) + 44800.*(eta*eta)/3. + 89600.*(eta*eta)*(xi*xi)/3. - 82880.*eta*eta*eta/3. + 123200.*(eta*eta*eta*eta)/9., -138880.*eta*xi/3. + 51800.*eta/9. + 82880.*eta*(xi*xi) - 358400.*eta*xi*xi*xi/9. - 48160.*xi/9. + 80640.*xi*(eta*eta) - 246400.*xi*eta*eta*eta/9. + 560./9. - 13440.*eta*eta - 84000.*eta*eta*xi*xi + 32480.*(xi*xi) + 79520.*(eta*eta*eta)/9. - 519680.*xi*xi*xi/9. - 11200.*eta*eta*eta*eta/9. + 280000.*(xi*xi*xi*xi)/9.);
1854 case 27:
1855 return RealGradient(-1120.*eta*xi + 2800.*eta/9. - 1120.*eta*xi*xi/3. + 5600.*eta*(xi*xi*xi)/9. + 12320.*xi*(eta*eta) - 5600.*xi*eta*eta*eta - 4480.*eta*eta/3. - 22400.*eta*eta*xi*xi/3. - 11200.*eta*eta*eta/3. + 44800.*(eta*eta*eta*eta)/9., 4480.*eta*xi/3. + 5320.*eta/9. - 12320.*eta*xi*xi + 89600.*eta*(xi*xi*xi)/9. - 1400.*xi/9. + 5600.*xi*(eta*eta) - 89600.*xi*eta*eta*eta/9. - 140./9. - 3920.*eta*eta + 8400.*(eta*eta)*(xi*xi) + 560.*(xi*xi) + 64960.*(eta*eta*eta)/9. + 2240.*(xi*xi*xi)/9. - 35000.*eta*eta*eta*eta/9. - 7000.*xi*xi*xi*xi/9.);
1856 case 28:
1857 return RealGradient(3360.*eta*xi + 280.*eta/9. - 11200.*eta*xi*xi/3. - 28000.*eta*xi*xi*xi/9. - 19040.*xi*eta*eta - 5600.*xi*eta*eta*eta - 11200.*eta*eta/3. + 112000.*(eta*eta)*(xi*xi)/3. + 52640.*(eta*eta*eta)/3. - 123200.*eta*eta*eta*eta/9., -35840.*eta*xi/3. - 8960.*eta/9. + 58240.*eta*(xi*xi) - 448000.*eta*xi*xi*xi/9. + 8680.*xi/9. - 30240.*xi*eta*eta + 246400.*xi*(eta*eta*eta)/9. - 140./9. + 9520.*(eta*eta) + 8400.*(eta*eta)*(xi*xi) - 1680.*xi*xi - 99680.*eta*eta*eta/9. - 24640.*xi*xi*xi/9. + 23800.*(eta*eta*eta*eta)/9. + 35000.*(xi*xi*xi*xi)/9.);
1858 case 29:
1859 return RealGradient(-26880.*eta*xi + 51800.*eta/9. + 79520.*eta*(xi*xi)/3. - 44800.*eta*xi*xi*xi/9. + 80640.*xi*(eta*eta) - 56000.*xi*eta*eta*eta - 69440.*eta*eta/3. - 123200.*eta*eta*xi*xi/3. + 82880.*(eta*eta*eta)/3. - 89600.*eta*eta*eta*eta/9., 89600.*eta*xi/3. - 9520.*eta/9. - 82880.*eta*xi*xi + 492800.*eta*(xi*xi*xi)/9. - 29680.*xi/9. - 51520.*xi*eta*eta + 179200.*xi*(eta*eta*eta)/9. + 1400./9. - 1120.*eta*eta + 84000.*(eta*eta)*(xi*xi) + 12320.*(xi*xi) + 71680.*(eta*eta*eta)/9. - 138880.*xi*xi*xi/9. - 56000.*eta*eta*eta*eta/9. + 56000.*(xi*xi*xi*xi)/9.);
1860 case 30:
1861 return RealGradient(11200.*eta*xi - 10360.*eta/9. - 75040.*eta*xi*xi/3. + 140000.*eta*(xi*xi*xi)/9. - 25760.*xi*eta*eta + 11200.*xi*(eta*eta*eta) + 7840.*(eta*eta)/3. + 95200.*(eta*eta)*(xi*xi)/3. + 2240.*(eta*eta*eta)/3. - 22400.*eta*eta*eta*eta/9., -31360.*eta*xi/3. - 12880.*eta/9. + 51520.*eta*(xi*xi) - 380800.*eta*xi*xi*xi/9. + 51800.*xi/9. - 2240.*xi*eta*eta + 44800.*xi*(eta*eta*eta)/9. - 700./9. + 5600.*(eta*eta) - 16800.*eta*eta*xi*xi - 28000.*xi*xi - 49280.*eta*eta*eta/9. + 375200.*(xi*xi*xi)/9. + 11200.*(eta*eta*eta*eta)/9. - 175000.*xi*xi*xi*xi/9.);
1862 case 31:
1863 return RealGradient(19040.*eta*xi - 8960.*eta/9. - 99680.*eta*xi*xi/3. + 95200.*eta*(xi*xi*xi)/9. - 30240.*xi*eta*eta + 5600.*xi*(eta*eta*eta) - 17920.*eta*eta/3. + 123200.*(eta*eta)*(xi*xi)/3. + 58240.*(eta*eta*eta)/3. - 112000.*eta*eta*eta*eta/9., -22400.*eta*xi/3. + 280.*eta/9. + 52640.*eta*(xi*xi) - 492800.*eta*xi*xi*xi/9. + 27160.*xi/9. - 19040.*xi*eta*eta + 224000.*xi*(eta*eta*eta)/9. - 980./9. + 1680.*(eta*eta) - 8400.*eta*eta*xi*xi - 16240.*xi*xi - 11200.*eta*eta*eta/9. + 239680.*(xi*xi*xi)/9. - 7000.*eta*eta*eta*eta/9. - 119000.*xi*xi*xi*xi/9.);
1864 case 32:
1865 return RealGradient(-7840.*eta*xi + 5320.*eta/9. + 64960.*eta*(xi*xi)/3. - 140000.*eta*xi*xi*xi/9. + 5600.*xi*(eta*eta) + 5600.*xi*(eta*eta*eta) + 2240.*(eta*eta)/3. - 44800.*eta*eta*xi*xi/3. - 12320.*eta*eta*eta/3. + 22400.*(eta*eta*eta*eta)/9., -8960.*eta*xi/3. + 2800.*eta/9. - 11200.*eta*xi*xi + 179200.*eta*(xi*xi*xi)/9. - 26600.*xi/9. + 12320.*xi*(eta*eta) - 44800.*xi*eta*eta*eta/9. + 700./9. - 560.*eta*eta - 8400.*eta*eta*xi*xi + 19600.*(xi*xi) - 1120.*eta*eta*eta/9. - 324800.*xi*xi*xi/9. + 1400.*(eta*eta*eta*eta)/9. + 175000.*(xi*xi*xi*xi)/9.);
1866 case 33:
1867 return RealGradient(3360.*eta*xi - 6440.*eta/9. - 4480.*eta*xi*xi + 5600.*eta*(xi*xi*xi)/3. - 19040.*xi*eta*eta + 16800.*xi*(eta*eta*eta) + 19040.*(eta*eta)/3. + 11200.*(eta*eta)*(xi*xi) - 11200.*eta*eta*eta + 5600.*(eta*eta*eta*eta), -29120.*eta*xi/3. + 6160.*eta/9. + 23520.*eta*(xi*xi) - 44800.*eta*xi*xi*xi/3. + 9520.*xi/9. + 20160.*xi*(eta*eta) - 11200.*xi*eta*eta*eta - 560./9. - 1680.*eta*eta - 25200.*eta*eta*xi*xi - 3920.*xi*xi + 1120.*(eta*eta*eta) + 15680.*(xi*xi*xi)/3. - 7000.*xi*xi*xi*xi/3.);
1868 case 34:
1869 return RealGradient(-3360.*eta*xi + 6160.*eta/9. + 3360.*eta*(xi*xi) + 20160.*xi*(eta*eta) - 16800.*xi*eta*eta*eta - 14560.*eta*eta/3. - 16800.*eta*eta*xi*xi + 7840.*(eta*eta*eta) - 11200.*eta*eta*eta*eta/3., 38080.*eta*xi/3. - 6440.*eta/9. - 33600.*eta*xi*xi + 22400.*eta*(xi*xi*xi) - 5600.*xi/9. - 19040.*xi*eta*eta + 22400.*xi*(eta*eta*eta)/3. + 280./9. + 1680.*(eta*eta) + 25200.*(eta*eta)*(xi*xi) + 1680.*(xi*xi) - 4480.*eta*eta*eta/3. - 1120.*xi*xi*xi + 1400.*(eta*eta*eta*eta)/3.);
1870 default:
1871 libmesh_error_msg("Invalid i = " << i);
1872 }
1873 } // j = 0
1874
1875 // d()/deta
1876 case 1:
1877 {
1878 switch(ii)
1879 {
1880 case 0:
1881 return sign * RealGradient(-16800.*eta*xi + 3500.*eta + 22680.*eta*(xi*xi) - 8400.*eta*xi*xi*xi + 2800.*xi + 30240.*xi*(eta*eta) - 16800.*xi*eta*eta*eta - 375. - 10500.*eta*eta - 18900.*eta*eta*xi*xi - 6300.*xi*xi + 12600.*(eta*eta*eta) + 5040.*(xi*xi*xi) - 5250.*eta*eta*eta*eta - 1050.*xi*xi*xi*xi, 4200.*eta*xi - 15120.*eta*xi*xi + 12600.*eta*(xi*xi*xi) - 700.*xi - 7560.*xi*eta*eta + 4200.*xi*(eta*eta*eta) + 12600.*(eta*eta)*(xi*xi) + 4200.*(xi*xi) - 7560.*xi*xi*xi + 4200.*(xi*xi*xi*xi));
1882 case 1:
1883 return sign * RealGradient(7245.*eta*xi/2. + 11235.*eta/32. - 240975.*eta*xi*xi/32. + 48825.*eta*(xi*xi*xi)/16. - 12145.*xi/16. - 76545.*xi*eta*eta/16. + 14175.*xi*(eta*eta*eta)/8. + 695./128. - 127575.*eta*eta/64. + 382725.*(eta*eta)*(xi*xi)/64. + 136185.*(xi*xi)/64. + 104895.*(eta*eta*eta)/32. - 6825.*xi*xi*xi/4. - 212625.*eta*eta*eta*eta/128. + 19425.*(xi*xi*xi*xi)/64., 2835.*eta*xi/32. + 25515.*eta*(xi*xi)/8. - 127575.*eta*xi*xi*xi/32. + 3045.*xi/32. - 42525.*xi*eta*eta/32. + 42525.*xi*(eta*eta*eta)/32. - 42525.*eta*eta*xi*xi/32. - 39375.*xi*xi/32. + 84105.*(xi*xi*xi)/32. - 48825.*xi*xi*xi*xi/32.);
1884 case 2:
1885 return sign * RealGradient(1680.*eta*xi - 175.*eta/2. + 945.*eta*(xi*xi)/2. - 1575.*eta*xi*xi*xi - 4725.*xi*eta*eta + 3150.*xi*(eta*eta*eta) + 55./8. + 105.*(eta*eta)/4. + 4725.*(eta*eta)*(xi*xi)/4. - 3255.*xi*xi/4. + 735.*(eta*eta*eta)/2. + 1260.*(xi*xi*xi) - 2625.*eta*eta*eta*eta/8. - 1575.*xi*xi*xi*xi/4., -525.*eta*xi/2. + 1890.*eta*(xi*xi) - 1575.*eta*xi*xi*xi/2. + 35.*xi/2. + 315.*xi*(eta*eta)/2. + 525.*xi*(eta*eta*eta)/2. - 4725.*eta*eta*xi*xi/2. + 105.*(xi*xi)/2. - 1575.*xi*xi*xi/2. + 1575.*(xi*xi*xi*xi)/2.);
1886 case 3:
1887 return sign * RealGradient(-1155.*eta*xi/2. + 595.*eta/32. + 76545.*eta*(xi*xi)/32. - 9975.*eta*xi*xi*xi/16. + 1855.*xi/16. - 945.*xi*eta*eta/16. + 5775.*xi*(eta*eta*eta)/8. - 825./128. + 1785.*(eta*eta)/64. - 146475.*eta*eta*xi*xi/64. - 16695.*xi*xi/64. - 945.*eta*eta*eta/32. - 945.*xi*xi*xi/4. - 2625.*eta*eta*eta*eta/128. + 19425.*(xi*xi*xi*xi)/64., 1155.*eta*xi/32. - 4725.*eta*xi*xi/8. + 48825.*eta*(xi*xi*xi)/32. - 875.*xi/32. + 2835.*xi*(eta*eta)/32. + 525.*xi*(eta*eta*eta)/32. - 17325.*eta*eta*xi*xi/32. + 9345.*(xi*xi)/32. - 21735.*xi*xi*xi/32. + 9975.*(xi*xi*xi*xi)/32.);
1888 case 4:
1889 return sign * RealGradient(140.*xi - 5. - 840.*xi*xi + 1680.*(xi*xi*xi) - 1050.*xi*xi*xi*xi, 0.);
1890 case 5:
1891 return sign * RealGradient(140.*xi - 5. - 840.*xi*xi + 1680.*(xi*xi*xi) - 1050.*xi*xi*xi*xi, 0.);
1892 case 6:
1893 return sign * RealGradient(-1575.*eta*xi + 385.*eta/4. + 76545.*eta*(xi*xi)/16. - 14175.*eta*xi*xi*xi/4. + 735.*xi/4. + 36855.*xi*(eta*eta)/16. - 1575.*xi*eta*eta*eta/2. - 10. - 735.*eta*eta/4. - 127575.*eta*eta*xi*xi/32. - 2835.*xi*xi/4. + 1785.*(eta*eta*eta)/16. + 14175.*(xi*xi*xi)/16. - 2625.*eta*eta*eta*eta/128. - 42525.*xi*xi*xi*xi/128., 525.*eta*xi/2. - 31185.*eta*xi*xi/16. + 42525.*eta*(xi*xi*xi)/16. - 455.*xi/4. - 2205.*xi*eta*eta/16. + 525.*xi*(eta*eta*eta)/32. + 4725.*(eta*eta)*(xi*xi)/8. + 2205.*(xi*xi)/2. - 42525.*xi*xi*xi/16. + 14175.*(xi*xi*xi*xi)/8.);
1894 case 7:
1895 return sign * RealGradient(-2520.*eta*xi + 245.*eta + 4725.*eta*(xi*xi) - 2100.*eta*xi*xi*xi + 175.*xi + 6615.*xi*(eta*eta) - 4200.*xi*eta*eta*eta - 15. - 840.*eta*eta - 14175.*eta*eta*xi*xi/2. - 420.*xi*xi + 945.*(eta*eta*eta) + 315.*(xi*xi*xi) - 2625.*eta*eta*eta*eta/8. - 525.*xi*xi*xi*xi/8., 840.*eta*xi - 4725.*eta*xi*xi + 4725.*eta*(xi*xi*xi) - 175.*xi - 945.*xi*eta*eta + 525.*xi*(eta*eta*eta)/2. + 3150.*(eta*eta)*(xi*xi) + 1260.*(xi*xi) - 2205.*xi*xi*xi + 1050.*(xi*xi*xi*xi));
1896 case 8:
1897 return sign * RealGradient(-2205.*eta*xi + 1785.*eta/4. + 31185.*eta*(xi*xi)/16. - 1575.*eta*xi*xi*xi/4. + 455.*xi/4. + 127575.*xi*(eta*eta)/16. - 14175.*xi*eta*eta*eta/2. - 20. - 8505.*eta*eta/4. - 127575.*eta*eta*xi*xi/32. - 525.*xi*xi/4. + 53865.*(eta*eta*eta)/16. + 735.*(xi*xi*xi)/16. - 212625.*eta*eta*eta*eta/128. - 525.*xi*xi*xi*xi/128., 2835.*eta*xi/2. - 76545.*eta*xi*xi/16. + 42525.*eta*(xi*xi*xi)/16. - 735.*xi/4. - 42525.*xi*eta*eta/16. + 42525.*xi*(eta*eta*eta)/32. + 42525.*(eta*eta)*(xi*xi)/8. + 1575.*(xi*xi)/2. - 12285.*xi*xi*xi/16. + 1575.*(xi*xi*xi*xi)/8.);
1898 case 9:
1899 return sign * RealGradient(700.*eta - 25. - 4200.*eta*eta + 8400.*(eta*eta*eta) - 5250.*eta*eta*eta*eta, 1680.*eta*xi - 140.*xi - 5040.*xi*eta*eta + 4200.*xi*(eta*eta*eta));
1900 case 10:
1901 return sign * RealGradient(700.*eta - 25. - 4200.*eta*eta + 8400.*(eta*eta*eta) - 5250.*eta*eta*eta*eta, 1680.*eta*xi - 1260.*eta - 140.*xi - 5040.*xi*eta*eta + 4200.*xi*(eta*eta*eta) + 120. + 3360.*(eta*eta) - 2520.*eta*eta*eta);
1902 case 11:
1903 return sign * RealGradient(-9345.*eta*xi/16. - 595.*eta/4. + 4725.*eta*(xi*xi)/8. + 5775.*eta*(xi*xi*xi)/16. + 875.*xi/32. + 65205.*xi*(eta*eta)/32. - 9975.*xi*eta*eta*eta/8. + 555./128. + 66465.*(eta*eta)/64. - 146475.*eta*eta*xi*xi/64. - 1155.*xi*xi/64. - 36855.*eta*eta*eta/16. - 945.*xi*xi*xi/32. + 97125.*(eta*eta*eta*eta)/64. - 525.*xi*xi*xi*xi/128., 16695.*eta*xi/32. + 9345.*eta/32. - 76545.*eta*xi*xi/32. + 48825.*eta*(xi*xi*xi)/32. - 1855.*xi/16. + 2835.*xi*(eta*eta)/4. - 19425.*xi*eta*eta*eta/16. - 705./32. - 29085.*eta*eta/32. + 29925.*(eta*eta)*(xi*xi)/32. + 1155.*(xi*xi)/4. + 11655.*(eta*eta*eta)/16. + 315.*(xi*xi*xi)/16. - 5775.*xi*xi*xi*xi/32.);
1904 case 12:
1905 return sign * RealGradient(-105.*eta*xi + 315.*eta - 1890.*eta*xi*xi + 1575.*eta*(xi*xi*xi) - 35.*xi/2. + 4725.*xi*(eta*eta)/2. - 3150.*xi*eta*eta*eta - 85./8. - 7455.*eta*eta/4. + 4725.*(eta*eta)*(xi*xi)/4. + 525.*(xi*xi)/4. + 3465.*(eta*eta*eta) - 105.*xi*xi*xi/2. - 7875.*eta*eta*eta*eta/4. - 525.*xi*xi*xi*xi/8., 3255.*eta*xi/2. - 1155.*eta/2. - 945.*eta*xi*xi/2. - 1575.*eta*xi*xi*xi/2. - 3780.*xi*eta*eta + 1575.*xi*(eta*eta*eta) + 105./2. + 2835.*(eta*eta)/2. + 4725.*(eta*eta)*(xi*xi)/2. - 840.*xi*xi - 945.*eta*eta*eta + 1575.*(xi*xi*xi) - 1575.*xi*xi*xi*xi/2.);
1906 case 13:
1907 return sign * RealGradient(39375.*eta*xi/16. - 1715.*eta/4. - 25515.*eta*xi*xi/8. + 14175.*eta*(xi*xi*xi)/16. - 3045.*xi/32. - 252315.*xi*eta*eta/32. + 48825.*xi*(eta*eta*eta)/8. + 2395./128. + 125265.*(eta*eta)/64. + 382725.*(eta*eta)*(xi*xi)/64. - 2835.*xi*xi/64. - 48615.*eta*eta*eta/16. + 14175.*(xi*xi*xi)/32. + 97125.*(eta*eta*eta*eta)/64. - 42525.*xi*xi*xi*xi/128., -136185.*eta*xi/32. + 21105.*eta/32. + 240975.*eta*(xi*xi)/32. - 127575.*eta*xi*xi*xi/32. + 12145.*xi/16. + 20475.*xi*(eta*eta)/4. - 19425.*xi*eta*eta*eta/16. - 2865./32. - 40845.*eta*eta/32. - 146475.*eta*eta*xi*xi/32. - 7245.*xi*xi/4. + 11655.*(eta*eta*eta)/16. + 25515.*(xi*xi*xi)/16. - 14175.*xi*xi*xi*xi/32.);
1908 case 14:
1909 return sign * RealGradient(-8400.*eta*xi + 1400.*eta + 15120.*eta*(xi*xi) - 8400.*eta*xi*xi*xi + 700.*xi + 22680.*xi*(eta*eta) - 16800.*xi*eta*eta*eta - 75. - 6300.*eta*eta - 18900.*eta*eta*xi*xi - 2100.*xi*xi + 10080.*(eta*eta*eta) + 2520.*(xi*xi*xi) - 5250.*eta*eta*eta*eta - 1050.*xi*xi*xi*xi, 12600.*eta*xi - 2100.*eta - 22680.*eta*xi*xi + 12600.*eta*(xi*xi*xi) - 2800.*xi - 15120.*xi*eta*eta + 4200.*xi*(eta*eta*eta) + 300. + 4200.*(eta*eta) + 12600.*(eta*eta)*(xi*xi) + 8400.*(xi*xi) - 2520.*eta*eta*eta - 10080.*xi*xi*xi + 4200.*(xi*xi*xi*xi));
1910 case 15:
1911 return RealGradient(188160.*eta*xi - 49000.*eta - 211680.*eta*xi*xi + 67200.*eta*(xi*xi*xi) - 19600.*xi - 423360.*xi*eta*eta + 268800.*xi*(eta*eta*eta) + 3500. + 176400.*(eta*eta) + 226800.*(eta*eta)*(xi*xi) + 35280.*(xi*xi) - 235200.*eta*eta*eta - 23520.*xi*xi*xi + 105000.*(eta*eta*eta*eta) + 4200.*(xi*xi*xi*xi), -70560.*eta*xi + 211680.*eta*(xi*xi) - 151200.*eta*xi*xi*xi + 9800.*xi + 141120.*xi*(eta*eta) - 84000.*xi*eta*eta*eta - 201600.*eta*eta*xi*xi - 47040.*xi*xi + 70560.*(xi*xi*xi) - 33600.*xi*xi*xi*xi);
1912 case 16:
1913 return RealGradient(-94080.*eta*xi + 9800.*eta + 211680.*eta*(xi*xi) - 134400.*eta*xi*xi*xi + 9800.*xi + 211680.*xi*(eta*eta) - 134400.*xi*eta*eta*eta - 700. - 35280.*eta*eta - 226800.*eta*eta*xi*xi - 35280.*xi*xi + 47040.*(eta*eta*eta) + 47040.*(xi*xi*xi) - 21000.*eta*eta*eta*eta - 21000.*xi*xi*xi*xi, 70560.*eta*xi - 211680.*eta*xi*xi + 151200.*eta*(xi*xi*xi) - 19600.*xi - 70560.*xi*eta*eta + 16800.*xi*(eta*eta*eta) + 100800.*(eta*eta)*(xi*xi) + 94080.*(xi*xi) - 141120.*xi*xi*xi + 67200.*(xi*xi*xi*xi));
1914 case 17:
1915 return RealGradient(-13440.*eta*xi + 560.*eta + 60480.*eta*(xi*xi) - 67200.*eta*xi*xi*xi + 6440.*xi - 280. - 30240.*xi*xi + 43680.*(xi*xi*xi) - 16800.*xi*xi*xi*xi, -1120.*xi + 13440.*(xi*xi) - 40320.*xi*xi*xi + 33600.*(xi*xi*xi*xi));
1916 case 18:
1917 return RealGradient(6720.*eta*xi - 280.*eta - 30240.*eta*xi*xi + 33600.*eta*(xi*xi*xi) - 3640.*xi + 140. + 20160.*(xi*xi) - 36960.*xi*xi*xi + 21000.*(xi*xi*xi*xi), 560.*xi - 6720.*xi*xi + 20160.*(xi*xi*xi) - 16800.*xi*xi*xi*xi);
1918 case 19:
1919 return RealGradient(-13440.*eta*xi + 18200.*eta + 560.*xi + 60480.*xi*(eta*eta) - 67200.*xi*eta*eta*eta - 700. - 100800.*eta*eta + 184800.*(eta*eta*eta) - 105000.*eta*eta*eta*eta, 40320.*eta*xi - 30240.*eta*xi*xi - 3640.*xi - 110880.*xi*eta*eta + 84000.*xi*(eta*eta*eta) + 50400.*(eta*eta)*(xi*xi) + 3360.*(xi*xi));
1920 case 20:
1921 return RealGradient(26880.*eta*xi - 14560.*eta - 1120.*xi - 120960.*xi*eta*eta + 134400.*xi*(eta*eta*eta) + 560. + 80640.*(eta*eta) - 147840.*eta*eta*eta + 84000.*(eta*eta*eta*eta), -60480.*eta*xi + 60480.*eta*(xi*xi) + 6440.*xi + 131040.*xi*(eta*eta) - 67200.*xi*eta*eta*eta - 100800.*eta*eta*xi*xi - 6720.*xi*xi);
1922 case 21:
1923 return RealGradient(-58240.*eta*xi + 14840.*eta/3. + 125440.*eta*(xi*xi) - 582400.*eta*xi*xi*xi/9. + 17920.*xi/3. + 116480.*xi*(eta*eta) - 560000.*xi*eta*eta*eta/9. - 420. - 13440.*eta*eta - 134400.*eta*eta*xi*xi - 17920.*xi*xi + 115360.*(eta*eta*eta)/9. + 156800.*(xi*xi*xi)/9. - 35000.*eta*eta*eta*eta/9. - 44800.*xi*xi*xi*xi/9., 13440.*eta*xi - 81760.*eta*xi*xi + 89600.*eta*(xi*xi*xi) - 10360.*xi/3. - 39200.*xi*eta*eta/3. + 28000.*xi*(eta*eta*eta)/9. + 140000.*(eta*eta)*(xi*xi)/3. + 28000.*(xi*xi) - 170240.*xi*xi*xi/3. + 291200.*(xi*xi*xi*xi)/9.);
1924 case 22:
1925 return RealGradient(44800.*eta*xi - 10640.*eta/3. - 109760.*eta*xi*xi + 627200.*eta*(xi*xi*xi)/9. - 12880.*xi/3. - 91840.*xi*eta*eta + 448000.*xi*(eta*eta*eta)/9. + 280. + 10080.*(eta*eta) + 117600.*(eta*eta)*(xi*xi) + 14560.*(xi*xi) - 89600.*eta*eta*eta/9. - 152320.*xi*xi*xi/9. + 28000.*(eta*eta*eta*eta)/9. + 56000.*(xi*xi*xi*xi)/9., -13440.*eta*xi + 76160.*eta*(xi*xi) - 78400.*eta*xi*xi*xi + 12040.*xi/3. + 34720.*xi*(eta*eta)/3. - 22400.*xi*eta*eta*eta/9. - 112000.*eta*eta*xi*xi/3. - 31360.*xi*xi + 185920.*(xi*xi*xi)/3. - 313600.*xi*xi*xi*xi/9.);
1926 case 23:
1927 return RealGradient(-62720.*eta*xi + 32480.*eta/3. + 76160.*eta*(xi*xi) - 224000.*eta*xi*xi*xi/9. + 12040.*xi/3. + 185920.*xi*(eta*eta) - 1254400.*xi*eta*eta*eta/9. - 560. - 45920.*eta*eta - 117600.*eta*eta*xi*xi - 6720.*xi*xi + 600320.*(eta*eta*eta)/9. + 34720.*(xi*xi*xi)/9. - 280000.*eta*eta*eta*eta/9. - 5600.*xi*xi*xi*xi/9., 29120.*eta*xi - 109760.*eta*xi*xi + 78400.*eta*(xi*xi*xi) - 12880.*xi/3. - 152320.*xi*eta*eta/3. + 224000.*xi*(eta*eta*eta)/9. + 313600.*(eta*eta)*(xi*xi)/3. + 22400.*(xi*xi) - 91840.*xi*xi*xi/3. + 112000.*(xi*xi*xi*xi)/9.);
1928 case 24:
1929 return RealGradient(56000.*eta*xi - 24920.*eta/3. - 81760.*eta*xi*xi + 280000.*eta*(xi*xi*xi)/9. - 10360.*xi/3. - 170240.*xi*eta*eta + 1164800.*xi*(eta*eta*eta)/9. + 420. + 35840.*(eta*eta) + 134400.*(eta*eta)*(xi*xi) + 6720.*(xi*xi) - 474880.*eta*eta*eta/9. - 39200.*xi*xi*xi/9. + 224000.*(eta*eta*eta*eta)/9. + 7000.*(xi*xi*xi*xi)/9., -35840.*eta*xi + 125440.*eta*(xi*xi) - 89600.*eta*xi*xi*xi + 17920.*xi/3. + 156800.*xi*(eta*eta)/3. - 179200.*xi*eta*eta*eta/9. - 291200.*eta*eta*xi*xi/3. - 29120.*xi*xi + 116480.*(xi*xi*xi)/3. - 140000.*xi*xi*xi*xi/9.);
1930 case 25:
1931 return RealGradient(-31360.*eta*xi/3. + 51800.*eta/9. - 2240.*eta*xi*xi + 44800.*eta*(xi*xi*xi)/9. - 12880.*xi/9. + 51520.*xi*(eta*eta) - 380800.*xi*eta*eta*eta/9. - 700./9. - 28000.*eta*eta - 16800.*eta*eta*xi*xi + 5600.*(xi*xi) + 375200.*(eta*eta*eta)/9. - 49280.*xi*xi*xi/9. - 175000.*eta*eta*eta*eta/9. + 11200.*(xi*xi*xi*xi)/9., 11200.*eta*xi - 25760.*eta*xi*xi + 11200.*eta*(xi*xi*xi) - 10360.*xi/9. - 75040.*xi*eta*eta/3. + 140000.*xi*(eta*eta*eta)/9. + 95200.*(eta*eta)*(xi*xi)/3. + 7840.*(xi*xi)/3. + 2240.*(xi*xi*xi)/3. - 22400.*xi*xi*xi*xi/9.);
1932 case 26:
1933 return RealGradient(89600.*eta*xi/3. - 29680.*eta/9. - 51520.*eta*xi*xi + 179200.*eta*(xi*xi*xi)/9. - 9520.*xi/9. - 82880.*xi*eta*eta + 492800.*xi*(eta*eta*eta)/9. + 1400./9. + 12320.*(eta*eta) + 84000.*(eta*eta)*(xi*xi) - 1120.*xi*xi - 138880.*eta*eta*eta/9. + 71680.*(xi*xi*xi)/9. + 56000.*(eta*eta*eta*eta)/9. - 56000.*xi*xi*xi*xi/9., -26880.*eta*xi + 80640.*eta*(xi*xi) - 56000.*eta*xi*xi*xi + 51800.*xi/9. + 79520.*xi*(eta*eta)/3. - 44800.*xi*eta*eta*eta/9. - 123200.*eta*eta*xi*xi/3. - 69440.*xi*xi/3. + 82880.*(xi*xi*xi)/3. - 89600.*xi*xi*xi*xi/9.);
1934 case 27:
1935 return RealGradient(-8960.*eta*xi/3. - 26600.*eta/9. + 12320.*eta*(xi*xi) - 44800.*eta*xi*xi*xi/9. + 2800.*xi/9. - 11200.*xi*eta*eta + 179200.*xi*(eta*eta*eta)/9. + 700./9. + 19600.*(eta*eta) - 8400.*eta*eta*xi*xi - 560.*xi*xi - 324800.*eta*eta*eta/9. - 1120.*xi*xi*xi/9. + 175000.*(eta*eta*eta*eta)/9. + 1400.*(xi*xi*xi*xi)/9., -7840.*eta*xi + 5600.*eta*(xi*xi) + 5600.*eta*(xi*xi*xi) + 5320.*xi/9. + 64960.*xi*(eta*eta)/3. - 140000.*xi*eta*eta*eta/9. - 44800.*eta*eta*xi*xi/3. + 2240.*(xi*xi)/3. - 12320.*xi*xi*xi/3. + 22400.*(xi*xi*xi*xi)/9.);
1936 case 28:
1937 return RealGradient(-22400.*eta*xi/3. + 27160.*eta/9. - 19040.*eta*xi*xi + 224000.*eta*(xi*xi*xi)/9. + 280.*xi/9. + 52640.*xi*(eta*eta) - 492800.*xi*eta*eta*eta/9. - 980./9. - 16240.*eta*eta - 8400.*eta*eta*xi*xi + 1680.*(xi*xi) + 239680.*(eta*eta*eta)/9. - 11200.*xi*xi*xi/9. - 119000.*eta*eta*eta*eta/9. - 7000.*xi*xi*xi*xi/9., 19040.*eta*xi - 30240.*eta*xi*xi + 5600.*eta*(xi*xi*xi) - 8960.*xi/9. - 99680.*xi*eta*eta/3. + 95200.*xi*(eta*eta*eta)/9. + 123200.*(eta*eta)*(xi*xi)/3. - 17920.*xi*xi/3. + 58240.*(xi*xi*xi)/3. - 112000.*xi*xi*xi*xi/9.);
1938 case 29:
1939 return RealGradient(-138880.*eta*xi/3. - 48160.*eta/9. + 80640.*eta*(xi*xi) - 246400.*eta*xi*xi*xi/9. + 51800.*xi/9. + 82880.*xi*(eta*eta) - 358400.*xi*eta*eta*eta/9. + 560./9. + 32480.*(eta*eta) - 84000.*eta*eta*xi*xi - 13440.*xi*xi - 519680.*eta*eta*eta/9. + 79520.*(xi*xi*xi)/9. + 280000.*(eta*eta*eta*eta)/9. - 11200.*xi*xi*xi*xi/9., -2240.*eta*xi - 51520.*eta*xi*xi + 56000.*eta*(xi*xi*xi) - 9520.*xi/9. + 71680.*xi*(eta*eta)/3. - 224000.*xi*eta*eta*eta/9. + 89600.*(eta*eta)*(xi*xi)/3. + 44800.*(xi*xi)/3. - 82880.*xi*xi*xi/3. + 123200.*(xi*xi*xi*xi)/9.);
1940 case 30:
1941 return RealGradient(15680.*eta*xi/3. + 6440.*eta/9. - 25760.*eta*xi*xi + 190400.*eta*(xi*xi*xi)/9. - 10360.*xi/9. + 2240.*xi*(eta*eta) - 89600.*xi*eta*eta*eta/9. + 140./9. - 5600.*eta*eta + 16800.*(eta*eta)*(xi*xi) + 5600.*(xi*xi) + 98560.*(eta*eta*eta)/9. - 75040.*xi*xi*xi/9. - 56000.*eta*eta*eta*eta/9. + 35000.*(xi*xi*xi*xi)/9., 11200.*eta*xi - 2240.*eta*xi*xi - 11200.*eta*xi*xi*xi - 12880.*xi/9. - 49280.*xi*eta*eta/3. + 44800.*xi*(eta*eta*eta)/9. + 22400.*(eta*eta)*(xi*xi)/3. - 15680.*xi*xi/3. + 51520.*(xi*xi*xi)/3. - 95200.*xi*xi*xi*xi/9.);
1942 case 31:
1943 return RealGradient(-35840.*eta*xi/3. + 8680.*eta/9. - 30240.*eta*xi*xi + 246400.*eta*(xi*xi*xi)/9. - 8960.*xi/9. + 58240.*xi*(eta*eta) - 448000.*xi*eta*eta*eta/9. - 140./9. - 1680.*eta*eta + 8400.*(eta*eta)*(xi*xi) + 9520.*(xi*xi) - 24640.*eta*eta*eta/9. - 99680.*xi*xi*xi/9. + 35000.*(eta*eta*eta*eta)/9. + 23800.*(xi*xi*xi*xi)/9., 3360.*eta*xi - 19040.*eta*xi*xi - 5600.*eta*xi*xi*xi + 280.*xi/9. - 11200.*xi*eta*eta/3. - 28000.*xi*eta*eta*eta/9. + 112000.*(eta*eta)*(xi*xi)/3. - 11200.*xi*xi/3. + 52640.*(xi*xi*xi)/3. - 123200.*xi*xi*xi*xi/9.);
1944 case 32:
1945 return RealGradient(4480.*eta*xi/3. - 1400.*eta/9. + 5600.*eta*(xi*xi) - 89600.*eta*xi*xi*xi/9. + 5320.*xi/9. - 12320.*xi*eta*eta + 89600.*xi*(eta*eta*eta)/9. - 140./9. + 560.*(eta*eta) + 8400.*(eta*eta)*(xi*xi) - 3920.*xi*xi + 2240.*(eta*eta*eta)/9. + 64960.*(xi*xi*xi)/9. - 7000.*eta*eta*eta*eta/9. - 35000.*xi*xi*xi*xi/9., -1120.*eta*xi + 12320.*eta*(xi*xi) - 5600.*eta*xi*xi*xi + 2800.*xi/9. - 1120.*xi*eta*eta/3. + 5600.*xi*(eta*eta*eta)/9. - 22400.*eta*eta*xi*xi/3. - 4480.*xi*xi/3. - 11200.*xi*xi*xi/3. + 44800.*(xi*xi*xi*xi)/9.);
1946 case 33:
1947 return RealGradient(38080.*eta*xi/3. - 5600.*eta/9. - 19040.*eta*xi*xi + 22400.*eta*(xi*xi*xi)/3. - 6440.*xi/9. - 33600.*xi*eta*eta + 22400.*xi*(eta*eta*eta) + 280./9. + 1680.*(eta*eta) + 25200.*(eta*eta)*(xi*xi) + 1680.*(xi*xi) - 1120.*eta*eta*eta - 4480.*xi*xi*xi/3. + 1400.*(xi*xi*xi*xi)/3., -3360.*eta*xi + 20160.*eta*(xi*xi) - 16800.*eta*xi*xi*xi + 6160.*xi/9. + 3360.*xi*(eta*eta) - 16800.*eta*eta*xi*xi - 14560.*xi*xi/3. + 7840.*(xi*xi*xi) - 11200.*xi*xi*xi*xi/3.);
1948 case 34:
1949 return RealGradient(-29120.*eta*xi/3. + 9520.*eta/9. + 20160.*eta*(xi*xi) - 11200.*eta*xi*xi*xi + 6160.*xi/9. + 23520.*xi*(eta*eta) - 44800.*xi*eta*eta*eta/3. - 560./9. - 3920.*eta*eta - 25200.*eta*eta*xi*xi - 1680.*xi*xi + 15680.*(eta*eta*eta)/3. + 1120.*(xi*xi*xi) - 7000.*eta*eta*eta*eta/3., 3360.*eta*xi - 19040.*eta*xi*xi + 16800.*eta*(xi*xi*xi) - 6440.*xi/9. - 4480.*xi*eta*eta + 5600.*xi*(eta*eta*eta)/3. + 11200.*(eta*eta)*(xi*xi) + 19040.*(xi*xi)/3. - 11200.*xi*xi*xi + 5600.*(xi*xi*xi*xi));
1950 default:
1951 libmesh_error_msg("Invalid i = " << i);
1952 }
1953 } // j = 1
1954
1955 default:
1956 libmesh_error_msg("Invalid j = " << j);
1957 }
1958 }
1959
1960 default:
1961 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
1962 } // end switch (type)
1963 } // end case FIFTH
1964
1965 // unsupported order
1966 default:
1967 libmesh_error_msg("ERROR: Unsupported 2D FE order!: " << totalorder);
1968 }
1969#else // LIBMESH_DIM > 1
1970 libmesh_ignore(elem, order, i, j, add_p_level);
1971 libmesh_not_implemented();
1972#endif
1973}

◆ shape_deriv() [77/233]

RealGradient libMesh::FE< 3, NEDELEC_ONE >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 158 of file fe_nedelec_one_shape_3D.C.

164{
165#if LIBMESH_DIM == 3
166 libmesh_assert(elem);
167 libmesh_assert_less (j, 3);
168
169 const Order totalorder = order + add_p_level*elem->p_level();
170 libmesh_assert_less(i, n_dofs(elem->type(), totalorder));
171
172 const char sign = elem->positive_edge_orientation(i) ? 1 : -1;
173
174 const Real xi = p(0);
175 const Real eta = p(1);
176 const Real zeta = p(2);
177
178 switch (totalorder)
179 {
180 // linear Nedelec (first kind) shape function first derivatives
181 case FIRST:
182 {
183 switch (elem->type())
184 {
185 case HEX20:
186 case HEX27:
187 {
188 // Even with a loose inverse_map tolerance we ought to
189 // be nearly on the element interior in master
190 // coordinates
191 libmesh_assert_less_equal ( std::fabs(xi), 1.0+10*TOLERANCE );
192 libmesh_assert_less_equal ( std::fabs(eta), 1.0+10*TOLERANCE );
193 libmesh_assert_less_equal ( std::fabs(zeta), 1.0+10*TOLERANCE );
194
195 switch (j)
196 {
197 // d()/dxi
198 case 0:
199 {
200 switch(i)
201 {
202 case 0:
203 case 2:
204 case 8:
205 case 10:
206 return RealGradient();
207 case 1:
208 return sign * RealGradient( 0.0, -0.125*(1.0-zeta) );
209 case 3:
210 return sign * RealGradient( 0.0, -0.125*(-1.0+zeta) );
211 case 4:
212 return sign * RealGradient( 0.0, 0.0, -0.125*(-1.0+eta) );
213 case 5:
214 return sign * RealGradient( 0.0, 0.0, -0.125*(1.0-eta) );
215 case 6:
216 return sign * RealGradient( 0.0, 0.0, -0.125*(1.0+eta) );
217 case 7:
218 return sign * RealGradient( 0.0, 0.0, -0.125*(-1.0-eta) );
219 case 9:
220 return sign * RealGradient( 0.0, -0.125*(1.0+zeta), 0.0 );
221 case 11:
222 return sign * RealGradient( 0.0, -0.125*(-1.0-zeta), 0.0 );
223
224 default:
225 libmesh_error_msg("Invalid i = " << i);
226 } // switch(i)
227
228 } // j = 0
229
230 // d()/deta
231 case 1:
232 {
233 switch(i)
234 {
235 case 1:
236 case 3:
237 case 9:
238 case 11:
239 return RealGradient();
240 case 0:
241 return sign * RealGradient( -0.125*(-1.0+zeta), 0.0, 0.0 );
242 case 2:
243 return sign * RealGradient( 0.125*(1.0-zeta), 0.0, 0.0 );
244 case 4:
245 return sign * RealGradient( 0.0, 0.0, -0.125*(-1.0+xi) );
246 case 5:
247 return sign * RealGradient( 0.0, 0.0, -0.125*(-1.0-xi) );
248 case 6:
249 return sign * RealGradient( 0.0, 0.0, -0.125*(1.0+xi) );
250 case 7:
251 return sign * RealGradient( 0.0, 0.0, -0.125*(1.0-xi) );
252 case 8:
253 return sign * RealGradient( -0.125*(-1.0-zeta), 0.0, 0.0 );
254 case 10:
255 return sign * RealGradient( 0.125*(1.0+zeta), 0.0, 0.0 );
256
257 default:
258 libmesh_error_msg("Invalid i = " << i);
259 } // switch(i)
260
261 } // j = 1
262
263 // d()/dzeta
264 case 2:
265 {
266 switch(i)
267 {
268 case 4:
269 case 5:
270 case 6:
271 case 7:
272 return RealGradient();
273 case 0:
274 return sign * RealGradient( -0.125*(-1.0+eta), 0.0, 0.0 );
275 case 1:
276 return sign * RealGradient( 0.0, -0.125*(-1.0-xi), 0.0 );
277 case 2:
278 return sign * RealGradient( 0.125*(-1.0-eta), 0.0, 0.0 );
279 case 3:
280 return sign * RealGradient( 0.0, -0.125*(-1.0+xi), 0.0 );
281 case 8:
282 return sign * RealGradient( -0.125*(1.0-eta), 0.0, 0.0 );
283 case 9:
284 return sign * RealGradient( 0.0, -0.125*(1.0+xi), 0.0 );
285 case 10:
286 return sign * RealGradient( 0.125*(1.0+eta), 0.0, 0.0 );
287 case 11:
288 return sign * RealGradient( 0.0, -0.125*(1.0-xi), 0.0 );
289
290 default:
291 libmesh_error_msg("Invalid i = " << i);
292 } // switch(i)
293
294 } // j = 2
295
296 default:
297 libmesh_error_msg("Invalid j = " << j);
298 }
299 }
300
301 case TET10:
302 case TET14:
303 {
304 switch (j)
305 {
306 // d()/dxi
307 case 0:
308 {
309 switch(i)
310 {
311 case 0:
312 return sign * RealGradient( 0.0, -1.0, -1.0 );
313 case 1:
314 return sign * RealGradient( 0.0, -1.0, 0.0 );
315 case 2:
316 return sign * RealGradient( 0.0, 1.0, 0.0 );
317 case 3:
318 return sign * RealGradient( 0.0, 0.0, 1.0 );
319 case 4:
320 return sign * RealGradient( 0.0, 0.0, -1.0 );
321 case 5:
322 return RealGradient();
323
324 default:
325 libmesh_error_msg("Invalid i = " << i);
326 } // switch(i)
327
328 } // j = 0
329
330 // d()/deta
331 case 1:
332 {
333 switch(i)
334 {
335 case 0:
336 case 1:
337 return sign * RealGradient( 1.0, 0.0, 0.0 );
338 case 2:
339 return sign * RealGradient( -1.0, 0.0, -1.0 );
340 case 3:
341 return sign * RealGradient( 0.0, 0.0, 1.0 );
342 case 4:
343 return RealGradient();
344 case 5:
345 return sign * RealGradient( 0.0, 0.0, -1.0 );
346
347 default:
348 libmesh_error_msg("Invalid i = " << i);
349 } // switch(i)
350
351 } // j = 1
352
353 // d()/dzeta
354 case 2:
355 {
356 switch(i)
357 {
358 case 0:
359 return sign * RealGradient( 1.0, 0.0, 0.0 );
360 case 1:
361 return RealGradient();
362 case 2:
363 case 5:
364 return sign * RealGradient( 0.0, 1.0, 0.0 );
365 case 3:
366 return sign * RealGradient( -1.0, -1.0, 0.0 );
367 case 4:
368 return sign * RealGradient( 1.0, 0.0, 0.0 );
369
370 default:
371 libmesh_error_msg("Invalid i = " << i);
372 } // switch(i)
373
374 } // j = 2
375
376 default:
377 libmesh_error_msg("Invalid j = " << j);
378 }
379 }
380
381 default:
382 libmesh_error_msg("ERROR: Unsupported 3D element type!: " << Utility::enum_to_string(elem->type()));
383 }
384 }
385 // unsupported order
386 default:
387 libmesh_error_msg("ERROR: Unsupported 3D FE order!: " << totalorder);
388 }
389
390#else // LIBMESH_DIM != 3
391 libmesh_ignore(elem, order, i, j, p, add_p_level);
392 libmesh_not_implemented();
393#endif
394}

◆ shape_deriv() [78/233]

Real libMesh::FE< 1, RATIONAL_BERNSTEIN >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 84 of file fe_rational_shape_1D.C.

90{
91 libmesh_assert(elem);
92
93 FEType underlying_fe_type(order, _underlying_fe_family);
94
95 return rational_fe_shape_deriv(*elem, underlying_fe_type, i, j, p,
96 add_p_level);
97}
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)
Definition fe.C:1153

◆ shape_deriv() [79/233]

Real libMesh::FE< 2, RATIONAL_BERNSTEIN >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 83 of file fe_rational_shape_2D.C.

89{
90 libmesh_assert(elem);
91
92 FEType underlying_fe_type(order, _underlying_fe_family);
93
94 return rational_fe_shape_deriv(*elem, underlying_fe_type, i, j, p,
95 add_p_level);
96}

◆ shape_deriv() [80/233]

Real libMesh::FE< 3, RATIONAL_BERNSTEIN >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 81 of file fe_rational_shape_3D.C.

87{
88 libmesh_assert(elem);
89
90 FEType underlying_fe_type(order, _underlying_fe_family);
91
92 return rational_fe_shape_deriv(*elem, underlying_fe_type, i, j, p,
93 add_p_level);
94}

◆ shape_deriv() [81/233]

RealGradient libMesh::FE< 2, RAVIART_THOMAS >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 91 of file fe_raviart_shape_2D.C.

97{
98 RealGradient ND1 = FE<2,NEDELEC_ONE>::shape_deriv(elem, order, i, j, p, add_p_level);
99 return RealGradient(-ND1(1), ND1(0));
100}

◆ shape_deriv() [82/233]

RealGradient libMesh::FE< 2, L2_RAVIART_THOMAS >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 103 of file fe_raviart_shape_2D.C.

109{
110 return FE<2,RAVIART_THOMAS>::shape_deriv(elem, order, i, j, p, add_p_level);
111}

◆ shape_deriv() [83/233]

RealGradient libMesh::FE< 3, L2_RAVIART_THOMAS >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 342 of file fe_raviart_shape_3D.C.

348{
349 return FE<3,RAVIART_THOMAS>::shape_deriv(elem, order, i, j, p, add_p_level);
350}

◆ shape_deriv() [84/233]

Real libMesh::FE< 2, SUBDIVISION >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 789 of file fe_subdivision_2D.C.

795{
796 libmesh_assert(elem);
797 const Order totalorder = order + add_p_level*elem->p_level();
798 return FE<2,SUBDIVISION>::shape_deriv(elem->type(), totalorder, i, j, p);
799}

◆ shape_deriv() [85/233]

Real libMesh::FE< 1, SZABAB >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 156 of file fe_szabab_shape_1D.C.

162{
163 libmesh_assert(elem);
164
165 return FE<1,SZABAB>::shape_deriv(elem->type(),
166 order + add_p_level*elem->p_level(), i, j, p);
167}

◆ shape_deriv() [86/233]

Real libMesh::FE< 2, SZABAB >::shape_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 670 of file fe_szabab_shape_2D.C.

676{
677 libmesh_assert(elem);
678
679 const ElemType type = elem->type();
680
681 const Order totalorder = order + add_p_level*elem->p_level();
682
683 switch (totalorder)
684 {
685
686 // 1st & 2nd-order Szabo-Babuska.
687 case FIRST:
688 case SECOND:
689 {
690 switch (type)
691 {
692
693 // Szabo-Babuska shape functions on the triangle.
694 case TRI3:
695 case TRI6:
696 case TRI7:
697 {
698 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<2,SZABAB>::shape);
699 }
700
701
702 // Szabo-Babuska shape functions on the quadrilateral.
703 case QUAD4:
704 case QUAD8:
705 case QUAD9:
706 {
707 // Compute quad shape functions as a tensor-product
708 const Real xi = p(0);
709 const Real eta = p(1);
710
711 libmesh_assert_less (i, 9);
712
713 // 0 1 2 3 4 5 6 7 8
714 static const unsigned int i0[] = {0, 1, 1, 0, 2, 1, 2, 0, 2};
715 static const unsigned int i1[] = {0, 0, 1, 1, 0, 2, 1, 2, 2};
716
717 switch (j)
718 {
719 // d()/dxi
720 case 0:
721 return (FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi)*
722 FE<1,SZABAB>::shape (EDGE3, totalorder, i1[i], eta));
723
724 // d()/deta
725 case 1:
726 return (FE<1,SZABAB>::shape (EDGE3, totalorder, i0[i], xi)*
727 FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta));
728
729 default:
730 libmesh_error_msg("Invalid j = " << j);
731 }
732 }
733
734 default:
735 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
736 }
737 }
738
739
740
741 // 3rd-order Szabo-Babuska.
742 case THIRD:
743 {
744 switch (type)
745 {
746 // Szabo-Babuska shape functions on the triangle.
747 case TRI6:
748 case TRI7:
749 {
750 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<2,SZABAB>::shape);
751 }
752
753
754 // Szabo-Babuska shape functions on the quadrilateral.
755 case QUAD8:
756 case QUAD9:
757 {
758 // Compute quad shape functions as a tensor-product
759 const Real xi = p(0);
760 const Real eta = p(1);
761
762 libmesh_assert_less (i, 16);
763
764 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
765 static const unsigned int i0[] = {0, 1, 1, 0, 2, 3, 1, 1, 2, 3, 0, 0, 2, 3, 2, 3};
766 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 2, 3, 1, 1, 2, 3, 2, 2, 3, 3};
767
768 const Real f = quad_flip(elem, totalorder, i);
769
770 switch (j)
771 {
772 // d()/dxi
773 case 0:
774 return f*(FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi)*
775 FE<1,SZABAB>::shape (EDGE3, totalorder, i1[i], eta));
776
777 // d()/deta
778 case 1:
779 return f*(FE<1,SZABAB>::shape (EDGE3, totalorder, i0[i], xi)*
780 FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta));
781
782 default:
783 libmesh_error_msg("Invalid j = " << j);
784 }
785 }
786
787 default:
788 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
789 }
790 }
791
792
793
794
795 // 4th-order Szabo-Babuska.
796 case FOURTH:
797 {
798 switch (type)
799 {
800
801 // Szabo-Babuska shape functions on the triangle.
802 case TRI6:
803 case TRI7:
804 {
805 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<2,SZABAB>::shape);
806 }
807
808
809 // Szabo-Babuska shape functions on the quadrilateral.
810 case QUAD8:
811 case QUAD9:
812 {
813 // Compute quad shape functions as a tensor-product
814 const Real xi = p(0);
815 const Real eta = p(1);
816
817 libmesh_assert_less (i, 25);
818
819 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
820 static const unsigned int i0[] = {0, 1, 1, 0, 2, 3, 4, 1, 1, 1, 2, 3, 4, 0, 0, 0, 2, 3, 4, 2, 3, 4, 2, 3, 4};
821 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 0, 2, 3, 4, 1, 1, 1, 2, 3, 4, 2, 2, 2, 3, 3, 3, 4, 4, 4};
822
823 const Real f = quad_flip(elem, totalorder, i);
824
825 switch (j)
826 {
827 // d()/dxi
828 case 0:
829 return f*(FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi)*
830 FE<1,SZABAB>::shape (EDGE3, totalorder, i1[i], eta));
831
832 // d()/deta
833 case 1:
834 return f*(FE<1,SZABAB>::shape (EDGE3, totalorder, i0[i], xi)*
835 FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta));
836
837 default:
838 libmesh_error_msg("Invalid j = " << j);
839 }
840 }
841
842 default:
843 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
844 }
845 }
846
847
848
849
850 // 5th-order Szabo-Babuska.
851 case FIFTH:
852 {
853 // Szabo-Babuska shape functions on the quadrilateral.
854 switch (type)
855 {
856
857 // Szabo-Babuska shape functions on the triangle.
858 case TRI6:
859 case TRI7:
860 {
861 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<2,SZABAB>::shape);
862 }
863
864
865 case QUAD8:
866 case QUAD9:
867 {
868 // Compute quad shape functions as a tensor-product
869 const Real xi = p(0);
870 const Real eta = p(1);
871
872 libmesh_assert_less (i, 36);
873
874 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
875 static const unsigned int i0[] = {0, 1, 1, 0, 2, 3, 4, 5, 1, 1, 1, 1, 2, 3, 4, 5, 0, 0, 0, 0, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5};
876 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 0, 0, 2, 3, 4, 5, 1, 1, 1, 1, 2, 3, 4, 5, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5};
877
878 const Real f = quad_flip(elem, totalorder, i);
879
880 switch (j)
881 {
882 // d()/dxi
883 case 0:
884 return f*(FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi)*
885 FE<1,SZABAB>::shape (EDGE3, totalorder, i1[i], eta));
886
887 // d()/deta
888 case 1:
889 return f*(FE<1,SZABAB>::shape (EDGE3, totalorder, i0[i], xi)*
890 FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta));
891
892 default:
893 libmesh_error_msg("Invalid j = " << j);
894 }
895 }
896
897 default:
898 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
899 }
900 }
901
902
903 // 6th-order Szabo-Babuska.
904 case SIXTH:
905 {
906 // Szabo-Babuska shape functions on the quadrilateral.
907 switch (type)
908 {
909
910 // Szabo-Babuska shape functions on the triangle.
911 case TRI6:
912 case TRI7:
913 {
914 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<2,SZABAB>::shape);
915 }
916
917
918 case QUAD8:
919 case QUAD9:
920 {
921 // Compute quad shape functions as a tensor-product
922 const Real xi = p(0);
923 const Real eta = p(1);
924
925 libmesh_assert_less (i, 49);
926
927 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
928 static const unsigned int i0[] = {0, 1, 1, 0, 2, 3, 4, 5, 6, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6};
929 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6};
930
931 const Real f = quad_flip(elem, totalorder, i);
932
933 switch (j)
934 {
935 // d()/dxi
936 case 0:
937 return f*(FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi)*
938 FE<1,SZABAB>::shape (EDGE3, totalorder, i1[i], eta));
939
940 // d()/deta
941 case 1:
942 return f*(FE<1,SZABAB>::shape (EDGE3, totalorder, i0[i], xi)*
943 FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta));
944
945 default:
946 libmesh_error_msg("Invalid j = " << j);
947 }
948 }
949
950 default:
951 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
952 }
953 }
954
955
956 // 7th-order Szabo-Babuska.
957 case SEVENTH:
958 {
959 // Szabo-Babuska shape functions on the quadrilateral.
960 switch (type)
961 {
962
963 // Szabo-Babuska shape functions on the triangle.
964 case TRI6:
965 case TRI7:
966 {
967 return fe_fdm_deriv(elem, order, i, j, p, add_p_level, FE<2,SZABAB>::shape);
968 }
969
970
971 case QUAD8:
972 case QUAD9:
973 {
974 // Compute quad shape functions as a tensor-product
975 const Real xi = p(0);
976 const Real eta = p(1);
977
978 libmesh_assert_less (i, 64);
979
980 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
981 static const unsigned int i0[] = {0, 1, 1, 0, 2, 3, 4, 5, 6, 7, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7};
982 static const unsigned int i1[] = {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7};
983
984 const Real f = quad_flip(elem, totalorder, i);
985
986 switch (j)
987 {
988 // d()/dxi
989 case 0:
990 return f*(FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i0[i], 0, xi)*
991 FE<1,SZABAB>::shape (EDGE3, totalorder, i1[i], eta));
992
993 // d()/deta
994 case 1:
995 return f*(FE<1,SZABAB>::shape (EDGE3, totalorder, i0[i], xi)*
996 FE<1,SZABAB>::shape_deriv(EDGE3, totalorder, i1[i], 0, eta));
997
998 default:
999 libmesh_error_msg("Invalid j = " << j);
1000 }
1001 }
1002
1003 default:
1004 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
1005 }
1006 }
1007
1008
1009
1010 // by default throw an error;call the orientation-independent shape functions
1011 default:
1012 libmesh_error_msg("ERROR: Unsupported polynomial order!");
1013 }
1014}

◆ shape_deriv() [87/233]

Real libMesh::FE< 3, CLOUGH >::shape_deriv ( const Elem libmesh_dbg_varelem,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 90 of file fe_clough_shape_3D.C.

96{
97 libmesh_assert(elem);
98 libmesh_not_implemented();
99 return 0.;
100}

◆ shape_deriv() [88/233]

Real libMesh::FE< 1, HIERARCHIC >::shape_deriv ( const ElemType  elem_type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 178 of file fe_hierarchic_shape_1D.C.

183{
184 return fe_hierarchic_1D_shape_deriv(elem_type, order, i, j, p);
185}

◆ shape_deriv() [89/233]

Real libMesh::FE< 1, L2_HIERARCHIC >::shape_deriv ( const ElemType  elem_type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 190 of file fe_hierarchic_shape_1D.C.

195{
196 return fe_hierarchic_1D_shape_deriv(elem_type, order, i, j, p);
197}

◆ shape_deriv() [90/233]

static OutputShape libMesh::FE< Dim, T >::shape_deriv ( const ElemType  t,
const Order  o,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
staticinherited
Returns
The \( j^{th} \) derivative of the \( i^{th} \) shape function at point p. This method allows you to specify the dimension, element type, and order directly.

On a p-refined element, o should be the total order of the element.

◆ shape_deriv() [91/233]

RealGradient libMesh::FE< 0, HIERARCHIC_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 136 of file fe_hierarchic_vec.C.

139{
140 Real value = FE<0,HIERARCHIC>::shape_deriv( type, order, i, j, p );
142}

◆ shape_deriv() [92/233]

RealGradient libMesh::FE< 0, L2_HIERARCHIC_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 160 of file fe_hierarchic_vec.C.

163{
164 return FE<0,HIERARCHIC_VEC>::shape_deriv(type, order, i, j, p);
165}

◆ shape_deriv() [93/233]

RealGradient libMesh::FE< 1, HIERARCHIC_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 184 of file fe_hierarchic_vec.C.

187{
188 Real value = FE<1,HIERARCHIC>::shape_deriv( type, order, i, j, p );
190}

◆ shape_deriv() [94/233]

RealGradient libMesh::FE< 1, L2_HIERARCHIC_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 207 of file fe_hierarchic_vec.C.

210{
211 return FE<1,HIERARCHIC_VEC>::shape_deriv(type, order, i, j, p);
212}

◆ shape_deriv() [95/233]

RealGradient libMesh::FE< 2, HIERARCHIC_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 245 of file fe_hierarchic_vec.C.

248{
249 Real value = FE<2,HIERARCHIC>::shape_deriv( type, order, i/2, j, p );
250
251 switch( i%2 )
252 {
253 case 0:
255
256 case 1:
257 return libMesh::RealGradient( Real(0), value );
258
259 default:
260 libmesh_error_msg("i%2 must be either 0 or 1!");
261 }
262
263 //dummy
264 return libMesh::RealGradient();
265}

◆ shape_deriv() [96/233]

RealGradient libMesh::FE< 2, L2_HIERARCHIC_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 298 of file fe_hierarchic_vec.C.

301{
302 return FE<2,HIERARCHIC_VEC>::shape_deriv(type, order, i, j, p);
303}

◆ shape_deriv() [97/233]

RealGradient libMesh::FE< 3, HIERARCHIC_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 339 of file fe_hierarchic_vec.C.

342{
343 Real value = FE<3,HIERARCHIC>::shape_deriv( type, order, i/3, j, p );
344
345 switch( i%3 )
346 {
347 case 0:
349
350 case 1:
351 return libMesh::RealGradient( Real(0), value );
352
353 case 2:
354 return libMesh::RealGradient( Real(0), Real(0), value );
355
356 default:
357 libmesh_error_msg("i%3 must be 0, 1, or 2!");
358 }
359
360 //dummy
361 return libMesh::RealGradient();
362}

◆ shape_deriv() [98/233]

RealGradient libMesh::FE< 3, L2_HIERARCHIC_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 399 of file fe_hierarchic_vec.C.

402{
403 return FE<3,HIERARCHIC_VEC>::shape_deriv(type, order, i, j, p);
404}

◆ shape_deriv() [99/233]

Real libMesh::FE< 2, LAGRANGE >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 148 of file fe_lagrange_shape_2D.C.

153{
154 return fe_lagrange_2D_shape_deriv<LAGRANGE>(type, nullptr, order, i, j, p);
155}

◆ shape_deriv() [100/233]

Real libMesh::FE< 2, L2_LAGRANGE >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 160 of file fe_lagrange_shape_2D.C.

165{
166 return fe_lagrange_2D_shape_deriv<L2_LAGRANGE>(type, nullptr, order, i, j, p);
167}

◆ shape_deriv() [101/233]

Real libMesh::FE< 3, LAGRANGE >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 495 of file fe_lagrange_shape_3D.C.

500{
501 return fe_lagrange_3D_shape_deriv<LAGRANGE>(type, order, nullptr, i, j, p);
502}

◆ shape_deriv() [102/233]

Real libMesh::FE< 3, L2_LAGRANGE >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 507 of file fe_lagrange_shape_3D.C.

512{
513 return fe_lagrange_3D_shape_deriv<L2_LAGRANGE>(type, order, nullptr, i, j, p);
514}

◆ shape_deriv() [103/233]

RealGradient libMesh::FE< 0, LAGRANGE_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 676 of file fe_lagrange_vec.C.

679{
680 Real value = FE<0,LAGRANGE>::shape_deriv( type, order, i, j, p );
682}

◆ shape_deriv() [104/233]

RealGradient libMesh::FE< 0, L2_LAGRANGE_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 700 of file fe_lagrange_vec.C.

703{
704 return FE<0,LAGRANGE_VEC>::shape_deriv(type, order, i, j, p);
705}

◆ shape_deriv() [105/233]

RealGradient libMesh::FE< 1, LAGRANGE_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 724 of file fe_lagrange_vec.C.

727{
728 Real value = FE<1,LAGRANGE>::shape_deriv( type, order, i, j, p );
730}

◆ shape_deriv() [106/233]

RealGradient libMesh::FE< 1, L2_LAGRANGE_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 747 of file fe_lagrange_vec.C.

750{
751 return FE<1,LAGRANGE_VEC>::shape_deriv(type, order, i, j, p);
752}

◆ shape_deriv() [107/233]

RealGradient libMesh::FE< 2, LAGRANGE_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 785 of file fe_lagrange_vec.C.

788{
789 Real value = FE<2,LAGRANGE>::shape_deriv( type, order, i/2, j, p );
790
791 switch( i%2 )
792 {
793 case 0:
795
796 case 1:
797 return libMesh::RealGradient( Real(0), value );
798
799 default:
800 libmesh_error_msg("i%2 must be either 0 or 1!");
801 }
802
803 //dummy
804 return libMesh::RealGradient();
805}

◆ shape_deriv() [108/233]

RealGradient libMesh::FE< 2, L2_LAGRANGE_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 838 of file fe_lagrange_vec.C.

841{
842 return FE<2,LAGRANGE_VEC>::shape_deriv(type, order, i, j, p);
843}

◆ shape_deriv() [109/233]

RealGradient libMesh::FE< 3, LAGRANGE_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 879 of file fe_lagrange_vec.C.

882{
883 Real value = FE<3,LAGRANGE>::shape_deriv( type, order, i/3, j, p );
884
885 switch( i%3 )
886 {
887 case 0:
889
890 case 1:
891 return libMesh::RealGradient( Real(0), value );
892
893 case 2:
894 return libMesh::RealGradient( Real(0), Real(0), value );
895
896 default:
897 libmesh_error_msg("i%3 must be 0, 1, or 2!");
898 }
899
900 //dummy
901 return libMesh::RealGradient();
902}

◆ shape_deriv() [110/233]

RealGradient libMesh::FE< 3, L2_LAGRANGE_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 939 of file fe_lagrange_vec.C.

942{
943 return FE<3,LAGRANGE_VEC>::shape_deriv(type, order, i, j, p);
944}

◆ shape_deriv() [111/233]

RealVectorValue libMesh::FE< 0, MONOMIAL_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 158 of file fe_monomial_vec.C.

163{
164 Real value = FE<0, MONOMIAL>::shape_deriv(type, order, i, j, p);
166}

◆ shape_deriv() [112/233]

RealVectorValue libMesh::FE< 1, MONOMIAL_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 196 of file fe_monomial_vec.C.

201{
202 Real value = FE<1, MONOMIAL>::shape_deriv(type, order, i, j, p);
204}

◆ shape_deriv() [113/233]

RealVectorValue libMesh::FE< 2, MONOMIAL_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 247 of file fe_monomial_vec.C.

252{
253 Real value = FE<2, MONOMIAL>::shape_deriv(type, order, i / 2, j, p);
254
255 switch (i % 2)
256 {
257 case 0:
259
260 case 1:
262
263 default:
264 libmesh_error_msg("i%2 must be either 0 or 1!");
265 }
266
267 // dummy
269}

◆ shape_deriv() [114/233]

RealVectorValue libMesh::FE< 3, MONOMIAL_VEC >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 330 of file fe_monomial_vec.C.

335{
336 Real value = FE<3, MONOMIAL>::shape_deriv(type, order, i / 3, j, p);
337
338 switch (i % 3)
339 {
340 case 0:
342
343 case 1:
345
346 case 2:
347 return libMesh::RealVectorValue(Real(0), Real(0), value);
348
349 default:
350 libmesh_error_msg("i%3 must be 0, 1, or 2!");
351 }
352
353 // dummy
355}

◆ shape_deriv() [115/233]

Real libMesh::FE< 2, SUBDIVISION >::shape_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 762 of file fe_subdivision_2D.C.

767{
768 switch (order)
769 {
770 case FOURTH:
771 {
772 switch (type)
773 {
774 case TRI3SUBDIVISION:
775 libmesh_assert_less(i, 12);
776 return FESubdivision::regular_shape_deriv(i,j,p(0),p(1));
777 default:
778 libmesh_error_msg("ERROR: Unsupported element type == " << Utility::enum_to_string(type));
779 }
780 }
781 default:
782 libmesh_error_msg("ERROR: Unsupported polynomial order == " << order);
783 }
784}

◆ shape_deriv() [116/233]

Real libMesh::FE< 2, MONOMIAL >::shape_deriv ( const ElemType  ,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 150 of file fe_monomial_shape_2D.C.

155{
156#if LIBMESH_DIM > 1
157
158
159 libmesh_assert_less (j, 2);
160
161 libmesh_assert_less (i, (static_cast<unsigned int>(order)+1)*
162 (static_cast<unsigned int>(order)+2)/2);
163
164 const Real xi = p(0);
165 const Real eta = p(1);
166
167 // monomials. since they are hierarchic we only need one case block.
168
169 switch (j)
170 {
171 // d()/dxi
172 case 0:
173 {
174 switch (i)
175 {
176 // constants
177 case 0:
178 return 0.;
179
180 // linears
181 case 1:
182 return 1.;
183
184 case 2:
185 return 0.;
186
187 // quadratics
188 case 3:
189 return 2.*xi;
190
191 case 4:
192 return eta;
193
194 case 5:
195 return 0.;
196
197 // cubics
198 case 6:
199 return 3.*xi*xi;
200
201 case 7:
202 return 2.*xi*eta;
203
204 case 8:
205 return eta*eta;
206
207 case 9:
208 return 0.;
209
210 // quartics
211 case 10:
212 return 4.*xi*xi*xi;
213
214 case 11:
215 return 3.*xi*xi*eta;
216
217 case 12:
218 return 2.*xi*eta*eta;
219
220 case 13:
221 return eta*eta*eta;
222
223 case 14:
224 return 0.;
225
226 default:
227 unsigned int o = 0;
228 for (; i >= (o+1)*(o+2)/2; o++) { }
229 const int ny = i - (o*(o+1)/2);
230 const int nx = o - ny;
231 Real val = nx;
232 for (int index=1; index < nx; index++)
233 val *= xi;
234 for (int index=0; index != ny; index++)
235 val *= eta;
236 return val;
237 }
238 }
239
240
241 // d()/deta
242 case 1:
243 {
244 switch (i)
245 {
246 // constants
247 case 0:
248 return 0.;
249
250 // linears
251 case 1:
252 return 0.;
253
254 case 2:
255 return 1.;
256
257 // quadratics
258 case 3:
259 return 0.;
260
261 case 4:
262 return xi;
263
264 case 5:
265 return 2.*eta;
266
267 // cubics
268 case 6:
269 return 0.;
270
271 case 7:
272 return xi*xi;
273
274 case 8:
275 return 2.*xi*eta;
276
277 case 9:
278 return 3.*eta*eta;
279
280 // quartics
281 case 10:
282 return 0.;
283
284 case 11:
285 return xi*xi*xi;
286
287 case 12:
288 return 2.*xi*xi*eta;
289
290 case 13:
291 return 3.*xi*eta*eta;
292
293 case 14:
294 return 4.*eta*eta*eta;
295
296 default:
297 unsigned int o = 0;
298 for (; i >= (o+1)*(o+2)/2; o++) { }
299 const int ny = i - (o*(o+1)/2);
300 const int nx = o - ny;
301 Real val = ny;
302 for (int index=0; index != nx; index++)
303 val *= xi;
304 for (int index=1; index < ny; index++)
305 val *= eta;
306 return val;
307 }
308 }
309
310 default:
311 libmesh_error_msg("Invalid shape function derivative j = " << j);
312 }
313
314#else // LIBMESH_DIM == 1
315 libmesh_ignore(i, j, p);
316 libmesh_assert(order);
317 libmesh_not_implemented();
318#endif
319}

◆ shape_deriv() [117/233]

Real libMesh::FE< 3, MONOMIAL >::shape_deriv ( const ElemType  ,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 219 of file fe_monomial_shape_3D.C.

224{
225#if LIBMESH_DIM == 3
226
227 libmesh_assert_less (j, 3);
228
229 libmesh_assert_less (i, (static_cast<unsigned int>(order)+1)*
230 (static_cast<unsigned int>(order)+2)*
231 (static_cast<unsigned int>(order)+3)/6);
232
233
234 const Real xi = p(0);
235 const Real eta = p(1);
236 const Real zeta = p(2);
237
238 // monomials. since they are hierarchic we only need one case block.
239 switch (j)
240 {
241 // d()/dxi
242 case 0:
243 {
244 switch (i)
245 {
246 // constant
247 case 0:
248 return 0.;
249
250 // linear
251 case 1:
252 return 1.;
253
254 case 2:
255 return 0.;
256
257 case 3:
258 return 0.;
259
260 // quadratic
261 case 4:
262 return 2.*xi;
263
264 case 5:
265 return eta;
266
267 case 6:
268 return 0.;
269
270 case 7:
271 return zeta;
272
273 case 8:
274 return 0.;
275
276 case 9:
277 return 0.;
278
279 // cubic
280 case 10:
281 return 3.*xi*xi;
282
283 case 11:
284 return 2.*xi*eta;
285
286 case 12:
287 return eta*eta;
288
289 case 13:
290 return 0.;
291
292 case 14:
293 return 2.*xi*zeta;
294
295 case 15:
296 return eta*zeta;
297
298 case 16:
299 return 0.;
300
301 case 17:
302 return zeta*zeta;
303
304 case 18:
305 return 0.;
306
307 case 19:
308 return 0.;
309
310 // quartics
311 case 20:
312 return 4.*xi*xi*xi;
313
314 case 21:
315 return 3.*xi*xi*eta;
316
317 case 22:
318 return 2.*xi*eta*eta;
319
320 case 23:
321 return eta*eta*eta;
322
323 case 24:
324 return 0.;
325
326 case 25:
327 return 3.*xi*xi*zeta;
328
329 case 26:
330 return 2.*xi*eta*zeta;
331
332 case 27:
333 return eta*eta*zeta;
334
335 case 28:
336 return 0.;
337
338 case 29:
339 return 2.*xi*zeta*zeta;
340
341 case 30:
342 return eta*zeta*zeta;
343
344 case 31:
345 return 0.;
346
347 case 32:
348 return zeta*zeta*zeta;
349
350 case 33:
351 return 0.;
352
353 case 34:
354 return 0.;
355
356 default:
357 unsigned int o = 0;
358 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
359 const int i2 = i - (o*(o+1)*(o+2)/6);
360 int block=o, nz = 0;
361 for (; block < i2; block += (o-nz+1)) { nz++; }
362 const int nx = block - i2;
363 const int ny = o - nx - nz;
364 Real val = nx;
365 for (int index=1; index < nx; index++)
366 val *= xi;
367 for (int index=0; index != ny; index++)
368 val *= eta;
369 for (int index=0; index != nz; index++)
370 val *= zeta;
371 return val;
372 }
373 }
374
375
376 // d()/deta
377 case 1:
378 {
379 switch (i)
380 {
381 // constant
382 case 0:
383 return 0.;
384
385 // linear
386 case 1:
387 return 0.;
388
389 case 2:
390 return 1.;
391
392 case 3:
393 return 0.;
394
395 // quadratic
396 case 4:
397 return 0.;
398
399 case 5:
400 return xi;
401
402 case 6:
403 return 2.*eta;
404
405 case 7:
406 return 0.;
407
408 case 8:
409 return zeta;
410
411 case 9:
412 return 0.;
413
414 // cubic
415 case 10:
416 return 0.;
417
418 case 11:
419 return xi*xi;
420
421 case 12:
422 return 2.*xi*eta;
423
424 case 13:
425 return 3.*eta*eta;
426
427 case 14:
428 return 0.;
429
430 case 15:
431 return xi*zeta;
432
433 case 16:
434 return 2.*eta*zeta;
435
436 case 17:
437 return 0.;
438
439 case 18:
440 return zeta*zeta;
441
442 case 19:
443 return 0.;
444
445 // quartics
446 case 20:
447 return 0.;
448
449 case 21:
450 return xi*xi*xi;
451
452 case 22:
453 return 2.*xi*xi*eta;
454
455 case 23:
456 return 3.*xi*eta*eta;
457
458 case 24:
459 return 4.*eta*eta*eta;
460
461 case 25:
462 return 0.;
463
464 case 26:
465 return xi*xi*zeta;
466
467 case 27:
468 return 2.*xi*eta*zeta;
469
470 case 28:
471 return 3.*eta*eta*zeta;
472
473 case 29:
474 return 0.;
475
476 case 30:
477 return xi*zeta*zeta;
478
479 case 31:
480 return 2.*eta*zeta*zeta;
481
482 case 32:
483 return 0.;
484
485 case 33:
486 return zeta*zeta*zeta;
487
488 case 34:
489 return 0.;
490
491 default:
492 unsigned int o = 0;
493 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
494 const int i2 = i - (o*(o+1)*(o+2)/6);
495 int block=o, nz = 0;
496 for (; block < i2; block += (o-nz+1)) { nz++; }
497 const int nx = block - i2;
498 const int ny = o - nx - nz;
499 Real val = ny;
500 for (int index=0; index != nx; index++)
501 val *= xi;
502 for (int index=1; index < ny; index++)
503 val *= eta;
504 for (int index=0; index != nz; index++)
505 val *= zeta;
506 return val;
507 }
508 }
509
510
511 // d()/dzeta
512 case 2:
513 {
514 switch (i)
515 {
516 // constant
517 case 0:
518 return 0.;
519
520 // linear
521 case 1:
522 return 0.;
523
524 case 2:
525 return 0.;
526
527 case 3:
528 return 1.;
529
530 // quadratic
531 case 4:
532 return 0.;
533
534 case 5:
535 return 0.;
536
537 case 6:
538 return 0.;
539
540 case 7:
541 return xi;
542
543 case 8:
544 return eta;
545
546 case 9:
547 return 2.*zeta;
548
549 // cubic
550 case 10:
551 return 0.;
552
553 case 11:
554 return 0.;
555
556 case 12:
557 return 0.;
558
559 case 13:
560 return 0.;
561
562 case 14:
563 return xi*xi;
564
565 case 15:
566 return xi*eta;
567
568 case 16:
569 return eta*eta;
570
571 case 17:
572 return 2.*xi*zeta;
573
574 case 18:
575 return 2.*eta*zeta;
576
577 case 19:
578 return 3.*zeta*zeta;
579
580 // quartics
581 case 20:
582 return 0.;
583
584 case 21:
585 return 0.;
586
587 case 22:
588 return 0.;
589
590 case 23:
591 return 0.;
592
593 case 24:
594 return 0.;
595
596 case 25:
597 return xi*xi*xi;
598
599 case 26:
600 return xi*xi*eta;
601
602 case 27:
603 return xi*eta*eta;
604
605 case 28:
606 return eta*eta*eta;
607
608 case 29:
609 return 2.*xi*xi*zeta;
610
611 case 30:
612 return 2.*xi*eta*zeta;
613
614 case 31:
615 return 2.*eta*eta*zeta;
616
617 case 32:
618 return 3.*xi*zeta*zeta;
619
620 case 33:
621 return 3.*eta*zeta*zeta;
622
623 case 34:
624 return 4.*zeta*zeta*zeta;
625
626 default:
627 unsigned int o = 0;
628 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
629 const int i2 = i - (o*(o+1)*(o+2)/6);
630 int block=o, nz = 0;
631 for (; block < i2; block += (o-nz+1)) { nz++; }
632 const int nx = block - i2;
633 const int ny = o - nx - nz;
634 Real val = nz;
635 for (int index=0; index != nx; index++)
636 val *= xi;
637 for (int index=0; index != ny; index++)
638 val *= eta;
639 for (int index=1; index < nz; index++)
640 val *= zeta;
641 return val;
642 }
643 }
644
645 default:
646 libmesh_error_msg("Invalid shape function derivative j = " << j);
647 }
648
649#else // LIBMESH_DIM != 3
650 libmesh_assert(order);
651 libmesh_ignore(i, j, p);
652 libmesh_not_implemented();
653#endif
654}

◆ shape_deriv() [118/233]

Real libMesh::FE< 1, MONOMIAL >::shape_deriv ( const ElemType  ,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  libmesh_dbg_varj,
const Point p 
)
inherited

Definition at line 97 of file fe_monomial_shape_1D.C.

102{
103 // only d()/dxi in 1D!
104
105 libmesh_assert_equal_to (j, 0);
106
107 const Real xi = p(0);
108
109 libmesh_assert_less_equal (i, static_cast<unsigned int>(order));
110
111 // monomials. since they are hierarchic we only need one case block.
112 switch (i)
113 {
114 case 0:
115 return 0.;
116
117 case 1:
118 return 1.;
119
120 case 2:
121 return 2.*xi;
122
123 case 3:
124 return 3.*xi*xi;
125
126 case 4:
127 return 4.*xi*xi*xi;
128
129 default:
130 Real val = i;
131 for (unsigned int index = 1; index != i; ++index)
132 val *= xi;
133 return val;
134 }
135}

◆ shape_deriv() [119/233]

Real libMesh::FE< 1, SZABAB >::shape_deriv ( const ElemType  ,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  libmesh_dbg_varj,
const Point p 
)
inherited

Definition at line 110 of file fe_szabab_shape_1D.C.

115{
116 // only d()/dxi in 1D!
117 libmesh_assert_equal_to (j, 0);
118
119 const Real xi = p(0);
120 const Real xi2 = xi*xi;
121
122 // Use this libmesh_assert rather than a switch with a single entry...
123 // It will go away in optimized mode, essentially has the same effect.
124 libmesh_assert_less_equal (order, SEVENTH);
125
126 // switch (order)
127 // {
128 // case FIRST:
129 // case SECOND:
130 // case THIRD:
131 // case FOURTH:
132 // case FIFTH:
133 // case SIXTH:
134 // case SEVENTH:
135
136 switch(i)
137 {
138 case 0:return -1./2.;
139 case 1:return 1./2.;
140 case 2:return 1./2.*2.4494897427831780982*xi;
141 case 3:return -1./4.*3.1622776601683793320+3./4.*3.1622776601683793320*xi2;
142 case 4:return 1./16.*3.7416573867739413856*(-12.+20*xi2)*xi;
143 case 5:return 9./16.*1.4142135623730950488+(-45./8.*1.4142135623730950488+105./16.*1.4142135623730950488*xi2)*xi2;
144 case 6:return 1./32.*4.6904157598234295546*(30.+(-140.+126.*xi2)*xi2)*xi;
145 case 7:return -5./32.*5.0990195135927848300+(105./32.*5.0990195135927848300+(-315./32.*5.0990195135927848300+231./32.*5.0990195135927848300*xi2)*xi2)*xi2;
146 case 8:return 1./256.*5.4772255750516611346*(-280.+(2520.+(-5544.+3432.*xi2)*xi2)*xi2)*xi;
147
148 default:
149 libmesh_error_msg("Invalid shape function index!");
150 }
151}

◆ shape_deriv() [120/233]

Real libMesh::FE< 1, LAGRANGE >::shape_deriv ( const ElemType  ,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 103 of file fe_lagrange_shape_1D.C.

108{
109 return fe_lagrange_1D_shape_deriv(order, i, j, p(0));
110}

◆ shape_deriv() [121/233]

Real libMesh::FE< 1, L2_LAGRANGE >::shape_deriv ( const ElemType  ,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 115 of file fe_lagrange_shape_1D.C.

120{
121 return fe_lagrange_1D_shape_deriv(order, i, j, p(0));
122}

◆ shape_deriv() [122/233]

Real libMesh::FE< 1, BERNSTEIN >::shape_deriv ( const ElemType  ,
const Order  order,
const unsigned int  i,
const unsigned int  libmesh_dbg_varj,
const Point p 
)
inherited

Definition at line 222 of file fe_bernstein_shape_1D.C.

227{
228 // only d()/dxi in 1D!
229
230 libmesh_assert_equal_to (j, 0);
231
232 const Real xi = p(0);
233
234 using Utility::pow;
235
236 switch (order)
237 {
238 case FIRST:
239
240 switch(i)
241 {
242 case 0:
243 return -.5;
244 case 1:
245 return .5;
246 default:
247 libmesh_error_msg("Invalid shape function index i = " << i);
248 }
249
250 case SECOND:
251
252 switch(i)
253 {
254 case 0:
255 return (xi-1.)*.5;
256 case 1:
257 return (xi+1.)*.5;
258 case 2:
259 return -xi;
260 default:
261 libmesh_error_msg("Invalid shape function index i = " << i);
262 }
263
264 case THIRD:
265
266 switch(i)
267 {
268 case 0:
269 return -0.375*pow<2>(1.-xi);
270 case 1:
271 return 0.375*pow<2>(1.+xi);
272 case 2:
273 return -0.375 -.75*xi +1.125*pow<2>(xi);
274 case 3:
275 return 0.375 -.75*xi -1.125*pow<2>(xi);
276 default:
277 libmesh_error_msg("Invalid shape function index i = " << i);
278 }
279
280 case FOURTH:
281
282 switch(i)
283 {
284 case 0:
285 return -0.25*pow<3>(1.-xi);
286 case 1:
287 return 0.25*pow<3>(1.+xi);
288 case 2:
289 return -0.5 +1.5*pow<2>(xi)-pow<3>(xi);
290 case 3:
291 return 1.5*(pow<3>(xi)-xi);
292 case 4:
293 return 0.5 -1.5*pow<2>(xi)-pow<3>(xi);
294 default:
295 libmesh_error_msg("Invalid shape function index i = " << i);
296 }
297
298 case FIFTH:
299
300 switch(i)
301 {
302 case 0:
303 return -(5./32.)*pow<4>(xi-1.);
304 case 1:
305 return (5./32.)*pow<4>(xi+1.);
306 case 2:
307 return (5./32.)*pow<4>(1.-xi) -(5./8.)*(1.+xi)*pow<3>(1.-xi);
308 case 3:
309 return (5./ 8.)*(1.+xi)*pow<3>(1.-xi) -(15./16.)*pow<2>(1.+xi)*pow<2>(1.-xi);
310 case 4:
311 return -(5./ 8.)*pow<3>(1.+xi)*(1.-xi) +(15./16.)*pow<2>(1.+xi)*pow<2>(1.-xi);
312 case 5:
313 return (5./ 8.)*pow<3>(1.+xi)*(1.-xi) -(5./32.)*pow<4>(1.+xi);
314 default:
315 libmesh_error_msg("Invalid shape function index i = " << i);
316 }
317
318 case SIXTH:
319
320 switch(i)
321 {
322 case 0:
323 return -( 3./32.)*pow<5>(1.-xi);
324 case 1:
325 return ( 3./32.)*pow<5>(1.+xi);
326 case 2:
327 return ( 3./32.)*pow<5>(1.-xi)-(15./32.)*(1.+xi)*pow<4>(1.-xi);
328 case 3:
329 return (15./32.)*(1.+xi)*pow<4>(1.-xi)-(15./16.)*pow<2>(1.+xi)*pow<3>(1.-xi);
330 case 4:
331 return -(15./ 8.)*xi +(15./4.)*pow<3>(xi)-(15./8.)*pow<5>(xi);
332 case 5:
333 return -(15./32.)*(1.-xi)*pow<4>(1.+xi)+(15./16.)*pow<2>(1.-xi)*pow<3>(1.+xi);
334 case 6:
335 return (15./32.)*pow<4>(1.+xi)*(1.-xi)-(3./32.)*pow<5>(1.+xi);
336 default:
337 libmesh_error_msg("Invalid shape function index i = " << i);
338 }
339
340
341 default:
342 {
343 libmesh_assert (order>6);
344
345 // Use this for arbitrary orders
346 const int p_order = static_cast<int>(order);
347 const int m = p_order-(i-1);
348 const int n = (i-1);
349
350 Real binomial_p_i = 1;
351
352 // the binomial coefficient (p choose n)
353 // Using an unsigned long here will work for any of the orders we support.
354 // Explicitly construct a Real to prevent conversion warnings
355 if (i>1)
356 binomial_p_i = Real(Utility::binomial(static_cast<unsigned long>(p_order),
357 static_cast<unsigned long>(n)));
358
359 switch(i)
360 {
361 case 0:
362 return binomial_p_i * (-1./2.) * p_order * std::pow((1-xi)/2, p_order-1);
363 case 1:
364 return binomial_p_i * ( 1./2.) * p_order * std::pow((1+xi)/2, p_order-1);
365
366 default:
367 {
368 return binomial_p_i * (1./2. * n * std::pow((1+xi)/2,n-1) * std::pow((1-xi)/2,m)
369 - 1./2. * m * std::pow((1+xi)/2,n) * std::pow((1-xi)/2,m-1));
370 }
371 }
372 }
373
374 }
375}

◆ shape_deriv() [123/233]

Real libMesh::FE< 0, BERNSTEIN >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 70 of file fe_bernstein_shape_0D.C.

75{
76 libmesh_error_msg("No spatial derivatives in 0D!");
77 return 0.;
78}

◆ shape_deriv() [124/233]

Real libMesh::FE< 2, BERNSTEIN >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 515 of file fe_bernstein_shape_2D.C.

520{
521 libmesh_error_msg("Bernstein polynomials require the element type \nbecause edge orientation is needed.");
522 return 0.;
523}

◆ shape_deriv() [125/233]

Real libMesh::FE< 3, BERNSTEIN >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 2315 of file fe_bernstein_shape_3D.C.

2320{
2321 libmesh_error_msg("Bernstein polynomials require the element type \nbecause edge and face orientation is needed.");
2322 return 0.;
2323}

◆ shape_deriv() [126/233]

Real libMesh::FE< 0, CLOUGH >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 71 of file fe_clough_shape_0D.C.

76{
77 libmesh_error_msg("No spatial derivatives in 0D!");
78 return 0.;
79}

◆ shape_deriv() [127/233]

Real libMesh::FE< 1, CLOUGH >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 304 of file fe_clough_shape_1D.C.

309{
310 libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
311 return 0.;
312}

◆ shape_deriv() [128/233]

Real libMesh::FE< 2, CLOUGH >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 2155 of file fe_clough_shape_2D.C.

2160{
2161 libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
2162 return 0.;
2163}

◆ shape_deriv() [129/233]

Real libMesh::FE< 3, CLOUGH >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 77 of file fe_clough_shape_3D.C.

82{
83 libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
84 return 0.;
85}

◆ shape_deriv() [130/233]

Real libMesh::FE< 0, HERMITE >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 71 of file fe_hermite_shape_0D.C.

76{
77 libmesh_error_msg("No spatial derivatives in 0D!");
78 return 0.;
79}

◆ shape_deriv() [131/233]

Real libMesh::FE< 1, HERMITE >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 308 of file fe_hermite_shape_1D.C.

313{
314 libmesh_error_msg("Hermite elements require the real element \nto construct gradient-based degrees of freedom.");
315 return 0.;
316}

◆ shape_deriv() [132/233]

Real libMesh::FE< 2, HERMITE >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 335 of file fe_hermite_shape_2D.C.

340{
341 libmesh_error_msg("Hermite elements require the real element \nto construct gradient-based degrees of freedom.");
342 return 0.;
343}

◆ shape_deriv() [133/233]

Real libMesh::FE< 3, HERMITE >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 547 of file fe_hermite_shape_3D.C.

552{
553 libmesh_error_msg("Hermite elements require the real element \nto construct gradient-based degrees of freedom.");
554 return 0.;
555}

◆ shape_deriv() [134/233]

Real libMesh::FE< 0, HIERARCHIC >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 149 of file fe_hierarchic_shape_0D.C.

154{
155 libmesh_error_msg("No spatial derivatives in 0D!");
156 return 0.;
157}

◆ shape_deriv() [135/233]

Real libMesh::FE< 0, L2_HIERARCHIC >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 190 of file fe_hierarchic_shape_0D.C.

195{
196 libmesh_error_msg("No spatial derivatives in 0D!");
197 return 0.;
198}

◆ shape_deriv() [136/233]

Real libMesh::FE< 0, SIDE_HIERARCHIC >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 230 of file fe_hierarchic_shape_0D.C.

235{
236 libmesh_error_msg("No spatial derivatives in 0D!");
237 return 0.;
238}

◆ shape_deriv() [137/233]

Real libMesh::FE< 1, SIDE_HIERARCHIC >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 202 of file fe_hierarchic_shape_1D.C.

207{
208 return 0;
209}

◆ shape_deriv() [138/233]

Real libMesh::FE< 2, HIERARCHIC >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 402 of file fe_hierarchic_shape_2D.C.

407{
408 libmesh_error_msg("Hierarchic shape functions require an Elem for edge orientation.");
409 return 0.;
410}

◆ shape_deriv() [139/233]

Real libMesh::FE< 2, L2_HIERARCHIC >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 415 of file fe_hierarchic_shape_2D.C.

420{
421 libmesh_error_msg("Hierarchic shape functions require an Elem for edge orientation.");
422 return 0.;
423}

◆ shape_deriv() [140/233]

Real libMesh::FE< 2, SIDE_HIERARCHIC >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 428 of file fe_hierarchic_shape_2D.C.

433{
434 libmesh_error_msg("Hierarchic shape functions require an Elem for edge orientation.");
435 return 0.;
436}

◆ shape_deriv() [141/233]

Real libMesh::FE< 3, HIERARCHIC >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1509 of file fe_hierarchic_shape_3D.C.

1514{
1515 libmesh_error_msg("Hierarchic shape functions require an Elem for edge/face orientation.");
1516 return 0.;
1517}

◆ shape_deriv() [142/233]

Real libMesh::FE< 3, L2_HIERARCHIC >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1522 of file fe_hierarchic_shape_3D.C.

1527{
1528 libmesh_error_msg("Hierarchic shape functions require an Elem for edge/face orientation.");
1529 return 0.;
1530}

◆ shape_deriv() [143/233]

Real libMesh::FE< 3, SIDE_HIERARCHIC >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1535 of file fe_hierarchic_shape_3D.C.

1540{
1541 libmesh_error_msg("Hierarchic shape functions require an Elem for edge/face orientation.");
1542 return 0.;
1543}

◆ shape_deriv() [144/233]

Real libMesh::FE< 0, L2_LAGRANGE >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 105 of file fe_lagrange_shape_0D.C.

110{
111 libmesh_error_msg("No spatial derivatives in 0D!");
112 return 0.;
113}

◆ shape_deriv() [145/233]

Real libMesh::FE< 0, LAGRANGE >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 132 of file fe_lagrange_shape_0D.C.

137{
138 libmesh_error_msg("No spatial derivatives in 0D!");
139 return 0.;
140}

◆ shape_deriv() [146/233]

Real libMesh::FE< 0, MONOMIAL >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 72 of file fe_monomial_shape_0D.C.

77{
78 libmesh_error_msg("No spatial derivatives in 0D!");
79 return 0.;
80}

◆ shape_deriv() [147/233]

RealGradient libMesh::FE< 0, NEDELEC_ONE >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 463 of file fe_nedelec_one.C.

465{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [148/233]

RealGradient libMesh::FE< 1, NEDELEC_ONE >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 490 of file fe_nedelec_one.C.

492{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [149/233]

RealGradient libMesh::FE< 2, NEDELEC_ONE >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1978 of file fe_nedelec_one_shape_2D.C.

1983{
1984 libmesh_error_msg("Nedelec elements require the element type \nbecause edge orientation is needed.");
1985 return RealGradient();
1986}

◆ shape_deriv() [150/233]

RealGradient libMesh::FE< 3, NEDELEC_ONE >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 398 of file fe_nedelec_one_shape_3D.C.

403{
404 libmesh_error_msg("Nedelec elements require the element type \nbecause edge orientation is needed.");
405 return RealGradient();
406}

◆ shape_deriv() [151/233]

Real libMesh::FE< 0, RATIONAL_BERNSTEIN >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 69 of file fe_rational_shape_0D.C.

74{
75 libmesh_error_msg("No spatial derivatives in 0D!");
76 return 0.;
77}

◆ shape_deriv() [152/233]

Real libMesh::FE< 1, RATIONAL_BERNSTEIN >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 101 of file fe_rational_shape_1D.C.

106{
107 libmesh_error_msg("Rational bases require the real element \nto query nodal weighting.");
108 return 0.;
109}

◆ shape_deriv() [153/233]

Real libMesh::FE< 2, RATIONAL_BERNSTEIN >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 100 of file fe_rational_shape_2D.C.

105{
106 libmesh_error_msg("Rational bases require the real element \nto query nodal weighting.");
107 return 0.;
108}

◆ shape_deriv() [154/233]

Real libMesh::FE< 3, RATIONAL_BERNSTEIN >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 98 of file fe_rational_shape_3D.C.

103{
104 libmesh_error_msg("Rational bases require the real element \nto query nodal weighting.");
105 return 0.;
106}

◆ shape_deriv() [155/233]

RealGradient libMesh::FE< 0, RAVIART_THOMAS >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 561 of file fe_raviart.C.

563{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [156/233]

RealGradient libMesh::FE< 0, L2_RAVIART_THOMAS >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 569 of file fe_raviart.C.

571{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [157/233]

RealGradient libMesh::FE< 1, RAVIART_THOMAS >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 610 of file fe_raviart.C.

612{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [158/233]

RealGradient libMesh::FE< 1, L2_RAVIART_THOMAS >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 618 of file fe_raviart.C.

620{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_deriv() [159/233]

RealGradient libMesh::FE< 2, RAVIART_THOMAS >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 114 of file fe_raviart_shape_2D.C.

119{
120 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause edge orientation is needed.");
121 return RealGradient();
122}

◆ shape_deriv() [160/233]

RealGradient libMesh::FE< 2, L2_RAVIART_THOMAS >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 125 of file fe_raviart_shape_2D.C.

130{
131 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause edge orientation is needed.");
132 return RealGradient();
133}

◆ shape_deriv() [161/233]

RealGradient libMesh::FE< 3, RAVIART_THOMAS >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 354 of file fe_raviart_shape_3D.C.

359{
360 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause face orientation is needed.");
361 return RealGradient();
362}

◆ shape_deriv() [162/233]

RealGradient libMesh::FE< 3, L2_RAVIART_THOMAS >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 366 of file fe_raviart_shape_3D.C.

371{
372 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause face orientation is needed.");
373 return RealGradient();
374}

◆ shape_deriv() [163/233]

Real libMesh::FE< 0, SCALAR >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 63 of file fe_scalar_shape_0D.C.

68{
69 return 0.;
70}

◆ shape_deriv() [164/233]

Real libMesh::FE< 1, SCALAR >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 66 of file fe_scalar_shape_1D.C.

71{
72 return 0.;
73}

◆ shape_deriv() [165/233]

Real libMesh::FE< 2, SCALAR >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 65 of file fe_scalar_shape_2D.C.

70{
71 return 0.;
72}

◆ shape_deriv() [166/233]

Real libMesh::FE< 3, SCALAR >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 64 of file fe_scalar_shape_3D.C.

69{
70 return 0.;
71}

◆ shape_deriv() [167/233]

Real libMesh::FE< 0, SZABAB >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 72 of file fe_szabab_shape_0D.C.

77{
78 libmesh_error_msg("No spatial derivatives in 0D!");
79 return 0.;
80}

◆ shape_deriv() [168/233]

Real libMesh::FE< 2, SZABAB >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1021 of file fe_szabab_shape_2D.C.

1026{
1027 libmesh_error_msg("Szabo-Babuska polynomials require the element type \nbecause edge orientation is needed.");
1028 return 0.;
1029}

◆ shape_deriv() [169/233]

Real libMesh::FE< 3, SZABAB >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 72 of file fe_szabab_shape_3D.C.

77{
78 libmesh_error_msg("Szabo-Babuska polynomials are not defined in 3D");
79 return 0.;
80}

◆ shape_deriv() [170/233]

Real libMesh::FE< 0, XYZ >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 72 of file fe_xyz_shape_0D.C.

77{
78 libmesh_error_msg("No spatial derivatives in 0D!");
79 return 0.;
80}

◆ shape_deriv() [171/233]

Real libMesh::FE< 1, XYZ >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 163 of file fe_xyz_shape_1D.C.

168{
169 libmesh_error_msg("XYZ polynomials require the element.");
170 return 0.;
171}

◆ shape_deriv() [172/233]

Real libMesh::FE< 2, XYZ >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 367 of file fe_xyz_shape_2D.C.

372{
373 libmesh_error_msg("XYZ polynomials require the element.");
374 return 0.;
375}

◆ shape_deriv() [173/233]

Real libMesh::FE< 3, XYZ >::shape_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 704 of file fe_xyz_shape_3D.C.

709{
710 libmesh_error_msg("XYZ polynomials require the element.");
711 return 0.;
712}

◆ shape_deriv() [174/233]

Real libMesh::FE< 1, BERNSTEIN >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 395 of file fe_bernstein_shape_1D.C.

401{
402 libmesh_assert(elem);
403 return FE<1,BERNSTEIN>::shape_deriv
404 (elem->type(),
405 fet.order + add_p_level*elem->p_level(), i, j, p);
406}

◆ shape_deriv() [175/233]

Real libMesh::FE< 2, BERNSTEIN >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 526 of file fe_bernstein_shape_2D.C.

532{
533 return FE<2,BERNSTEIN>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
534}

◆ shape_deriv() [176/233]

Real libMesh::FE< 3, BERNSTEIN >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 2326 of file fe_bernstein_shape_3D.C.

2332{
2333 return FE<3,BERNSTEIN>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
2334}

◆ shape_deriv() [177/233]

Real libMesh::FE< 1, CLOUGH >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 370 of file fe_clough_shape_1D.C.

376{
377 return FE<1,CLOUGH>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
378}

◆ shape_deriv() [178/233]

Real libMesh::FE< 2, CLOUGH >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 2167 of file fe_clough_shape_2D.C.

2173{
2174 return FE<2,CLOUGH>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
2175}

◆ shape_deriv() [179/233]

Real libMesh::FE< 1, HERMITE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 319 of file fe_hermite_shape_1D.C.

325{
326 return FE<1,HERMITE>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
327}

◆ shape_deriv() [180/233]

Real libMesh::FE< 2, HERMITE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 347 of file fe_hermite_shape_2D.C.

353{
354 return FE<2,HERMITE>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
355}

◆ shape_deriv() [181/233]

Real libMesh::FE< 3, HERMITE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 559 of file fe_hermite_shape_3D.C.

565{
566 return FE<3,HERMITE>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
567}

◆ shape_deriv() [182/233]

Real libMesh::FE< 1, HIERARCHIC >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 230 of file fe_hierarchic_shape_1D.C.

236{
237 libmesh_assert(elem);
238 return fe_hierarchic_1D_shape_deriv(elem->type(), fet.order + add_p_level*elem->p_level(), i, j, p);
239}

◆ shape_deriv() [183/233]

Real libMesh::FE< 1, L2_HIERARCHIC >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 261 of file fe_hierarchic_shape_1D.C.

267{
268 libmesh_assert(elem);
269 return fe_hierarchic_1D_shape_deriv(elem->type(), fet.order + add_p_level*elem->p_level(), i, j, p);
270}

◆ shape_deriv() [184/233]

Real libMesh::FE< 2, HIERARCHIC >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 453 of file fe_hierarchic_shape_2D.C.

459{
460 return fe_hierarchic_2D_shape_deriv<HIERARCHIC>(elem, fet.order, i, j, p, add_p_level);
461}

◆ shape_deriv() [185/233]

Real libMesh::FE< 2, L2_HIERARCHIC >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 479 of file fe_hierarchic_shape_2D.C.

485{
486 return fe_hierarchic_2D_shape_deriv<L2_HIERARCHIC>(elem, fet.order, i, j, p, add_p_level);
487}

◆ shape_deriv() [186/233]

Real libMesh::FE< 2, SIDE_HIERARCHIC >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 681 of file fe_hierarchic_shape_2D.C.

687{
688 return FE<2,SIDE_HIERARCHIC>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
689}

◆ shape_deriv() [187/233]

Real libMesh::FE< 3, HIERARCHIC >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1560 of file fe_hierarchic_shape_3D.C.

1566{
1567 return fe_hierarchic_3D_shape_deriv<HIERARCHIC>(elem, fet.order, i, j, p, add_p_level);
1568}

◆ shape_deriv() [188/233]

Real libMesh::FE< 3, L2_HIERARCHIC >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1585 of file fe_hierarchic_shape_3D.C.

1591{
1592 return fe_hierarchic_3D_shape_deriv<L2_HIERARCHIC>(elem, fet.order, i, j, p, add_p_level);
1593}

◆ shape_deriv() [189/233]

Real libMesh::FE< 3, SIDE_HIERARCHIC >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1754 of file fe_hierarchic_shape_3D.C.

1760{
1761 return FE<3,SIDE_HIERARCHIC>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
1762}

◆ shape_deriv() [190/233]

Real libMesh::FE< 1, LAGRANGE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 156 of file fe_lagrange_shape_1D.C.

162{
163 libmesh_assert(elem);
164 return fe_lagrange_1D_shape_deriv(fet.order + add_p_level*elem->p_level(), i, j, p(0));
165}

◆ shape_deriv() [191/233]

Real libMesh::FE< 1, L2_LAGRANGE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 169 of file fe_lagrange_shape_1D.C.

175{
176 libmesh_assert(elem);
177 return fe_lagrange_1D_shape_deriv(fet.order + add_p_level*elem->p_level(), i, j, p(0));
178}

◆ shape_deriv() [192/233]

Real libMesh::FE< 2, LAGRANGE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 203 of file fe_lagrange_shape_2D.C.

209{
210 libmesh_assert(elem);
211 return fe_lagrange_2D_shape_deriv<LAGRANGE>(elem->type(), elem, fet.order + add_p_level*elem->p_level(), i, j, p);
212}

◆ shape_deriv() [193/233]

Real libMesh::FE< 2, L2_LAGRANGE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 217 of file fe_lagrange_shape_2D.C.

223{
224 libmesh_assert(elem);
225 return fe_lagrange_2D_shape_deriv<L2_LAGRANGE>(elem->type(), elem, fet.order + add_p_level*elem->p_level(), i, j, p);
226}

◆ shape_deriv() [194/233]

Real libMesh::FE< 3, LAGRANGE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 549 of file fe_lagrange_shape_3D.C.

555{
556 libmesh_assert(elem);
557 return fe_lagrange_3D_shape_deriv<LAGRANGE>(elem->type(), fet.order + add_p_level*elem->p_level(), elem, i, j, p);
558}

◆ shape_deriv() [195/233]

Real libMesh::FE< 3, L2_LAGRANGE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 562 of file fe_lagrange_shape_3D.C.

568{
569 libmesh_assert(elem);
570 return fe_lagrange_3D_shape_deriv<L2_LAGRANGE>(elem->type(), fet.order + add_p_level*elem->p_level(), elem, i, j, p);
571}

◆ shape_deriv() [196/233]

Real libMesh::FE< 1, MONOMIAL >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 155 of file fe_monomial_shape_1D.C.

161{
162 libmesh_assert(elem);
163 return FE<1,MONOMIAL>::shape_deriv(elem->type(), fet.order + add_p_level*elem->p_level(), i, j, p);
164
165
166}

◆ shape_deriv() [197/233]

Real libMesh::FE< 2, MONOMIAL >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 340 of file fe_monomial_shape_2D.C.

346{
347 libmesh_assert(elem);
348 // by default call the orientation-independent shape functions
349 return FE<2,MONOMIAL>::shape_deriv(elem->type(), fet.order + add_p_level*elem->p_level(), i, j, p);
350}

◆ shape_deriv() [198/233]

Real libMesh::FE< 3, MONOMIAL >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 674 of file fe_monomial_shape_3D.C.

680{
681 libmesh_assert(elem);
682 // by default call the orientation-independent shape functions
683 return FE<3,MONOMIAL>::shape_deriv(elem->type(), fet.order + add_p_level*elem->p_level(), i, j, p);
684}

◆ shape_deriv() [199/233]

RealGradient libMesh::FE< 2, NEDELEC_ONE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1989 of file fe_nedelec_one_shape_2D.C.

1995{
1996 return FE<2,NEDELEC_ONE>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
1997}

◆ shape_deriv() [200/233]

RealGradient libMesh::FE< 3, NEDELEC_ONE >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 410 of file fe_nedelec_one_shape_3D.C.

416{
417 return FE<3,NEDELEC_ONE>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
418}

◆ shape_deriv() [201/233]

Real libMesh::FE< 1, RATIONAL_BERNSTEIN >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 113 of file fe_rational_shape_1D.C.

119{
120 libmesh_assert(elem);
121 return FE<1,RATIONAL_BERNSTEIN>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
122}

◆ shape_deriv() [202/233]

Real libMesh::FE< 2, RATIONAL_BERNSTEIN >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 113 of file fe_rational_shape_2D.C.

119{
121 (elem, fet.order, i, j, p, add_p_level);
122}

◆ shape_deriv() [203/233]

Real libMesh::FE< 3, RATIONAL_BERNSTEIN >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 110 of file fe_rational_shape_3D.C.

116{
118 (elem, fet.order, i, j, p, add_p_level);
119}

◆ shape_deriv() [204/233]

RealGradient libMesh::FE< 2, RAVIART_THOMAS >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 136 of file fe_raviart_shape_2D.C.

142{
143 return FE<2,RAVIART_THOMAS>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
144}

◆ shape_deriv() [205/233]

RealGradient libMesh::FE< 2, L2_RAVIART_THOMAS >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 147 of file fe_raviart_shape_2D.C.

153{
154 return FE<2,L2_RAVIART_THOMAS>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
155}

◆ shape_deriv() [206/233]

RealGradient libMesh::FE< 3, RAVIART_THOMAS >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 378 of file fe_raviart_shape_3D.C.

384{
385 return FE<3,RAVIART_THOMAS>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
386}

◆ shape_deriv() [207/233]

RealGradient libMesh::FE< 3, L2_RAVIART_THOMAS >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 390 of file fe_raviart_shape_3D.C.

396{
397 return FE<3,L2_RAVIART_THOMAS>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
398}

◆ shape_deriv() [208/233]

Real libMesh::FE< 2, SUBDIVISION >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 803 of file fe_subdivision_2D.C.

809{
810 libmesh_assert(elem);
811 const Order totalorder = fet.order + add_p_level*elem->p_level();
812 return FE<2,SUBDIVISION>::shape_deriv(elem->type(), totalorder, i, j, p);
813}

◆ shape_deriv() [209/233]

Real libMesh::FE< 1, SZABAB >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 172 of file fe_szabab_shape_1D.C.

178{
179 libmesh_assert(elem);
180
181 return FE<1,SZABAB>::shape_deriv(elem->type(),
182 fet.order + add_p_level*elem->p_level(),
183 i,
184 j,
185 p);
186}

◆ shape_deriv() [210/233]

Real libMesh::FE< 2, SZABAB >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1033 of file fe_szabab_shape_2D.C.

1039{
1040 return FE<2,SZABAB>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
1041}

◆ shape_deriv() [211/233]

Real libMesh::FE< 1, XYZ >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 175 of file fe_xyz_shape_1D.C.

181{
182 return FE<1,XYZ>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
183}

◆ shape_deriv() [212/233]

Real libMesh::FE< 2, XYZ >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 379 of file fe_xyz_shape_2D.C.

385{
386 return FE<2,XYZ>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
387}

◆ shape_deriv() [213/233]

Real libMesh::FE< 3, XYZ >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 717 of file fe_xyz_shape_3D.C.

723{
724 return FE<3,XYZ>::shape_deriv(elem, fet.order, i, j, p, add_p_level);
725}

◆ shape_deriv() [214/233]

static OutputShape libMesh::FE< Dim, T >::shape_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level = true 
)
staticinherited
Returns
The \( j^{th} \) derivative of the \( i^{th} \) shape function. You must specify element type, and order (via FEType) directly.

On a p-refined element, o should be the base order of the element if add_p_level is left true, or can be the base order of the element if add_p_level is set to false.

◆ shape_deriv() [215/233]

Real libMesh::FE< 0, BERNSTEIN >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 95 of file fe_bernstein_shape_0D.C.

101{
102 libmesh_error_msg("No spatial derivatives in 0D!");
103 return 0.;
104}

◆ shape_deriv() [216/233]

Real libMesh::FE< 0, CLOUGH >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 96 of file fe_clough_shape_0D.C.

102{
103 libmesh_error_msg("No spatial derivatives in 0D!");
104 return 0.;
105}

◆ shape_deriv() [217/233]

Real libMesh::FE< 0, HERMITE >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 97 of file fe_hermite_shape_0D.C.

103{
104 libmesh_error_msg("No spatial derivatives in 0D!");
105 return 0.;
106}

◆ shape_deriv() [218/233]

Real libMesh::FE< 0, HIERARCHIC >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 176 of file fe_hierarchic_shape_0D.C.

182{
183 libmesh_error_msg("No spatial derivatives in 0D!");
184 return 0.;
185}

◆ shape_deriv() [219/233]

Real libMesh::FE< 0, L2_HIERARCHIC >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 216 of file fe_hierarchic_shape_0D.C.

222{
223 libmesh_error_msg("No spatial derivatives in 0D!");
224 return 0.;
225}

◆ shape_deriv() [220/233]

Real libMesh::FE< 0, SIDE_HIERARCHIC >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 256 of file fe_hierarchic_shape_0D.C.

262{
263 libmesh_error_msg("No spatial derivatives in 0D!");
264 return 0.;
265}

◆ shape_deriv() [221/233]

Real libMesh::FE< 1, SIDE_HIERARCHIC >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 288 of file fe_hierarchic_shape_1D.C.

294{
295 return 0;
296}

◆ shape_deriv() [222/233]

Real libMesh::FE< 0, L2_LAGRANGE >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 159 of file fe_lagrange_shape_0D.C.

165{
166 libmesh_error_msg("No spatial derivatives in 0D!");
167 return 0.;
168}

◆ shape_deriv() [223/233]

Real libMesh::FE< 0, LAGRANGE >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 172 of file fe_lagrange_shape_0D.C.

178{
179 libmesh_error_msg("No spatial derivatives in 0D!");
180 return 0.;
181}

◆ shape_deriv() [224/233]

Real libMesh::FE< 0, MONOMIAL >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 98 of file fe_monomial_shape_0D.C.

104{
105 libmesh_error_msg("No spatial derivatives in 0D!");
106 return 0.;
107}

◆ shape_deriv() [225/233]

Real libMesh::FE< 0, RATIONAL_BERNSTEIN >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 96 of file fe_rational_shape_0D.C.

102{
103 libmesh_error_msg("No spatial derivatives in 0D!");
104 return 0.;
105}

◆ shape_deriv() [226/233]

Real libMesh::FE< 0, SCALAR >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 85 of file fe_scalar_shape_0D.C.

91{
92 return 0.;
93}

◆ shape_deriv() [227/233]

Real libMesh::FE< 1, SCALAR >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 88 of file fe_scalar_shape_1D.C.

94{
95 return 0.;
96}

◆ shape_deriv() [228/233]

Real libMesh::FE< 2, SCALAR >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 87 of file fe_scalar_shape_2D.C.

93{
94 return 0.;
95}

◆ shape_deriv() [229/233]

Real libMesh::FE< 3, SCALAR >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 86 of file fe_scalar_shape_3D.C.

92{
93 return 0.;
94}

◆ shape_deriv() [230/233]

Real libMesh::FE< 0, SZABAB >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 98 of file fe_szabab_shape_0D.C.

104{
105 libmesh_error_msg("No spatial derivatives in 0D!");
106 return 0.;
107}

◆ shape_deriv() [231/233]

Real libMesh::FE< 3, SZABAB >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 98 of file fe_szabab_shape_3D.C.

104{
105 libmesh_error_msg("Szabo-Babuska polynomials are not defined in 3D");
106 return 0;
107}

◆ shape_deriv() [232/233]

Real libMesh::FE< 0, XYZ >::shape_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 99 of file fe_xyz_shape_0D.C.

105{
106 libmesh_error_msg("No spatial derivatives in 0D!");
107 return 0.;
108}

◆ shape_deriv() [233/233]

Real libMesh::FE< 3, CLOUGH >::shape_deriv ( const FEType  ,
const Elem libmesh_dbg_varelem,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 104 of file fe_clough_shape_3D.C.

110{
111 libmesh_assert(elem);
112 libmesh_not_implemented();
113 return 0.;
114}

◆ shape_derivs() [1/5]

void libMesh::FE< 3, LAGRANGE >::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 
)
inherited

Definition at line 224 of file fe_lagrange_shape_3D.C.

232{
234 (elem,o,i,j,p,v,add_p_level);
235}
static void default_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)
A default implementation for shape_derivs.
Definition fe.h:769

◆ shape_derivs() [2/5]

void libMesh::FE< 1, RATIONAL_BERNSTEIN >::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 
)
inherited

Definition at line 207 of file fe_rational_shape_1D.C.

215{
216 libmesh_assert_equal_to(p.size(), v.size());
217 for (auto vi : index_range(v))
218 v[vi] = FE<1,RATIONAL_BERNSTEIN>::shape_deriv (elem, o, i, j, p[vi], add_p_level);
219}

◆ shape_derivs() [3/5]

void libMesh::FE< 2, RATIONAL_BERNSTEIN >::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 
)
inherited

Definition at line 205 of file fe_rational_shape_2D.C.

213{
214 libmesh_assert_equal_to(p.size(), v.size());
215 for (auto vi : index_range(v))
216 v[vi] = FE<2,RATIONAL_BERNSTEIN>::shape_deriv (elem, o, i, j, p[vi], add_p_level);
217}

◆ shape_derivs() [4/5]

void libMesh::FE< 3, RATIONAL_BERNSTEIN >::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 
)
inherited

Definition at line 201 of file fe_rational_shape_3D.C.

209{
210 libmesh_assert_equal_to(p.size(), v.size());
211 for (auto vi : index_range(v))
212 v[vi] = FE<3,RATIONAL_BERNSTEIN>::shape_deriv (elem, o, i, j, p[vi], add_p_level);
213}

◆ shape_derivs() [5/5]

static void libMesh::FE< Dim, T >::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 
)
staticinherited

Fills v with the \( j^{th} \) derivative of the \( i^{th} \) shape function, evaluated at all points p.

You must specify element order directly. v should already be the appropriate size.

On a p-refined element, o should be the base order of the element if add_p_level is left true, or can be the base order of the element if add_p_level is set to false.

◆ shape_second_deriv() [1/233]

Real libMesh::FE< 0, BERNSTEIN >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 123 of file fe_bernstein_shape_0D.C.

129{
130 libmesh_error_msg("No spatial derivatives in 0D!");
131 return 0.;
132}

◆ shape_second_deriv() [2/233]

Real libMesh::FE< 0, CLOUGH >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 126 of file fe_clough_shape_0D.C.

132{
133 libmesh_error_msg("No spatial derivatives in 0D!");
134 return 0.;
135}

◆ shape_second_deriv() [3/233]

Real libMesh::FE< 0, HERMITE >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 127 of file fe_hermite_shape_0D.C.

133{
134 libmesh_error_msg("No spatial derivatives in 0D!");
135 return 0.;
136}

◆ shape_second_deriv() [4/233]

Real libMesh::FE< 0, HIERARCHIC >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 284 of file fe_hierarchic_shape_0D.C.

290{
291 libmesh_error_msg("No spatial derivatives in 0D!");
292 return 0.;
293}

◆ shape_second_deriv() [5/233]

Real libMesh::FE< 0, L2_HIERARCHIC >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 323 of file fe_hierarchic_shape_0D.C.

329{
330 libmesh_error_msg("No spatial derivatives in 0D!");
331 return 0.;
332}

◆ shape_second_deriv() [6/233]

Real libMesh::FE< 0, SIDE_HIERARCHIC >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 363 of file fe_hierarchic_shape_0D.C.

369{
370 libmesh_error_msg("No spatial derivatives in 0D!");
371 return 0.;
372}

◆ shape_second_deriv() [7/233]

Real libMesh::FE< 1, SIDE_HIERARCHIC >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 398 of file fe_hierarchic_shape_1D.C.

404{
405 return 0.;
406}

◆ shape_second_deriv() [8/233]

Real libMesh::FE< 0, L2_LAGRANGE >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 201 of file fe_lagrange_shape_0D.C.

207{
208 libmesh_error_msg("No spatial derivatives in 0D!");
209 return 0.;
210}

◆ shape_second_deriv() [9/233]

Real libMesh::FE< 0, LAGRANGE >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 226 of file fe_lagrange_shape_0D.C.

232{
233 libmesh_error_msg("No spatial derivatives in 0D!");
234 return 0.;
235}

◆ shape_second_deriv() [10/233]

Real libMesh::FE< 0, MONOMIAL >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 128 of file fe_monomial_shape_0D.C.

134{
135 libmesh_error_msg("No spatial derivatives in 0D!");
136 return 0.;
137}

◆ shape_second_deriv() [11/233]

RealGradient libMesh::FE< 0, NEDELEC_ONE >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 477 of file fe_nedelec_one.C.

479{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [12/233]

RealGradient libMesh::FE< 1, NEDELEC_ONE >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 504 of file fe_nedelec_one.C.

506{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [13/233]

Real libMesh::FE< 0, RATIONAL_BERNSTEIN >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 124 of file fe_rational_shape_0D.C.

130{
131 libmesh_error_msg("No spatial derivatives in 0D!");
132 return 0.;
133}

◆ shape_second_deriv() [14/233]

RealGradient libMesh::FE< 0, RAVIART_THOMAS >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 583 of file fe_raviart.C.

585{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [15/233]

RealGradient libMesh::FE< 0, L2_RAVIART_THOMAS >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 591 of file fe_raviart.C.

593{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [16/233]

RealGradient libMesh::FE< 1, RAVIART_THOMAS >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 632 of file fe_raviart.C.

634{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [17/233]

RealGradient libMesh::FE< 1, L2_RAVIART_THOMAS >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 640 of file fe_raviart.C.

642{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [18/233]

Real libMesh::FE< 0, SCALAR >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 109 of file fe_scalar_shape_0D.C.

115{
116 return 0.;
117}

◆ shape_second_deriv() [19/233]

Real libMesh::FE< 1, SCALAR >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 113 of file fe_scalar_shape_1D.C.

119{
120 return 0.;
121}

◆ shape_second_deriv() [20/233]

Real libMesh::FE< 2, SCALAR >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 111 of file fe_scalar_shape_2D.C.

117{
118 return 0.;
119}

◆ shape_second_deriv() [21/233]

Real libMesh::FE< 3, SCALAR >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 110 of file fe_scalar_shape_3D.C.

116{
117 return 0.;
118}

◆ shape_second_deriv() [22/233]

Real libMesh::FE< 0, SZABAB >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 127 of file fe_szabab_shape_0D.C.

133{
134 libmesh_error_msg("No spatial derivatives in 0D!");
135 return 0.;
136}

◆ shape_second_deriv() [23/233]

Real libMesh::FE< 1, SZABAB >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 211 of file fe_szabab_shape_1D.C.

217{
218 static bool warning_given = false;
219
220 if (!warning_given)
221 libMesh::err << "Second derivatives for Szabab elements "
222 << " are not yet implemented!"
223 << std::endl;
224
225 warning_given = true;
226 return 0.;
227}

◆ shape_second_deriv() [24/233]

Real libMesh::FE< 2, SZABAB >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 1069 of file fe_szabab_shape_2D.C.

1075{
1076 static bool warning_given = false;
1077
1078 if (!warning_given)
1079 libMesh::err << "Second derivatives for Szabab elements "
1080 << " are not yet implemented!"
1081 << std::endl;
1082
1083 warning_given = true;
1084 return 0.;
1085}

◆ shape_second_deriv() [25/233]

Real libMesh::FE< 3, SZABAB >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 126 of file fe_szabab_shape_3D.C.

132{
133 libmesh_error_msg("Szabo-Babuska polynomials are not defined in 3D");
134 return 0.;
135}

◆ shape_second_deriv() [26/233]

Real libMesh::FE< 0, XYZ >::shape_second_deriv ( const Elem ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 128 of file fe_xyz_shape_0D.C.

134{
135 libmesh_error_msg("No spatial derivatives in 0D!");
136 return 0.;
137}

◆ shape_second_deriv() [27/233]

Real libMesh::FE< 2, XYZ >::shape_second_deriv ( const Elem elem,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  j,
const Point point_in,
const bool  libmesh_dbg_varadd_p_level 
)
inherited

Definition at line 394 of file fe_xyz_shape_2D.C.

400{
401#if LIBMESH_DIM > 1
402
403 libmesh_assert_less_equal (j, 2);
404 libmesh_assert(elem);
405
406 Point avg = elem->vertex_average();
407 Point max_distance = Point(0.,0.,0.);
408 for (auto p : make_range(elem->n_nodes()))
409 for (unsigned int d = 0; d < 2; d++)
410 {
411 const Real distance = std::abs(avg(d) - elem->point(p)(d));
412 max_distance(d) = std::max(distance, max_distance(d));
413 }
414
415 const Real x = point_in(0);
416 const Real y = point_in(1);
417 const Real xc = avg(0);
418 const Real yc = avg(1);
419 const Real distx = max_distance(0);
420 const Real disty = max_distance(1);
421 const Real dx = (x - xc)/distx;
422 const Real dy = (y - yc)/disty;
423 const Real dist2x = pow(distx,2.);
424 const Real dist2y = pow(disty,2.);
425 const Real distxy = distx * disty;
426
427#ifndef NDEBUG
428 // totalorder is only used in the assertion below, so
429 // we avoid declaring it when asserts are not active.
430 const unsigned int totalorder = order + add_p_level * elem->p_level();
431#endif
432 libmesh_assert_less (i, (totalorder+1)*(totalorder+2)/2);
433
434 // monomials. since they are hierarchic we only need one case block.
435
436 switch (j)
437 {
438 // d^2()/dx^2
439 case 0:
440 {
441 switch (i)
442 {
443 // constants
444 case 0:
445 // linears
446 case 1:
447 case 2:
448 return 0.;
449
450 // quadratics
451 case 3:
452 return 2./dist2x;
453
454 case 4:
455 case 5:
456 return 0.;
457
458 // cubics
459 case 6:
460 return 6.*dx/dist2x;
461
462 case 7:
463 return 2.*dy/dist2x;
464
465 case 8:
466 case 9:
467 return 0.;
468
469 // quartics
470 case 10:
471 return 12.*dx*dx/dist2x;
472
473 case 11:
474 return 6.*dx*dy/dist2x;
475
476 case 12:
477 return 2.*dy*dy/dist2x;
478
479 case 13:
480 case 14:
481 return 0.;
482
483 default:
484 unsigned int o = 0;
485 for (; i >= (o+1)*(o+2)/2; o++) { }
486 unsigned int i2 = i - (o*(o+1)/2);
487 Real val = (o - i2) * (o - i2 - 1);
488 for (unsigned int index=i2+2; index < o; index++)
489 val *= dx;
490 for (unsigned int index=0; index != i2; index++)
491 val *= dy;
492 return val/dist2x;
493 }
494 }
495
496 // d^2()/dxdy
497 case 1:
498 {
499 switch (i)
500 {
501 // constants
502 case 0:
503
504 // linears
505 case 1:
506 case 2:
507 return 0.;
508
509 // quadratics
510 case 3:
511 return 0.;
512
513 case 4:
514 return 1./distxy;
515
516 case 5:
517 return 0.;
518
519 // cubics
520 case 6:
521 return 0.;
522 case 7:
523 return 2.*dx/distxy;
524
525 case 8:
526 return 2.*dy/distxy;
527
528 case 9:
529 return 0.;
530
531 // quartics
532 case 10:
533 return 0.;
534
535 case 11:
536 return 3.*dx*dx/distxy;
537
538 case 12:
539 return 4.*dx*dy/distxy;
540
541 case 13:
542 return 3.*dy*dy/distxy;
543
544 case 14:
545 return 0.;
546
547 default:
548 unsigned int o = 0;
549 for (; i >= (o+1)*(o+2)/2; o++) { }
550 unsigned int i2 = i - (o*(o+1)/2);
551 Real val = (o - i2) * i2;
552 for (unsigned int index=i2+1; index < o; index++)
553 val *= dx;
554 for (unsigned int index=1; index < i2; index++)
555 val *= dy;
556 return val/distxy;
557 }
558 }
559
560 // d^2()/dy^2
561 case 2:
562 {
563 switch (i)
564 {
565 // constants
566 case 0:
567
568 // linears
569 case 1:
570 case 2:
571 return 0.;
572
573 // quadratics
574 case 3:
575 case 4:
576 return 0.;
577
578 case 5:
579 return 2./dist2y;
580
581 // cubics
582 case 6:
583 return 0.;
584
585 case 7:
586 return 0.;
587
588 case 8:
589 return 2.*dx/dist2y;
590
591 case 9:
592 return 6.*dy/dist2y;
593
594 // quartics
595 case 10:
596 case 11:
597 return 0.;
598
599 case 12:
600 return 2.*dx*dx/dist2y;
601
602 case 13:
603 return 6.*dx*dy/dist2y;
604
605 case 14:
606 return 12.*dy*dy/dist2y;
607
608 default:
609 unsigned int o = 0;
610 for (; i >= (o+1)*(o+2)/2; o++) { }
611 unsigned int i2 = i - (o*(o+1)/2);
612 Real val = i2 * (i2 - 1);
613 for (unsigned int index=i2; index != o; index++)
614 val *= dx;
615 for (unsigned int index=2; index < i2; index++)
616 val *= dy;
617 return val/dist2y;
618 }
619 }
620
621 default:
622 libmesh_error_msg("Invalid shape function derivative j = " << j);
623 }
624
625#else // LIBMESH_DIM <= 1
626 libmesh_assert(true || order || add_p_level);
627 libmesh_ignore(elem, i, j, point_in);
628 libmesh_not_implemented();
629#endif
630}
T pow(const T &x)
Definition utility.h:296

◆ shape_second_deriv() [28/233]

Real libMesh::FE< 3, XYZ >::shape_second_deriv ( const Elem elem,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  j,
const Point point_in,
const bool  libmesh_dbg_varadd_p_level 
)
inherited

Definition at line 732 of file fe_xyz_shape_3D.C.

738{
739#if LIBMESH_DIM == 3
740
741 libmesh_assert(elem);
742 libmesh_assert_less (j, 6);
743
744 Point avg = elem->vertex_average();
745 Point max_distance = Point(0.,0.,0.);
746 for (const Point & p : elem->node_ref_range())
747 for (unsigned int d = 0; d < 3; d++)
748 {
749 const Real distance = std::abs(avg(d) - p(d));
750 max_distance(d) = std::max(distance, max_distance(d));
751 }
752
753 const Real x = point_in(0);
754 const Real y = point_in(1);
755 const Real z = point_in(2);
756 const Real xc = avg(0);
757 const Real yc = avg(1);
758 const Real zc = avg(2);
759 const Real distx = max_distance(0);
760 const Real disty = max_distance(1);
761 const Real distz = max_distance(2);
762 const Real dx = (x - xc)/distx;
763 const Real dy = (y - yc)/disty;
764 const Real dz = (z - zc)/distz;
765 const Real dist2x = pow(distx,2.);
766 const Real dist2y = pow(disty,2.);
767 const Real dist2z = pow(distz,2.);
768 const Real distxy = distx * disty;
769 const Real distxz = distx * distz;
770 const Real distyz = disty * distz;
771
772#ifndef NDEBUG
773 // totalorder is only used in the assertion below, so
774 // we avoid declaring it when asserts are not active.
775 const unsigned int totalorder = order + add_p_level*elem->p_level();
776#endif
777 libmesh_assert_less (i, (totalorder+1) * (totalorder+2) *
778 (totalorder+3)/6);
779
780 // monomials. since they are hierarchic we only need one case block.
781 switch (j)
782 {
783 // d^2()/dx^2
784 case 0:
785 {
786 switch (i)
787 {
788 // constant
789 case 0:
790
791 // linear
792 case 1:
793 case 2:
794 case 3:
795 return 0.;
796
797 // quadratic
798 case 4:
799 return 2./dist2x;
800
801 case 5:
802 case 6:
803 case 7:
804 case 8:
805 case 9:
806 return 0.;
807
808 // cubic
809 case 10:
810 return 6.*dx/dist2x;
811
812 case 11:
813 return 2.*dy/dist2x;
814
815 case 12:
816 case 13:
817 return 0.;
818
819 case 14:
820 return 2.*dz/dist2x;
821
822 case 15:
823 case 16:
824 case 17:
825 case 18:
826 case 19:
827 return 0.;
828
829 // quartics
830 case 20:
831 return 12.*dx*dx/dist2x;
832
833 case 21:
834 return 6.*dx*dy/dist2x;
835
836 case 22:
837 return 2.*dy*dy/dist2x;
838
839 case 23:
840 case 24:
841 return 0.;
842
843 case 25:
844 return 6.*dx*dz/dist2x;
845
846 case 26:
847 return 2.*dy*dz/dist2x;
848
849 case 27:
850 case 28:
851 return 0.;
852
853 case 29:
854 return 2.*dz*dz/dist2x;
855
856 case 30:
857 case 31:
858 case 32:
859 case 33:
860 case 34:
861 return 0.;
862
863 default:
864 unsigned int o = 0;
865 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
866 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
867 unsigned int block=o, nz = 0;
868 for (; block < i2; block += (o-nz+1)) { nz++; }
869 const unsigned int nx = block - i2;
870 const unsigned int ny = o - nx - nz;
871 Real val = nx * (nx - 1);
872 for (unsigned int index=2; index < nx; index++)
873 val *= dx;
874 for (unsigned int index=0; index != ny; index++)
875 val *= dy;
876 for (unsigned int index=0; index != nz; index++)
877 val *= dz;
878 return val/dist2x;
879 }
880 }
881
882
883 // d^2()/dxdy
884 case 1:
885 {
886 switch (i)
887 {
888 // constant
889 case 0:
890
891 // linear
892 case 1:
893 case 2:
894 case 3:
895 return 0.;
896
897 // quadratic
898 case 4:
899 return 0.;
900
901 case 5:
902 return 1./distxy;
903
904 case 6:
905 case 7:
906 case 8:
907 case 9:
908 return 0.;
909
910 // cubic
911 case 10:
912 return 0.;
913
914 case 11:
915 return 2.*dx/distxy;
916
917 case 12:
918 return 2.*dy/distxy;
919
920 case 13:
921 case 14:
922 return 0.;
923
924 case 15:
925 return dz/distxy;
926
927 case 16:
928 case 17:
929 case 18:
930 case 19:
931 return 0.;
932
933 // quartics
934 case 20:
935 return 0.;
936
937 case 21:
938 return 3.*dx*dx/distxy;
939
940 case 22:
941 return 4.*dx*dy/distxy;
942
943 case 23:
944 return 3.*dy*dy/distxy;
945
946 case 24:
947 case 25:
948 return 0.;
949
950 case 26:
951 return 2.*dx*dz/distxy;
952
953 case 27:
954 return 2.*dy*dz/distxy;
955
956 case 28:
957 case 29:
958 return 0.;
959
960 case 30:
961 return dz*dz/distxy;
962
963 case 31:
964 case 32:
965 case 33:
966 case 34:
967 return 0.;
968
969 default:
970 unsigned int o = 0;
971 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
972 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
973 unsigned int block=o, nz = 0;
974 for (; block < i2; block += (o-nz+1)) { nz++; }
975 const unsigned int nx = block - i2;
976 const unsigned int ny = o - nx - nz;
977 Real val = nx * ny;
978 for (unsigned int index=1; index < nx; index++)
979 val *= dx;
980 for (unsigned int index=1; index < ny; index++)
981 val *= dy;
982 for (unsigned int index=0; index != nz; index++)
983 val *= dz;
984 return val/distxy;
985 }
986 }
987
988
989 // d^2()/dy^2
990 case 2:
991 {
992 switch (i)
993 {
994 // constant
995 case 0:
996
997 // linear
998 case 1:
999 case 2:
1000 case 3:
1001 return 0.;
1002
1003 // quadratic
1004 case 4:
1005 case 5:
1006 return 0.;
1007
1008 case 6:
1009 return 2./dist2y;
1010
1011 case 7:
1012 case 8:
1013 case 9:
1014 return 0.;
1015
1016 // cubic
1017 case 10:
1018 case 11:
1019 return 0.;
1020
1021 case 12:
1022 return 2.*dx/dist2y;
1023 case 13:
1024 return 6.*dy/dist2y;
1025
1026 case 14:
1027 case 15:
1028 return 0.;
1029
1030 case 16:
1031 return 2.*dz/dist2y;
1032
1033 case 17:
1034 case 18:
1035 case 19:
1036 return 0.;
1037
1038 // quartics
1039 case 20:
1040 case 21:
1041 return 0.;
1042
1043 case 22:
1044 return 2.*dx*dx/dist2y;
1045
1046 case 23:
1047 return 6.*dx*dy/dist2y;
1048
1049 case 24:
1050 return 12.*dy*dy/dist2y;
1051
1052 case 25:
1053 case 26:
1054 return 0.;
1055
1056 case 27:
1057 return 2.*dx*dz/dist2y;
1058
1059 case 28:
1060 return 6.*dy*dz/dist2y;
1061
1062 case 29:
1063 case 30:
1064 return 0.;
1065
1066 case 31:
1067 return 2.*dz*dz/dist2y;
1068
1069 case 32:
1070 case 33:
1071 case 34:
1072 return 0.;
1073
1074 default:
1075 unsigned int o = 0;
1076 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1077 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
1078 unsigned int block=o, nz = 0;
1079 for (; block < i2; block += (o-nz+1)) { nz++; }
1080 const unsigned int nx = block - i2;
1081 const unsigned int ny = o - nx - nz;
1082 Real val = ny * (ny - 1);
1083 for (unsigned int index=0; index != nx; index++)
1084 val *= dx;
1085 for (unsigned int index=2; index < ny; index++)
1086 val *= dy;
1087 for (unsigned int index=0; index != nz; index++)
1088 val *= dz;
1089 return val/dist2y;
1090 }
1091 }
1092
1093
1094 // d^2()/dxdz
1095 case 3:
1096 {
1097 switch (i)
1098 {
1099 // constant
1100 case 0:
1101
1102 // linear
1103 case 1:
1104 case 2:
1105 case 3:
1106 return 0.;
1107
1108 // quadratic
1109 case 4:
1110 case 5:
1111 case 6:
1112 return 0.;
1113
1114 case 7:
1115 return 1./distxz;
1116
1117 case 8:
1118 case 9:
1119 return 0.;
1120
1121 // cubic
1122 case 10:
1123 case 11:
1124 case 12:
1125 case 13:
1126 return 0.;
1127
1128 case 14:
1129 return 2.*dx/distxz;
1130
1131 case 15:
1132 return dy/distxz;
1133
1134 case 16:
1135 return 0.;
1136
1137 case 17:
1138 return 2.*dz/distxz;
1139
1140 case 18:
1141 case 19:
1142 return 0.;
1143
1144 // quartics
1145 case 20:
1146 case 21:
1147 case 22:
1148 case 23:
1149 case 24:
1150 return 0.;
1151
1152 case 25:
1153 return 3.*dx*dx/distxz;
1154
1155 case 26:
1156 return 2.*dx*dy/distxz;
1157
1158 case 27:
1159 return dy*dy/distxz;
1160
1161 case 28:
1162 return 0.;
1163
1164 case 29:
1165 return 4.*dx*dz/distxz;
1166
1167 case 30:
1168 return 2.*dy*dz/distxz;
1169
1170 case 31:
1171 return 0.;
1172
1173 case 32:
1174 return 3.*dz*dz/distxz;
1175
1176 case 33:
1177 case 34:
1178 return 0.;
1179
1180 default:
1181 unsigned int o = 0;
1182 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1183 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
1184 unsigned int block=o, nz = 0;
1185 for (; block < i2; block += (o-nz+1)) { nz++; }
1186 const unsigned int nx = block - i2;
1187 const unsigned int ny = o - nx - nz;
1188 Real val = nx * nz;
1189 for (unsigned int index=1; index < nx; index++)
1190 val *= dx;
1191 for (unsigned int index=0; index != ny; index++)
1192 val *= dy;
1193 for (unsigned int index=1; index < nz; index++)
1194 val *= dz;
1195 return val/distxz;
1196 }
1197 }
1198
1199 // d^2()/dydz
1200 case 4:
1201 {
1202 switch (i)
1203 {
1204 // constant
1205 case 0:
1206
1207 // linear
1208 case 1:
1209 case 2:
1210 case 3:
1211 return 0.;
1212
1213 // quadratic
1214 case 4:
1215 case 5:
1216 case 6:
1217 case 7:
1218 return 0.;
1219
1220 case 8:
1221 return 1./distyz;
1222
1223 case 9:
1224 return 0.;
1225
1226 // cubic
1227 case 10:
1228 case 11:
1229 case 12:
1230 case 13:
1231 case 14:
1232 return 0.;
1233
1234 case 15:
1235 return dx/distyz;
1236
1237 case 16:
1238 return 2.*dy/distyz;
1239
1240 case 17:
1241 return 0.;
1242
1243 case 18:
1244 return 2.*dz/distyz;
1245
1246 case 19:
1247 return 0.;
1248
1249 // quartics
1250 case 20:
1251 case 21:
1252 case 22:
1253 case 23:
1254 case 24:
1255 case 25:
1256 return 0.;
1257
1258 case 26:
1259 return dx*dx/distyz;
1260
1261 case 27:
1262 return 2.*dx*dy/distyz;
1263
1264 case 28:
1265 return 3.*dy*dy/distyz;
1266
1267 case 29:
1268 return 0.;
1269
1270 case 30:
1271 return 2.*dx*dz/distyz;
1272
1273 case 31:
1274 return 4.*dy*dz/distyz;
1275
1276 case 32:
1277 return 0.;
1278
1279 case 33:
1280 return 3.*dz*dz/distyz;
1281
1282 case 34:
1283 return 0.;
1284
1285 default:
1286 unsigned int o = 0;
1287 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1288 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
1289 unsigned int block=o, nz = 0;
1290 for (; block < i2; block += (o-nz+1)) { nz++; }
1291 const unsigned int nx = block - i2;
1292 const unsigned int ny = o - nx - nz;
1293 Real val = ny * nz;
1294 for (unsigned int index=0; index != nx; index++)
1295 val *= dx;
1296 for (unsigned int index=1; index < ny; index++)
1297 val *= dy;
1298 for (unsigned int index=1; index < nz; index++)
1299 val *= dz;
1300 return val/distyz;
1301 }
1302 }
1303
1304
1305 // d^2()/dz^2
1306 case 5:
1307 {
1308 switch (i)
1309 {
1310 // constant
1311 case 0:
1312
1313 // linear
1314 case 1:
1315 case 2:
1316 case 3:
1317 return 0.;
1318
1319 // quadratic
1320 case 4:
1321 case 5:
1322 case 6:
1323 case 7:
1324 case 8:
1325 return 0.;
1326
1327 case 9:
1328 return 2./dist2z;
1329
1330 // cubic
1331 case 10:
1332 case 11:
1333 case 12:
1334 case 13:
1335 case 14:
1336 case 15:
1337 case 16:
1338 return 0.;
1339
1340 case 17:
1341 return 2.*dx/dist2z;
1342
1343 case 18:
1344 return 2.*dy/dist2z;
1345
1346 case 19:
1347 return 6.*dz/dist2z;
1348
1349 // quartics
1350 case 20:
1351 case 21:
1352 case 22:
1353 case 23:
1354 case 24:
1355 case 25:
1356 case 26:
1357 case 27:
1358 case 28:
1359 return 0.;
1360
1361 case 29:
1362 return 2.*dx*dx/dist2z;
1363
1364 case 30:
1365 return 2.*dx*dy/dist2z;
1366
1367 case 31:
1368 return 2.*dy*dy/dist2z;
1369
1370 case 32:
1371 return 6.*dx*dz/dist2z;
1372
1373 case 33:
1374 return 6.*dy*dz/dist2z;
1375
1376 case 34:
1377 return 12.*dz*dz/dist2z;
1378
1379 default:
1380 unsigned int o = 0;
1381 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1382 unsigned int i2 = i - (o*(o+1)*(o+2)/6);
1383 unsigned int block=o, nz = 0;
1384 for (; block < i2; block += (o-nz+1)) { nz++; }
1385 const unsigned int nx = block - i2;
1386 const unsigned int ny = o - nx - nz;
1387 Real val = nz * (nz - 1);
1388 for (unsigned int index=0; index != nx; index++)
1389 val *= dx;
1390 for (unsigned int index=0; index != ny; index++)
1391 val *= dy;
1392 for (unsigned int index=2; index < nz; index++)
1393 val *= dz;
1394 return val/dist2z;
1395 }
1396 }
1397
1398
1399 default:
1400 libmesh_error_msg("Invalid j = " << j);
1401 }
1402
1403#else // LIBMESH_DIM != 3
1404 libmesh_assert(true || order || add_p_level);
1405 libmesh_ignore(elem, i, j, point_in);
1406 libmesh_not_implemented();
1407#endif
1408}

◆ shape_second_deriv() [29/233]

Real libMesh::FE< 1, XYZ >::shape_second_deriv ( const Elem elem,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  libmesh_dbg_varj,
const Point point_in,
const bool  libmesh_dbg_varadd_p_level 
)
inherited

Definition at line 194 of file fe_xyz_shape_1D.C.

200{
201 libmesh_assert(elem);
202 libmesh_assert_less_equal (i, order + add_p_level * elem->p_level());
203
204 // only d2()/dxi2 in 1D!
205
206 libmesh_assert_equal_to (j, 0);
207
208 Point avg = elem->vertex_average();
209 Real max_distance = 0.;
210 for (const Point & p : elem->node_ref_range())
211 {
212 const Real distance = std::abs(avg(0) - p(0));
213 max_distance = std::max(distance, max_distance);
214 }
215
216 const Real x = point_in(0);
217 const Real xc = avg(0);
218 const Real dx = (x - xc)/max_distance;
219 const Real dist2 = pow(max_distance,2.);
220
221 // monomials. since they are hierarchic we only need one case block.
222 switch (i)
223 {
224 case 0:
225 case 1:
226 return 0.;
227
228 case 2:
229 return 2./dist2;
230
231 case 3:
232 return 6.*dx/dist2;
233
234 case 4:
235 return 12.*dx*dx/dist2;
236
237 default:
238 Real val = 2.;
239 for (unsigned int index = 2; index != i; ++index)
240 val *= (index+1) * dx;
241 return val/dist2;
242 }
243}

◆ shape_second_deriv() [30/233]

Real libMesh::FE< 1, HERMITE >::shape_second_deriv ( const Elem elem,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  ,
const Point p,
const bool  libmesh_dbg_varadd_p_level 
)
inherited

Definition at line 333 of file fe_hermite_shape_1D.C.

339{
340 libmesh_assert(elem);
341
342 // Coefficient naming: d(1)d(2n) is the coefficient of the
343 // global shape function corresponding to value 1 in terms of the
344 // local shape function corresponding to normal derivative 2
345 Real d1xd1x, d2xd2x;
346
347 hermite_compute_coefs(elem, d1xd1x, d2xd2x);
348
349 const ElemType type = elem->type();
350
351#ifndef NDEBUG
352 const unsigned int totalorder =
353 order + add_p_level * elem->p_level();
354#endif
355
356 switch (type)
357 {
358 // C1 functions on the C1 cubic edge
359 case EDGE2:
360 case EDGE3:
361 {
362 libmesh_assert_less (i, totalorder+1);
363
364 switch (i)
365 {
366 case 0:
368 case 1:
369 return d1xd1x * FEHermite<1>::hermite_raw_shape_second_deriv(2, p(0));
370 case 2:
372 case 3:
373 return d2xd2x * FEHermite<1>::hermite_raw_shape_second_deriv(3, p(0));
374 default:
376 }
377 }
378 default:
379 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
380 }
381}
static Real hermite_raw_shape_second_deriv(const unsigned int basis_num, const Real xi)
1D hermite functions on unit interval

◆ shape_second_deriv() [31/233]

static OutputShape libMesh::FE< Dim, T >::shape_second_deriv ( const Elem elem,
const Order  o,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level = true 
)
staticinherited
Returns
The second \( j^{th} \) derivative of the \( i^{th} \) shape function at the point p.
Note
Cross-derivatives are indexed according to: j = 0 ==> d^2 phi / dxi^2 j = 1 ==> d^2 phi / dxi deta j = 2 ==> d^2 phi / deta^2 j = 3 ==> d^2 phi / dxi dzeta j = 4 ==> d^2 phi / deta dzeta j = 5 ==> d^2 phi / dzeta^2
Computing second derivatives is not currently supported for all element types: \( C^1 \) (Clough, Hermite and Subdivision), Lagrange, Hierarchic, L2_Hierarchic, and Monomial are supported. All other element types return an error when asked for second derivatives.

On a p-refined element, o should be the base order of the element if add_p_level is left true, or can be the base order of the element if add_p_level is set to false.

◆ shape_second_deriv() [32/233]

RealGradient libMesh::FE< 3, NEDELEC_ONE >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point ,
const bool  add_p_level 
)
inherited

Definition at line 424 of file fe_nedelec_one_shape_3D.C.

430{
431#if LIBMESH_DIM == 3
432
433 libmesh_assert(elem);
434
435 // j = 0 ==> d^2 phi / dxi^2
436 // j = 1 ==> d^2 phi / dxi deta
437 // j = 2 ==> d^2 phi / deta^2
438 // j = 3 ==> d^2 phi / dxi dzeta
439 // j = 4 ==> d^2 phi / deta dzeta
440 // j = 5 ==> d^2 phi / dzeta^2
441 libmesh_assert_less (j, 6);
442
443 const Order totalorder = order + add_p_level*elem->p_level();
444 libmesh_assert_less(i, n_dofs(elem->type(), totalorder));
445
446 const char sign = elem->positive_edge_orientation(i) ? 1 : -1;
447
448 switch (totalorder)
449 {
450 // linear Nedelec (first kind) shape function second derivatives
451 case FIRST:
452 {
453 switch (elem->type())
454 {
455 case HEX20:
456 case HEX27:
457 {
458 switch (j)
459 {
460 // d^2()/dxi^2, d^2()/deta^2, d^2()/dzeta^2
461 case 0:
462 case 2:
463 case 5:
464 return RealGradient();
465
466 // d^2()/dxideta
467 case 1:
468 {
469 switch(i)
470 {
471 case 0:
472 case 1:
473 case 2:
474 case 3:
475 case 8:
476 case 9:
477 case 10:
478 case 11:
479 return RealGradient();
480 case 4:
481 case 6:
482 return sign * RealGradient( 0.0, 0.0, -0.125 );
483 case 5:
484 case 7:
485 return sign * RealGradient( 0.0, 0.0, 0.125 );
486
487 default:
488 libmesh_error_msg("Invalid i = " << i);
489 } // switch(i)
490
491 } // j = 1
492
493 // d^2()/dxidzeta
494 case 3:
495 {
496 switch(i)
497 {
498 case 0:
499 case 2:
500 case 4:
501 case 5:
502 case 6:
503 case 7:
504 case 8:
505 case 10:
506 return RealGradient();
507 case 1:
508 case 3:
509 case 11:
510 return sign * RealGradient( 0.0, 0.125 );
511 case 9:
512 return sign * RealGradient( 0.0, -0.125, 0.0 );
513
514 default:
515 libmesh_error_msg("Invalid i = " << i);
516 } // switch(i)
517
518 } // j = 3
519
520 // d^2()/detadzeta
521 case 4:
522 {
523 switch(i)
524 {
525 case 0:
526 return sign * RealGradient( -0.125, 0.0, 0.0 );
527 case 1:
528 case 3:
529 case 4:
530 case 5:
531 case 6:
532 case 7:
533 case 9:
534 case 11:
535 return RealGradient();
536 case 2:
537 case 8:
538 case 10:
539 return sign * RealGradient( 0.125, 0.0, 0.0 );
540
541 default:
542 libmesh_error_msg("Invalid i = " << i);
543 } // switch(i)
544
545 } // j = 4
546
547 default:
548 libmesh_error_msg("Invalid j = " << j);
549 }
550 }
551
552 // All second derivatives for linear tets are zero.
553 case TET10:
554 case TET14:
555 return RealGradient();
556
557 default:
558 libmesh_error_msg("ERROR: Unsupported 3D element type!: " << Utility::enum_to_string(elem->type()));
559
560 } //switch(type)
561
562 }
563
564 // unsupported order
565 default:
566 libmesh_error_msg("ERROR: Unsupported 3D FE order!: " << totalorder);
567 }
568
569#else // LIBMESH_DIM != 3
570 libmesh_assert(true || p(0));
571 libmesh_ignore(elem, order, i, j, add_p_level);
572 libmesh_not_implemented();
573#endif
574}

◆ shape_second_deriv() [33/233]

Real libMesh::FE< 2, SUBDIVISION >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

◆ shape_second_deriv() [34/233]

Real libMesh::FE< 1, BERNSTEIN >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 593 of file fe_bernstein_shape_1D.C.

599{
600 libmesh_assert(elem);
601
602 return FE<1,BERNSTEIN>::shape_second_deriv
603 (elem->type(),
604 order + add_p_level*elem->p_level(), i, j, p);
605}

◆ shape_second_deriv() [35/233]

Real libMesh::FE< 2, BERNSTEIN >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 544 of file fe_bernstein_shape_2D.C.

550{
551 libmesh_assert(elem);
552
553 const ElemType type = elem->type();
554
555 const Order totalorder =
556 order + add_p_level*elem->p_level();
557
558 switch (type)
559 {
560 // Hierarchic shape functions on the quadrilateral.
561 case QUAD4:
562 case QUAD9:
563 case QUADSHELL9:
564 {
565 // Compute quad shape functions as a tensor-product
566 auto [i0, i1] = quad_i0_i1(i, totalorder, *elem);
567
568 switch (j)
569 {
570 // d^2() / dxi^2
571 case 0:
572 return (FE<1,BERNSTEIN>::shape_second_deriv(EDGE3, totalorder, i0, 0, p(0))*
573 FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i1, p(1)));
574
575 // d^2() / dxi deta
576 case 1:
577 return (FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i0, 0, p(0))*
578 FE<1,BERNSTEIN>::shape_deriv(EDGE3, totalorder, i1, 0, p(1)));
579
580 // d^2() / deta^2
581 case 2:
582 return (FE<1,BERNSTEIN>::shape (EDGE3, totalorder, i0, p(0))*
583 FE<1,BERNSTEIN>::shape_second_deriv(EDGE3, totalorder, i1, 0, p(1)));
584
585 default:
586 libmesh_error_msg("Invalid shape function derivative j = " << j);
587 }
588 }
589
590 // Going to be lazy again about the hard cases.
591 case TRI3:
592 case TRISHELL3:
593 libmesh_assert_less (totalorder, 2);
594 libmesh_fallthrough();
595 case QUAD8:
596 case QUADSHELL8:
597 case TRI6:
598 case TRI7:
599 {
600 return fe_fdm_second_deriv(elem, order, i, j, p, add_p_level,
602 }
603
604 default:
605 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
606 }
607}
OutputShape fe_fdm_second_deriv(const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p, const bool add_p_level, OutputShape(*deriv_func)(const Elem *, const Order, const unsigned int, const unsigned int, const Point &, const bool))
Definition fe.C:969

◆ shape_second_deriv() [36/233]

Real libMesh::FE< 3, BERNSTEIN >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 2342 of file fe_bernstein_shape_3D.C.

2348{
2349 return fe_fdm_second_deriv(elem, order, i, j, p, add_p_level,
2351}

◆ shape_second_deriv() [37/233]

Real libMesh::FE< 1, CLOUGH >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 385 of file fe_clough_shape_1D.C.

391{
392 libmesh_assert(elem);
393
394 clough_compute_coefs(elem);
395
396 const ElemType type = elem->type();
397
398 const Order totalorder =
399 order + add_p_level*elem->p_level();
400
401 switch (totalorder)
402 {
403 // 3rd-order C1 cubic element
404 case THIRD:
405 {
406 switch (type)
407 {
408 // C1 functions on the C1 cubic edge
409 case EDGE2:
410 case EDGE3:
411 {
412 switch (i)
413 {
414 case 0:
415 return clough_raw_shape_second_deriv(0, j, p);
416 case 1:
417 return clough_raw_shape_second_deriv(1, j, p);
418 case 2:
419 return d1xd1x * clough_raw_shape_second_deriv(2, j, p);
420 case 3:
421 return d2xd2x * clough_raw_shape_second_deriv(3, j, p);
422 default:
423 libmesh_error_msg("Invalid shape function index i = " << i);
424 }
425 }
426 default:
427 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
428 }
429 }
430 // by default throw an error
431 default:
432 libmesh_error_msg("ERROR: Unsupported polynomial order = " << totalorder);
433 }
434}

◆ shape_second_deriv() [38/233]

Real libMesh::FE< 2, CLOUGH >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 2183 of file fe_clough_shape_2D.C.

2189{
2190 libmesh_assert(elem);
2191
2192 CloughCoefs coefs;
2193 clough_compute_coefs(elem, coefs);
2194
2195 const ElemType type = elem->type();
2196
2197 const Order totalorder =
2198 order + add_p_level*elem->p_level();
2199
2200 switch (totalorder)
2201 {
2202 // 2nd-order restricted Clough-Tocher element
2203 case SECOND:
2204 {
2205 switch (type)
2206 {
2207 // C1 functions on the Clough-Tocher triangle.
2208 case TRI6:
2209 case TRI7:
2210 {
2211 libmesh_assert_less (i, 9);
2212 // FIXME: it would be nice to calculate (and cache)
2213 // clough_raw_shape(j,p) only once per triangle, not 1-7
2214 // times
2215 switch (i)
2216 {
2217 // Note: these DoF numbers are "scrambled" because my
2218 // initial numbering conventions didn't match libMesh
2219 case 0:
2220 return clough_raw_shape_second_deriv(0, j, p)
2221 + coefs.d1d2n * clough_raw_shape_second_deriv(10, j, p)
2222 + coefs.d1d3n * clough_raw_shape_second_deriv(11, j, p);
2223 case 3:
2224 return clough_raw_shape_second_deriv(1, j, p)
2225 + coefs.d2d3n * clough_raw_shape_second_deriv(11, j, p)
2226 + coefs.d2d1n * clough_raw_shape_second_deriv(9, j, p);
2227 case 6:
2228 return clough_raw_shape_second_deriv(2, j, p)
2229 + coefs.d3d1n * clough_raw_shape_second_deriv(9, j, p)
2230 + coefs.d3d2n * clough_raw_shape_second_deriv(10, j, p);
2231 case 1:
2232 return coefs.d1xd1x * clough_raw_shape_second_deriv(3, j, p)
2233 + coefs.d1xd1y * clough_raw_shape_second_deriv(4, j, p)
2234 + coefs.d1xd2n * clough_raw_shape_second_deriv(10, j, p)
2235 + coefs.d1xd3n * clough_raw_shape_second_deriv(11, j, p)
2236 + 0.5 * coefs.N01x * coefs.d3nd3n * clough_raw_shape_second_deriv(11, j, p)
2237 + 0.5 * coefs.N02x * coefs.d2nd2n * clough_raw_shape_second_deriv(10, j, p);
2238 case 2:
2239 return coefs.d1yd1y * clough_raw_shape_second_deriv(4, j, p)
2240 + coefs.d1yd1x * clough_raw_shape_second_deriv(3, j, p)
2241 + coefs.d1yd2n * clough_raw_shape_second_deriv(10, j, p)
2242 + coefs.d1yd3n * clough_raw_shape_second_deriv(11, j, p)
2243 + 0.5 * coefs.N01y * coefs.d3nd3n * clough_raw_shape_second_deriv(11, j, p)
2244 + 0.5 * coefs.N02y * coefs.d2nd2n * clough_raw_shape_second_deriv(10, j, p);
2245 case 4:
2246 return coefs.d2xd2x * clough_raw_shape_second_deriv(5, j, p)
2247 + coefs.d2xd2y * clough_raw_shape_second_deriv(6, j, p)
2248 + coefs.d2xd3n * clough_raw_shape_second_deriv(11, j, p)
2249 + coefs.d2xd1n * clough_raw_shape_second_deriv(9, j, p)
2250 + 0.5 * coefs.N10x * coefs.d3nd3n * clough_raw_shape_second_deriv(11, j, p)
2251 + 0.5 * coefs.N12x * coefs.d1nd1n * clough_raw_shape_second_deriv(9, j, p);
2252 case 5:
2253 return coefs.d2yd2y * clough_raw_shape_second_deriv(6, j, p)
2254 + coefs.d2yd2x * clough_raw_shape_second_deriv(5, j, p)
2255 + coefs.d2yd3n * clough_raw_shape_second_deriv(11, j, p)
2256 + coefs.d2yd1n * clough_raw_shape_second_deriv(9, j, p)
2257 + 0.5 * coefs.N10y * coefs.d3nd3n * clough_raw_shape_second_deriv(11, j, p)
2258 + 0.5 * coefs.N12y * coefs.d1nd1n * clough_raw_shape_second_deriv(9, j, p);
2259 case 7:
2260 return coefs.d3xd3x * clough_raw_shape_second_deriv(7, j, p)
2261 + coefs.d3xd3y * clough_raw_shape_second_deriv(8, j, p)
2262 + coefs.d3xd1n * clough_raw_shape_second_deriv(9, j, p)
2263 + coefs.d3xd2n * clough_raw_shape_second_deriv(10, j, p)
2264 + 0.5 * coefs.N20x * coefs.d2nd2n * clough_raw_shape_second_deriv(10, j, p)
2265 + 0.5 * coefs.N21x * coefs.d1nd1n * clough_raw_shape_second_deriv(9, j, p);
2266 case 8:
2267 return coefs.d3yd3y * clough_raw_shape_second_deriv(8, j, p)
2268 + coefs.d3yd3x * clough_raw_shape_second_deriv(7, j, p)
2269 + coefs.d3yd1n * clough_raw_shape_second_deriv(9, j, p)
2270 + coefs.d3yd2n * clough_raw_shape_second_deriv(10, j, p)
2271 + 0.5 * coefs.N20y * coefs.d2nd2n * clough_raw_shape_second_deriv(10, j, p)
2272 + 0.5 * coefs.N21y * coefs.d1nd1n * clough_raw_shape_second_deriv(9, j, p);
2273 default:
2274 libmesh_error_msg("Invalid shape function index i = " << i);
2275 }
2276 }
2277 default:
2278 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
2279 }
2280 }
2281 // 3rd-order Clough-Tocher element
2282 case THIRD:
2283 {
2284 switch (type)
2285 {
2286 // C1 functions on the Clough-Tocher triangle.
2287 case TRI6:
2288 case TRI7:
2289 {
2290 libmesh_assert_less (i, 12);
2291
2292 // FIXME: it would be nice to calculate (and cache)
2293 // clough_raw_shape(j,p) only once per triangle, not 1-7
2294 // times
2295 switch (i)
2296 {
2297 // Note: these DoF numbers are "scrambled" because my
2298 // initial numbering conventions didn't match libMesh
2299 case 0:
2300 return clough_raw_shape_second_deriv(0, j, p)
2301 + coefs.d1d2n * clough_raw_shape_second_deriv(10, j, p)
2302 + coefs.d1d3n * clough_raw_shape_second_deriv(11, j, p);
2303 case 3:
2304 return clough_raw_shape_second_deriv(1, j, p)
2305 + coefs.d2d3n * clough_raw_shape_second_deriv(11, j, p)
2306 + coefs.d2d1n * clough_raw_shape_second_deriv(9, j, p);
2307 case 6:
2308 return clough_raw_shape_second_deriv(2, j, p)
2309 + coefs.d3d1n * clough_raw_shape_second_deriv(9, j, p)
2310 + coefs.d3d2n * clough_raw_shape_second_deriv(10, j, p);
2311 case 1:
2312 return coefs.d1xd1x * clough_raw_shape_second_deriv(3, j, p)
2313 + coefs.d1xd1y * clough_raw_shape_second_deriv(4, j, p)
2314 + coefs.d1xd2n * clough_raw_shape_second_deriv(10, j, p)
2315 + coefs.d1xd3n * clough_raw_shape_second_deriv(11, j, p);
2316 case 2:
2317 return coefs.d1yd1y * clough_raw_shape_second_deriv(4, j, p)
2318 + coefs.d1yd1x * clough_raw_shape_second_deriv(3, j, p)
2319 + coefs.d1yd2n * clough_raw_shape_second_deriv(10, j, p)
2320 + coefs.d1yd3n * clough_raw_shape_second_deriv(11, j, p);
2321 case 4:
2322 return coefs.d2xd2x * clough_raw_shape_second_deriv(5, j, p)
2323 + coefs.d2xd2y * clough_raw_shape_second_deriv(6, j, p)
2324 + coefs.d2xd3n * clough_raw_shape_second_deriv(11, j, p)
2325 + coefs.d2xd1n * clough_raw_shape_second_deriv(9, j, p);
2326 case 5:
2327 return coefs.d2yd2y * clough_raw_shape_second_deriv(6, j, p)
2328 + coefs.d2yd2x * clough_raw_shape_second_deriv(5, j, p)
2329 + coefs.d2yd3n * clough_raw_shape_second_deriv(11, j, p)
2330 + coefs.d2yd1n * clough_raw_shape_second_deriv(9, j, p);
2331 case 7:
2332 return coefs.d3xd3x * clough_raw_shape_second_deriv(7, j, p)
2333 + coefs.d3xd3y * clough_raw_shape_second_deriv(8, j, p)
2334 + coefs.d3xd1n * clough_raw_shape_second_deriv(9, j, p)
2335 + coefs.d3xd2n * clough_raw_shape_second_deriv(10, j, p);
2336 case 8:
2337 return coefs.d3yd3y * clough_raw_shape_second_deriv(8, j, p)
2338 + coefs.d3yd3x * clough_raw_shape_second_deriv(7, j, p)
2339 + coefs.d3yd1n * clough_raw_shape_second_deriv(9, j, p)
2340 + coefs.d3yd2n * clough_raw_shape_second_deriv(10, j, p);
2341 case 10:
2342 return coefs.d1nd1n * clough_raw_shape_second_deriv(9, j, p);
2343 case 11:
2344 return coefs.d2nd2n * clough_raw_shape_second_deriv(10, j, p);
2345 case 9:
2346 return coefs.d3nd3n * clough_raw_shape_second_deriv(11, j, p);
2347
2348 default:
2349 libmesh_error_msg("Invalid shape function index i = " << i);
2350 }
2351 }
2352 default:
2353 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
2354 }
2355 }
2356 // by default throw an error
2357 default:
2358 libmesh_error_msg("ERROR: Unsupported polynomial order = " << order);
2359 }
2360}

◆ shape_second_deriv() [39/233]

Real libMesh::FE< 2, HERMITE >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 364 of file fe_hermite_shape_2D.C.

370{
371 libmesh_assert(elem);
372 libmesh_assert (j == 0 || j == 1 || j == 2);
373
374 std::vector<std::vector<Real>> dxdxi(2, std::vector<Real>(2, 0));
375
376#ifdef DEBUG
377 std::vector<Real> dxdeta(2), dydxi(2);
378#endif
379
380 hermite_compute_coefs(elem,dxdxi
381#ifdef DEBUG
382 ,dxdeta,dydxi
383#endif
384 );
385
386 const ElemType type = elem->type();
387
388 const Order totalorder =
389 order + add_p_level*elem->p_level();
390
391 switch (type)
392 {
393 case QUAD4:
394 case QUADSHELL4:
395 libmesh_assert_less (totalorder, 4);
396 libmesh_fallthrough();
397 case QUAD8:
398 case QUADSHELL8:
399 case QUAD9:
400 case QUADSHELL9:
401 {
402 libmesh_assert_less (i, (totalorder+1u)*(totalorder+1u));
403
404 std::vector<unsigned int> bases1D;
405
406 Real coef = hermite_bases_2D(bases1D, dxdxi, totalorder, i);
407
408 switch (j)
409 {
410 case 0:
411 return coef *
413 FEHermite<1>::hermite_raw_shape(bases1D[1],p(1));
414 case 1:
415 return coef *
418 case 2:
419 return coef *
420 FEHermite<1>::hermite_raw_shape(bases1D[0],p(0)) *
422 default:
423 libmesh_error_msg("Invalid derivative index j = " << j);
424 }
425 }
426 default:
427 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(type));
428 }
429}

◆ shape_second_deriv() [40/233]

Real libMesh::FE< 3, HERMITE >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 575 of file fe_hermite_shape_3D.C.

581{
582 libmesh_assert(elem);
583
584 std::vector<std::vector<Real>> dxdxi(3, std::vector<Real>(2, 0));
585
586#ifdef DEBUG
587 std::vector<Real> dydxi(2), dzdeta(2), dxdzeta(2);
588 std::vector<Real> dzdxi(2), dxdeta(2), dydzeta(2);
589#endif //DEBUG
590
591 hermite_compute_coefs(elem, dxdxi
592#ifdef DEBUG
593 , dydxi, dzdeta, dxdzeta, dzdxi, dxdeta, dydzeta
594#endif
595 );
596
597 const ElemType type = elem->type();
598
599 const Order totalorder =
600 order + add_p_level*elem->p_level();
601
602 switch (totalorder)
603 {
604 // 3rd-order tricubic Hermite functions
605 case THIRD:
606 {
607 switch (type)
608 {
609 case HEX8:
610 case HEX20:
611 case HEX27:
612 {
613 libmesh_assert_less (i, 64);
614
615 std::vector<unsigned int> bases1D;
616
617 Real coef = hermite_bases_3D(bases1D, dxdxi, totalorder, i);
618
619 switch (j) // Derivative type
620 {
621 case 0:
622 return coef *
624 FEHermite<1>::hermite_raw_shape(bases1D[1],p(1)) *
625 FEHermite<1>::hermite_raw_shape(bases1D[2],p(2));
626 break;
627 case 1:
628 return coef *
631 FEHermite<1>::hermite_raw_shape(bases1D[2],p(2));
632 break;
633 case 2:
634 return coef *
635 FEHermite<1>::hermite_raw_shape(bases1D[0],p(0)) *
637 FEHermite<1>::hermite_raw_shape(bases1D[2],p(2));
638 break;
639 case 3:
640 return coef *
642 FEHermite<1>::hermite_raw_shape(bases1D[1],p(1)) *
644 break;
645 case 4:
646 return coef *
647 FEHermite<1>::hermite_raw_shape(bases1D[0],p(0)) *
650 break;
651 case 5:
652 return coef *
653 FEHermite<1>::hermite_raw_shape(bases1D[0],p(0)) *
654 FEHermite<1>::hermite_raw_shape(bases1D[1],p(1)) *
656 break;
657 default:
658 libmesh_error_msg("Invalid shape function derivative j = " << j);
659 }
660
661 }
662 default:
663 libmesh_error_msg("ERROR: Unsupported element type " << Utility::enum_to_string(type));
664 }
665 }
666 // by default throw an error
667 default:
668 libmesh_error_msg("ERROR: Unsupported polynomial order " << totalorder);
669 }
670}

◆ shape_second_deriv() [41/233]

Real libMesh::FE< 1, HIERARCHIC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 339 of file fe_hierarchic_shape_1D.C.

345{
346 libmesh_assert(elem);
347
348 return fe_hierarchic_1D_shape_second_deriv(elem->type(),
349 order + add_p_level*elem->p_level(), i, j, p);
350}

◆ shape_second_deriv() [42/233]

Real libMesh::FE< 1, L2_HIERARCHIC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 369 of file fe_hierarchic_shape_1D.C.

375{
376 libmesh_assert(elem);
377
378 return fe_hierarchic_1D_shape_second_deriv(elem->type(),
379 order + add_p_level*elem->p_level(), i, j, p);
380}

◆ shape_second_deriv() [43/233]

Real libMesh::FE< 2, HIERARCHIC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 734 of file fe_hierarchic_shape_2D.C.

740{
741 return fe_hierarchic_2D_shape_second_deriv<HIERARCHIC>(elem, order, i, j, p, add_p_level);
742}

◆ shape_second_deriv() [44/233]

Real libMesh::FE< 2, L2_HIERARCHIC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 758 of file fe_hierarchic_shape_2D.C.

764{
765 return fe_hierarchic_2D_shape_second_deriv<L2_HIERARCHIC>(elem, order, i, j, p, add_p_level);
766}

◆ shape_second_deriv() [45/233]

Real libMesh::FE< 2, SIDE_HIERARCHIC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 782 of file fe_hierarchic_shape_2D.C.

788{
789 libmesh_assert(elem);
790 const ElemType type = elem->type();
791
792 const Order totalorder = order + add_p_level*elem->p_level();
793
794 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
795 return 0;
796
797 const unsigned int dofs_per_side = totalorder+1u;
798
799 switch (type)
800 {
801 case TRI6:
802 case TRI7:
803 {
804 return fe_fdm_second_deriv(elem, order, i, j, p, add_p_level,
806 }
807 case QUAD8:
808 case QUADSHELL8:
809 case QUAD9:
810 case QUADSHELL9:
811 {
812 libmesh_assert_less(i, 4*dofs_per_side);
813
814 // Flip odd degree of freedom values if necessary
815 // to keep continuity on sides. We'll flip xi/eta rather than
816 // flipping phi, so that we can use this to handle the "nodal"
817 // degrees of freedom too.
818 Real f = 1.;
819
820 const Real xi = p(0), eta = p(1);
821 if (eta < xi)
822 {
823 if (eta < -xi) // side 0
824 {
825 if (i >= dofs_per_side)
826 return 0;
827 if (j != 0)
828 return 0;
829 if ((i < 2 || i % 2) &&
831 f = -1;
832
833 return FE<1,HIERARCHIC>::shape_second_deriv(EDGE3, totalorder, i, 0, f*xi);
834 }
835 else // side 1
836 {
837 if (i < dofs_per_side ||
838 i >= 2*dofs_per_side)
839 return 0;
840 if (j != 2)
841 return 0;
842
843 const unsigned int side_i = i - dofs_per_side;
844
845 if ((side_i < 2 || side_i % 2) &&
847 f = -1;
848
849 return FE<1,HIERARCHIC>::shape_second_deriv(EDGE3, totalorder, side_i, 0, f*eta);
850 }
851 }
852 else // xi < eta
853 {
854 if (eta > -xi) // side 2
855 {
856 if (i < 2*dofs_per_side ||
857 i >= 3*dofs_per_side)
858 return 0;
859 if (j != 0)
860 return 0;
861
862 const unsigned int side_i = i - 2*dofs_per_side;
863
864 if ((side_i < 2 || side_i % 2) &&
866 f = -1;
867
868 return FE<1,HIERARCHIC>::shape_second_deriv(EDGE3, totalorder, side_i, 0, f*xi);
869 }
870 else // side 3
871 {
872 if (i < 3*dofs_per_side)
873 return 0;
874 if (j != 2)
875 return 0;
876
877 const unsigned int side_i = i - 3*dofs_per_side;
878
879 if ((side_i < 2 || side_i % 2) &&
881 f = -1;
882
883 return FE<1,HIERARCHIC>::shape_second_deriv(EDGE3, totalorder, side_i, 0, f*eta);
884 }
885 }
886 }
887 default:
888 libmesh_error_msg("ERROR: Unsupported element type = " << Utility::enum_to_string(elem->type()));
889 }
890 return 0;
891}
static OutputShape shape_second_deriv(const ElemType t, const Order o, const unsigned int i, const unsigned int j, const Point &p)

◆ shape_second_deriv() [46/233]

Real libMesh::FE< 3, HIERARCHIC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1807 of file fe_hierarchic_shape_3D.C.

1813{
1814 return fe_hierarchic_3D_shape_second_deriv<HIERARCHIC>(elem, order, i, j, p, add_p_level);
1815}

◆ shape_second_deriv() [47/233]

Real libMesh::FE< 3, L2_HIERARCHIC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1833 of file fe_hierarchic_shape_3D.C.

1839{
1840 return fe_hierarchic_3D_shape_second_deriv<L2_HIERARCHIC>(elem, order, i, j, p, add_p_level);
1841}

◆ shape_second_deriv() [48/233]

Real libMesh::FE< 3, SIDE_HIERARCHIC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1857 of file fe_hierarchic_shape_3D.C.

1863{
1864#if LIBMESH_DIM == 3
1865 libmesh_assert(elem);
1866 const ElemType type = elem->type();
1867
1868 const Order totalorder = order + add_p_level*elem->p_level();
1869
1870 if (totalorder == 0) // special case since raw HIERARCHIC lacks CONSTANTs
1871 return 0; // constants have zero derivative
1872
1873 switch (type)
1874 {
1875 case HEX27:
1876 {
1877 // I need to debug the p>2 case here...
1878 if (totalorder > 2)
1879 return fe_fdm_second_deriv(elem, order, i, j, p, add_p_level,
1881
1882 const unsigned int dofs_per_side = (totalorder+1u)*(totalorder+1u);
1883 libmesh_assert_less(i, 6*dofs_per_side);
1884
1885 const unsigned int sidenum = cube_side(p);
1886 if (sidenum > 5)
1887 return std::numeric_limits<Real>::quiet_NaN();
1888
1889 const unsigned int dof_offset = sidenum * dofs_per_side;
1890
1891 if (i < dof_offset) // i is on a previous side
1892 return 0;
1893
1894 if (i >= dof_offset + dofs_per_side) // i is on a later side
1895 return 0;
1896
1897 unsigned int side_i = i - dof_offset;
1898
1899 std::unique_ptr<const Elem> side = elem->build_side_ptr(sidenum);
1900
1901 Point sidep = cube_side_point(sidenum, p);
1902
1903 cube_remap(side_i, *side, totalorder, sidep);
1904
1905 // What second derivative or mixed derivative on the side
1906 // corresponds to the xi/eta/zeta mix we were asked for?
1907 unsigned int sidej = 100;
1908
1909 // Do we need a -1 here to flip the final derivative value?
1910 Real f = 1.;
1911
1912 switch (j)
1913 {
1914 case 0: // d^2()/dxi^2
1915 {
1916 switch (sidenum)
1917 {
1918 case 0:
1919 sidej = 2;
1920 break;
1921 case 1:
1922 sidej = 0;
1923 break;
1924 case 2:
1925 return 0;
1926 case 3:
1927 sidej = 0;
1928 break;
1929 case 4:
1930 return 0;
1931 case 5:
1932 sidej = 0;
1933 break;
1934 default:
1935 libmesh_error();
1936 }
1937 break;
1938 }
1939 case 1: // d^2()/dxideta
1940 {
1941 switch (sidenum)
1942 {
1943 case 0:
1944 sidej = 1;
1945 break;
1946 case 1:
1947 case 2:
1948 case 3:
1949 case 4:
1950 return 0;
1951 case 5:
1952 sidej = 1;
1953 break;
1954 default:
1955 libmesh_error();
1956 }
1957 break;
1958 }
1959 case 2: // d^2()/deta^2
1960 {
1961 switch (sidenum)
1962 {
1963 case 0:
1964 sidej = 0;
1965 break;
1966 case 1:
1967 return 0;
1968 case 2:
1969 sidej = 0;
1970 break;
1971 case 3:
1972 return 0;
1973 case 4:
1974 sidej = 0;
1975 break;
1976 case 5:
1977 sidej = 2;
1978 break;
1979 default:
1980 libmesh_error();
1981 }
1982 break;
1983 }
1984 case 3: // d^2()/dxidzeta
1985 {
1986 switch (sidenum)
1987 {
1988 case 0:
1989 return 0;
1990 case 1:
1991 sidej = 1;
1992 break;
1993 case 2:
1994 return 0;
1995 case 3:
1996 sidej = 1;
1997 f = -1;
1998 break;
1999 case 4:
2000 case 5:
2001 return 0;
2002 default:
2003 libmesh_error();
2004 }
2005 break;
2006 }
2007 case 4: // d^2()/detadzeta
2008 {
2009 switch (sidenum)
2010 {
2011 case 0:
2012 case 1:
2013 return 0;
2014 case 2:
2015 sidej = 1;
2016 break;
2017 case 3:
2018 return 0;
2019 case 4:
2020 sidej = 1;
2021 f = -1;
2022 break;
2023 case 5:
2024 return 0;
2025 default:
2026 libmesh_error();
2027 }
2028 break;
2029 }
2030 case 5: // d^2()/dzeta^2
2031 {
2032 switch (sidenum)
2033 {
2034 case 0:
2035 return 0;
2036 case 1:
2037 case 2:
2038 case 3:
2039 case 4:
2040 sidej = 2;
2041 break;
2042 case 5:
2043 return 0;
2044 default:
2045 libmesh_error();
2046 }
2047 break;
2048 }
2049
2050 default:
2051 libmesh_error_msg("Invalid derivative index j = " << j);
2052 }
2053
2054 return f * FE<2,HIERARCHIC>::shape_second_deriv(side.get(),
2055 order, side_i,
2056 sidej, sidep,
2057 add_p_level);
2058 }
2059
2060 case TET14:
2061 case PRISM20:
2062 case PRISM21:
2063 {
2064 return fe_fdm_second_deriv(elem, order, i, j, p, add_p_level,
2066 }
2067
2068 default:
2069 libmesh_error_msg("Invalid element type = " << Utility::enum_to_string(type));
2070 }
2071
2072#else // LIBMESH_DIM != 3
2073 libmesh_ignore(elem, order, i, j, p, add_p_level);
2074 libmesh_not_implemented();
2075#endif
2076}

◆ shape_second_deriv() [49/233]

RealGradient libMesh::FE< 0, HIERARCHIC_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 436 of file fe_hierarchic_vec.C.

440{
441 Real value = FE<0,HIERARCHIC>::shape_second_deriv(elem, order, i, j, p, add_p_level);
443}

◆ shape_second_deriv() [50/233]

RealGradient libMesh::FE< 0, L2_HIERARCHIC_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 464 of file fe_hierarchic_vec.C.

468{
469 return FE<0,HIERARCHIC_VEC>::shape_second_deriv(elem, order, i, j, p, add_p_level);
470}

◆ shape_second_deriv() [51/233]

RealGradient libMesh::FE< 1, HIERARCHIC_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 492 of file fe_hierarchic_vec.C.

496{
497 Real value = FE<1,HIERARCHIC>::shape_second_deriv(elem, order, i, j, p, add_p_level);
499}

◆ shape_second_deriv() [52/233]

RealGradient libMesh::FE< 1, L2_HIERARCHIC_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 520 of file fe_hierarchic_vec.C.

524{
525 return FE<1,HIERARCHIC_VEC>::shape_second_deriv(elem, order, i, j, p, add_p_level);
526}

◆ shape_second_deriv() [53/233]

RealGradient libMesh::FE< 2, HIERARCHIC_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 576 of file fe_hierarchic_vec.C.

580{
581 const Real value = FE<2,HIERARCHIC>::shape_second_deriv(elem, order, i/2, j, p, add_p_level);
582
583 switch( i%2 )
584 {
585 case 0:
587
588 case 1:
589 return libMesh::RealGradient( Real(0), value );
590
591 default:
592 libmesh_error_msg("i%2 must be either 0 or 1!");
593 }
594
595 //dummy
596 return libMesh::RealGradient();
597}

◆ shape_second_deriv() [54/233]

RealGradient libMesh::FE< 2, L2_HIERARCHIC_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 617 of file fe_hierarchic_vec.C.

621{
622 return FE<2,HIERARCHIC_VEC>::shape_second_deriv(elem, order, i, j, p, add_p_level);
623}

◆ shape_second_deriv() [55/233]

RealGradient libMesh::FE< 3, HIERARCHIC_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 681 of file fe_hierarchic_vec.C.

685{
686 const Real value = FE<3,HIERARCHIC>::shape_second_deriv(elem, order, i/3, j, p, add_p_level);
687
688 switch( i%3 )
689 {
690 case 0:
692
693 case 1:
694 return libMesh::RealGradient( Real(0), value );
695
696 case 2:
697 return libMesh::RealGradient( Real(0), Real(0), value );
698
699 default:
700 libmesh_error_msg("i%3 must be 0, 1, or 2!");
701 }
702
703 //dummy
704 return libMesh::RealGradient();
705}

◆ shape_second_deriv() [56/233]

RealGradient libMesh::FE< 3, L2_HIERARCHIC_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 726 of file fe_hierarchic_vec.C.

730{
731 return FE<3,HIERARCHIC_VEC>::shape_second_deriv(elem, order, i, j, p, add_p_level);
732}

◆ shape_second_deriv() [57/233]

Real libMesh::FE< 1, LAGRANGE >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 208 of file fe_lagrange_shape_1D.C.

214{
215 libmesh_assert(elem);
216
217 return fe_lagrange_1D_shape_second_deriv(order + add_p_level*elem->p_level(), i, j, p(0));
218}
Real fe_lagrange_1D_shape_second_deriv(const Order order, const unsigned int i, const unsigned int j, const Real xi)

◆ shape_second_deriv() [58/233]

Real libMesh::FE< 1, L2_LAGRANGE >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 223 of file fe_lagrange_shape_1D.C.

229{
230 libmesh_assert(elem);
231
232 return fe_lagrange_1D_shape_second_deriv(order + add_p_level*elem->p_level(), i, j, p(0));
233}

◆ shape_second_deriv() [59/233]

Real libMesh::FE< 2, LAGRANGE >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 257 of file fe_lagrange_shape_2D.C.

263{
264 libmesh_assert(elem);
265
266 // call the orientation-independent shape functions
267 return fe_lagrange_2D_shape_second_deriv<LAGRANGE>(elem->type(), elem, order + add_p_level*elem->p_level(), i, j, p);
268}

◆ shape_second_deriv() [60/233]

Real libMesh::FE< 2, L2_LAGRANGE >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 273 of file fe_lagrange_shape_2D.C.

279{
280 libmesh_assert(elem);
281
282 // call the orientation-independent shape functions
283 return fe_lagrange_2D_shape_second_deriv<L2_LAGRANGE>(elem->type(), elem, order + add_p_level*elem->p_level(), i, j, p);
284}

◆ shape_second_deriv() [61/233]

Real libMesh::FE< 3, LAGRANGE >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 600 of file fe_lagrange_shape_3D.C.

606{
607 libmesh_assert(elem);
608
609 // call the orientation-independent shape function derivatives
610 return fe_lagrange_3D_shape_second_deriv<LAGRANGE>
611 (elem->type(), order + add_p_level*elem->p_level(), elem, i, j, p);
612}

◆ shape_second_deriv() [62/233]

Real libMesh::FE< 3, L2_LAGRANGE >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 617 of file fe_lagrange_shape_3D.C.

623{
624 libmesh_assert(elem);
625
626 // call the orientation-independent shape function derivatives
627 return fe_lagrange_3D_shape_second_deriv<L2_LAGRANGE>
628 (elem->type(), order + add_p_level*elem->p_level(), elem, i, j, p);
629}

◆ shape_second_deriv() [63/233]

RealGradient libMesh::FE< 0, LAGRANGE_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 976 of file fe_lagrange_vec.C.

980{
981 Real value = FE<0,LAGRANGE>::shape_second_deriv( elem->type(), order + add_p_level*elem->p_level(), i, j, p);
983}

◆ shape_second_deriv() [64/233]

RealGradient libMesh::FE< 0, L2_LAGRANGE_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1003 of file fe_lagrange_vec.C.

1007{
1008 return FE<0,LAGRANGE_VEC>::shape_second_deriv(elem, order, i, j, p, add_p_level);
1009}

◆ shape_second_deriv() [65/233]

RealGradient libMesh::FE< 1, LAGRANGE_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1031 of file fe_lagrange_vec.C.

1035{
1036 Real value = FE<1,LAGRANGE>::shape_second_deriv( elem->type(), order + add_p_level*elem->p_level(), i, j, p);
1037 return libMesh::RealGradient( value );
1038}

◆ shape_second_deriv() [66/233]

RealGradient libMesh::FE< 1, L2_LAGRANGE_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1058 of file fe_lagrange_vec.C.

1062{
1063 return FE<1,LAGRANGE_VEC>::shape_second_deriv(elem, order, i, j, p, add_p_level);
1064}

◆ shape_second_deriv() [67/233]

RealGradient libMesh::FE< 2, LAGRANGE_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1114 of file fe_lagrange_vec.C.

1118{
1119 Real value = FE<2,LAGRANGE>::shape_second_deriv( elem->type(), order + add_p_level*elem->p_level(), i/2, j, p );
1120
1121 switch( i%2 )
1122 {
1123 case 0:
1124 return libMesh::RealGradient( value );
1125
1126 case 1:
1127 return libMesh::RealGradient( Real(0), value );
1128
1129 default:
1130 libmesh_error_msg("i%2 must be either 0 or 1!");
1131 }
1132
1133 //dummy
1134 return libMesh::RealGradient();
1135}

◆ shape_second_deriv() [68/233]

RealGradient libMesh::FE< 2, L2_LAGRANGE_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1155 of file fe_lagrange_vec.C.

1159{
1160 return FE<2,LAGRANGE_VEC>::shape_second_deriv(elem, order, i, j, p, add_p_level);
1161}

◆ shape_second_deriv() [69/233]

RealGradient libMesh::FE< 3, LAGRANGE_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1218 of file fe_lagrange_vec.C.

1222{
1223 Real value = FE<3,LAGRANGE>::shape_second_deriv( elem->type(), order + add_p_level*elem->p_level(), i/3, j, p );
1224
1225 switch( i%3 )
1226 {
1227 case 0:
1228 return libMesh::RealGradient( value );
1229
1230 case 1:
1231 return libMesh::RealGradient( Real(0), value );
1232
1233 case 2:
1234 return libMesh::RealGradient( Real(0), Real(0), value );
1235
1236 default:
1237 libmesh_error_msg("i%3 must be 0, 1, or 2!");
1238 }
1239
1240 //dummy
1241 return libMesh::RealGradient();
1242}

◆ shape_second_deriv() [70/233]

RealGradient libMesh::FE< 3, L2_LAGRANGE_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1262 of file fe_lagrange_vec.C.

1266{
1267 return FE<3,LAGRANGE_VEC>::shape_second_deriv(elem, order, i, j, p, add_p_level);
1268}

◆ shape_second_deriv() [71/233]

Real libMesh::FE< 1, MONOMIAL >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 211 of file fe_monomial_shape_1D.C.

217{
218 libmesh_assert(elem);
219
220 return FE<1,MONOMIAL>::shape_second_deriv(elem->type(),
221 order + add_p_level*elem->p_level(), i, j, p);
222}

◆ shape_second_deriv() [72/233]

Real libMesh::FE< 2, MONOMIAL >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 577 of file fe_monomial_shape_2D.C.

583{
584 libmesh_assert(elem);
585
586 // by default call the orientation-independent shape functions
587 return FE<2,MONOMIAL>::shape_second_deriv(elem->type(), order + add_p_level*elem->p_level(), i, j, p);
588}

◆ shape_second_deriv() [73/233]

Real libMesh::FE< 3, MONOMIAL >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1340 of file fe_monomial_shape_3D.C.

1346{
1347 libmesh_assert(elem);
1348
1349 // call the orientation-independent shape function derivatives
1350 return FE<3,MONOMIAL>::shape_second_deriv(elem->type(), order + add_p_level*elem->p_level(), i, j, p);
1351}

◆ shape_second_deriv() [74/233]

RealVectorValue libMesh::FE< 0, MONOMIAL_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 421 of file fe_monomial_vec.C.

427{
428 Real value = FE<0, MONOMIAL>::shape_second_deriv(
429 elem->type(), order + add_p_level*elem->p_level(), i, j, p);
431}

◆ shape_second_deriv() [75/233]

RealVectorValue libMesh::FE< 1, MONOMIAL_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 465 of file fe_monomial_vec.C.

471{
472 Real value = FE<1, MONOMIAL>::shape_second_deriv(
473 elem->type(), order + add_p_level*elem->p_level(), i, j, p);
475}

◆ shape_second_deriv() [76/233]

RealVectorValue libMesh::FE< 2, MONOMIAL_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 537 of file fe_monomial_vec.C.

543{
544 Real value = FE<2, MONOMIAL>::shape_second_deriv(
545 elem->type(), order + add_p_level*elem->p_level(), i / 2, j, p);
546
547 switch (i % 2)
548 {
549 case 0:
551
552 case 1:
554
555 default:
556 libmesh_error_msg("i%2 must be either 0 or 1!");
557 }
558
559 // dummy
561}

◆ shape_second_deriv() [77/233]

RealVectorValue libMesh::FE< 3, MONOMIAL_VEC >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 630 of file fe_monomial_vec.C.

636{
637 Real value = FE<3, MONOMIAL>::shape_second_deriv(
638 elem->type(), order + add_p_level*elem->p_level(), i / 3, j, p);
639
640 switch (i % 3)
641 {
642 case 0:
644
645 case 1:
647
648 case 2:
649 return libMesh::RealVectorValue(Real(0), Real(0), value);
650
651 default:
652 libmesh_error_msg("i%3 must be 0, 1, or 2!");
653 }
654
655 // dummy
657}

◆ shape_second_deriv() [78/233]

RealGradient libMesh::FE< 2, NEDELEC_ONE >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 2006 of file fe_nedelec_one_shape_2D.C.

2012{
2013#if LIBMESH_DIM > 1
2014 libmesh_assert(elem);
2015
2016 // j = 0 ==> d^2 phi / dxi^2
2017 // j = 1 ==> d^2 phi / dxi deta
2018 // j = 2 ==> d^2 phi / deta^2
2019 libmesh_assert_less (j, 3);
2020
2021 const Order totalorder = order + add_p_level*elem->p_level();
2022 libmesh_assert_less(i, n_dofs(elem->type(), totalorder));
2023
2024 const char sign = i >= totalorder * elem->n_edges() || elem->positive_edge_orientation(i / totalorder) ? 1 : -1;
2025 const unsigned int ii = sign > 0 ? i : (i / totalorder * 2 + 1) * totalorder - 1 - i;
2026
2027 const Real xi = p(0);
2028 const Real eta = p(1);
2029
2030 switch (totalorder)
2031 {
2032 // linear Nedelec (first kind) shape function second derivatives
2033 case FIRST:
2034 {
2035 switch (elem->type())
2036 {
2037 case QUAD8:
2038 case QUAD9:
2039 case TRI6:
2040 case TRI7:
2041 // All second derivatives for linear quads and triangles are zero.
2042 return RealGradient();
2043
2044 default:
2045 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
2046
2047 } // end switch (type)
2048 } // end case FIRST
2049
2050 // quadratic Nedelec (first kind) shape function second derivatives
2051 case SECOND:
2052 {
2053 switch (elem->type())
2054 {
2055 case QUAD8:
2056 case QUAD9:
2057 {
2058 // Even with a loose inverse_map tolerance we ought to
2059 // be nearly on the element interior in master
2060 // coordinates
2061 libmesh_assert_less_equal ( std::fabs(xi), 1.0+10*TOLERANCE );
2062 libmesh_assert_less_equal ( std::fabs(eta), 1.0+10*TOLERANCE );
2063
2064 const Real x = 0.5 * (xi + 1.0);
2065 const Real y = 0.5 * (eta + 1.0);
2066
2067 switch (j)
2068 {
2069 // d^2()/dxi^2
2070 case 0:
2071 {
2072 switch(ii)
2073 {
2074 case 0:
2075 case 1:
2076 case 4:
2077 case 5:
2078 case 9:
2079 case 10:
2080 return RealGradient();
2081 case 2:
2082 return sign * RealGradient( 0.0, 0.125*(-36.0*y+24.0) );
2083 case 3:
2084 return sign * RealGradient( 0.0, 0.125*( 36.0*y-12.0) );
2085 case 6:
2086 return sign * RealGradient( 0.0, 0.125*(-36.0*y+12.0) );
2087 case 7:
2088 return sign * RealGradient( 0.0, 0.125*( 36.0*y-24.0) );
2089 case 8:
2090 return RealGradient( 0.0, 0.75*(6.0*y-4.0) );
2091 case 11:
2092 return RealGradient( 0.0, 0.75*(-6.0*y+2.0) );
2093
2094 default:
2095 libmesh_error_msg("Invalid i = " << i);
2096 }
2097 } // j = 0
2098
2099 // d^2()/dxideta
2100 case 1:
2101 {
2102 switch(ii)
2103 {
2104 case 0:
2105 return sign * RealGradient( 0.125*(-36.0*y+24.0), 0.0 );
2106 case 1:
2107 return sign * RealGradient( 0.125*( 36.0*y-24.0), 0.0 );
2108 case 2:
2109 return sign * RealGradient( 0.0, 0.125*(-36.0*x+12.0) );
2110 case 3:
2111 return sign * RealGradient( 0.0, 0.125*( 36.0*x-12.0) );
2112 case 4:
2113 return sign * RealGradient( 0.125*(-36.0*y+12.0), 0.0 );
2114 case 5:
2115 return sign * RealGradient( 0.125*( 36.0*y-12.0), 0.0 );
2116 case 6:
2117 return sign * RealGradient( 0.0, 0.125*(-36.0*x+24.0) );
2118 case 7:
2119 return sign * RealGradient( 0.0, 0.125*( 36.0*x-24.0) );
2120 case 8:
2121 return RealGradient( 0.0, 0.75*(6.0*x-3.0) );
2122 case 9:
2123 return RealGradient( 0.75*(-6.0*y), 0.0 );
2124 case 10:
2125 return RealGradient( 0.75*(6.0*y), 0.0 );
2126 case 11:
2127 return RealGradient( 0.0, 0.75*(-6.0*x+3.0) );
2128
2129 default:
2130 libmesh_error_msg("Invalid i = " << i);
2131 }
2132 } // j = 1
2133
2134 // d^2()/deta^2
2135 case 2:
2136 {
2137 switch(ii)
2138 {
2139 case 2:
2140 case 3:
2141 case 6:
2142 case 7:
2143 case 8:
2144 case 11:
2145 return RealGradient();
2146 case 0:
2147 return sign * RealGradient( 0.125*(-36.0*x+24.0), 0.0 );
2148 case 1:
2149 return sign * RealGradient( 0.125*( 36.0*x-12.0), 0.0 );
2150 case 4:
2151 return sign * RealGradient( 0.125*(-36.0*x+12.0), 0.0 );
2152 case 5:
2153 return sign * RealGradient( 0.125*( 36.0*x-24.0), 0.0 );
2154 case 9:
2155 return RealGradient( 0.75*(-6.0*x+4.0), 0.0 );
2156 case 10:
2157 return RealGradient( 0.75*( 6.0*x-2.0), 0.0 );
2158
2159 default:
2160 libmesh_error_msg("Invalid i = " << i);
2161 }
2162 } // j = 2
2163
2164 default:
2165 libmesh_error_msg("Invalid j = " << j);
2166 }
2167 }
2168
2169 case TRI6:
2170 case TRI7:
2171 {
2172 switch (j)
2173 {
2174 // d^2()/dxi^2
2175 case 0:
2176 {
2177 switch(ii)
2178 {
2179 case 3:
2180 case 4:
2181 return RealGradient();
2182 case 0:
2183 return sign * RealGradient( 0.0, -16.0 );
2184 case 1:
2185 return sign * RealGradient( 0.0, 16.0 );
2186 case 2:
2187 return sign * RealGradient( 0.0, 16.0 );
2188 case 5:
2189 return sign * RealGradient( 0.0, -16.0 );
2190 case 6:
2191 return RealGradient( 0.0, 16.0 );
2192 case 7:
2193 return RealGradient( 0.0,-32.0 );
2194 default:
2195 libmesh_error_msg("Invalid i = " << i);
2196 }
2197 } // j = 0
2198
2199 // d^2()/dxideta
2200 case 1:
2201 {
2202 switch(ii)
2203 {
2204 case 0:
2205 return sign * RealGradient( 8.0, -8.0 );
2206 case 1:
2207 return sign * RealGradient( -8.0, 0.0 );
2208 case 2:
2209 return sign * RealGradient( -8.0, 0.0 );
2210 case 3:
2211 return sign * RealGradient( 0.0, 8.0 );
2212 case 4:
2213 return sign * RealGradient( 0.0, 8.0 );
2214 case 5:
2215 return sign * RealGradient( 8.0, -8.0 );
2216 case 6:
2217 return RealGradient( -8.0, 16.0 );
2218 case 7:
2219 return RealGradient( 16.0, -8.0 );
2220 default:
2221 libmesh_error_msg("Invalid i = " << i);
2222 }
2223 } // j = 1
2224
2225 // d^2()/deta^2
2226 case 2:
2227 {
2228 switch(ii)
2229 {
2230 case 1:
2231 case 2:
2232 return RealGradient();
2233 case 0:
2234 return sign * RealGradient( 16.0, 0.0 );
2235 case 3:
2236 return sign * RealGradient( -16.0, 0.0 );
2237 case 4:
2238 return sign * RealGradient( -16.0, 0.0 );
2239 case 5:
2240 return sign * RealGradient( 16.0, 0.0 );
2241 case 6:
2242 return RealGradient( -32.0, 0.0 );
2243 case 7:
2244 return RealGradient( 16.0, 0.0 );
2245 default:
2246 libmesh_error_msg("Invalid i = " << i);
2247 }
2248 } // j = 2
2249
2250 default:
2251 libmesh_error_msg("Invalid j = " << j);
2252 }
2253 }
2254
2255 default:
2256 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
2257
2258 } // end switch (type)
2259 } // end case SECOND
2260
2261 // cubic Nedelec (first kind) shape function second derivatives
2262 case THIRD:
2263 {
2264 switch (elem->type())
2265 {
2266 case QUAD8:
2267 case QUAD9:
2268 {
2269 switch (j)
2270 {
2271 // d^2()/dxi^2
2272 case 0:
2273 {
2274 switch(ii)
2275 {
2276 case 0:
2277 return sign * RealGradient(-135.*eta/4. - 105./4. + 135.*((eta + 1.)*(eta + 1.))/4. - 75.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8., 0.);
2278 case 1:
2279 return sign * RealGradient(135.*eta/8. + 105./8. - 135.*(eta + 1.)*(eta + 1.)/8. + 75.*((eta + 1.)*(eta + 1.)*(eta + 1.))/16., 0.);
2280 case 2:
2281 return sign * RealGradient(-135.*eta/4. - 105./4. + 135.*((eta + 1.)*(eta + 1.))/4. - 75.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8., 0.);
2282 case 3:
2283 return sign * RealGradient(0., 54.*eta + 135.*xi/4. - 135.*(eta + 1.)*(xi + 1.)/2. + 225.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 243./4. - 45.*(eta + 1.)*(eta + 1.)/2.);
2284 case 4:
2285 return sign * RealGradient(0., -45.*eta/2. - 45.*xi/8. + 225.*(eta + 1.)*(xi + 1.)/8. - 225.*(xi + 1.)*(eta + 1.)*(eta + 1.)/16. - 189./8. + 45.*((eta + 1.)*(eta + 1.))/4.);
2286 case 5:
2287 return sign * RealGradient(0., 36.*eta + 45.*xi/4. - 45.*(eta + 1.)*(xi + 1.) + 225.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 153./4. - 45.*(eta + 1.)*(eta + 1.)/2.);
2288 case 6:
2289 return sign * RealGradient(-45.*eta/4. - 45./4. + 45.*((eta + 1.)*(eta + 1.))/2. - 75.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8., 0.);
2290 case 7:
2291 return sign * RealGradient(45.*eta/8. + 45./8. - 45.*(eta + 1.)*(eta + 1.)/4. + 75.*((eta + 1.)*(eta + 1.)*(eta + 1.))/16., 0.);
2292 case 8:
2293 return sign * RealGradient(-45.*eta/4. - 45./4. + 45.*((eta + 1.)*(eta + 1.))/2. - 75.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8., 0.);
2294 case 9:
2295 return sign * RealGradient(0., 54.*eta + 45.*xi/4. - 45.*(eta + 1.)*(xi + 1.) + 225.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 207./4. - 135.*(eta + 1.)*(eta + 1.)/4.);
2296 case 10:
2297 return sign * RealGradient(0., -135.*eta/4. - 45.*xi/8. + 225.*(eta + 1.)*(xi + 1.)/8. - 225.*(xi + 1.)*(eta + 1.)*(eta + 1.)/16. - 261./8. + 135.*((eta + 1.)*(eta + 1.))/8.);
2298 case 11:
2299 return sign * RealGradient(0., 81.*eta + 135.*xi/4. - 135.*(eta + 1.)*(xi + 1.)/2. + 225.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 297./4. - 135.*(eta + 1.)*(eta + 1.)/4.);
2300 case 12:
2301 return RealGradient(0., 81.*eta + 135.*xi/4. - 135.*(eta + 1.)*(xi + 1.)/2. + 225.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 297./4. - 135.*(eta + 1.)*(eta + 1.)/4.);
2302 case 13:
2303 return RealGradient(0., -54.*eta - 135.*xi/4. + 135.*(eta + 1.)*(xi + 1.)/2. - 225.*(xi + 1.)*(eta + 1.)*(eta + 1.)/8. - 243./4. + 45.*((eta + 1.)*(eta + 1.))/2.);
2304 case 14:
2305 return RealGradient(-30.*eta - 30. + 135.*((eta + 1.)*(eta + 1.))/4. - 75.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8., 0.);
2306 case 15:
2307 return RealGradient(15.*eta/2. + 15./2. - 45.*(eta + 1.)*(eta + 1.)/2. + 75.*((eta + 1.)*(eta + 1.)*(eta + 1.))/8., 0.);
2308 case 16:
2309 return RealGradient(-30.*eta - 30. + 135.*((eta + 1.)*(eta + 1.))/4. - 75.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8., 0.);
2310 case 17:
2311 return RealGradient(15.*eta/2. + 15./2. - 45.*(eta + 1.)*(eta + 1.)/2. + 75.*((eta + 1.)*(eta + 1.)*(eta + 1.))/8., 0.);
2312 case 18:
2313 return RealGradient(0., 54.*eta + 45.*xi/4. - 45.*(eta + 1.)*(xi + 1.) + 225.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 207./4. - 135.*(eta + 1.)*(eta + 1.)/4.);
2314 case 19:
2315 return RealGradient(0., -36.*eta - 45.*xi/4. + 45.*(eta + 1.)*(xi + 1.) - 225.*(xi + 1.)*(eta + 1.)*(eta + 1.)/8. - 153./4. + 45.*((eta + 1.)*(eta + 1.))/2.);
2316 case 20:
2317 return RealGradient(0., 0.);
2318 case 21:
2319 return RealGradient(0., 15.*xi/4. - 3./4.);
2320 case 22:
2321 return RealGradient(0., -15.*xi/4. - 3./4.);
2322 case 23:
2323 return RealGradient(0., 0.);
2324 default:
2325 libmesh_error_msg("Invalid i = " << i);
2326 }
2327 } // j = 0
2328
2329 // d^2()/dxideta
2330 case 1:
2331 {
2332 switch(ii)
2333 {
2334 case 0:
2335 return sign * RealGradient(-81.*eta - 135.*xi/4. + 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 297./4. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.)), 0.);
2336 case 1:
2337 return sign * RealGradient(135.*eta/4. + 135.*xi/8. - 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 135./4. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)/4., 0.);
2338 case 2:
2339 return sign * RealGradient(-54.*eta - 135.*xi/4. + 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 243./4. + 90.*((eta + 1.)*(eta + 1.)/(2.*2.)), 0.);
2340 case 3:
2341 return sign * RealGradient(0., 45.*eta/4. + 54.*xi - 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 207./4. - 135.*(xi + 1.)*(xi + 1.)/(2.*2.));
2342 case 4:
2343 return sign * RealGradient(0., -45.*eta/8. - 45.*xi/2. + 90.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. - 45./2. + 225.*((xi + 1.)*(xi + 1.)/(2.*2.))/4.);
2344 case 5:
2345 return sign * RealGradient(0., 45.*eta/4. + 36.*xi - 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 153./4. - 90.*(xi + 1.)*(xi + 1.)/(2.*2.));
2346 case 6:
2347 return sign * RealGradient(-36.*eta - 45.*xi/4. + 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 153./4. + 90.*((eta + 1.)*(eta + 1.)/(2.*2.)), 0.);
2348 case 7:
2349 return sign * RealGradient(45.*eta/2. + 45.*xi/8. - 90.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 45./2. - 225.*(eta + 1.)*(eta + 1.)/(2.*2.)/4., 0.);
2350 case 8:
2351 return sign * RealGradient(-54.*eta - 45.*xi/4. + 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 207./4. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.)), 0.);
2352 case 9:
2353 return sign * RealGradient(0., 135.*eta/4. + 54.*xi - 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 243./4. - 90.*(xi + 1.)*(xi + 1.)/(2.*2.));
2354 case 10:
2355 return sign * RealGradient(0., -135.*eta/8. - 135.*xi/4. + 135.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. - 135./4. + 225.*((xi + 1.)*(xi + 1.)/(2.*2.))/4.);
2356 case 11:
2357 return sign * RealGradient(0., 135.*eta/4. + 81.*xi - 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 297./4. - 135.*(xi + 1.)*(xi + 1.)/(2.*2.));
2358 case 12:
2359 return RealGradient(0., 30.*eta + 81.*xi - 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 75. - 135.*(xi + 1.)*(xi + 1.)/(2.*2.));
2360 case 13:
2361 return RealGradient(0., -15.*eta/2. - 54.*xi + 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 105./2. + 135.*((xi + 1.)*(xi + 1.)/(2.*2.)));
2362 case 14:
2363 return RealGradient(-81.*eta - 30.*xi + 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 75. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.)), 0.);
2364 case 15:
2365 return RealGradient(54.*eta + 15.*xi/2. - 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 105./2. - 135.*(eta + 1.)*(eta + 1.)/(2.*2.), 0.);
2366 case 16:
2367 return RealGradient(-54.*eta - 30.*xi + 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 60. + 90.*((eta + 1.)*(eta + 1.)/(2.*2.)), 0.);
2368 case 17:
2369 return RealGradient(36.*eta + 15.*xi/2. - 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 75./2. - 90.*(eta + 1.)*(eta + 1.)/(2.*2.), 0.);
2370 case 18:
2371 return RealGradient(0., 30.*eta + 54.*xi - 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 60. - 90.*(xi + 1.)*(xi + 1.)/(2.*2.));
2372 case 19:
2373 return RealGradient(0., -15.*eta/2. - 36.*xi + 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 75./2. + 90.*((xi + 1.)*(xi + 1.)/(2.*2.)));
2374 case 20:
2375 return RealGradient(0., 0.);
2376 case 21:
2377 return RealGradient(0., 0.);
2378 case 22:
2379 return RealGradient(0., 0.);
2380 case 23:
2381 return RealGradient(0., 0.);
2382 default:
2383 libmesh_error_msg("Invalid i = " << i);
2384 }
2385 } // j = 1
2386
2387 // d^2()/deta^2
2388 case 2:
2389 {
2390 switch(ii)
2391 {
2392 case 0:
2393 return sign * RealGradient(-135.*eta/4. - 81.*xi + 135.*(eta + 1.)*(xi + 1.)/2. - 225.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 297./4. + 135.*((xi + 1.)*(xi + 1.))/4., 0.);
2394 case 1:
2395 return sign * RealGradient(45.*eta/8. + 135.*xi/4. - 225.*(eta + 1.)*(xi + 1.)/8. + 225.*(eta + 1.)*((xi + 1.)*(xi + 1.))/16. + 261./8. - 135.*(xi + 1.)*(xi + 1.)/8., 0.);
2396 case 2:
2397 return sign * RealGradient(-45.*eta/4. - 54.*xi + 45.*(eta + 1.)*(xi + 1.) - 225.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 207./4. + 135.*((xi + 1.)*(xi + 1.))/4., 0.);
2398 case 3:
2399 return sign * RealGradient(0., 45.*xi/4. + 45./4. - 45.*(xi + 1.)*(xi + 1.)/2. + 75.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8.);
2400 case 4:
2401 return sign * RealGradient(0., -45.*xi/8. - 45./8. + 45.*((xi + 1.)*(xi + 1.))/4. - 75.*(xi + 1.)*(xi + 1.)*(xi + 1.)/16.);
2402 case 5:
2403 return sign * RealGradient(0., 45.*xi/4. + 45./4. - 45.*(xi + 1.)*(xi + 1.)/2. + 75.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8.);
2404 case 6:
2405 return sign * RealGradient(-45.*eta/4. - 36.*xi + 45.*(eta + 1.)*(xi + 1.) - 225.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 153./4. + 45.*((xi + 1.)*(xi + 1.))/2., 0.);
2406 case 7:
2407 return sign * RealGradient(45.*eta/8. + 45.*xi/2. - 225.*(eta + 1.)*(xi + 1.)/8. + 225.*(eta + 1.)*((xi + 1.)*(xi + 1.))/16. + 189./8. - 45.*(xi + 1.)*(xi + 1.)/4., 0.);
2408 case 8:
2409 return sign * RealGradient(-135.*eta/4. - 54.*xi + 135.*(eta + 1.)*(xi + 1.)/2. - 225.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 243./4. + 45.*((xi + 1.)*(xi + 1.))/2., 0.);
2410 case 9:
2411 return sign * RealGradient(0., 135.*xi/4. + 105./4. - 135.*(xi + 1.)*(xi + 1.)/4. + 75.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8.);
2412 case 10:
2413 return sign * RealGradient(0., -135.*xi/8. - 105./8. + 135.*((xi + 1.)*(xi + 1.))/8. - 75.*(xi + 1.)*(xi + 1.)*(xi + 1.)/16.);
2414 case 11:
2415 return sign * RealGradient(0., 135.*xi/4. + 105./4. - 135.*(xi + 1.)*(xi + 1.)/4. + 75.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8.);
2416 case 12:
2417 return RealGradient(0., 30.*xi + 30. - 135.*(xi + 1.)*(xi + 1.)/4. + 75.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8.);
2418 case 13:
2419 return RealGradient(0., -15.*xi/2. - 15./2. + 45.*((xi + 1.)*(xi + 1.))/2. - 75.*(xi + 1.)*(xi + 1.)*(xi + 1.)/8.);
2420 case 14:
2421 return RealGradient(-135.*eta/4. - 81.*xi + 135.*(eta + 1.)*(xi + 1.)/2. - 225.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 297./4. + 135.*((xi + 1.)*(xi + 1.))/4., 0.);
2422 case 15:
2423 return RealGradient(135.*eta/4. + 54.*xi - 135.*(eta + 1.)*(xi + 1.)/2. + 225.*(eta + 1.)*((xi + 1.)*(xi + 1.))/8. + 243./4. - 45.*(xi + 1.)*(xi + 1.)/2., 0.);
2424 case 16:
2425 return RealGradient(-45.*eta/4. - 54.*xi + 45.*(eta + 1.)*(xi + 1.) - 225.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 207./4. + 135.*((xi + 1.)*(xi + 1.))/4., 0.);
2426 case 17:
2427 return RealGradient(45.*eta/4. + 36.*xi - 45.*(eta + 1.)*(xi + 1.) + 225.*(eta + 1.)*((xi + 1.)*(xi + 1.))/8. + 153./4. - 45.*(xi + 1.)*(xi + 1.)/2., 0.);
2428 case 18:
2429 return RealGradient(0., 30.*xi + 30. - 135.*(xi + 1.)*(xi + 1.)/4. + 75.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8.);
2430 case 19:
2431 return RealGradient(0., -15.*xi/2. - 15./2. + 45.*((xi + 1.)*(xi + 1.))/2. - 75.*(xi + 1.)*(xi + 1.)*(xi + 1.)/8.);
2432 case 20:
2433 return RealGradient(15.*eta/4. - 3./4., 0.);
2434 case 21:
2435 return RealGradient(0., 0.);
2436 case 22:
2437 return RealGradient(0., 0.);
2438 case 23:
2439 return RealGradient(-15.*eta/4. - 3./4., 0.);
2440 default:
2441 libmesh_error_msg("Invalid i = " << i);
2442 }
2443 } // j = 2
2444
2445 default:
2446 libmesh_error_msg("Invalid j = " << j);
2447 }
2448 }
2449
2450 case TRI6:
2451 case TRI7:
2452 {
2453 switch (j)
2454 {
2455 // d^2()/dxi^2
2456 case 0:
2457 {
2458 switch(ii)
2459 {
2460 case 0:
2461 return sign * RealGradient(60. - 90.*eta, 180.*eta + 270.*xi - 120.);
2462 case 1:
2463 return sign * RealGradient(45.*eta - 30., -45.*eta - 135.*xi + 105./2.);
2464 case 2:
2465 return sign * RealGradient(60. - 90.*eta, 270.*xi - 90.);
2466 case 3:
2467 return sign * RealGradient(-90.*eta, 270.*xi - 90.);
2468 case 4:
2469 return sign * RealGradient(-45.*eta/2., 90.*eta + 135.*xi/2. - 75./2.);
2470 case 5:
2471 return sign * RealGradient(0., 0.);
2472 case 6:
2473 return sign * RealGradient(0., 0.);
2474 case 7:
2475 return sign * RealGradient(-45.*eta/2., -45.*eta + 135.*xi/2. - 30.);
2476 case 8:
2477 return sign * RealGradient(-90.*eta, 180.*eta + 270.*xi - 180.);
2478 case 9:
2479 return RealGradient(180.*eta, -720.*eta - 540.*xi + 300.);
2480 case 10:
2481 return RealGradient(-540.*eta, 720.*eta + 1620.*xi - 900.);
2482 case 11:
2483 return RealGradient(-360.*eta, 720.*eta + 1080.*xi - 480.);
2484 case 12:
2485 return RealGradient(540.*eta, -360.*eta - 1620.*xi + 720.);
2486 case 13:
2487 return RealGradient(0., 360.*eta - 60.);
2488 case 14:
2489 return RealGradient(0., 120. - 720.*eta);
2490 default:
2491 libmesh_error_msg("Invalid i = " << i);
2492 }
2493 } // j = 0
2494
2495 // d^2()/dxideta
2496 case 1:
2497 {
2498 switch(ii)
2499 {
2500 case 0:
2501 return sign * RealGradient(-180.*eta - 90.*xi + 120., 90.*eta + 180.*xi - 60.);
2502 case 1:
2503 return sign * RealGradient(45.*eta + 45.*xi - 75./2., 45.*eta/2. - 45.*xi);
2504 case 2:
2505 return sign * RealGradient(30. - 90.*xi, 0.);
2506 case 3:
2507 return sign * RealGradient(30. - 90.*xi, 0.);
2508 case 4:
2509 return sign * RealGradient(-90.*eta - 45.*xi/2. + 45./2., 45.*eta/2. + 90.*xi - 45./2.);
2510 case 5:
2511 return sign * RealGradient(0., 90.*eta - 30.);
2512 case 6:
2513 return sign * RealGradient(0., 90.*eta - 30.);
2514 case 7:
2515 return sign * RealGradient(45.*eta - 45.*xi/2., -45.*eta - 45.*xi + 75./2.);
2516 case 8:
2517 return sign * RealGradient(-180.*eta - 90.*xi + 60., 90.*eta + 180.*xi - 120.);
2518 case 9:
2519 return RealGradient(720.*eta + 180.*xi - 300., -540.*eta - 720.*xi + 300.);
2520 case 10:
2521 return RealGradient(-720.*eta - 540.*xi + 300., 180.*eta + 720.*xi - 300.);
2522 case 11:
2523 return RealGradient(-720.*eta - 360.*xi + 360., 720.*xi - 120.);
2524 case 12:
2525 return RealGradient(360.*eta + 540.*xi - 240., 60. - 360.*xi);
2526 case 13:
2527 return RealGradient(60. - 360.*eta, 540.*eta + 360.*xi - 240.);
2528 case 14:
2529 return RealGradient(720.*eta - 120., -360.*eta - 720.*xi + 360.);
2530 default:
2531 libmesh_error_msg("Invalid i = " << i);
2532 }
2533 } // j = 1
2534
2535 // d^2()/deta^2
2536 case 2:
2537 {
2538 switch(ii)
2539 {
2540 case 0:
2541 return sign * RealGradient(-270.*eta - 180.*xi + 180., 90.*xi);
2542 case 1:
2543 return sign * RealGradient(-135.*eta/2. + 45.*xi + 30., 45.*xi/2.);
2544 case 2:
2545 return sign * RealGradient(0., 0.);
2546 case 3:
2547 return sign * RealGradient(0., 0.);
2548 case 4:
2549 return sign * RealGradient(-135.*eta/2. - 90.*xi + 75./2., 45.*xi/2.);
2550 case 5:
2551 return sign * RealGradient(90. - 270.*eta, 90.*xi);
2552 case 6:
2553 return sign * RealGradient(90. - 270.*eta, 90.*xi - 60.);
2554 case 7:
2555 return sign * RealGradient(135.*eta + 45.*xi - 105./2., 30. - 45.*xi);
2556 case 8:
2557 return sign * RealGradient(-270.*eta - 180.*xi + 120., 90.*xi - 60.);
2558 case 9:
2559 return RealGradient(1620.*eta + 720.*xi - 900., -540.*xi);
2560 case 10:
2561 return RealGradient(-540.*eta - 720.*xi + 300., 180.*xi);
2562 case 11:
2563 return RealGradient(120. - 720.*xi, 0.);
2564 case 12:
2565 return RealGradient(360.*xi - 60., 0.);
2566 case 13:
2567 return RealGradient(-1620.*eta - 360.*xi + 720., 540.*xi);
2568 case 14:
2569 return RealGradient(1080.*eta + 720.*xi - 480., -360.*xi);
2570 default:
2571 libmesh_error_msg("Invalid i = " << i);
2572 }
2573 } // j = 2
2574
2575 default:
2576 libmesh_error_msg("Invalid j = " << j);
2577 }
2578 }
2579
2580 default:
2581 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
2582 } // end switch (type)
2583 } // end case THIRD
2584
2585 // quartic Nedelec (first kind) shape function second derivatives
2586 case FOURTH:
2587 {
2588 switch (elem->type())
2589 {
2590 case QUAD8:
2591 case QUAD9:
2592 {
2593 switch (j)
2594 {
2595 // d^2()/dxi^2
2596 case 0:
2597 {
2598 switch(ii)
2599 {
2600 case 0:
2601 return sign * RealGradient(-480.*eta - 105.*xi/2. + 420.*(eta + 1.)*(xi + 1.) - 1575.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. + 525.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 3675.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. - 945./2. + 900.*((eta + 1.)*(eta + 1.)) - 600.*(eta + 1.)*(eta + 1.)*(eta + 1.) + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4., 0.);
2602 case 1:
2603 return sign * RealGradient(1720.*eta/9. + 385.*xi/18. - 1540.*(eta + 1.)*(xi + 1.)/9. + 1925.*(xi + 1.)*((eta + 1.)*(eta + 1.))/6. - 1925.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/9. + 13475.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/288. + 3395./18. - 1075.*(eta + 1.)*(eta + 1.)/3. + 2150.*((eta + 1.)*(eta + 1.)*(eta + 1.))/9. - 7525.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/144., 0.);
2604 case 2:
2605 return sign * RealGradient(-1360.*eta/9. - 385.*xi/18. + 1540.*(eta + 1.)*(xi + 1.)/9. - 1925.*(xi + 1.)*(eta + 1.)*(eta + 1.)/6. + 1925.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/9. - 13475.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/288. - 2765./18. + 850.*((eta + 1.)*(eta + 1.))/3. - 1700.*(eta + 1.)*(eta + 1.)*(eta + 1.)/9. + 2975.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/72., 0.);
2606 case 3:
2607 return sign * RealGradient(360.*eta + 105.*xi/2. - 420.*(eta + 1.)*(xi + 1.) + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.))/2. - 525.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.) + 3675.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. + 735./2. - 675.*(eta + 1.)*(eta + 1.) + 450.*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16., 0.);
2608 case 4:
2609 return sign * RealGradient(0., -450.*eta - 360.*xi + 1350.*(eta + 1.)*(xi + 1.) - 1575.*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. - 1350.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 690. + 450.*((eta + 1.)*(eta + 1.)) + 1575.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. + 210.*((xi + 1.)*(xi + 1.)) - 3675.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 525.*(eta + 1.)*(eta + 1.)*(eta + 1.)/4.);
2610 case 5:
2611 return sign * RealGradient(0., 475.*eta/3. + 170.*xi/3. - 475.*(eta + 1.)*(xi + 1.) + 3325.*(eta + 1.)*((xi + 1.)*(xi + 1.))/12. + 1075.*(xi + 1.)*((eta + 1.)*(eta + 1.))/2. - 1925.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/12. + 1765./9. - 1075.*(eta + 1.)*(eta + 1.)/6. - 7525.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/24. - 595.*(xi + 1.)*(xi + 1.)/18. + 13475.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/144. + 1925.*((eta + 1.)*(eta + 1.)*(eta + 1.))/36.);
2612 case 6:
2613 return sign * RealGradient(0., -250.*eta/3. - 80.*xi/3. + 250.*(eta + 1.)*(xi + 1.) - 875.*(eta + 1.)*(xi + 1.)*(xi + 1.)/6. - 425.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 1925.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/12. - 910./9. + 425.*((eta + 1.)*(eta + 1.))/3. + 2975.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/12. + 140.*((xi + 1.)*(xi + 1.))/9. - 13475.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/144. - 1925.*(eta + 1.)*(eta + 1.)*(eta + 1.)/36.);
2614 case 7:
2615 return sign * RealGradient(0., 225.*eta + 90.*xi - 675.*(eta + 1.)*(xi + 1.) + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.))/4. + 2025.*(xi + 1.)*((eta + 1.)*(eta + 1.))/2. - 1575.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 285. - 675.*(eta + 1.)*(eta + 1.)/2. - 4725.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 105.*(xi + 1.)*(xi + 1.)/2. + 3675.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.))/4.);
2616 case 8:
2617 return sign * RealGradient(-90.*eta + 105.*(eta + 1.)*(xi + 1.) - 1575.*(xi + 1.)*(eta + 1.)*(eta + 1.)/4. + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 3675.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. - 90. + 675.*((eta + 1.)*(eta + 1.))/2. - 675.*(eta + 1.)*(eta + 1.)*(eta + 1.)/2. + 1575.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/16., 0.);
2618 case 9:
2619 return sign * RealGradient(340.*eta/9. - 385.*(eta + 1.)*(xi + 1.)/9. + 1925.*(xi + 1.)*((eta + 1.)*(eta + 1.))/12. - 1925.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/12. + 13475.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/288. + 340./9. - 425.*(eta + 1.)*(eta + 1.)/3. + 425.*((eta + 1.)*(eta + 1.)*(eta + 1.))/3. - 2975.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/72., 0.);
2620 case 10:
2621 return sign * RealGradient(-430.*eta/9. + 385.*(eta + 1.)*(xi + 1.)/9. - 1925.*(xi + 1.)*(eta + 1.)*(eta + 1.)/12. + 1925.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/12. - 13475.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/288. - 430./9. + 1075.*((eta + 1.)*(eta + 1.))/6. - 1075.*(eta + 1.)*(eta + 1.)*(eta + 1.)/6. + 7525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/144., 0.);
2622 case 11:
2623 return sign * RealGradient(120.*eta - 105.*(eta + 1.)*(xi + 1.) + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.))/4. - 1575.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 3675.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. + 120. - 450.*(eta + 1.)*(eta + 1.) + 450.*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 525.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4., 0.);
2624 case 12:
2625 return sign * RealGradient(0., -450.*eta - 120.*xi + 900.*(eta + 1.)*(xi + 1.) - 1575.*(eta + 1.)*(xi + 1.)*(xi + 1.)/4. - 1350.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 525.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 510. + 675.*((eta + 1.)*(eta + 1.)) + 4725.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. + 105.*((xi + 1.)*(xi + 1.))/2. - 3675.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 525.*(eta + 1.)*(eta + 1.)*(eta + 1.)/2.);
2626 case 13:
2627 return sign * RealGradient(0., 500.*eta/3. + 320.*xi/9. - 1000.*(eta + 1.)*(xi + 1.)/3. + 875.*(eta + 1.)*((xi + 1.)*(xi + 1.))/6. + 1700.*(xi + 1.)*((eta + 1.)*(eta + 1.))/3. - 1925.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/9. + 1660./9. - 850.*(eta + 1.)*(eta + 1.)/3. - 2975.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/12. - 140.*(xi + 1.)*(xi + 1.)/9. + 13475.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/144. + 1925.*((eta + 1.)*(eta + 1.)*(eta + 1.))/18.);
2628 case 14:
2629 return sign * RealGradient(0., -950.*eta/3. - 680.*xi/9. + 1900.*(eta + 1.)*(xi + 1.)/3. - 3325.*(eta + 1.)*(xi + 1.)*(xi + 1.)/12. - 2150.*(xi + 1.)*(eta + 1.)*(eta + 1.)/3. + 1925.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/9. - 3190./9. + 1075.*((eta + 1.)*(eta + 1.))/3. + 7525.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/24. + 595.*((xi + 1.)*(xi + 1.))/18. - 13475.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/144. - 1925.*(eta + 1.)*(eta + 1.)*(eta + 1.)/18.);
2630 case 15:
2631 return sign * RealGradient(0., 900.*eta + 480.*xi - 1800.*(eta + 1.)*(xi + 1.) + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. + 1800.*(xi + 1.)*((eta + 1.)*(eta + 1.)) - 525.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.) + 1140. - 900.*(eta + 1.)*(eta + 1.) - 1575.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. - 210.*(xi + 1.)*(xi + 1.) + 3675.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.))/2.);
2632 case 16:
2633 return RealGradient(0., 870.*eta + 480.*xi - 1800.*(eta + 1.)*(xi + 1.) + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. + 1800.*(xi + 1.)*((eta + 1.)*(eta + 1.)) - 525.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.) + 1118. - 870.*(eta + 1.)*(eta + 1.) - 1575.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. - 210.*(xi + 1.)*(xi + 1.) + 3675.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. + 1015.*((eta + 1.)*(eta + 1.)*(eta + 1.))/4.);
2634 case 17:
2635 return RealGradient(0., 420.*eta + 360.*xi - 1350.*(eta + 1.)*(xi + 1.) + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. + 1350.*(xi + 1.)*((eta + 1.)*(eta + 1.)) - 1575.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 668. - 420.*(eta + 1.)*(eta + 1.) - 1575.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. - 210.*(xi + 1.)*(xi + 1.) + 3675.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. + 245.*((eta + 1.)*(eta + 1.)*(eta + 1.))/2.);
2636 case 18:
2637 return RealGradient(0., 60.*eta + 44. - 60.*(eta + 1.)*(eta + 1.) + 35.*((eta + 1.)*(eta + 1.)*(eta + 1.))/2.);
2638 case 19:
2639 return RealGradient(-390.*eta + 1365.*(eta + 1.)*(xi + 1.)/4. - 3045.*(xi + 1.)*(eta + 1.)*(eta + 1.)/4. + 525.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 3675.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. - 390. + 870.*((eta + 1.)*(eta + 1.)) - 600.*(eta + 1.)*(eta + 1.)*(eta + 1.) + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4., 0.);
2640 case 20:
2641 return RealGradient(-90.*eta + 315.*(eta + 1.)*(xi + 1.)/4. - 735.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 3675.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. - 90. + 420.*((eta + 1.)*(eta + 1.)) - 450.*(eta + 1.)*(eta + 1.)*(eta + 1.) + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4., 0.);
2642 case 21:
2643 return RealGradient(-120.*eta + 105.*(eta + 1.)*(xi + 1.) - 105.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. - 120. + 60.*((eta + 1.)*(eta + 1.)), 0.);
2644 case 22:
2645 return RealGradient(585.*eta/2. - 1365.*(eta + 1.)*(xi + 1.)/4. + 3045.*(xi + 1.)*((eta + 1.)*(eta + 1.))/4. - 525.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.) + 3675.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. + 585./2. - 1305.*(eta + 1.)*(eta + 1.)/2. + 450.*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16., 0.);
2646 case 23:
2647 return RealGradient(135.*eta/2. - 315.*(eta + 1.)*(xi + 1.)/4. + 735.*(xi + 1.)*((eta + 1.)*(eta + 1.))/2. - 1575.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 3675.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. + 135./2. - 315.*(eta + 1.)*(eta + 1.) + 675.*((eta + 1.)*(eta + 1.)*(eta + 1.))/2. - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16., 0.);
2648 case 24:
2649 return RealGradient(90.*eta - 105.*(eta + 1.)*(xi + 1.) + 105.*(xi + 1.)*((eta + 1.)*(eta + 1.))/2. + 90. - 45.*(eta + 1.)*(eta + 1.), 0.);
2650 case 25:
2651 return RealGradient(0., -435.*eta - 120.*xi + 900.*(eta + 1.)*(xi + 1.) - 1575.*(eta + 1.)*(xi + 1.)*(xi + 1.)/4. - 1350.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 525.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 497. + 1305.*((eta + 1.)*(eta + 1.))/2. + 4725.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. + 105.*((xi + 1.)*(xi + 1.))/2. - 3675.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 1015.*(eta + 1.)*(eta + 1.)*(eta + 1.)/4.);
2652 case 26:
2653 return RealGradient(0., -210.*eta - 90.*xi + 675.*(eta + 1.)*(xi + 1.) - 1575.*(eta + 1.)*(xi + 1.)*(xi + 1.)/4. - 2025.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 272. + 315.*((eta + 1.)*(eta + 1.)) + 4725.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. + 105.*((xi + 1.)*(xi + 1.))/2. - 3675.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 245.*(eta + 1.)*(eta + 1.)*(eta + 1.)/2.);
2654 case 27:
2655 return RealGradient(0., -30.*eta - 26. + 45.*((eta + 1.)*(eta + 1.)) - 35.*(eta + 1.)*(eta + 1.)*(eta + 1.)/2.);
2656 case 28:
2657 return RealGradient(0., 0.);
2658 case 29:
2659 return RealGradient(0., 0.);
2660 case 30:
2661 return RealGradient(0., 171.*eta/4. + 120.*xi - 90.*(eta + 1.)*(xi + 1.) + 315.*(eta + 1.)*((xi + 1.)*(xi + 1.))/8. + 423./4. - 105.*(xi + 1.)*(xi + 1.)/2.);
2662 case 31:
2663 return RealGradient(0., -171.*eta/4. - 60.*xi + 90.*(eta + 1.)*(xi + 1.) - 315.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 297./4. + 105.*((xi + 1.)*(xi + 1.))/4.);
2664 case 32:
2665 return RealGradient(0., 81.*eta/4. + 90.*xi - 135.*(eta + 1.)*(xi + 1.)/2. + 315.*(eta + 1.)*((xi + 1.)*(xi + 1.))/8. + 333./4. - 105.*(xi + 1.)*(xi + 1.)/2.);
2666 case 33:
2667 return RealGradient(0., -81.*eta/4. - 45.*xi + 135.*(eta + 1.)*(xi + 1.)/2. - 315.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 207./4. + 105.*((xi + 1.)*(xi + 1.))/4.);
2668 case 34:
2669 return RealGradient(0., 0.);
2670 case 35:
2671 return RealGradient(0., 0.);
2672 case 36:
2673 return RealGradient(0., 9.*eta/2. - 3./2.);
2674 case 37:
2675 return RealGradient(0., 0.);
2676 case 38:
2677 return RealGradient(0., 0.);
2678 case 39:
2679 return RealGradient(0., -9.*eta/2. - 3./2.);
2680 default:
2681 libmesh_error_msg("Invalid i = " << i);
2682 }
2683 } // j = 0
2684
2685 // d^2()/dxideta
2686 case 1:
2687 {
2688 switch(ii)
2689 {
2690 case 0:
2691 return sign * RealGradient(-900.*eta - 480.*xi + 7200.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 6300.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 14400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 8400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1140. + 3600.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 12600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 840.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7350.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 2100.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
2692 case 1:
2693 return sign * RealGradient(950.*eta/3. + 1720.*xi/9. - 8600.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. + 7700.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/3. + 17200.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/3. - 30100.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 1270./3. - 3800.*(eta + 1.)*(eta + 1.)/(2.*2.)/3. - 15400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. - 3080.*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 26950.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. + 6650.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9., 0.);
2694 case 2:
2695 return sign * RealGradient(-500.*eta/3. - 1360.*xi/9. + 6800.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. - 7700.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. - 13600.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/3. + 23800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 820./3. + 2000.*((eta + 1.)*(eta + 1.)/(2.*2.))/3. + 15400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. + 3080.*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 26950.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. - 3500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9., 0.);
2696 case 3:
2697 return sign * RealGradient(450.*eta + 360.*xi - 5400.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 6300.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 10800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 6300.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 690. - 1800.*(eta + 1.)*(eta + 1.)/(2.*2.) - 12600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 840.*(xi + 1.)*(xi + 1.)/(2.*2.) + 7350.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 1050.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
2698 case 4:
2699 return sign * RealGradient(0., -120.*eta - 450.*xi + 3600.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 10800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3150.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 510. + 210.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 9450.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7350.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2700.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2100.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
2700 case 5:
2701 return sign * RealGradient(0., 430.*eta/9. + 475.*xi/3. - 4300.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. + 4300.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 30100.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 3850.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/3. + 185. - 770.*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 3850.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 26950.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 950.*(xi + 1.)*(xi + 1.)/(2.*2.) + 6650.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9.);
2702 case 6:
2703 return sign * RealGradient(0., -340.*eta/9. - 250.*xi/3. + 3400.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. - 3400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 23800.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 3850.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/3. - 110. + 770.*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 3850.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 26950.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 500.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3500.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9.);
2704 case 7:
2705 return sign * RealGradient(0., 90.*eta + 225.*xi - 2700.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 8100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 6300.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 3150.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 285. - 210.*(eta + 1.)*(eta + 1.)/(2.*2.) - 9450.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 7350.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1350.*(xi + 1.)*(xi + 1.)/(2.*2.) + 1050.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
2706 case 8:
2707 return sign * RealGradient(-225.*eta - 90.*xi + 2700.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 3150.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 8100.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 6300.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 285. + 1350.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 9450.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 210.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7350.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 1050.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
2708 case 9:
2709 return sign * RealGradient(250.*eta/3. + 340.*xi/9. - 3400.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. + 3850.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/3. + 3400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 23800.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. + 110. - 500.*(eta + 1.)*(eta + 1.)/(2.*2.) - 3850.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 770.*(xi + 1.)*(xi + 1.)/(2.*2.)/9. + 26950.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. + 3500.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9., 0.);
2710 case 10:
2711 return sign * RealGradient(-475.*eta/3. - 430.*xi/9. + 4300.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. - 3850.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. - 4300.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 30100.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/9. - 185. + 950.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 3850.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 770.*((xi + 1.)*(xi + 1.)/(2.*2.))/9. - 26950.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9. - 6650.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/9., 0.);
2712 case 11:
2713 return sign * RealGradient(450.*eta + 120.*xi - 3600.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 3150.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 10800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 8400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 510. - 2700.*(eta + 1.)*(eta + 1.)/(2.*2.) - 9450.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 210.*(xi + 1.)*(xi + 1.)/(2.*2.) + 7350.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 2100.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
2714 case 12:
2715 return sign * RealGradient(0., -360.*eta - 450.*xi + 5400.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 10800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 6300.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 690. + 840.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 12600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7350.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1800.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1050.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
2716 case 13:
2717 return sign * RealGradient(0., 1360.*eta/9. + 500.*xi/3. - 6800.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. + 13600.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 23800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 7700.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/3. + 820./3. - 3080.*(eta + 1.)*(eta + 1.)/(2.*2.)/9. - 15400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 26950.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 2000.*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 3500.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9.);
2718 case 14:
2719 return sign * RealGradient(0., -1720.*eta/9. - 950.*xi/3. + 8600.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/3. - 17200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/3. + 30100.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/9. - 7700.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/3. - 1270./3. + 3080.*((eta + 1.)*(eta + 1.)/(2.*2.))/9. + 15400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 26950.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9. + 3800.*((xi + 1.)*(xi + 1.)/(2.*2.))/3. - 6650.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/9.);
2720 case 15:
2721 return sign * RealGradient(0., 480.*eta + 900.*xi - 7200.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 14400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 6300.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 1140. - 840.*(eta + 1.)*(eta + 1.)/(2.*2.) - 12600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 7350.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3600.*(xi + 1.)*(xi + 1.)/(2.*2.) + 2100.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
2722 case 16:
2723 return RealGradient(0., 390.*eta + 870.*xi - 6960.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 14400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 6090.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 1065. - 1365.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 12600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 7350.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 3600.*(xi + 1.)*(xi + 1.)/(2.*2.) + 2100.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
2724 case 17:
2725 return RealGradient(0., 90.*eta + 420.*xi - 3360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 10800.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 8400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2940.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 465. - 315.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 9450.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 7350.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2700.*(xi + 1.)*(xi + 1.)/(2.*2.) + 2100.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
2726 case 18:
2727 return RealGradient(0., 120.*eta + 60.*xi - 480.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 420.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 120. - 210.*(eta + 1.)*(eta + 1.)/(2.*2.));
2728 case 19:
2729 return RealGradient(-870.*eta - 390.*xi + 6960.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 6090.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 14400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 8400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1065. + 3600.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 12600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 1365.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 7350.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 2100.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
2730 case 20:
2731 return RealGradient(-420.*eta - 90.*xi + 3360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 2940.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 10800.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 8400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 465. + 2700.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 9450.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 315.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 7350.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) - 2100.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
2732 case 21:
2733 return RealGradient(-60.*eta - 120.*xi + 480.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 420.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 120. + 210.*((xi + 1.)*(xi + 1.)/(2.*2.)), 0.);
2734 case 22:
2735 return RealGradient(435.*eta + 585.*xi/2. - 5220.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 6090.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 10800.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 6300.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 630. - 1800.*(eta + 1.)*(eta + 1.)/(2.*2.) - 12600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 1365.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 7350.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 1050.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
2736 case 23:
2737 return RealGradient(210.*eta + 135.*xi/2. - 2520.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 2940.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 8100.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 6300.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 255. - 1350.*(eta + 1.)*(eta + 1.)/(2.*2.) - 9450.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 315.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 7350.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 1050.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
2738 case 24:
2739 return RealGradient(30.*eta + 90.*xi - 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 420.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 90. - 210.*(xi + 1.)*(xi + 1.)/(2.*2.), 0.);
2740 case 25:
2741 return RealGradient(0., -585.*eta/2. - 435.*xi + 5220.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 10800.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 6090.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 630. + 1365.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 12600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7350.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1800.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1050.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
2742 case 26:
2743 return RealGradient(0., -135.*eta/2. - 210.*xi + 2520.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 8100.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2940.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 255. + 315.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 9450.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 7350.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1350.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 1050.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
2744 case 27:
2745 return RealGradient(0., -90.*eta - 30.*xi + 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 420.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 90. + 210.*((eta + 1.)*(eta + 1.)/(2.*2.)));
2746 case 28:
2747 return RealGradient(171.*eta/4. + 135./4. - 180.*(eta + 1.)*(eta + 1.)/(2.*2.) + 105.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
2748 case 29:
2749 return RealGradient(-171.*eta/4. - 135./4. + 180.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 105.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
2750 case 30:
2751 return RealGradient(0., 171.*xi/4. + 135./4. - 180.*(xi + 1.)*(xi + 1.)/(2.*2.) + 105.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
2752 case 31:
2753 return RealGradient(0., -171.*xi/4. - 135./4. + 180.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 105.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
2754 case 32:
2755 return RealGradient(0., 81.*xi/4. + 75./4. - 135.*(xi + 1.)*(xi + 1.)/(2.*2.) + 105.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)));
2756 case 33:
2757 return RealGradient(0., -81.*xi/4. - 75./4. + 135.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 105.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.));
2758 case 34:
2759 return RealGradient(81.*eta/4. + 75./4. - 135.*(eta + 1.)*(eta + 1.)/(2.*2.) + 105.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)), 0.);
2760 case 35:
2761 return RealGradient(-81.*eta/4. - 75./4. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 105.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.), 0.);
2762 case 36:
2763 return RealGradient(0., 9.*xi/2.);
2764 case 37:
2765 return RealGradient(-9.*eta/2., 0.);
2766 case 38:
2767 return RealGradient(9.*eta/2., 0.);
2768 case 39:
2769 return RealGradient(0., -9.*xi/2.);
2770 default:
2771 libmesh_error_msg("Invalid i = " << i);
2772 }
2773 } // j = 1
2774
2775 // d^2()/deta^2
2776 case 2:
2777 {
2778 switch(ii)
2779 {
2780 case 0:
2781 return sign * RealGradient(-480.*eta - 900.*xi + 1800.*(eta + 1.)*(xi + 1.) - 1800.*(eta + 1.)*(xi + 1.)*(xi + 1.) + 525.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 1575.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. - 1140. + 210.*((eta + 1.)*(eta + 1.)) + 1575.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. - 3675.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 900.*((xi + 1.)*(xi + 1.)) - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)/2., 0.);
2782 case 1:
2783 return sign * RealGradient(680.*eta/9. + 950.*xi/3. - 1900.*(eta + 1.)*(xi + 1.)/3. + 2150.*(eta + 1.)*((xi + 1.)*(xi + 1.))/3. - 1925.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/9. + 3325.*(xi + 1.)*((eta + 1.)*(eta + 1.))/12. + 3190./9. - 595.*(eta + 1.)*(eta + 1.)/18. - 7525.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/24. + 13475.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/144. - 1075.*(xi + 1.)*(xi + 1.)/3. + 1925.*((xi + 1.)*(xi + 1.)*(xi + 1.))/18., 0.);
2784 case 2:
2785 return sign * RealGradient(-320.*eta/9. - 500.*xi/3. + 1000.*(eta + 1.)*(xi + 1.)/3. - 1700.*(eta + 1.)*(xi + 1.)*(xi + 1.)/3. + 1925.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/9. - 875.*(xi + 1.)*(eta + 1.)*(eta + 1.)/6. - 1660./9. + 140.*((eta + 1.)*(eta + 1.))/9. + 2975.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/12. - 13475.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/144. + 850.*((xi + 1.)*(xi + 1.))/3. - 1925.*(xi + 1.)*(xi + 1.)*(xi + 1.)/18., 0.);
2786 case 3:
2787 return sign * RealGradient(120.*eta + 450.*xi - 900.*(eta + 1.)*(xi + 1.) + 1350.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 525.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.))/4. + 510. - 105.*(eta + 1.)*(eta + 1.)/2. - 4725.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 3675.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 675.*(xi + 1.)*(xi + 1.) + 525.*((xi + 1.)*(xi + 1.)*(xi + 1.))/2., 0.);
2788 case 4:
2789 return sign * RealGradient(0., -120.*xi + 105.*(eta + 1.)*(xi + 1.) - 1575.*(eta + 1.)*(xi + 1.)*(xi + 1.)/4. + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 3675.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. - 120. + 450.*((xi + 1.)*(xi + 1.)) - 450.*(xi + 1.)*(xi + 1.)*(xi + 1.) + 525.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4.);
2790 case 5:
2791 return sign * RealGradient(0., 430.*xi/9. - 385.*(eta + 1.)*(xi + 1.)/9. + 1925.*(eta + 1.)*((xi + 1.)*(xi + 1.))/12. - 1925.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/12. + 13475.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/288. + 430./9. - 1075.*(xi + 1.)*(xi + 1.)/6. + 1075.*((xi + 1.)*(xi + 1.)*(xi + 1.))/6. - 7525.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/144.);
2792 case 6:
2793 return sign * RealGradient(0., -340.*xi/9. + 385.*(eta + 1.)*(xi + 1.)/9. - 1925.*(eta + 1.)*(xi + 1.)*(xi + 1.)/12. + 1925.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/12. - 13475.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/288. - 340./9. + 425.*((xi + 1.)*(xi + 1.))/3. - 425.*(xi + 1.)*(xi + 1.)*(xi + 1.)/3. + 2975.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/72.);
2794 case 7:
2795 return sign * RealGradient(0., 90.*xi - 105.*(eta + 1.)*(xi + 1.) + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.))/4. - 1575.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 3675.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32. + 90. - 675.*(xi + 1.)*(xi + 1.)/2. + 675.*((xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16.);
2796 case 8:
2797 return sign * RealGradient(-90.*eta - 225.*xi + 675.*(eta + 1.)*(xi + 1.) - 2025.*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 1575.*(xi + 1.)*(eta + 1.)*(eta + 1.)/4. - 285. + 105.*((eta + 1.)*(eta + 1.))/2. + 4725.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. - 3675.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 675.*((xi + 1.)*(xi + 1.))/2. - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)/4., 0.);
2798 case 9:
2799 return sign * RealGradient(80.*eta/3. + 250.*xi/3. - 250.*(eta + 1.)*(xi + 1.) + 425.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 1925.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/12. + 875.*(xi + 1.)*((eta + 1.)*(eta + 1.))/6. + 910./9. - 140.*(eta + 1.)*(eta + 1.)/9. - 2975.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/12. + 13475.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/144. - 425.*(xi + 1.)*(xi + 1.)/3. + 1925.*((xi + 1.)*(xi + 1.)*(xi + 1.))/36., 0.);
2800 case 10:
2801 return sign * RealGradient(-170.*eta/3. - 475.*xi/3. + 475.*(eta + 1.)*(xi + 1.) - 1075.*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 1925.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/12. - 3325.*(xi + 1.)*(eta + 1.)*(eta + 1.)/12. - 1765./9. + 595.*((eta + 1.)*(eta + 1.))/18. + 7525.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/24. - 13475.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/144. + 1075.*((xi + 1.)*(xi + 1.))/6. - 1925.*(xi + 1.)*(xi + 1.)*(xi + 1.)/36., 0.);
2802 case 11:
2803 return sign * RealGradient(360.*eta + 450.*xi - 1350.*(eta + 1.)*(xi + 1.) + 1350.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 1575.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.))/2. + 690. - 210.*(eta + 1.)*(eta + 1.) - 1575.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 3675.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 450.*(xi + 1.)*(xi + 1.) + 525.*((xi + 1.)*(xi + 1.)*(xi + 1.))/4., 0.);
2804 case 12:
2805 return sign * RealGradient(0., -105.*eta/2. - 360.*xi + 420.*(eta + 1.)*(xi + 1.) - 1575.*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 525.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 3675.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. - 735./2. + 675.*((xi + 1.)*(xi + 1.)) - 450.*(xi + 1.)*(xi + 1.)*(xi + 1.) + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/16.);
2806 case 13:
2807 return sign * RealGradient(0., 385.*eta/18. + 1360.*xi/9. - 1540.*(eta + 1.)*(xi + 1.)/9. + 1925.*(eta + 1.)*((xi + 1.)*(xi + 1.))/6. - 1925.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/9. + 13475.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/288. + 2765./18. - 850.*(xi + 1.)*(xi + 1.)/3. + 1700.*((xi + 1.)*(xi + 1.)*(xi + 1.))/9. - 2975.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/72.);
2808 case 14:
2809 return sign * RealGradient(0., -385.*eta/18. - 1720.*xi/9. + 1540.*(eta + 1.)*(xi + 1.)/9. - 1925.*(eta + 1.)*(xi + 1.)*(xi + 1.)/6. + 1925.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/9. - 13475.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/288. - 3395./18. + 1075.*((xi + 1.)*(xi + 1.))/3. - 2150.*(xi + 1.)*(xi + 1.)*(xi + 1.)/9. + 7525.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/144.);
2810 case 15:
2811 return sign * RealGradient(0., 105.*eta/2. + 480.*xi - 420.*(eta + 1.)*(xi + 1.) + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. - 525.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 3675.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32. + 945./2. - 900.*(xi + 1.)*(xi + 1.) + 600.*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4.);
2812 case 16:
2813 return RealGradient(0., 390.*xi - 1365.*(eta + 1.)*(xi + 1.)/4. + 3045.*(eta + 1.)*((xi + 1.)*(xi + 1.))/4. - 525.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 3675.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32. + 390. - 870.*(xi + 1.)*(xi + 1.) + 600.*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4.);
2814 case 17:
2815 return RealGradient(0., 90.*xi - 315.*(eta + 1.)*(xi + 1.)/4. + 735.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. - 1575.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 3675.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32. + 90. - 420.*(xi + 1.)*(xi + 1.) + 450.*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4.);
2816 case 18:
2817 return RealGradient(0., 120.*xi - 105.*(eta + 1.)*(xi + 1.) + 105.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. + 120. - 60.*(xi + 1.)*(xi + 1.));
2818 case 19:
2819 return RealGradient(-480.*eta - 870.*xi + 1800.*(eta + 1.)*(xi + 1.) - 1800.*(eta + 1.)*(xi + 1.)*(xi + 1.) + 525.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 1575.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. - 1118. + 210.*((eta + 1.)*(eta + 1.)) + 1575.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. - 3675.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 870.*((xi + 1.)*(xi + 1.)) - 1015.*(xi + 1.)*(xi + 1.)*(xi + 1.)/4., 0.);
2820 case 20:
2821 return RealGradient(-360.*eta - 420.*xi + 1350.*(eta + 1.)*(xi + 1.) - 1350.*(eta + 1.)*(xi + 1.)*(xi + 1.) + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 1575.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. - 668. + 210.*((eta + 1.)*(eta + 1.)) + 1575.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. - 3675.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 420.*((xi + 1.)*(xi + 1.)) - 245.*(xi + 1.)*(xi + 1.)*(xi + 1.)/2., 0.);
2822 case 21:
2823 return RealGradient(-60.*xi - 44. + 60.*((xi + 1.)*(xi + 1.)) - 35.*(xi + 1.)*(xi + 1.)*(xi + 1.)/2., 0.);
2824 case 22:
2825 return RealGradient(120.*eta + 435.*xi - 900.*(eta + 1.)*(xi + 1.) + 1350.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 525.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.))/4. + 497. - 105.*(eta + 1.)*(eta + 1.)/2. - 4725.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 3675.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 1305.*(xi + 1.)*(xi + 1.)/2. + 1015.*((xi + 1.)*(xi + 1.)*(xi + 1.))/4., 0.);
2826 case 23:
2827 return RealGradient(90.*eta + 210.*xi - 675.*(eta + 1.)*(xi + 1.) + 2025.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. - 1575.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.))/4. + 272. - 105.*(eta + 1.)*(eta + 1.)/2. - 4725.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 3675.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 315.*(xi + 1.)*(xi + 1.) + 245.*((xi + 1.)*(xi + 1.)*(xi + 1.))/2., 0.);
2828 case 24:
2829 return RealGradient(30.*xi + 26. - 45.*(xi + 1.)*(xi + 1.) + 35.*((xi + 1.)*(xi + 1.)*(xi + 1.))/2., 0.);
2830 case 25:
2831 return RealGradient(0., -585.*xi/2. + 1365.*(eta + 1.)*(xi + 1.)/4. - 3045.*(eta + 1.)*(xi + 1.)*(xi + 1.)/4. + 525.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 3675.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. - 585./2. + 1305.*((xi + 1.)*(xi + 1.))/2. - 450.*(xi + 1.)*(xi + 1.)*(xi + 1.) + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/16.);
2832 case 26:
2833 return RealGradient(0., -135.*xi/2. + 315.*(eta + 1.)*(xi + 1.)/4. - 735.*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 3675.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. - 135./2. + 315.*((xi + 1.)*(xi + 1.)) - 675.*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/16.);
2834 case 27:
2835 return RealGradient(0., -90.*xi + 105.*(eta + 1.)*(xi + 1.) - 105.*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. - 90. + 45.*((xi + 1.)*(xi + 1.)));
2836 case 28:
2837 return RealGradient(120.*eta + 171.*xi/4. - 90.*(eta + 1.)*(xi + 1.) + 315.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 423./4. - 105.*(eta + 1.)*(eta + 1.)/2., 0.);
2838 case 29:
2839 return RealGradient(-60.*eta - 171.*xi/4. + 90.*(eta + 1.)*(xi + 1.) - 315.*(xi + 1.)*(eta + 1.)*(eta + 1.)/8. - 297./4. + 105.*((eta + 1.)*(eta + 1.))/4., 0.);
2840 case 30:
2841 return RealGradient(0., 0.);
2842 case 31:
2843 return RealGradient(0., 0.);
2844 case 32:
2845 return RealGradient(0., 0.);
2846 case 33:
2847 return RealGradient(0., 0.);
2848 case 34:
2849 return RealGradient(90.*eta + 81.*xi/4. - 135.*(eta + 1.)*(xi + 1.)/2. + 315.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 333./4. - 105.*(eta + 1.)*(eta + 1.)/2., 0.);
2850 case 35:
2851 return RealGradient(-45.*eta - 81.*xi/4. + 135.*(eta + 1.)*(xi + 1.)/2. - 315.*(xi + 1.)*(eta + 1.)*(eta + 1.)/8. - 207./4. + 105.*((eta + 1.)*(eta + 1.))/4., 0.);
2852 case 36:
2853 return RealGradient(0., 0.);
2854 case 37:
2855 return RealGradient(3./2. - 9.*xi/2., 0.);
2856 case 38:
2857 return RealGradient(9.*xi/2. + 3./2., 0.);
2858 case 39:
2859 return RealGradient(0., 0.);
2860 default:
2861 libmesh_error_msg("Invalid i = " << i);
2862 }
2863 } // j = 2
2864
2865 default:
2866 libmesh_error_msg("Invalid j = " << j);
2867 }
2868 }
2869
2870 case TRI6:
2871 case TRI7:
2872 {
2873 switch (j)
2874 {
2875 // d^2()/dxi^2
2876 case 0:
2877 {
2878 switch(ii)
2879 {
2880 case 0:
2881 return sign * RealGradient(1344.*eta*xi - 1680.*eta - 840.*xi + 480. + 1344.*(eta*eta), -4032.*eta*xi + 1680.*eta + 2520.*xi - 480. - 1344.*eta*eta - 2688.*xi*xi);
2882 case 1:
2883 return sign * RealGradient(-4928.*eta*xi/9. + 5768.*eta/9. + 3080.*xi/9. - 1720./9. - 4480.*eta*eta/9., 4480.*eta*xi/3. - 4256.*eta/9. - 1008.*xi + 1600./9. + 1792.*(eta*eta)/9. + 9856.*(xi*xi)/9.);
2884 case 2:
2885 return sign * RealGradient(4928.*eta*xi/9. - 2240.*eta/9. - 3080.*xi/9. + 1360./9. + 448.*(eta*eta)/9., -448.*eta*xi/3. - 784.*eta/9. + 840.*xi - 1024./9. + 2240.*(eta*eta)/9. - 9856.*xi*xi/9.);
2886 case 3:
2887 return sign * RealGradient(-1344.*eta*xi + 504.*eta + 840.*xi - 360., -2016.*xi + 288. + 2688.*(xi*xi));
2888 case 4:
2889 return sign * RealGradient(168.*eta*(3. - 8.*xi), -2016.*xi + 288. + 2688.*(xi*xi));
2890 case 5:
2891 return sign * RealGradient(896.*eta*(-6.*eta - 4.*xi + 3.)/9., 1792.*eta*xi - 1792.*eta/3. - 2464.*xi/3. + 160. + 896.*(eta*eta)/3. + 7168.*(xi*xi)/9.);
2892 case 6:
2893 return sign * RealGradient(56.*eta*(-48.*eta - 8.*xi + 15.)/9., 896.*eta*xi - 1568.*eta/3. - 560.*xi/3. + 64. + 1792.*(eta*eta)/3. + 896.*(xi*xi)/9.);
2894 case 7:
2895 return sign * RealGradient(0., 0.);
2896 case 8:
2897 return sign * RealGradient(0., 0.);
2898 case 9:
2899 return sign * RealGradient(56.*eta*(-40.*eta + 8.*xi + 7.)/9., 2240.*eta*xi/3. - 952.*eta/3. + 112.*xi/9. + 208./9. - 448.*eta*eta/9. - 896.*xi*xi/9.);
2900 case 10:
2901 return sign * RealGradient(896.*eta*(-2.*eta + 4.*xi - 1.)/9., 1792.*eta*xi/3. - 1568.*eta/3. + 6944.*xi/9. - 1216./9. + 4480.*(eta*eta)/9. - 7168.*xi*xi/9.);
2902 case 11:
2903 return sign * RealGradient(168.*eta*(8.*eta + 8.*xi - 5.), -4032.*eta*xi + 2520.*eta + 3360.*xi - 960. - 1344.*eta*eta - 2688.*xi*xi);
2904 case 12:
2905 return RealGradient(2016.*eta*(-4.*eta - 2.*xi + 3.), 24192.*eta*xi - 12096.*eta - 9072.*xi + 2160. + 12096.*(eta*eta) + 8064.*(xi*xi));
2906 case 13:
2907 return RealGradient(1008.*eta*(12.*eta + 16.*xi - 9.), -36288.*eta*xi + 18144.*eta + 36288.*xi - 8640. - 8064.*eta*eta - 32256.*xi*xi);
2908 case 14:
2909 return RealGradient(1008.*eta*(-8.*eta - 12.*xi + 9.), 24192.*eta*xi - 6048.*eta - 21168.*xi + 3456. + 24192.*(xi*xi));
2910 case 15:
2911 return RealGradient(1008.*eta*(4.*eta + 16.*xi - 7.), -12096.*eta*xi + 3024.*eta + 28224.*xi - 4608. - 32256.*xi*xi);
2912 case 16:
2913 return RealGradient(0., -2016.*eta + 144. + 4032.*(eta*eta));
2914 case 17:
2915 return RealGradient(0., 4032.*eta - 288. - 8064.*eta*eta);
2916 case 18:
2917 return RealGradient(252.*eta*(-24.*eta - 12.*xi + 13.), 18144.*eta*xi - 8064.*eta - 6804.*xi + 1548. + 7056.*(eta*eta) + 6048.*(xi*xi));
2918 case 19:
2919 return RealGradient(252.*eta*(28.*eta + 16.*xi - 13.), -21168.*eta*xi + 9576.*eta + 9324.*xi - 2196. - 6048.*eta*eta - 8064.*xi*xi);
2920 case 20:
2921 return RealGradient(1008.*eta*(1. - xi), 1008.*eta - 1512.*xi + 144. - 2016.*eta*eta + 2016.*(xi*xi));
2922 case 21:
2923 return RealGradient(252.*eta*(-12.*eta + 16.*xi - 3.), 9072.*eta*xi - 5544.*eta + 6804.*xi - 936. + 4032.*(eta*eta) - 8064.*xi*xi);
2924 case 22:
2925 return RealGradient(1008.*eta*(4.*eta + 2.*xi - 3.), -12096.*eta*xi + 4536.*eta + 4536.*xi - 972. - 3024.*eta*eta - 4032.*xi*xi);
2926 case 23:
2927 return RealGradient(2016.*eta*(-eta - 2.*xi + 1.), 6048.*eta*xi - 1512.*eta - 8064.*xi + 1440. + 8064.*(xi*xi));
2928 default:
2929 libmesh_error_msg("Invalid i = " << i);
2930 }
2931 } // j = 0
2932
2933 // d^2()/dxideta
2934 case 1:
2935 {
2936 switch(ii)
2937 {
2938 case 0:
2939 return sign * RealGradient(2688.*eta*xi - 2520.*eta - 1680.*xi + 720. + 2016.*(eta*eta) + 672.*(xi*xi), -2688.*eta*xi + 840.*eta + 1680.*xi - 240. - 672.*eta*eta - 2016.*xi*xi);
2940 case 1:
2941 return sign * RealGradient(-8960.*eta*xi/9. + 1568.*eta/3. + 5768.*xi/9. - 200. - 896.*eta*eta/3. - 2464.*xi*xi/9., 3584.*eta*xi/9. + 896.*eta/9. - 4256.*xi/9. + 176./9. - 1792.*eta*eta/9. + 2240.*(xi*xi)/3.);
2942 case 2:
2943 return sign * RealGradient(896.*eta*xi/9. + 952.*eta/3. - 2240.*xi/9. - 16. - 1120.*eta*eta/3. + 2464.*(xi*xi)/9., 4480.*eta*xi/9. - 392.*eta/9. - 784.*xi/9. + 112./9. - 224.*eta*eta/9. - 224.*xi*xi/3.);
2944 case 3:
2945 return sign * RealGradient(504.*xi - 72. - 672.*xi*xi, 0.);
2946 case 4:
2947 return sign * RealGradient(504.*xi - 72. - 672.*xi*xi, 0.);
2948 case 5:
2949 return sign * RealGradient(-3584.*eta*xi/3. + 1568.*eta/3. + 896.*xi/3. - 80. - 448.*eta*eta - 1792.*xi*xi/9., 1792.*eta*xi/3. - 280.*eta/3. - 1792.*xi/3. + 56. + 224.*(eta*eta)/9. + 896.*(xi*xi));
2950 case 6:
2951 return sign * RealGradient(-1792.*eta*xi/3. + 1792.*eta/3. + 280.*xi/3. - 56. - 896.*eta*eta - 224.*xi*xi/9., 3584.*eta*xi/3. - 896.*eta/3. - 1568.*xi/3. + 80. + 1792.*(eta*eta)/9. + 448.*(xi*xi));
2952 case 7:
2953 return sign * RealGradient(0., -504.*eta + 72. + 672.*(eta*eta));
2954 case 8:
2955 return sign * RealGradient(0., -504.*eta + 72. + 672.*(eta*eta));
2956 case 9:
2957 return sign * RealGradient(-4480.*eta*xi/9. + 784.*eta/9. + 392.*xi/9. - 112./9. + 224.*(eta*eta)/3. + 224.*(xi*xi)/9., -896.*eta*xi/9. + 2240.*eta/9. - 952.*xi/3. + 16. - 2464.*eta*eta/9. + 1120.*(xi*xi)/3.);
2958 case 10:
2959 return sign * RealGradient(-3584.*eta*xi/9. + 4256.*eta/9. - 896.*xi/9. - 176./9. - 2240.*eta*eta/3. + 1792.*(xi*xi)/9., 8960.*eta*xi/9. - 5768.*eta/9. - 1568.*xi/3. + 200. + 2464.*(eta*eta)/9. + 896.*(xi*xi)/3.);
2960 case 11:
2961 return sign * RealGradient(2688.*eta*xi - 1680.*eta - 840.*xi + 240. + 2016.*(eta*eta) + 672.*(xi*xi), -2688.*eta*xi + 1680.*eta + 2520.*xi - 720. - 672.*eta*eta - 2016.*xi*xi);
2962 case 12:
2963 return RealGradient(-16128.*eta*xi + 18144.*eta + 6048.*xi - 3240. - 18144.*eta*eta - 2016.*xi*xi, 24192.*eta*xi - 9072.*eta - 12096.*xi + 2160. + 8064.*(eta*eta) + 12096.*(xi*xi));
2964 case 13:
2965 return RealGradient(24192.*eta*xi - 12096.*eta - 9072.*xi + 2160. + 12096.*(eta*eta) + 8064.*(xi*xi), -16128.*eta*xi + 6048.*eta + 18144.*xi - 3240. - 2016.*eta*eta - 18144.*xi*xi);
2966 case 14:
2967 return RealGradient(-16128.*eta*xi + 4032.*eta + 9072.*xi - 1944. - 6048.*xi*xi, -6048.*xi + 432. + 12096.*(xi*xi));
2968 case 15:
2969 return RealGradient(8064.*eta*xi - 2016.*eta - 7056.*xi + 1152. + 8064.*(xi*xi), 3024.*xi - 216. - 6048.*xi*xi);
2970 case 16:
2971 return RealGradient(3024.*eta - 216. - 6048.*eta*eta, 8064.*eta*xi - 7056.*eta - 2016.*xi + 1152. + 8064.*(eta*eta));
2972 case 17:
2973 return RealGradient(-6048.*eta + 432. + 12096.*(eta*eta), -16128.*eta*xi + 9072.*eta + 4032.*xi - 1944. - 6048.*eta*eta);
2974 case 18:
2975 return RealGradient(-12096.*eta*xi + 9576.*eta + 3276.*xi - 1332. - 10584.*eta*eta - 1512.*xi*xi, 14112.*eta*xi - 3276.*eta - 8064.*xi + 1044. + 2016.*(eta*eta) + 9072.*(xi*xi));
2976 case 19:
2977 return RealGradient(14112.*eta*xi - 8064.*eta - 3276.*xi + 1044. + 9072.*(eta*eta) + 2016.*(xi*xi), -12096.*eta*xi + 3276.*eta + 9576.*xi - 1332. - 1512.*eta*eta - 10584.*xi*xi);
2978 case 20:
2979 return RealGradient(-1512.*eta + 1008.*xi - 216. + 3024.*(eta*eta) - 504.*xi*xi, -4032.*eta*xi + 2016.*eta + 1008.*xi - 360. - 2016.*eta*eta);
2980 case 21:
2981 return RealGradient(-6048.*eta*xi + 4536.*eta - 756.*xi - 216. - 6048.*eta*eta + 2016.*(xi*xi), 8064.*eta*xi - 3024.*eta - 5544.*xi + 1188. + 1008.*(eta*eta) + 4536.*(xi*xi));
2982 case 22:
2983 return RealGradient(8064.*eta*xi - 5544.*eta - 3024.*xi + 1188. + 4536.*(eta*eta) + 1008.*(xi*xi), -6048.*eta*xi - 756.*eta + 4536.*xi - 216. + 2016.*(eta*eta) - 6048.*xi*xi);
2984 case 23:
2985 return RealGradient(-4032.*eta*xi + 1008.*eta + 2016.*xi - 360. - 2016.*xi*xi, 1008.*eta - 1512.*xi - 216. - 504.*eta*eta + 3024.*(xi*xi));
2986 default:
2987 libmesh_error_msg("Invalid i = " << i);
2988 }
2989 } // j = 1
2990
2991 // d^2()/deta^2
2992 case 2:
2993 {
2994 switch(ii)
2995 {
2996 case 0:
2997 return sign * RealGradient(4032.*eta*xi - 3360.*eta - 2520.*xi + 960. + 2688.*(eta*eta) + 1344.*(xi*xi), 168.*xi*(-8.*eta - 8.*xi + 5.));
2998 case 1:
2999 return sign * RealGradient(-1792.*eta*xi/3. - 6944.*eta/9. + 1568.*xi/3. + 1216./9. + 7168.*(eta*eta)/9. - 4480.*xi*xi/9., 896.*xi*(-4.*eta + 2.*xi + 1.)/9.);
3000 case 2:
3001 return sign * RealGradient(-2240.*eta*xi/3. - 112.*eta/9. + 952.*xi/3. - 208./9. + 896.*(eta*eta)/9. + 448.*(xi*xi)/9., 56.*xi*(-8.*eta + 40.*xi - 7.)/9.);
3002 case 3:
3003 return sign * RealGradient(0., 0.);
3004 case 4:
3005 return sign * RealGradient(0., 0.);
3006 case 5:
3007 return sign * RealGradient(-896.*eta*xi + 560.*eta/3. + 1568.*xi/3. - 64. - 896.*eta*eta/9. - 1792.*xi*xi/3., 56.*xi*(8.*eta + 48.*xi - 15.)/9.);
3008 case 6:
3009 return sign * RealGradient(-1792.*eta*xi + 2464.*eta/3. + 1792.*xi/3. - 160. - 7168.*eta*eta/9. - 896.*xi*xi/3., 896.*xi*(4.*eta + 6.*xi - 3.)/9.);
3010 case 7:
3011 return sign * RealGradient(2016.*eta - 288. - 2688.*eta*eta, 168.*xi*(8.*eta - 3.));
3012 case 8:
3013 return sign * RealGradient(2016.*eta - 288. - 2688.*eta*eta, 1344.*eta*xi - 840.*eta - 504.*xi + 360.);
3014 case 9:
3015 return sign * RealGradient(448.*eta*xi/3. - 840.*eta + 784.*xi/9. + 1024./9. + 9856.*(eta*eta)/9. - 2240.*xi*xi/9., -4928.*eta*xi/9. + 3080.*eta/9. + 2240.*xi/9. - 1360./9. - 448.*xi*xi/9.);
3016 case 10:
3017 return sign * RealGradient(-4480.*eta*xi/3. + 1008.*eta + 4256.*xi/9. - 1600./9. - 9856.*eta*eta/9. - 1792.*xi*xi/9., 4928.*eta*xi/9. - 3080.*eta/9. - 5768.*xi/9. + 1720./9. + 4480.*(xi*xi)/9.);
3018 case 11:
3019 return sign * RealGradient(4032.*eta*xi - 2520.*eta - 1680.*xi + 480. + 2688.*(eta*eta) + 1344.*(xi*xi), -1344.*eta*xi + 840.*eta + 1680.*xi - 480. - 1344.*xi*xi);
3020 case 12:
3021 return RealGradient(-36288.*eta*xi + 36288.*eta + 18144.*xi - 8640. - 32256.*eta*eta - 8064.*xi*xi, 1008.*xi*(16.*eta + 12.*xi - 9.));
3022 case 13:
3023 return RealGradient(24192.*eta*xi - 9072.*eta - 12096.*xi + 2160. + 8064.*(eta*eta) + 12096.*(xi*xi), 2016.*xi*(-2.*eta - 4.*xi + 3.));
3024 case 14:
3025 return RealGradient(4032.*xi - 288. - 8064.*xi*xi, 0.);
3026 case 15:
3027 return RealGradient(-2016.*xi + 144. + 4032.*(xi*xi), 0.);
3028 case 16:
3029 return RealGradient(-12096.*eta*xi + 28224.*eta + 3024.*xi - 4608. - 32256.*eta*eta, 1008.*xi*(16.*eta + 4.*xi - 7.));
3030 case 17:
3031 return RealGradient(24192.*eta*xi - 21168.*eta - 6048.*xi + 3456. + 24192.*(eta*eta), 1008.*xi*(-12.*eta - 8.*xi + 9.));
3032 case 18:
3033 return RealGradient(-21168.*eta*xi + 9324.*eta + 9576.*xi - 2196. - 8064.*eta*eta - 6048.*xi*xi, 252.*xi*(16.*eta + 28.*xi - 13.));
3034 case 19:
3035 return RealGradient(18144.*eta*xi - 6804.*eta - 8064.*xi + 1548. + 6048.*(eta*eta) + 7056.*(xi*xi), 252.*xi*(-12.*eta - 24.*xi + 13.));
3036 case 20:
3037 return RealGradient(6048.*eta*xi - 8064.*eta - 1512.*xi + 1440. + 8064.*(eta*eta), 2016.*xi*(-2.*eta - xi + 1.));
3038 case 21:
3039 return RealGradient(-12096.*eta*xi + 4536.*eta + 4536.*xi - 972. - 4032.*eta*eta - 3024.*xi*xi, 1008.*xi*(2.*eta + 4.*xi - 3.));
3040 case 22:
3041 return RealGradient(9072.*eta*xi + 6804.*eta - 5544.*xi - 936. - 8064.*eta*eta + 4032.*(xi*xi), 252.*xi*(16.*eta - 12.*xi - 3.));
3042 case 23:
3043 return RealGradient(-1512.*eta + 1008.*xi + 144. + 2016.*(eta*eta) - 2016.*xi*xi, 1008.*xi*(1. - eta));
3044 default:
3045 libmesh_error_msg("Invalid i = " << i);
3046 }
3047 } // j = 2
3048
3049 default:
3050 libmesh_error_msg("Invalid j = " << j);
3051 }
3052 }
3053
3054 default:
3055 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
3056 } // end switch (type)
3057 } // end case FOURTH
3058
3059 // quintic Nedelec (first kind) shape function second derivatives
3060 case FIFTH:
3061 {
3062 switch (elem->type())
3063 {
3064 case QUAD8:
3065 case QUAD9:
3066 {
3067 switch (j)
3068 {
3069 // d^2()/dxi^2
3070 case 0:
3071 {
3072 switch(ii)
3073 {
3074 case 0:
3075 return sign * RealGradient(-13125.*eta/4. - 525.*xi + 13125.*(eta + 1.)*(xi + 1.)/2. - 23625.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 39375.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. + 91875.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 91875.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 33075.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 14175./4. + 39375.*((eta + 1.)*(eta + 1.))/4. + 70875.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. + 945.*((xi + 1.)*(xi + 1.))/4. - 165375.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 165375.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 59535.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. - 91875.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 91875.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 33075.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32., 0.);
3076 case 1:
3077 return sign * RealGradient(527625.*eta/512. + 40845.*xi/256. - 1021125.*(eta + 1.)*(xi + 1.)/512. + 874125.*(eta + 1.)*((xi + 1.)*(xi + 1.))/1024. + 3063375.*(xi + 1.)*((eta + 1.)*(eta + 1.))/512. - 7147875.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/1024. + 7147875.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/2048. - 2573235.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4096. + 567105./512. - 1582875.*(eta + 1.)*(eta + 1.)/512. - 2622375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/1024. - 34965.*(xi + 1.)*(xi + 1.)/512. + 6118875.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/2048. - 6118875.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4096. + 2202795.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/8192. + 3693375.*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 3693375.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/2048. + 1329615.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4096., 0.);
3078 case 2:
3079 return sign * RealGradient(-28875.*eta/32. - 2835.*xi/16. + 70875.*(eta + 1.)*(xi + 1.)/32. - 70875.*(eta + 1.)*(xi + 1.)*(xi + 1.)/64. - 212625.*(xi + 1.)*(eta + 1.)*(eta + 1.)/32. + 496125.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 496125.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/128. + 178605.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/256. - 32235./32. + 86625.*((eta + 1.)*(eta + 1.))/32. + 212625.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/64. + 2835.*((xi + 1.)*(xi + 1.))/32. - 496125.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/128. + 496125.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/256. - 178605.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/512. - 202125.*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 202125.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/128. - 72765.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/256., 0.);
3080 case 3:
3081 return sign * RealGradient(233625.*eta/512. + 29085.*xi/256. - 727125.*(eta + 1.)*(xi + 1.)/512. + 874125.*(eta + 1.)*((xi + 1.)*(xi + 1.))/1024. + 2181375.*(xi + 1.)*((eta + 1.)*(eta + 1.))/512. - 5089875.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/1024. + 5089875.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/2048. - 1832355.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4096. + 273105./512. - 700875.*(eta + 1.)*(eta + 1.)/512. - 2622375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/1024. - 34965.*(xi + 1.)*(xi + 1.)/512. + 6118875.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/2048. - 6118875.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4096. + 2202795.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/8192. + 1635375.*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 1635375.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/2048. + 588735.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4096., 0.);
3082 case 4:
3083 return sign * RealGradient(-7875.*eta/4. - 420.*xi + 5250.*(eta + 1.)*(xi + 1.) - 23625.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 15750.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 18375.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 18375.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/2. + 6615.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 8925./4. + 23625.*((eta + 1.)*(eta + 1.))/4. + 70875.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. + 945.*((xi + 1.)*(xi + 1.))/4. - 165375.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 165375.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 59535.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. - 55125.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 55125.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 19845.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32., 0.);
3084 case 5:
3085 return sign * RealGradient(0., 2250.*eta + 7875.*xi/4. - 23625.*(eta + 1.)*(xi + 1.)/2. + 15750.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 23625.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 165375.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. - 55125.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 99225.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. + 15375./4. - 7875.*(eta + 1.)*(eta + 1.)/2. - 55125.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 2625.*(xi + 1.)*(xi + 1.) + 18375.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 33075.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 2625.*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 55125.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. + 7875.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. + 99225.*((xi + 1.)*(xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 4725.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8.);
3086 case 6:
3087 return sign * RealGradient(0., -42975.*eta/64. - 152775.*xi/512. + 902475.*(eta + 1.)*(xi + 1.)/256. - 300825.*(eta + 1.)*(xi + 1.)*(xi + 1.)/64. + 902475.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/512. - 6648075.*(xi + 1.)*(eta + 1.)*(eta + 1.)/1024. + 4288725.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 3671325.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4096. - 467475./512. + 316575.*((eta + 1.)*(eta + 1.))/256. + 2216025.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/256. - 6648075.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 50925.*((xi + 1.)*(xi + 1.))/128. - 1429575.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/256. + 1223775.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 204225.*(eta + 1.)*(eta + 1.)*(eta + 1.)/256. + 4288725.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/2048. - 152775.*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. - 3671325.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8192. + 174825.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/1024.);
3088 case 7:
3089 return sign * RealGradient(0., 1575.*eta/4. + 4725.*xi/32. - 33075.*(eta + 1.)*(xi + 1.)/16. + 11025.*(eta + 1.)*((xi + 1.)*(xi + 1.))/4. - 33075.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 363825.*(xi + 1.)*((eta + 1.)*(eta + 1.))/64. - 297675.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 297675.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/256. + 16425./32. - 17325.*(eta + 1.)*(eta + 1.)/16. - 121275.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/16. + 363825.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/128. - 1575.*(xi + 1.)*(xi + 1.)/8. + 99225.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 99225.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 14175.*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 297675.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/128. + 4725.*((xi + 1.)*(xi + 1.)*(xi + 1.))/64. + 297675.*((xi + 1.)*(xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/512. - 14175.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64.);
3090 case 8:
3091 return sign * RealGradient(0., -10575.*eta/64. - 26775.*xi/512. + 222075.*(eta + 1.)*(xi + 1.)/256. - 74025.*(eta + 1.)*(xi + 1.)*(xi + 1.)/64. + 222075.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/512. - 2943675.*(xi + 1.)*(eta + 1.)*(eta + 1.)/1024. + 3053925.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 3671325.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4096. - 106275./512. + 140175.*((eta + 1.)*(eta + 1.))/256. + 981225.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/256. - 2943675.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 8925.*((xi + 1.)*(xi + 1.))/128. - 1017975.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/256. + 1223775.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 145425.*(eta + 1.)*(eta + 1.)*(eta + 1.)/256. + 3053925.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/2048. - 26775.*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. - 3671325.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8192. + 174825.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/1024.);
3092 case 9:
3093 return sign * RealGradient(0., 900.*eta + 1575.*xi/4. - 4725.*(eta + 1.)*(xi + 1.) + 6300.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 4725.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 99225.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. - 11025.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.) + 99225.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. + 4875./4. - 4725.*(eta + 1.)*(eta + 1.)/2. - 33075.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 99225.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 525.*(xi + 1.)*(xi + 1.) + 14700.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 33075.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 2100.*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 11025.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. + 99225.*((xi + 1.)*(xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 4725.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8.);
3094 case 10:
3095 return sign * RealGradient(-1575.*eta/4. + 1050.*(eta + 1.)*(xi + 1.) - 4725.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 6300.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 11025.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 7350.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.) + 6615.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 1575./4. + 4725.*((eta + 1.)*(eta + 1.))/2. + 14175.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/4. - 99225.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 33075.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/8. - 59535.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. - 33075.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 11025.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 19845.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32., 0.);
3096 case 11:
3097 return sign * RealGradient(46725.*eta/512. - 145425.*(eta + 1.)*(xi + 1.)/512. + 174825.*(eta + 1.)*((xi + 1.)*(xi + 1.))/1024. + 436275.*(xi + 1.)*((eta + 1.)*(eta + 1.))/256. - 3053925.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/1024. + 1017975.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/512. - 1832355.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4096. + 46725./512. - 140175.*(eta + 1.)*(eta + 1.)/256. - 524475.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/512. + 3671325.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/2048. - 1223775.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/1024. + 2202795.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/8192. + 981225.*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 327075.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/512. + 588735.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4096., 0.);
3098 case 12:
3099 return sign * RealGradient(-5775.*eta/32. + 14175.*(eta + 1.)*(xi + 1.)/32. - 14175.*(eta + 1.)*(xi + 1.)*(xi + 1.)/64. - 42525.*(xi + 1.)*(eta + 1.)*(eta + 1.)/16. + 297675.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 99225.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. + 178605.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/256. - 5775./32. + 17325.*((eta + 1.)*(eta + 1.))/16. + 42525.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/32. - 297675.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/128. + 99225.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 178605.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/512. - 121275.*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 40425.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 72765.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/256., 0.);
3100 case 13:
3101 return sign * RealGradient(105525.*eta/512. - 204225.*(eta + 1.)*(xi + 1.)/512. + 174825.*(eta + 1.)*((xi + 1.)*(xi + 1.))/1024. + 612675.*(xi + 1.)*((eta + 1.)*(eta + 1.))/256. - 4288725.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/1024. + 1429575.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/512. - 2573235.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4096. + 105525./512. - 316575.*(eta + 1.)*(eta + 1.)/256. - 524475.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/512. + 3671325.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/2048. - 1223775.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/1024. + 2202795.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/8192. + 2216025.*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 738675.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/512. + 1329615.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4096., 0.);
3102 case 14:
3103 return sign * RealGradient(-2625.*eta/4. + 2625.*(eta + 1.)*(xi + 1.)/2. - 4725.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 7875.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 55125.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 18375.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/2. + 33075.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 2625./4. + 7875.*((eta + 1.)*(eta + 1.))/2. + 14175.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/4. - 99225.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 33075.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/8. - 59535.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. - 55125.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 18375.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 33075.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32., 0.);
3104 case 15:
3105 return sign * RealGradient(0., 2250.*eta + 2625.*xi/4. - 7875.*(eta + 1.)*(xi + 1.) + 7875.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 4725.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 165375.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. - 18375.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.) + 165375.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. + 10875./4. - 23625.*(eta + 1.)*(eta + 1.)/4. - 165375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 99225.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 2625.*(xi + 1.)*(xi + 1.)/4. + 18375.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 165375.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. + 5250.*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 11025.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. + 99225.*((xi + 1.)*(xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 23625.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16.);
3106 case 16:
3107 return sign * RealGradient(0., -52875.*eta/128. - 44625.*xi/512. + 370125.*(eta + 1.)*(xi + 1.)/256. - 370125.*(eta + 1.)*(xi + 1.)*(xi + 1.)/256. + 222075.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/512. - 4906125.*(xi + 1.)*(eta + 1.)*(eta + 1.)/1024. + 5089875.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 6118875.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4096. - 243375./512. + 700875.*((eta + 1.)*(eta + 1.))/512. + 4906125.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/1024. - 2943675.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 44625.*((xi + 1.)*(xi + 1.))/512. - 5089875.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/1024. + 6118875.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4096. - 727125.*(eta + 1.)*(eta + 1.)*(eta + 1.)/512. + 3053925.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/2048. - 26775.*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. - 3671325.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8192. + 874125.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/2048.);
3108 case 17:
3109 return sign * RealGradient(0., 7875.*eta/8. + 7875.*xi/32. - 55125.*(eta + 1.)*(xi + 1.)/16. + 55125.*(eta + 1.)*((xi + 1.)*(xi + 1.))/16. - 33075.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 606375.*(xi + 1.)*((eta + 1.)*(eta + 1.))/64. - 496125.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 496125.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/256. + 37125./32. - 86625.*(eta + 1.)*(eta + 1.)/32. - 606375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/64. + 363825.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/128. - 7875.*(xi + 1.)*(xi + 1.)/32. + 496125.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 496125.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/256. + 70875.*((eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 297675.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/128. + 4725.*((xi + 1.)*(xi + 1.)*(xi + 1.))/64. + 297675.*((xi + 1.)*(xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/512. - 70875.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/128.);
3110 case 18:
3111 return sign * RealGradient(0., -214875.*eta/128. - 254625.*xi/512. + 1504125.*(eta + 1.)*(xi + 1.)/256. - 1504125.*(eta + 1.)*(xi + 1.)*(xi + 1.)/256. + 902475.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/512. - 11080125.*(xi + 1.)*(eta + 1.)*(eta + 1.)/1024. + 7147875.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 6118875.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4096. - 1041375./512. + 1582875.*((eta + 1.)*(eta + 1.))/512. + 11080125.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/1024. - 6648075.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 254625.*((xi + 1.)*(xi + 1.))/512. - 7147875.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/1024. + 6118875.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4096. - 1021125.*(eta + 1.)*(eta + 1.)*(eta + 1.)/512. + 4288725.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/2048. - 152775.*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. - 3671325.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8192. + 874125.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/2048.);
3112 case 19:
3113 return sign * RealGradient(0., 5625.*eta + 13125.*xi/4. - 39375.*(eta + 1.)*(xi + 1.)/2. + 39375.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. - 23625.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 275625.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. - 91875.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 165375.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. + 31875./4. - 39375.*(eta + 1.)*(eta + 1.)/4. - 275625.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 13125.*(xi + 1.)*(xi + 1.)/4. + 91875.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 165375.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. + 13125.*((eta + 1.)*(eta + 1.)*(eta + 1.))/2. - 55125.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. + 7875.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. + 99225.*((xi + 1.)*(xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 23625.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16.);
3114 case 20:
3115 return RealGradient(0., 10575.*eta/2. + 51825.*xi/16. - 155475.*(eta + 1.)*(xi + 1.)/8. + 39375.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. - 23625.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 1088325.*(xi + 1.)*((eta + 1.)*(eta + 1.))/32. - 362775.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 652995.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/128. + 122325./16. - 74025.*(eta + 1.)*(eta + 1.)/8. - 275625.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 13125.*(xi + 1.)*(xi + 1.)/4. + 91875.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 165375.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. + 24675.*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 55125.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. + 7875.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. + 99225.*((xi + 1.)*(xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 44415.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32.);
3116 case 21:
3117 return RealGradient(0., -8325.*eta/4. - 30825.*xi/16. + 92475.*(eta + 1.)*(xi + 1.)/8. - 15750.*(eta + 1.)*(xi + 1.)*(xi + 1.) + 23625.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 647325.*(xi + 1.)*(eta + 1.)*(eta + 1.)/32. + 215775.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 388395.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/128. - 58575./16. + 58275.*((eta + 1.)*(eta + 1.))/16. + 55125.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. - 165375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 2625.*((xi + 1.)*(xi + 1.)) - 18375.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.) + 33075.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/8. - 19425.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 55125.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 7875.*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. - 99225.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 34965.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64.);
3118 case 22:
3119 return RealGradient(0., 3375.*eta/4. + 2025.*xi/16. - 6075.*(eta + 1.)*(xi + 1.)/8. + 42525.*(xi + 1.)*((eta + 1.)*(eta + 1.))/32. - 14175.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 25515.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/128. + 13275./16. - 23625.*(eta + 1.)*(eta + 1.)/16. + 7875.*((eta + 1.)*(eta + 1.)*(eta + 1.))/8. - 14175.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64.);
3120 case 23:
3121 return RealGradient(0., -675.*eta - 2025.*xi/16. + 6075.*(eta + 1.)*(xi + 1.)/8. - 42525.*(xi + 1.)*(eta + 1.)*(eta + 1.)/32. + 14175.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 25515.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/128. - 11025./16. + 4725.*((eta + 1.)*(eta + 1.))/4. - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)/2. + 2835.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/16.);
3122 case 24:
3123 return RealGradient(-20475.*eta/8. + 20475.*(eta + 1.)*(xi + 1.)/4. - 36855.*(eta + 1.)*(xi + 1.)*(xi + 1.)/16. - 74025.*(xi + 1.)*(eta + 1.)*(eta + 1.)/4. + 362775.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 91875.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 33075.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 20475./8. + 74025.*((eta + 1.)*(eta + 1.))/8. + 133245.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/16. - 652995.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 165375.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 59535.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. - 362775.*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. + 91875.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 33075.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32., 0.);
3124 case 25:
3125 return RealGradient(525.*eta - 1050.*(eta + 1.)*(xi + 1.) + 945.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. + 58275.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. - 215775.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 18375.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/2. - 33075.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 525. - 58275.*(eta + 1.)*(eta + 1.)/16. - 104895.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/32. + 388395.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 33075.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 59535.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64. + 215775.*((eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 18375.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 33075.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32., 0.);
3126 case 26:
3127 return RealGradient(-4725.*eta/4. + 4725.*(eta + 1.)*(xi + 1.)/2. - 8505.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 23625.*(xi + 1.)*(eta + 1.)*(eta + 1.)/8. + 14175.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 4725./4. + 23625.*((eta + 1.)*(eta + 1.))/16. + 42525.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/32. - 25515.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. - 14175.*(eta + 1.)*(eta + 1.)*(eta + 1.)/32., 0.);
3128 case 27:
3129 return RealGradient(4725.*eta/8. - 4725.*(eta + 1.)*(xi + 1.)/4. + 8505.*(eta + 1.)*((xi + 1.)*(xi + 1.))/16. + 4725.*(xi + 1.)*((eta + 1.)*(eta + 1.))/2. - 14175.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 4725./8. - 4725.*(eta + 1.)*(eta + 1.)/4. - 8505.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 25515.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/64. + 14175.*((eta + 1.)*(eta + 1.)*(eta + 1.))/32., 0.);
3130 case 28:
3131 return RealGradient(-12285.*eta/8. + 4095.*(eta + 1.)*(xi + 1.) - 36855.*(eta + 1.)*(xi + 1.)*(xi + 1.)/16. - 14805.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 72555.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 18375.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/2. + 6615.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 12285./8. + 44415.*((eta + 1.)*(eta + 1.))/8. + 133245.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/16. - 652995.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 165375.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 59535.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. - 217665.*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. + 55125.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 19845.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32., 0.);
3132 case 29:
3133 return RealGradient(315.*eta - 840.*(eta + 1.)*(xi + 1.) + 945.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. + 11655.*(xi + 1.)*((eta + 1.)*(eta + 1.))/2. - 43155.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 7350.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)) - 6615.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 315. - 34965.*(eta + 1.)*(eta + 1.)/16. - 104895.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/32. + 388395.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 33075.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 59535.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64. + 129465.*((eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 11025.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 19845.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32., 0.);
3134 case 30:
3135 return RealGradient(-2835.*eta/4. + 1890.*(eta + 1.)*(xi + 1.) - 8505.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 4725.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. + 2835.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 2835./4. + 14175.*((eta + 1.)*(eta + 1.))/16. + 42525.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/32. - 25515.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. - 8505.*(eta + 1.)*(eta + 1.)*(eta + 1.)/32., 0.);
3136 case 31:
3137 return RealGradient(2835.*eta/8. - 945.*(eta + 1.)*(xi + 1.) + 8505.*(eta + 1.)*((xi + 1.)*(xi + 1.))/16. + 1890.*(xi + 1.)*((eta + 1.)*(eta + 1.)) - 2835.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 2835./8. - 2835.*(eta + 1.)*(eta + 1.)/4. - 8505.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 25515.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/64. + 8505.*((eta + 1.)*(eta + 1.)*(eta + 1.))/32., 0.);
3138 case 32:
3139 return RealGradient(0., 2115.*eta + 10365.*xi/16. - 31095.*(eta + 1.)*(xi + 1.)/4. + 7875.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 4725.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 652995.*(xi + 1.)*((eta + 1.)*(eta + 1.))/32. - 72555.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 652995.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/128. + 41385./16. - 44415.*(eta + 1.)*(eta + 1.)/8. - 165375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 99225.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 2625.*(xi + 1.)*(xi + 1.)/4. + 18375.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 165375.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. + 4935.*((eta + 1.)*(eta + 1.)*(eta + 1.)) - 11025.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. + 99225.*((xi + 1.)*(xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64. - 44415.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32.);
3140 case 33:
3141 return RealGradient(0., -1665.*eta/2. - 6165.*xi/16. + 18495.*(eta + 1.)*(xi + 1.)/4. - 6300.*(eta + 1.)*(xi + 1.)*(xi + 1.) + 4725.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 388395.*(xi + 1.)*(eta + 1.)*(eta + 1.)/32. + 43155.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 388395.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/128. - 18375./16. + 34965.*((eta + 1.)*(eta + 1.))/16. + 33075.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. - 99225.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 525.*((xi + 1.)*(xi + 1.)) - 14700.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.) + 33075.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/8. - 3885.*(eta + 1.)*(eta + 1.)*(eta + 1.)/2. + 11025.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. - 99225.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 34965.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64.);
3142 case 34:
3143 return RealGradient(0., 675.*eta/2. + 405.*xi/16. - 1215.*(eta + 1.)*(xi + 1.)/4. + 25515.*(xi + 1.)*((eta + 1.)*(eta + 1.))/32. - 2835.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 25515.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/128. + 5355./16. - 14175.*(eta + 1.)*(eta + 1.)/16. + 1575.*((eta + 1.)*(eta + 1.)*(eta + 1.))/2. - 14175.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64.);
3144 case 35:
3145 return RealGradient(0., -270.*eta - 405.*xi/16. + 1215.*(eta + 1.)*(xi + 1.)/4. - 25515.*(xi + 1.)*(eta + 1.)*(eta + 1.)/32. + 2835.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 25515.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/128. - 4365./16. + 2835.*((eta + 1.)*(eta + 1.))/4. - 630.*(eta + 1.)*(eta + 1.)*(eta + 1.) + 2835.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/16.);
3146 case 36:
3147 return RealGradient(60.*eta + 60. - 495.*(eta + 1.)*(eta + 1.)/2. + 1275.*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 2625.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 945.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32., 0.);
3148 case 37:
3149 return RealGradient(60.*eta + 60. - 495.*(eta + 1.)*(eta + 1.)/2. + 1275.*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 2625.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 945.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32., 0.);
3150 case 38:
3151 return RealGradient(-30.*eta - 30. + 495.*((eta + 1.)*(eta + 1.))/4. - 1275.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 2625.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/64., 0.);
3152 case 39:
3153 return RealGradient(0., 594.*eta + 2295.*xi/2. - 2295.*(eta + 1.)*(xi + 1.) + 4725.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. - 2835.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 3825.*(xi + 1.)*((eta + 1.)*(eta + 1.))/4. + 2889./2. - 495.*(eta + 1.)*(eta + 1.)/2. - 7875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 4725.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 4725.*(xi + 1.)*(xi + 1.)/4. + 2835.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8.);
3154 case 40:
3155 return RealGradient(0., 396.*eta + 765.*xi/2. - 1530.*(eta + 1.)*(xi + 1.) + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 945.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 3825.*(xi + 1.)*((eta + 1.)*(eta + 1.))/4. + 1359./2. - 495.*(eta + 1.)*(eta + 1.)/2. - 7875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 4725.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 1575.*(xi + 1.)*(xi + 1.)/4. + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8.);
3156 case 41:
3157 return RealGradient(0., -495.*eta/2. - 765.*xi/4. + 3825.*(eta + 1.)*(xi + 1.)/4. - 7875.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 4725.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 3825.*(xi + 1.)*(eta + 1.)*(eta + 1.)/8. - 1557./4. + 495.*((eta + 1.)*(eta + 1.))/4. + 7875.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/16. - 4725.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 1575.*((xi + 1.)*(xi + 1.))/8. - 945.*(xi + 1.)*(xi + 1.)*(xi + 1.)/16.);
3158 case 42:
3159 return RealGradient(0., -216.*eta - 675.*xi + 1350.*(eta + 1.)*(xi + 1.) - 1890.*(eta + 1.)*(xi + 1.)*(xi + 1.) + 2835.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 1125.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. - 783. + 90.*((eta + 1.)*(eta + 1.)) + 1575.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. - 4725.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 945.*((xi + 1.)*(xi + 1.)) - 2835.*(xi + 1.)*(xi + 1.)*(xi + 1.)/8.);
3160 case 43:
3161 return RealGradient(0., -144.*eta - 225.*xi + 900.*(eta + 1.)*(xi + 1.) - 1260.*(eta + 1.)*(xi + 1.)*(xi + 1.) + 945.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 1125.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. - 333. + 90.*((eta + 1.)*(eta + 1.)) + 1575.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. - 4725.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 315.*((xi + 1.)*(xi + 1.)) - 945.*(xi + 1.)*(xi + 1.)*(xi + 1.)/8.);
3162 case 44:
3163 return RealGradient(0., 90.*eta + 225.*xi/2. - 1125.*(eta + 1.)*(xi + 1.)/2. + 1575.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. - 4725.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 1125.*(xi + 1.)*((eta + 1.)*(eta + 1.))/4. + 369./2. - 45.*(eta + 1.)*(eta + 1.) - 1575.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/4. + 4725.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/32. - 315.*(xi + 1.)*(xi + 1.)/2. + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.))/16.);
3164 case 45:
3165 return RealGradient(-15.*eta/2. - 15./2. + 90.*((eta + 1.)*(eta + 1.)) - 375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/2. + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32., 0.);
3166 case 46:
3167 return RealGradient(-15.*eta/2. - 15./2. + 90.*((eta + 1.)*(eta + 1.)) - 375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/2. + 525.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32., 0.);
3168 case 47:
3169 return RealGradient(15.*eta/4. + 15./4. - 45.*(eta + 1.)*(eta + 1.) + 375.*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 525.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 945.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.))/64., 0.);
3170 case 48:
3171 return RealGradient(0., 81.*eta + 135.*xi/4. - 135.*(eta + 1.)*(xi + 1.)/2. + 225.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 297./4. - 135.*(eta + 1.)*(eta + 1.)/4.);
3172 case 49:
3173 return RealGradient(0., -54.*eta - 135.*xi/4. + 135.*(eta + 1.)*(xi + 1.)/2. - 225.*(xi + 1.)*(eta + 1.)*(eta + 1.)/8. - 243./4. + 45.*((eta + 1.)*(eta + 1.))/2.);
3174 case 50:
3175 return RealGradient(-30.*eta - 30. + 135.*((eta + 1.)*(eta + 1.))/4. - 75.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8., 0.);
3176 case 51:
3177 return RealGradient(15.*eta/2. + 15./2. - 45.*(eta + 1.)*(eta + 1.)/2. + 75.*((eta + 1.)*(eta + 1.)*(eta + 1.))/8., 0.);
3178 case 52:
3179 return RealGradient(-30.*eta - 30. + 135.*((eta + 1.)*(eta + 1.))/4. - 75.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8., 0.);
3180 case 53:
3181 return RealGradient(15.*eta/2. + 15./2. - 45.*(eta + 1.)*(eta + 1.)/2. + 75.*((eta + 1.)*(eta + 1.)*(eta + 1.))/8., 0.);
3182 case 54:
3183 return RealGradient(0., 54.*eta + 45.*xi/4. - 45.*(eta + 1.)*(xi + 1.) + 225.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 207./4. - 135.*(eta + 1.)*(eta + 1.)/4.);
3184 case 55:
3185 return RealGradient(0., -36.*eta - 45.*xi/4. + 45.*(eta + 1.)*(xi + 1.) - 225.*(xi + 1.)*(eta + 1.)*(eta + 1.)/8. - 153./4. + 45.*((eta + 1.)*(eta + 1.))/2.);
3186 case 56:
3187 return RealGradient(0., 0.);
3188 case 57:
3189 return RealGradient(0., 15.*xi/4. - 3./4.);
3190 case 58:
3191 return RealGradient(0., -15.*xi/4. - 3./4.);
3192 case 59:
3193 return RealGradient(0., 0.);
3194 default:
3195 libmesh_error_msg("Invalid i = " << i);
3196 }
3197 } // j = 0
3198
3199 // d^2()/dxideta
3200 case 1:
3201 {
3202 switch(ii)
3203 {
3204 case 0:
3205 return sign * RealGradient(-5625.*eta - 13125.*xi/4. + 78750.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 157500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 94500.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 275625.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 367500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 165375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 31875./4. + 39375.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 551250.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 330750.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 13125.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 735000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 330750.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 52500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 441000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 7875.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 198450.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 23625.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
3206 case 1:
3207 return sign * RealGradient(214875.*eta/128. + 527625.*xi/512. - 1582875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. + 3063375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 874125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 11080125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/128. - 3693375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 6648075.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/128. + 1243875./512. - 1504125.*(eta + 1.)*(eta + 1.)/(2.*2.)/128. - 21443625.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 6118875.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 1021125.*(xi + 1.)*(xi + 1.)/(2.*2.)/256. + 7147875.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/32. - 12866175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. + 501375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/32. - 2039625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/16. + 291375.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/128. + 3671325.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. - 902475.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128., 0.);
3208 case 2:
3209 return sign * RealGradient(-7875.*eta/8. - 28875.*xi/32. + 86625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/4. - 212625.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 70875.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 606375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/8. + 202125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 363825.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/8. - 55125./32. + 55125.*((eta + 1.)*(eta + 1.)/(2.*2.))/8. + 1488375.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 496125.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 70875.*((xi + 1.)*(xi + 1.)/(2.*2.))/16. - 496125.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 893025.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. - 18375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 165375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 23625.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/8. - 297675.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4. + 33075.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8., 0.);
3210 case 3:
3211 return sign * RealGradient(52875.*eta/128. + 233625.*xi/512. - 700875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. + 2181375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/64. - 874125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 4906125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/128. - 1635375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/32. + 2943675.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/128. + 409875./512. - 370125.*(eta + 1.)*(eta + 1.)/(2.*2.)/128. - 15269625.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 6118875.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 727125.*(xi + 1.)*(xi + 1.)/(2.*2.)/256. + 5089875.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/32. - 9161775.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. + 123375.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/32. - 2039625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/16. + 291375.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/128. + 3671325.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. - 222075.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128., 0.);
3212 case 4:
3213 return sign * RealGradient(-2250.*eta - 7875.*xi/4. + 47250.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 126000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 94500.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 165375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 220500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 99225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 15375./4. + 15750.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 441000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 330750.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 10500.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 588000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 264600.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 21000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 441000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 7875.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 198450.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 9450.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
3214 case 5:
3215 return sign * RealGradient(0., 2625.*eta/4. + 2250.*xi - 31500.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 165375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 294000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 165375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 63000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 37800.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 10875./4. - 2625.*(eta + 1.)*(eta + 1.)/(2.*2.) - 330750.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 588000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 330750.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 23625.*(xi + 1.)*(xi + 1.)/(2.*2.) + 198450.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 1575.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 352800.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 198450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 42000.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 23625.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
3216 case 6:
3217 return sign * RealGradient(0., -105525.*eta/512. - 42975.*xi/64. + 316575.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/32. - 6648075.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 738675.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/8. - 6648075.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 612675.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/32. + 174825.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/16. - 420675./512. + 204225.*((eta + 1.)*(eta + 1.)/(2.*2.))/256. + 12866175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 1429575.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/8. + 12866175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 902475.*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 3671325.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. - 58275.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/128. + 407925.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 3671325.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. - 100275.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/8. + 902475.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128.);
3218 case 7:
3219 return sign * RealGradient(0., 5775.*eta/32. + 1575.*xi/4. - 17325.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 363825.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 80850.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 363825.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/8. + 42525.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 14175.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 17325./32. - 14175.*(eta + 1.)*(eta + 1.)/(2.*2.)/16. - 893025.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 198450.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 893025.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. - 33075.*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 297675.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. + 4725.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/8. - 132300.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 297675.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. + 7350.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 33075.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8.);
3220 case 8:
3221 return sign * RealGradient(0., -46725.*eta/512. - 10575.*xi/64. + 140175.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/32. - 2943675.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 327075.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/8. - 2943675.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 436275.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/32. + 174825.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/16. - 124275./512. + 145425.*((eta + 1.)*(eta + 1.)/(2.*2.))/256. + 9161775.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 1017975.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/8. + 9161775.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 222075.*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 3671325.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. - 58275.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/128. + 407925.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/4. - 3671325.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. - 24675.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/8. + 222075.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128.);
3222 case 9:
3223 return sign * RealGradient(0., 1575.*eta/4. + 900.*xi - 18900.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 99225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 176400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 99225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 50400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 37800.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4875./4. - 2100.*(eta + 1.)*(eta + 1.)/(2.*2.) - 264600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 470400.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 264600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 9450.*(xi + 1.)*(xi + 1.)/(2.*2.) + 198450.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 1575.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 352800.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 198450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 16800.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 9450.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
3224 case 10:
3225 return sign * RealGradient(-900.*eta - 1575.*xi/4. + 18900.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 50400.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 37800.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 99225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 176400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 99225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 4875./4. + 9450.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 264600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 198450.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2100.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 470400.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 264600.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 16800.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 352800.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 198450.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 9450.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
3226 case 11:
3227 return sign * RealGradient(10575.*eta/64. + 46725.*xi/512. - 140175.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/32. + 436275.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/32. - 174825.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/16. + 2943675.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/128. - 327075.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/8. + 2943675.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/128. + 124275./512. - 222075.*(eta + 1.)*(eta + 1.)/(2.*2.)/128. - 9161775.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 3671325.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 145425.*(xi + 1.)*(xi + 1.)/(2.*2.)/256. + 1017975.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/8. - 9161775.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. + 24675.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/8. - 407925.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 58275.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/128. + 3671325.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. - 222075.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128., 0.);
3228 case 12:
3229 return sign * RealGradient(-1575.*eta/4. - 5775.*xi/32. + 17325.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 42525.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 14175.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 363825.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/8. + 80850.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 363825.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/8. - 17325./32. + 33075.*((eta + 1.)*(eta + 1.)/(2.*2.))/8. + 893025.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 297675.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 14175.*((xi + 1.)*(xi + 1.)/(2.*2.))/16. - 198450.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 893025.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8. - 7350.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 132300.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4725.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/8. - 297675.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4. + 33075.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/8., 0.);
3230 case 13:
3231 return sign * RealGradient(42975.*eta/64. + 105525.*xi/512. - 316575.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/32. + 612675.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/32. - 174825.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/16. + 6648075.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/128. - 738675.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/8. + 6648075.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/128. + 420675./512. - 902475.*(eta + 1.)*(eta + 1.)/(2.*2.)/128. - 12866175.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 3671325.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/64. - 204225.*(xi + 1.)*(xi + 1.)/(2.*2.)/256. + 1429575.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/8. - 12866175.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128. + 100275.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/8. - 407925.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/4. + 58275.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/128. + 3671325.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/64. - 902475.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/128., 0.);
3232 case 14:
3233 return sign * RealGradient(-2250.*eta - 2625.*xi/4. + 31500.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 63000.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 37800.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 165375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 294000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 165375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 10875./4. + 23625.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 330750.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 198450.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2625.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 588000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 330750.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 42000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 352800.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) - 198450.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 23625.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
3234 case 15:
3235 return sign * RealGradient(0., 7875.*eta/4. + 2250.*xi - 47250.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 165375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 220500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 99225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 126000.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 94500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 15375./4. - 10500.*(eta + 1.)*(eta + 1.)/(2.*2.) - 441000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 588000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 264600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 15750.*(xi + 1.)*(xi + 1.)/(2.*2.) + 330750.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 7875.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 441000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 198450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 21000.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 9450.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
3236 case 16:
3237 return sign * RealGradient(0., -233625.*eta/512. - 52875.*xi/128. + 700875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. - 4906125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 1635375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 2943675.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 2181375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/64. + 874125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/32. - 409875./512. + 727125.*((eta + 1.)*(eta + 1.)/(2.*2.))/256. + 15269625.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 5089875.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 9161775.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 370125.*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 6118875.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. - 291375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/128. + 2039625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/16. - 3671325.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. - 123375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 222075.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128.);
3238 case 17:
3239 return sign * RealGradient(0., 28875.*eta/32. + 7875.*xi/8. - 86625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/4. + 606375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/8. - 202125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 363825.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/8. + 212625.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/4. - 70875.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. + 55125./32. - 70875.*(eta + 1.)*(eta + 1.)/(2.*2.)/16. - 1488375.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 496125.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 893025.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8. - 55125.*(xi + 1.)*(xi + 1.)/(2.*2.)/8. + 496125.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/4. + 23625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/8. - 165375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 297675.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4. + 18375.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 33075.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/8.);
3240 case 18:
3241 return sign * RealGradient(0., -527625.*eta/512. - 214875.*xi/128. + 1582875.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/64. - 11080125.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/128. + 3693375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/32. - 6648075.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/128. - 3063375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/64. + 874125.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/32. - 1243875./512. + 1021125.*((eta + 1.)*(eta + 1.)/(2.*2.))/256. + 21443625.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 7147875.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 12866175.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128. + 1504125.*((xi + 1.)*(xi + 1.)/(2.*2.))/128. - 6118875.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/64. - 291375.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/128. + 2039625.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/16. - 3671325.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/64. - 501375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/32. + 902475.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/128.);
3242 case 19:
3243 return sign * RealGradient(0., 13125.*eta/4. + 5625.*xi - 78750.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 275625.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 367500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 165375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 157500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 94500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 31875./4. - 13125.*(eta + 1.)*(eta + 1.)/(2.*2.) - 551250.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 735000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 330750.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 39375.*(xi + 1.)*(xi + 1.)/(2.*2.) + 330750.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) + 7875.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 441000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 198450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 52500.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 23625.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
3244 case 20:
3245 return RealGradient(0., 20475.*eta/8. + 10575.*xi/2. - 74025.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 1088325.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 367500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 165375.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 148050.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 88830.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 56925./8. - 20475.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 1088325.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 735000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 330750.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 155475.*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 652995.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. + 12285.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 441000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 198450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 52500.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 23625.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
3246 case 21:
3247 return RealGradient(0., -525.*eta - 8325.*xi/4. + 58275.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 647325.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 294000.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 165375.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 58275.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 34965.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 9825./4. + 2100.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 647325.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 588000.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 330750.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 92475.*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 388395.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. - 1260.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 352800.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 198450.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 42000.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 23625.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
3248 case 22:
3249 return RealGradient(0., 4725.*eta/4. + 3375.*xi/4. - 23625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 42525.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/4. + 23625.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 14175.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3375./2. - 4725.*(eta + 1.)*(eta + 1.)/(2.*2.) - 42525.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. - 6075.*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 25515.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. + 2835.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)));
3250 case 23:
3251 return RealGradient(0., -4725.*eta/8. - 675.*xi + 9450.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 42525.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. - 18900.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 11340.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 8775./8. + 4725.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 42525.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. + 6075.*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 25515.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. - 2835.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2.);
3252 case 24:
3253 return RealGradient(-10575.*eta/2. - 20475.*xi/8. + 74025.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 148050.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 88830.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1088325.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/4. + 367500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 165375.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 56925./8. + 155475.*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 1088325.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 652995.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 20475.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 735000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 330750.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 52500.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 441000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 12285.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. - 198450.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 23625.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
3254 case 25:
3255 return RealGradient(8325.*eta/4. + 525.*xi - 58275.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 58275.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 34965.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 647325.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/4. - 294000.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 165375.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 9825./4. - 92475.*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 647325.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 388395.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 2100.*(xi + 1.)*(xi + 1.)/(2.*2.) + 588000.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 330750.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 42000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 352800.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1260.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 198450.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 23625.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
3256 case 26:
3257 return RealGradient(-3375.*eta/4. - 4725.*xi/4. + 23625.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 23625.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 14175.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 42525.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 3375./2. + 6075.*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 42525.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 25515.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 4725.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2835.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.), 0.);
3258 case 27:
3259 return RealGradient(675.*eta + 4725.*xi/8. - 9450.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 18900.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 11340.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 42525.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 8775./8. - 6075.*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 42525.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 25515.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 4725.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 2835.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2., 0.);
3260 case 28:
3261 return RealGradient(-2115.*eta - 12285.*xi/8. + 44415.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 118440.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 88830.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 652995.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/4. + 220500.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 99225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 26865./8. + 31095.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 435330.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 652995.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 8190.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 588000.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 264600.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 21000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 441000.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 12285.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. - 198450.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 9450.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
3262 case 29:
3263 return RealGradient(1665.*eta/2. + 315.*xi - 34965.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 46620.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 34965.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 388395.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/4. - 176400.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 99225.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 2175./2. - 18495.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 258930.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 388395.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 1680.*(xi + 1.)*(xi + 1.)/(2.*2.) + 470400.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 264600.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) + 16800.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 352800.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1260.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) + 198450.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) - 9450.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
3264 case 30:
3265 return RealGradient(-675.*eta/2. - 2835.*xi/4. + 14175.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 18900.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 14175.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 25515.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.)/4. - 3645./4. + 1215.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. + 17010.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 25515.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)/2. + 3780.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 2835.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.), 0.);
3266 case 31:
3267 return RealGradient(270.*eta + 2835.*xi/8. - 5670.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 15120.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 11340.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 25515.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.))/4. + 4455./8. - 1215.*(eta + 1.)*(eta + 1.)/(2.*2.)/2. - 17010.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 25515.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2. - 1890.*(xi + 1.)*(xi + 1.)/(2.*2.) + 2835.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.))/2., 0.);
3268 case 32:
3269 return RealGradient(0., 12285.*eta/8. + 2115.*xi - 44415.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 652995.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/4. - 220500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 99225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 118440.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 88830.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 26865./8. - 8190.*(eta + 1.)*(eta + 1.)/(2.*2.) - 435330.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 588000.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 264600.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 31095.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 652995.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. + 12285.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. - 441000.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 198450.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 21000.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 9450.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
3270 case 33:
3271 return RealGradient(0., -315.*eta - 1665.*xi/2. + 34965.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. - 388395.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. + 176400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 99225.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 46620.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 34965.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2175./2. + 1680.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 258930.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) - 470400.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 264600.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 18495.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 388395.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. - 1260.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 352800.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 198450.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 16800.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 9450.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
3272 case 34:
3273 return RealGradient(0., 2835.*eta/4. + 675.*xi/2. - 14175.*(eta/2. + 1./2.)*(xi/2. + 1./2.)/2. + 25515.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.))/4. + 18900.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 14175.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 3645./4. - 3780.*(eta + 1.)*(eta + 1.)/(2.*2.) - 17010.*(eta + 1.)*(eta + 1.)/(2.*2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 1215.*(xi + 1.)*(xi + 1.)/(2.*2.)/2. + 25515.*((xi + 1.)*(xi + 1.)/(2.*2.))*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.))/2. + 2835.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)));
3274 case 35:
3275 return RealGradient(0., -2835.*eta/8. - 270.*xi + 5670.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 25515.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.)/4. - 15120.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 11340.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4455./8. + 1890.*((eta + 1.)*(eta + 1.)/(2.*2.)) + 17010.*((eta + 1.)*(eta + 1.)/(2.*2.))*((xi + 1.)*(xi + 1.)/(2.*2.)) + 1215.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 25515.*(xi + 1.)*(xi + 1.)/(2.*2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2. - 2835.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)/2.);
3276 case 36:
3277 return RealGradient(594.*eta + 60.*xi - 1980.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 7650.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 10500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4725.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 582. - 4590.*(eta + 1.)*(eta + 1.)/(2.*2.) + 6300.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 2835.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
3278 case 37:
3279 return RealGradient(396.*eta + 60.*xi - 1980.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 7650.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 10500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4725.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)) + 408. - 3060.*(eta + 1.)*(eta + 1.)/(2.*2.) + 4200.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 1890.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.), 0.);
3280 case 38:
3281 return RealGradient(-495.*eta/2. - 30.*xi + 990.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 3825.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 5250.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4725.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/2. - 495./2. + 3825.*((eta + 1.)*(eta + 1.)/(2.*2.))/2. - 2625.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4725.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/4., 0.);
3282 case 39:
3283 return RealGradient(0., 60.*eta + 594.*xi - 1980.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 7650.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 10500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4725.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 582. - 4590.*(xi + 1.)*(xi + 1.)/(2.*2.) + 6300.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 2835.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
3284 case 40:
3285 return RealGradient(0., 60.*eta + 396.*xi - 1980.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 7650.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 10500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4725.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)) + 408. - 3060.*(xi + 1.)*(xi + 1.)/(2.*2.) + 4200.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 1890.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.));
3286 case 41:
3287 return RealGradient(0., -30.*eta - 495.*xi/2. + 990.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 3825.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 5250.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4725.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/2. - 495./2. + 3825.*((xi + 1.)*(xi + 1.)/(2.*2.))/2. - 2625.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4725.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/4.);
3288 case 42:
3289 return RealGradient(0., -15.*eta/2. - 216.*xi + 720.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 4500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4725.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 429./2. + 2700.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 5040.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 2835.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
3290 case 43:
3291 return RealGradient(0., -15.*eta/2. - 144.*xi + 720.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 4500.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) + 8400.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4725.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.) - 291./2. + 1800.*((xi + 1.)*(xi + 1.)/(2.*2.)) - 3360.*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 1890.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)));
3292 case 44:
3293 return RealGradient(0., 15.*eta/4. + 90.*xi - 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 2250.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) - 4200.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.) + 4725.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.))/2. + 90. - 1125.*(xi + 1.)*(xi + 1.)/(2.*2.) + 2100.*((xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.)) - 4725.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/(2.*2.*2.*2.)/4.);
3294 case 45:
3295 return RealGradient(-216.*eta - 15.*xi/2. + 720.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 4500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 8400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4725.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 429./2. + 2700.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 5040.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 2835.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
3296 case 46:
3297 return RealGradient(-144.*eta - 15.*xi/2. + 720.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 4500.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) + 8400.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4725.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.) - 291./2. + 1800.*((eta + 1.)*(eta + 1.)/(2.*2.)) - 3360.*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 1890.*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)), 0.);
3298 case 47:
3299 return RealGradient(90.*eta + 15.*xi/4. - 360.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 2250.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) - 4200.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.) + 4725.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.))/2. + 90. - 1125.*(eta + 1.)*(eta + 1.)/(2.*2.) + 2100.*((eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.)) - 4725.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/(2.*2.*2.*2.)/4., 0.);
3300 case 48:
3301 return RealGradient(0., 30.*eta + 81.*xi - 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 75. - 135.*(xi + 1.)*(xi + 1.)/(2.*2.));
3302 case 49:
3303 return RealGradient(0., -15.*eta/2. - 54.*xi + 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 105./2. + 135.*((xi + 1.)*(xi + 1.)/(2.*2.)));
3304 case 50:
3305 return RealGradient(-81.*eta - 30.*xi + 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 75. + 135.*((eta + 1.)*(eta + 1.)/(2.*2.)), 0.);
3306 case 51:
3307 return RealGradient(54.*eta + 15.*xi/2. - 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 105./2. - 135.*(eta + 1.)*(eta + 1.)/(2.*2.), 0.);
3308 case 52:
3309 return RealGradient(-54.*eta - 30.*xi + 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(xi/2. + 1./2.)*(eta + 1.)*(eta + 1.)/(2.*2.) - 60. + 90.*((eta + 1.)*(eta + 1.)/(2.*2.)), 0.);
3310 case 53:
3311 return RealGradient(36.*eta + 15.*xi/2. - 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(xi/2. + 1./2.)*((eta + 1.)*(eta + 1.)/(2.*2.)) + 75./2. - 90.*(eta + 1.)*(eta + 1.)/(2.*2.), 0.);
3312 case 54:
3313 return RealGradient(0., 30.*eta + 54.*xi - 270.*(eta/2. + 1./2.)*(xi/2. + 1./2.) + 225.*(eta/2. + 1./2.)*((xi + 1.)*(xi + 1.)/(2.*2.)) + 60. - 90.*(xi + 1.)*(xi + 1.)/(2.*2.));
3314 case 55:
3315 return RealGradient(0., -15.*eta/2. - 36.*xi + 180.*(eta/2. + 1./2.)*(xi/2. + 1./2.) - 225.*(eta/2. + 1./2.)*(xi + 1.)*(xi + 1.)/(2.*2.) - 75./2. + 90.*((xi + 1.)*(xi + 1.)/(2.*2.)));
3316 case 56:
3317 return RealGradient(0., 0.);
3318 case 57:
3319 return RealGradient(0., 0.);
3320 case 58:
3321 return RealGradient(0., 0.);
3322 case 59:
3323 return RealGradient(0., 0.);
3324 default:
3325 libmesh_error_msg("Invalid i = " << i);
3326 }
3327 } // j = 1
3328
3329 // d^2()/deta^2
3330 case 2:
3331 {
3332 switch(ii)
3333 {
3334 case 0:
3335 return sign * RealGradient(-13125.*eta/4. - 5625.*xi + 39375.*(eta + 1.)*(xi + 1.)/2. - 275625.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 91875.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 165375.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. - 39375.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. + 23625.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 31875./4. + 13125.*((eta + 1.)*(eta + 1.))/4. + 275625.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. - 91875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32. + 39375.*((xi + 1.)*(xi + 1.))/4. - 165375.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 7875.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 55125.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. - 13125.*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 23625.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/16., 0.);
3336 case 1:
3337 return sign * RealGradient(254625.*eta/512. + 214875.*xi/128. - 1504125.*(eta + 1.)*(xi + 1.)/256. + 11080125.*(eta + 1.)*((xi + 1.)*(xi + 1.))/1024. - 7147875.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. + 6118875.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4096. + 1504125.*(xi + 1.)*((eta + 1.)*(eta + 1.))/256. - 902475.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/512. + 1041375./512. - 254625.*(eta + 1.)*(eta + 1.)/512. - 11080125.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/1024. + 7147875.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/1024. - 6118875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4096. - 1582875.*(xi + 1.)*(xi + 1.)/512. + 6648075.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/2048. + 152775.*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 4288725.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 3671325.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8192. + 1021125.*((xi + 1.)*(xi + 1.)*(xi + 1.))/512. - 874125.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048., 0.);
3338 case 2:
3339 return sign * RealGradient(-7875.*eta/32. - 7875.*xi/8. + 55125.*(eta + 1.)*(xi + 1.)/16. - 606375.*(eta + 1.)*(xi + 1.)*(xi + 1.)/64. + 496125.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 496125.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/256. - 55125.*(xi + 1.)*(eta + 1.)*(eta + 1.)/16. + 33075.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 37125./32. + 7875.*((eta + 1.)*(eta + 1.))/32. + 606375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/64. - 496125.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. + 496125.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/256. + 86625.*((xi + 1.)*(xi + 1.))/32. - 363825.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/128. - 4725.*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 297675.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/128. - 297675.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/512. - 70875.*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 70875.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/128., 0.);
3340 case 3:
3341 return sign * RealGradient(44625.*eta/512. + 52875.*xi/128. - 370125.*(eta + 1.)*(xi + 1.)/256. + 4906125.*(eta + 1.)*((xi + 1.)*(xi + 1.))/1024. - 5089875.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. + 6118875.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4096. + 370125.*(xi + 1.)*((eta + 1.)*(eta + 1.))/256. - 222075.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/512. + 243375./512. - 44625.*(eta + 1.)*(eta + 1.)/512. - 4906125.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/1024. + 5089875.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/1024. - 6118875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4096. - 700875.*(xi + 1.)*(xi + 1.)/512. + 2943675.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/2048. + 26775.*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 3053925.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 3671325.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8192. + 727125.*((xi + 1.)*(xi + 1.)*(xi + 1.))/512. - 874125.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048., 0.);
3342 case 4:
3343 return sign * RealGradient(-2625.*eta/4. - 2250.*xi + 7875.*(eta + 1.)*(xi + 1.) - 165375.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 18375.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 165375.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. - 7875.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 4725.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/2. - 10875./4. + 2625.*((eta + 1.)*(eta + 1.))/4. + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. - 18375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32. + 23625.*((xi + 1.)*(xi + 1.))/4. - 99225.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 11025.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. - 5250.*(xi + 1.)*(xi + 1.)*(xi + 1.) + 23625.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/16., 0.);
3344 case 5:
3345 return sign * RealGradient(0., 2625.*xi/4. - 2625.*(eta + 1.)*(xi + 1.)/2. + 7875.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 55125.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 18375.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 33075.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 4725.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 2625./4. - 14175.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/4. + 99225.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 33075.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. + 59535.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 7875.*(xi + 1.)*(xi + 1.)/2. + 55125.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 18375.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 33075.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32.);
3346 case 6:
3347 return sign * RealGradient(0., -105525.*xi/512. + 204225.*(eta + 1.)*(xi + 1.)/512. - 612675.*(eta + 1.)*(xi + 1.)*(xi + 1.)/256. + 4288725.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/1024. - 1429575.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/512. + 2573235.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4096. - 174825.*(xi + 1.)*(eta + 1.)*(eta + 1.)/1024. - 105525./512. + 524475.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/512. - 3671325.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 1223775.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/1024. - 2202795.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8192. + 316575.*((xi + 1.)*(xi + 1.))/256. - 2216025.*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. + 738675.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/512. - 1329615.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4096.);
3348 case 7:
3349 return sign * RealGradient(0., 5775.*xi/32. - 14175.*(eta + 1.)*(xi + 1.)/32. + 42525.*(eta + 1.)*((xi + 1.)*(xi + 1.))/16. - 297675.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. + 99225.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32. - 178605.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/256. + 14175.*(xi + 1.)*((eta + 1.)*(eta + 1.))/64. + 5775./32. - 42525.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/32. + 297675.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/128. - 99225.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. + 178605.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/512. - 17325.*(xi + 1.)*(xi + 1.)/16. + 121275.*((xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 40425.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 72765.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/256.);
3350 case 8:
3351 return sign * RealGradient(0., -46725.*xi/512. + 145425.*(eta + 1.)*(xi + 1.)/512. - 436275.*(eta + 1.)*(xi + 1.)*(xi + 1.)/256. + 3053925.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/1024. - 1017975.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/512. + 1832355.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4096. - 174825.*(xi + 1.)*(eta + 1.)*(eta + 1.)/1024. - 46725./512. + 524475.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/512. - 3671325.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 1223775.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/1024. - 2202795.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8192. + 140175.*((xi + 1.)*(xi + 1.))/256. - 981225.*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. + 327075.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/512. - 588735.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4096.);
3352 case 9:
3353 return sign * RealGradient(0., 1575.*xi/4. - 1050.*(eta + 1.)*(xi + 1.) + 6300.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 11025.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 7350.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)) - 6615.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 4725.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 1575./4. - 14175.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/4. + 99225.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 33075.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. + 59535.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 4725.*(xi + 1.)*(xi + 1.)/2. + 33075.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 11025.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 19845.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32.);
3354 case 10:
3355 return sign * RealGradient(-1575.*eta/4. - 900.*xi + 4725.*(eta + 1.)*(xi + 1.) - 99225.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 11025.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 99225.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. - 6300.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 4725.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/2. - 4875./4. + 525.*((eta + 1.)*(eta + 1.)) + 33075.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. - 14700.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 33075.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8. + 4725.*((xi + 1.)*(xi + 1.))/2. - 99225.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 11025.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. - 2100.*(xi + 1.)*(xi + 1.)*(xi + 1.) + 4725.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8., 0.);
3356 case 11:
3357 return sign * RealGradient(26775.*eta/512. + 10575.*xi/64. - 222075.*(eta + 1.)*(xi + 1.)/256. + 2943675.*(eta + 1.)*((xi + 1.)*(xi + 1.))/1024. - 3053925.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. + 3671325.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4096. + 74025.*(xi + 1.)*((eta + 1.)*(eta + 1.))/64. - 222075.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/512. + 106275./512. - 8925.*(eta + 1.)*(eta + 1.)/128. - 981225.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/256. + 1017975.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/256. - 1223775.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. - 140175.*(xi + 1.)*(xi + 1.)/256. + 2943675.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/2048. + 26775.*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 3053925.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 3671325.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8192. + 145425.*((xi + 1.)*(xi + 1.)*(xi + 1.))/256. - 174825.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024., 0.);
3358 case 12:
3359 return sign * RealGradient(-4725.*eta/32. - 1575.*xi/4. + 33075.*(eta + 1.)*(xi + 1.)/16. - 363825.*(eta + 1.)*(xi + 1.)*(xi + 1.)/64. + 297675.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 297675.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/256. - 11025.*(xi + 1.)*(eta + 1.)*(eta + 1.)/4. + 33075.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/32. - 16425./32. + 1575.*((eta + 1.)*(eta + 1.))/8. + 121275.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/16. - 99225.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 99225.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64. + 17325.*((xi + 1.)*(xi + 1.))/16. - 363825.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/128. - 4725.*(eta + 1.)*(eta + 1.)*(eta + 1.)/64. + 297675.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/128. - 297675.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/512. - 14175.*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 14175.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64., 0.);
3360 case 13:
3361 return sign * RealGradient(152775.*eta/512. + 42975.*xi/64. - 902475.*(eta + 1.)*(xi + 1.)/256. + 6648075.*(eta + 1.)*((xi + 1.)*(xi + 1.))/1024. - 4288725.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. + 3671325.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4096. + 300825.*(xi + 1.)*((eta + 1.)*(eta + 1.))/64. - 902475.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/512. + 467475./512. - 50925.*(eta + 1.)*(eta + 1.)/128. - 2216025.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/256. + 1429575.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/256. - 1223775.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. - 316575.*(xi + 1.)*(xi + 1.)/256. + 6648075.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/2048. + 152775.*((eta + 1.)*(eta + 1.)*(eta + 1.))/1024. - 4288725.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 3671325.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8192. + 204225.*((xi + 1.)*(xi + 1.)*(xi + 1.))/256. - 174825.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024., 0.);
3362 case 14:
3363 return sign * RealGradient(-7875.*eta/4. - 2250.*xi + 23625.*(eta + 1.)*(xi + 1.)/2. - 165375.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 55125.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 99225.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. - 15750.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 23625.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 15375./4. + 2625.*((eta + 1.)*(eta + 1.)) + 55125.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. - 18375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 33075.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8. + 7875.*((xi + 1.)*(xi + 1.))/2. - 165375.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 7875.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 55125.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. - 2625.*(xi + 1.)*(xi + 1.)*(xi + 1.) + 4725.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8., 0.);
3364 case 15:
3365 return sign * RealGradient(0., 420.*eta + 7875.*xi/4. - 5250.*(eta + 1.)*(xi + 1.) + 15750.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 18375.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 18375.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 6615.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 23625.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 8925./4. - 945.*(eta + 1.)*(eta + 1.)/4. - 70875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 165375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 59535.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 23625.*(xi + 1.)*(xi + 1.)/4. + 55125.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 55125.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 19845.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32.);
3366 case 16:
3367 return sign * RealGradient(0., -29085.*eta/256. - 233625.*xi/512. + 727125.*(eta + 1.)*(xi + 1.)/512. - 2181375.*(eta + 1.)*(xi + 1.)*(xi + 1.)/512. + 5089875.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/1024. - 5089875.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 1832355.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4096. - 874125.*(xi + 1.)*(eta + 1.)*(eta + 1.)/1024. - 273105./512. + 34965.*((eta + 1.)*(eta + 1.))/512. + 2622375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/1024. - 6118875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 6118875.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4096. - 2202795.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8192. + 700875.*((xi + 1.)*(xi + 1.))/512. - 1635375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. + 1635375.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/2048. - 588735.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4096.);
3368 case 17:
3369 return sign * RealGradient(0., 2835.*eta/16. + 28875.*xi/32. - 70875.*(eta + 1.)*(xi + 1.)/32. + 212625.*(eta + 1.)*((xi + 1.)*(xi + 1.))/32. - 496125.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. + 496125.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/128. - 178605.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/256. + 70875.*(xi + 1.)*((eta + 1.)*(eta + 1.))/64. + 32235./32. - 2835.*(eta + 1.)*(eta + 1.)/32. - 212625.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/64. + 496125.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/128. - 496125.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/256. + 178605.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/512. - 86625.*(xi + 1.)*(xi + 1.)/32. + 202125.*((xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 202125.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/128. + 72765.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/256.);
3370 case 18:
3371 return sign * RealGradient(0., -40845.*eta/256. - 527625.*xi/512. + 1021125.*(eta + 1.)*(xi + 1.)/512. - 3063375.*(eta + 1.)*(xi + 1.)*(xi + 1.)/512. + 7147875.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/1024. - 7147875.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 2573235.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4096. - 874125.*(xi + 1.)*(eta + 1.)*(eta + 1.)/1024. - 567105./512. + 34965.*((eta + 1.)*(eta + 1.))/512. + 2622375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/1024. - 6118875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2048. + 6118875.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4096. - 2202795.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8192. + 1582875.*((xi + 1.)*(xi + 1.))/512. - 3693375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/1024. + 3693375.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/2048. - 1329615.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4096.);
3372 case 19:
3373 return sign * RealGradient(0., 525.*eta + 13125.*xi/4. - 13125.*(eta + 1.)*(xi + 1.)/2. + 39375.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. - 91875.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 91875.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 33075.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 23625.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 14175./4. - 945.*(eta + 1.)*(eta + 1.)/4. - 70875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 165375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 59535.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 39375.*(xi + 1.)*(xi + 1.)/4. + 91875.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 91875.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 33075.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32.);
3374 case 20:
3375 return RealGradient(0., 20475.*xi/8. - 20475.*(eta + 1.)*(xi + 1.)/4. + 74025.*(eta + 1.)*((xi + 1.)*(xi + 1.))/4. - 362775.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 91875.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 33075.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 36855.*(xi + 1.)*((eta + 1.)*(eta + 1.))/16. + 20475./8. - 133245.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/16. + 652995.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 165375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 59535.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 74025.*(xi + 1.)*(xi + 1.)/8. + 362775.*((xi + 1.)*(xi + 1.)*(xi + 1.))/32. - 91875.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 33075.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32.);
3376 case 21:
3377 return RealGradient(0., -525.*xi + 1050.*(eta + 1.)*(xi + 1.) - 58275.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. + 215775.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 18375.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 33075.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 945.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. - 525. + 104895.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/32. - 388395.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. + 33075.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 59535.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. + 58275.*((xi + 1.)*(xi + 1.))/16. - 215775.*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 18375.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 33075.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32.);
3378 case 22:
3379 return RealGradient(0., 4725.*xi/4. - 4725.*(eta + 1.)*(xi + 1.)/2. + 23625.*(eta + 1.)*((xi + 1.)*(xi + 1.))/8. - 14175.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 8505.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 4725./4. - 42525.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/32. + 25515.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 23625.*(xi + 1.)*(xi + 1.)/16. + 14175.*((xi + 1.)*(xi + 1.)*(xi + 1.))/32.);
3380 case 23:
3381 return RealGradient(0., -4725.*xi/8. + 4725.*(eta + 1.)*(xi + 1.)/4. - 4725.*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 14175.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 8505.*(xi + 1.)*(eta + 1.)*(eta + 1.)/16. - 4725./8. + 8505.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. - 25515.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. + 4725.*((xi + 1.)*(xi + 1.))/4. - 14175.*(xi + 1.)*(xi + 1.)*(xi + 1.)/32.);
3382 case 24:
3383 return RealGradient(-51825.*eta/16. - 10575.*xi/2. + 155475.*(eta + 1.)*(xi + 1.)/8. - 1088325.*(eta + 1.)*(xi + 1.)*(xi + 1.)/32. + 362775.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 652995.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/128. - 39375.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. + 23625.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 122325./16. + 13125.*((eta + 1.)*(eta + 1.))/4. + 275625.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. - 91875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32. + 74025.*((xi + 1.)*(xi + 1.))/8. - 165375.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 7875.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 55125.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. - 24675.*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 44415.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32., 0.);
3384 case 25:
3385 return RealGradient(30825.*eta/16. + 8325.*xi/4. - 92475.*(eta + 1.)*(xi + 1.)/8. + 647325.*(eta + 1.)*((xi + 1.)*(xi + 1.))/32. - 215775.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 388395.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/128. + 15750.*(xi + 1.)*((eta + 1.)*(eta + 1.)) - 23625.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 58575./16. - 2625.*(eta + 1.)*(eta + 1.) - 55125.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 18375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 33075.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. - 58275.*(xi + 1.)*(xi + 1.)/16. + 165375.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. + 7875.*((eta + 1.)*(eta + 1.)*(eta + 1.))/8. - 55125.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64. + 19425.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 34965.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64., 0.);
3386 case 26:
3387 return RealGradient(-2025.*eta/16. - 3375.*xi/4. + 6075.*(eta + 1.)*(xi + 1.)/8. - 42525.*(eta + 1.)*(xi + 1.)*(xi + 1.)/32. + 14175.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/16. - 25515.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/128. - 13275./16. + 23625.*((xi + 1.)*(xi + 1.))/16. - 7875.*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. + 14175.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64., 0.);
3388 case 27:
3389 return RealGradient(2025.*eta/16. + 675.*xi - 6075.*(eta + 1.)*(xi + 1.)/8. + 42525.*(eta + 1.)*((xi + 1.)*(xi + 1.))/32. - 14175.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 25515.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/128. + 11025./16. - 4725.*(xi + 1.)*(xi + 1.)/4. + 1575.*((xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 2835.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16., 0.);
3390 case 28:
3391 return RealGradient(-10365.*eta/16. - 2115.*xi + 31095.*(eta + 1.)*(xi + 1.)/4. - 652995.*(eta + 1.)*(xi + 1.)*(xi + 1.)/32. + 72555.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 652995.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/128. - 7875.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 4725.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/2. - 41385./16. + 2625.*((eta + 1.)*(eta + 1.))/4. + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. - 18375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 165375.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32. + 44415.*((xi + 1.)*(xi + 1.))/8. - 99225.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 1575.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8. + 11025.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 99225.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. - 4935.*(xi + 1.)*(xi + 1.)*(xi + 1.) + 44415.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32., 0.);
3392 case 29:
3393 return RealGradient(6165.*eta/16. + 1665.*xi/2. - 18495.*(eta + 1.)*(xi + 1.)/4. + 388395.*(eta + 1.)*((xi + 1.)*(xi + 1.))/32. - 43155.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 388395.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/128. + 6300.*(xi + 1.)*((eta + 1.)*(eta + 1.)) - 4725.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/2. + 18375./16. - 525.*(eta + 1.)*(eta + 1.) - 33075.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 14700.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 33075.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. - 34965.*(xi + 1.)*(xi + 1.)/16. + 99225.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. + 1575.*((eta + 1.)*(eta + 1.)*(eta + 1.))/8. - 11025.*(eta + 1.)*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 99225.*((eta + 1.)*(eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64. + 3885.*((xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 34965.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64., 0.);
3394 case 30:
3395 return RealGradient(-405.*eta/16. - 675.*xi/2. + 1215.*(eta + 1.)*(xi + 1.)/4. - 25515.*(eta + 1.)*(xi + 1.)*(xi + 1.)/32. + 2835.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 25515.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/128. - 5355./16. + 14175.*((xi + 1.)*(xi + 1.))/16. - 1575.*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 14175.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64., 0.);
3396 case 31:
3397 return RealGradient(405.*eta/16. + 270.*xi - 1215.*(eta + 1.)*(xi + 1.)/4. + 25515.*(eta + 1.)*((xi + 1.)*(xi + 1.))/32. - 2835.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 25515.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/128. + 4365./16. - 2835.*(xi + 1.)*(xi + 1.)/4. + 630.*((xi + 1.)*(xi + 1.)*(xi + 1.)) - 2835.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16., 0.);
3398 case 32:
3399 return RealGradient(0., 12285.*xi/8. - 4095.*(eta + 1.)*(xi + 1.) + 14805.*(eta + 1.)*((xi + 1.)*(xi + 1.)) - 72555.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 18375.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/2. - 6615.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 36855.*(xi + 1.)*((eta + 1.)*(eta + 1.))/16. + 12285./8. - 133245.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/16. + 652995.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 165375.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 59535.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 44415.*(xi + 1.)*(xi + 1.)/8. + 217665.*((xi + 1.)*(xi + 1.)*(xi + 1.))/32. - 55125.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 19845.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32.);
3400 case 33:
3401 return RealGradient(0., -315.*xi + 840.*(eta + 1.)*(xi + 1.) - 11655.*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. + 43155.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 7350.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.) + 6615.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 945.*(xi + 1.)*(eta + 1.)*(eta + 1.)/2. - 315. + 104895.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/32. - 388395.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. + 33075.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/8. - 59535.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. + 34965.*((xi + 1.)*(xi + 1.))/16. - 129465.*(xi + 1.)*(xi + 1.)*(xi + 1.)/32. + 11025.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 19845.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32.);
3402 case 34:
3403 return RealGradient(0., 2835.*xi/4. - 1890.*(eta + 1.)*(xi + 1.) + 4725.*(eta + 1.)*((xi + 1.)*(xi + 1.))/2. - 2835.*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/4. + 8505.*(xi + 1.)*((eta + 1.)*(eta + 1.))/8. + 2835./4. - 42525.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/32. + 25515.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.)*(xi + 1.))/64. - 14175.*(xi + 1.)*(xi + 1.)/16. + 8505.*((xi + 1.)*(xi + 1.)*(xi + 1.))/32.);
3404 case 35:
3405 return RealGradient(0., -2835.*xi/8. + 945.*(eta + 1.)*(xi + 1.) - 1890.*(eta + 1.)*(xi + 1.)*(xi + 1.) + 2835.*(eta + 1.)*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 8505.*(xi + 1.)*(eta + 1.)*(eta + 1.)/16. - 2835./8. + 8505.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/8. - 25515.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64. + 2835.*((xi + 1.)*(xi + 1.))/4. - 8505.*(xi + 1.)*(xi + 1.)*(xi + 1.)/32.);
3406 case 36:
3407 return RealGradient(2295.*eta/2. + 594.*xi - 2295.*(eta + 1.)*(xi + 1.) + 3825.*(eta + 1.)*((xi + 1.)*(xi + 1.))/4. + 4725.*(xi + 1.)*((eta + 1.)*(eta + 1.))/2. - 2835.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/4. + 2889./2. - 4725.*(eta + 1.)*(eta + 1.)/4. - 7875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 495.*(xi + 1.)*(xi + 1.)/2. + 4725.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. + 2835.*((eta + 1.)*(eta + 1.)*(eta + 1.))/8., 0.);
3408 case 37:
3409 return RealGradient(765.*eta/2. + 396.*xi - 1530.*(eta + 1.)*(xi + 1.) + 3825.*(eta + 1.)*((xi + 1.)*(xi + 1.))/4. + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.)) - 945.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/2. + 1359./2. - 1575.*(eta + 1.)*(eta + 1.)/4. - 7875.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 495.*(xi + 1.)*(xi + 1.)/2. + 4725.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. + 945.*((eta + 1.)*(eta + 1.)*(eta + 1.))/8., 0.);
3410 case 38:
3411 return RealGradient(-765.*eta/4. - 495.*xi/2. + 3825.*(eta + 1.)*(xi + 1.)/4. - 3825.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 7875.*(xi + 1.)*(eta + 1.)*(eta + 1.)/8. + 4725.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/16. - 1557./4. + 1575.*((eta + 1.)*(eta + 1.))/8. + 7875.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/16. + 495.*((xi + 1.)*(xi + 1.))/4. - 4725.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/32. - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)/16., 0.);
3412 case 39:
3413 return RealGradient(0., 60.*xi + 60. - 495.*(xi + 1.)*(xi + 1.)/2. + 1275.*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 2625.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32.);
3414 case 40:
3415 return RealGradient(0., 60.*xi + 60. - 495.*(xi + 1.)*(xi + 1.)/2. + 1275.*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 2625.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/16. + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32.);
3416 case 41:
3417 return RealGradient(0., -30.*xi - 30. + 495.*((xi + 1.)*(xi + 1.))/4. - 1275.*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. + 2625.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/32. - 945.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/64.);
3418 case 42:
3419 return RealGradient(0., -15.*xi/2. - 15./2. + 90.*((xi + 1.)*(xi + 1.)) - 375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 525.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 945.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32.);
3420 case 43:
3421 return RealGradient(0., -15.*xi/2. - 15./2. + 90.*((xi + 1.)*(xi + 1.)) - 375.*(xi + 1.)*(xi + 1.)*(xi + 1.)/2. + 525.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 945.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/32.);
3422 case 44:
3423 return RealGradient(0., 15.*xi/4. + 15./4. - 45.*(xi + 1.)*(xi + 1.) + 375.*((xi + 1.)*(xi + 1.)*(xi + 1.))/4. - 525.*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)/8. + 945.*((xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.)*(xi + 1.))/64.);
3424 case 45:
3425 return RealGradient(-675.*eta - 216.*xi + 1350.*(eta + 1.)*(xi + 1.) - 1125.*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. - 1890.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 2835.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/4. - 783. + 945.*((eta + 1.)*(eta + 1.)) + 1575.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. + 90.*((xi + 1.)*(xi + 1.)) - 4725.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 2835.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8., 0.);
3426 case 46:
3427 return RealGradient(-225.*eta - 144.*xi + 900.*(eta + 1.)*(xi + 1.) - 1125.*(eta + 1.)*(xi + 1.)*(xi + 1.)/2. - 1260.*(xi + 1.)*(eta + 1.)*(eta + 1.) + 945.*(xi + 1.)*((eta + 1.)*(eta + 1.)*(eta + 1.))/2. - 333. + 315.*((eta + 1.)*(eta + 1.)) + 1575.*((eta + 1.)*(eta + 1.))*((xi + 1.)*(xi + 1.))/2. + 90.*((xi + 1.)*(xi + 1.)) - 4725.*(xi + 1.)*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. - 945.*(eta + 1.)*(eta + 1.)*(eta + 1.)/8., 0.);
3428 case 47:
3429 return RealGradient(225.*eta/2. + 90.*xi - 1125.*(eta + 1.)*(xi + 1.)/2. + 1125.*(eta + 1.)*((xi + 1.)*(xi + 1.))/4. + 1575.*(xi + 1.)*((eta + 1.)*(eta + 1.))/2. - 4725.*(xi + 1.)*(eta + 1.)*(eta + 1.)*(eta + 1.)/16. + 369./2. - 315.*(eta + 1.)*(eta + 1.)/2. - 1575.*(eta + 1.)*(eta + 1.)*(xi + 1.)*(xi + 1.)/4. - 45.*(xi + 1.)*(xi + 1.) + 4725.*((xi + 1.)*(xi + 1.))*((eta + 1.)*(eta + 1.)*(eta + 1.))/32. + 945.*((eta + 1.)*(eta + 1.)*(eta + 1.))/16., 0.);
3430 case 48:
3431 return RealGradient(0., 30.*xi + 30. - 135.*(xi + 1.)*(xi + 1.)/4. + 75.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8.);
3432 case 49:
3433 return RealGradient(0., -15.*xi/2. - 15./2. + 45.*((xi + 1.)*(xi + 1.))/2. - 75.*(xi + 1.)*(xi + 1.)*(xi + 1.)/8.);
3434 case 50:
3435 return RealGradient(-135.*eta/4. - 81.*xi + 135.*(eta + 1.)*(xi + 1.)/2. - 225.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 297./4. + 135.*((xi + 1.)*(xi + 1.))/4., 0.);
3436 case 51:
3437 return RealGradient(135.*eta/4. + 54.*xi - 135.*(eta + 1.)*(xi + 1.)/2. + 225.*(eta + 1.)*((xi + 1.)*(xi + 1.))/8. + 243./4. - 45.*(xi + 1.)*(xi + 1.)/2., 0.);
3438 case 52:
3439 return RealGradient(-45.*eta/4. - 54.*xi + 45.*(eta + 1.)*(xi + 1.) - 225.*(eta + 1.)*(xi + 1.)*(xi + 1.)/8. - 207./4. + 135.*((xi + 1.)*(xi + 1.))/4., 0.);
3440 case 53:
3441 return RealGradient(45.*eta/4. + 36.*xi - 45.*(eta + 1.)*(xi + 1.) + 225.*(eta + 1.)*((xi + 1.)*(xi + 1.))/8. + 153./4. - 45.*(xi + 1.)*(xi + 1.)/2., 0.);
3442 case 54:
3443 return RealGradient(0., 30.*xi + 30. - 135.*(xi + 1.)*(xi + 1.)/4. + 75.*((xi + 1.)*(xi + 1.)*(xi + 1.))/8.);
3444 case 55:
3445 return RealGradient(0., -15.*xi/2. - 15./2. + 45.*((xi + 1.)*(xi + 1.))/2. - 75.*(xi + 1.)*(xi + 1.)*(xi + 1.)/8.);
3446 case 56:
3447 return RealGradient(15.*eta/4. - 3./4., 0.);
3448 case 57:
3449 return RealGradient(0., 0.);
3450 case 58:
3451 return RealGradient(0., 0.);
3452 case 59:
3453 return RealGradient(-15.*eta/4. - 3./4., 0.);
3454 default:
3455 libmesh_error_msg("Invalid i = " << i);
3456 }
3457 } // j = 2
3458
3459 default:
3460 libmesh_error_msg("Invalid j = " << j);
3461 }
3462 }
3463
3464 case TRI6:
3465 case TRI7:
3466 {
3467 switch (j)
3468 {
3469 // d^2()/dxi^2
3470 case 0:
3471 {
3472 switch(ii)
3473 {
3474 case 0:
3475 return sign * RealGradient(30240.*eta*xi - 12600.*eta - 12600.*eta*xi*xi - 8400.*xi - 25200.*xi*eta*eta + 2100. + 22680.*(eta*eta) + 7560.*(xi*xi) - 12600.*eta*eta*eta, -45360.*eta*xi + 8400.*eta + 50400.*eta*(xi*xi) + 12600.*xi + 37800.*xi*(eta*eta) - 1400. - 15120.*eta*eta - 30240.*xi*xi + 8400.*(eta*eta*eta) + 21000.*(xi*xi*xi));
3476 case 1:
3477 return sign * RealGradient(-20475.*eta*xi/2. + 136185.*eta/32. + 58275.*eta*(xi*xi)/16. + 40845.*xi/16. + 146475.*xi*(eta*eta)/16. - 21105./32. - 240975.*eta*eta/32. - 34965.*xi*xi/16. + 127575.*(eta*eta*eta)/32., 252315.*eta*xi/16. - 39375.*eta/16. - 146475.*eta*xi*xi/8. - 125265.*xi/32. - 382725.*xi*eta*eta/32. + 1715./4. + 25515.*(eta*eta)/8. + 145845.*(xi*xi)/16. - 14175.*eta*eta*eta/16. - 97125.*xi*xi*xi/16.);
3478 case 2:
3479 return sign * RealGradient(7560.*eta*xi - 3255.*eta/2. - 4725.*eta*xi*xi - 2835.*xi - 4725.*xi*eta*eta + 1155./2. + 945.*(eta*eta)/2. + 2835.*(xi*xi) + 1575.*(eta*eta*eta)/2., -4725.*eta*xi + 105.*eta + 9450.*eta*(xi*xi) + 7455.*xi/2. - 4725.*xi*eta*eta/2. - 315. + 1890.*(eta*eta) - 10395.*xi*xi - 1575.*eta*eta*eta + 7875.*(xi*xi*xi));
3480 case 3:
3481 return sign * RealGradient(-2835.*eta*xi/2. - 16695.*eta/32. + 58275.*eta*(xi*xi)/16. + 29085.*xi/16. - 29925.*xi*eta*eta/16. - 9345./32. + 76545.*(eta*eta)/32. - 34965.*xi*xi/16. - 48825.*eta*eta*eta/32., -65205.*eta*xi/16. + 9345.*eta/16. + 29925.*eta*(xi*xi)/8. - 66465.*xi/32. + 146475.*xi*(eta*eta)/32. + 595./4. - 4725.*eta*eta/8. + 110565.*(xi*xi)/16. - 5775.*eta*eta*eta/16. - 97125.*xi*xi*xi/16.);
3482 case 4:
3483 return sign * RealGradient(10080.*eta*xi - 1680.*eta - 12600.*eta*xi*xi - 6720.*xi + 1260. + 7560.*(xi*xi), 8400.*xi - 700. - 25200.*xi*xi + 21000.*(xi*xi*xi));
3484 case 5:
3485 return sign * RealGradient(840.*eta*(12.*xi - 2. - 15.*xi*xi), 8400.*xi - 700. - 25200.*xi*xi + 21000.*(xi*xi*xi));
3486 case 6:
3487 return sign * RealGradient(2835.*eta*(-120.*eta*xi + 54.*eta + 60.*xi - 16. - 30.*eta*eta - 45.*xi*xi)/32., -127575.*eta*xi/8. + 2205.*eta + 42525.*eta*(xi*xi)/2. + 8505.*xi/2. + 127575.*xi*(eta*eta)/16. - 1785./4. - 31185.*eta*eta/16. - 161595.*xi*xi/16. + 1575.*(eta*eta*eta)/4. + 212625.*(xi*xi*xi)/32.);
3488 case 7:
3489 return sign * RealGradient(105.*eta*(-60.*eta*xi + 45.*eta + 18.*xi - 8. - 45.*eta*eta - 15.*xi*xi/2.), -13230.*eta*xi + 2520.*eta + 12600.*eta*(xi*xi) + 1680.*xi + 14175.*xi*(eta*eta) - 245. - 4725.*eta*eta - 2835.*xi*xi + 2100.*(eta*eta*eta) + 2625.*(xi*xi*xi)/2.);
3490 case 8:
3491 return sign * RealGradient(105.*eta*(-360.*eta*xi + 594.*eta + 84.*xi - 80. - 810.*eta*eta - 15.*xi*xi)/32., -36855.*eta*xi/8. + 1575.*eta + 4725.*eta*(xi*xi)/2. + 735.*xi/2. + 127575.*xi*(eta*eta)/16. - 385./4. - 76545.*eta*eta/16. - 5355.*xi*xi/16. + 14175.*(eta*eta*eta)/4. + 2625.*(xi*xi*xi)/32.);
3492 case 9:
3493 return sign * RealGradient(0., 0.);
3494 case 10:
3495 return sign * RealGradient(0., 0.);
3496 case 11:
3497 return sign * RealGradient(105.*eta*(330.*eta*xi + 180.*eta - 54.*xi - 11. - 465.*eta*eta - 15.*xi*xi)/32., 945.*eta*xi/8. + 1155.*eta/2. - 17325.*eta*xi*xi/8. - 1785.*xi/32. + 146475.*xi*(eta*eta)/32. - 595./32. - 76545.*eta*eta/32. + 2835.*(xi*xi)/32. + 9975.*(eta*eta*eta)/16. + 2625.*(xi*xi*xi)/32.);
3498 case 12:
3499 return sign * RealGradient(105.*eta*(45.*eta*xi - 18.*eta - 3.*xi + 5./2. + 15.*(eta*eta)/2. - 15.*xi*xi/2.), 9450.*eta*xi - 1680.*eta - 9450.*eta*xi*xi - 105.*xi/2. - 4725.*xi*eta*eta/2. + 175./2. - 945.*eta*eta/2. - 2205.*xi*xi/2. + 1575.*(eta*eta*eta) + 2625.*(xi*xi*xi)/2.);
3500 case 13:
3501 return sign * RealGradient(2835.*eta*(30.*eta*xi - 36.*eta + 30.*xi - 1. + 45.*(eta*eta) - 45.*xi*xi)/32., 76545.*eta*xi/8. - 7245.*eta/2. - 42525.*eta*xi*xi/8. + 127575.*xi/32. - 382725.*xi*eta*eta/32. - 11235./32. + 240975.*(eta*eta)/32. - 314685.*xi*xi/32. - 48825.*eta*eta*eta/16. + 212625.*(xi*xi*xi)/32.);
3502 case 14:
3503 return sign * RealGradient(840.*eta*(-30.*eta*xi + 18.*eta + 18.*xi - 5. - 15.*eta*eta - 15.*xi*xi), -60480.*eta*xi + 16800.*eta + 50400.*eta*(xi*xi) + 21000.*xi + 37800.*xi*(eta*eta) - 3500. - 22680.*eta*eta - 37800.*xi*xi + 8400.*(eta*eta*eta) + 21000.*(xi*xi*xi));
3504 case 15:
3505 return RealGradient(10080.*eta*(20.*eta*xi - 21.*eta - 14.*xi + 7. + 15.*(eta*eta) + 5.*(xi*xi)), 423360.*eta*xi - 94080.*eta - 403200.*eta*xi*xi - 70560.*xi - 453600.*xi*eta*eta + 9800. + 211680.*(eta*eta) + 141120.*(xi*xi) - 134400.*eta*eta*eta - 84000.*xi*xi*xi);
3506 case 16:
3507 return RealGradient(10080.*eta*(-40.*eta*xi + 21.*eta + 28.*xi - 7. - 15.*eta*eta - 25.*xi*xi), -846720.*eta*xi + 188160.*eta + 806400.*eta*(xi*xi) + 352800.*xi + 453600.*xi*(eta*eta) - 49000. - 211680.*eta*eta - 705600.*xi*xi + 67200.*(eta*eta*eta) + 420000.*(xi*xi*xi));
3508 case 17:
3509 return RealGradient(20160.*eta*(-10.*eta*xi + 3.*eta + 13.*xi - 3. - 10.*xi*xi), -241920.*eta*xi + 26880.*eta + 403200.*eta*(xi*xi) + 161280.*xi - 14560. - 443520.*xi*xi + 336000.*(xi*xi*xi));
3510 case 18:
3511 return RealGradient(10080.*eta*(10.*eta*xi - 3.*eta - 22.*xi + 4. + 25.*(xi*xi)), 120960.*eta*xi - 13440.*eta - 201600.*eta*xi*xi - 201600.*xi + 18200. + 554400.*(xi*xi) - 420000.*xi*xi*xi);
3512 case 19:
3513 return RealGradient(0., 6720.*eta - 280. - 30240.*eta*eta + 33600.*(eta*eta*eta));
3514 case 20:
3515 return RealGradient(0., -13440.*eta + 560. + 60480.*(eta*eta) - 67200.*eta*eta*eta);
3516 case 21:
3517 return RealGradient(8960.*eta*(-65.*eta*xi/3. + 14.*eta + 35.*xi/3. - 4. - 10.*eta*eta - 20.*xi*xi/3.), -340480.*eta*xi + 56000.*eta + 1164800.*eta*(xi*xi)/3. + 71680.*xi + 268800.*xi*(eta*eta) - 24920./3. - 81760.*eta*eta - 474880.*xi*xi/3. + 280000.*(eta*eta*eta)/9. + 896000.*(xi*xi*xi)/9.);
3518 case 22:
3519 return RealGradient(2240.*eta*(280.*eta*xi/3. - 49.*eta - 136.*xi/3. + 13. + 35.*(eta*eta) + 100.*(xi*xi)/3.), 371840.*eta*xi - 62720.*eta - 1254400.*eta*xi*xi/3. - 91840.*xi - 235200.*xi*eta*eta + 32480./3. + 76160.*(eta*eta) + 600320.*(xi*xi)/3. - 224000.*eta*eta*eta/9. - 1120000.*xi*xi*xi/9.);
3520 case 23:
3521 return RealGradient(2240.*eta*(-100.*eta*xi/3. + 34.*eta + 31.*xi/3. - 6. - 35.*eta*eta - 10.*xi*xi/3.), -183680.*eta*xi + 44800.*eta + 448000.*eta*(xi*xi)/3. + 20160.*xi + 235200.*xi*(eta*eta) - 10640./3. - 109760.*eta*eta - 89600.*xi*xi/3. + 627200.*(eta*eta*eta)/9. + 112000.*(xi*xi*xi)/9.);
3522 case 24:
3523 return RealGradient(1120.*eta*(250.*eta*xi/3. - 73.*eta - 70.*xi/3. + 12. + 80.*(eta*eta) + 25.*(xi*xi)/3.), 232960.*eta*xi - 58240.*eta - 560000.*eta*xi*xi/3. - 26880.*xi - 268800.*xi*eta*eta + 14840./3. + 125440.*(eta*eta) + 115360.*(xi*xi)/3. - 582400.*eta*eta*eta/9. - 140000.*xi*xi*xi/9.);
3524 case 25:
3525 return RealGradient(2240.*eta*(20.*eta*xi/3. - eta - 44.*xi/3. + 5. - 5.*eta*eta + 20.*(xi*xi)/3.), 4480.*eta*xi + 15680.*eta/3. - 89600.*eta*xi*xi/3. - 11200.*xi + 33600.*xi*(eta*eta) + 6440./9. - 25760.*eta*eta + 98560.*(xi*xi)/3. + 190400.*(eta*eta*eta)/9. - 224000.*xi*xi*xi/9.);
3526 case 26:
3527 return RealGradient(2240.*eta*(80.*eta*xi/3. - 23.*eta + 64.*xi/3. - 1. + 25.*(eta*eta) - 100.*xi*xi/3.), 165760.*eta*xi - 138880.*eta/3. - 358400.*eta*xi*xi/3. + 64960.*xi - 168000.*xi*eta*eta - 48160./9. + 80640.*(eta*eta) - 519680.*xi*xi/3. - 246400.*eta*eta*eta/9. + 1120000.*(xi*xi*xi)/9.);
3528 case 27:
3529 return RealGradient(1120.*eta*(-40.*eta*xi/3. + 11.*eta - 2.*xi/3. - 1. - 5.*eta*eta + 5.*(xi*xi)/3.), -24640.*eta*xi + 4480.*eta/3. + 89600.*eta*(xi*xi)/3. + 1120.*xi + 16800.*xi*(eta*eta) - 1400./9. + 5600.*(eta*eta) + 2240.*(xi*xi)/3. - 89600.*eta*eta*eta/9. - 28000.*xi*xi*xi/9.);
3530 case 28:
3531 return RealGradient(1120.*eta*(200.*eta*xi/3. - 17.*eta - 20.*xi/3. + 3. - 5.*eta*eta - 25.*xi*xi/3.), 116480.*eta*xi - 35840.*eta/3. - 448000.*eta*xi*xi/3. - 3360.*xi + 16800.*xi*(eta*eta) + 8680./9. - 30240.*eta*eta - 24640.*xi*xi/3. + 246400.*(eta*eta*eta)/9. + 140000.*(xi*xi*xi)/9.);
3532 case 29:
3533 return RealGradient(2240.*eta*(-110.*eta*xi/3. + 36.*eta + 71.*xi/3. - 12. - 25.*eta*eta - 20.*xi*xi/3.), -165760.*eta*xi + 89600.*eta/3. + 492800.*eta*(xi*xi)/3. + 24640.*xi + 168000.*xi*(eta*eta) - 29680./9. - 51520.*eta*eta - 138880.*xi*xi/3. + 179200.*(eta*eta*eta)/9. + 224000.*(xi*xi*xi)/9.);
3534 case 30:
3535 return RealGradient(1120.*eta*(170.*eta*xi/3. - 23.*eta - 134.*xi/3. + 10. + 10.*(eta*eta) + 125.*(xi*xi)/3.), 103040.*eta*xi - 31360.*eta/3. - 380800.*eta*xi*xi/3. - 56000.*xi - 33600.*xi*eta*eta + 51800./9. - 2240.*eta*eta + 375200.*(xi*xi)/3. + 44800.*(eta*eta*eta)/9. - 700000.*xi*xi*xi/9.);
3536 case 31:
3537 return RealGradient(1120.*eta*(220.*eta*xi/3. - 27.*eta - 178.*xi/3. + 17. + 5.*(eta*eta) + 85.*(xi*xi)/3.), 105280.*eta*xi - 22400.*eta/3. - 492800.*eta*xi*xi/3. - 32480.*xi - 16800.*xi*eta*eta + 27160./9. - 19040.*eta*eta + 239680.*(xi*xi)/3. + 224000.*(eta*eta*eta)/9. - 476000.*xi*xi*xi/9.);
3538 case 32:
3539 return RealGradient(1120.*eta*(-80.*eta*xi/3. + 5.*eta + 116.*xi/3. - 7. + 5.*(eta*eta) - 125.*xi*xi/3.), -22400.*eta*xi - 8960.*eta/3. + 179200.*eta*(xi*xi)/3. + 39200.*xi - 16800.*xi*eta*eta - 26600./9. + 12320.*(eta*eta) - 324800.*xi*xi/3. - 44800.*eta*eta*eta/9. + 700000.*(xi*xi*xi)/9.);
3540 case 33:
3541 return RealGradient(1120.*eta*(20.*eta*xi - 17.*eta - 8.*xi + 3. + 15.*(eta*eta) + 5.*(xi*xi)), 47040.*eta*xi - 29120.*eta/3. - 44800.*eta*xi*xi - 7840.*xi - 50400.*xi*eta*eta + 9520./9. + 20160.*(eta*eta) + 15680.*(xi*xi) - 11200.*eta*eta*eta - 28000.*xi*xi*xi/3.);
3542 case 34:
3543 return RealGradient(3360.*eta*(-10.*eta*xi + 6.*eta + 2.*xi - 1. - 5.*eta*eta), -67200.*eta*xi + 38080.*eta/3. + 67200.*eta*(xi*xi) + 3360.*xi + 50400.*xi*(eta*eta) - 5600./9. - 19040.*eta*eta - 3360.*xi*xi + 22400.*(eta*eta*eta)/3.);
3544 default:
3545 libmesh_error_msg("Invalid i = " << i);
3546 }
3547 } // j = 0
3548
3549 // d^2()/dxideta
3550 case 1:
3551 {
3552 switch(ii)
3553 {
3554 case 0:
3555 return sign * RealGradient(45360.*eta*xi - 16800.*eta - 25200.*eta*xi*xi - 12600.*xi - 37800.*xi*eta*eta + 2800. + 30240.*(eta*eta) + 15120.*(xi*xi) - 16800.*eta*eta*eta - 4200.*xi*xi*xi, -30240.*eta*xi + 4200.*eta + 37800.*eta*(xi*xi) + 8400.*xi + 25200.*xi*(eta*eta) - 700. - 7560.*eta*eta - 22680.*xi*xi + 4200.*(eta*eta*eta) + 16800.*(xi*xi*xi));
3556 case 1:
3557 return sign * RealGradient(-240975.*eta*xi/16. + 7245.*eta/2. + 146475.*eta*(xi*xi)/16. + 136185.*xi/32. + 382725.*xi*(eta*eta)/32. - 12145./16. - 76545.*eta*eta/16. - 20475.*xi*xi/4. + 14175.*(eta*eta*eta)/8. + 19425.*(xi*xi*xi)/16., 25515.*eta*xi/4. + 2835.*eta/32. - 382725.*eta*xi*xi/32. - 39375.*xi/16. - 42525.*xi*eta*eta/16. + 3045./32. - 42525.*eta*eta/32. + 252315.*(xi*xi)/32. + 42525.*(eta*eta*eta)/32. - 48825.*xi*xi*xi/8.);
3558 case 2:
3559 return sign * RealGradient(945.*eta*xi + 1680.*eta - 4725.*eta*xi*xi - 3255.*xi/2. + 4725.*xi*(eta*eta)/2. - 4725.*eta*eta + 3780.*(xi*xi) + 3150.*(eta*eta*eta) - 1575.*xi*xi*xi, 3780.*eta*xi - 525.*eta/2. - 4725.*eta*xi*xi/2. + 105.*xi - 4725.*xi*eta*eta + 35./2. + 315.*(eta*eta)/2. - 4725.*xi*xi/2. + 525.*(eta*eta*eta)/2. + 3150.*(xi*xi*xi));
3560 case 3:
3561 return sign * RealGradient(76545.*eta*xi/16. - 1155.*eta/2. - 29925.*eta*xi*xi/16. - 16695.*xi/32. - 146475.*xi*eta*eta/32. + 1855./16. - 945.*eta*eta/16. - 2835.*xi*xi/4. + 5775.*(eta*eta*eta)/8. + 19425.*(xi*xi*xi)/16., -4725.*eta*xi/4. + 1155.*eta/32. + 146475.*eta*(xi*xi)/32. + 9345.*xi/16. - 17325.*xi*eta*eta/16. - 875./32. + 2835.*(eta*eta)/32. - 65205.*xi*xi/32. + 525.*(eta*eta*eta)/32. + 9975.*(xi*xi*xi)/8.);
3562 case 4:
3563 return sign * RealGradient(-1680.*xi + 140. + 5040.*(xi*xi) - 4200.*xi*xi*xi, 0.);
3564 case 5:
3565 return sign * RealGradient(-1680.*xi + 140. + 5040.*(xi*xi) - 4200.*xi*xi*xi, 0.);
3566 case 6:
3567 return sign * RealGradient(76545.*eta*xi/8. - 1575.*eta - 42525.*eta*xi*xi/4. - 2835.*xi/2. - 127575.*xi*eta*eta/16. + 735./4. + 36855.*(eta*eta)/16. + 42525.*(xi*xi)/16. - 1575.*eta*eta*eta/2. - 42525.*xi*xi*xi/32., -31185.*eta*xi/8. + 525.*eta/2. + 127575.*eta*(xi*xi)/16. + 2205.*xi + 4725.*xi*(eta*eta)/4. - 455./4. - 2205.*eta*eta/16. - 127575.*xi*xi/16. + 525.*(eta*eta*eta)/32. + 14175.*(xi*xi*xi)/2.);
3568 case 7:
3569 return sign * RealGradient(9450.*eta*xi - 2520.*eta - 6300.*eta*xi*xi - 840.*xi - 14175.*xi*eta*eta + 175. + 6615.*(eta*eta) + 945.*(xi*xi) - 4200.*eta*eta*eta - 525.*xi*xi*xi/2., -9450.*eta*xi + 840.*eta + 14175.*eta*(xi*xi) + 2520.*xi + 6300.*xi*(eta*eta) - 175. - 945.*eta*eta - 6615.*xi*xi + 525.*(eta*eta*eta)/2. + 4200.*(xi*xi*xi));
3570 case 8:
3571 return sign * RealGradient(31185.*eta*xi/8. - 2205.*eta - 4725.*eta*xi*xi/4. - 525.*xi/2. - 127575.*xi*eta*eta/16. + 455./4. + 127575.*(eta*eta)/16. + 2205.*(xi*xi)/16. - 14175.*eta*eta*eta/2. - 525.*xi*xi*xi/32., -76545.*eta*xi/8. + 2835.*eta/2. + 127575.*eta*(xi*xi)/16. + 1575.*xi + 42525.*xi*(eta*eta)/4. - 735./4. - 42525.*eta*eta/16. - 36855.*xi*xi/16. + 42525.*(eta*eta*eta)/32. + 1575.*(xi*xi*xi)/2.);
3572 case 9:
3573 return sign * RealGradient(0., 1680.*eta - 140. - 5040.*eta*eta + 4200.*(eta*eta*eta));
3574 case 10:
3575 return sign * RealGradient(0., 1680.*eta - 140. - 5040.*eta*eta + 4200.*(eta*eta*eta));
3576 case 11:
3577 return sign * RealGradient(4725.*eta*xi/4. - 9345.*eta/16. + 17325.*eta*(xi*xi)/16. - 1155.*xi/32. - 146475.*xi*eta*eta/32. + 875./32. + 65205.*(eta*eta)/32. - 2835.*xi*xi/32. - 9975.*eta*eta*eta/8. - 525.*xi*xi*xi/32., -76545.*eta*xi/16. + 16695.*eta/32. + 146475.*eta*(xi*xi)/32. + 1155.*xi/2. + 29925.*xi*(eta*eta)/16. - 1855./16. + 2835.*(eta*eta)/4. + 945.*(xi*xi)/16. - 19425.*eta*eta*eta/16. - 5775.*xi*xi*xi/8.);
3578 case 12:
3579 return sign * RealGradient(-3780.*eta*xi - 105.*eta + 4725.*eta*(xi*xi) + 525.*xi/2. + 4725.*xi*(eta*eta)/2. - 35./2. + 4725.*(eta*eta)/2. - 315.*xi*xi/2. - 3150.*eta*eta*eta - 525.*xi*xi*xi/2., -945.*eta*xi + 3255.*eta/2. - 4725.*eta*xi*xi/2. - 1680.*xi + 4725.*xi*(eta*eta) - 3780.*eta*eta + 4725.*(xi*xi) + 1575.*(eta*eta*eta) - 3150.*xi*xi*xi);
3580 case 13:
3581 return sign * RealGradient(-25515.*eta*xi/4. + 39375.*eta/16. + 42525.*eta*(xi*xi)/16. - 2835.*xi/32. + 382725.*xi*(eta*eta)/32. - 3045./32. - 252315.*eta*eta/32. + 42525.*(xi*xi)/32. + 48825.*(eta*eta*eta)/8. - 42525.*xi*xi*xi/32., 240975.*eta*xi/16. - 136185.*eta/32. - 382725.*eta*xi*xi/32. - 7245.*xi/2. - 146475.*xi*eta*eta/16. + 12145./16. + 20475.*(eta*eta)/4. + 76545.*(xi*xi)/16. - 19425.*eta*eta*eta/16. - 14175.*xi*xi*xi/8.);
3582 case 14:
3583 return sign * RealGradient(30240.*eta*xi - 8400.*eta - 25200.*eta*xi*xi - 4200.*xi - 37800.*xi*eta*eta + 700. + 22680.*(eta*eta) + 7560.*(xi*xi) - 16800.*eta*eta*eta - 4200.*xi*xi*xi, -45360.*eta*xi + 12600.*eta + 37800.*eta*(xi*xi) + 16800.*xi + 25200.*xi*(eta*eta) - 2800. - 15120.*eta*eta - 30240.*xi*xi + 4200.*(eta*eta*eta) + 16800.*(xi*xi*xi));
3584 case 15:
3585 return RealGradient(-423360.*eta*xi + 188160.*eta + 201600.*eta*(xi*xi) + 70560.*xi + 453600.*xi*(eta*eta) - 19600. - 423360.*eta*eta - 70560.*xi*xi + 268800.*(eta*eta*eta) + 16800.*(xi*xi*xi), 423360.*eta*xi - 70560.*eta - 453600.*eta*xi*xi - 94080.*xi - 403200.*xi*eta*eta + 9800. + 141120.*(eta*eta) + 211680.*(xi*xi) - 84000.*eta*eta*eta - 134400.*xi*xi*xi);
3586 case 16:
3587 return RealGradient(423360.*eta*xi - 94080.*eta - 403200.*eta*xi*xi - 70560.*xi - 453600.*xi*eta*eta + 9800. + 211680.*(eta*eta) + 141120.*(xi*xi) - 134400.*eta*eta*eta - 84000.*xi*xi*xi, -423360.*eta*xi + 70560.*eta + 453600.*eta*(xi*xi) + 188160.*xi + 201600.*xi*(eta*eta) - 19600. - 70560.*eta*eta - 423360.*xi*xi + 16800.*(eta*eta*eta) + 268800.*(xi*xi*xi));
3588 case 17:
3589 return RealGradient(120960.*eta*xi - 13440.*eta - 201600.*eta*xi*xi - 60480.*xi + 6440. + 131040.*(xi*xi) - 67200.*xi*xi*xi, 26880.*xi - 1120. - 120960.*xi*xi + 134400.*(xi*xi*xi));
3590 case 18:
3591 return RealGradient(-60480.*eta*xi + 6720.*eta + 100800.*eta*(xi*xi) + 40320.*xi - 3640. - 110880.*xi*xi + 84000.*(xi*xi*xi), -13440.*xi + 560. + 60480.*(xi*xi) - 67200.*xi*xi*xi);
3592 case 19:
3593 return RealGradient(-13440.*eta + 560. + 60480.*(eta*eta) - 67200.*eta*eta*eta, -60480.*eta*xi + 40320.*eta + 6720.*xi + 100800.*xi*(eta*eta) - 3640. - 110880.*eta*eta + 84000.*(eta*eta*eta));
3594 case 20:
3595 return RealGradient(26880.*eta - 1120. - 120960.*eta*eta + 134400.*(eta*eta*eta), 120960.*eta*xi - 60480.*eta - 13440.*xi - 201600.*xi*eta*eta + 6440. + 131040.*(eta*eta) - 67200.*eta*eta*eta);
3596 case 21:
3597 return RealGradient(250880.*eta*xi - 58240.*eta - 582400.*eta*xi*xi/3. - 35840.*xi - 268800.*xi*eta*eta + 17920./3. + 116480.*(eta*eta) + 156800.*(xi*xi)/3. - 560000.*eta*eta*eta/9. - 179200.*xi*xi*xi/9., -163520.*eta*xi + 13440.*eta + 268800.*eta*(xi*xi) + 56000.*xi + 280000.*xi*(eta*eta)/3. - 10360./3. - 39200.*eta*eta/3. - 170240.*xi*xi + 28000.*(eta*eta*eta)/9. + 1164800.*(xi*xi*xi)/9.);
3598 case 22:
3599 return RealGradient(-219520.*eta*xi + 44800.*eta + 627200.*eta*(xi*xi)/3. + 29120.*xi + 235200.*xi*(eta*eta) - 12880./3. - 91840.*eta*eta - 152320.*xi*xi/3. + 448000.*(eta*eta*eta)/9. + 224000.*(xi*xi*xi)/9., 152320.*eta*xi - 13440.*eta - 235200.*eta*xi*xi - 62720.*xi - 224000.*xi*eta*eta/3. + 12040./3. + 34720.*(eta*eta)/3. + 185920.*(xi*xi) - 22400.*eta*eta*eta/9. - 1254400.*xi*xi*xi/9.);
3600 case 23:
3601 return RealGradient(152320.*eta*xi - 62720.*eta - 224000.*eta*xi*xi/3. - 13440.*xi - 235200.*xi*eta*eta + 12040./3. + 185920.*(eta*eta) + 34720.*(xi*xi)/3. - 1254400.*eta*eta*eta/9. - 22400.*xi*xi*xi/9., -219520.*eta*xi + 29120.*eta + 235200.*eta*(xi*xi) + 44800.*xi + 627200.*xi*(eta*eta)/3. - 12880./3. - 152320.*eta*eta/3. - 91840.*xi*xi + 224000.*(eta*eta*eta)/9. + 448000.*(xi*xi*xi)/9.);
3602 case 24:
3603 return RealGradient(-163520.*eta*xi + 56000.*eta + 280000.*eta*(xi*xi)/3. + 13440.*xi + 268800.*xi*(eta*eta) - 10360./3. - 170240.*eta*eta - 39200.*xi*xi/3. + 1164800.*(eta*eta*eta)/9. + 28000.*(xi*xi*xi)/9., 250880.*eta*xi - 35840.*eta - 268800.*eta*xi*xi - 58240.*xi - 582400.*xi*eta*eta/3. + 17920./3. + 156800.*(eta*eta)/3. + 116480.*(xi*xi) - 179200.*eta*eta*eta/9. - 560000.*xi*xi*xi/9.);
3604 case 25:
3605 return RealGradient(-4480.*eta*xi - 31360.*eta/3. + 44800.*eta*(xi*xi)/3. + 11200.*xi - 33600.*xi*eta*eta - 12880./9. + 51520.*(eta*eta) - 49280.*xi*xi/3. - 380800.*eta*eta*eta/9. + 44800.*(xi*xi*xi)/9., -51520.*eta*xi + 11200.*eta + 33600.*eta*(xi*xi) + 15680.*xi/3. + 190400.*xi*(eta*eta)/3. - 10360./9. - 75040.*eta*eta/3. + 2240.*(xi*xi) + 140000.*(eta*eta*eta)/9. - 89600.*xi*xi*xi/9.);
3606 case 26:
3607 return RealGradient(-103040.*eta*xi + 89600.*eta/3. + 179200.*eta*(xi*xi)/3. - 2240.*xi + 168000.*xi*(eta*eta) - 9520./9. - 82880.*eta*eta + 71680.*(xi*xi)/3. + 492800.*(eta*eta*eta)/9. - 224000.*xi*xi*xi/9., 161280.*eta*xi - 26880.*eta - 168000.*eta*xi*xi - 138880.*xi/3. - 246400.*xi*eta*eta/3. + 51800./9. + 79520.*(eta*eta)/3. + 82880.*(xi*xi) - 44800.*eta*eta*eta/9. - 358400.*xi*xi*xi/9.);
3608 case 27:
3609 return RealGradient(24640.*eta*xi - 8960.*eta/3. - 44800.*eta*xi*xi/3. - 1120.*xi - 16800.*xi*eta*eta + 2800./9. - 11200.*eta*eta - 1120.*xi*xi/3. + 179200.*(eta*eta*eta)/9. + 5600.*(xi*xi*xi)/9., 11200.*eta*xi - 7840.*eta + 16800.*eta*(xi*xi) + 4480.*xi/3. - 89600.*xi*eta*eta/3. + 5320./9. + 64960.*(eta*eta)/3. - 12320.*xi*xi - 140000.*eta*eta*eta/9. + 89600.*(xi*xi*xi)/9.);
3610 case 28:
3611 return RealGradient(-38080.*eta*xi - 22400.*eta/3. + 224000.*eta*(xi*xi)/3. + 3360.*xi - 16800.*xi*eta*eta + 280./9. + 52640.*(eta*eta) - 11200.*xi*xi/3. - 492800.*eta*eta*eta/9. - 28000.*xi*xi*xi/9., -60480.*eta*xi + 19040.*eta + 16800.*eta*(xi*xi) - 35840.*xi/3. + 246400.*xi*(eta*eta)/3. - 8960./9. - 99680.*eta*eta/3. + 58240.*(xi*xi) + 95200.*(eta*eta*eta)/9. - 448000.*xi*xi*xi/9.);
3612 case 29:
3613 return RealGradient(161280.*eta*xi - 138880.*eta/3. - 246400.*eta*xi*xi/3. - 26880.*xi - 168000.*xi*eta*eta + 51800./9. + 82880.*(eta*eta) + 79520.*(xi*xi)/3. - 358400.*eta*eta*eta/9. - 44800.*xi*xi*xi/9., -103040.*eta*xi - 2240.*eta + 168000.*eta*(xi*xi) + 89600.*xi/3. + 179200.*xi*(eta*eta)/3. - 9520./9. + 71680.*(eta*eta)/3. - 82880.*xi*xi - 224000.*eta*eta*eta/9. + 492800.*(xi*xi*xi)/9.);
3614 case 30:
3615 return RealGradient(-51520.*eta*xi + 15680.*eta/3. + 190400.*eta*(xi*xi)/3. + 11200.*xi + 33600.*xi*(eta*eta) - 10360./9. + 2240.*(eta*eta) - 75040.*xi*xi/3. - 89600.*eta*eta*eta/9. + 140000.*(xi*xi*xi)/9., -4480.*eta*xi + 11200.*eta - 33600.*eta*xi*xi - 31360.*xi/3. + 44800.*xi*(eta*eta)/3. - 12880./9. - 49280.*eta*eta/3. + 51520.*(xi*xi) + 44800.*(eta*eta*eta)/9. - 380800.*xi*xi*xi/9.);
3616 case 31:
3617 return RealGradient(-60480.*eta*xi - 35840.*eta/3. + 246400.*eta*(xi*xi)/3. + 19040.*xi + 16800.*xi*(eta*eta) - 8960./9. + 58240.*(eta*eta) - 99680.*xi*xi/3. - 448000.*eta*eta*eta/9. + 95200.*(xi*xi*xi)/9., -38080.*eta*xi + 3360.*eta - 16800.*eta*xi*xi - 22400.*xi/3. + 224000.*xi*(eta*eta)/3. + 280./9. - 11200.*eta*eta/3. + 52640.*(xi*xi) - 28000.*eta*eta*eta/9. - 492800.*xi*xi*xi/9.);
3618 case 32:
3619 return RealGradient(11200.*eta*xi + 4480.*eta/3. - 89600.*eta*xi*xi/3. - 7840.*xi + 16800.*xi*(eta*eta) + 5320./9. - 12320.*eta*eta + 64960.*(xi*xi)/3. + 89600.*(eta*eta*eta)/9. - 140000.*xi*xi*xi/9., 24640.*eta*xi - 1120.*eta - 16800.*eta*xi*xi - 8960.*xi/3. - 44800.*xi*eta*eta/3. + 2800./9. - 1120.*eta*eta/3. - 11200.*xi*xi + 5600.*(eta*eta*eta)/9. + 179200.*(xi*xi*xi)/9.);
3620 case 33:
3621 return RealGradient(-38080.*eta*xi + 38080.*eta/3. + 22400.*eta*(xi*xi) + 3360.*xi + 50400.*xi*(eta*eta) - 6440./9. - 33600.*eta*eta - 4480.*xi*xi + 22400.*(eta*eta*eta) + 5600.*(xi*xi*xi)/3., 40320.*eta*xi - 3360.*eta - 50400.*eta*xi*xi - 29120.*xi/3. - 33600.*xi*eta*eta + 6160./9. + 3360.*(eta*eta) + 23520.*(xi*xi) - 44800.*xi*xi*xi/3.);
3622 case 34:
3623 return RealGradient(40320.*eta*xi - 29120.*eta/3. - 33600.*eta*xi*xi - 3360.*xi - 50400.*xi*eta*eta + 6160./9. + 23520.*(eta*eta) + 3360.*(xi*xi) - 44800.*eta*eta*eta/3., -38080.*eta*xi + 3360.*eta + 50400.*eta*(xi*xi) + 38080.*xi/3. + 22400.*xi*(eta*eta) - 6440./9. - 4480.*eta*eta - 33600.*xi*xi + 5600.*(eta*eta*eta)/3. + 22400.*(xi*xi*xi));
3624 default:
3625 libmesh_error_msg("Invalid i = " << i);
3626 }
3627 } // j = 1
3628
3629 // d^2()/deta^2
3630 case 2:
3631 {
3632 switch(ii)
3633 {
3634 case 0:
3635 return sign * RealGradient(60480.*eta*xi - 21000.*eta - 37800.*eta*xi*xi - 16800.*xi - 50400.*xi*eta*eta + 3500. + 37800.*(eta*eta) + 22680.*(xi*xi) - 21000.*eta*eta*eta - 8400.*xi*xi*xi, 840.*xi*(30.*eta*xi - 18.*eta - 18.*xi + 5. + 15.*(eta*eta) + 15.*(xi*xi)));
3636 case 1:
3637 return sign * RealGradient(-76545.*eta*xi/8. - 127575.*eta/32. + 382725.*eta*(xi*xi)/32. + 7245.*xi/2. + 42525.*xi*(eta*eta)/8. + 11235./32. + 314685.*(eta*eta)/32. - 240975.*xi*xi/32. - 212625.*eta*eta*eta/32. + 48825.*(xi*xi*xi)/16., 2835.*xi*(-30.*eta*xi - 30.*eta + 36.*xi + 1. + 45.*(eta*eta) - 45.*xi*xi)/32.);
3638 case 2:
3639 return sign * RealGradient(-9450.*eta*xi + 105.*eta/2. + 4725.*eta*(xi*xi)/2. + 1680.*xi + 9450.*xi*(eta*eta) - 175./2. + 2205.*(eta*eta)/2. + 945.*(xi*xi)/2. - 2625.*eta*eta*eta/2. - 1575.*xi*xi*xi, 105.*xi*(-45.*eta*xi + 3.*eta + 18.*xi - 5./2. + 15.*(eta*eta)/2. - 15.*xi*xi/2.));
3640 case 3:
3641 return sign * RealGradient(-945.*eta*xi/8. + 1785.*eta/32. - 146475.*eta*xi*xi/32. - 1155.*xi/2. + 17325.*xi*(eta*eta)/8. + 595./32. - 2835.*eta*eta/32. + 76545.*(xi*xi)/32. - 2625.*eta*eta*eta/32. - 9975.*xi*xi*xi/16., 105.*xi*(-330.*eta*xi + 54.*eta - 180.*xi + 11. + 15.*(eta*eta) + 465.*(xi*xi))/32.);
3642 case 4:
3643 return sign * RealGradient(0., 0.);
3644 case 5:
3645 return sign * RealGradient(0., 0.);
3646 case 6:
3647 return sign * RealGradient(36855.*eta*xi/8. - 735.*eta/2. - 127575.*eta*xi*xi/16. - 1575.*xi - 4725.*xi*eta*eta/2. + 385./4. + 5355.*(eta*eta)/16. + 76545.*(xi*xi)/16. - 2625.*eta*eta*eta/32. - 14175.*xi*xi*xi/4., 105.*xi*(360.*eta*xi - 84.*eta - 594.*xi + 80. + 15.*(eta*eta) + 810.*(xi*xi))/32.);
3648 case 7:
3649 return sign * RealGradient(13230.*eta*xi - 1680.*eta - 14175.*eta*xi*xi - 2520.*xi - 12600.*xi*eta*eta + 245. + 2835.*(eta*eta) + 4725.*(xi*xi) - 2625.*eta*eta*eta/2. - 2100.*xi*xi*xi, 105.*xi*(60.*eta*xi - 18.*eta - 45.*xi + 8. + 15.*(eta*eta)/2. + 45.*(xi*xi)));
3650 case 8:
3651 return sign * RealGradient(127575.*eta*xi/8. - 8505.*eta/2. - 127575.*eta*xi*xi/16. - 2205.*xi - 42525.*xi*eta*eta/2. + 1785./4. + 161595.*(eta*eta)/16. + 31185.*(xi*xi)/16. - 212625.*eta*eta*eta/32. - 1575.*xi*xi*xi/4., 2835.*xi*(120.*eta*xi - 60.*eta - 54.*xi + 16. + 45.*(eta*eta) + 30.*(xi*xi))/32.);
3652 case 9:
3653 return sign * RealGradient(-8400.*eta + 700. + 25200.*(eta*eta) - 21000.*eta*eta*eta, 840.*xi*(-12.*eta + 2. + 15.*(eta*eta)));
3654 case 10:
3655 return sign * RealGradient(-8400.*eta + 700. + 25200.*(eta*eta) - 21000.*eta*eta*eta, -10080.*eta*xi + 6720.*eta + 1680.*xi + 12600.*xi*(eta*eta) - 1260. - 7560.*eta*eta);
3656 case 11:
3657 return sign * RealGradient(65205.*eta*xi/16. + 66465.*eta/32. - 146475.*eta*xi*xi/32. - 9345.*xi/16. - 29925.*xi*eta*eta/8. - 595./4. - 110565.*eta*eta/16. + 4725.*(xi*xi)/8. + 97125.*(eta*eta*eta)/16. + 5775.*(xi*xi*xi)/16., 2835.*eta*xi/2. - 29085.*eta/16. + 29925.*eta*(xi*xi)/16. + 16695.*xi/32. - 58275.*xi*eta*eta/16. + 9345./32. + 34965.*(eta*eta)/16. - 76545.*xi*xi/32. + 48825.*(xi*xi*xi)/32.);
3658 case 12:
3659 return sign * RealGradient(4725.*eta*xi - 7455.*eta/2. + 4725.*eta*(xi*xi)/2. - 105.*xi - 9450.*xi*eta*eta + 315. + 10395.*(eta*eta) - 1890.*xi*xi - 7875.*eta*eta*eta + 1575.*(xi*xi*xi), -7560.*eta*xi + 2835.*eta + 4725.*eta*(xi*xi) + 3255.*xi/2. + 4725.*xi*(eta*eta) - 1155./2. - 2835.*eta*eta - 945.*xi*xi/2. - 1575.*xi*xi*xi/2.);
3660 case 13:
3661 return sign * RealGradient(-252315.*eta*xi/16. + 125265.*eta/32. + 382725.*eta*(xi*xi)/32. + 39375.*xi/16. + 146475.*xi*(eta*eta)/8. - 1715./4. - 145845.*eta*eta/16. - 25515.*xi*xi/8. + 97125.*(eta*eta*eta)/16. + 14175.*(xi*xi*xi)/16., 20475.*eta*xi/2. - 40845.*eta/16. - 146475.*eta*xi*xi/16. - 136185.*xi/32. - 58275.*xi*eta*eta/16. + 21105./32. + 34965.*(eta*eta)/16. + 240975.*(xi*xi)/32. - 127575.*xi*xi*xi/32.);
3662 case 14:
3663 return sign * RealGradient(45360.*eta*xi - 12600.*eta - 37800.*eta*xi*xi - 8400.*xi - 50400.*xi*eta*eta + 1400. + 30240.*(eta*eta) + 15120.*(xi*xi) - 21000.*eta*eta*eta - 8400.*xi*xi*xi, -30240.*eta*xi + 8400.*eta + 25200.*eta*(xi*xi) + 12600.*xi + 12600.*xi*(eta*eta) - 2100. - 7560.*eta*eta - 22680.*xi*xi + 12600.*(xi*xi*xi));
3664 case 15:
3665 return RealGradient(-846720.*eta*xi + 352800.*eta + 453600.*eta*(xi*xi) + 188160.*xi + 806400.*xi*(eta*eta) - 49000. - 705600.*eta*eta - 211680.*xi*xi + 420000.*(eta*eta*eta) + 67200.*(xi*xi*xi), 10080.*xi*(-40.*eta*xi + 28.*eta + 21.*xi - 7. - 25.*eta*eta - 15.*xi*xi));
3666 case 16:
3667 return RealGradient(423360.*eta*xi - 70560.*eta - 453600.*eta*xi*xi - 94080.*xi - 403200.*xi*eta*eta + 9800. + 141120.*(eta*eta) + 211680.*(xi*xi) - 84000.*eta*eta*eta - 134400.*xi*xi*xi, 10080.*xi*(20.*eta*xi - 14.*eta - 21.*xi + 7. + 5.*(eta*eta) + 15.*(xi*xi)));
3668 case 17:
3669 return RealGradient(-13440.*xi + 560. + 60480.*(xi*xi) - 67200.*xi*xi*xi, 0.);
3670 case 18:
3671 return RealGradient(6720.*xi - 280. - 30240.*xi*xi + 33600.*(xi*xi*xi), 0.);
3672 case 19:
3673 return RealGradient(120960.*eta*xi - 201600.*eta - 13440.*xi - 201600.*xi*eta*eta + 18200. + 554400.*(eta*eta) - 420000.*eta*eta*eta, 10080.*xi*(10.*eta*xi - 22.*eta - 3.*xi + 4. + 25.*(eta*eta)));
3674 case 20:
3675 return RealGradient(-241920.*eta*xi + 161280.*eta + 26880.*xi + 403200.*xi*(eta*eta) - 14560. - 443520.*eta*eta + 336000.*(eta*eta*eta), 20160.*xi*(-10.*eta*xi + 13.*eta + 3.*xi - 3. - 10.*eta*eta));
3676 case 21:
3677 return RealGradient(232960.*eta*xi - 26880.*eta - 268800.*eta*xi*xi - 58240.*xi - 560000.*xi*eta*eta/3. + 14840./3. + 115360.*(eta*eta)/3. + 125440.*(xi*xi) - 140000.*eta*eta*eta/9. - 582400.*xi*xi*xi/9., 1120.*xi*(250.*eta*xi/3. - 70.*eta/3. - 73.*xi + 12. + 25.*(eta*eta)/3. + 80.*(xi*xi)));
3678 case 22:
3679 return RealGradient(-183680.*eta*xi + 20160.*eta + 235200.*eta*(xi*xi) + 44800.*xi + 448000.*xi*(eta*eta)/3. - 10640./3. - 89600.*eta*eta/3. - 109760.*xi*xi + 112000.*(eta*eta*eta)/9. + 627200.*(xi*xi*xi)/9., 2240.*xi*(-100.*eta*xi/3. + 31.*eta/3. + 34.*xi - 6. - 10.*eta*eta/3. - 35.*xi*xi));
3680 case 23:
3681 return RealGradient(371840.*eta*xi - 91840.*eta - 235200.*eta*xi*xi - 62720.*xi - 1254400.*xi*eta*eta/3. + 32480./3. + 600320.*(eta*eta)/3. + 76160.*(xi*xi) - 1120000.*eta*eta*eta/9. - 224000.*xi*xi*xi/9., 2240.*xi*(280.*eta*xi/3. - 136.*eta/3. - 49.*xi + 13. + 100.*(eta*eta)/3. + 35.*(xi*xi)));
3682 case 24:
3683 return RealGradient(-340480.*eta*xi + 71680.*eta + 268800.*eta*(xi*xi) + 56000.*xi + 1164800.*xi*(eta*eta)/3. - 24920./3. - 474880.*eta*eta/3. - 81760.*xi*xi + 896000.*(eta*eta*eta)/9. + 280000.*(xi*xi*xi)/9., 8960.*xi*(-65.*eta*xi/3. + 35.*eta/3. + 14.*xi - 4. - 20.*eta*eta/3. - 10.*xi*xi));
3684 case 25:
3685 return RealGradient(103040.*eta*xi - 56000.*eta - 33600.*eta*xi*xi - 31360.*xi/3. - 380800.*xi*eta*eta/3. + 51800./9. + 375200.*(eta*eta)/3. - 2240.*xi*xi - 700000.*eta*eta*eta/9. + 44800.*(xi*xi*xi)/9., 1120.*xi*(170.*eta*xi/3. - 134.*eta/3. - 23.*xi + 10. + 125.*(eta*eta)/3. + 10.*(xi*xi)));
3686 case 26:
3687 return RealGradient(-165760.*eta*xi + 24640.*eta + 168000.*eta*(xi*xi) + 89600.*xi/3. + 492800.*xi*(eta*eta)/3. - 29680./9. - 138880.*eta*eta/3. - 51520.*xi*xi + 224000.*(eta*eta*eta)/9. + 179200.*(xi*xi*xi)/9., 2240.*xi*(-110.*eta*xi/3. + 71.*eta/3. + 36.*xi - 12. - 20.*eta*eta/3. - 25.*xi*xi));
3688 case 27:
3689 return RealGradient(-22400.*eta*xi + 39200.*eta - 16800.*eta*xi*xi - 8960.*xi/3. + 179200.*xi*(eta*eta)/3. - 26600./9. - 324800.*eta*eta/3. + 12320.*(xi*xi) + 700000.*(eta*eta*eta)/9. - 44800.*xi*xi*xi/9., 1120.*xi*(-80.*eta*xi/3. + 116.*eta/3. + 5.*xi - 7. - 125.*eta*eta/3. + 5.*(xi*xi)));
3690 case 28:
3691 return RealGradient(105280.*eta*xi - 32480.*eta - 16800.*eta*xi*xi - 22400.*xi/3. - 492800.*xi*eta*eta/3. + 27160./9. + 239680.*(eta*eta)/3. - 19040.*xi*xi - 476000.*eta*eta*eta/9. + 224000.*(xi*xi*xi)/9., 1120.*xi*(220.*eta*xi/3. - 178.*eta/3. - 27.*xi + 17. + 85.*(eta*eta)/3. + 5.*(xi*xi)));
3692 case 29:
3693 return RealGradient(165760.*eta*xi + 64960.*eta - 168000.*eta*xi*xi - 138880.*xi/3. - 358400.*xi*eta*eta/3. - 48160./9. - 519680.*eta*eta/3. + 80640.*(xi*xi) + 1120000.*(eta*eta*eta)/9. - 246400.*xi*xi*xi/9., 2240.*xi*(80.*eta*xi/3. + 64.*eta/3. - 23.*xi - 1. - 100.*eta*eta/3. + 25.*(xi*xi)));
3694 case 30:
3695 return RealGradient(4480.*eta*xi - 11200.*eta + 33600.*eta*(xi*xi) + 15680.*xi/3. - 89600.*xi*eta*eta/3. + 6440./9. + 98560.*(eta*eta)/3. - 25760.*xi*xi - 224000.*eta*eta*eta/9. + 190400.*(xi*xi*xi)/9., 2240.*xi*(20.*eta*xi/3. - 44.*eta/3. - xi + 5. + 20.*(eta*eta)/3. - 5.*xi*xi));
3696 case 31:
3697 return RealGradient(116480.*eta*xi - 3360.*eta + 16800.*eta*(xi*xi) - 35840.*xi/3. - 448000.*xi*eta*eta/3. + 8680./9. - 24640.*eta*eta/3. - 30240.*xi*xi + 140000.*(eta*eta*eta)/9. + 246400.*(xi*xi*xi)/9., 1120.*xi*(200.*eta*xi/3. - 20.*eta/3. - 17.*xi + 3. - 25.*eta*eta/3. - 5.*xi*xi));
3698 case 32:
3699 return RealGradient(-24640.*eta*xi + 1120.*eta + 16800.*eta*(xi*xi) + 4480.*xi/3. + 89600.*xi*(eta*eta)/3. - 1400./9. + 2240.*(eta*eta)/3. + 5600.*(xi*xi) - 28000.*eta*eta*eta/9. - 89600.*xi*xi*xi/9., 1120.*xi*(-40.*eta*xi/3. - 2.*eta/3. + 11.*xi - 1. + 5.*(eta*eta)/3. - 5.*xi*xi));
3700 case 33:
3701 return RealGradient(-67200.*eta*xi + 3360.*eta + 50400.*eta*(xi*xi) + 38080.*xi/3. + 67200.*xi*(eta*eta) - 5600./9. - 3360.*eta*eta - 19040.*xi*xi + 22400.*(xi*xi*xi)/3., 3360.*xi*(-10.*eta*xi + 2.*eta + 6.*xi - 1. - 5.*xi*xi));
3702 case 34:
3703 return RealGradient(47040.*eta*xi - 7840.*eta - 50400.*eta*xi*xi - 29120.*xi/3. - 44800.*xi*eta*eta + 9520./9. + 15680.*(eta*eta) + 20160.*(xi*xi) - 28000.*eta*eta*eta/3. - 11200.*xi*xi*xi, 1120.*xi*(20.*eta*xi - 8.*eta - 17.*xi + 3. + 5.*(eta*eta) + 15.*(xi*xi)));
3704 default:
3705 libmesh_error_msg("Invalid i = " << i);
3706 }
3707 } // j = 2
3708
3709 default:
3710 libmesh_error_msg("Invalid j = " << j);
3711 }
3712 }
3713
3714 default:
3715 libmesh_error_msg("ERROR: Unsupported 2D element type!: " << Utility::enum_to_string(elem->type()));
3716 } // end switch (type)
3717 } // end case FIFTH
3718
3719 // unsupported order
3720 default:
3721 libmesh_error_msg("ERROR: Unsupported 2D FE order!: " << totalorder);
3722
3723 } // end switch (order)
3724
3725#else // LIBMESH_DIM > 1
3726 libmesh_assert(true || i || j);
3727 libmesh_ignore(elem, order, add_p_level);
3728 libmesh_not_implemented();
3729#endif
3730}

◆ shape_second_deriv() [79/233]

Real libMesh::FE< 1, RATIONAL_BERNSTEIN >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 131 of file fe_rational_shape_1D.C.

137{
138 libmesh_assert(elem);
139
140 // FEType object to be passed to various FEInterface functions below.
141 FEType underlying_fe_type(order, _underlying_fe_family);
142
143 return rational_fe_shape_second_deriv(*elem, underlying_fe_type, i,
144 j, p, add_p_level);
145}
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)
Definition fe.C:1202

◆ shape_second_deriv() [80/233]

Real libMesh::FE< 2, RATIONAL_BERNSTEIN >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 130 of file fe_rational_shape_2D.C.

136{
137 libmesh_assert(elem);
138
139 // FEType object to be passed to various FEInterface functions below.
140 FEType underlying_fe_type(order, _underlying_fe_family);
141
142 return rational_fe_shape_second_deriv(*elem, underlying_fe_type, i,
143 j, p, add_p_level);
144}

◆ shape_second_deriv() [81/233]

Real libMesh::FE< 3, RATIONAL_BERNSTEIN >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 126 of file fe_rational_shape_3D.C.

132{
133 libmesh_assert(elem);
134
135 // FEType object to be passed to various FEInterface functions below.
136 FEType underlying_fe_type(order, _underlying_fe_family);
137
138 return rational_fe_shape_second_deriv(*elem, underlying_fe_type, i,
139 j, p, add_p_level);
140}

◆ shape_second_deriv() [82/233]

RealGradient libMesh::FE< 2, RAVIART_THOMAS >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 160 of file fe_raviart_shape_2D.C.

166{
167 RealGradient ND1 = FE<2,NEDELEC_ONE>::shape_second_deriv(elem, order, i, j, p, add_p_level);
168 return RealGradient(-ND1(1), ND1(0));
169}

◆ shape_second_deriv() [83/233]

RealGradient libMesh::FE< 2, L2_RAVIART_THOMAS >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 172 of file fe_raviart_shape_2D.C.

178{
179 return FE<2,RAVIART_THOMAS>::shape_second_deriv(elem, order, i, j, p, add_p_level);
180}

◆ shape_second_deriv() [84/233]

RealGradient libMesh::FE< 3, L2_RAVIART_THOMAS >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 458 of file fe_raviart_shape_3D.C.

464{
465 return FE<3,RAVIART_THOMAS>::shape_second_deriv(elem, order, i, j, p, add_p_level);
466}

◆ shape_second_deriv() [85/233]

Real libMesh::FE< 2, SUBDIVISION >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 846 of file fe_subdivision_2D.C.

852{
853 libmesh_assert(elem);
854 const Order totalorder = order + add_p_level*elem->p_level();
855 return FE<2,SUBDIVISION>::shape_second_deriv(elem->type(), totalorder, i, j, p);
856}

◆ shape_second_deriv() [86/233]

RealGradient libMesh::FE< 3, RAVIART_THOMAS >::shape_second_deriv ( const Elem elem,
const Order  order,
const unsigned int  libmesh_dbg_vari,
const unsigned int  libmesh_dbg_varj,
const Point ,
const bool  add_p_level 
)
inherited

Definition at line 404 of file fe_raviart_shape_3D.C.

410{
411#if LIBMESH_DIM == 3
412
413 libmesh_assert(elem);
414
415 // j = 0 ==> d^2 phi / dxi^2
416 // j = 1 ==> d^2 phi / dxi deta
417 // j = 2 ==> d^2 phi / deta^2
418 // j = 3 ==> d^2 phi / dxi dzeta
419 // j = 4 ==> d^2 phi / deta dzeta
420 // j = 5 ==> d^2 phi / dzeta^2
421 libmesh_assert_less (j, 6);
422
423 const Order totalorder = order + add_p_level*elem->p_level();
424 libmesh_assert_less(i, n_dofs(elem->type(), totalorder));
425
426 switch (totalorder)
427 {
428 // linear Raviart-Thomas shape function second derivatives
429 case FIRST:
430 {
431 switch (elem->type())
432 {
433 // All second derivatives for linear hexes and tets are zero.
434 case HEX27:
435 case TET14:
436 return RealGradient();
437
438 default:
439 libmesh_error_msg("ERROR: Unsupported 3D element type!: " << Utility::enum_to_string(elem->type()));
440
441 } //switch(type)
442 }
443
444 // unsupported order
445 default:
446 libmesh_error_msg("ERROR: Unsupported 3D FE order!: " << totalorder);
447 }
448
449#else // LIBMESH_DIM != 3
450 libmesh_assert(true || p(0));
451 libmesh_ignore(elem, order, i, j, add_p_level);
452 libmesh_not_implemented();
453#endif
454}

◆ shape_second_deriv() [87/233]

Real libMesh::FE< 3, CLOUGH >::shape_second_deriv ( const Elem libmesh_dbg_varelem,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 132 of file fe_clough_shape_3D.C.

138{
139 libmesh_assert(elem);
140 libmesh_not_implemented();
141 return 0.;
142}

◆ shape_second_deriv() [88/233]

Real libMesh::FE< 1, HIERARCHIC >::shape_second_deriv ( const ElemType  elem_type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 302 of file fe_hierarchic_shape_1D.C.

307{
308 return fe_hierarchic_1D_shape_second_deriv(elem_type, order, i, j, p);
309}

◆ shape_second_deriv() [89/233]

Real libMesh::FE< 1, L2_HIERARCHIC >::shape_second_deriv ( const ElemType  elem_type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 315 of file fe_hierarchic_shape_1D.C.

320{
321 return fe_hierarchic_1D_shape_second_deriv(elem_type, order, i, j, p);
322}

◆ shape_second_deriv() [90/233]

static OutputShape libMesh::FE< Dim, T >::shape_second_deriv ( const ElemType  t,
const Order  o,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
staticinherited
Returns
The second \( j^{th} \) derivative of the \( i^{th} \) shape function at the point p.
Note
Cross-derivatives are indexed according to: j = 0 ==> d^2 phi / dxi^2 j = 1 ==> d^2 phi / dxi deta j = 2 ==> d^2 phi / deta^2 j = 3 ==> d^2 phi / dxi dzeta j = 4 ==> d^2 phi / deta dzeta j = 5 ==> d^2 phi / dzeta^2
Computing second derivatives is not currently supported for all element types: \( C^1 \) (Clough, Hermite and Subdivision), Lagrange, Hierarchic, L2_Hierarchic, and Monomial are supported. All other element types return an error when asked for second derivatives.

On a p-refined element, o should be the total order of the element.

◆ shape_second_deriv() [91/233]

RealGradient libMesh::FE< 0, HIERARCHIC_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 146 of file fe_hierarchic_vec.C.

149{
150 Real value = FE<0,HIERARCHIC>::shape_second_deriv( type, order, i, j, p );
152}

◆ shape_second_deriv() [92/233]

RealGradient libMesh::FE< 0, L2_HIERARCHIC_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 169 of file fe_hierarchic_vec.C.

172{
173 return FE<0,HIERARCHIC_VEC>::shape_second_deriv(type, order, i, j, p);
174}

◆ shape_second_deriv() [93/233]

RealGradient libMesh::FE< 1, HIERARCHIC_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 192 of file fe_hierarchic_vec.C.

195{
196 Real value = FE<1,HIERARCHIC>::shape_second_deriv( type, order, i, j, p );
198}

◆ shape_second_deriv() [94/233]

RealGradient libMesh::FE< 1, L2_HIERARCHIC_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 216 of file fe_hierarchic_vec.C.

219{
220 return FE<1,HIERARCHIC_VEC>::shape_second_deriv(type, order, i, j, p);
221}

◆ shape_second_deriv() [95/233]

RealGradient libMesh::FE< 2, HIERARCHIC_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 268 of file fe_hierarchic_vec.C.

271{
272 Real value = FE<2,HIERARCHIC>::shape_second_deriv( type, order, i/2, j, p );
273
274 switch( i%2 )
275 {
276 case 0:
278
279 case 1:
280 return libMesh::RealGradient( Real(0), value );
281
282 default:
283 libmesh_error_msg("i%2 must be either 0 or 1!");
284 }
285
286 //dummy
287 return libMesh::RealGradient();
288}

◆ shape_second_deriv() [96/233]

RealGradient libMesh::FE< 2, L2_HIERARCHIC_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 306 of file fe_hierarchic_vec.C.

309{
310 return FE<2,HIERARCHIC_VEC>::shape_second_deriv(type, order, i, j, p);
311}

◆ shape_second_deriv() [97/233]

RealGradient libMesh::FE< 3, HIERARCHIC_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 366 of file fe_hierarchic_vec.C.

369{
370 Real value = FE<3,HIERARCHIC>::shape_second_deriv( type, order, i/3, j, p );
371
372 switch( i%3 )
373 {
374 case 0:
376
377 case 1:
378 return libMesh::RealGradient( Real(0), value );
379
380 case 2:
381 return libMesh::RealGradient( Real(0), Real(0), value );
382
383 default:
384 libmesh_error_msg("i%3 must be 0, 1, or 2!");
385 }
386
387 //dummy
388 return libMesh::RealGradient();
389}

◆ shape_second_deriv() [98/233]

RealGradient libMesh::FE< 3, L2_HIERARCHIC_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 407 of file fe_hierarchic_vec.C.

410{
411 return FE<3,HIERARCHIC_VEC>::shape_second_deriv(type, order, i, j, p);
412}

◆ shape_second_deriv() [99/233]

Real libMesh::FE< 2, LAGRANGE >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 233 of file fe_lagrange_shape_2D.C.

238{
239 return fe_lagrange_2D_shape_second_deriv<LAGRANGE>(type, nullptr, order, i, j, p);
240}

◆ shape_second_deriv() [100/233]

Real libMesh::FE< 2, L2_LAGRANGE >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 245 of file fe_lagrange_shape_2D.C.

250{
251 return fe_lagrange_2D_shape_second_deriv<L2_LAGRANGE>(type, nullptr, order, i, j, p);
252}

◆ shape_second_deriv() [101/233]

Real libMesh::FE< 3, LAGRANGE >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 576 of file fe_lagrange_shape_3D.C.

581{
582 return fe_lagrange_3D_shape_second_deriv<LAGRANGE>(type, order, nullptr, i, j, p);
583}

◆ shape_second_deriv() [102/233]

Real libMesh::FE< 3, L2_LAGRANGE >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 588 of file fe_lagrange_shape_3D.C.

593{
594 return fe_lagrange_3D_shape_second_deriv<L2_LAGRANGE>(type, order, nullptr, i, j, p);
595}

◆ shape_second_deriv() [103/233]

RealGradient libMesh::FE< 0, LAGRANGE_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 686 of file fe_lagrange_vec.C.

689{
690 Real value = FE<0,LAGRANGE>::shape_second_deriv( type, order, i, j, p );
692}

◆ shape_second_deriv() [104/233]

RealGradient libMesh::FE< 0, L2_LAGRANGE_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 709 of file fe_lagrange_vec.C.

712{
713 return FE<0,LAGRANGE_VEC>::shape_second_deriv(type, order, i, j, p);
714}

◆ shape_second_deriv() [105/233]

RealGradient libMesh::FE< 1, LAGRANGE_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 732 of file fe_lagrange_vec.C.

735{
736 Real value = FE<1,LAGRANGE>::shape_second_deriv( type, order, i, j, p );
738}

◆ shape_second_deriv() [106/233]

RealGradient libMesh::FE< 1, L2_LAGRANGE_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 756 of file fe_lagrange_vec.C.

759{
760 return FE<1,LAGRANGE_VEC>::shape_second_deriv(type, order, i, j, p);
761}

◆ shape_second_deriv() [107/233]

RealGradient libMesh::FE< 2, LAGRANGE_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 808 of file fe_lagrange_vec.C.

811{
812 Real value = FE<2,LAGRANGE>::shape_second_deriv( type, order, i/2, j, p );
813
814 switch( i%2 )
815 {
816 case 0:
818
819 case 1:
820 return libMesh::RealGradient( Real(0), value );
821
822 default:
823 libmesh_error_msg("i%2 must be either 0 or 1!");
824 }
825
826 //dummy
827 return libMesh::RealGradient();
828}

◆ shape_second_deriv() [108/233]

RealGradient libMesh::FE< 2, L2_LAGRANGE_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 846 of file fe_lagrange_vec.C.

849{
850 return FE<2,LAGRANGE_VEC>::shape_second_deriv(type, order, i, j, p);
851}

◆ shape_second_deriv() [109/233]

RealGradient libMesh::FE< 3, LAGRANGE_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 906 of file fe_lagrange_vec.C.

909{
910 Real value = FE<3,LAGRANGE>::shape_second_deriv( type, order, i/3, j, p );
911
912 switch( i%3 )
913 {
914 case 0:
916
917 case 1:
918 return libMesh::RealGradient( Real(0), value );
919
920 case 2:
921 return libMesh::RealGradient( Real(0), Real(0), value );
922
923 default:
924 libmesh_error_msg("i%3 must be 0, 1, or 2!");
925 }
926
927 //dummy
928 return libMesh::RealGradient();
929}

◆ shape_second_deriv() [110/233]

RealGradient libMesh::FE< 3, L2_LAGRANGE_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 947 of file fe_lagrange_vec.C.

950{
951 return FE<3,LAGRANGE_VEC>::shape_second_deriv(type, order, i, j, p);
952}

◆ shape_second_deriv() [111/233]

RealVectorValue libMesh::FE< 0, MONOMIAL_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 172 of file fe_monomial_vec.C.

177{
178 Real value = FE<0, MONOMIAL>::shape_second_deriv(type, order, i, j, p);
180}

◆ shape_second_deriv() [112/233]

RealVectorValue libMesh::FE< 1, MONOMIAL_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 208 of file fe_monomial_vec.C.

213{
214 Real value = FE<1, MONOMIAL>::shape_second_deriv(type, order, i, j, p);
216}

◆ shape_second_deriv() [113/233]

RealVectorValue libMesh::FE< 2, MONOMIAL_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 274 of file fe_monomial_vec.C.

279{
280 Real value = FE<2, MONOMIAL>::shape_second_deriv(type, order, i / 2, j, p);
281
282 switch (i % 2)
283 {
284 case 0:
286
287 case 1:
289
290 default:
291 libmesh_error_msg("i%2 must be either 0 or 1!");
292 }
293
294 // dummy
296}

◆ shape_second_deriv() [114/233]

RealVectorValue libMesh::FE< 3, MONOMIAL_VEC >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 361 of file fe_monomial_vec.C.

366{
367 Real value = FE<3, MONOMIAL>::shape_second_deriv(type, order, i / 3, j, p);
368
369 switch (i % 3)
370 {
371 case 0:
373
374 case 1:
376
377 case 2:
378 return libMesh::RealVectorValue(Real(0), Real(0), value);
379
380 default:
381 libmesh_error_msg("i%3 must be 0, 1, or 2!");
382 }
383
384 // dummy
386}

◆ shape_second_deriv() [115/233]

Real libMesh::FE< 2, SUBDIVISION >::shape_second_deriv ( const ElemType  type,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 819 of file fe_subdivision_2D.C.

824{
825 switch (order)
826 {
827 case FOURTH:
828 {
829 switch (type)
830 {
831 case TRI3SUBDIVISION:
832 libmesh_assert_less(i, 12);
833 return FESubdivision::regular_shape_second_deriv(i,j,p(0),p(1));
834 default:
835 libmesh_error_msg("ERROR: Unsupported element type == " << Utility::enum_to_string(type));
836 }
837 }
838 default:
839 libmesh_error_msg("ERROR: Unsupported polynomial order == " << order);
840 }
841}

◆ shape_second_deriv() [116/233]

Real libMesh::FE< 2, MONOMIAL >::shape_second_deriv ( const ElemType  ,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 356 of file fe_monomial_shape_2D.C.

361{
362#if LIBMESH_DIM > 1
363
364
365 libmesh_assert_less_equal (j, 2);
366
367 libmesh_assert_less (i, (static_cast<unsigned int>(order)+1)*
368 (static_cast<unsigned int>(order)+2)/2);
369
370 const Real xi = p(0);
371 const Real eta = p(1);
372
373 // monomials. since they are hierarchic we only need one case block.
374
375 switch (j)
376 {
377 // d^2()/dxi^2
378 case 0:
379 {
380 switch (i)
381 {
382 // constants
383 case 0:
384 // linears
385 case 1:
386 case 2:
387 return 0.;
388
389 // quadratics
390 case 3:
391 return 2.;
392
393 case 4:
394 case 5:
395 return 0.;
396
397 // cubics
398 case 6:
399 return 6.*xi;
400
401 case 7:
402 return 2.*eta;
403
404 case 8:
405 case 9:
406 return 0.;
407
408 // quartics
409 case 10:
410 return 12.*xi*xi;
411
412 case 11:
413 return 6.*xi*eta;
414
415 case 12:
416 return 2.*eta*eta;
417
418 case 13:
419 case 14:
420 return 0.;
421
422 default:
423 unsigned int o = 0;
424 for (; i >= (o+1)*(o+2)/2; o++) { }
425 const int ny = i - (o*(o+1)/2);
426 const int nx = o - ny;
427 Real val = nx * (nx - 1);
428 for (int index=2; index < nx; index++)
429 val *= xi;
430 for (int index=0; index != ny; index++)
431 val *= eta;
432 return val;
433 }
434 }
435
436 // d^2()/dxideta
437 case 1:
438 {
439 switch (i)
440 {
441 // constants
442 case 0:
443
444 // linears
445 case 1:
446 case 2:
447 return 0.;
448
449 // quadratics
450 case 3:
451 return 0.;
452
453 case 4:
454 return 1.;
455
456 case 5:
457 return 0.;
458
459 // cubics
460 case 6:
461 return 0.;
462 case 7:
463 return 2.*xi;
464
465 case 8:
466 return 2.*eta;
467
468 case 9:
469 return 0.;
470
471 // quartics
472 case 10:
473 return 0.;
474
475 case 11:
476 return 3.*xi*xi;
477
478 case 12:
479 return 4.*xi*eta;
480
481 case 13:
482 return 3.*eta*eta;
483
484 case 14:
485 return 0.;
486
487 default:
488 unsigned int o = 0;
489 for (; i >= (o+1)*(o+2)/2; o++) { }
490 const int ny = i - (o*(o+1)/2);
491 const int nx = o - ny;
492 Real val = nx * ny;
493 for (int index=1; index < nx; index++)
494 val *= xi;
495 for (int index=1; index < ny; index++)
496 val *= eta;
497 return val;
498 }
499 }
500
501 // d^2()/deta^2
502 case 2:
503 {
504 switch (i)
505 {
506 // constants
507 case 0:
508
509 // linears
510 case 1:
511 case 2:
512 return 0.;
513
514 // quadratics
515 case 3:
516 case 4:
517 return 0.;
518
519 case 5:
520 return 2.;
521
522 // cubics
523 case 6:
524 return 0.;
525
526 case 7:
527 return 0.;
528
529 case 8:
530 return 2.*xi;
531
532 case 9:
533 return 6.*eta;
534
535 // quartics
536 case 10:
537 case 11:
538 return 0.;
539
540 case 12:
541 return 2.*xi*xi;
542
543 case 13:
544 return 6.*xi*eta;
545
546 case 14:
547 return 12.*eta*eta;
548
549 default:
550 unsigned int o = 0;
551 for (; i >= (o+1)*(o+2)/2; o++) { }
552 const int ny = i - (o*(o+1)/2);
553 const int nx = o - ny;
554 Real val = ny * (ny - 1);
555 for (int index=0; index != nx; index++)
556 val *= xi;
557 for (int index=2; index < ny; index++)
558 val *= eta;
559 return val;
560 }
561 }
562
563 default:
564 libmesh_error_msg("Invalid shape function derivative j = " << j);
565 }
566
567#else // LIBMESH_DIM == 1
568 libmesh_assert(order);
569 libmesh_ignore(i, j, p);
570 libmesh_not_implemented();
571#endif
572}

◆ shape_second_deriv() [117/233]

Real libMesh::FE< 3, MONOMIAL >::shape_second_deriv ( const ElemType  ,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 690 of file fe_monomial_shape_3D.C.

695{
696#if LIBMESH_DIM == 3
697
698 libmesh_assert_less (j, 6);
699
700 libmesh_assert_less (i, (static_cast<unsigned int>(order)+1)*
701 (static_cast<unsigned int>(order)+2)*
702 (static_cast<unsigned int>(order)+3)/6);
703
704 const Real xi = p(0);
705 const Real eta = p(1);
706 const Real zeta = p(2);
707
708 // monomials. since they are hierarchic we only need one case block.
709 switch (j)
710 {
711 // d^2()/dxi^2
712 case 0:
713 {
714 switch (i)
715 {
716 // constant
717 case 0:
718
719 // linear
720 case 1:
721 case 2:
722 case 3:
723 return 0.;
724
725 // quadratic
726 case 4:
727 return 2.;
728
729 case 5:
730 case 6:
731 case 7:
732 case 8:
733 case 9:
734 return 0.;
735
736 // cubic
737 case 10:
738 return 6.*xi;
739
740 case 11:
741 return 2.*eta;
742
743 case 12:
744 case 13:
745 return 0.;
746
747 case 14:
748 return 2.*zeta;
749
750 case 15:
751 case 16:
752 case 17:
753 case 18:
754 case 19:
755 return 0.;
756
757 // quartics
758 case 20:
759 return 12.*xi*xi;
760
761 case 21:
762 return 6.*xi*eta;
763
764 case 22:
765 return 2.*eta*eta;
766
767 case 23:
768 case 24:
769 return 0.;
770
771 case 25:
772 return 6.*xi*zeta;
773
774 case 26:
775 return 2.*eta*zeta;
776
777 case 27:
778 case 28:
779 return 0.;
780
781 case 29:
782 return 2.*zeta*zeta;
783
784 case 30:
785 case 31:
786 case 32:
787 case 33:
788 case 34:
789 return 0.;
790
791 default:
792 unsigned int o = 0;
793 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
794 const int i2 = i - (o*(o+1)*(o+2)/6);
795 int block=o, nz = 0;
796 for (; block < i2; block += (o-nz+1)) { nz++; }
797 const int nx = block - i2;
798 const int ny = o - nx - nz;
799 Real val = nx * (nx - 1);
800 for (int index=2; index < nx; index++)
801 val *= xi;
802 for (int index=0; index != ny; index++)
803 val *= eta;
804 for (int index=0; index != nz; index++)
805 val *= zeta;
806 return val;
807 }
808 }
809
810
811 // d^2()/dxideta
812 case 1:
813 {
814 switch (i)
815 {
816 // constant
817 case 0:
818
819 // linear
820 case 1:
821 case 2:
822 case 3:
823 return 0.;
824
825 // quadratic
826 case 4:
827 return 0.;
828
829 case 5:
830 return 1.;
831
832 case 6:
833 case 7:
834 case 8:
835 case 9:
836 return 0.;
837
838 // cubic
839 case 10:
840 return 0.;
841
842 case 11:
843 return 2.*xi;
844
845 case 12:
846 return 2.*eta;
847
848 case 13:
849 case 14:
850 return 0.;
851
852 case 15:
853 return zeta;
854
855 case 16:
856 case 17:
857 case 18:
858 case 19:
859 return 0.;
860
861 // quartics
862 case 20:
863 return 0.;
864
865 case 21:
866 return 3.*xi*xi;
867
868 case 22:
869 return 4.*xi*eta;
870
871 case 23:
872 return 3.*eta*eta;
873
874 case 24:
875 case 25:
876 return 0.;
877
878 case 26:
879 return 2.*xi*zeta;
880
881 case 27:
882 return 2.*eta*zeta;
883
884 case 28:
885 case 29:
886 return 0.;
887
888 case 30:
889 return zeta*zeta;
890
891 case 31:
892 case 32:
893 case 33:
894 case 34:
895 return 0.;
896
897 default:
898 unsigned int o = 0;
899 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
900 const int i2 = i - (o*(o+1)*(o+2)/6);
901 int block=o, nz = 0;
902 for (; block < i2; block += (o-nz+1)) { nz++; }
903 const int nx = block - i2;
904 const int ny = o - nx - nz;
905 Real val = nx * ny;
906 for (int index=1; index < nx; index++)
907 val *= xi;
908 for (int index=1; index < ny; index++)
909 val *= eta;
910 for (int index=0; index != nz; index++)
911 val *= zeta;
912 return val;
913 }
914 }
915
916
917 // d^2()/deta^2
918 case 2:
919 {
920 switch (i)
921 {
922 // constant
923 case 0:
924
925 // linear
926 case 1:
927 case 2:
928 case 3:
929 return 0.;
930
931 // quadratic
932 case 4:
933 case 5:
934 return 0.;
935
936 case 6:
937 return 2.;
938
939 case 7:
940 case 8:
941 case 9:
942 return 0.;
943
944 // cubic
945 case 10:
946 case 11:
947 return 0.;
948
949 case 12:
950 return 2.*xi;
951 case 13:
952 return 6.*eta;
953
954 case 14:
955 case 15:
956 return 0.;
957
958 case 16:
959 return 2.*zeta;
960
961 case 17:
962 case 18:
963 case 19:
964 return 0.;
965
966 // quartics
967 case 20:
968 case 21:
969 return 0.;
970
971 case 22:
972 return 2.*xi*xi;
973
974 case 23:
975 return 6.*xi*eta;
976
977 case 24:
978 return 12.*eta*eta;
979
980 case 25:
981 case 26:
982 return 0.;
983
984 case 27:
985 return 2.*xi*zeta;
986
987 case 28:
988 return 6.*eta*zeta;
989
990 case 29:
991 case 30:
992 return 0.;
993
994 case 31:
995 return 2.*zeta*zeta;
996
997 case 32:
998 case 33:
999 case 34:
1000 return 0.;
1001
1002 default:
1003 unsigned int o = 0;
1004 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1005 const int i2 = i - (o*(o+1)*(o+2)/6);
1006 int block=o, nz = 0;
1007 for (; block < i2; block += (o-nz+1)) { nz++; }
1008 const int nx = block - i2;
1009 const int ny = o - nx - nz;
1010 Real val = ny * (ny - 1);
1011 for (int index=0; index != nx; index++)
1012 val *= xi;
1013 for (int index=2; index < ny; index++)
1014 val *= eta;
1015 for (int index=0; index != nz; index++)
1016 val *= zeta;
1017 return val;
1018 }
1019 }
1020
1021
1022 // d^2()/dxidzeta
1023 case 3:
1024 {
1025 switch (i)
1026 {
1027 // constant
1028 case 0:
1029
1030 // linear
1031 case 1:
1032 case 2:
1033 case 3:
1034 return 0.;
1035
1036 // quadratic
1037 case 4:
1038 case 5:
1039 case 6:
1040 return 0.;
1041
1042 case 7:
1043 return 1.;
1044
1045 case 8:
1046 case 9:
1047 return 0.;
1048
1049 // cubic
1050 case 10:
1051 case 11:
1052 case 12:
1053 case 13:
1054 return 0.;
1055
1056 case 14:
1057 return 2.*xi;
1058
1059 case 15:
1060 return eta;
1061
1062 case 16:
1063 return 0.;
1064
1065 case 17:
1066 return 2.*zeta;
1067
1068 case 18:
1069 case 19:
1070 return 0.;
1071
1072 // quartics
1073 case 20:
1074 case 21:
1075 case 22:
1076 case 23:
1077 case 24:
1078 return 0.;
1079
1080 case 25:
1081 return 3.*xi*xi;
1082
1083 case 26:
1084 return 2.*xi*eta;
1085
1086 case 27:
1087 return eta*eta;
1088
1089 case 28:
1090 return 0.;
1091
1092 case 29:
1093 return 4.*xi*zeta;
1094
1095 case 30:
1096 return 2.*eta*zeta;
1097
1098 case 31:
1099 return 0.;
1100
1101 case 32:
1102 return 3.*zeta*zeta;
1103
1104 case 33:
1105 case 34:
1106 return 0.;
1107
1108 default:
1109 unsigned int o = 0;
1110 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1111 const int i2 = i - (o*(o+1)*(o+2)/6);
1112 int block=o, nz = 0;
1113 for (; block < i2; block += (o-nz+1)) { nz++; }
1114 const int nx = block - i2;
1115 const int ny = o - nx - nz;
1116 Real val = nx * nz;
1117 for (int index=1; index < nx; index++)
1118 val *= xi;
1119 for (int index=0; index != ny; index++)
1120 val *= eta;
1121 for (int index=1; index < nz; index++)
1122 val *= zeta;
1123 return val;
1124 }
1125 }
1126
1127 // d^2()/detadzeta
1128 case 4:
1129 {
1130 switch (i)
1131 {
1132 // constant
1133 case 0:
1134
1135 // linear
1136 case 1:
1137 case 2:
1138 case 3:
1139 return 0.;
1140
1141 // quadratic
1142 case 4:
1143 case 5:
1144 case 6:
1145 case 7:
1146 return 0.;
1147
1148 case 8:
1149 return 1.;
1150
1151 case 9:
1152 return 0.;
1153
1154 // cubic
1155 case 10:
1156 case 11:
1157 case 12:
1158 case 13:
1159 case 14:
1160 return 0.;
1161
1162 case 15:
1163 return xi;
1164
1165 case 16:
1166 return 2.*eta;
1167
1168 case 17:
1169 return 0.;
1170
1171 case 18:
1172 return 2.*zeta;
1173
1174 case 19:
1175 return 0.;
1176
1177 // quartics
1178 case 20:
1179 case 21:
1180 case 22:
1181 case 23:
1182 case 24:
1183 case 25:
1184 return 0.;
1185
1186 case 26:
1187 return xi*xi;
1188
1189 case 27:
1190 return 2.*xi*eta;
1191
1192 case 28:
1193 return 3.*eta*eta;
1194
1195 case 29:
1196 return 0.;
1197
1198 case 30:
1199 return 2.*xi*zeta;
1200
1201 case 31:
1202 return 4.*eta*zeta;
1203
1204 case 32:
1205 return 0.;
1206
1207 case 33:
1208 return 3.*zeta*zeta;
1209
1210 case 34:
1211 return 0.;
1212
1213 default:
1214 unsigned int o = 0;
1215 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1216 const int i2 = i - (o*(o+1)*(o+2)/6);
1217 int block=o, nz = 0;
1218 for (; block < i2; block += (o-nz+1)) { nz++; }
1219 const int nx = block - i2;
1220 const int ny = o - nx - nz;
1221 Real val = ny * nz;
1222 for (int index=0; index != nx; index++)
1223 val *= xi;
1224 for (int index=1; index < ny; index++)
1225 val *= eta;
1226 for (int index=1; index < nz; index++)
1227 val *= zeta;
1228 return val;
1229 }
1230 }
1231
1232
1233 // d^2()/dzeta^2
1234 case 5:
1235 {
1236 switch (i)
1237 {
1238 // constant
1239 case 0:
1240
1241 // linear
1242 case 1:
1243 case 2:
1244 case 3:
1245 return 0.;
1246
1247 // quadratic
1248 case 4:
1249 case 5:
1250 case 6:
1251 case 7:
1252 case 8:
1253 return 0.;
1254
1255 case 9:
1256 return 2.;
1257
1258 // cubic
1259 case 10:
1260 case 11:
1261 case 12:
1262 case 13:
1263 case 14:
1264 case 15:
1265 case 16:
1266 return 0.;
1267
1268 case 17:
1269 return 2.*xi;
1270
1271 case 18:
1272 return 2.*eta;
1273
1274 case 19:
1275 return 6.*zeta;
1276
1277 // quartics
1278 case 20:
1279 case 21:
1280 case 22:
1281 case 23:
1282 case 24:
1283 case 25:
1284 case 26:
1285 case 27:
1286 case 28:
1287 return 0.;
1288
1289 case 29:
1290 return 2.*xi*xi;
1291
1292 case 30:
1293 return 2.*xi*eta;
1294
1295 case 31:
1296 return 2.*eta*eta;
1297
1298 case 32:
1299 return 6.*xi*zeta;
1300
1301 case 33:
1302 return 6.*eta*zeta;
1303
1304 case 34:
1305 return 12.*zeta*zeta;
1306
1307 default:
1308 unsigned int o = 0;
1309 for (; i >= (o+1)*(o+2)*(o+3)/6; o++) { }
1310 const int i2 = i - (o*(o+1)*(o+2)/6);
1311 int block=o, nz = 0;
1312 for (; block < i2; block += (o-nz+1)) { nz++; }
1313 const int nx = block - i2;
1314 const int ny = o - nx - nz;
1315 Real val = nz * (nz - 1);
1316 for (int index=0; index != nx; index++)
1317 val *= xi;
1318 for (int index=0; index != ny; index++)
1319 val *= eta;
1320 for (int index=2; index < nz; index++)
1321 val *= zeta;
1322 return val;
1323 }
1324 }
1325
1326 default:
1327 libmesh_error_msg("Invalid j = " << j);
1328 }
1329
1330#else // LIBMESH_DIM != 3
1331 libmesh_assert(order);
1332 libmesh_ignore(i, j, p);
1333 libmesh_not_implemented();
1334#endif
1335}

◆ shape_second_deriv() [118/233]

Real libMesh::FE< 1, MONOMIAL >::shape_second_deriv ( const ElemType  ,
const Order  libmesh_dbg_varorder,
const unsigned int  i,
const unsigned int  libmesh_dbg_varj,
const Point p 
)
inherited

Definition at line 171 of file fe_monomial_shape_1D.C.

176{
177 // only d()/dxi in 1D!
178
179 libmesh_assert_equal_to (j, 0);
180
181 const Real xi = p(0);
182
183 libmesh_assert_less_equal (i, static_cast<unsigned int>(order));
184
185 switch (i)
186 {
187 case 0:
188 case 1:
189 return 0.;
190
191 case 2:
192 return 2.;
193
194 case 3:
195 return 6.*xi;
196
197 case 4:
198 return 12.*xi*xi;
199
200 default:
201 Real val = 2.;
202 for (unsigned int index = 2; index != i; ++index)
203 val *= (index+1) * xi;
204 return val;
205 }
206}

◆ shape_second_deriv() [119/233]

Real libMesh::FE< 1, LAGRANGE >::shape_second_deriv ( const ElemType  ,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 184 of file fe_lagrange_shape_1D.C.

189{
190 return fe_lagrange_1D_shape_second_deriv(order, i, j, p(0));
191}

◆ shape_second_deriv() [120/233]

Real libMesh::FE< 1, L2_LAGRANGE >::shape_second_deriv ( const ElemType  ,
const Order  order,
const unsigned int  i,
const unsigned int  j,
const Point p 
)
inherited

Definition at line 196 of file fe_lagrange_shape_1D.C.

201{
202 return fe_lagrange_1D_shape_second_deriv(order, i, j, p(0));
203}

◆ shape_second_deriv() [121/233]

Real libMesh::FE< 1, BERNSTEIN >::shape_second_deriv ( const ElemType  ,
const Order  order,
const unsigned int  i,
const unsigned int  libmesh_dbg_varj,
const Point p 
)
inherited

Definition at line 412 of file fe_bernstein_shape_1D.C.

417{
418 // only d^2()/dxi^2 in 1D!
419
420 libmesh_assert_equal_to (j, 0);
421
422 const Real xi = p(0);
423
424 using Utility::pow;
425
426 switch (order)
427 {
428 case FIRST:
429
430 switch(i)
431 {
432 case 0:
433 case 1:
434 return 0;
435 default:
436 libmesh_error_msg("Invalid shape function index i = " << i);
437 }
438
439 case SECOND:
440
441 switch(i)
442 {
443 case 0:
444 case 1:
445 return .5;
446 case 2:
447 return -1;
448 default:
449 libmesh_error_msg("Invalid shape function index i = " << i);
450 }
451
452 case THIRD:
453
454 switch(i)
455 {
456 case 0:
457 return 0.75*(1.-xi);
458 case 1:
459 return 0.75*(1.+xi);
460 case 2:
461 return -.75 + 2.25*xi;
462 case 3:
463 return -.75 - 2.25*xi;
464 default:
465 libmesh_error_msg("Invalid shape function index i = " << i);
466 }
467
468 case FOURTH:
469
470 switch(i)
471 {
472 case 0:
473 return 0.75*pow<2>(1.-xi);
474 case 1:
475 return 0.75*pow<2>(1.+xi);
476 case 2:
477 return 3*(xi - pow<2>(xi));
478 case 3:
479 return 1.5*(3*pow<2>(xi)-1);
480 case 4:
481 return -3*xi-3*pow<2>(xi);
482 default:
483 libmesh_error_msg("Invalid shape function index i = " << i);
484 }
485
486 case FIFTH:
487
488 switch(i)
489 {
490 case 0:
491 return -(5./8.)*pow<3>(xi-1.);
492 case 1:
493 return (5./8.)*pow<3>(xi+1.);
494 case 2:
495 return -(5./4.)*pow<3>(1.-xi) + (15./8.)*(1.+xi)*pow<2>(1.-xi);
496 case 3:
497 return -(15./ 4.)*(1.+xi)*pow<2>(1.-xi) + (5./ 8.)*pow<3>(1.-xi)
498 + (15./8.)*pow<2>(1.+xi)*(1.-xi);
499 case 4:
500 return (5./ 8.)*pow<3>(1.+xi) - (15./ 4.)*pow<2>(1.+xi)*(1.-xi)
501 +(15./8.)*(1.+xi)*pow<2>(1.-xi);
502 case 5:
503 return -(5./ 8.)*pow<3>(1.+xi) + (15./ 8.)*pow<2>(1.+xi)*(1.-xi)
504 -(5./8.)*pow<3>(1.+xi);
505 default:
506 libmesh_error_msg("Invalid shape function index i = " << i);
507 }
508
509 case SIXTH:
510
511 switch(i)
512 {
513 case 0:
514 return ( 15./32.)*pow<4>(1.-xi);
515 case 1:
516 return ( 15./32.)*pow<4>(1.+xi);
517 case 2:
518 return -( 15./8.)*pow<4>(1.-xi) +
519 ( 15./8.)*(1.+xi)*pow<3>(1.-xi);
520 case 3:
521 return -(15./4.)*(1.+xi)*pow<3>(1.-xi)
522 + (15./32.)*pow<4>(1.-xi)
523 + (45./16.)*pow<2>(1.+xi)*pow<2>(1.-xi);
524 case 4:
525 return -(15./ 8.) +(45./4.)*pow<2>(xi) - (75./8.)*pow<4>(xi);
526 case 5:
527 return -(15./4.)*(1.-xi)*pow<3>(1.+xi)
528 + (15./32.)*pow<4>(1.+xi)
529 + (45./16.)*pow<2>(1.-xi)*pow<2>(1.+xi);
530 case 6:
531 return -(15./16.)*pow<4>(1.+xi)
532 + (15./8.)*pow<3>(1.+xi)*(1.-xi);
533 default:
534 libmesh_error_msg("Invalid shape function index i = " << i);
535 }
536
537
538 default:
539 {
540 libmesh_assert (order>6);
541
542 // Use this for arbitrary orders
543 const int p_order = static_cast<int>(order);
544 const int m = p_order-(i-1);
545 const int n = (i-1);
546
547 Real binomial_p_i = 1;
548
549 // the binomial coefficient (p choose n)
550 // Using an unsigned long here will work for any of the orders we support.
551 // Explicitly construct a Real to prevent conversion warnings
552 if (i>1)
553 binomial_p_i = Real(Utility::binomial(static_cast<unsigned long>(p_order),
554 static_cast<unsigned long>(n)));
555
556 switch(i)
557 {
558 case 0:
559 return binomial_p_i * (1./4.) * p_order * (p_order-1) * std::pow((1-xi)/2, p_order-2);
560 case 1:
561 return binomial_p_i * (1./4.) * p_order * (p_order-1) * std::pow((1+xi)/2, p_order-2);
562
563 default:
564 {
565 Real val = 0;
566
567 if (n == 1)
568 val +=
569 binomial_p_i * (-1./4. * m * std::pow((1-xi)/2,m-1));
570 else
571 val +=
572 binomial_p_i * (-1./4. * n * m * std::pow((1+xi)/2,n-1) * std::pow((1-xi)/2,m-1) +
573 1./4. * n * (n-1) * std::pow((1+xi)/2,n-2) * std::pow((1-xi)/2,m));
574
575 if (m == 1)
576 val += binomial_p_i * (-1./4. * n * std::pow((1+xi)/2,n-1));
577 else
578 val +=
579 binomial_p_i * (1./4. * m * (m-1) * std::pow((1+xi)/2,n) * std::pow((1-xi)/2,m-2)
580 - 1./4. * m * n * std::pow((1+xi)/2,n-1) * std::pow((1-xi)/2,m-1));
581
582 return val;
583 }
584 }
585 }
586
587 }
588}

◆ shape_second_deriv() [122/233]

Real libMesh::FE< 0, BERNSTEIN >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 110 of file fe_bernstein_shape_0D.C.

115{
116 libmesh_error_msg("No spatial derivatives in 0D!");
117 return 0.;
118}

◆ shape_second_deriv() [123/233]

Real libMesh::FE< 2, BERNSTEIN >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 611 of file fe_bernstein_shape_2D.C.

616{
617 libmesh_error_msg("Bernstein polynomials require the element type \nbecause edge orientation is needed.");
618 return 0.;
619}

◆ shape_second_deriv() [124/233]

Real libMesh::FE< 3, BERNSTEIN >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 2355 of file fe_bernstein_shape_3D.C.

2360{
2361 libmesh_error_msg("Bernstein polynomials require the element type \nbecause edge and face orientation is needed.");
2362 return 0.;
2363}

◆ shape_second_deriv() [125/233]

Real libMesh::FE< 0, CLOUGH >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 113 of file fe_clough_shape_0D.C.

118{
119 libmesh_error_msg("No spatial derivatives in 0D!");
120 return 0.;
121}

◆ shape_second_deriv() [126/233]

Real libMesh::FE< 1, CLOUGH >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 438 of file fe_clough_shape_1D.C.

443{
444 libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
445 return 0.;
446}

◆ shape_second_deriv() [127/233]

Real libMesh::FE< 2, CLOUGH >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 2364 of file fe_clough_shape_2D.C.

2369{
2370 libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
2371 return 0.;
2372}

◆ shape_second_deriv() [128/233]

Real libMesh::FE< 3, CLOUGH >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 120 of file fe_clough_shape_3D.C.

125{
126 libmesh_error_msg("Clough-Tocher elements require the real element \nto construct gradient-based degrees of freedom.");
127 return 0.;
128}

◆ shape_second_deriv() [129/233]

Real libMesh::FE< 0, HERMITE >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 114 of file fe_hermite_shape_0D.C.

119{
120 libmesh_error_msg("No spatial derivatives in 0D!");
121 return 0.;
122}

◆ shape_second_deriv() [130/233]

Real libMesh::FE< 1, HERMITE >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 385 of file fe_hermite_shape_1D.C.

390{
391 libmesh_error_msg("Hermite elements require the real element \nto construct gradient-based degrees of freedom.");
392 return 0.;
393}

◆ shape_second_deriv() [131/233]

Real libMesh::FE< 2, HERMITE >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 433 of file fe_hermite_shape_2D.C.

438{
439 libmesh_error_msg("Hermite elements require the real element \nto construct gradient-based degrees of freedom.");
440 return 0.;
441}

◆ shape_second_deriv() [132/233]

Real libMesh::FE< 3, HERMITE >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 674 of file fe_hermite_shape_3D.C.

679{
680 libmesh_error_msg("Hermite elements require the real element \nto construct gradient-based degrees of freedom.");
681 return 0.;
682}

◆ shape_second_deriv() [133/233]

Real libMesh::FE< 0, HIERARCHIC >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 271 of file fe_hierarchic_shape_0D.C.

276{
277 libmesh_error_msg("No spatial derivatives in 0D!");
278 return 0.;
279}

◆ shape_second_deriv() [134/233]

Real libMesh::FE< 0, L2_HIERARCHIC >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 310 of file fe_hierarchic_shape_0D.C.

315{
316 libmesh_error_msg("No spatial derivatives in 0D!");
317 return 0.;
318}

◆ shape_second_deriv() [135/233]

Real libMesh::FE< 0, SIDE_HIERARCHIC >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 350 of file fe_hierarchic_shape_0D.C.

355{
356 libmesh_error_msg("No spatial derivatives in 0D!");
357 return 0.;
358}

◆ shape_second_deriv() [136/233]

Real libMesh::FE< 1, SIDE_HIERARCHIC >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 327 of file fe_hierarchic_shape_1D.C.

332{
333 return 0;
334}

◆ shape_second_deriv() [137/233]

Real libMesh::FE< 2, HIERARCHIC >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 695 of file fe_hierarchic_shape_2D.C.

700{
701 libmesh_error_msg("Hierarchic shape functions require an Elem for edge orientation.");
702 return 0.;
703}

◆ shape_second_deriv() [138/233]

Real libMesh::FE< 2, L2_HIERARCHIC >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 708 of file fe_hierarchic_shape_2D.C.

713{
714 libmesh_error_msg("Hierarchic shape functions require an Elem for edge orientation.");
715 return 0.;
716}

◆ shape_second_deriv() [139/233]

Real libMesh::FE< 2, SIDE_HIERARCHIC >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 721 of file fe_hierarchic_shape_2D.C.

726{
727 libmesh_error_msg("Hierarchic shape functions require an Elem for edge orientation.");
728 return 0.;
729}

◆ shape_second_deriv() [140/233]

Real libMesh::FE< 3, HIERARCHIC >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1768 of file fe_hierarchic_shape_3D.C.

1773{
1774 libmesh_error_msg("Hierarchic shape functions require an Elem for edge/face orientation.");
1775 return 0.;
1776}

◆ shape_second_deriv() [141/233]

Real libMesh::FE< 3, L2_HIERARCHIC >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1781 of file fe_hierarchic_shape_3D.C.

1786{
1787 libmesh_error_msg("Hierarchic shape functions require an Elem for edge/face orientation.");
1788 return 0.;
1789}

◆ shape_second_deriv() [142/233]

Real libMesh::FE< 3, SIDE_HIERARCHIC >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1794 of file fe_hierarchic_shape_3D.C.

1799{
1800 libmesh_error_msg("Hierarchic shape functions require an Elem for edge/face orientation.");
1801 return 0.;
1802}

◆ shape_second_deriv() [143/233]

Real libMesh::FE< 0, L2_LAGRANGE >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 188 of file fe_lagrange_shape_0D.C.

193{
194 libmesh_error_msg("No spatial derivatives in 0D!");
195 return 0.;
196}

◆ shape_second_deriv() [144/233]

Real libMesh::FE< 0, LAGRANGE >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 213 of file fe_lagrange_shape_0D.C.

218{
219 libmesh_error_msg("No spatial derivatives in 0D!");
220 return 0.;
221}

◆ shape_second_deriv() [145/233]

Real libMesh::FE< 0, MONOMIAL >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 115 of file fe_monomial_shape_0D.C.

120{
121 libmesh_error_msg("No spatial derivatives in 0D!");
122 return 0.;
123}

◆ shape_second_deriv() [146/233]

RealGradient libMesh::FE< 0, NEDELEC_ONE >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 473 of file fe_nedelec_one.C.

475{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [147/233]

RealGradient libMesh::FE< 1, NEDELEC_ONE >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 500 of file fe_nedelec_one.C.

502{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [148/233]

RealGradient libMesh::FE< 2, NEDELEC_ONE >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 3735 of file fe_nedelec_one_shape_2D.C.

3740{
3741 libmesh_error_msg("Nedelec elements require the element type \nbecause edge orientation is needed.");
3742 return RealGradient();
3743}

◆ shape_second_deriv() [149/233]

RealGradient libMesh::FE< 3, NEDELEC_ONE >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 578 of file fe_nedelec_one_shape_3D.C.

583{
584 libmesh_error_msg("Nedelec elements require the element type \nbecause edge orientation is needed.");
585 return RealGradient();
586}

◆ shape_second_deriv() [150/233]

Real libMesh::FE< 0, RATIONAL_BERNSTEIN >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 111 of file fe_rational_shape_0D.C.

116{
117 libmesh_error_msg("No spatial derivatives in 0D!");
118 return 0.;
119}

◆ shape_second_deriv() [151/233]

Real libMesh::FE< 1, RATIONAL_BERNSTEIN >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 149 of file fe_rational_shape_1D.C.

154{
155 libmesh_error_msg("Rational bases require the real element \nto query nodal weighting.");
156 return 0.;
157}

◆ shape_second_deriv() [152/233]

Real libMesh::FE< 2, RATIONAL_BERNSTEIN >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 149 of file fe_rational_shape_2D.C.

154{
155 libmesh_error_msg("Rational bases require the real element \nto query nodal weighting.");
156 return 0.;
157}

◆ shape_second_deriv() [153/233]

Real libMesh::FE< 3, RATIONAL_BERNSTEIN >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 145 of file fe_rational_shape_3D.C.

150{
151 libmesh_error_msg("Rational bases require the real element \nto query nodal weighting.");
152 return 0.;
153}

◆ shape_second_deriv() [154/233]

RealGradient libMesh::FE< 0, RAVIART_THOMAS >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 579 of file fe_raviart.C.

581{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [155/233]

RealGradient libMesh::FE< 0, L2_RAVIART_THOMAS >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 587 of file fe_raviart.C.

589{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [156/233]

RealGradient libMesh::FE< 1, RAVIART_THOMAS >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 628 of file fe_raviart.C.

630{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [157/233]

RealGradient libMesh::FE< 1, L2_RAVIART_THOMAS >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 636 of file fe_raviart.C.

638{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shape_second_deriv() [158/233]

RealGradient libMesh::FE< 2, RAVIART_THOMAS >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 183 of file fe_raviart_shape_2D.C.

188{
189 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause edge orientation is needed.");
190 return RealGradient();
191}

◆ shape_second_deriv() [159/233]

RealGradient libMesh::FE< 2, L2_RAVIART_THOMAS >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 194 of file fe_raviart_shape_2D.C.

199{
200 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause edge orientation is needed.");
201 return RealGradient();
202}

◆ shape_second_deriv() [160/233]

RealGradient libMesh::FE< 3, RAVIART_THOMAS >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 470 of file fe_raviart_shape_3D.C.

475{
476 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause face orientation is needed.");
477 return RealGradient();
478}

◆ shape_second_deriv() [161/233]

RealGradient libMesh::FE< 3, L2_RAVIART_THOMAS >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 482 of file fe_raviart_shape_3D.C.

487{
488 libmesh_error_msg("Raviart-Thomas elements require the element type \nbecause face orientation is needed.");
489 return RealGradient();
490}

◆ shape_second_deriv() [162/233]

Real libMesh::FE< 0, SCALAR >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 99 of file fe_scalar_shape_0D.C.

104{
105 return 0.;
106}

◆ shape_second_deriv() [163/233]

Real libMesh::FE< 1, SCALAR >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 103 of file fe_scalar_shape_1D.C.

108{
109 return 0.;
110}

◆ shape_second_deriv() [164/233]

Real libMesh::FE< 2, SCALAR >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 101 of file fe_scalar_shape_2D.C.

106{
107 return 0.;
108}

◆ shape_second_deriv() [165/233]

Real libMesh::FE< 3, SCALAR >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 100 of file fe_scalar_shape_3D.C.

105{
106 return 0.;
107}

◆ shape_second_deriv() [166/233]

Real libMesh::FE< 0, SZABAB >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 114 of file fe_szabab_shape_0D.C.

119{
120 libmesh_error_msg("No spatial derivatives in 0D!");
121 return 0.;
122}

◆ shape_second_deriv() [167/233]

Real libMesh::FE< 1, SZABAB >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 191 of file fe_szabab_shape_1D.C.

196{
197 static bool warning_given = false;
198
199 if (!warning_given)
200 libMesh::err << "Second derivatives for Szabab elements "
201 << " are not yet implemented!"
202 << std::endl;
203
204 warning_given = true;
205 return 0.;
206}

◆ shape_second_deriv() [168/233]

Real libMesh::FE< 2, SZABAB >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1049 of file fe_szabab_shape_2D.C.

1054{
1055 static bool warning_given = false;
1056
1057 if (!warning_given)
1058 libMesh::err << "Second derivatives for Szabab elements "
1059 << " are not yet implemented!"
1060 << std::endl;
1061
1062 warning_given = true;
1063 return 0.;
1064}

◆ shape_second_deriv() [169/233]

Real libMesh::FE< 3, SZABAB >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 113 of file fe_szabab_shape_3D.C.

118{
119 libmesh_error_msg("Szabo-Babuska polynomials are not defined in 3D");
120 return 0.;
121}

◆ shape_second_deriv() [170/233]

Real libMesh::FE< 0, XYZ >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 115 of file fe_xyz_shape_0D.C.

120{
121 libmesh_error_msg("No spatial derivatives in 0D!");
122 return 0.;
123}

◆ shape_second_deriv() [171/233]

Real libMesh::FE< 1, XYZ >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 247 of file fe_xyz_shape_1D.C.

252{
253 libmesh_error_msg("XYZ polynomials require the element.");
254 return 0.;
255}

◆ shape_second_deriv() [172/233]

Real libMesh::FE< 2, XYZ >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 634 of file fe_xyz_shape_2D.C.

639{
640 libmesh_error_msg("XYZ polynomials require the element.");
641 return 0.;
642}

◆ shape_second_deriv() [173/233]

Real libMesh::FE< 3, XYZ >::shape_second_deriv ( const ElemType  ,
const Order  ,
const unsigned int  ,
const unsigned int  ,
const Point  
)
inherited

Definition at line 1412 of file fe_xyz_shape_3D.C.

1417{
1418 libmesh_error_msg("XYZ polynomials require the element.");
1419 return 0.;
1420}

◆ shape_second_deriv() [174/233]

Real libMesh::FE< 1, BERNSTEIN >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 608 of file fe_bernstein_shape_1D.C.

614{
615 libmesh_assert(elem);
616 return FE<1,BERNSTEIN>::shape_second_deriv
617 (elem->type(),
618 fet.order + add_p_level*elem->p_level(), i, j, p);
619}

◆ shape_second_deriv() [175/233]

Real libMesh::FE< 2, BERNSTEIN >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 623 of file fe_bernstein_shape_2D.C.

629{
630 libmesh_assert(elem);
631 return FE<2,BERNSTEIN>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
632}

◆ shape_second_deriv() [176/233]

Real libMesh::FE< 3, BERNSTEIN >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 2367 of file fe_bernstein_shape_3D.C.

2373{
2374 return FE<3,BERNSTEIN>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
2375}

◆ shape_second_deriv() [177/233]

Real libMesh::FE< 1, CLOUGH >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 449 of file fe_clough_shape_1D.C.

455{
456 return FE<1,CLOUGH>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
457}

◆ shape_second_deriv() [178/233]

Real libMesh::FE< 2, CLOUGH >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 2375 of file fe_clough_shape_2D.C.

2381{
2382 return FE<2,CLOUGH>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
2383}

◆ shape_second_deriv() [179/233]

Real libMesh::FE< 1, HERMITE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 396 of file fe_hermite_shape_1D.C.

402{
403 return FE<1,HERMITE>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
404}

◆ shape_second_deriv() [180/233]

Real libMesh::FE< 2, HERMITE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 445 of file fe_hermite_shape_2D.C.

451{
452 return FE<2,HERMITE>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
453}

◆ shape_second_deriv() [181/233]

Real libMesh::FE< 3, HERMITE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 685 of file fe_hermite_shape_3D.C.

691{
692 return FE<3,HERMITE>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
693}

◆ shape_second_deriv() [182/233]

Real libMesh::FE< 1, HIERARCHIC >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 355 of file fe_hierarchic_shape_1D.C.

361{
362 libmesh_assert(elem);
363 return fe_hierarchic_1D_shape_second_deriv(elem->type(),
364 fet.order + add_p_level*elem->p_level(), i, j, p);
365}

◆ shape_second_deriv() [183/233]

Real libMesh::FE< 1, L2_HIERARCHIC >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 384 of file fe_hierarchic_shape_1D.C.

390{
391 libmesh_assert(elem);
392 return fe_hierarchic_1D_shape_second_deriv(elem->type(),
393 fet.order + add_p_level*elem->p_level(), i, j, p);
394}

◆ shape_second_deriv() [184/233]

Real libMesh::FE< 2, HIERARCHIC >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 746 of file fe_hierarchic_shape_2D.C.

752{
753 return fe_hierarchic_2D_shape_second_deriv<HIERARCHIC>(elem, fet.order, i, j, p, add_p_level);
754}

◆ shape_second_deriv() [185/233]

Real libMesh::FE< 2, L2_HIERARCHIC >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 770 of file fe_hierarchic_shape_2D.C.

776{
777 return fe_hierarchic_2D_shape_second_deriv<L2_HIERARCHIC>(elem, fet.order, i, j, p, add_p_level);
778}

◆ shape_second_deriv() [186/233]

Real libMesh::FE< 2, SIDE_HIERARCHIC >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 895 of file fe_hierarchic_shape_2D.C.

901{
902 return FE<2,SIDE_HIERARCHIC>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
903}

◆ shape_second_deriv() [187/233]

Real libMesh::FE< 3, HIERARCHIC >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1820 of file fe_hierarchic_shape_3D.C.

1826{
1827 return fe_hierarchic_3D_shape_second_deriv<HIERARCHIC>(elem, fet.order, i, j, p, add_p_level);
1828}

◆ shape_second_deriv() [188/233]

Real libMesh::FE< 3, L2_HIERARCHIC >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1845 of file fe_hierarchic_shape_3D.C.

1851{
1852 return fe_hierarchic_3D_shape_second_deriv<L2_HIERARCHIC>(elem, fet.order, i, j, p, add_p_level);
1853}

◆ shape_second_deriv() [189/233]

Real libMesh::FE< 3, SIDE_HIERARCHIC >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 2080 of file fe_hierarchic_shape_3D.C.

2086{
2087 return FE<3,SIDE_HIERARCHIC>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
2088}

◆ shape_second_deriv() [190/233]

Real libMesh::FE< 1, LAGRANGE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 237 of file fe_lagrange_shape_1D.C.

243{
244 libmesh_assert(elem);
245 return fe_lagrange_1D_shape_second_deriv(fet.order + add_p_level*elem->p_level(), i, j, p(0));
246}

◆ shape_second_deriv() [191/233]

Real libMesh::FE< 1, L2_LAGRANGE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 250 of file fe_lagrange_shape_1D.C.

256{
257 libmesh_assert(elem);
258 return fe_lagrange_1D_shape_second_deriv(fet.order + add_p_level*elem->p_level(), i, j, p(0));
259}

◆ shape_second_deriv() [192/233]

Real libMesh::FE< 2, LAGRANGE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 288 of file fe_lagrange_shape_2D.C.

294{
295 libmesh_assert(elem);
296 return fe_lagrange_2D_shape_second_deriv<LAGRANGE>(elem->type(), elem, fet.order + add_p_level*elem->p_level(), i, j, p);
297}

◆ shape_second_deriv() [193/233]

Real libMesh::FE< 2, L2_LAGRANGE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 302 of file fe_lagrange_shape_2D.C.

308{
309 libmesh_assert(elem);
310 return fe_lagrange_2D_shape_second_deriv<L2_LAGRANGE>(elem->type(), elem, fet.order + add_p_level*elem->p_level(), i, j, p);
311}

◆ shape_second_deriv() [194/233]

Real libMesh::FE< 3, LAGRANGE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 633 of file fe_lagrange_shape_3D.C.

639{
640 libmesh_assert(elem);
641 return fe_lagrange_3D_shape_second_deriv<LAGRANGE>
642 (elem->type(), fet.order + add_p_level*elem->p_level(), elem, i, j, p);
643}

◆ shape_second_deriv() [195/233]

Real libMesh::FE< 3, L2_LAGRANGE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 648 of file fe_lagrange_shape_3D.C.

654{
655 libmesh_assert(elem);
656 return fe_lagrange_3D_shape_second_deriv<L2_LAGRANGE>
657 (elem->type(), fet.order + add_p_level*elem->p_level(), elem, i, j, p);
658}

◆ shape_second_deriv() [196/233]

Real libMesh::FE< 1, MONOMIAL >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 225 of file fe_monomial_shape_1D.C.

231{
232 libmesh_assert(elem);
233 return FE<1,MONOMIAL>::shape_second_deriv(elem->type(), fet.order + add_p_level*elem->p_level(), i, j, p);
234}

◆ shape_second_deriv() [197/233]

Real libMesh::FE< 2, MONOMIAL >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 592 of file fe_monomial_shape_2D.C.

598{
599 libmesh_assert(elem);
600 // by default call the orientation-independent shape functions
601 return FE<2,MONOMIAL>::shape_second_deriv(elem->type(), fet.order + add_p_level*elem->p_level(), i, j, p);
602}

◆ shape_second_deriv() [198/233]

Real libMesh::FE< 3, MONOMIAL >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1355 of file fe_monomial_shape_3D.C.

1361{
1362 libmesh_assert(elem);
1363 // by default call the orientation-independent shape functions
1364 return FE<3,MONOMIAL>::shape_second_deriv(elem->type(), fet.order + add_p_level*elem->p_level(), i, j, p);
1365}

◆ shape_second_deriv() [199/233]

RealGradient libMesh::FE< 2, NEDELEC_ONE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 3747 of file fe_nedelec_one_shape_2D.C.

3753{
3754 return FE<2,NEDELEC_ONE>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
3755}

◆ shape_second_deriv() [200/233]

RealGradient libMesh::FE< 3, NEDELEC_ONE >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 590 of file fe_nedelec_one_shape_3D.C.

596{
597 return FE<3,NEDELEC_ONE>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
598}

◆ shape_second_deriv() [201/233]

Real libMesh::FE< 1, RATIONAL_BERNSTEIN >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 163 of file fe_rational_shape_1D.C.

169{
170 libmesh_assert(elem);
171 return FE<1,RATIONAL_BERNSTEIN>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
172}

◆ shape_second_deriv() [202/233]

Real libMesh::FE< 2, RATIONAL_BERNSTEIN >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 161 of file fe_rational_shape_2D.C.

167{
169 (elem, fet.order, i, j, p, add_p_level);
170}

◆ shape_second_deriv() [203/233]

Real libMesh::FE< 3, RATIONAL_BERNSTEIN >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 157 of file fe_rational_shape_3D.C.

163{
165 (elem, fet.order, i, j, p, add_p_level);
166}

◆ shape_second_deriv() [204/233]

RealGradient libMesh::FE< 2, RAVIART_THOMAS >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 205 of file fe_raviart_shape_2D.C.

211{
212 return FE<2,RAVIART_THOMAS>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
213}

◆ shape_second_deriv() [205/233]

RealGradient libMesh::FE< 2, L2_RAVIART_THOMAS >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 216 of file fe_raviart_shape_2D.C.

222{
223 return FE<2,L2_RAVIART_THOMAS>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
224}

◆ shape_second_deriv() [206/233]

RealGradient libMesh::FE< 3, RAVIART_THOMAS >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 494 of file fe_raviart_shape_3D.C.

500{
501 return FE<3,RAVIART_THOMAS>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
502}

◆ shape_second_deriv() [207/233]

RealGradient libMesh::FE< 3, L2_RAVIART_THOMAS >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 506 of file fe_raviart_shape_3D.C.

512{
513 return FE<3,L2_RAVIART_THOMAS>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
514}

◆ shape_second_deriv() [208/233]

Real libMesh::FE< 2, SUBDIVISION >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 861 of file fe_subdivision_2D.C.

867{
868 libmesh_assert(elem);
869 const Order totalorder = fet.order + add_p_level*elem->p_level();
870 return FE<2,SUBDIVISION>::shape_second_deriv(elem->type(), totalorder, i, j, p);
871}

◆ shape_second_deriv() [209/233]

Real libMesh::FE< 1, SZABAB >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 231 of file fe_szabab_shape_1D.C.

237{
238 libmesh_assert(elem);
239
240 return FE<1,SZABAB>::shape_second_deriv(elem->type(),
241 fet.order + add_p_level*elem->p_level(),
242 i,
243 j,
244 p);
245}

◆ shape_second_deriv() [210/233]

Real libMesh::FE< 1, XYZ >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 260 of file fe_xyz_shape_1D.C.

266{
267 return FE<1,XYZ>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
268}

◆ shape_second_deriv() [211/233]

Real libMesh::FE< 2, XYZ >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 647 of file fe_xyz_shape_2D.C.

653{
654 return FE<2,XYZ>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
655}

◆ shape_second_deriv() [212/233]

Real libMesh::FE< 3, XYZ >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level 
)
inherited

Definition at line 1424 of file fe_xyz_shape_3D.C.

1430{
1431 return FE<3,XYZ>::shape_second_deriv(elem, fet.order, i, j, p, add_p_level);
1432}

◆ shape_second_deriv() [213/233]

static OutputShape libMesh::FE< Dim, T >::shape_second_deriv ( const FEType  fet,
const Elem elem,
const unsigned int  i,
const unsigned int  j,
const Point p,
const bool  add_p_level = true 
)
staticinherited
Returns
The second \( j^{th} \) derivative of the \( i^{th} \) shape function at the point p.
Note
Cross-derivatives are indexed according to: j = 0 ==> d^2 phi / dxi^2 j = 1 ==> d^2 phi / dxi deta j = 2 ==> d^2 phi / deta^2 j = 3 ==> d^2 phi / dxi dzeta j = 4 ==> d^2 phi / deta dzeta j = 5 ==> d^2 phi / dzeta^2
Computing second derivatives is not currently supported for all element types: \( C^1 \) (Clough, Hermite and Subdivision), Lagrange, Hierarchic, L2_Hierarchic, and Monomial are supported. All other element types return an error when asked for second derivatives.

On a p-refined element, o should be the total order of the element.

◆ shape_second_deriv() [214/233]

Real libMesh::FE< 0, BERNSTEIN >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 136 of file fe_bernstein_shape_0D.C.

142{
143 libmesh_error_msg("No spatial derivatives in 0D!");
144 return 0.;
145}

◆ shape_second_deriv() [215/233]

Real libMesh::FE< 0, CLOUGH >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 138 of file fe_clough_shape_0D.C.

144{
145 libmesh_error_msg("No spatial derivatives in 0D!");
146 return 0.;
147}

◆ shape_second_deriv() [216/233]

Real libMesh::FE< 0, HERMITE >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 140 of file fe_hermite_shape_0D.C.

146{
147 libmesh_error_msg("No spatial derivatives in 0D!");
148 return 0.;
149}

◆ shape_second_deriv() [217/233]

Real libMesh::FE< 0, HIERARCHIC >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 297 of file fe_hierarchic_shape_0D.C.

303{
304 libmesh_error_msg("No spatial derivatives in 0D!");
305 return 0.;
306}

◆ shape_second_deriv() [218/233]

Real libMesh::FE< 0, L2_HIERARCHIC >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 336 of file fe_hierarchic_shape_0D.C.

342{
343 libmesh_error_msg("No spatial derivatives in 0D!");
344 return 0.;
345}

◆ shape_second_deriv() [219/233]

Real libMesh::FE< 0, SIDE_HIERARCHIC >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 377 of file fe_hierarchic_shape_0D.C.

383{
384 libmesh_error_msg("No spatial derivatives in 0D!");
385 return 0.;
386}

◆ shape_second_deriv() [220/233]

Real libMesh::FE< 1, SIDE_HIERARCHIC >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 410 of file fe_hierarchic_shape_1D.C.

416{
417 return 0.;
418}

◆ shape_second_deriv() [221/233]

Real libMesh::FE< 0, L2_LAGRANGE >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 239 of file fe_lagrange_shape_0D.C.

245{
246 libmesh_error_msg("No spatial derivatives in 0D!");
247 return 0.;
248}

◆ shape_second_deriv() [222/233]

Real libMesh::FE< 0, LAGRANGE >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 252 of file fe_lagrange_shape_0D.C.

258{
259 libmesh_error_msg("No spatial derivatives in 0D!");
260 return 0.;
261}

◆ shape_second_deriv() [223/233]

Real libMesh::FE< 0, MONOMIAL >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 141 of file fe_monomial_shape_0D.C.

147{
148 libmesh_error_msg("No spatial derivatives in 0D!");
149 return 0.;
150}

◆ shape_second_deriv() [224/233]

Real libMesh::FE< 0, RATIONAL_BERNSTEIN >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 138 of file fe_rational_shape_0D.C.

144{
145 libmesh_error_msg("No spatial derivatives in 0D!");
146 return 0.;
147}

◆ shape_second_deriv() [225/233]

Real libMesh::FE< 0, SCALAR >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 120 of file fe_scalar_shape_0D.C.

126{
127 return 0.;
128}

◆ shape_second_deriv() [226/233]

Real libMesh::FE< 1, SCALAR >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 125 of file fe_scalar_shape_1D.C.

131{
132 return 0.;
133}

◆ shape_second_deriv() [227/233]

Real libMesh::FE< 2, SCALAR >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 122 of file fe_scalar_shape_2D.C.

128{
129 return 0.;
130}

◆ shape_second_deriv() [228/233]

Real libMesh::FE< 3, SCALAR >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 122 of file fe_scalar_shape_3D.C.

128{
129 return 0.;
130}

◆ shape_second_deriv() [229/233]

Real libMesh::FE< 0, SZABAB >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 141 of file fe_szabab_shape_0D.C.

147{
148 libmesh_error_msg("No spatial derivatives in 0D!");
149 return 0.;
150}

◆ shape_second_deriv() [230/233]

Real libMesh::FE< 2, SZABAB >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 1089 of file fe_szabab_shape_2D.C.

1095{
1096 static bool warning_given = false;
1097
1098 if (!warning_given)
1099 libMesh::err << "Second derivatives for Szabab elements "
1100 << " are not yet implemented!"
1101 << std::endl;
1102
1103 warning_given = true;
1104 return 0.;
1105}

◆ shape_second_deriv() [231/233]

Real libMesh::FE< 3, SZABAB >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 139 of file fe_szabab_shape_3D.C.

145{
146 static bool warning_given = false;
147
148 if (!warning_given)
149 libMesh::err << "Second derivatives for Szabab elements "
150 << " are not yet implemented!"
151 << std::endl;
152
153 warning_given = true;
154 return 0.;
155}

◆ shape_second_deriv() [232/233]

Real libMesh::FE< 0, XYZ >::shape_second_deriv ( const FEType  ,
const Elem ,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 142 of file fe_xyz_shape_0D.C.

148{
149 libmesh_error_msg("No spatial derivatives in 0D!");
150 return 0.;
151}

◆ shape_second_deriv() [233/233]

Real libMesh::FE< 3, CLOUGH >::shape_second_deriv ( const FEType  ,
const Elem libmesh_dbg_varelem,
const unsigned int  ,
const unsigned int  ,
const Point ,
const bool   
)
inherited

Definition at line 145 of file fe_clough_shape_3D.C.

151{
152 libmesh_assert(elem);
153 libmesh_not_implemented();
154 return 0.;
155}

◆ shapes() [1/5]

void libMesh::FE< 3, LAGRANGE >::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 
)
inherited

Definition at line 211 of file fe_lagrange_shape_3D.C.

218{
220 (elem,o,i,p,v,add_p_level);
221}
static void default_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)
A default implementation for shapes.
Definition fe.h:738

◆ shapes() [2/5]

static void libMesh::FE< Dim, T >::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 
)
staticinherited

Fills v with the values of the \( i^{th} \) shape function, evaluated at all points p.

You must specify element order directly. v should already be the appropriate size.

On a p-refined element, o should be the base order of the element if add_p_level is left true, or can be the base order of the element if add_p_level is set to false.

◆ shapes() [3/5]

void libMesh::FE< 1, RATIONAL_BERNSTEIN >::shapes ( const Elem elem,
const Order  o,
const unsigned int  i,
const std::vector< Point > &  p,
std::vector< OutputShape > &  vi,
const bool  add_p_level 
)
inherited

Definition at line 179 of file fe_rational_shape_1D.C.

186{
187 libmesh_assert_equal_to(p.size(), vi.size());
188 for (auto j : index_range(vi))
189 vi[j] = FE<1,RATIONAL_BERNSTEIN>::shape (elem, o, i, p[j], add_p_level);
190}

◆ shapes() [4/5]

void libMesh::FE< 2, RATIONAL_BERNSTEIN >::shapes ( const Elem elem,
const Order  o,
const unsigned int  i,
const std::vector< Point > &  p,
std::vector< OutputShape > &  vi,
const bool  add_p_level 
)
inherited

Definition at line 177 of file fe_rational_shape_2D.C.

184{
185 libmesh_assert_equal_to(p.size(), vi.size());
186 for (auto j : index_range(vi))
187 vi[j] = FE<2,RATIONAL_BERNSTEIN>::shape (elem, o, i, p[j], add_p_level);
188}

◆ shapes() [5/5]

void libMesh::FE< 3, RATIONAL_BERNSTEIN >::shapes ( const Elem elem,
const Order  o,
const unsigned int  i,
const std::vector< Point > &  p,
std::vector< OutputShape > &  vi,
const bool  add_p_level 
)
inherited

Definition at line 173 of file fe_rational_shape_3D.C.

180{
181 libmesh_assert_equal_to(p.size(), vi.size());
182 for (auto j : index_range(vi))
183 vi[j] = FE<3,RATIONAL_BERNSTEIN>::shape (elem, o, i, p[j], add_p_level);
184}

◆ shapes_need_reinit() [1/86]

bool libMesh::FE< 0, BERNSTEIN >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 452 of file fe_bernstein.C.

452{ return true; }

◆ shapes_need_reinit() [2/86]

bool libMesh::FE< 1, BERNSTEIN >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 453 of file fe_bernstein.C.

453{ return true; }

◆ shapes_need_reinit() [3/86]

bool libMesh::FE< 2, BERNSTEIN >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 454 of file fe_bernstein.C.

454{ return true; }

◆ shapes_need_reinit() [4/86]

bool libMesh::FE< 3, BERNSTEIN >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 455 of file fe_bernstein.C.

455{ return true; }

◆ shapes_need_reinit() [5/86]

bool libMesh::FE< 0, CLOUGH >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 299 of file fe_clough.C.

299{ return true; }

◆ shapes_need_reinit() [6/86]

bool libMesh::FE< 1, CLOUGH >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 300 of file fe_clough.C.

300{ return true; }

◆ shapes_need_reinit() [7/86]

bool libMesh::FE< 2, CLOUGH >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 301 of file fe_clough.C.

301{ return true; }

◆ shapes_need_reinit() [8/86]

bool libMesh::FE< 3, CLOUGH >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 302 of file fe_clough.C.

302{ return true; }

◆ shapes_need_reinit() [9/86]

bool libMesh::FE< 0, HERMITE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 342 of file fe_hermite.C.

342{ return true; }

◆ shapes_need_reinit() [10/86]

bool libMesh::FE< 1, HERMITE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 343 of file fe_hermite.C.

343{ return true; }

◆ shapes_need_reinit() [11/86]

bool libMesh::FE< 2, HERMITE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 344 of file fe_hermite.C.

344{ return true; }

◆ shapes_need_reinit() [12/86]

bool libMesh::FE< 3, HERMITE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 345 of file fe_hermite.C.

345{ return true; }

◆ shapes_need_reinit() [13/86]

bool libMesh::FE< 0, HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 505 of file fe_hierarchic.C.

505{ return true; }

◆ shapes_need_reinit() [14/86]

bool libMesh::FE< 1, HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 506 of file fe_hierarchic.C.

506{ return true; }

◆ shapes_need_reinit() [15/86]

bool libMesh::FE< 2, HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 507 of file fe_hierarchic.C.

507{ return true; }

◆ shapes_need_reinit() [16/86]

bool libMesh::FE< 3, HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 508 of file fe_hierarchic.C.

508{ return true; }

◆ shapes_need_reinit() [17/86]

bool libMesh::FE< 0, HIERARCHIC_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 795 of file fe_hierarchic_vec.C.

795{ return true; }

◆ shapes_need_reinit() [18/86]

bool libMesh::FE< 1, HIERARCHIC_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 796 of file fe_hierarchic_vec.C.

796{ return true; }

◆ shapes_need_reinit() [19/86]

bool libMesh::FE< 2, HIERARCHIC_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 797 of file fe_hierarchic_vec.C.

797{ return true; }

◆ shapes_need_reinit() [20/86]

bool libMesh::FE< 3, HIERARCHIC_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 798 of file fe_hierarchic_vec.C.

798{ return true; }

◆ shapes_need_reinit() [21/86]

bool libMesh::FE< 0, L2_HIERARCHIC_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 799 of file fe_hierarchic_vec.C.

799{ return true; }

◆ shapes_need_reinit() [22/86]

bool libMesh::FE< 1, L2_HIERARCHIC_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 800 of file fe_hierarchic_vec.C.

800{ return true; }

◆ shapes_need_reinit() [23/86]

bool libMesh::FE< 2, L2_HIERARCHIC_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 801 of file fe_hierarchic_vec.C.

801{ return true; }

◆ shapes_need_reinit() [24/86]

bool libMesh::FE< 3, L2_HIERARCHIC_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 802 of file fe_hierarchic_vec.C.

802{ return true; }

◆ shapes_need_reinit() [25/86]

bool libMesh::FE< 0, L2_HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 217 of file fe_l2_hierarchic.C.

217{ return true; }

◆ shapes_need_reinit() [26/86]

bool libMesh::FE< 1, L2_HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 218 of file fe_l2_hierarchic.C.

218{ return true; }

◆ shapes_need_reinit() [27/86]

bool libMesh::FE< 2, L2_HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 219 of file fe_l2_hierarchic.C.

219{ return true; }

◆ shapes_need_reinit() [28/86]

bool libMesh::FE< 3, L2_HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 220 of file fe_l2_hierarchic.C.

220{ return true; }

◆ shapes_need_reinit() [29/86]

bool libMesh::FE< 0, L2_LAGRANGE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 268 of file fe_l2_lagrange.C.

268{ return false; }

◆ shapes_need_reinit() [30/86]

bool libMesh::FE< 1, L2_LAGRANGE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 269 of file fe_l2_lagrange.C.

269{ return false; }

◆ shapes_need_reinit() [31/86]

bool libMesh::FE< 2, L2_LAGRANGE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 270 of file fe_l2_lagrange.C.

270{ return false; }

◆ shapes_need_reinit() [32/86]

bool libMesh::FE< 3, L2_LAGRANGE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 271 of file fe_l2_lagrange.C.

271{ return false; }

◆ shapes_need_reinit() [33/86]

bool libMesh::FE< 0, LAGRANGE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1126 of file fe_lagrange.C.

1126{ return false; }

◆ shapes_need_reinit() [34/86]

bool libMesh::FE< 1, LAGRANGE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1127 of file fe_lagrange.C.

1127{ return false; }

◆ shapes_need_reinit() [35/86]

bool libMesh::FE< 2, LAGRANGE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1128 of file fe_lagrange.C.

1128{ return false; }

◆ shapes_need_reinit() [36/86]

bool libMesh::FE< 3, LAGRANGE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1129 of file fe_lagrange.C.

1129{ return false; }

◆ shapes_need_reinit() [37/86]

bool libMesh::FE< 0, LAGRANGE_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1364 of file fe_lagrange_vec.C.

1364{ return false; }

◆ shapes_need_reinit() [38/86]

bool libMesh::FE< 1, LAGRANGE_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1365 of file fe_lagrange_vec.C.

1365{ return false; }

◆ shapes_need_reinit() [39/86]

bool libMesh::FE< 2, LAGRANGE_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1366 of file fe_lagrange_vec.C.

1366{ return false; }

◆ shapes_need_reinit() [40/86]

bool libMesh::FE< 3, LAGRANGE_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1367 of file fe_lagrange_vec.C.

1367{ return false; }

◆ shapes_need_reinit() [41/86]

bool libMesh::FE< 0, L2_LAGRANGE_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1368 of file fe_lagrange_vec.C.

1368{ return false; }

◆ shapes_need_reinit() [42/86]

bool libMesh::FE< 1, L2_LAGRANGE_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1369 of file fe_lagrange_vec.C.

1369{ return false; }

◆ shapes_need_reinit() [43/86]

bool libMesh::FE< 2, L2_LAGRANGE_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1370 of file fe_lagrange_vec.C.

1370{ return false; }

◆ shapes_need_reinit() [44/86]

bool libMesh::FE< 3, L2_LAGRANGE_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1371 of file fe_lagrange_vec.C.

1371{ return false; }

◆ shapes_need_reinit() [45/86]

bool libMesh::FE< 0, MONOMIAL >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 444 of file fe_monomial.C.

444{ return false; }

◆ shapes_need_reinit() [46/86]

bool libMesh::FE< 1, MONOMIAL >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 445 of file fe_monomial.C.

445{ return false; }

◆ shapes_need_reinit() [47/86]

bool libMesh::FE< 2, MONOMIAL >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 446 of file fe_monomial.C.

446{ return false; }

◆ shapes_need_reinit() [48/86]

bool libMesh::FE< 3, MONOMIAL >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 447 of file fe_monomial.C.

447{ return false; }

◆ shapes_need_reinit() [49/86]

bool libMesh::FE< 0, MONOMIAL_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 749 of file fe_monomial_vec.C.

750{
751 return false;
752}

◆ shapes_need_reinit() [50/86]

bool libMesh::FE< 1, MONOMIAL_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 755 of file fe_monomial_vec.C.

756{
757 return false;
758}

◆ shapes_need_reinit() [51/86]

bool libMesh::FE< 2, MONOMIAL_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 761 of file fe_monomial_vec.C.

762{
763 return false;
764}

◆ shapes_need_reinit() [52/86]

bool libMesh::FE< 3, MONOMIAL_VEC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 767 of file fe_monomial_vec.C.

768{
769 return false;
770}

◆ shapes_need_reinit() [53/86]

bool libMesh::FE< 0, NEDELEC_ONE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 420 of file fe_nedelec_one.C.

420{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shapes_need_reinit() [54/86]

bool libMesh::FE< 1, NEDELEC_ONE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 421 of file fe_nedelec_one.C.

421{ NEDELEC_LOW_D_ERROR_MESSAGE }

◆ shapes_need_reinit() [55/86]

bool libMesh::FE< 2, NEDELEC_ONE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 422 of file fe_nedelec_one.C.

422{ return true; }

◆ shapes_need_reinit() [56/86]

bool libMesh::FE< 3, NEDELEC_ONE >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 423 of file fe_nedelec_one.C.

423{ return true; }

◆ shapes_need_reinit() [57/86]

bool libMesh::FE< 0, RATIONAL_BERNSTEIN >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 191 of file fe_rational.C.

191{ return true; }

◆ shapes_need_reinit() [58/86]

bool libMesh::FE< 1, RATIONAL_BERNSTEIN >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 192 of file fe_rational.C.

192{ return true; }

◆ shapes_need_reinit() [59/86]

bool libMesh::FE< 2, RATIONAL_BERNSTEIN >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 193 of file fe_rational.C.

193{ return true; }

◆ shapes_need_reinit() [60/86]

bool libMesh::FE< 3, RATIONAL_BERNSTEIN >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 194 of file fe_rational.C.

194{ return true; }

◆ shapes_need_reinit() [61/86]

bool libMesh::FE< 0, RAVIART_THOMAS >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 478 of file fe_raviart.C.

478{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shapes_need_reinit() [62/86]

bool libMesh::FE< 1, RAVIART_THOMAS >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 479 of file fe_raviart.C.

479{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shapes_need_reinit() [63/86]

bool libMesh::FE< 2, RAVIART_THOMAS >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 480 of file fe_raviart.C.

480{ return true; }

◆ shapes_need_reinit() [64/86]

bool libMesh::FE< 3, RAVIART_THOMAS >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 481 of file fe_raviart.C.

481{ return true; }

◆ shapes_need_reinit() [65/86]

bool libMesh::FE< 0, L2_RAVIART_THOMAS >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 484 of file fe_raviart.C.

484{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shapes_need_reinit() [66/86]

bool libMesh::FE< 1, L2_RAVIART_THOMAS >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 485 of file fe_raviart.C.

485{ RAVIART_LOW_D_ERROR_MESSAGE }

◆ shapes_need_reinit() [67/86]

bool libMesh::FE< 2, L2_RAVIART_THOMAS >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 486 of file fe_raviart.C.

486{ return true; }

◆ shapes_need_reinit() [68/86]

bool libMesh::FE< 3, L2_RAVIART_THOMAS >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 487 of file fe_raviart.C.

487{ return true; }

◆ shapes_need_reinit() [69/86]

bool libMesh::FE< 0, SCALAR >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 125 of file fe_scalar.C.

125{ return false; }

◆ shapes_need_reinit() [70/86]

bool libMesh::FE< 1, SCALAR >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 126 of file fe_scalar.C.

126{ return false; }

◆ shapes_need_reinit() [71/86]

bool libMesh::FE< 2, SCALAR >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 127 of file fe_scalar.C.

127{ return false; }

◆ shapes_need_reinit() [72/86]

bool libMesh::FE< 3, SCALAR >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 128 of file fe_scalar.C.

128{ return false; }

◆ shapes_need_reinit() [73/86]

bool libMesh::FE< 0, SIDE_HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 356 of file fe_side_hierarchic.C.

356{ return true; }

◆ shapes_need_reinit() [74/86]

bool libMesh::FE< 1, SIDE_HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 357 of file fe_side_hierarchic.C.

357{ return true; }

◆ shapes_need_reinit() [75/86]

bool libMesh::FE< 2, SIDE_HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 358 of file fe_side_hierarchic.C.

358{ return true; }

◆ shapes_need_reinit() [76/86]

bool libMesh::FE< 3, SIDE_HIERARCHIC >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 359 of file fe_side_hierarchic.C.

359{ return true; }

◆ shapes_need_reinit() [77/86]

bool libMesh::FE< 2, SUBDIVISION >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 980 of file fe_subdivision_2D.C.

980{ return true; }

◆ shapes_need_reinit() [78/86]

bool libMesh::FE< 0, SZABAB >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1355 of file fe_szabab.C.

1355{ return true; }

◆ shapes_need_reinit() [79/86]

bool libMesh::FE< 1, SZABAB >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1356 of file fe_szabab.C.

1356{ return true; }

◆ shapes_need_reinit() [80/86]

bool libMesh::FE< 2, SZABAB >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1357 of file fe_szabab.C.

1357{ return true; }

◆ shapes_need_reinit() [81/86]

bool libMesh::FE< 3, SZABAB >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 1358 of file fe_szabab.C.

1358{ return true; }

◆ shapes_need_reinit() [82/86]

bool libMesh::FE< 0, XYZ >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 429 of file fe_xyz.C.

429{ return true; }

◆ shapes_need_reinit() [83/86]

bool libMesh::FE< 1, XYZ >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 430 of file fe_xyz.C.

430{ return true; }

◆ shapes_need_reinit() [84/86]

bool libMesh::FE< 2, XYZ >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 431 of file fe_xyz.C.

431{ return true; }

◆ shapes_need_reinit() [85/86]

bool libMesh::FE< 3, XYZ >::shapes_need_reinit ( ) const
virtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

Definition at line 432 of file fe_xyz.C.

432{ return true; }

◆ shapes_need_reinit() [86/86]

virtual bool libMesh::FE< Dim, T >::shapes_need_reinit ( ) const
overridevirtualinherited
Returns
true when the shape functions (for this FEFamily) depend on the particular element, and therefore needs to be re-initialized for each new element. false otherwise.

Implements libMesh::FEAbstract.

◆ side_map() [1/2]

void libMesh::FE< 2, SUBDIVISION >::side_map ( const Elem ,
const Elem ,
const unsigned int  ,
const std::vector< Point > &  ,
std::vector< Point > &   
)
virtualinherited

Computes the reference space quadrature points on the side of an element based on the side quadrature points.

Implements libMesh::FEAbstract.

Definition at line 917 of file fe_subdivision_2D.C.

922{
923 libmesh_not_implemented();
924}

◆ side_map() [2/2]

void libMesh::FE< Dim, T >::side_map ( const Elem elem,
const Elem side,
const unsigned int  s,
const std::vector< Point > &  reference_side_points,
std::vector< Point > &  reference_points 
)
overridevirtualinherited

Computes the reference space quadrature points on the side of an element based on the side quadrature points.

Implements libMesh::FEAbstract.

Definition at line 616 of file fe_boundary.C.

352{
353 // We're calculating mappings - we need at least first order info
354 this->calculate_phi = true;
356
357 unsigned int side_p_level = elem->p_level();
358 if (elem->neighbor_ptr(s) != nullptr)
359 side_p_level = std::max(side_p_level, elem->neighbor_ptr(s)->p_level());
360
361 if (side->type() != last_side ||
362 (elem->runtime_topology() &&
363 this->_elem != elem) ||
364 side_p_level != this->_elem_p_level ||
365 !this->shapes_on_quadrature)
366 {
367 // Set the element type
368 this->_elem = elem;
369 this->_elem_type = elem->type();
370 this->_elem_p_level = side_p_level;
371 this->_p_level = this->_add_p_level_in_reinit * side_p_level;
372
373 // Set the last_side
374 last_side = side->type();
375
376 // Initialize the face shape functions
377 this->_fe_map->template init_face_shape_functions<Dim>(reference_side_points, side);
378 }
379 else
380 this->_elem = elem;
381
382 const unsigned int n_points =
383 cast_int<unsigned int>(reference_side_points.size());
384 reference_points.resize(n_points);
385 for (unsigned int i = 0; i < n_points; i++)
386 reference_points[i].zero();
387
388 std::vector<Point> refspace_nodes;
389 this->get_refspace_nodes(elem->type(), refspace_nodes);
390
391 const std::vector<std::vector<Real>> & psi_map = this->_fe_map->get_psi();
392
393 // sum over the nodes
394 for (auto i : index_range(psi_map))
395 {
396 const Point & side_node = refspace_nodes[elem->local_side_node(s,i)];
397 for (unsigned int p=0; p<n_points; p++)
398 reference_points[p].add_scaled (side_node, psi_map[i][p]);
399 }
400}

◆ side_nodal_soln() [1/4]

void libMesh::FE< 1, SIDE_HIERARCHIC >::side_nodal_soln ( const Elem ,
const Order  ,
const unsigned int  side,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln_on_side,
const bool  ,
const unsigned   
)
inherited

Definition at line 246 of file fe_side_hierarchic.C.

253{
254 libmesh_assert_less(side, 2);
255 nodal_soln_on_side.resize(1);
256 nodal_soln_on_side[0] = elem_soln[side];
257}

◆ side_nodal_soln() [2/4]

static void libMesh::FE< Dim, T >::side_nodal_soln ( const Elem elem,
const Order  o,
const unsigned int  side,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln_on_side,
bool  add_p_level = true,
const unsigned  vdim = 1 
)
staticinherited

Build the nodal soln on one side from the (full) element soln.

This is the solution that will be plotted on side-elements.

On a p-refined element, o should be the base order of the element.

◆ side_nodal_soln() [3/4]

void libMesh::FE< 2, SIDE_HIERARCHIC >::side_nodal_soln ( const Elem elem,
const Order  o,
const unsigned int  side,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln_on_side,
const bool  add_p_level,
const unsigned   
)
inherited

Definition at line 261 of file fe_side_hierarchic.C.

268{
269 libmesh_assert_equal_to(elem->dim(), 2);
270 side_hierarchic_side_nodal_soln(elem, o, side, elem_soln,
271 nodal_soln_on_side,
272 add_p_level);
273}

◆ side_nodal_soln() [4/4]

void libMesh::FE< 3, SIDE_HIERARCHIC >::side_nodal_soln ( const Elem elem,
const Order  o,
const unsigned int  side,
const std::vector< Number > &  elem_soln,
std::vector< Number > &  nodal_soln_on_side,
const bool  add_p_level,
const unsigned   
)
inherited

Definition at line 277 of file fe_side_hierarchic.C.

284{
285 libmesh_assert_equal_to(elem->dim(), 3);
286 side_hierarchic_side_nodal_soln(elem, o, side, elem_soln,
287 nodal_soln_on_side,
288 add_p_level);
289}

Member Data Documentation

◆ _add_p_level_in_reinit

bool libMesh::FEAbstract::_add_p_level_in_reinit
protectedinherited

Whether to add p-refinement levels in init/reinit methods.

Definition at line 787 of file fe_abstract.h.

Referenced by libMesh::FEAbstract::add_p_level_in_reinit(), and libMesh::FEAbstract::add_p_level_in_reinit().

◆ _counts

ReferenceCounter::Counts libMesh::ReferenceCounter::_counts
staticprotectedinherited

Actually holds the data.

Definition at line 124 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::get_info().

◆ _elem

const Elem* libMesh::FEAbstract::_elem
protectedinherited

The element the current data structures were set up for.

Definition at line 740 of file fe_abstract.h.

Referenced by libMesh::FEAbstract::get_elem().

◆ _elem_p_level

unsigned int libMesh::FEAbstract::_elem_p_level
protectedinherited

The element p-refinement level the current data structures are set up for.

Note that this is different from _p_level which is the p-refinement level this finite elment object is operating at, e.g. how many dofs per elem, etc. On the other hand, this data member can indicate things like the order of the quadrature rule. We will use this primarily to determine whether cached data is still valid

Definition at line 751 of file fe_abstract.h.

◆ _elem_type

ElemType libMesh::FEAbstract::_elem_type
protectedinherited

The element type the current data structures were set up for.

Definition at line 735 of file fe_abstract.h.

Referenced by libMesh::FEAbstract::get_type().

◆ _enable_print_counter

bool libMesh::ReferenceCounter::_enable_print_counter = true
staticprotectedinherited

Flag to control whether reference count information is printed when print_info is called.

Definition at line 143 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info(), and libMesh::ReferenceCounter::print_info().

◆ _fe_map

std::unique_ptr<FEMap> libMesh::FEAbstract::_fe_map
protectedinherited

◆ _fe_trans

std::unique_ptr<FETransformationBase<FEOutputType< T >::type > > libMesh::FEGenericBase< FEOutputType< T >::type >::_fe_trans
protectedinherited

Object that handles computing shape function values, gradients, etc in the physical domain.

Definition at line 609 of file fe_base.h.

◆ _mutex

Threads::spin_mutex libMesh::ReferenceCounter::_mutex
staticprotectedinherited

Mutual exclusion object to enable thread-safe reference counting.

Definition at line 137 of file reference_counter.h.

◆ _n_objects

Threads::atomic< unsigned int > libMesh::ReferenceCounter::_n_objects
staticprotectedinherited

◆ _n_total_qp

unsigned int libMesh::FEAbstract::_n_total_qp
protectedinherited

The total number of quadrature points for the current configuration.

Definition at line 774 of file fe_abstract.h.

Referenced by libMesh::FEAbstract::n_quadrature_points(), and libMesh::InfFE< Dim, T_radial, T_map >::n_quadrature_points().

◆ _p_level

unsigned int libMesh::FEAbstract::_p_level
protectedinherited

The p refinement level the current data structures are set up for.

Definition at line 757 of file fe_abstract.h.

Referenced by libMesh::FEAbstract::get_order(), and libMesh::FEAbstract::get_p_level().

◆ cached_edges

std::vector<bool> libMesh::FE< Dim, T >::cached_edges
protectedinherited

Definition at line 797 of file fe.h.

◆ cached_faces

std::vector<bool> libMesh::FE< Dim, T >::cached_faces
protectedinherited

Definition at line 797 of file fe.h.

◆ cached_nodes

std::vector<Point> libMesh::FE< Dim, T >::cached_nodes
protectedinherited

Vectors holding the node locations, edge and face orientations of the last element we cached.

Definition at line 796 of file fe.h.

◆ calculate_curl_phi

bool libMesh::FEAbstract::calculate_curl_phi
mutableprotectedinherited

Should we calculate shape function curls?

Definition at line 712 of file fe_abstract.h.

Referenced by libMesh::FEGenericBase< OutputType >::calculating_nothing(), and libMesh::FEGenericBase< OutputType >::get_curl_phi().

◆ calculate_d2phi [1/2]

bool libMesh::FEAbstract::calculate_d2phi
mutableprotectedinherited

◆ calculate_d2phi [2/2]

const bool libMesh::FEAbstract::calculate_d2phi =false
protectedinherited

Definition at line 705 of file fe_abstract.h.

◆ calculate_default_dual_coeff

bool libMesh::FEAbstract::calculate_default_dual_coeff
mutableprotectedinherited

Are we calculating the coefficient for the dual basis using the default qrule?

Definition at line 676 of file fe_abstract.h.

Referenced by libMesh::FEAbstract::set_calculate_default_dual_coeff().

◆ calculate_div_phi

bool libMesh::FEAbstract::calculate_div_phi
mutableprotectedinherited

Should we calculate shape function divergences?

Definition at line 717 of file fe_abstract.h.

Referenced by libMesh::FEGenericBase< OutputType >::calculating_nothing(), and libMesh::FEGenericBase< OutputType >::get_div_phi().

◆ calculate_dphi

bool libMesh::FEAbstract::calculate_dphi
mutableprotectedinherited

◆ calculate_dphiref

bool libMesh::FEAbstract::calculate_dphiref
mutableprotectedinherited

◆ calculate_dual

bool libMesh::FEAbstract::calculate_dual
mutableprotectedinherited

◆ calculate_map

bool libMesh::FEAbstract::calculate_map
mutableprotectedinherited

Are we calculating mapping functions?

Definition at line 686 of file fe_abstract.h.

Referenced by libMesh::FEGenericBase< OutputType >::calculating_nothing(), libMesh::FEAbstract::get_curvatures(), libMesh::InfFE< Dim, T_radial, T_map >::get_curvatures(), libMesh::FEAbstract::get_d2xyzdeta2(), libMesh::InfFE< Dim, T_radial, T_map >::get_d2xyzdeta2(), libMesh::FEAbstract::get_d2xyzdetadzeta(), libMesh::InfFE< Dim, T_radial, T_map >::get_d2xyzdetadzeta(), libMesh::FEAbstract::get_d2xyzdxi2(), libMesh::InfFE< Dim, T_radial, T_map >::get_d2xyzdxi2(), libMesh::FEAbstract::get_d2xyzdxideta(), libMesh::InfFE< Dim, T_radial, T_map >::get_d2xyzdxideta(), libMesh::FEAbstract::get_d2xyzdxidzeta(), libMesh::InfFE< Dim, T_radial, T_map >::get_d2xyzdxidzeta(), libMesh::FEAbstract::get_d2xyzdzeta2(), libMesh::InfFE< Dim, T_radial, T_map >::get_d2xyzdzeta2(), libMesh::FEAbstract::get_detadx(), libMesh::InfFE< Dim, T_radial, T_map >::get_detadx(), libMesh::FEAbstract::get_detady(), libMesh::InfFE< Dim, T_radial, T_map >::get_detady(), libMesh::FEAbstract::get_detadz(), libMesh::InfFE< Dim, T_radial, T_map >::get_detadz(), libMesh::FEAbstract::get_dxidx(), libMesh::InfFE< Dim, T_radial, T_map >::get_dxidx(), libMesh::FEAbstract::get_dxidy(), libMesh::InfFE< Dim, T_radial, T_map >::get_dxidy(), libMesh::FEAbstract::get_dxidz(), libMesh::InfFE< Dim, T_radial, T_map >::get_dxidz(), libMesh::FEAbstract::get_dxyzdeta(), libMesh::InfFE< Dim, T_radial, T_map >::get_dxyzdeta(), libMesh::FEAbstract::get_dxyzdxi(), libMesh::InfFE< Dim, T_radial, T_map >::get_dxyzdxi(), libMesh::InfFE< Dim, T_radial, T_map >::get_dxyzdzeta(), libMesh::FEAbstract::get_dzetadx(), libMesh::InfFE< Dim, T_radial, T_map >::get_dzetadx(), libMesh::FEAbstract::get_dzetady(), libMesh::InfFE< Dim, T_radial, T_map >::get_dzetady(), libMesh::FEAbstract::get_dzetadz(), libMesh::InfFE< Dim, T_radial, T_map >::get_dzetadz(), libMesh::FEAbstract::get_JxW(), libMesh::FEAbstract::get_normals(), libMesh::InfFE< Dim, T_radial, T_map >::get_normals(), libMesh::FEAbstract::get_tangents(), libMesh::InfFE< Dim, T_radial, T_map >::get_tangents(), and libMesh::FEAbstract::get_xyz().

◆ calculate_nothing

bool libMesh::FEAbstract::calculate_nothing
mutableprotectedinherited

Are we potentially deliberately calculating nothing?

Definition at line 681 of file fe_abstract.h.

Referenced by libMesh::FEGenericBase< OutputType >::calculating_nothing(), and libMesh::FEAbstract::get_nothing().

◆ calculate_phi

bool libMesh::FEAbstract::calculate_phi
mutableprotectedinherited

◆ calculations_started

bool libMesh::FEAbstract::calculations_started
mutableprotectedinherited

Have calculations with this object already been started? Then all get_* functions should already have been called.

Definition at line 666 of file fe_abstract.h.

Referenced by libMesh::FEGenericBase< OutputType >::get_curl_phi(), libMesh::FEGenericBase< OutputType >::get_d2phi(), libMesh::FEGenericBase< OutputType >::get_d2phideta2(), libMesh::FEGenericBase< OutputType >::get_d2phidetadzeta(), libMesh::FEGenericBase< OutputType >::get_d2phidx2(), libMesh::FEGenericBase< OutputType >::get_d2phidxdy(), libMesh::FEGenericBase< OutputType >::get_d2phidxdz(), libMesh::FEGenericBase< OutputType >::get_d2phidxi2(), libMesh::FEGenericBase< OutputType >::get_d2phidxideta(), libMesh::FEGenericBase< OutputType >::get_d2phidxidzeta(), libMesh::FEGenericBase< OutputType >::get_d2phidy2(), libMesh::FEGenericBase< OutputType >::get_d2phidydz(), libMesh::FEGenericBase< OutputType >::get_d2phidz2(), libMesh::FEGenericBase< OutputType >::get_d2phidzeta2(), libMesh::InfFE< Dim, T_radial, T_map >::get_detadx(), libMesh::InfFE< Dim, T_radial, T_map >::get_detady(), libMesh::InfFE< Dim, T_radial, T_map >::get_detadz(), libMesh::FEGenericBase< OutputType >::get_div_phi(), libMesh::FEGenericBase< OutputType >::get_dphi(), libMesh::InfFE< Dim, T_radial, T_map >::get_dphi_over_decay(), libMesh::InfFE< Dim, T_radial, T_map >::get_dphi_over_decayxR(), libMesh::FEGenericBase< OutputType >::get_dphideta(), libMesh::FEGenericBase< OutputType >::get_dphidx(), libMesh::FEGenericBase< OutputType >::get_dphidxi(), libMesh::FEGenericBase< OutputType >::get_dphidy(), libMesh::FEGenericBase< OutputType >::get_dphidz(), libMesh::FEGenericBase< OutputType >::get_dphidzeta(), libMesh::FEGenericBase< OutputType >::get_dual_d2phi(), libMesh::FEGenericBase< OutputType >::get_dual_dphi(), libMesh::FEGenericBase< OutputType >::get_dual_phi(), libMesh::InfFE< Dim, T_radial, T_map >::get_dxidx(), libMesh::InfFE< Dim, T_radial, T_map >::get_dxidy(), libMesh::InfFE< Dim, T_radial, T_map >::get_dxidz(), libMesh::InfFE< Dim, T_radial, T_map >::get_dzetadx(), libMesh::InfFE< Dim, T_radial, T_map >::get_dzetady(), libMesh::InfFE< Dim, T_radial, T_map >::get_dzetadz(), libMesh::InfFE< Dim, T_radial, T_map >::get_JxW(), libMesh::InfFE< Dim, T_radial, T_map >::get_JxWxdecay_sq(), libMesh::InfFE< Dim, T_radial, T_map >::get_normals(), libMesh::FEGenericBase< OutputType >::get_phi(), libMesh::InfFE< Dim, T_radial, T_map >::get_phi_over_decayxR(), libMesh::InfFE< Dim, T_radial, T_map >::get_Sobolev_dweight(), libMesh::InfFE< Dim, T_radial, T_map >::get_Sobolev_dweightxR_sq(), libMesh::InfFE< Dim, T_radial, T_map >::get_Sobolev_weight(), libMesh::InfFE< Dim, T_radial, T_map >::get_Sobolev_weightxR_sq(), libMesh::InfFE< Dim, T_radial, T_map >::get_tangents(), and libMesh::InfFE< Dim, T_radial, T_map >::get_xyz().

◆ curl_phi

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::curl_phi
protectedinherited

Shape function curl values.

Only defined for vector types.

Definition at line 631 of file fe_base.h.

◆ d2phi

std::vector<std::vector<OutputTensor> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phi
protectedinherited

Shape function second derivative values.

Definition at line 674 of file fe_base.h.

◆ d2phideta2

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phideta2
protectedinherited

Shape function second derivatives in the eta direction.

Definition at line 695 of file fe_base.h.

◆ d2phidetadzeta

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidetadzeta
protectedinherited

Shape function second derivatives in the eta-zeta direction.

Definition at line 700 of file fe_base.h.

◆ d2phidx2

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidx2
protectedinherited

Shape function second derivatives in the x direction.

Definition at line 710 of file fe_base.h.

◆ d2phidxdy

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidxdy
protectedinherited

Shape function second derivatives in the x-y direction.

Definition at line 715 of file fe_base.h.

◆ d2phidxdz

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidxdz
protectedinherited

Shape function second derivatives in the x-z direction.

Definition at line 720 of file fe_base.h.

◆ d2phidxi2

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidxi2
protectedinherited

Shape function second derivatives in the xi direction.

Definition at line 680 of file fe_base.h.

◆ d2phidxideta

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidxideta
protectedinherited

Shape function second derivatives in the xi-eta direction.

Definition at line 685 of file fe_base.h.

◆ d2phidxidzeta

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidxidzeta
protectedinherited

Shape function second derivatives in the xi-zeta direction.

Definition at line 690 of file fe_base.h.

◆ d2phidy2

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidy2
protectedinherited

Shape function second derivatives in the y direction.

Definition at line 725 of file fe_base.h.

◆ d2phidydz

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidydz
protectedinherited

Shape function second derivatives in the y-z direction.

Definition at line 730 of file fe_base.h.

◆ d2phidz2

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidz2
protectedinherited

Shape function second derivatives in the z direction.

Definition at line 735 of file fe_base.h.

◆ d2phidzeta2

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidzeta2
protectedinherited

Shape function second derivatives in the zeta direction.

Definition at line 705 of file fe_base.h.

◆ dim

const unsigned int libMesh::FEAbstract::dim
protectedinherited

The dimensionality of the object.

Definition at line 660 of file fe_abstract.h.

Referenced by libMesh::FEAbstract::build(), and libMesh::FEAbstract::get_dim().

◆ div_phi

std::vector<std::vector<OutputDivergence> > libMesh::FEGenericBase< FEOutputType< T >::type >::div_phi
protectedinherited

Shape function divergence values.

Only defined for vector types.

Definition at line 636 of file fe_base.h.

◆ dphase

std::vector<OutputGradient> libMesh::FEGenericBase< FEOutputType< T >::type >::dphase
protectedinherited

Used for certain infinite element families: the first derivatives of the phase term in global coordinates, over all quadrature points.

Definition at line 753 of file fe_base.h.

◆ dphi

std::vector<std::vector<OutputGradient> > libMesh::FEGenericBase< FEOutputType< T >::type >::dphi
protectedinherited

Shape function derivative values.

Definition at line 620 of file fe_base.h.

◆ dphideta

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::dphideta
protectedinherited

Shape function derivatives in the eta direction.

Definition at line 646 of file fe_base.h.

◆ dphidx

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::dphidx
protectedinherited

Shape function derivatives in the x direction.

Definition at line 656 of file fe_base.h.

◆ dphidxi

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::dphidxi
protectedinherited

Shape function derivatives in the xi direction.

Definition at line 641 of file fe_base.h.

◆ dphidy

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::dphidy
protectedinherited

Shape function derivatives in the y direction.

Definition at line 661 of file fe_base.h.

◆ dphidz

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::dphidz
protectedinherited

Shape function derivatives in the z direction.

Definition at line 666 of file fe_base.h.

◆ dphidzeta

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::dphidzeta
protectedinherited

Shape function derivatives in the zeta direction.

Definition at line 651 of file fe_base.h.

◆ dual_coeff

DenseMatrix<Real> libMesh::FEGenericBase< FEOutputType< T >::type >::dual_coeff
mutableprotectedinherited

Coefficient matrix for the dual basis.

Definition at line 626 of file fe_base.h.

◆ dual_d2phi

std::vector<std::vector<OutputTensor> > libMesh::FEGenericBase< FEOutputType< T >::type >::dual_d2phi
protectedinherited

Definition at line 675 of file fe_base.h.

◆ dual_dphi

std::vector<std::vector<OutputGradient> > libMesh::FEGenericBase< FEOutputType< T >::type >::dual_dphi
protectedinherited

Definition at line 621 of file fe_base.h.

◆ dual_phi

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::dual_phi
protectedinherited

Definition at line 615 of file fe_base.h.

◆ dweight

std::vector<RealGradient> libMesh::FEGenericBase< FEOutputType< T >::type >::dweight
protectedinherited

Used for certain infinite element families: the global derivative of the additional radial weight \( 1/{r^2} \), over all quadrature points.

Definition at line 760 of file fe_base.h.

◆ fe_type

FEType libMesh::FEAbstract::fe_type
protectedinherited

◆ last_edge

ElemType libMesh::FE< Dim, T >::last_edge
protectedinherited

Definition at line 816 of file fe.h.

◆ last_side

ElemType libMesh::FE< Dim, T >::last_side
protectedinherited

The last side and last edge we did a reinit on.

Definition at line 814 of file fe.h.

◆ phi

std::vector<std::vector<OutputShape> > libMesh::FEGenericBase< FEOutputType< T >::type >::phi
protectedinherited

Shape function values.

Definition at line 614 of file fe_base.h.

◆ qrule

QBase* libMesh::FEAbstract::qrule
protectedinherited

A pointer to the quadrature rule employed.

Definition at line 762 of file fe_abstract.h.

Referenced by libMesh::FEAbstract::n_quadrature_points().

◆ shapes_on_quadrature

bool libMesh::FEAbstract::shapes_on_quadrature
protectedinherited

A flag indicating if current data structures correspond to quadrature rule points.

Definition at line 768 of file fe_abstract.h.

Referenced by libMesh::FEAbstract::n_quadrature_points().

◆ weight

std::vector<Real> libMesh::FEGenericBase< FEOutputType< T >::type >::weight
protectedinherited

Used for certain infinite element families: the additional radial weight \( 1/{r^2} \) in local coordinates, over all quadrature points.

Definition at line 767 of file fe_base.h.


The documentation for this class was generated from the following file: