libMesh::FE< Dim, T > Class Template Reference

#include <fe.h>

Inheritance diagram for libMesh::FE< Dim, T >:

Public Types

typedef FEGenericBase
< typename FEOutputType< 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

 FE (const FEType &fet)
 
virtual unsigned int n_shape_functions () const
 
virtual FEContinuity get_continuity () const
 
virtual bool is_hierarchic () const
 
virtual void reinit (const Elem *elem, const std::vector< Point > *const pts=NULL, const std::vector< Real > *const weights=NULL)
 
virtual void reinit (const Elem *elem, const unsigned int side, const Real tolerance=TOLERANCE, const std::vector< Point > *const pts=NULL, const std::vector< Real > *const weights=NULL)
 
virtual void edge_reinit (const Elem *elem, const unsigned int edge, const Real tolerance=TOLERANCE, const std::vector< Point > *const pts=NULL, const std::vector< Real > *const weights=NULL)
 
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)
 
virtual void attach_quadrature_rule (QBase *q)
 
virtual unsigned int n_quadrature_points () const
 
virtual bool shapes_need_reinit () const
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &p)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int, const Point &p)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
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)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
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)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
Real shape (const ElemType, const Order, const unsigned int i, const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int i, const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &p)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &p)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order order, const unsigned int i, const unsigned int libmesh_dbg_var(j), const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
template<>
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
template<>
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
template<>
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape (const ElemType type, const Order order, const unsigned int i, const Point &p)
 
template<>
RealGradient shape_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape_second_deriv (const ElemType type, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
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)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
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)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
void nodal_soln (const Elem *, const Order, const std::vector< Number > &, std::vector< Number > &)
 
template<>
void nodal_soln (const Elem *, const Order, const std::vector< Number > &, std::vector< Number > &)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType, const Order)
 
template<>
unsigned int n_dofs (const ElemType, const Order)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
RealGradient shape (const Elem *, const Order, const unsigned int, const Point &)
 
template<>
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
RealGradient shape (const Elem *, const Order, const unsigned int, const Point &)
 
template<>
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &)
 
template<>
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &)
 
template<>
RealGradient shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
RealGradient shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
RealGradient shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
RealGradient shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
RealGradient shape_second_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType, const Order o)
 
template<>
unsigned int n_dofs (const ElemType, const Order o)
 
template<>
unsigned int n_dofs (const ElemType, const Order o)
 
template<>
unsigned int n_dofs (const ElemType, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
unsigned int n_dofs_per_elem (const ElemType, const Order)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_at_node (const ElemType t, const Order o, const unsigned int n)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
void compute_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order libmesh_dbg_var(order), const unsigned int i, const Point &p)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
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)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order order, const unsigned int i, const Point &p)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order order, const unsigned int i, const unsigned int j, const Point &p)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
void nodal_soln (const Elem *elem, const Order order, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_at_node (const ElemType, const Order, const unsigned int)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
FEContinuity get_continuity () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
bool is_hierarchic () const
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
void compute_constraints (DofConstraints &, DofMap &, const unsigned int, const Elem *)
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
bool shapes_need_reinit () const
 
template<>
Real shape (const ElemType, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape (const Elem *, const Order, const unsigned int libmesh_dbg_var(i), const Point &)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_second_deriv (const Elem *, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const Point &point_in)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
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)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
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)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const Point &point_in)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &point_in)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
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)
 
template<>
Real shape (const ElemType, const Order, const unsigned int, const Point &)
 
template<>
Real shape (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const Point &point_in)
 
template<>
Real shape_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
Real shape_deriv (const Elem *elem, const Order libmesh_dbg_var(order), const unsigned int i, const unsigned int j, const Point &point_in)
 
template<>
Real shape_second_deriv (const ElemType, const Order, const unsigned int, const unsigned int, const Point &)
 
template<>
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 std::vector< std::vector
< OutputShape > > & 
get_phi () const
 
const std::vector< std::vector
< OutputGradient > > & 
get_dphi () const
 
const std::vector< std::vector
< OutputShape > > & 
get_curl_phi () const
 
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
< 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
 
const std::vector< Real > & get_Sobolev_weight () const
 
const std::vector< RealGradient > & get_Sobolev_dweight () const
 
void print_phi (std::ostream &os) const
 
void print_dphi (std::ostream &os) const
 
void print_d2phi (std::ostream &os) const
 
const std::vector< Point > & get_xyz () const
 
const std::vector< Real > & get_JxW () const
 
const std::vector< RealGradient > & get_dxyzdxi () const
 
const std::vector< RealGradient > & get_dxyzdeta () const
 
const std::vector< RealGradient > & get_dxyzdzeta () const
 
const std::vector< RealGradient > & get_d2xyzdxi2 () const
 
const std::vector< RealGradient > & get_d2xyzdeta2 () const
 
const std::vector< RealGradient > & get_d2xyzdzeta2 () const
 
const std::vector< RealGradient > & get_d2xyzdxideta () const
 
const std::vector< RealGradient > & get_d2xyzdxidzeta () const
 
const std::vector< RealGradient > & get_d2xyzdetadzeta () const
 
const std::vector< Real > & get_dxidx () const
 
const std::vector< Real > & get_dxidy () const
 
const std::vector< Real > & get_dxidz () const
 
const std::vector< Real > & get_detadx () const
 
const std::vector< Real > & get_detady () const
 
const std::vector< Real > & get_detadz () const
 
const std::vector< Real > & get_dzetadx () const
 
const std::vector< Real > & get_dzetady () const
 
const std::vector< Real > & get_dzetadz () const
 
const std::vector< std::vector
< Point > > & 
get_tangents () const
 
const std::vector< Point > & get_normals () const
 
const std::vector< Real > & get_curvatures () const
 
ElemType get_type () const
 
unsigned int get_p_level () const
 
FEType get_fe_type () const
 
Order get_order () const
 
FEFamily get_family () const
 
const FEMapget_fe_map () const
 
void print_JxW (std::ostream &os) const
 
void print_xyz (std::ostream &os) const
 
void print_info (std::ostream &os) const
 

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)
 
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)
 
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)
 
static void nodal_soln (const Elem *elem, const Order o, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_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_at_node (const ElemType t, const Order o, const unsigned int n)
 
static unsigned int n_dofs_per_elem (const ElemType t, const Order o)
 
static void dofs_on_side (const Elem *const elem, const Order o, unsigned int s, std::vector< unsigned int > &di)
 
static void dofs_on_edge (const Elem *const elem, const Order o, unsigned int e, std::vector< unsigned int > &di)
 
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)
 
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 AutoPtr< FEGenericBasebuild (const unsigned int dim, const FEType &type)
 
static AutoPtr< FEGenericBasebuild_InfFE (const unsigned int dim, const FEType &type)
 
static void compute_proj_constraints (DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
 
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)
 
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)
 
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)
 
static void compute_periodic_node_constraints (NodeConstraints &constraints, const PeriodicBoundaries &boundaries, const MeshBase &mesh, const PointLocatorBase *point_locator, const Elem *elem)
 
static void print_info (std::ostream &out=libMesh::out)
 
static std::string get_info ()
 
static unsigned int n_objects ()
 
static void enable_print_counter_info ()
 
static void disable_print_counter_info ()
 

Protected Types

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

Protected Member Functions

virtual void init_shape_functions (const std::vector< Point > &qp, const Elem *e)
 
virtual void init_base_shape_functions (const std::vector< Point > &qp, const Elem *e)
 
virtual void compute_shape_functions (const Elem *elem, const std::vector< Point > &qp)
 
void increment_constructor_count (const std::string &name)
 
void increment_destructor_count (const std::string &name)
 

Protected Attributes

std::vector< Pointcached_nodes
 
ElemType last_side
 
unsigned int last_edge
 
AutoPtr< FETransformationBase
< OutputType > > 
_fe_trans
 
std::vector< std::vector
< OutputShape > > 
phi
 
std::vector< std::vector
< OutputGradient > > 
dphi
 
std::vector< std::vector
< OutputShape > > 
curl_phi
 
std::vector< std::vector
< OutputDivergence > > 
div_phi
 
std::vector< std::vector
< OutputShape > > 
dphidxi
 
std::vector< std::vector
< OutputShape > > 
dphideta
 
std::vector< std::vector
< OutputShape > > 
dphidzeta
 
std::vector< std::vector
< OutputShape > > 
dphidx
 
std::vector< std::vector
< OutputShape > > 
dphidy
 
std::vector< std::vector
< OutputShape > > 
dphidz
 
std::vector< std::vector
< OutputTensor > > 
d2phi
 
std::vector< std::vector
< OutputShape > > 
d2phidxi2
 
std::vector< std::vector
< OutputShape > > 
d2phidxideta
 
std::vector< std::vector
< OutputShape > > 
d2phidxidzeta
 
std::vector< std::vector
< OutputShape > > 
d2phideta2
 
std::vector< std::vector
< OutputShape > > 
d2phidetadzeta
 
std::vector< std::vector
< OutputShape > > 
d2phidzeta2
 
std::vector< std::vector
< OutputShape > > 
d2phidx2
 
std::vector< std::vector
< OutputShape > > 
d2phidxdy
 
std::vector< std::vector
< OutputShape > > 
d2phidxdz
 
std::vector< std::vector
< OutputShape > > 
d2phidy2
 
std::vector< std::vector
< OutputShape > > 
d2phidydz
 
std::vector< std::vector
< OutputShape > > 
d2phidz2
 
std::vector< OutputGradientdphase
 
std::vector< RealGradientdweight
 
std::vector< Realweight
 
AutoPtr< FEMap_fe_map
 
const unsigned int dim
 
bool calculations_started
 
bool calculate_phi
 
bool calculate_dphi
 
bool calculate_d2phi
 
bool calculate_curl_phi
 
bool calculate_div_phi
 
bool calculate_dphiref
 
const FEType fe_type
 
ElemType elem_type
 
unsigned int _p_level
 
QBaseqrule
 
bool shapes_on_quadrature
 

Static Protected Attributes

static Counts _counts
 
static Threads::atomic
< unsigned int > 
_n_objects
 
static Threads::spin_mutex _mutex
 
static bool _enable_print_counter = true
 

Friends

template<unsigned int friend_Dim, FEFamily friend_T_radial, InfMapType friend_T_map>
class InfFE
 

Detailed Description

template<unsigned int Dim, FEFamily T>
class libMesh::FE< Dim, T >

A specific instatiation of the FEBase class. This class is templated, and specific template instantiations will result in different Finite Element families. Full specialization of the template for specific dimensions(Dim) and families (T) provide support for specific finite element types. The use of templates allows for compile-time optimization, however it requires that the specific finite element family and dimension is also known at compile time. If this is too restricting for your application you can use the FEBase::build() member to create abstract (but still optimized) finite elements.

Author
Benjamin S. Kirk
Date
2002-2007

Definition at line 91 of file fe.h.

Member Typedef Documentation

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 113 of file reference_counter.h.

Definition at line 151 of file fe_base.h.

Definition at line 149 of file fe_base.h.

Definition at line 152 of file fe_base.h.

Definition at line 155 of file fe_base.h.

Definition at line 153 of file fe_base.h.

Definition at line 154 of file fe_base.h.

template<unsigned int Dim, FEFamily T>
typedef FEGenericBase<typename FEOutputType<T>::type>::OutputShape libMesh::FE< Dim, T >::OutputShape

Definition at line 103 of file fe.h.

Definition at line 150 of file fe_base.h.

Constructor & Destructor Documentation

template<unsigned int Dim, FEFamily T>
libMesh::FE< Dim, T >::FE ( const FEType fet)
inlineexplicit

Constructor.

Definition at line 904 of file fe.h.

References libMesh::FEAbstract::get_family().

904  :
905  FEGenericBase<typename FEOutputType<T>::type> (Dim,fet),
908 {
909  // Sanity check. Make sure the
910  // Family specified in the template instantiation
911  // matches the one in the FEType object
912  libmesh_assert_equal_to (T, this->get_family());
913 }

Member Function Documentation

template<unsigned int Dim, FEFamily T>
void libMesh::FE< Dim, T >::attach_quadrature_rule ( QBase q)
virtual

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 44 of file fe.C.

References libMeshEnums::INVALID_ELEM, and libMesh::libmesh_assert().

45 {
46  libmesh_assert(q);
47  this->qrule = q;
48  // make sure we don't cache results from a previous quadrature rule
49  this->elem_type = INVALID_ELEM;
50  return;
51 }
static AutoPtr<FEGenericBase> libMesh::FEGenericBase< FEOutputType< T >::type >::build ( const unsigned int  dim,
const FEType type 
)
staticinherited

Builds a specific finite element type. A AutoPtr<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

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

Builds a specific infinite element type. A AutoPtr<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

static 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.

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

Definition at line 122 of file fe_scalar.C.

126  { }
template<>
void libMesh::FE< 3, SCALAR >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
)

Definition at line 129 of file fe_scalar.C.

133  { }
template<>
void libMesh::FE< 2, L2_HIERARCHIC >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
)

Definition at line 202 of file fe_l2_hierarchic.C.

206  { }
template<>
void libMesh::FE< 3, L2_HIERARCHIC >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
)

Definition at line 209 of file fe_l2_hierarchic.C.

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

Definition at line 352 of file fe_clough.C.

356  { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
template<>
void libMesh::FE< 3, CLOUGH >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 359 of file fe_clough.C.

363  { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
template<>
void libMesh::FE< 2, HERMITE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 361 of file fe_hermite.C.

365  { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
template<>
void libMesh::FE< 3, HERMITE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 368 of file fe_hermite.C.

372  { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
template<>
void libMesh::FE< 2, HIERARCHIC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 373 of file fe_hierarchic.C.

377  { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
template<>
void libMesh::FE< 3, HIERARCHIC >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 380 of file fe_hierarchic.C.

384  { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
template<unsigned int Dim, FEFamily T>
static void libMesh::FE< Dim, T >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)
static

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

Referenced by libMesh::FEInterface::compute_constraints().

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

Definition at line 422 of file fe_monomial.C.

422 {}
template<>
void libMesh::FE< 3, MONOMIAL >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
)

Definition at line 423 of file fe_monomial.C.

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

Definition at line 437 of file fe_bernstein.C.

441  { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
template<>
void libMesh::FE< 3, BERNSTEIN >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 444 of file fe_bernstein.C.

448  { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
template<>
void libMesh::FE< 2, L2_LAGRANGE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
)

Definition at line 504 of file fe_l2_lagrange.C.

508  { }
template<>
void libMesh::FE< 3, L2_LAGRANGE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
)

Definition at line 511 of file fe_l2_lagrange.C.

515  { }
template<>
void libMesh::FE< 0, NEDELEC_ONE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
)

Definition at line 584 of file fe_nedelec_one.C.

588  { NEDELEC_LOW_D_ERROR_MESSAGE }
template<>
void libMesh::FE< 1, NEDELEC_ONE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
)

Definition at line 591 of file fe_nedelec_one.C.

595  { NEDELEC_LOW_D_ERROR_MESSAGE }
template<>
void libMesh::FE< 2, NEDELEC_ONE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 598 of file fe_nedelec_one.C.

602  { nedelec_one_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/2); }
template<>
void libMesh::FE< 3, NEDELEC_ONE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 605 of file fe_nedelec_one.C.

609  { nedelec_one_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/3); }
template<>
void libMesh::FE< 2, LAGRANGE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 890 of file fe_lagrange.C.

894  { lagrange_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/2); }
template<>
void libMesh::FE< 3, LAGRANGE >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 897 of file fe_lagrange.C.

901  { lagrange_compute_constraints(constraints, dof_map, variable_number, elem, /*Dim=*/3); }
template<>
void libMesh::FE< 2, XYZ >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
)

Definition at line 950 of file fe_xyz.C.

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

Definition at line 950 of file fe_lagrange_vec.C.

References libMesh::FEGenericBase< T >::compute_proj_constraints().

954  { //libmesh_not_implemented();
955  FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem);
956  }
template<>
void libMesh::FE< 3, XYZ >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
)

Definition at line 951 of file fe_xyz.C.

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

Definition at line 959 of file fe_lagrange_vec.C.

References libMesh::FEGenericBase< T >::compute_proj_constraints().

963  { //libmesh_not_implemented();
964  FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem);
965  }
template<>
void libMesh::FE< 2, SZABAB >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 1272 of file fe_szabab.C.

1276  { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
template<>
void libMesh::FE< 3, SZABAB >::compute_constraints ( DofConstraints constraints,
DofMap dof_map,
const unsigned int  variable_number,
const Elem elem 
)

Definition at line 1279 of file fe_szabab.C.

1283  { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
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 920 of file fe_abstract.C.

References std::abs(), libMesh::Elem::build_side(), libMesh::Elem::default_order(), libMesh::Elem::dim(), libMesh::FEAbstract::fe_type, libMesh::FEInterface::inverse_map(), libMeshEnums::LAGRANGE, libMesh::Elem::level(), libMesh::libmesh_assert(), libMesh::FEInterface::n_dofs(), libMesh::Elem::n_sides(), libMesh::Elem::neighbor(), libMesh::Elem::parent(), libMesh::Real, libMesh::remote_elem, libMesh::FEInterface::shape(), libMesh::Threads::spin_mtx, and libMesh::Elem::subactive().

922 {
923  libmesh_assert(elem);
924 
925  const unsigned int Dim = elem->dim();
926 
927  // Only constrain elements in 2,3D.
928  if (Dim == 1)
929  return;
930 
931  // Only constrain active and ancestor elements
932  if (elem->subactive())
933  return;
934 
935  // We currently always use LAGRANGE mappings for geometry
936  const FEType fe_type(elem->default_order(), LAGRANGE);
937 
938  std::vector<const Node*> my_nodes, parent_nodes;
939 
940  // Look at the element faces. Check to see if we need to
941  // build constraints.
942  for (unsigned int s=0; s<elem->n_sides(); s++)
943  if (elem->neighbor(s) != NULL &&
944  elem->neighbor(s) != remote_elem)
945  if (elem->neighbor(s)->level() < elem->level()) // constrain dofs shared between
946  { // this element and ones coarser
947  // than this element.
948  // Get pointers to the elements of interest and its parent.
949  const Elem* parent = elem->parent();
950 
951  // This can't happen... Only level-0 elements have NULL
952  // parents, and no level-0 elements can be at a higher
953  // level than their neighbors!
954  libmesh_assert(parent);
955 
956  const AutoPtr<Elem> my_side (elem->build_side(s));
957  const AutoPtr<Elem> parent_side (parent->build_side(s));
958 
959  const unsigned int n_side_nodes = my_side->n_nodes();
960 
961  my_nodes.clear();
962  my_nodes.reserve (n_side_nodes);
963  parent_nodes.clear();
964  parent_nodes.reserve (n_side_nodes);
965 
966  for (unsigned int n=0; n != n_side_nodes; ++n)
967  my_nodes.push_back(my_side->get_node(n));
968 
969  for (unsigned int n=0; n != n_side_nodes; ++n)
970  parent_nodes.push_back(parent_side->get_node(n));
971 
972  for (unsigned int my_side_n=0;
973  my_side_n < n_side_nodes;
974  my_side_n++)
975  {
976  libmesh_assert_less (my_side_n, FEInterface::n_dofs(Dim-1, fe_type, my_side->type()));
977 
978  const Node* my_node = my_nodes[my_side_n];
979 
980  // The support point of the DOF
981  const Point& support_point = *my_node;
982 
983  // Figure out where my node lies on their reference element.
984  const Point mapped_point = FEInterface::inverse_map(Dim-1, fe_type,
985  parent_side.get(),
986  support_point);
987 
988  // Compute the parent's side shape function values.
989  for (unsigned int their_side_n=0;
990  their_side_n < n_side_nodes;
991  their_side_n++)
992  {
993  libmesh_assert_less (their_side_n, FEInterface::n_dofs(Dim-1, fe_type, parent_side->type()));
994 
995  const Node* their_node = parent_nodes[their_side_n];
996  libmesh_assert(their_node);
997 
998  const Real their_value = FEInterface::shape(Dim-1,
999  fe_type,
1000  parent_side->type(),
1001  their_side_n,
1002  mapped_point);
1003 
1004  const Real their_mag = std::abs(their_value);
1005 #ifdef DEBUG
1006  // Protect for the case u_i ~= u_j,
1007  // in which case i better equal j.
1008  if (their_mag > 0.999)
1009  {
1010  libmesh_assert_equal_to (my_node, their_node);
1011  libmesh_assert_less (std::abs(their_value - 1.), 0.001);
1012  }
1013  else
1014 #endif
1015  // To make nodal constraints useful for constructing
1016  // sparsity patterns faster, we need to get EVERY
1017  // POSSIBLE constraint coupling identified, even if
1018  // there is no coupling in the isoparametric
1019  // Lagrange case.
1020  if (their_mag < 1.e-5)
1021  {
1022  // since we may be running this method concurretly
1023  // on multiple threads we need to acquire a lock
1024  // before modifying the shared constraint_row object.
1025  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1026 
1027  // A reference to the constraint row.
1028  NodeConstraintRow& constraint_row = constraints[my_node].first;
1029 
1030  constraint_row.insert(std::make_pair (their_node,
1031  0.));
1032  }
1033  // To get nodal coordinate constraints right, only
1034  // add non-zero and non-identity values for Lagrange
1035  // basis functions.
1036  else // (1.e-5 <= their_mag <= .999)
1037  {
1038  // since we may be running this method concurretly
1039  // on multiple threads we need to acquire a lock
1040  // before modifying the shared constraint_row object.
1041  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1042 
1043  // A reference to the constraint row.
1044  NodeConstraintRow& constraint_row = constraints[my_node].first;
1045 
1046  constraint_row.insert(std::make_pair (their_node,
1047  their_value));
1048  }
1049  }
1050  }
1051  }
1052 }
static 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.

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 1063 of file fe_abstract.C.

References libMesh::Elem::active(), libMesh::PeriodicBoundaries::boundary(), libMesh::MeshBase::boundary_info, libMesh::Elem::build_side(), libMesh::Elem::default_order(), libMesh::Elem::dim(), libMesh::FEAbstract::fe_type, libMesh::PeriodicBoundaryBase::get_corresponding_pos(), libMesh::invalid_uint, libMesh::FEInterface::inverse_map(), libMeshEnums::LAGRANGE, libMesh::Elem::level(), libMesh::libmesh_assert(), libMesh::FEInterface::n_dofs(), libMesh::Elem::n_sides(), libMesh::PeriodicBoundaries::neighbor(), libMesh::Elem::neighbor(), libMesh::PeriodicBoundaryBase::pairedboundary, libMesh::Real, libMesh::FEInterface::shape(), and libMesh::Threads::spin_mtx.

1068 {
1069  // Only bother if we truly have periodic boundaries
1070  if (boundaries.empty())
1071  return;
1072 
1073  libmesh_assert(elem);
1074 
1075  // Only constrain active elements with this method
1076  if (!elem->active())
1077  return;
1078 
1079  const unsigned int Dim = elem->dim();
1080 
1081  // We currently always use LAGRANGE mappings for geometry
1082  const FEType fe_type(elem->default_order(), LAGRANGE);
1083 
1084  std::vector<const Node*> my_nodes, neigh_nodes;
1085 
1086  // Look at the element faces. Check to see if we need to
1087  // build constraints.
1088  for (unsigned int s=0; s<elem->n_sides(); s++)
1089  {
1090  if (elem->neighbor(s))
1091  continue;
1092 
1093  const std::vector<boundary_id_type>& bc_ids = mesh.boundary_info->boundary_ids (elem, s);
1094  for (std::vector<boundary_id_type>::const_iterator id_it=bc_ids.begin(); id_it!=bc_ids.end(); ++id_it)
1095  {
1096  const boundary_id_type boundary_id = *id_it;
1097  const PeriodicBoundaryBase *periodic = boundaries.boundary(boundary_id);
1098  if (periodic)
1099  {
1100  libmesh_assert(point_locator);
1101 
1102  // Get pointers to the element's neighbor.
1103  const Elem* neigh = boundaries.neighbor(boundary_id, *point_locator, elem, s);
1104 
1105  // h refinement constraints:
1106  // constrain dofs shared between
1107  // this element and ones as coarse
1108  // as or coarser than this element.
1109  if (neigh->level() <= elem->level())
1110  {
1111  unsigned int s_neigh =
1112  mesh.boundary_info->side_with_boundary_id (neigh, periodic->pairedboundary);
1113  libmesh_assert_not_equal_to (s_neigh, libMesh::invalid_uint);
1114 
1115 #ifdef LIBMESH_ENABLE_AMR
1116  libmesh_assert(neigh->active());
1117 #endif // #ifdef LIBMESH_ENABLE_AMR
1118 
1119  const AutoPtr<Elem> my_side (elem->build_side(s));
1120  const AutoPtr<Elem> neigh_side (neigh->build_side(s_neigh));
1121 
1122  const unsigned int n_side_nodes = my_side->n_nodes();
1123 
1124  my_nodes.clear();
1125  my_nodes.reserve (n_side_nodes);
1126  neigh_nodes.clear();
1127  neigh_nodes.reserve (n_side_nodes);
1128 
1129  for (unsigned int n=0; n != n_side_nodes; ++n)
1130  my_nodes.push_back(my_side->get_node(n));
1131 
1132  for (unsigned int n=0; n != n_side_nodes; ++n)
1133  neigh_nodes.push_back(neigh_side->get_node(n));
1134 
1135  // Make sure we're not adding recursive constraints
1136  // due to the redundancy in the way we add periodic
1137  // boundary constraints, or adding constraints to
1138  // nodes that already have AMR constraints
1139  std::vector<bool> skip_constraint(n_side_nodes, false);
1140 
1141  for (unsigned int my_side_n=0;
1142  my_side_n < n_side_nodes;
1143  my_side_n++)
1144  {
1145  libmesh_assert_less (my_side_n, FEInterface::n_dofs(Dim-1, fe_type, my_side->type()));
1146 
1147  const Node* my_node = my_nodes[my_side_n];
1148 
1149  // Figure out where my node lies on their reference element.
1150  const Point neigh_point = periodic->get_corresponding_pos(*my_node);
1151 
1152  const Point mapped_point = FEInterface::inverse_map(Dim-1, fe_type,
1153  neigh_side.get(),
1154  neigh_point);
1155 
1156  // If we've already got a constraint on this
1157  // node, then the periodic constraint is
1158  // redundant
1159  {
1160  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1161 
1162  if (constraints.count(my_node))
1163  {
1164  skip_constraint[my_side_n] = true;
1165  continue;
1166  }
1167  }
1168 
1169  // Compute the neighbors's side shape function values.
1170  for (unsigned int their_side_n=0;
1171  their_side_n < n_side_nodes;
1172  their_side_n++)
1173  {
1174  libmesh_assert_less (their_side_n, FEInterface::n_dofs(Dim-1, fe_type, neigh_side->type()));
1175 
1176  const Node* their_node = neigh_nodes[their_side_n];
1177 
1178  // If there's a constraint on an opposing node,
1179  // we need to see if it's constrained by
1180  // *our side* making any periodic constraint
1181  // on us recursive
1182  {
1183  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1184 
1185  if (!constraints.count(their_node))
1186  continue;
1187 
1188  const NodeConstraintRow& their_constraint_row =
1189  constraints[their_node].first;
1190 
1191  for (unsigned int orig_side_n=0;
1192  orig_side_n < n_side_nodes;
1193  orig_side_n++)
1194  {
1195  libmesh_assert_less (orig_side_n, FEInterface::n_dofs(Dim-1, fe_type, my_side->type()));
1196 
1197  const Node* orig_node = my_nodes[orig_side_n];
1198 
1199  if (their_constraint_row.count(orig_node))
1200  skip_constraint[orig_side_n] = true;
1201  }
1202  }
1203  }
1204  }
1205  for (unsigned int my_side_n=0;
1206  my_side_n < n_side_nodes;
1207  my_side_n++)
1208  {
1209  libmesh_assert_less (my_side_n, FEInterface::n_dofs(Dim-1, fe_type, my_side->type()));
1210 
1211  if (skip_constraint[my_side_n])
1212  continue;
1213 
1214  const Node* my_node = my_nodes[my_side_n];
1215 
1216  // Figure out where my node lies on their reference element.
1217  const Point neigh_point = periodic->get_corresponding_pos(*my_node);
1218 
1219  // Figure out where my node lies on their reference element.
1220  const Point mapped_point = FEInterface::inverse_map(Dim-1, fe_type,
1221  neigh_side.get(),
1222  neigh_point);
1223 
1224  for (unsigned int their_side_n=0;
1225  their_side_n < n_side_nodes;
1226  their_side_n++)
1227  {
1228  libmesh_assert_less (their_side_n, FEInterface::n_dofs(Dim-1, fe_type, neigh_side->type()));
1229 
1230  const Node* their_node = neigh_nodes[their_side_n];
1231  libmesh_assert(their_node);
1232 
1233  const Real their_value = FEInterface::shape(Dim-1,
1234  fe_type,
1235  neigh_side->type(),
1236  their_side_n,
1237  mapped_point);
1238 
1239  // since we may be running this method concurretly
1240  // on multiple threads we need to acquire a lock
1241  // before modifying the shared constraint_row object.
1242  {
1243  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1244 
1245  NodeConstraintRow& constraint_row =
1246  constraints[my_node].first;
1247 
1248  constraint_row.insert(std::make_pair(their_node,
1249  their_value));
1250  }
1251  }
1252  }
1253  }
1254  }
1255  }
1256  }
1257 }
static 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.

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

After having updated the jacobian and the transformation from local to global coordinates in FEAbstract::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 >.

void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

Definition at line 106 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

107 {
108  _enable_print_counter = false;
109  return;
110 }
template<unsigned int Dim, FEFamily T>
void libMesh::FE< Dim, T >::dofs_on_edge ( const Elem *const  elem,
const Order  o,
unsigned int  e,
std::vector< unsigned int > &  di 
)
static

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 89 of file fe.C.

References libMesh::Elem::is_node_on_edge(), libMesh::libmesh_assert(), libMesh::Elem::n_edges(), n_nodes, libMesh::Elem::n_nodes(), libMesh::Elem::p_level(), and libMesh::Elem::type().

93 {
94  libmesh_assert(elem);
95  libmesh_assert_less (e, elem->n_edges());
96 
97  di.clear();
98  unsigned int nodenum = 0;
99  const unsigned int n_nodes = elem->n_nodes();
100  for (unsigned int n = 0; n != n_nodes; ++n)
101  {
102  const unsigned int n_dofs = n_dofs_at_node(elem->type(),
103  static_cast<Order>(o + elem->p_level()), n);
104  if (elem->is_node_on_edge(n, e))
105  for (unsigned int i = 0; i != n_dofs; ++i)
106  di.push_back(nodenum++);
107  else
108  nodenum += n_dofs;
109  }
110 }
template<unsigned int Dim, FEFamily T>
void libMesh::FE< Dim, T >::dofs_on_side ( const Elem *const  elem,
const Order  o,
unsigned int  s,
std::vector< unsigned int > &  di 
)
static

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 63 of file fe.C.

References libMesh::Elem::is_node_on_side(), libMesh::libmesh_assert(), n_nodes, libMesh::Elem::n_nodes(), libMesh::Elem::n_sides(), libMesh::Elem::p_level(), and libMesh::Elem::type().

67 {
68  libmesh_assert(elem);
69  libmesh_assert_less (s, elem->n_sides());
70 
71  di.clear();
72  unsigned int nodenum = 0;
73  const unsigned int n_nodes = elem->n_nodes();
74  for (unsigned int n = 0; n != n_nodes; ++n)
75  {
76  const unsigned int n_dofs = n_dofs_at_node(elem->type(),
77  static_cast<Order>(o + elem->p_level()), n);
78  if (elem->is_node_on_side(n, s))
79  for (unsigned int i = 0; i != n_dofs; ++i)
80  di.push_back(nodenum++);
81  else
82  nodenum += n_dofs;
83  }
84 }
template<unsigned int Dim, FEFamily T>
void libMesh::FE< Dim, T >::edge_reinit ( const Elem elem,
const unsigned int  edge,
const Real  tolerance = TOLERANCE,
const std::vector< Point > *const  pts = NULL,
const std::vector< Real > *const  weights = NULL 
)
virtual

Reinitializes all the physical element-dependent data based on the edge. The tolerance paremeter 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 250 of file fe_boundary.C.

References libMesh::Elem::build_edge(), libMesh::libmesh_assert(), libMesh::Elem::p_level(), and libMesh::Elem::type().

255 {
256  libmesh_assert(elem);
257  libmesh_assert (this->qrule != NULL || pts != NULL);
258  // We don't do this for 1D elements!
259  libmesh_assert_not_equal_to (Dim, 1);
260 
261  // Build the side of interest
262  const AutoPtr<Elem> edge(elem->build_edge(e));
263 
264  // Initialize the shape functions at the user-specified
265  // points
266  if (pts != NULL)
267  {
268  // The shape functions do not correspond to the qrule
269  this->shapes_on_quadrature = false;
270 
271  // Initialize the edge shape functions
272  this->_fe_map->template init_edge_shape_functions<Dim> (*pts, edge.get());
273 
274  // Compute the Jacobian*Weight on the face for integration
275  if (weights != NULL)
276  {
277  this->_fe_map->compute_edge_map (Dim, *weights, edge.get());
278  }
279  else
280  {
281  std::vector<Real> dummy_weights (pts->size(), 1.);
282  this->_fe_map->compute_edge_map (Dim, dummy_weights, edge.get());
283  }
284  }
285  // If there are no user specified points, we use the
286  // quadrature rule
287  else
288  {
289  // initialize quadrature rule
290  this->qrule->init(edge->type(), elem->p_level());
291 
292  if(this->qrule->shapes_need_reinit())
293  this->shapes_on_quadrature = false;
294 
295  // We might not need to reinitialize the shape functions
296  if ((this->get_type() != elem->type()) ||
297  (edge->type() != static_cast<int>(last_edge)) || // Comparison between enum and unsigned, cast the unsigned to int
298  this->shapes_need_reinit() ||
299  !this->shapes_on_quadrature)
300  {
301  // Set the element type
302  this->elem_type = elem->type();
303 
304  // Set the last_edge
305  last_edge = edge->type();
306 
307  // Initialize the edge shape functions
308  this->_fe_map->template init_edge_shape_functions<Dim> (this->qrule->get_points(), edge.get());
309  }
310 
311  // Compute the Jacobian*Weight on the face for integration
312  this->_fe_map->compute_edge_map (Dim, this->qrule->get_weights(), edge.get());
313 
314  // The shape functions correspond to the qrule
315  this->shapes_on_quadrature = true;
316  }
317 
318  // make a copy of the Jacobian for integration
319  const std::vector<Real> JxW_int(this->_fe_map->get_JxW());
320 
321  // Find where the integration points are located on the
322  // full element.
323  std::vector<Point> qp;
324  this->inverse_map (elem, this->_fe_map->get_xyz(), qp, tolerance);
325 
326  // compute the shape function and derivative values
327  // at the points qp
328  this->reinit (elem, &qp);
329 
330  // copy back old data
331  this->_fe_map->get_JxW() = JxW_int;
332 }
void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

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

Definition at line 100 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

101 {
102  _enable_print_counter = true;
103  return;
104 }
template<>
FEContinuity libMesh::FE< 0, SCALAR >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 107 of file fe_scalar.C.

References libMeshEnums::DISCONTINUOUS.

107 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 1, SCALAR >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 108 of file fe_scalar.C.

References libMeshEnums::DISCONTINUOUS.

108 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 2, SCALAR >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 109 of file fe_scalar.C.

References libMeshEnums::DISCONTINUOUS.

109 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 3, SCALAR >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 110 of file fe_scalar.C.

References libMeshEnums::DISCONTINUOUS.

110 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 0, L2_HIERARCHIC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 188 of file fe_l2_hierarchic.C.

References libMeshEnums::DISCONTINUOUS.

188 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 1, L2_HIERARCHIC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 189 of file fe_l2_hierarchic.C.

References libMeshEnums::DISCONTINUOUS.

189 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 2, L2_HIERARCHIC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 190 of file fe_l2_hierarchic.C.

References libMeshEnums::DISCONTINUOUS.

190 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 3, L2_HIERARCHIC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 191 of file fe_l2_hierarchic.C.

References libMeshEnums::DISCONTINUOUS.

191 { return DISCONTINUOUS; }
template<unsigned int Dim, FEFamily T>
virtual FEContinuity libMesh::FE< Dim, T >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

template<>
FEContinuity libMesh::FE< 0, CLOUGH >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 338 of file fe_clough.C.

References libMeshEnums::C_ONE.

338 { return C_ONE; }
template<>
FEContinuity libMesh::FE< 1, CLOUGH >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 339 of file fe_clough.C.

References libMeshEnums::C_ONE.

339 { return C_ONE; }
template<>
FEContinuity libMesh::FE< 2, CLOUGH >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 340 of file fe_clough.C.

References libMeshEnums::C_ONE.

340 { return C_ONE; }
template<>
FEContinuity libMesh::FE< 3, CLOUGH >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 341 of file fe_clough.C.

References libMeshEnums::C_ONE.

341 { return C_ONE; }
template<>
FEContinuity libMesh::FE< 0, HERMITE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 346 of file fe_hermite.C.

References libMeshEnums::C_ONE.

346 { return C_ONE; }
template<>
FEContinuity libMesh::FE< 1, HERMITE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 347 of file fe_hermite.C.

References libMeshEnums::C_ONE.

347 { return C_ONE; }
template<>
FEContinuity libMesh::FE< 2, HERMITE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 348 of file fe_hermite.C.

References libMeshEnums::C_ONE.

348 { return C_ONE; }
template<>
FEContinuity libMesh::FE< 3, HERMITE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 349 of file fe_hermite.C.

References libMeshEnums::C_ONE.

349 { return C_ONE; }
template<>
FEContinuity libMesh::FE< 0, HIERARCHIC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 359 of file fe_hierarchic.C.

References libMeshEnums::C_ZERO.

359 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 1, HIERARCHIC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 360 of file fe_hierarchic.C.

References libMeshEnums::C_ZERO.

360 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 2, HIERARCHIC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 361 of file fe_hierarchic.C.

References libMeshEnums::C_ZERO.

361 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 3, HIERARCHIC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 362 of file fe_hierarchic.C.

References libMeshEnums::C_ZERO.

362 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 0, MONOMIAL >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 405 of file fe_monomial.C.

References libMeshEnums::DISCONTINUOUS.

405 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 1, MONOMIAL >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 406 of file fe_monomial.C.

References libMeshEnums::DISCONTINUOUS.

406 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 2, MONOMIAL >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 407 of file fe_monomial.C.

References libMeshEnums::DISCONTINUOUS.

407 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 3, MONOMIAL >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 408 of file fe_monomial.C.

References libMeshEnums::DISCONTINUOUS.

408 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 0, BERNSTEIN >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 423 of file fe_bernstein.C.

References libMeshEnums::C_ZERO.

423 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 1, BERNSTEIN >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 424 of file fe_bernstein.C.

References libMeshEnums::C_ZERO.

424 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 2, BERNSTEIN >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 425 of file fe_bernstein.C.

References libMeshEnums::C_ZERO.

425 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 3, BERNSTEIN >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 426 of file fe_bernstein.C.

References libMeshEnums::C_ZERO.

426 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 0, L2_LAGRANGE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 483 of file fe_l2_lagrange.C.

References libMeshEnums::DISCONTINUOUS.

483 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 1, L2_LAGRANGE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 484 of file fe_l2_lagrange.C.

References libMeshEnums::DISCONTINUOUS.

484 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 2, L2_LAGRANGE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 485 of file fe_l2_lagrange.C.

References libMeshEnums::DISCONTINUOUS.

485 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 3, L2_LAGRANGE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 486 of file fe_l2_lagrange.C.

References libMeshEnums::DISCONTINUOUS.

486 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 0, NEDELEC_ONE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 565 of file fe_nedelec_one.C.

565 { NEDELEC_LOW_D_ERROR_MESSAGE }
template<>
FEContinuity libMesh::FE< 1, NEDELEC_ONE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 566 of file fe_nedelec_one.C.

566 { NEDELEC_LOW_D_ERROR_MESSAGE }
template<>
FEContinuity libMesh::FE< 2, NEDELEC_ONE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 567 of file fe_nedelec_one.C.

References libMeshEnums::H_CURL.

567 { return H_CURL; }
template<>
FEContinuity libMesh::FE< 3, NEDELEC_ONE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 568 of file fe_nedelec_one.C.

References libMeshEnums::H_CURL.

568 { return H_CURL; }
template<>
FEContinuity libMesh::FE< 0, LAGRANGE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 867 of file fe_lagrange.C.

References libMeshEnums::C_ZERO.

867 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 1, LAGRANGE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 868 of file fe_lagrange.C.

References libMeshEnums::C_ZERO.

868 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 2, LAGRANGE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 869 of file fe_lagrange.C.

References libMeshEnums::C_ZERO.

869 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 3, LAGRANGE >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 870 of file fe_lagrange.C.

References libMeshEnums::C_ZERO.

870 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 0, LAGRANGE_VEC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 927 of file fe_lagrange_vec.C.

References libMeshEnums::C_ZERO.

927 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 1, LAGRANGE_VEC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 928 of file fe_lagrange_vec.C.

References libMeshEnums::C_ZERO.

928 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 2, LAGRANGE_VEC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 929 of file fe_lagrange_vec.C.

References libMeshEnums::C_ZERO.

929 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 3, LAGRANGE_VEC >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 930 of file fe_lagrange_vec.C.

References libMeshEnums::C_ZERO.

930 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 0, XYZ >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 933 of file fe_xyz.C.

References libMeshEnums::DISCONTINUOUS.

933 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 1, XYZ >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 934 of file fe_xyz.C.

References libMeshEnums::DISCONTINUOUS.

934 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 2, XYZ >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 935 of file fe_xyz.C.

References libMeshEnums::DISCONTINUOUS.

935 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 3, XYZ >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 936 of file fe_xyz.C.

References libMeshEnums::DISCONTINUOUS.

936 { return DISCONTINUOUS; }
template<>
FEContinuity libMesh::FE< 0, SZABAB >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1258 of file fe_szabab.C.

References libMeshEnums::C_ZERO.

1258 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 1, SZABAB >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1259 of file fe_szabab.C.

References libMeshEnums::C_ZERO.

1259 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 2, SZABAB >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1260 of file fe_szabab.C.

References libMeshEnums::C_ZERO.

1260 { return C_ZERO; }
template<>
FEContinuity libMesh::FE< 3, SZABAB >::get_continuity ( ) const
virtual
Returns
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 1261 of file fe_szabab.C.

References libMeshEnums::C_ZERO.

1261 { return C_ZERO; }
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 238 of file fe_base.h.

References libMesh::FEAbstract::calculate_curl_phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::curl_phi, and libMesh::libmesh_assert().

239  { libmesh_assert(!calculations_started || calculate_curl_phi);
240  calculate_curl_phi = calculate_dphiref = true; return curl_phi; }
const std::vector<Real>& libMesh::FEAbstract::get_curvatures ( ) const
inlineinherited
Returns
the curvatures for use in face integration.

Definition at line 380 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

381  { return this->_fe_map->get_curvatures();}
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 304 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phi, and libMesh::libmesh_assert().

305  { libmesh_assert(!calculations_started || calculate_d2phi);
306  calculate_d2phi = calculate_dphiref = true; return d2phi; }
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 384 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phideta2, and libMesh::libmesh_assert().

385  { libmesh_assert(!calculations_started || calculate_d2phi);
386  calculate_d2phi = calculate_dphiref = true; return d2phideta2; }
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 392 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidetadzeta, and libMesh::libmesh_assert().

393  { libmesh_assert(!calculations_started || calculate_d2phi);
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 312 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidx2, and libMesh::libmesh_assert().

313  { libmesh_assert(!calculations_started || calculate_d2phi);
314  calculate_d2phi = calculate_dphiref = true; return d2phidx2; }
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 320 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidxdy, and libMesh::libmesh_assert().

321  { libmesh_assert(!calculations_started || calculate_d2phi);
322  calculate_d2phi = calculate_dphiref = true; return d2phidxdy; }
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 328 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidxdz, and libMesh::libmesh_assert().

329  { libmesh_assert(!calculations_started || calculate_d2phi);
330  calculate_d2phi = calculate_dphiref = true; return d2phidxdz; }
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 360 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidxi2, and libMesh::libmesh_assert().

361  { libmesh_assert(!calculations_started || calculate_d2phi);
362  calculate_d2phi = calculate_dphiref = true; return d2phidxi2; }
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 368 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidxideta, and libMesh::libmesh_assert().

369  { libmesh_assert(!calculations_started || calculate_d2phi);
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 376 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidxidzeta, and libMesh::libmesh_assert().

377  { libmesh_assert(!calculations_started || calculate_d2phi);
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 336 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidy2, and libMesh::libmesh_assert().

337  { libmesh_assert(!calculations_started || calculate_d2phi);
338  calculate_d2phi = calculate_dphiref = true; return d2phidy2; }
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 344 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidydz, and libMesh::libmesh_assert().

345  { libmesh_assert(!calculations_started || calculate_d2phi);
346  calculate_d2phi = calculate_dphiref = true; return d2phidydz; }
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 352 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidz2, and libMesh::libmesh_assert().

353  { libmesh_assert(!calculations_started || calculate_d2phi);
354  calculate_d2phi = calculate_dphiref = true; return d2phidz2; }
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 400 of file fe_base.h.

References libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::d2phidzeta2, and libMesh::libmesh_assert().

401  { libmesh_assert(!calculations_started || calculate_d2phi);
402  calculate_d2phi = calculate_dphiref = true; return d2phidzeta2; }
const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdeta2 ( ) const
inlineinherited
Returns
the second partial derivatives in eta.

Definition at line 267 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

268  { return this->_fe_map->get_d2xyzdeta2(); }
const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdetadzeta ( ) const
inlineinherited
Returns
the second partial derivatives in eta-zeta.

Definition at line 297 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

298  { return this->_fe_map->get_d2xyzdetadzeta(); }
const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdxi2 ( ) const
inlineinherited
Returns
the second partial derivatives in xi.

Definition at line 261 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

262  { return this->_fe_map->get_d2xyzdxi2(); }
const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdxideta ( ) const
inlineinherited
Returns
the second partial derivatives in xi-eta.

Definition at line 283 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

284  { return this->_fe_map->get_d2xyzdxideta(); }
const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdxidzeta ( ) const
inlineinherited
Returns
the second partial derivatives in xi-zeta.

Definition at line 291 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

292  { return this->_fe_map->get_d2xyzdxidzeta(); }
const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdzeta2 ( ) const
inlineinherited
Returns
the second partial derivatives in zeta.

Definition at line 275 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

276  { return this->_fe_map->get_d2xyzdzeta2(); }
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 327 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

328  { return this->_fe_map->get_detadx(); }
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 334 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

335  { return this->_fe_map->get_detady(); }
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 341 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

342  { return this->_fe_map->get_detadz(); }
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 246 of file fe_base.h.

References libMesh::FEAbstract::calculate_div_phi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::div_phi, and libMesh::libmesh_assert().

247  { libmesh_assert(!calculations_started || calculate_div_phi);
248  calculate_div_phi = calculate_dphiref = true; return div_phi; }
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 returns correct element matrices for a mesh using both finite and infinite elements.

Definition at line 418 of file fe_base.h.

References libMesh::FEGenericBase< T >::dphase.

419  { return dphase; }
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.

References libMesh::FEAbstract::calculate_dphi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::dphi, and libMesh::libmesh_assert().

231  { libmesh_assert(!calculations_started || calculate_dphi);
232  calculate_dphi = calculate_dphiref = true; return dphi; }
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 286 of file fe_base.h.

References libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::dphideta, and libMesh::libmesh_assert().

287  { libmesh_assert(!calculations_started || calculate_dphiref);
288  calculate_dphiref = true; return dphideta; }
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 254 of file fe_base.h.

References libMesh::FEAbstract::calculate_dphi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::dphidx, and libMesh::libmesh_assert().

255  { libmesh_assert(!calculations_started || calculate_dphi);
256  calculate_dphi = calculate_dphiref = true; return dphidx; }
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 278 of file fe_base.h.

References libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::dphidxi, and libMesh::libmesh_assert().

279  { libmesh_assert(!calculations_started || calculate_dphiref);
280  calculate_dphiref = true; return dphidxi; }
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 262 of file fe_base.h.

References libMesh::FEAbstract::calculate_dphi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::dphidy, and libMesh::libmesh_assert().

263  { libmesh_assert(!calculations_started || calculate_dphi);
264  calculate_dphi = calculate_dphiref = true; return dphidy; }
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 270 of file fe_base.h.

References libMesh::FEAbstract::calculate_dphi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::dphidz, and libMesh::libmesh_assert().

271  { libmesh_assert(!calculations_started || calculate_dphi);
272  calculate_dphi = calculate_dphiref = true; return dphidz; }
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 294 of file fe_base.h.

References libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< T >::dphidzeta, and libMesh::libmesh_assert().

295  { libmesh_assert(!calculations_started || calculate_dphiref);
296  calculate_dphiref = true; return dphidzeta; }
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 306 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

307  { return this->_fe_map->get_dxidx(); }
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 313 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

314  { return this->_fe_map->get_dxidy(); }
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 320 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

321  { return this->_fe_map->get_dxidz(); }
const std::vector<RealGradient>& libMesh::FEAbstract::get_dxyzdeta ( ) const
inlineinherited
Returns
the element tangents in eta-direction at the quadrature points.

Definition at line 248 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

249  { return this->_fe_map->get_dxyzdeta(); }
const std::vector<RealGradient>& libMesh::FEAbstract::get_dxyzdxi ( ) const
inlineinherited
Returns
the element tangents in xi-direction at the quadrature points.

Definition at line 241 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

242  { return this->_fe_map->get_dxyzdxi(); }
const std::vector<RealGradient>& libMesh::FEAbstract::get_dxyzdzeta ( ) const
inlineinherited
Returns
the element tangents in zeta-direction at the quadrature points.

Definition at line 255 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

256  { return _fe_map->get_dxyzdzeta(); }
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 348 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

349  { return this->_fe_map->get_dzetadx(); }
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 355 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

356  { return this->_fe_map->get_dzetady(); }
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 362 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

363  { return this->_fe_map->get_dzetadz(); }
FEFamily libMesh::FEAbstract::get_family ( ) const
inlineinherited
Returns
the finite element family of this element.

Definition at line 439 of file fe_abstract.h.

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

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

439 { return fe_type.family; }
FEType libMesh::FEAbstract::get_fe_type ( ) const
inlineinherited
Returns
the FE Type (approximation order and family) of the finite element.

Definition at line 418 of file fe_abstract.h.

References libMesh::FEAbstract::fe_type.

Referenced by libMesh::FEMContext::build_new_fe(), libMesh::H1FETransformation< T >::map_phi(), libMesh::HCurlFETransformation< T >::map_phi(), and libMesh::ProjectFEMSolution::operator()().

418 { return fe_type; }
std::string libMesh::ReferenceCounter::get_info ( )
staticinherited

Gets a string containing the reference information.

Definition at line 47 of file reference_counter.C.

References libMesh::ReferenceCounter::_counts, and libMesh::Quality::name().

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

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 (Counts::iterator it = _counts.begin();
59  it != _counts.end(); ++it)
60  {
61  const std::string name(it->first);
62  const unsigned int creations = it->second.first;
63  const unsigned int destructions = it->second.second;
64 
65  oss << "| " << name << " reference count information:\n"
66  << "| Creations: " << creations << '\n'
67  << "| Destructions: " << destructions << '\n';
68  }
69 
70  oss << " ---------------------------------------------------------------------------- \n";
71 
72  return oss.str();
73 
74 #else
75 
76  return "";
77 
78 #endif
79 }
const std::vector<Real>& libMesh::FEAbstract::get_JxW ( ) const
inlineinherited
Returns
the element Jacobian times the quadrature weight for each quadrature point.

Definition at line 234 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

Referenced by libMesh::ExactErrorEstimator::find_squared_element_error(), libMesh::FEMSystem::init_context(), and libMesh::ProjectFEMSolution::operator()().

235  { return this->_fe_map->get_JxW(); }
const std::vector<Point>& libMesh::FEAbstract::get_normals ( ) const
inlineinherited
Returns
the normal vectors for face integration.

Definition at line 374 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

375  { return this->_fe_map->get_normals(); }
Order libMesh::FEAbstract::get_order ( ) const
inlineinherited
Returns
the approximation order of the finite element.

Definition at line 423 of file fe_abstract.h.

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

423 { return static_cast<Order>(fe_type.order + _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 413 of file fe_abstract.h.

References libMesh::FEAbstract::_p_level.

413 { return _p_level; }
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 222 of file fe_base.h.

References libMesh::FEAbstract::calculate_phi, libMesh::FEAbstract::calculations_started, libMesh::libmesh_assert(), and libMesh::FEGenericBase< T >::phi.

223  { libmesh_assert(!calculations_started || calculate_phi);
224  calculate_phi = true; return phi; }
void libMesh::FEAbstract::get_refspace_nodes ( const ElemType  t,
std::vector< Point > &  nodes 
)
staticinherited

returns the reference space nodes coordinates given the element type

Definition at line 415 of file fe_abstract.C.

References libMeshEnums::EDGE2, libMeshEnums::EDGE3, libMesh::err, libMeshEnums::HEX20, libMeshEnums::HEX27, libMeshEnums::HEX8, libMeshEnums::PRISM15, libMeshEnums::PRISM18, libMeshEnums::PRISM6, libMeshEnums::PYRAMID14, libMeshEnums::PYRAMID5, libMeshEnums::QUAD4, libMeshEnums::QUAD8, libMeshEnums::QUAD9, libMeshEnums::TET10, libMeshEnums::TET4, libMeshEnums::TRI3, and libMeshEnums::TRI6.

416 {
417  switch(itemType)
418  {
419  case EDGE2:
420  {
421  nodes.resize(2);
422  nodes[0] = Point (-1.,0.,0.);
423  nodes[1] = Point (1.,0.,0.);
424  return;
425  }
426  case EDGE3:
427  {
428  nodes.resize(3);
429  nodes[0] = Point (-1.,0.,0.);
430  nodes[1] = Point (1.,0.,0.);
431  nodes[2] = Point (0.,0.,0.);
432  return;
433  }
434  case TRI3:
435  {
436  nodes.resize(3);
437  nodes[0] = Point (0.,0.,0.);
438  nodes[1] = Point (1.,0.,0.);
439  nodes[2] = Point (0.,1.,0.);
440  return;
441  }
442  case TRI6:
443  {
444  nodes.resize(6);
445  nodes[0] = Point (0.,0.,0.);
446  nodes[1] = Point (1.,0.,0.);
447  nodes[2] = Point (0.,1.,0.);
448  nodes[3] = Point (.5,0.,0.);
449  nodes[4] = Point (.5,.5,0.);
450  nodes[5] = Point (0.,.5,0.);
451  return;
452  }
453  case QUAD4:
454  {
455  nodes.resize(4);
456  nodes[0] = Point (-1.,-1.,0.);
457  nodes[1] = Point (1.,-1.,0.);
458  nodes[2] = Point (1.,1.,0.);
459  nodes[3] = Point (-1.,1.,0.);
460  return;
461  }
462  case QUAD8:
463  {
464  nodes.resize(8);
465  nodes[0] = Point (-1.,-1.,0.);
466  nodes[1] = Point (1.,-1.,0.);
467  nodes[2] = Point (1.,1.,0.);
468  nodes[3] = Point (-1.,1.,0.);
469  nodes[4] = Point (0.,-1.,0.);
470  nodes[5] = Point (1.,0.,0.);
471  nodes[6] = Point (0.,1.,0.);
472  nodes[7] = Point (-1.,0.,0.);
473  return;
474  }
475  case QUAD9:
476  {
477  nodes.resize(9);
478  nodes[0] = Point (-1.,-1.,0.);
479  nodes[1] = Point (1.,-1.,0.);
480  nodes[2] = Point (1.,1.,0.);
481  nodes[3] = Point (-1.,1.,0.);
482  nodes[4] = Point (0.,-1.,0.);
483  nodes[5] = Point (1.,0.,0.);
484  nodes[6] = Point (0.,1.,0.);
485  nodes[7] = Point (-1.,0.,0.);
486  nodes[8] = Point (0.,0.,0.);
487  return;
488  }
489  case TET4:
490  {
491  nodes.resize(4);
492  nodes[0] = Point (0.,0.,0.);
493  nodes[1] = Point (1.,0.,0.);
494  nodes[2] = Point (0.,1.,0.);
495  nodes[3] = Point (0.,0.,1.);
496  return;
497  }
498  case TET10:
499  {
500  nodes.resize(10);
501  nodes[0] = Point (0.,0.,0.);
502  nodes[1] = Point (1.,0.,0.);
503  nodes[2] = Point (0.,1.,0.);
504  nodes[3] = Point (0.,0.,1.);
505  nodes[4] = Point (.5,0.,0.);
506  nodes[5] = Point (.5,.5,0.);
507  nodes[6] = Point (0.,.5,0.);
508  nodes[7] = Point (0.,0.,.5);
509  nodes[8] = Point (.5,0.,.5);
510  nodes[9] = Point (0.,.5,.5);
511  return;
512  }
513  case HEX8:
514  {
515  nodes.resize(8);
516  nodes[0] = Point (-1.,-1.,-1.);
517  nodes[1] = Point (1.,-1.,-1.);
518  nodes[2] = Point (1.,1.,-1.);
519  nodes[3] = Point (-1.,1.,-1.);
520  nodes[4] = Point (-1.,-1.,1.);
521  nodes[5] = Point (1.,-1.,1.);
522  nodes[6] = Point (1.,1.,1.);
523  nodes[7] = Point (-1.,1.,1.);
524  return;
525  }
526  case HEX20:
527  {
528  nodes.resize(20);
529  nodes[0] = Point (-1.,-1.,-1.);
530  nodes[1] = Point (1.,-1.,-1.);
531  nodes[2] = Point (1.,1.,-1.);
532  nodes[3] = Point (-1.,1.,-1.);
533  nodes[4] = Point (-1.,-1.,1.);
534  nodes[5] = Point (1.,-1.,1.);
535  nodes[6] = Point (1.,1.,1.);
536  nodes[7] = Point (-1.,1.,1.);
537  nodes[8] = Point (0.,-1.,-1.);
538  nodes[9] = Point (1.,0.,-1.);
539  nodes[10] = Point (0.,1.,-1.);
540  nodes[11] = Point (-1.,0.,-1.);
541  nodes[12] = Point (-1.,-1.,0.);
542  nodes[13] = Point (1.,-1.,0.);
543  nodes[14] = Point (1.,1.,0.);
544  nodes[15] = Point (-1.,1.,0.);
545  nodes[16] = Point (0.,-1.,1.);
546  nodes[17] = Point (1.,0.,1.);
547  nodes[18] = Point (0.,1.,1.);
548  nodes[19] = Point (-1.,0.,1.);
549  return;
550  }
551  case HEX27:
552  {
553  nodes.resize(27);
554  nodes[0] = Point (-1.,-1.,-1.);
555  nodes[1] = Point (1.,-1.,-1.);
556  nodes[2] = Point (1.,1.,-1.);
557  nodes[3] = Point (-1.,1.,-1.);
558  nodes[4] = Point (-1.,-1.,1.);
559  nodes[5] = Point (1.,-1.,1.);
560  nodes[6] = Point (1.,1.,1.);
561  nodes[7] = Point (-1.,1.,1.);
562  nodes[8] = Point (0.,-1.,-1.);
563  nodes[9] = Point (1.,0.,-1.);
564  nodes[10] = Point (0.,1.,-1.);
565  nodes[11] = Point (-1.,0.,-1.);
566  nodes[12] = Point (-1.,-1.,0.);
567  nodes[13] = Point (1.,-1.,0.);
568  nodes[14] = Point (1.,1.,0.);
569  nodes[15] = Point (-1.,1.,0.);
570  nodes[16] = Point (0.,-1.,1.);
571  nodes[17] = Point (1.,0.,1.);
572  nodes[18] = Point (0.,1.,1.);
573  nodes[19] = Point (-1.,0.,1.);
574  nodes[20] = Point (0.,0.,-1.);
575  nodes[21] = Point (0.,-1.,0.);
576  nodes[22] = Point (1.,0.,0.);
577  nodes[23] = Point (0.,1.,0.);
578  nodes[24] = Point (-1.,0.,0.);
579  nodes[25] = Point (0.,0.,1.);
580  nodes[26] = Point (0.,0.,0.);
581  return;
582  }
583  case PRISM6:
584  {
585  nodes.resize(6);
586  nodes[0] = Point (0.,0.,-1.);
587  nodes[1] = Point (1.,0.,-1.);
588  nodes[2] = Point (0.,1.,-1.);
589  nodes[3] = Point (0.,0.,1.);
590  nodes[4] = Point (1.,0.,1.);
591  nodes[5] = Point (0.,1.,1.);
592  return;
593  }
594  case PRISM15:
595  {
596  nodes.resize(15);
597  nodes[0] = Point (0.,0.,-1.);
598  nodes[1] = Point (1.,0.,-1.);
599  nodes[2] = Point (0.,1.,-1.);
600  nodes[3] = Point (0.,0.,1.);
601  nodes[4] = Point (1.,0.,1.);
602  nodes[5] = Point (0.,1.,1.);
603  nodes[6] = Point (.5,0.,-1.);
604  nodes[7] = Point (.5,.5,-1.);
605  nodes[8] = Point (0.,.5,-1.);
606  nodes[9] = Point (0.,0.,0.);
607  nodes[10] = Point (1.,0.,0.);
608  nodes[11] = Point (0.,1.,0.);
609  nodes[12] = Point (.5,0.,1.);
610  nodes[13] = Point (.5,.5,1.);
611  nodes[14] = Point (0.,.5,1.);
612  return;
613  }
614  case PRISM18:
615  {
616  nodes.resize(18);
617  nodes[0] = Point (0.,0.,-1.);
618  nodes[1] = Point (1.,0.,-1.);
619  nodes[2] = Point (0.,1.,-1.);
620  nodes[3] = Point (0.,0.,1.);
621  nodes[4] = Point (1.,0.,1.);
622  nodes[5] = Point (0.,1.,1.);
623  nodes[6] = Point (.5,0.,-1.);
624  nodes[7] = Point (.5,.5,-1.);
625  nodes[8] = Point (0.,.5,-1.);
626  nodes[9] = Point (0.,0.,0.);
627  nodes[10] = Point (1.,0.,0.);
628  nodes[11] = Point (0.,1.,0.);
629  nodes[12] = Point (.5,0.,1.);
630  nodes[13] = Point (.5,.5,1.);
631  nodes[14] = Point (0.,.5,1.);
632  nodes[15] = Point (.5,0.,0.);
633  nodes[16] = Point (.5,.5,0.);
634  nodes[17] = Point (0.,.5,0.);
635  return;
636  }
637  case PYRAMID5:
638  {
639  nodes.resize(5);
640  nodes[0] = Point (-1.,-1.,0.);
641  nodes[1] = Point (1.,-1.,0.);
642  nodes[2] = Point (1.,1.,0.);
643  nodes[3] = Point (-1.,1.,0.);
644  nodes[4] = Point (0.,0.,1.);
645  return;
646  }
647  case PYRAMID14:
648  {
649  nodes.resize(14);
650 
651  // base corners
652  nodes[0] = Point (-1.,-1.,0.);
653  nodes[1] = Point (1.,-1.,0.);
654  nodes[2] = Point (1.,1.,0.);
655  nodes[3] = Point (-1.,1.,0.);
656 
657  // apex
658  nodes[4] = Point (0.,0.,1.);
659 
660  // base midedge
661  nodes[5] = Point (0.,-1.,0.);
662  nodes[6] = Point (1.,0.,0.);
663  nodes[7] = Point (0.,1.,0.);
664  nodes[8] = Point (-1,0.,0.);
665 
666  // lateral midedge
667  nodes[9] = Point (-.5,-.5,.5);
668  nodes[10] = Point (.5,-.5,.5);
669  nodes[11] = Point (.5,.5,.5);
670  nodes[12] = Point (-.5,.5,.5);
671 
672  // base center
673  nodes[13] = Point (0.,0.,0.);
674 
675  return;
676  }
677  default:
678  {
679  libMesh::err << "ERROR: Unknown element type " << itemType << std::endl;
680  libmesh_error();
681  }
682  }
683  return;
684 }
const std::vector<RealGradient>& libMesh::FEGenericBase< FEOutputType< T >::type >::get_Sobolev_dweight ( ) const
inlineinherited
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 442 of file fe_base.h.

References libMesh::FEGenericBase< T >::dweight.

443  { return dweight; }
const std::vector<Real>& libMesh::FEGenericBase< FEOutputType< T >::type >::get_Sobolev_weight ( ) const
inlineinherited
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 returns correct element matrices for a mesh using both finite and infinite elements.

Definition at line 434 of file fe_base.h.

References libMesh::FEGenericBase< T >::weight.

435  { return weight; }
const std::vector<std::vector<Point> >& libMesh::FEAbstract::get_tangents ( ) const
inlineinherited
Returns
the tangent vectors for face integration.

Definition at line 368 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

369  { return this->_fe_map->get_tangents(); }
ElemType libMesh::FEAbstract::get_type ( ) const
inlineinherited
Returns
the element type that the current shape functions have been calculated for. Useful in determining when shape functions must be recomputed.

Definition at line 407 of file fe_abstract.h.

References libMesh::FEAbstract::elem_type.

407 { return elem_type; }
const std::vector<Point>& libMesh::FEAbstract::get_xyz ( ) const
inlineinherited
Returns
the xyz spatial locations of the quadrature points on the element.

Definition at line 227 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

Referenced by libMesh::ExactErrorEstimator::find_squared_element_error(), libMesh::DGFEMContext::neighbor_side_fe_reinit(), and libMesh::ProjectFEMSolution::operator()().

228  { return this->_fe_map->get_xyz(); }
void libMesh::ReferenceCounter::increment_constructor_count ( const std::string &  name)
inlineprotectedinherited

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

Definition at line 163 of file reference_counter.h.

References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.

Referenced by libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().

164 {
165  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
166  std::pair<unsigned int, unsigned int>& p = _counts[name];
167 
168  p.first++;
169 }
void libMesh::ReferenceCounter::increment_destructor_count ( const std::string &  name)
inlineprotectedinherited

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

Definition at line 176 of file reference_counter.h.

References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.

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

177 {
178  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
179  std::pair<unsigned int, unsigned int>& p = _counts[name];
180 
181  p.second++;
182 }
template<unsigned int Dim, FEFamily T>
void libMesh::FE< Dim, T >::init_base_shape_functions ( const std::vector< Point > &  qp,
const Elem e 
)
protectedvirtual

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

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

Definition at line 530 of file fe.C.

References libMesh::Elem::type().

532 {
533  // I don't understand infinite elements well enough to risk
534  // calculating too little. :-( RHS
535  this->calculate_phi = this->calculate_dphi = this->calculate_d2phi = true;
536 
537  this->elem_type = e->type();
538  this->_fe_map->template init_reference_to_physical_map<Dim>(qp, e);
539  init_shape_functions(qp, e);
540 }
template<unsigned int Dim, FEFamily T>
void libMesh::FE< Dim, T >::init_shape_functions ( const std::vector< Point > &  qp,
const Elem e 
)
protectedvirtual

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.

Reimplemented in libMesh::FEXYZ< Dim >.

Definition at line 241 of file fe.C.

References libMesh::FEInterface::field_type(), libMesh::libmesh_assert(), libMesh::FE< Dim, T >::shape_deriv(), libMesh::FE< Dim, T >::shape_second_deriv(), libMesh::START_LOG(), libMesh::STOP_LOG(), libMeshEnums::TYPE_VECTOR, and libMesh::MeshTools::weight().

243 {
244  libmesh_assert(elem);
245  this->calculations_started = true;
246 
247  // If the user forgot to request anything, we'll be safe and
248  // calculate everything:
249 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
250  if (!this->calculate_phi && !this->calculate_dphi && !this->calculate_d2phi
251  && !this->calculate_curl_phi && !this->calculate_div_phi)
252  {
253  this->calculate_phi = this->calculate_dphi = this->calculate_d2phi = this->calculate_dphiref = true;
255  {
256  this->calculate_curl_phi = true;
257  this->calculate_div_phi = true;
258  }
259  }
260 #else
261  if (!this->calculate_phi && !this->calculate_dphi && !this->calculate_curl_phi && !this->calculate_div_phi)
262  {
263  this->calculate_phi = this->calculate_dphi = this->calculate_dphiref = true;
265  {
266  this->calculate_curl_phi = true;
267  this->calculate_div_phi = true;
268  }
269  }
270 #endif // LIBMESH_ENABLE_SECOND_DERIVATIVES
271 
272  // Start logging the shape function initialization
273  START_LOG("init_shape_functions()", "FE");
274 
275 
276  // The number of quadrature points.
277  const unsigned int n_qp = libmesh_cast_int<unsigned int>(qp.size());
278 
279  // Number of shape functions in the finite element approximation
280  // space.
281  const unsigned int n_approx_shape_functions =
282  this->n_shape_functions(this->get_type(),
283  this->get_order());
284 
285  // resize the vectors to hold current data
286  // Phi are the shape functions used for the FE approximation
287  // Phi_map are the shape functions used for the FE mapping
288  if (this->calculate_phi)
289  this->phi.resize (n_approx_shape_functions);
290 
291  if (this->calculate_dphi)
292  {
293  this->dphi.resize (n_approx_shape_functions);
294  this->dphidx.resize (n_approx_shape_functions);
295  this->dphidy.resize (n_approx_shape_functions);
296  this->dphidz.resize (n_approx_shape_functions);
297  }
298 
299  if(this->calculate_dphiref)
300  {
301  if (Dim > 0)
302  this->dphidxi.resize (n_approx_shape_functions);
303 
304  if (Dim > 1)
305  this->dphideta.resize (n_approx_shape_functions);
306 
307  if (Dim > 2)
308  this->dphidzeta.resize (n_approx_shape_functions);
309  }
310 
312  this->curl_phi.resize(n_approx_shape_functions);
313 
315  this->div_phi.resize(n_approx_shape_functions);
316 
317 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
318  if (this->calculate_d2phi)
319  {
320  this->d2phi.resize (n_approx_shape_functions);
321  this->d2phidx2.resize (n_approx_shape_functions);
322  this->d2phidxdy.resize (n_approx_shape_functions);
323  this->d2phidxdz.resize (n_approx_shape_functions);
324  this->d2phidy2.resize (n_approx_shape_functions);
325  this->d2phidydz.resize (n_approx_shape_functions);
326  this->d2phidz2.resize (n_approx_shape_functions);
327 
328  if (Dim > 0)
329  this->d2phidxi2.resize (n_approx_shape_functions);
330 
331  if (Dim > 1)
332  {
333  this->d2phidxideta.resize (n_approx_shape_functions);
334  this->d2phideta2.resize (n_approx_shape_functions);
335  }
336  if (Dim > 2)
337  {
338  this->d2phidxidzeta.resize (n_approx_shape_functions);
339  this->d2phidetadzeta.resize (n_approx_shape_functions);
340  this->d2phidzeta2.resize (n_approx_shape_functions);
341  }
342  }
343 #endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
344 
345  for (unsigned int i=0; i<n_approx_shape_functions; i++)
346  {
347  if (this->calculate_phi)
348  this->phi[i].resize (n_qp);
349  if (this->calculate_dphi)
350  {
351  this->dphi[i].resize (n_qp);
352  this->dphidx[i].resize (n_qp);
353  this->dphidy[i].resize (n_qp);
354  this->dphidz[i].resize (n_qp);
355  }
356 
357  if(this->calculate_dphiref)
358  {
359  if (Dim > 0)
360  this->dphidxi[i].resize(n_qp);
361 
362  if (Dim > 1)
363  this->dphideta[i].resize(n_qp);
364 
365  if (Dim > 2)
366  this->dphidzeta[i].resize(n_qp);
367  }
368 
370  this->curl_phi[i].resize(n_qp);
371 
373  this->div_phi[i].resize(n_qp);
374 
375 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
376  if (this->calculate_d2phi)
377  {
378  this->d2phi[i].resize (n_qp);
379  this->d2phidx2[i].resize (n_qp);
380  this->d2phidxdy[i].resize (n_qp);
381  this->d2phidxdz[i].resize (n_qp);
382  this->d2phidy2[i].resize (n_qp);
383  this->d2phidydz[i].resize (n_qp);
384  this->d2phidz2[i].resize (n_qp);
385  if (Dim > 0)
386  this->d2phidxi2[i].resize (n_qp);
387  if (Dim > 1)
388  {
389  this->d2phidxideta[i].resize (n_qp);
390  this->d2phideta2[i].resize (n_qp);
391  }
392  if (Dim > 2)
393  {
394  this->d2phidxidzeta[i].resize (n_qp);
395  this->d2phidetadzeta[i].resize (n_qp);
396  this->d2phidzeta2[i].resize (n_qp);
397  }
398  }
399 #endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
400  }
401 
402 
403 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
404  //------------------------------------------------------------
405  // Initialize the data fields, which should only be used for infinite
406  // elements, to some sensible values, so that using a FE with the
407  // variational formulation of an InfFE, correct element matrices are
408  // returned
409 
410  {
411  this->weight.resize (n_qp);
412  this->dweight.resize (n_qp);
413  this->dphase.resize (n_qp);
414 
415  for (unsigned int p=0; p<n_qp; p++)
416  {
417  this->weight[p] = 1.;
418  this->dweight[p].zero();
419  this->dphase[p].zero();
420  }
421 
422  }
423 #endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
424 
425  switch (Dim)
426  {
427 
428  //------------------------------------------------------------
429  // 0D
430  case 0:
431  {
432  break;
433  }
434 
435  //------------------------------------------------------------
436  // 1D
437  case 1:
438  {
439  // Compute the value of the approximation shape function i at quadrature point p
440  if (this->calculate_dphiref)
441  for (unsigned int i=0; i<n_approx_shape_functions; i++)
442  for (unsigned int p=0; p<n_qp; p++)
443  this->dphidxi[i][p] = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 0, qp[p]);
444 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
445  if (this->calculate_d2phi)
446  for (unsigned int i=0; i<n_approx_shape_functions; i++)
447  for (unsigned int p=0; p<n_qp; p++)
448  this->d2phidxi2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 0, qp[p]);
449 #endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
450 
451  break;
452  }
453 
454 
455 
456  //------------------------------------------------------------
457  // 2D
458  case 2:
459  {
460  // Compute the value of the approximation shape function i at quadrature point p
461  if (this->calculate_dphiref)
462  for (unsigned int i=0; i<n_approx_shape_functions; i++)
463  for (unsigned int p=0; p<n_qp; p++)
464  {
465  this->dphidxi[i][p] = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 0, qp[p]);
466  this->dphideta[i][p] = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 1, qp[p]);
467  }
468 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
469  if (this->calculate_d2phi)
470  for (unsigned int i=0; i<n_approx_shape_functions; i++)
471  for (unsigned int p=0; p<n_qp; p++)
472  {
473  this->d2phidxi2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 0, qp[p]);
474  this->d2phidxideta[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 1, qp[p]);
475  this->d2phideta2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 2, qp[p]);
476  }
477 #endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
478 
479 
480  break;
481  }
482 
483 
484 
485  //------------------------------------------------------------
486  // 3D
487  case 3:
488  {
489  // Compute the value of the approximation shape function i at quadrature point p
490  if (this->calculate_dphiref)
491  for (unsigned int i=0; i<n_approx_shape_functions; i++)
492  for (unsigned int p=0; p<n_qp; p++)
493  {
494  this->dphidxi[i][p] = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 0, qp[p]);
495  this->dphideta[i][p] = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 1, qp[p]);
496  this->dphidzeta[i][p] = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 2, qp[p]);
497  }
498 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
499  if (this->calculate_d2phi)
500  for (unsigned int i=0; i<n_approx_shape_functions; i++)
501  for (unsigned int p=0; p<n_qp; p++)
502  {
503  this->d2phidxi2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 0, qp[p]);
504  this->d2phidxideta[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 1, qp[p]);
505  this->d2phideta2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 2, qp[p]);
506  this->d2phidxidzeta[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 3, qp[p]);
507  this->d2phidetadzeta[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 4, qp[p]);
508  this->d2phidzeta2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 5, qp[p]);
509  }
510 #endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
511 
512  break;
513  }
514 
515 
516  default:
517  libmesh_error();
518  }
519 
520  // Stop logging the shape function initialization
521  STOP_LOG("init_shape_functions()", "FE");
522 }
template<unsigned int Dim, FEFamily T>
Point libMesh::FE< Dim, T >::inverse_map ( const Elem elem,
const Point p,
const Real  tolerance = TOLERANCE,
const bool  secure = true 
)
static
Returns
the location (on the reference element) of the point p located in physical space. This function requires inverting the (possibly nonlinear) transformation map, so it is not trivial. The optional parameter tolerance defines how close is "good enough." The map inversion iteration computes the sequence $ \{ p_n \} $, and the iteration is terminated when $ \|p - p_n\| < \mbox{\texttt{tolerance}} $

Definition at line 832 of file fe_map.C.

References libMesh::TypeVector< T >::add(), libMesh::err, libMesh::DofObject::id(), libMesh::libmesh_assert(), libMesh::libmesh_assert_greater(), libMesh::FE< Dim, T >::map(), libMesh::FE< Dim, T >::map_eta(), libMesh::FE< Dim, T >::map_xi(), libMesh::FE< Dim, T >::map_zeta(), libMesh::FEAbstract::on_reference_element(), libMesh::Elem::print_info(), libMesh::Real, libMesh::TypeVector< T >::size(), libMesh::START_LOG(), libMesh::STOP_LOG(), and libMesh::Elem::type().

Referenced by libMesh::FEMap::compute_face_map().

836 {
837  libmesh_assert(elem);
838  libmesh_assert_greater_equal (tolerance, 0.);
839 
840 
841  // Start logging the map inversion.
842  START_LOG("inverse_map()", "FE");
843 
844  // How much did the point on the reference
845  // element change by in this Newton step?
846  Real inverse_map_error = 0.;
847 
848  // The point on the reference element. This is
849  // the "initial guess" for Newton's method. The
850  // centroid seems like a good idea, but computing
851  // it is a little more intensive than, say taking
852  // the zero point.
853  //
854  // Convergence should be insensitive of this choice
855  // for "good" elements.
856  Point p; // the zero point. No computation required
857 
858  // The number of iterations in the map inversion process.
859  unsigned int cnt = 0;
860 
861  // The number of iterations after which we give up and declare
862  // divergence
863  const unsigned int max_cnt = 10;
864 
865  // The distance (in master element space) beyond which we give up
866  // and declare divergence. This is no longer used...
867  // Real max_step_length = 4.;
868 
869 
870 
871  // Newton iteration loop.
872  do
873  {
874  // Where our current iterate \p p maps to.
875  const Point physical_guess = FE<Dim,T>::map (elem, p);
876 
877  // How far our current iterate is from the actual point.
878  const Point delta = physical_point - physical_guess;
879 
880  // Increment in current iterate \p p, will be computed.
881  Point dp;
882 
883 
884  // The form of the map and how we invert it depends
885  // on the dimension that we are in.
886  switch (Dim)
887  {
888  // ------------------------------------------------------------------
889  // 0D map inversion is trivial
890  case 0:
891  {
892  break;
893  }
894 
895  // ------------------------------------------------------------------
896  // 1D map inversion
897  //
898  // Here we find the point on a 1D reference element that maps to
899  // the point \p physical_point in the domain. This is a bit tricky
900  // since we do not want to assume that the point \p physical_point
901  // is also in a 1D domain. In particular, this method might get
902  // called on the edge of a 3D element, in which case
903  // \p physical_point actually lives in 3D.
904  case 1:
905  {
906  const Point dxi = FE<Dim,T>::map_xi (elem, p);
907 
908  // Newton's method in this case looks like