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

#include <fe.h>

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

List of all members.

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<>
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 &)
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<>
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<>
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
< FEOutputType< T >::type > > 
_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

class InfFE
std::ostream & operator<< (std::ostream &os, const FEAbstract &fe)

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 [protected, inherited]

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

Convenient typedefs for gradients of output, hessians of output, and potentially-complex-valued versions of same.

Reimplemented from libMesh::FEGenericBase< FEOutputType< T >::type >.

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  )  [inline, explicit]

Constructor.

Definition at line 904 of file fe.h.

References libMesh::FEAbstract::get_family().

00904                                 :
00905   FEGenericBase<typename FEOutputType<T>::type> (Dim,fet),
00906   last_side(INVALID_ELEM),
00907   last_edge(libMesh::invalid_uint)
00908 {
00909   // Sanity check.  Make sure the
00910   // Family specified in the template instantiation
00911   // matches the one in the FEType object
00912   libmesh_assert_equal_to (T, this->get_family());
00913 }


Member Function Documentation

template<unsigned int Dim, FEFamily T>
void libMesh::FE< Dim, T >::attach_quadrature_rule ( QBase q  )  [inline, 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 libMesh::FEAbstract::elem_type, libMeshEnums::INVALID_ELEM, and libMesh::FEAbstract::qrule.

00045 {
00046   libmesh_assert(q);
00047   this->qrule = q;
00048   // make sure we don't cache results from a previous quadrature rule
00049   this->elem_type = INVALID_ELEM;
00050   return;
00051 }

static AutoPtr<FEGenericBase> libMesh::FEGenericBase< FEOutputType< T >::type >::build ( const unsigned int  dim,
const FEType type 
) [static, inherited]

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

Reimplemented from libMesh::FEAbstract.

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

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 
) [static, inherited]

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

template<>
void libMesh::FE< 3, XYZ >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
) [inline]

Definition at line 941 of file fe_xyz.C.

00941 {}

template<>
void libMesh::FE< 2, XYZ >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
) [inline]

Definition at line 940 of file fe_xyz.C.

00940 {}

template<>
void libMesh::FE< 3, SCALAR >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
) [inline]

Definition at line 129 of file fe_scalar.C.

00133   { }

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

Definition at line 122 of file fe_scalar.C.

00126   { }

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

Definition at line 603 of file fe_nedelec_one.C.

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

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

Definition at line 596 of file fe_nedelec_one.C.

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

template<>
void libMesh::FE< 1, NEDELEC_ONE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
) [inline]

Definition at line 589 of file fe_nedelec_one.C.

00593   { NEDELEC_LOW_D_ERROR_MESSAGE }

template<>
void libMesh::FE< 0, NEDELEC_ONE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
) [inline]

Definition at line 582 of file fe_nedelec_one.C.

00586   { NEDELEC_LOW_D_ERROR_MESSAGE }

template<>
void libMesh::FE< 3, MONOMIAL >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
) [inline]

Definition at line 418 of file fe_monomial.C.

00418 {}

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

Definition at line 417 of file fe_monomial.C.

00417 {}

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

Definition at line 958 of file fe_lagrange_vec.C.

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

00962   { //libmesh_not_implemented();
00963     FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem); 
00964   }

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

Definition at line 949 of file fe_lagrange_vec.C.

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

00953   { //libmesh_not_implemented();
00954     FEVectorBase::compute_proj_constraints(constraints, dof_map, variable_number, elem); 
00955   }

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

Definition at line 871 of file fe_lagrange.C.

00875   { lagrange_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 
) [inline]

Definition at line 864 of file fe_lagrange.C.

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

template<>
void libMesh::FE< 3, L2_LAGRANGE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
) [inline]

Definition at line 510 of file fe_l2_lagrange.C.

00514   { }

template<>
void libMesh::FE< 2, L2_LAGRANGE >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
) [inline]

Definition at line 503 of file fe_l2_lagrange.C.

00507   { }

template<>
void libMesh::FE< 3, L2_HIERARCHIC >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
) [inline]

Definition at line 209 of file fe_l2_hierarchic.C.

00213   { }

template<>
void libMesh::FE< 2, L2_HIERARCHIC >::compute_constraints ( DofConstraints ,
DofMap ,
const unsigned  int,
const Elem  
) [inline]

Definition at line 202 of file fe_l2_hierarchic.C.

00206   { }

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

Definition at line 380 of file fe_hierarchic.C.

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

00384   { 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 
) [inline]

Definition at line 373 of file fe_hierarchic.C.

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

00377   { 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 
) [inline]

Definition at line 368 of file fe_hermite.C.

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

00372   { 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 
) [inline]

Definition at line 361 of file fe_hermite.C.

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

00365   { 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 
) [inline]

Definition at line 359 of file fe_clough.C.

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

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

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

Definition at line 352 of file fe_clough.C.

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

00356   { 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.

void libMesh::FEAbstract::compute_node_constraints ( NodeConstraints constraints,
const Elem elem 
) [static, inherited]

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

Definition at line 878 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::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().

00880 {
00881   libmesh_assert(elem);
00882 
00883   const unsigned int Dim = elem->dim();
00884 
00885   // Only constrain elements in 2,3D.
00886   if (Dim == 1)
00887     return;
00888 
00889   // Only constrain active and ancestor elements
00890   if (elem->subactive())
00891     return;
00892 
00893   // We currently always use LAGRANGE mappings for geometry
00894   const FEType fe_type(elem->default_order(), LAGRANGE);
00895 
00896   std::vector<const Node*> my_nodes, parent_nodes;
00897 
00898   // Look at the element faces.  Check to see if we need to
00899   // build constraints.
00900   for (unsigned int s=0; s<elem->n_sides(); s++)
00901     if (elem->neighbor(s) != NULL &&
00902         elem->neighbor(s) != remote_elem)
00903       if (elem->neighbor(s)->level() < elem->level()) // constrain dofs shared between
00904         {                                                     // this element and ones coarser
00905                                                               // than this element.
00906           // Get pointers to the elements of interest and its parent.
00907           const Elem* parent = elem->parent();
00908 
00909           // This can't happen...  Only level-0 elements have NULL
00910           // parents, and no level-0 elements can be at a higher
00911           // level than their neighbors!
00912           libmesh_assert(parent);
00913 
00914           const AutoPtr<Elem> my_side     (elem->build_side(s));
00915           const AutoPtr<Elem> parent_side (parent->build_side(s));
00916 
00917           const unsigned int n_side_nodes = my_side->n_nodes();
00918 
00919           my_nodes.clear();
00920           my_nodes.reserve (n_side_nodes);
00921           parent_nodes.clear();
00922           parent_nodes.reserve (n_side_nodes);
00923 
00924           for (unsigned int n=0; n != n_side_nodes; ++n)
00925             my_nodes.push_back(my_side->get_node(n));
00926 
00927           for (unsigned int n=0; n != n_side_nodes; ++n)
00928             parent_nodes.push_back(parent_side->get_node(n));
00929 
00930           for (unsigned int my_side_n=0;
00931                my_side_n < n_side_nodes;
00932                my_side_n++)
00933             {
00934               libmesh_assert_less (my_side_n, FEInterface::n_dofs(Dim-1, fe_type, my_side->type()));
00935 
00936               const Node* my_node = my_nodes[my_side_n];
00937 
00938               // The support point of the DOF
00939               const Point& support_point = *my_node;
00940 
00941               // Figure out where my node lies on their reference element.
00942               const Point mapped_point = FEInterface::inverse_map(Dim-1, fe_type,
00943                                                                   parent_side.get(),
00944                                                                   support_point);
00945 
00946               // Compute the parent's side shape function values.
00947               for (unsigned int their_side_n=0;
00948                    their_side_n < n_side_nodes;
00949                    their_side_n++)
00950                 {
00951                   libmesh_assert_less (their_side_n, FEInterface::n_dofs(Dim-1, fe_type, parent_side->type()));
00952 
00953                   const Node* their_node = parent_nodes[their_side_n];
00954                   libmesh_assert(their_node);
00955 
00956                   const Real their_value = FEInterface::shape(Dim-1,
00957                                                               fe_type,
00958                                                               parent_side->type(),
00959                                                               their_side_n,
00960                                                               mapped_point);
00961 
00962                   const Real their_mag = std::abs(their_value);
00963 #ifdef DEBUG
00964                   // Protect for the case u_i ~= u_j,
00965                   // in which case i better equal j.
00966                   if (their_mag > 0.999)
00967                     {
00968                       libmesh_assert_equal_to (my_node, their_node);
00969                       libmesh_assert_less (std::abs(their_value - 1.), 0.001);
00970                     }
00971                   else
00972 #endif
00973                   // To make nodal constraints useful for constructing
00974                   // sparsity patterns faster, we need to get EVERY
00975                   // POSSIBLE constraint coupling identified, even if
00976                   // there is no coupling in the isoparametric
00977                   // Lagrange case.
00978                   if (their_mag < 1.e-5)
00979                     {
00980                       // since we may be running this method concurretly
00981                       // on multiple threads we need to acquire a lock
00982                       // before modifying the shared constraint_row object.
00983                       Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
00984 
00985                       // A reference to the constraint row.
00986                       NodeConstraintRow& constraint_row = constraints[my_node].first;
00987 
00988                       constraint_row.insert(std::make_pair (their_node,
00989                                                             0.));
00990                     }
00991                   // To get nodal coordinate constraints right, only
00992                   // add non-zero and non-identity values for Lagrange
00993                   // basis functions.
00994                   else // (1.e-5 <= their_mag <= .999)
00995                     {
00996                       // since we may be running this method concurretly
00997                       // on multiple threads we need to acquire a lock
00998                       // before modifying the shared constraint_row object.
00999                       Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
01000 
01001                       // A reference to the constraint row.
01002                       NodeConstraintRow& constraint_row = constraints[my_node].first;
01003 
01004                       constraint_row.insert(std::make_pair (their_node,
01005                                                             their_value));
01006                     }
01007                 }
01008             }
01009         }
01010 }

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 
) [static, inherited]

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 
) [static, inherited]

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

Definition at line 1021 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::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.

01026 {
01027   // Only bother if we truly have periodic boundaries
01028   if (boundaries.empty())
01029     return;
01030 
01031   libmesh_assert(elem);
01032 
01033   // Only constrain active elements with this method
01034   if (!elem->active())
01035     return;
01036 
01037   const unsigned int Dim = elem->dim();
01038 
01039   // We currently always use LAGRANGE mappings for geometry
01040   const FEType fe_type(elem->default_order(), LAGRANGE);
01041 
01042   std::vector<const Node*> my_nodes, neigh_nodes;
01043 
01044   // Look at the element faces.  Check to see if we need to
01045   // build constraints.
01046   for (unsigned int s=0; s<elem->n_sides(); s++)
01047     {
01048       if (elem->neighbor(s))
01049         continue;
01050 
01051       const std::vector<boundary_id_type>& bc_ids = mesh.boundary_info->boundary_ids (elem, s);
01052       for (std::vector<boundary_id_type>::const_iterator id_it=bc_ids.begin(); id_it!=bc_ids.end(); ++id_it)
01053         {
01054           const boundary_id_type boundary_id = *id_it;
01055           const PeriodicBoundaryBase *periodic = boundaries.boundary(boundary_id);
01056           if (periodic)
01057             {
01058               libmesh_assert(point_locator);
01059 
01060               // Get pointers to the element's neighbor.
01061               const Elem* neigh = boundaries.neighbor(boundary_id, *point_locator, elem, s);
01062 
01063               // h refinement constraints:
01064               // constrain dofs shared between
01065               // this element and ones as coarse
01066               // as or coarser than this element.
01067               if (neigh->level() <= elem->level())
01068                 {
01069                   unsigned int s_neigh =
01070                     mesh.boundary_info->side_with_boundary_id (neigh, periodic->pairedboundary);
01071                   libmesh_assert_not_equal_to (s_neigh, libMesh::invalid_uint);
01072 
01073 #ifdef LIBMESH_ENABLE_AMR
01074                   libmesh_assert(neigh->active());
01075 #endif // #ifdef LIBMESH_ENABLE_AMR
01076 
01077                   const AutoPtr<Elem> my_side    (elem->build_side(s));
01078                   const AutoPtr<Elem> neigh_side (neigh->build_side(s_neigh));
01079 
01080                   const unsigned int n_side_nodes = my_side->n_nodes();
01081 
01082                   my_nodes.clear();
01083                   my_nodes.reserve (n_side_nodes);
01084                   neigh_nodes.clear();
01085                   neigh_nodes.reserve (n_side_nodes);
01086 
01087                   for (unsigned int n=0; n != n_side_nodes; ++n)
01088                     my_nodes.push_back(my_side->get_node(n));
01089 
01090                   for (unsigned int n=0; n != n_side_nodes; ++n)
01091                     neigh_nodes.push_back(neigh_side->get_node(n));
01092 
01093                   // Make sure we're not adding recursive constraints
01094                   // due to the redundancy in the way we add periodic
01095                   // boundary constraints, or adding constraints to
01096                   // nodes that already have AMR constraints
01097                   std::vector<bool> skip_constraint(n_side_nodes, false);
01098 
01099                   for (unsigned int my_side_n=0;
01100                        my_side_n < n_side_nodes;
01101                        my_side_n++)
01102                     {
01103                       libmesh_assert_less (my_side_n, FEInterface::n_dofs(Dim-1, fe_type, my_side->type()));
01104 
01105                       const Node* my_node = my_nodes[my_side_n];
01106 
01107                       // Figure out where my node lies on their reference element.
01108                       const Point neigh_point = periodic->get_corresponding_pos(*my_node);
01109 
01110                       const Point mapped_point = FEInterface::inverse_map(Dim-1, fe_type,
01111                                                                           neigh_side.get(),
01112                                                                           neigh_point);
01113 
01114                       // If we've already got a constraint on this
01115                       // node, then the periodic constraint is
01116                       // redundant
01117                       {
01118                         Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
01119 
01120                         if (constraints.count(my_node))
01121                           {
01122                             skip_constraint[my_side_n] = true;
01123                             continue;
01124                           }
01125                       }
01126 
01127                       // Compute the neighbors's side shape function values.
01128                       for (unsigned int their_side_n=0;
01129                            their_side_n < n_side_nodes;
01130                            their_side_n++)
01131                         {
01132                           libmesh_assert_less (their_side_n, FEInterface::n_dofs(Dim-1, fe_type, neigh_side->type()));
01133 
01134                           const Node* their_node = neigh_nodes[their_side_n];
01135 
01136                           // If there's a constraint on an opposing node,
01137                           // we need to see if it's constrained by
01138                           // *our side* making any periodic constraint
01139                           // on us recursive
01140                           {
01141                             Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
01142 
01143                             if (!constraints.count(their_node))
01144                               continue;
01145 
01146                             const NodeConstraintRow& their_constraint_row =
01147                               constraints[their_node].first;
01148 
01149                             for (unsigned int orig_side_n=0;
01150                                  orig_side_n < n_side_nodes;
01151                                  orig_side_n++)
01152                               {
01153                                 libmesh_assert_less (orig_side_n, FEInterface::n_dofs(Dim-1, fe_type, my_side->type()));
01154 
01155                                 const Node* orig_node = my_nodes[orig_side_n];
01156 
01157                                 if (their_constraint_row.count(orig_node))
01158                                   skip_constraint[orig_side_n] = true;
01159                               }
01160                           }
01161                         }
01162                     }
01163                   for (unsigned int my_side_n=0;
01164                        my_side_n < n_side_nodes;
01165                        my_side_n++)
01166                     {
01167                       libmesh_assert_less (my_side_n, FEInterface::n_dofs(Dim-1, fe_type, my_side->type()));
01168 
01169                       if (skip_constraint[my_side_n])
01170                         continue;
01171 
01172                       const Node* my_node = my_nodes[my_side_n];
01173 
01174                       // Figure out where my node lies on their reference element.
01175                       const Point neigh_point = periodic->get_corresponding_pos(*my_node);
01176 
01177                       // Figure out where my node lies on their reference element.
01178                       const Point mapped_point = FEInterface::inverse_map(Dim-1, fe_type,
01179                                                                           neigh_side.get(),
01180                                                                           neigh_point);
01181 
01182                       for (unsigned int their_side_n=0;
01183                            their_side_n < n_side_nodes;
01184                            their_side_n++)
01185                         {
01186                           libmesh_assert_less (their_side_n, FEInterface::n_dofs(Dim-1, fe_type, neigh_side->type()));
01187 
01188                           const Node* their_node = neigh_nodes[their_side_n];
01189                           libmesh_assert(their_node);
01190 
01191                           const Real their_value = FEInterface::shape(Dim-1,
01192                                                                       fe_type,
01193                                                                       neigh_side->type(),
01194                                                                       their_side_n,
01195                                                                       mapped_point);
01196 
01197                           // since we may be running this method concurretly
01198                           // on multiple threads we need to acquire a lock
01199                           // before modifying the shared constraint_row object.
01200                           {
01201                             Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
01202 
01203                             NodeConstraintRow& constraint_row =
01204                               constraints[my_node].first;
01205 
01206                             constraint_row.insert(std::make_pair(their_node,
01207                                                                  their_value));
01208                           }
01209                         }
01210                     }
01211                 }
01212             }
01213         }
01214     }
01215 }

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

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

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

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

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

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

void libMesh::ReferenceCounter::disable_print_counter_info (  )  [static, inherited]

Definition at line 106 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

00107 {
00108   _enable_print_counter = false;
00109   return;
00110 }

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 
) [inline, 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::FE< Dim, T >::n_dofs(), libMesh::FE< Dim, T >::n_dofs_at_node(), libMesh::Elem::n_edges(), libMesh::Elem::n_nodes(), n_nodes, libMesh::Elem::p_level(), and libMesh::Elem::type().

00093 {
00094   libmesh_assert(elem);
00095   libmesh_assert_less (e, elem->n_edges());
00096 
00097   di.clear();
00098   unsigned int nodenum = 0;
00099   const unsigned int n_nodes = elem->n_nodes();
00100   for (unsigned int n = 0; n != n_nodes; ++n)
00101     {
00102       const unsigned int n_dofs = n_dofs_at_node(elem->type(),
00103                                                  static_cast<Order>(o + elem->p_level()), n);
00104       if (elem->is_node_on_edge(n, e))
00105         for (unsigned int i = 0; i != n_dofs; ++i)
00106           di.push_back(nodenum++);
00107       else
00108         nodenum += n_dofs;
00109     }
00110 }

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 
) [inline, 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::FE< Dim, T >::n_dofs(), libMesh::FE< Dim, T >::n_dofs_at_node(), libMesh::Elem::n_nodes(), n_nodes, libMesh::Elem::n_sides(), libMesh::Elem::p_level(), and libMesh::Elem::type().

00067 {
00068   libmesh_assert(elem);
00069   libmesh_assert_less (s, elem->n_sides());
00070 
00071   di.clear();
00072   unsigned int nodenum = 0;
00073   const unsigned int n_nodes = elem->n_nodes();
00074   for (unsigned int n = 0; n != n_nodes; ++n)
00075     {
00076       const unsigned int n_dofs = n_dofs_at_node(elem->type(),
00077                                                  static_cast<Order>(o + elem->p_level()), n);
00078       if (elem->is_node_on_side(n, s))
00079         for (unsigned int i = 0; i != n_dofs; ++i)
00080           di.push_back(nodenum++);
00081       else
00082         nodenum += n_dofs;
00083     }
00084 }

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 
) [inline, 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 248 of file fe_boundary.C.

References libMesh::FEAbstract::_fe_map, libMesh::Elem::build_edge(), libMesh::FEAbstract::elem_type, libMesh::QBase::get_points(), libMesh::FEAbstract::get_type(), libMesh::QBase::get_weights(), libMesh::QBase::init(), libMesh::FE< Dim, T >::inverse_map(), libMesh::FE< Dim, T >::last_edge, libMesh::Elem::p_level(), libMesh::FEAbstract::qrule, libMesh::FE< Dim, T >::reinit(), libMesh::FE< Dim, T >::shapes_need_reinit(), libMesh::QBase::shapes_need_reinit(), libMesh::FEAbstract::shapes_on_quadrature, and libMesh::Elem::type().

00253 {
00254   libmesh_assert(elem);
00255   libmesh_assert (this->qrule != NULL || pts != NULL);
00256   // We don't do this for 1D elements!
00257   libmesh_assert_not_equal_to (Dim, 1);
00258 
00259   // Build the side of interest
00260   const AutoPtr<Elem> edge(elem->build_edge(e));
00261 
00262   // Initialize the shape functions at the user-specified
00263   // points
00264   if (pts != NULL)
00265     {
00266       // The shape functions do not correspond to the qrule
00267       this->shapes_on_quadrature = false;
00268 
00269       // Initialize the edge shape functions
00270       this->_fe_map->template init_edge_shape_functions<Dim> (*pts, edge.get());
00271 
00272       // Compute the Jacobian*Weight on the face for integration
00273       if (weights != NULL)
00274         {
00275           this->_fe_map->compute_edge_map (Dim, *weights, edge.get());
00276         }
00277       else
00278         {
00279           std::vector<Real> dummy_weights (pts->size(), 1.);
00280           this->_fe_map->compute_edge_map (Dim, dummy_weights, edge.get());
00281         }
00282     }
00283   // If there are no user specified points, we use the
00284   // quadrature rule
00285   else
00286     {
00287       // initialize quadrature rule
00288       this->qrule->init(edge->type(), elem->p_level());
00289 
00290       if(this->qrule->shapes_need_reinit())
00291         this->shapes_on_quadrature = false;
00292 
00293       // We might not need to reinitialize the shape functions
00294       if ((this->get_type() != elem->type())                   ||
00295           (edge->type() != static_cast<int>(last_edge))        || // Comparison between enum and unsigned, cast the unsigned to int
00296           this->shapes_need_reinit()                           ||
00297           !this->shapes_on_quadrature)
00298         {
00299           // Set the element type
00300           this->elem_type = elem->type();
00301 
00302           // Set the last_edge
00303           last_edge = edge->type();
00304 
00305           // Initialize the edge shape functions
00306           this->_fe_map->template init_edge_shape_functions<Dim> (this->qrule->get_points(), edge.get());
00307         }
00308 
00309       // Compute the Jacobian*Weight on the face for integration
00310       this->_fe_map->compute_edge_map (Dim, this->qrule->get_weights(), edge.get());
00311 
00312       // The shape functions correspond to the qrule
00313       this->shapes_on_quadrature = true;
00314     }
00315 
00316   // make a copy of the Jacobian for integration
00317   const std::vector<Real> JxW_int(this->_fe_map->get_JxW());
00318 
00319   // Find where the integration points are located on the
00320   // full element.
00321   std::vector<Point> qp; 
00322   this->inverse_map (elem, this->_fe_map->get_xyz(), qp, tolerance);
00323 
00324   // compute the shape function and derivative values
00325   // at the points qp
00326   this->reinit  (elem, &qp);
00327 
00328   // copy back old data
00329   this->_fe_map->get_JxW() = JxW_int;
00330 }

void libMesh::ReferenceCounter::enable_print_counter_info (  )  [static, inherited]

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.

00101 {
00102   _enable_print_counter = true;
00103   return;
00104 }

template<>
FEContinuity libMesh::FE< 3, XYZ >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 926 of file fe_xyz.C.

References libMeshEnums::DISCONTINUOUS.

00926 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 2, XYZ >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 925 of file fe_xyz.C.

References libMeshEnums::DISCONTINUOUS.

00925 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 1, XYZ >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 924 of file fe_xyz.C.

References libMeshEnums::DISCONTINUOUS.

00924 { return DISCONTINUOUS; }

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

Implements libMesh::FEAbstract.

Definition at line 923 of file fe_xyz.C.

References libMeshEnums::DISCONTINUOUS.

00923 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 3, SZABAB >::get_continuity (  )  const [inline, 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.

01261 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 2, SZABAB >::get_continuity (  )  const [inline, 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.

01260 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 1, SZABAB >::get_continuity (  )  const [inline, 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.

01259 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 0, SZABAB >::get_continuity (  )  const [inline, 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.

01258 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 3, SCALAR >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 110 of file fe_scalar.C.

References libMeshEnums::DISCONTINUOUS.

00110 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 2, SCALAR >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 109 of file fe_scalar.C.

References libMeshEnums::DISCONTINUOUS.

00109 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 1, SCALAR >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 108 of file fe_scalar.C.

References libMeshEnums::DISCONTINUOUS.

00108 { return DISCONTINUOUS; }

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

Implements libMesh::FEAbstract.

Definition at line 107 of file fe_scalar.C.

References libMeshEnums::DISCONTINUOUS.

00107 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 3, NEDELEC_ONE >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 566 of file fe_nedelec_one.C.

References libMeshEnums::H_CURL.

00566 { return H_CURL; }

template<>
FEContinuity libMesh::FE< 2, NEDELEC_ONE >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 565 of file fe_nedelec_one.C.

References libMeshEnums::H_CURL.

00565 { return H_CURL; }

template<>
FEContinuity libMesh::FE< 1, NEDELEC_ONE >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 564 of file fe_nedelec_one.C.

00564 { NEDELEC_LOW_D_ERROR_MESSAGE }

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

Implements libMesh::FEAbstract.

Definition at line 563 of file fe_nedelec_one.C.

00563 { NEDELEC_LOW_D_ERROR_MESSAGE }

template<>
FEContinuity libMesh::FE< 3, MONOMIAL >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 403 of file fe_monomial.C.

References libMeshEnums::DISCONTINUOUS.

00403 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 2, MONOMIAL >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 402 of file fe_monomial.C.

References libMeshEnums::DISCONTINUOUS.

00402 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 1, MONOMIAL >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 401 of file fe_monomial.C.

References libMeshEnums::DISCONTINUOUS.

00401 { return DISCONTINUOUS; }

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

Implements libMesh::FEAbstract.

Definition at line 400 of file fe_monomial.C.

References libMeshEnums::DISCONTINUOUS.

00400 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 3, LAGRANGE_VEC >::get_continuity (  )  const [inline, 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.

00929 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 2, LAGRANGE_VEC >::get_continuity (  )  const [inline, 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.

00928 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 1, LAGRANGE_VEC >::get_continuity (  )  const [inline, 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.

00927 { return C_ZERO; }

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

Implements libMesh::FEAbstract.

Definition at line 926 of file fe_lagrange_vec.C.

References libMeshEnums::C_ZERO.

00926 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 3, LAGRANGE >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 844 of file fe_lagrange.C.

References libMeshEnums::C_ZERO.

00844 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 2, LAGRANGE >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 843 of file fe_lagrange.C.

References libMeshEnums::C_ZERO.

00843 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 1, LAGRANGE >::get_continuity (  )  const [inline, virtual]
Returns:
the continuity level of the finite element.

Implements libMesh::FEAbstract.

Definition at line 842 of file fe_lagrange.C.

References libMeshEnums::C_ZERO.

00842 { return C_ZERO; }

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

Implements libMesh::FEAbstract.

Definition at line 841 of file fe_lagrange.C.

References libMeshEnums::C_ZERO.

00841 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 3, L2_LAGRANGE >::get_continuity (  )  const [inline, 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.

00485 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 2, L2_LAGRANGE >::get_continuity (  )  const [inline, 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.

00484 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 1, L2_LAGRANGE >::get_continuity (  )  const [inline, 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.

00483 { return DISCONTINUOUS; }

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

Implements libMesh::FEAbstract.

Definition at line 482 of file fe_l2_lagrange.C.

References libMeshEnums::DISCONTINUOUS.

00482 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 3, L2_HIERARCHIC >::get_continuity (  )  const [inline, 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.

00191 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 2, L2_HIERARCHIC >::get_continuity (  )  const [inline, 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.

00190 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 1, L2_HIERARCHIC >::get_continuity (  )  const [inline, 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.

00189 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 0, L2_HIERARCHIC >::get_continuity (  )  const [inline, 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.

00188 { return DISCONTINUOUS; }

template<>
FEContinuity libMesh::FE< 3, HIERARCHIC >::get_continuity (  )  const [inline, 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.

00362 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 2, HIERARCHIC >::get_continuity (  )  const [inline, 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.

00361 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 1, HIERARCHIC >::get_continuity (  )  const [inline, 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.

00360 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 0, HIERARCHIC >::get_continuity (  )  const [inline, 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.

00359 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 3, HERMITE >::get_continuity (  )  const [inline, 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.

00349 { return C_ONE; }

template<>
FEContinuity libMesh::FE< 2, HERMITE >::get_continuity (  )  const [inline, 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.

00348 { return C_ONE; }

template<>
FEContinuity libMesh::FE< 1, HERMITE >::get_continuity (  )  const [inline, 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.

00347 { return C_ONE; }

template<>
FEContinuity libMesh::FE< 0, HERMITE >::get_continuity (  )  const [inline, 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.

00346 { return C_ONE; }

template<>
FEContinuity libMesh::FE< 3, CLOUGH >::get_continuity (  )  const [inline, 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.

00341 { return C_ONE; }

template<>
FEContinuity libMesh::FE< 2, CLOUGH >::get_continuity (  )  const [inline, 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.

00340 { return C_ONE; }

template<>
FEContinuity libMesh::FE< 1, CLOUGH >::get_continuity (  )  const [inline, 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.

00339 { return C_ONE; }

template<>
FEContinuity libMesh::FE< 0, CLOUGH >::get_continuity (  )  const [inline, 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.

00338 { return C_ONE; }

template<>
FEContinuity libMesh::FE< 3, BERNSTEIN >::get_continuity (  )  const [inline, 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.

00426 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 2, BERNSTEIN >::get_continuity (  )  const [inline, 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.

00425 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 1, BERNSTEIN >::get_continuity (  )  const [inline, 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.

00424 { return C_ZERO; }

template<>
FEContinuity libMesh::FE< 0, BERNSTEIN >::get_continuity (  )  const [inline, 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.

00423 { return C_ZERO; }

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.

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_curl_phi (  )  const [inline, inherited]
Returns:
the curl of the shape function at the quadrature points.

Definition at line 238 of file fe_base.h.

00239   { libmesh_assert(!calculations_started || calculate_curl_phi);
00240     calculate_curl_phi = calculate_dphiref = true; return curl_phi; }

const std::vector<Real>& libMesh::FEAbstract::get_curvatures (  )  const [inline, inherited]
Returns:
the curvatures for use in face integration.

Definition at line 380 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

00381   { return this->_fe_map->get_curvatures();}

const std::vector<std::vector<OutputTensor> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phi (  )  const [inline, inherited]
Returns:
the shape function second derivatives at the quadrature points.

Definition at line 304 of file fe_base.h.

00305   { libmesh_assert(!calculations_started || calculate_d2phi);
00306     calculate_d2phi = calculate_dphiref = true; return d2phi; }

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

Definition at line 384 of file fe_base.h.

00385   { libmesh_assert(!calculations_started || calculate_d2phi);
00386     calculate_d2phi = calculate_dphiref = true; return d2phideta2; }

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

Definition at line 392 of file fe_base.h.

00393   { libmesh_assert(!calculations_started || calculate_d2phi);
00394     calculate_d2phi = calculate_dphiref = true; return d2phidetadzeta; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidx2 (  )  const [inline, inherited]
Returns:
the shape function second derivatives at the quadrature points.

Definition at line 312 of file fe_base.h.

00313   { libmesh_assert(!calculations_started || calculate_d2phi);
00314     calculate_d2phi = calculate_dphiref = true; return d2phidx2; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidxdy (  )  const [inline, inherited]
Returns:
the shape function second derivatives at the quadrature points.

Definition at line 320 of file fe_base.h.

00321   { libmesh_assert(!calculations_started || calculate_d2phi);
00322     calculate_d2phi = calculate_dphiref = true; return d2phidxdy; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidxdz (  )  const [inline, inherited]
Returns:
the shape function second derivatives at the quadrature points.

Definition at line 328 of file fe_base.h.

00329   { libmesh_assert(!calculations_started || calculate_d2phi);
00330     calculate_d2phi = calculate_dphiref = true; return d2phidxdz; }

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

Definition at line 360 of file fe_base.h.

00361   { libmesh_assert(!calculations_started || calculate_d2phi);
00362     calculate_d2phi = calculate_dphiref = true; return d2phidxi2; }

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

Definition at line 368 of file fe_base.h.

00369   { libmesh_assert(!calculations_started || calculate_d2phi);
00370     calculate_d2phi = calculate_dphiref = true; return d2phidxideta; }

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

Definition at line 376 of file fe_base.h.

00377   { libmesh_assert(!calculations_started || calculate_d2phi);
00378     calculate_d2phi = calculate_dphiref = true; return d2phidxidzeta; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidy2 (  )  const [inline, inherited]
Returns:
the shape function second derivatives at the quadrature points.

Definition at line 336 of file fe_base.h.

00337   { libmesh_assert(!calculations_started || calculate_d2phi);
00338     calculate_d2phi =  calculate_dphiref = true; return d2phidy2; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidydz (  )  const [inline, inherited]
Returns:
the shape function second derivatives at the quadrature points.

Definition at line 344 of file fe_base.h.

00345   { libmesh_assert(!calculations_started || calculate_d2phi);
00346     calculate_d2phi = calculate_dphiref = true; return d2phidydz; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_d2phidz2 (  )  const [inline, inherited]
Returns:
the shape function second derivatives at the quadrature points.

Definition at line 352 of file fe_base.h.

00353   { libmesh_assert(!calculations_started || calculate_d2phi);
00354     calculate_d2phi = calculate_dphiref = true; return d2phidz2; }

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

Definition at line 400 of file fe_base.h.

00401   { libmesh_assert(!calculations_started || calculate_d2phi);
00402     calculate_d2phi = calculate_dphiref = true; return d2phidzeta2; }

const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdeta2 (  )  const [inline, inherited]
Returns:
the second partial derivatives in eta.

Definition at line 267 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

00268   { return this->_fe_map->get_d2xyzdeta2(); }

const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdetadzeta (  )  const [inline, inherited]
Returns:
the second partial derivatives in eta-zeta.

Definition at line 297 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

00298   { return this->_fe_map->get_d2xyzdetadzeta(); }

const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdxi2 (  )  const [inline, inherited]
Returns:
the second partial derivatives in xi.

Definition at line 261 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

00262   { return this->_fe_map->get_d2xyzdxi2(); }

const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdxideta (  )  const [inline, inherited]
Returns:
the second partial derivatives in xi-eta.

Definition at line 283 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

00284   { return this->_fe_map->get_d2xyzdxideta(); }

const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdxidzeta (  )  const [inline, inherited]
Returns:
the second partial derivatives in xi-zeta.

Definition at line 291 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

00292   { return this->_fe_map->get_d2xyzdxidzeta(); }

const std::vector<RealGradient>& libMesh::FEAbstract::get_d2xyzdzeta2 (  )  const [inline, inherited]
Returns:
the second partial derivatives in zeta.

Definition at line 275 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

00276   { return this->_fe_map->get_d2xyzdzeta2(); }

const std::vector<Real>& libMesh::FEAbstract::get_detadx (  )  const [inline, inherited]
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.

00328   { return this->_fe_map->get_detadx(); }

const std::vector<Real>& libMesh::FEAbstract::get_detady (  )  const [inline, inherited]
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.

00335   { return this->_fe_map->get_detady(); }

const std::vector<Real>& libMesh::FEAbstract::get_detadz (  )  const [inline, inherited]
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.

00342   { return this->_fe_map->get_detadz(); }

const std::vector<std::vector<OutputDivergence> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_div_phi (  )  const [inline, inherited]
Returns:
the divergence of the shape function at the quadrature points.

Definition at line 246 of file fe_base.h.

00247   { libmesh_assert(!calculations_started || calculate_div_phi);
00248     calculate_div_phi = calculate_dphiref = true; return div_phi; }

const std::vector<OutputGradient>& libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphase (  )  const [inline, inherited]
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.

00419       { return dphase; }

const std::vector<std::vector<OutputGradient> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphi (  )  const [inline, inherited]
Returns:
the shape function derivatives at the quadrature points.

Definition at line 230 of file fe_base.h.

00231   { libmesh_assert(!calculations_started || calculate_dphi);
00232     calculate_dphi = calculate_dphiref = true; return dphi; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphideta (  )  const [inline, inherited]
Returns:
the shape function eta-derivative at the quadrature points.

Definition at line 286 of file fe_base.h.

00287   { libmesh_assert(!calculations_started || calculate_dphiref);
00288     calculate_dphiref = true; return dphideta; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphidx (  )  const [inline, inherited]
Returns:
the shape function x-derivative at the quadrature points.

Definition at line 254 of file fe_base.h.

00255   { libmesh_assert(!calculations_started || calculate_dphi);
00256     calculate_dphi = calculate_dphiref = true; return dphidx; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphidxi (  )  const [inline, inherited]
Returns:
the shape function xi-derivative at the quadrature points.

Definition at line 278 of file fe_base.h.

00279   { libmesh_assert(!calculations_started || calculate_dphiref);
00280     calculate_dphiref = true; return dphidxi; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphidy (  )  const [inline, inherited]
Returns:
the shape function y-derivative at the quadrature points.

Definition at line 262 of file fe_base.h.

00263   { libmesh_assert(!calculations_started || calculate_dphi);
00264     calculate_dphi = calculate_dphiref = true; return dphidy; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphidz (  )  const [inline, inherited]
Returns:
the shape function z-derivative at the quadrature points.

Definition at line 270 of file fe_base.h.

00271   { libmesh_assert(!calculations_started || calculate_dphi);
00272     calculate_dphi = calculate_dphiref = true; return dphidz; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_dphidzeta (  )  const [inline, inherited]
Returns:
the shape function zeta-derivative at the quadrature points.

Definition at line 294 of file fe_base.h.

00295   { libmesh_assert(!calculations_started || calculate_dphiref);
00296     calculate_dphiref = true; return dphidzeta; }

const std::vector<Real>& libMesh::FEAbstract::get_dxidx (  )  const [inline, inherited]
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.

00307   { return this->_fe_map->get_dxidx(); }

const std::vector<Real>& libMesh::FEAbstract::get_dxidy (  )  const [inline, inherited]
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.

00314   { return this->_fe_map->get_dxidy(); }

const std::vector<Real>& libMesh::FEAbstract::get_dxidz (  )  const [inline, inherited]
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.

00321   { return this->_fe_map->get_dxidz(); }

const std::vector<RealGradient>& libMesh::FEAbstract::get_dxyzdeta (  )  const [inline, inherited]
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.

00249   { return this->_fe_map->get_dxyzdeta(); }

const std::vector<RealGradient>& libMesh::FEAbstract::get_dxyzdxi (  )  const [inline, inherited]
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.

00242   { return this->_fe_map->get_dxyzdxi(); }

const std::vector<RealGradient>& libMesh::FEAbstract::get_dxyzdzeta (  )  const [inline, inherited]
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.

00256   { return _fe_map->get_dxyzdzeta(); }

const std::vector<Real>& libMesh::FEAbstract::get_dzetadx (  )  const [inline, inherited]
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.

00349   { return this->_fe_map->get_dzetadx(); }

const std::vector<Real>& libMesh::FEAbstract::get_dzetady (  )  const [inline, inherited]
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.

00356   { return this->_fe_map->get_dzetady(); }

const std::vector<Real>& libMesh::FEAbstract::get_dzetadz (  )  const [inline, inherited]
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.

00363   { return this->_fe_map->get_dzetadz(); }

FEFamily libMesh::FEAbstract::get_family (  )  const [inline, inherited]
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().

00439 { return fe_type.family; }

FEType libMesh::FEAbstract::get_fe_type (  )  const [inline, inherited]
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::HCurlFETransformation< OutputShape >::map_phi(), libMesh::H1FETransformation< OutputShape >::map_phi(), and libMesh::ProjectFEMSolution::operator()().

00418 { return fe_type; }

std::string libMesh::ReferenceCounter::get_info (  )  [static, inherited]

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().

00048 {
00049 #if defined(LIBMESH_ENABLE_REFERENCE_COUNTING) && defined(DEBUG)
00050 
00051   std::ostringstream oss;
00052 
00053   oss << '\n'
00054       << " ---------------------------------------------------------------------------- \n"
00055       << "| Reference count information                                                |\n"
00056       << " ---------------------------------------------------------------------------- \n";
00057 
00058   for (Counts::iterator it = _counts.begin();
00059        it != _counts.end(); ++it)
00060     {
00061       const std::string name(it->first);
00062       const unsigned int creations    = it->second.first;
00063       const unsigned int destructions = it->second.second;
00064 
00065       oss << "| " << name << " reference count information:\n"
00066           << "|  Creations:    " << creations    << '\n'
00067           << "|  Destructions: " << destructions << '\n';
00068     }
00069 
00070   oss << " ---------------------------------------------------------------------------- \n";
00071 
00072   return oss.str();
00073 
00074 #else
00075 
00076   return "";
00077 
00078 #endif
00079 }

const std::vector<Real>& libMesh::FEAbstract::get_JxW (  )  const [inline, inherited]
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(), and libMesh::ProjectFEMSolution::operator()().

00235   { return this->_fe_map->get_JxW(); }

const std::vector<Point>& libMesh::FEAbstract::get_normals (  )  const [inline, inherited]
Returns:
the normal vectors for face integration.

Definition at line 374 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

00375   { return this->_fe_map->get_normals(); }

Order libMesh::FEAbstract::get_order (  )  const [inline, inherited]
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.

Referenced by libMesh::FEXYZ< Dim >::compute_face_values(), libMesh::FEXYZ< Dim >::init_shape_functions(), and libMesh::FE< Dim, T >::init_shape_functions().

00423 { return static_cast<Order>(fe_type.order + _p_level); }

unsigned int libMesh::FEAbstract::get_p_level (  )  const [inline, inherited]
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.

00413 { return _p_level; }

const std::vector<std::vector<OutputShape> >& libMesh::FEGenericBase< FEOutputType< T >::type >::get_phi (  )  const [inline, inherited]
Returns:
the shape function values at the quadrature points on the element.

Definition at line 222 of file fe_base.h.

00223   { libmesh_assert(!calculations_started || calculate_phi);
00224     calculate_phi = true; return phi; }

void libMesh::FEAbstract::get_refspace_nodes ( const ElemType  t,
std::vector< Point > &  nodes 
) [static, inherited]

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::PYRAMID5, libMeshEnums::QUAD4, libMeshEnums::QUAD8, libMeshEnums::QUAD9, libMeshEnums::TET10, libMeshEnums::TET4, libMeshEnums::TRI3, and libMeshEnums::TRI6.

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

00416 {
00417   switch(itemType)
00418   {
00419     case EDGE2:
00420     {
00421        nodes.resize(2);
00422        nodes[0] = Point (-1.,0.,0.);
00423        nodes[1] = Point (1.,0.,0.);
00424        return;
00425     }
00426     case EDGE3:
00427     {
00428        nodes.resize(3);
00429        nodes[0] = Point (-1.,0.,0.);
00430        nodes[1] = Point (1.,0.,0.);
00431        nodes[2] = Point (0.,0.,0.);
00432        return;
00433     }
00434     case TRI3:
00435     {
00436        nodes.resize(3);
00437        nodes[0] = Point (0.,0.,0.);
00438        nodes[1] = Point (1.,0.,0.);
00439        nodes[2] = Point (0.,1.,0.);
00440        return;
00441     }
00442     case TRI6:
00443     {
00444        nodes.resize(6);
00445        nodes[0] = Point (0.,0.,0.);
00446        nodes[1] = Point (1.,0.,0.);
00447        nodes[2] = Point (0.,1.,0.);
00448        nodes[3] = Point (.5,0.,0.);
00449        nodes[4] = Point (.5,.5,0.);
00450        nodes[5] = Point (0.,.5,0.);
00451        return;
00452     }
00453     case QUAD4:
00454     {
00455        nodes.resize(4);
00456        nodes[0] = Point (-1.,-1.,0.);
00457        nodes[1] = Point (1.,-1.,0.);
00458        nodes[2] = Point (1.,1.,0.);
00459        nodes[3] = Point (-1.,1.,0.);
00460        return;
00461     }
00462     case QUAD8:
00463     {
00464        nodes.resize(8);
00465        nodes[0] = Point (-1.,-1.,0.);
00466        nodes[1] = Point (1.,-1.,0.);
00467        nodes[2] = Point (1.,1.,0.);
00468        nodes[3] = Point (-1.,1.,0.);
00469        nodes[4] = Point (0.,-1.,0.);
00470        nodes[5] = Point (1.,0.,0.);
00471        nodes[6] = Point (0.,1.,0.);
00472        nodes[7] = Point (-1.,0.,0.);
00473        return;
00474     }
00475     case QUAD9:
00476     {
00477        nodes.resize(9);
00478        nodes[0] = Point (-1.,-1.,0.);
00479        nodes[1] = Point (1.,-1.,0.);
00480        nodes[2] = Point (1.,1.,0.);
00481        nodes[3] = Point (-1.,1.,0.);
00482        nodes[4] = Point (0.,-1.,0.);
00483        nodes[5] = Point (1.,0.,0.);
00484        nodes[6] = Point (0.,1.,0.);
00485        nodes[7] = Point (-1.,0.,0.);
00486        nodes[8] = Point (0.,0.,0.);
00487        return;
00488     }
00489     case TET4:
00490     {
00491        nodes.resize(4);
00492        nodes[0] = Point (0.,0.,0.);
00493        nodes[1] = Point (1.,0.,0.);
00494        nodes[2] = Point (0.,1.,0.);
00495        nodes[3] = Point (0.,0.,1.);
00496        return;
00497     }
00498     case TET10:
00499     {
00500        nodes.resize(10);
00501        nodes[0] = Point (0.,0.,0.);
00502        nodes[1] = Point (1.,0.,0.);
00503        nodes[2] = Point (0.,1.,0.);
00504        nodes[3] = Point (0.,0.,1.);
00505        nodes[4] = Point (.5,0.,0.);
00506        nodes[5] = Point (.5,.5,0.);
00507        nodes[6] = Point (0.,.5,0.);
00508        nodes[7] = Point (0.,0.,.5);
00509        nodes[8] = Point (.5,0.,.5);
00510        nodes[9] = Point (0.,.5,.5);
00511        return;
00512     }
00513     case HEX8:
00514     {
00515        nodes.resize(8);
00516        nodes[0] = Point (-1.,-1.,-1.);
00517        nodes[1] = Point (1.,-1.,-1.);
00518        nodes[2] = Point (1.,1.,-1.);
00519        nodes[3] = Point (-1.,1.,-1.);
00520        nodes[4] = Point (-1.,-1.,1.);
00521        nodes[5] = Point (1.,-1.,1.);
00522        nodes[6] = Point (1.,1.,1.);
00523        nodes[7] = Point (-1.,1.,1.);
00524        return;
00525     }
00526     case HEX20:
00527     {
00528        nodes.resize(20);
00529        nodes[0] = Point (-1.,-1.,-1.);
00530        nodes[1] = Point (1.,-1.,-1.);
00531        nodes[2] = Point (1.,1.,-1.);
00532        nodes[3] = Point (-1.,1.,-1.);
00533        nodes[4] = Point (-1.,-1.,1.);
00534        nodes[5] = Point (1.,-1.,1.);
00535        nodes[6] = Point (1.,1.,1.);
00536        nodes[7] = Point (-1.,1.,1.);
00537        nodes[8] = Point (0.,-1.,-1.);
00538        nodes[9] = Point (1.,0.,-1.);
00539        nodes[10] = Point (0.,1.,-1.);
00540        nodes[11] = Point (-1.,0.,-1.);
00541        nodes[12] = Point (-1.,-1.,0.);
00542        nodes[13] = Point (1.,-1.,0.);
00543        nodes[14] = Point (1.,1.,0.);
00544        nodes[15] = Point (-1.,1.,0.);
00545        nodes[16] = Point (0.,-1.,1.);
00546        nodes[17] = Point (1.,0.,1.);
00547        nodes[18] = Point (0.,1.,1.);
00548        nodes[19] = Point (-1.,0.,1.);
00549        return;
00550     }
00551     case HEX27:
00552     {
00553        nodes.resize(27);
00554        nodes[0] = Point (-1.,-1.,-1.);
00555        nodes[1] = Point (1.,-1.,-1.);
00556        nodes[2] = Point (1.,1.,-1.);
00557        nodes[3] = Point (-1.,1.,-1.);
00558        nodes[4] = Point (-1.,-1.,1.);
00559        nodes[5] = Point (1.,-1.,1.);
00560        nodes[6] = Point (1.,1.,1.);
00561        nodes[7] = Point (-1.,1.,1.);
00562        nodes[8] = Point (0.,-1.,-1.);
00563        nodes[9] = Point (1.,0.,-1.);
00564        nodes[10] = Point (0.,1.,-1.);
00565        nodes[11] = Point (-1.,0.,-1.);
00566        nodes[12] = Point (-1.,-1.,0.);
00567        nodes[13] = Point (1.,-1.,0.);
00568        nodes[14] = Point (1.,1.,0.);
00569        nodes[15] = Point (-1.,1.,0.);
00570        nodes[16] = Point (0.,-1.,1.);
00571        nodes[17] = Point (1.,0.,1.);
00572        nodes[18] = Point (0.,1.,1.);
00573        nodes[19] = Point (-1.,0.,1.);
00574        nodes[20] = Point (0.,0.,-1.);
00575        nodes[21] = Point (0.,-1.,0.);
00576        nodes[22] = Point (1.,0.,0.);
00577        nodes[23] = Point (0.,1.,0.);
00578        nodes[24] = Point (-1.,0.,0.);
00579        nodes[25] = Point (0.,0.,1.);
00580        nodes[26] = Point (0.,0.,0.);
00581        return;
00582     }
00583     case PRISM6:
00584     {
00585        nodes.resize(6);
00586        nodes[0] = Point (0.,0.,-1.);
00587        nodes[1] = Point (1.,0.,-1.);
00588        nodes[2] = Point (0.,1.,-1.);
00589        nodes[3] = Point (0.,0.,1.);
00590        nodes[4] = Point (1.,0.,1.);
00591        nodes[5] = Point (0.,1.,1.);
00592        return;
00593     }
00594     case PRISM15:
00595     {
00596        nodes.resize(15);
00597        nodes[0] = Point (0.,0.,-1.);
00598        nodes[1] = Point (1.,0.,-1.);
00599        nodes[2] = Point (0.,1.,-1.);
00600        nodes[3] = Point (0.,0.,1.);
00601        nodes[4] = Point (1.,0.,1.);
00602        nodes[5] = Point (0.,1.,1.);
00603        nodes[6] = Point (.5,0.,-1.);
00604        nodes[7] = Point (.5,.5,-1.);
00605        nodes[8] = Point (0.,.5,-1.);
00606        nodes[9] = Point (0.,0.,0.);
00607        nodes[10] = Point (1.,0.,0.);
00608        nodes[11] = Point (0.,1.,0.);
00609        nodes[12] = Point (.5,0.,1.);
00610        nodes[13] = Point (.5,.5,1.);
00611        nodes[14] = Point (0.,.5,1.);
00612        return;
00613     }
00614     case PRISM18:
00615     {
00616        nodes.resize(18);
00617        nodes[0] = Point (0.,0.,-1.);
00618        nodes[1] = Point (1.,0.,-1.);
00619        nodes[2] = Point (0.,1.,-1.);
00620        nodes[3] = Point (0.,0.,1.);
00621        nodes[4] = Point (1.,0.,1.);
00622        nodes[5] = Point (0.,1.,1.);
00623        nodes[6] = Point (.5,0.,-1.);
00624        nodes[7] = Point (.5,.5,-1.);
00625        nodes[8] = Point (0.,.5,-1.);
00626        nodes[9] = Point (0.,0.,0.);
00627        nodes[10] = Point (1.,0.,0.);
00628        nodes[11] = Point (0.,1.,0.);
00629        nodes[12] = Point (.5,0.,1.);
00630        nodes[13] = Point (.5,.5,1.);
00631        nodes[14] = Point (0.,.5,1.);
00632        nodes[15] = Point (.5,0.,0.);
00633        nodes[16] = Point (.5,.5,0.);
00634        nodes[17] = Point (0.,.5,0.);
00635        return;
00636     }
00637     case PYRAMID5:
00638     {
00639        nodes.resize(5);
00640        nodes[0] = Point (-1.,-1.,0.);
00641        nodes[1] = Point (1.,-1.,0.);
00642        nodes[2] = Point (1.,1.,0.);
00643        nodes[3] = Point (-1.,1.,0.);
00644        nodes[4] = Point (-1.,-1.,1.);
00645        return;
00646     }
00647     default:
00648     {
00649       libMesh::err << "ERROR: Unknown element type " << itemType << std::endl;
00650       libmesh_error();
00651     }
00652   }
00653   return;
00654 }

const std::vector<RealGradient>& libMesh::FEGenericBase< FEOutputType< T >::type >::get_Sobolev_dweight (  )  const [inline, inherited]
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.

00443       { return dweight; }

const std::vector<Real>& libMesh::FEGenericBase< FEOutputType< T >::type >::get_Sobolev_weight (  )  const [inline, inherited]
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.

00435       { return weight; }

const std::vector<std::vector<Point> >& libMesh::FEAbstract::get_tangents (  )  const [inline, inherited]
Returns:
the tangent vectors for face integration.

Definition at line 368 of file fe_abstract.h.

References libMesh::FEAbstract::_fe_map.

00369   { return this->_fe_map->get_tangents(); }

ElemType libMesh::FEAbstract::get_type (  )  const [inline, inherited]
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.

Referenced by libMesh::FEXYZ< Dim >::compute_face_values(), libMesh::FE< Dim, T >::edge_reinit(), libMesh::FEXYZ< Dim >::init_shape_functions(), libMesh::FE< Dim, T >::init_shape_functions(), and libMesh::InfFE< Dim, T_radial, T_map >::reinit().

00407 { return elem_type; }

const std::vector<Point>& libMesh::FEAbstract::get_xyz (  )  const [inline, inherited]
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::FEXYZ< Dim >::compute_shape_functions(), libMesh::ExactErrorEstimator::find_squared_element_error(), and libMesh::ProjectFEMSolution::operator()().

00228   { return this->_fe_map->get_xyz(); }

void libMesh::ReferenceCounter::increment_constructor_count ( const std::string &  name  )  [inline, protected, inherited]

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, and libMesh::Threads::spin_mtx.

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

00164 {
00165   Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
00166   std::pair<unsigned int, unsigned int>& p = _counts[name];
00167 
00168   p.first++;
00169 }

void libMesh::ReferenceCounter::increment_destructor_count ( const std::string &  name  )  [inline, protected, inherited]

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, and libMesh::Threads::spin_mtx.

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

00177 {
00178   Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
00179   std::pair<unsigned int, unsigned int>& p = _counts[name];
00180 
00181   p.second++;
00182 }

template<unsigned int Dim, FEFamily T>
void libMesh::FE< Dim, T >::init_base_shape_functions ( const std::vector< Point > &  qp,
const Elem e 
) [inline, protected, virtual]

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::FEAbstract::_fe_map, libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_dphi, libMesh::FEAbstract::calculate_phi, libMesh::FEAbstract::elem_type, libMesh::FE< Dim, T >::init_shape_functions(), and libMesh::Elem::type().

00532 {
00533   // I don't understand infinite elements well enough to risk
00534   // calculating too little.  :-(  RHS
00535   this->calculate_phi = this->calculate_dphi = this->calculate_d2phi = true;
00536 
00537   this->elem_type = e->type();
00538   this->_fe_map->template init_reference_to_physical_map<Dim>(qp, e);
00539   init_shape_functions(qp, e);
00540 }

template<unsigned int Dim, FEFamily T>
void libMesh::FE< Dim, T >::init_shape_functions ( const std::vector< Point > &  qp,
const Elem e 
) [inline, protected, virtual]

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::FEAbstract::calculate_curl_phi, libMesh::FEAbstract::calculate_d2phi, libMesh::FEAbstract::calculate_div_phi, libMesh::FEAbstract::calculate_dphi, libMesh::FEAbstract::calculate_dphiref, libMesh::FEAbstract::calculate_phi, libMesh::FEAbstract::calculations_started, libMesh::FEGenericBase< FEOutputType< T >::type >::curl_phi, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phi, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phideta2, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidetadzeta, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidx2, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidxdy, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidxdz, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidxi2, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidxideta, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidxidzeta, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidy2, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidydz, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidz2, libMesh::FEGenericBase< FEOutputType< T >::type >::d2phidzeta2, libMesh::FEGenericBase< FEOutputType< T >::type >::div_phi, libMesh::FEGenericBase< FEOutputType< T >::type >::dphase, libMesh::FEGenericBase< FEOutputType< T >::type >::dphi, libMesh::FEGenericBase< FEOutputType< T >::type >::dphideta, libMesh::FEGenericBase< FEOutputType< T >::type >::dphidx, libMesh::FEGenericBase< FEOutputType< T >::type >::dphidxi, libMesh::FEGenericBase< FEOutputType< T >::type >::dphidy, libMesh::FEGenericBase< FEOutputType< T >::type >::dphidz, libMesh::FEGenericBase< FEOutputType< T >::type >::dphidzeta, libMesh::FEGenericBase< FEOutputType< T >::type >::dweight, libMesh::FEAbstract::fe_type, libMesh::FEInterface::field_type(), libMesh::FEAbstract::get_order(), libMesh::FEAbstract::get_type(), libMesh::FE< Dim, T >::n_shape_functions(), libMesh::FEType::order, libMesh::FEGenericBase< FEOutputType< T >::type >::phi, libMesh::FE< Dim, T >::shape_deriv(), libMesh::FE< Dim, T >::shape_second_deriv(), libMeshEnums::TYPE_VECTOR, and libMesh::FEGenericBase< FEOutputType< T >::type >::weight.

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

00243 {
00244   libmesh_assert(elem);
00245   this->calculations_started = true;
00246 
00247   // If the user forgot to request anything, we'll be safe and
00248   // calculate everything:
00249 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00250   if (!this->calculate_phi && !this->calculate_dphi && !this->calculate_d2phi 
00251       && !this->calculate_curl_phi && !this->calculate_div_phi)
00252     {
00253       this->calculate_phi = this->calculate_dphi = this->calculate_d2phi = this->calculate_dphiref = true;
00254       if( FEInterface::field_type(T) == TYPE_VECTOR )
00255         {
00256           this->calculate_curl_phi = true;
00257           this->calculate_div_phi  = true;
00258         }
00259     }
00260 #else
00261   if (!this->calculate_phi && !this->calculate_dphi && !this->calculate_curl_phi && !this->calculate_div_phi)
00262     {
00263       this->calculate_phi = this->calculate_dphi = this->calculate_dphiref = true;
00264       if( FEInterface::field_type(T) == TYPE_VECTOR )
00265         {
00266           this->calculate_curl_phi = true;
00267           this->calculate_div_phi  = true;
00268         }
00269     }
00270 #endif // LIBMESH_ENABLE_SECOND_DERIVATIVES
00271 
00272   // Start logging the shape function initialization
00273   START_LOG("init_shape_functions()", "FE");
00274 
00275 
00276   // The number of quadrature points.
00277   const unsigned int n_qp = libmesh_cast_int<unsigned int>(qp.size());
00278 
00279   // Number of shape functions in the finite element approximation
00280   // space.
00281   const unsigned int n_approx_shape_functions =
00282     this->n_shape_functions(this->get_type(),
00283                             this->get_order());
00284 
00285   // resize the vectors to hold current data
00286   // Phi are the shape functions used for the FE approximation
00287   // Phi_map are the shape functions used for the FE mapping
00288   if (this->calculate_phi)
00289     this->phi.resize     (n_approx_shape_functions);
00290 
00291   if (this->calculate_dphi)
00292     {
00293       this->dphi.resize    (n_approx_shape_functions);
00294       this->dphidx.resize  (n_approx_shape_functions);
00295       this->dphidy.resize  (n_approx_shape_functions);
00296       this->dphidz.resize  (n_approx_shape_functions);
00297     }
00298 
00299   if(this->calculate_dphiref)
00300     {
00301       if (Dim > 0)
00302         this->dphidxi.resize (n_approx_shape_functions);
00303 
00304       if (Dim > 1)
00305         this->dphideta.resize      (n_approx_shape_functions);
00306 
00307       if (Dim > 2)
00308         this->dphidzeta.resize     (n_approx_shape_functions);
00309     }
00310   
00311   if( this->calculate_curl_phi && (FEInterface::field_type(T) == TYPE_VECTOR) )
00312     this->curl_phi.resize(n_approx_shape_functions);
00313 
00314   if( this->calculate_div_phi && (FEInterface::field_type(T) == TYPE_VECTOR) )
00315     this->div_phi.resize(n_approx_shape_functions);
00316 
00317 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00318   if (this->calculate_d2phi)
00319     {
00320       this->d2phi.resize     (n_approx_shape_functions);
00321       this->d2phidx2.resize  (n_approx_shape_functions);
00322       this->d2phidxdy.resize (n_approx_shape_functions);
00323       this->d2phidxdz.resize (n_approx_shape_functions);
00324       this->d2phidy2.resize  (n_approx_shape_functions);
00325       this->d2phidydz.resize (n_approx_shape_functions);
00326       this->d2phidz2.resize  (n_approx_shape_functions);
00327 
00328       if (Dim > 0)
00329         this->d2phidxi2.resize (n_approx_shape_functions);
00330 
00331       if (Dim > 1)
00332         {
00333           this->d2phidxideta.resize (n_approx_shape_functions);
00334           this->d2phideta2.resize   (n_approx_shape_functions);
00335         }
00336       if (Dim > 2)
00337         {
00338           this->d2phidxidzeta.resize  (n_approx_shape_functions);
00339           this->d2phidetadzeta.resize (n_approx_shape_functions);
00340           this->d2phidzeta2.resize    (n_approx_shape_functions);
00341         }
00342     }
00343 #endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00344 
00345   for (unsigned int i=0; i<n_approx_shape_functions; i++)
00346     {
00347       if (this->calculate_phi)
00348         this->phi[i].resize         (n_qp);
00349       if (this->calculate_dphi)
00350         {
00351           this->dphi[i].resize        (n_qp);
00352           this->dphidx[i].resize      (n_qp);
00353           this->dphidy[i].resize      (n_qp);
00354           this->dphidz[i].resize      (n_qp);
00355         }
00356       
00357       if(this->calculate_dphiref)
00358         {
00359           if (Dim > 0)
00360             this->dphidxi[i].resize(n_qp);
00361 
00362           if (Dim > 1)
00363             this->dphideta[i].resize(n_qp);
00364 
00365           if (Dim > 2)
00366             this->dphidzeta[i].resize(n_qp);
00367         }
00368 
00369       if(this->calculate_curl_phi && (FEInterface::field_type(T) == TYPE_VECTOR) )
00370         this->curl_phi[i].resize(n_qp);
00371 
00372       if(this->calculate_div_phi && (FEInterface::field_type(T) == TYPE_VECTOR) )
00373         this->div_phi[i].resize(n_qp);
00374 
00375 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00376       if (this->calculate_d2phi)
00377         {
00378           this->d2phi[i].resize     (n_qp);
00379           this->d2phidx2[i].resize  (n_qp);
00380           this->d2phidxdy[i].resize (n_qp);
00381           this->d2phidxdz[i].resize (n_qp);
00382           this->d2phidy2[i].resize  (n_qp);
00383           this->d2phidydz[i].resize (n_qp);
00384           this->d2phidz2[i].resize  (n_qp);
00385           if (Dim > 0)
00386             this->d2phidxi2[i].resize (n_qp);
00387           if (Dim > 1)
00388             {
00389               this->d2phidxideta[i].resize (n_qp);
00390               this->d2phideta2[i].resize   (n_qp);
00391             }
00392           if (Dim > 2)
00393             {
00394               this->d2phidxidzeta[i].resize  (n_qp);
00395               this->d2phidetadzeta[i].resize (n_qp);
00396               this->d2phidzeta2[i].resize    (n_qp);
00397             }
00398         }
00399 #endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00400     }
00401 
00402 
00403 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
00404   //------------------------------------------------------------
00405   // Initialize the data fields, which should only be used for infinite
00406   // elements, to some sensible values, so that using a FE with the
00407   // variational formulation of an InfFE, correct element matrices are
00408   // returned
00409 
00410  {
00411     this->weight.resize  (n_qp);
00412     this->dweight.resize (n_qp);
00413     this->dphase.resize  (n_qp);
00414 
00415     for (unsigned int p=0; p<n_qp; p++)
00416       {
00417         this->weight[p] = 1.;
00418         this->dweight[p].zero();
00419         this->dphase[p].zero();
00420       }
00421 
00422  }
00423 #endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
00424 
00425   switch (Dim)
00426     {
00427 
00428       //------------------------------------------------------------
00429       // 0D
00430     case 0:
00431       {
00432         break;
00433       }
00434 
00435       //------------------------------------------------------------
00436       // 1D
00437     case 1:
00438       {
00439         // Compute the value of the approximation shape function i at quadrature point p
00440         if (this->calculate_dphiref)
00441           for (unsigned int i=0; i<n_approx_shape_functions; i++)
00442             for (unsigned int p=0; p<n_qp; p++)
00443               this->dphidxi[i][p]  = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 0, qp[p]);
00444 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00445         if (this->calculate_d2phi)
00446           for (unsigned int i=0; i<n_approx_shape_functions; i++)
00447             for (unsigned int p=0; p<n_qp; p++)
00448               this->d2phidxi2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 0, qp[p]);
00449 #endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00450 
00451         break;
00452       }
00453 
00454 
00455 
00456       //------------------------------------------------------------
00457       // 2D
00458     case 2:
00459       {
00460         // Compute the value of the approximation shape function i at quadrature point p
00461         if (this->calculate_dphiref)
00462           for (unsigned int i=0; i<n_approx_shape_functions; i++)
00463             for (unsigned int p=0; p<n_qp; p++)
00464               {
00465                 this->dphidxi[i][p]  = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 0, qp[p]);
00466                 this->dphideta[i][p] = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 1, qp[p]);
00467               }
00468 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00469         if (this->calculate_d2phi)
00470           for (unsigned int i=0; i<n_approx_shape_functions; i++)
00471             for (unsigned int p=0; p<n_qp; p++)
00472               {
00473                 this->d2phidxi2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 0, qp[p]);
00474                 this->d2phidxideta[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 1, qp[p]);
00475                 this->d2phideta2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 2, qp[p]);
00476               }
00477 #endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00478 
00479         
00480         break;
00481       }
00482 
00483 
00484 
00485       //------------------------------------------------------------
00486       // 3D
00487     case 3:
00488       {
00489         // Compute the value of the approximation shape function i at quadrature point p
00490         if (this->calculate_dphiref)
00491           for (unsigned int i=0; i<n_approx_shape_functions; i++)
00492             for (unsigned int p=0; p<n_qp; p++)
00493               {
00494                 this->dphidxi[i][p]   = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 0, qp[p]);
00495                 this->dphideta[i][p]  = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 1, qp[p]);
00496                 this->dphidzeta[i][p] = FE<Dim,T>::shape_deriv (elem, this->fe_type.order, i, 2, qp[p]);
00497               }
00498 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00499         if (this->calculate_d2phi)
00500           for (unsigned int i=0; i<n_approx_shape_functions; i++)
00501             for (unsigned int p=0; p<n_qp; p++)
00502               {
00503                 this->d2phidxi2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 0, qp[p]);
00504                 this->d2phidxideta[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 1, qp[p]);
00505                 this->d2phideta2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 2, qp[p]);
00506                 this->d2phidxidzeta[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 3, qp[p]);
00507                 this->d2phidetadzeta[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 4, qp[p]);
00508                 this->d2phidzeta2[i][p] = FE<Dim,T>::shape_second_deriv (elem, this->fe_type.order, i, 5, qp[p]);
00509               }
00510 #endif // ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
00511 
00512         break;
00513       }
00514 
00515 
00516     default:
00517       libmesh_error();
00518     }
00519 
00520   // Stop logging the shape function initialization
00521   STOP_LOG("init_shape_functions()", "FE");
00522 }

template<unsigned int Dim, FEFamily T>
void libMesh::FE< Dim, T >::inverse_map ( const Elem elem,
const std::vector< Point > &  physical_points,
std::vector< Point > &  reference_points,
const Real  tolerance = TOLERANCE,
const bool  secure = true 
) [inline, static]

Takes a number points in physical space (in the physical_points vector) and finds their location on the reference element for the input element elem. The values on the reference element are returned in the vector reference_points. 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 1208 of file fe_map.C.

References libMesh::TypeVector< T >::size().

01213 {
01214   // The number of points to find the
01215   // inverse map of
01216   const std::size_t n_points = physical_points.size();
01217 
01218   // Resize the vector to hold the points
01219   // on the reference element
01220   reference_points.resize(n_points);
01221 
01222   // Find the coordinates on the reference
01223   // element of each point in physical space
01224   for (std::size_t p=0; p<n_points; p++)
01225     reference_points[p] =
01226       FE<Dim,T>::inverse_map (elem, physical_points[p], tolerance, secure);
01227 }

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 
) [inline, 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 818 of file fe_map.C.

References libMesh::TypeVector< T >::add(), libMesh::err, libMesh::DofObject::id(), 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(), and libMesh::Elem::type().

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

00822 {
00823   libmesh_assert(elem);
00824   libmesh_assert_greater_equal (tolerance, 0.);
00825 
00826 
00827   // Start logging the map inversion.
00828   START_LOG("inverse_map()", "FE");
00829 
00830   // How much did the point on the reference
00831   // element change by in this Newton step?
00832   Real inverse_map_error = 0.;
00833 
00834   //  The point on the reference element.  This is
00835   //  the "initial guess" for Newton's method.  The
00836   //  centroid seems like a good idea, but computing
00837   //  it is a little more intensive than, say taking
00838   //  the zero point.
00839   //
00840   //  Convergence should be insensitive of this choice
00841   //  for "good" elements.
00842   Point p; // the zero point.  No computation required
00843 
00844   //  The number of iterations in the map inversion process.
00845   unsigned int cnt = 0;
00846 
00847   //  The number of iterations after which we give up and declare
00848   //  divergence
00849   const unsigned int max_cnt = 10;
00850 
00851   //  The distance (in master element space) beyond which we give up
00852   //  and declare divergence.  This is no longer used...
00853   // Real max_step_length = 4.;
00854 
00855 
00856 
00857   //  Newton iteration loop.
00858   do
00859     {
00860       //  Where our current iterate \p p maps to.
00861       const Point physical_guess = FE<Dim,T>::map (elem, p);
00862 
00863       //  How far our current iterate is from the actual point.
00864       const Point delta = physical_point - physical_guess;
00865 
00866       //  Increment in current iterate \p p, will be computed.
00867       Point dp;
00868 
00869 
00870       //  The form of the map and how we invert it depends
00871       //  on the dimension that we are in.
00872       switch (Dim)
00873         {
00874           // ------------------------------------------------------------------
00875           //  0D map inversion is trivial
00876         case 0:
00877           {
00878             break;
00879           }
00880 
00881           // ------------------------------------------------------------------
00882           //  1D map inversion
00883           //
00884           //  Here we find the point on a 1D reference element that maps to
00885           //  the point \p physical_point in the domain.  This is a bit tricky
00886           //  since we do not want to assume that the point \p physical_point
00887           //  is also in a 1D domain.  In particular, this method might get
00888           //  called on the edge of a 3D element, in which case
00889           //  \p physical_point actually lives in 3D.
00890         case 1:
00891           {
00892             const Point dxi = FE<Dim,T>::map_xi (elem, p);
00893 
00894             //  Newton's method in this case looks like
00895             //
00896             //  {X} - {X_n} = [J]*dp
00897             //
00898             //  Where {X}, {X_n} are 3x1 vectors, [J] is a 3x1 matrix
00899             //  d(x,y,z)/dxi, and we seek dp, a scalar.  Since the above
00900             //  system is either overdetermined or rank-deficient, we will
00901             //  solve the normal equations for this system
00902             //
00903             //  [J]^T ({X} - {X_n}) = [J]^T [J] {dp}
00904             //
00905             //  which involves the trivial inversion of the scalar
00906             //  G = [J]^T [J]
00907             const Real G = dxi*dxi;
00908 
00909             if (secure)
00910               libmesh_assert_greater (G, 0.);
00911 
00912             const Real Ginv = 1./G;
00913 
00914             const Real  dxidelta = dxi*delta;
00915 
00916             dp(0) = Ginv*dxidelta;
00917 
00918             // No master elements have radius > 4, but sometimes we
00919             // can take a step that big while still converging
00920             // if (secure)
00921               // libmesh_assert_less (dp.size(), max_step_length);
00922 
00923             break;
00924           }
00925 
00926 
00927 
00928           // ------------------------------------------------------------------
00929           //  2D map inversion
00930           //
00931           //  Here we find the point on a 2D reference element that maps to
00932           //  the point \p physical_point in the domain.  This is a bit tricky
00933           //  since we do not want to assume that the point \p physical_point
00934           //  is also in a 2D domain.  In particular, this method might get
00935           //  called on the face of a 3D element, in which case
00936           //  \p physical_point actually lives in 3D.
00937         case 2:
00938           {
00939             const Point dxi  = FE<Dim,T>::map_xi  (elem, p);
00940             const Point deta = FE<Dim,T>::map_eta (elem, p);
00941 
00942             //  Newton's method in this case looks like
00943             //
00944             //  {X} - {X_n} = [J]*{dp}
00945             //
00946             //  Where {X}, {X_n} are 3x1 vectors, [J] is a 3x2 matrix
00947             //  d(x,y,z)/d(xi,eta), and we seek {dp}, a 2x1 vector.  Since
00948             //  the above system is either overdermined or rank-deficient,
00949             //  we will solve the normal equations for this system
00950             //
00951             //  [J]^T ({X} - {X_n}) = [J]^T [J] {dp}
00952             //
00953             //  which involves the inversion of the 2x2 matrix
00954             //  [G] = [J]^T [J]
00955             const Real
00956               G11 = dxi*dxi,  G12 = dxi*deta,
00957               G21 = dxi*deta, G22 = deta*deta;
00958 
00959 
00960             const Real det = (G11*G22 - G12*G21);
00961 
00962             if (secure)
00963               libmesh_assert_not_equal_to (det, 0.);
00964 
00965             const Real inv_det = 1./det;
00966 
00967             const Real
00968               Ginv11 =  G22*inv_det,
00969               Ginv12 = -G12*inv_det,
00970 
00971               Ginv21 = -G21*inv_det,
00972               Ginv22 =  G11*inv_det;
00973 
00974 
00975             const Real  dxidelta  = dxi*delta;
00976             const Real  detadelta = deta*delta;
00977 
00978             dp(0) = (Ginv11*dxidelta + Ginv12*detadelta);
00979             dp(1) = (Ginv21*dxidelta + Ginv22*detadelta);
00980 
00981             // No master elements have radius > 4, but sometimes we
00982             // can take a step that big while still converging
00983             // if (secure)
00984               // libmesh_assert_less (dp.size(), max_step_length);
00985 
00986             break;
00987           }
00988 
00989 
00990 
00991           // ------------------------------------------------------------------
00992           //  3D map inversion
00993           //
00994           //  Here we find the point in a 3D reference element that maps to
00995           //  the point \p physical_point in a 3D domain. Nothing special
00996           //  has to happen here, since (unless the map is singular because
00997           //  you have a BAD element) the map will be invertable and we can
00998           //  apply Newton's method directly.
00999         case 3:
01000           {
01001             const Point dxi   = FE<Dim,T>::map_xi   (elem, p);
01002             const Point deta  = FE<Dim,T>::map_eta  (elem, p);
01003             const Point dzeta = FE<Dim,T>::map_zeta (elem, p);
01004 
01005             //  Newton's method in this case looks like
01006             //
01007             //  {X} = {X_n} + [J]*{dp}
01008             //
01009             //  Where {X}, {X_n} are 3x1 vectors, [J] is a 3x3 matrix
01010             //  d(x,y,z)/d(xi,eta,zeta), and we seek {dp}, a 3x1 vector.
01011             //  Since the above system is nonsingular for invertable maps
01012             //  we will solve
01013             //
01014             //  {dp} = [J]^-1 ({X} - {X_n})
01015             //
01016             //  which involves the inversion of the 3x3 matrix [J]
01017             const Real
01018               J11 = dxi(0), J12 = deta(0), J13 = dzeta(0),
01019               J21 = dxi(1), J22 = deta(1), J23 = dzeta(1),
01020               J31 = dxi(2), J32 = deta(2), J33 = dzeta(2);
01021 
01022             const Real det = (J11*(J22*J33 - J23*J32) +
01023                               J12*(J23*J31 - J21*J33) +
01024                               J13*(J21*J32 - J22*J31));
01025 
01026             if (secure)
01027               libmesh_assert_not_equal_to (det, 0.);
01028 
01029             const Real inv_det = 1./det;
01030 
01031             const Real
01032               Jinv11 =  (J22*J33 - J23*J32)*inv_det,
01033               Jinv12 = -(J12*J33 - J13*J32)*inv_det,
01034               Jinv13 =  (J12*J23 - J13*J22)*inv_det,
01035 
01036               Jinv21 = -(J21*J33 - J23*J31)*inv_det,
01037               Jinv22 =  (J11*J33 - J13*J31)*inv_det,
01038               Jinv23 = -(J11*J23 - J13*J21)*inv_det,
01039 
01040               Jinv31 =  (J21*J32 - J22*J31)*inv_det,
01041               Jinv32 = -(J11*J32 - J12*J31)*inv_det,
01042               Jinv33 =  (J11*J22 - J12*J21)*inv_det;
01043 
01044             dp(0) = (Jinv11*delta(0) +
01045                      Jinv12*delta(1) +
01046                      Jinv13*delta(2));
01047 
01048             dp(1) = (Jinv21*delta(0) +
01049                      Jinv22*delta(1) +
01050                      Jinv23*delta(2));
01051 
01052             dp(2) = (Jinv31*delta(0) +
01053                      Jinv32*delta(1) +
01054                      Jinv33*delta(2));
01055 
01056             // No master elements have radius > 4, but sometimes we
01057             // can take a step that big while still converging
01058             // if (secure)
01059               // libmesh_assert_less (dp.size(), max_step_length);
01060 
01061             break;
01062           }
01063 
01064 
01065           //  Some other dimension?
01066         default:
01067           libmesh_error();
01068         } // end switch(Dim), dp now computed
01069 
01070 
01071 
01072       //  ||P_n+1 - P_n||
01073       inverse_map_error = dp.size();
01074 
01075       //  P_n+1 = P_n + dp
01076       p.add (dp);
01077 
01078       //  Increment the iteration count.
01079       cnt++;
01080 
01081       //  Watch for divergence of Newton's
01082       //  method.  Here's how it goes:
01083       //  (1) For good elements, we expect convergence in 10
01084       //      iterations, with no too-large steps.
01085       //      - If called with (secure == true) and we have not yet converged
01086       //        print out a warning message.
01087       //      - If called with (secure == true) and we have not converged in
01088       //        20 iterations abort
01089       //  (2) This method may be called in cases when the target point is not
01090       //      inside the element and we have no business expecting convergence.
01091       //      For these cases if we have not converged in 10 iterations forget
01092       //      about it.
01093       if (cnt > max_cnt)
01094         {
01095           //  Warn about divergence when secure is true - this
01096           //  shouldn't happen
01097           if (secure)
01098             {
01099               // Print every time in devel/dbg modes
01100 #ifndef NDEBUG
01101               libmesh_here();
01102               libMesh::err << "WARNING: Newton scheme has not converged in "
01103                             << cnt << " iterations:" << std::endl
01104                             << "   physical_point="
01105                             << physical_point
01106                             << "   physical_guess="
01107                             << physical_guess
01108                             << "   dp="
01109                             << dp
01110                             << "   p="
01111                             << p
01112                             << "   error=" << inverse_map_error
01113                             << "   in element " << elem->id()
01114                             << std::endl;
01115 
01116               elem->print_info(libMesh::err);
01117 #else
01118               // In optimized mode, just print once that an inverse_map() call
01119               // had trouble converging its Newton iteration.
01120               libmesh_do_once(libMesh::err << "WARNING: At least one element took more than "
01121                               << max_cnt
01122                               << " iterations to converge in inverse_map()...\n"
01123                               << "Rerun in devel/dbg mode for more details."
01124                               << std::endl;);
01125 
01126 #endif // NDEBUG
01127 
01128               if (cnt > 2*max_cnt)
01129                 {
01130                   libMesh::err << "ERROR: Newton scheme FAILED to converge in "
01131                                 << cnt
01132                                 << " iterations!"
01133                                 << " in element " << elem->id()
01134                                 << std::endl;
01135 
01136                   elem->print_info(libMesh::err);
01137 
01138                   libmesh_error();
01139                 }
01140             }
01141           //  Return a far off point when secure is false - this
01142           //  should only happen when we're trying to map a point
01143           //  that's outside the element
01144           else
01145             {
01146               for (unsigned int i=0; i != Dim; ++i)
01147                 p(i) = 1e6;
01148 
01149               STOP_LOG("inverse_map()", "FE");
01150               return p;
01151             }
01152         }
01153     }
01154   while (inverse_map_error > tolerance);
01155 
01156 
01157 
01158   //  If we are in debug mode do two sanity checks.
01159 #ifdef DEBUG
01160 
01161   if (secure)
01162     {
01163       // Make sure the point \p p on the reference element actually
01164       // does map to the point \p physical_point within a tolerance.
01165 
01166       const Point check = FE<Dim,T>::map (elem, p);
01167       const Point diff  = physical_point - check;
01168 
01169       if (diff.size() > tolerance)
01170         {
01171           libmesh_here();
01172           libMesh::err << "WARNING:  diff is "
01173                         << diff.size()
01174                         << std::endl
01175                         << " point="
01176                         << physical_point;
01177           libMesh::err << " local=" << check;
01178           libMesh::err << " lref= " << p;
01179 
01180           elem->print_info(libMesh::err);
01181         }
01182 
01183       // Make sure the point \p p on the reference element actually
01184       // is
01185 
01186       if (!FEAbstract::on_reference_element(p, elem->type(), 2*tolerance))
01187         {
01188           libmesh_here();
01189           libMesh::err << "WARNING:  inverse_map of physical point "
01190                        << physical_point
01191                        << "is not on element." << '\n';
01192           elem->print_info(libMesh::err);
01193         }
01194     }
01195 
01196 #endif
01197 
01198 
01199 
01200   //  Stop logging the map inversion.
01201   STOP_LOG("inverse_map()", "FE");
01202 
01203   return p;
01204 }

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

Implements libMesh::FEAbstract.

Definition at line 933 of file fe_xyz.C.

00933 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 932 of file fe_xyz.C.

00932 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 931 of file fe_xyz.C.

00931 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 930 of file fe_xyz.C.

00930 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 1267 of file fe_szabab.C.

01267 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 1266 of file fe_szabab.C.

01266 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 1265 of file fe_szabab.C.

01265 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 1264 of file fe_szabab.C.

01264 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 116 of file fe_scalar.C.

00116 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 115 of file fe_scalar.C.

00115 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 114 of file fe_scalar.C.

00114 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 113 of file fe_scalar.C.

00113 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 572 of file fe_nedelec_one.C.

00572 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 571 of file fe_nedelec_one.C.

00571 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 570 of file fe_nedelec_one.C.

00570 { NEDELEC_LOW_D_ERROR_MESSAGE }

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

Implements libMesh::FEAbstract.

Definition at line 569 of file fe_nedelec_one.C.

00569 { NEDELEC_LOW_D_ERROR_MESSAGE }

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

Implements libMesh::FEAbstract.

Definition at line 410 of file fe_monomial.C.

00410 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 409 of file fe_monomial.C.

00409 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 408 of file fe_monomial.C.

00408 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 407 of file fe_monomial.C.

00407 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 935 of file fe_lagrange_vec.C.

00935 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 934 of file fe_lagrange_vec.C.

00934 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 933 of file fe_lagrange_vec.C.

00933 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 932 of file fe_lagrange_vec.C.

00932 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 850 of file fe_lagrange.C.

00850 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 849 of file fe_lagrange.C.

00849 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 848 of file fe_lagrange.C.

00848 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 847 of file fe_lagrange.C.

00847 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 491 of file fe_l2_lagrange.C.

00491 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 490 of file fe_l2_lagrange.C.

00490 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 489 of file fe_l2_lagrange.C.

00489 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 488 of file fe_l2_lagrange.C.

00488 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 197 of file fe_l2_hierarchic.C.

00197 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 196 of file fe_l2_hierarchic.C.

00196 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 195 of file fe_l2_hierarchic.C.

00195 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 194 of file fe_l2_hierarchic.C.

00194 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 368 of file fe_hierarchic.C.

00368 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 367 of file fe_hierarchic.C.

00367 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 366 of file fe_hierarchic.C.

00366 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 365 of file fe_hierarchic.C.

00365 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 355 of file fe_hermite.C.

00355 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 354 of file fe_hermite.C.

00354 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 353 of file fe_hermite.C.

00353 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 352 of file fe_hermite.C.

00352 { return true; }

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

Implements libMesh::FEAbstract.

Definition at line 347 of file fe_clough.C.

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

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

Implements libMesh::FEAbstract.

Definition at line 346 of file fe_clough.C.

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

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

Implements libMesh::FEAbstract.

Definition at line 345 of file fe_clough.C.

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

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

Implements libMesh::FEAbstract.

Definition at line 344 of file fe_clough.C.

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

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

Implements libMesh::FEAbstract.

Definition at line 432 of file fe_bernstein.C.

00432 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 431 of file fe_bernstein.C.

00431 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 430 of file fe_bernstein.C.

00430 { return false; }

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

Implements libMesh::FEAbstract.

Definition at line 429 of file fe_bernstein.C.

00429 { return false; }

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

Implements libMesh::FEAbstract.

template<unsigned int Dim, FEFamily T>
Point libMesh::FE< Dim, T >::map ( const Elem elem,
const Point reference_point 
) [inline, static]
Returns:
the location (in physical space) of the point p located on the reference element.

Definition at line 1231 of file fe_map.C.

References libMesh::TypeVector< T >::add_scaled(), libMesh::Elem::default_order(), libMesh::FE< Dim, T >::n_shape_functions(), libMesh::Elem::point(), libMesh::FE< Dim, T >::shape(), and libMesh::Elem::type().

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

01233 {
01234   libmesh_assert(elem);
01235 
01236   Point p;
01237 
01238   const ElemType type     = elem->type();
01239   const Order order       = elem->default_order();
01240   const unsigned int n_sf = FE<Dim,LAGRANGE>::n_shape_functions(type, order);
01241 
01242   // Lagrange basis functions are used for mapping
01243   for (unsigned int i=0; i<n_sf; i++)
01244     p.add_scaled (elem->point(i),
01245                   FE<Dim,LAGRANGE>::shape(type,
01246                                           order,
01247                                           i,
01248                                           reference_point)
01249                   );
01250 
01251   return p;
01252 }

template<unsigned int Dim, FEFamily T>
Point libMesh::FE< Dim, T >::map_eta ( const Elem elem,
const Point reference_point 
) [inline, static]
Returns:
d(xyz)/deta (in physical space) of the point p located on the reference element.

Definition at line 1283 of file fe_map.C.

References libMesh::TypeVector< T >::add_scaled(), libMesh::Elem::default_order(), libMesh::FE< Dim, T >::n_shape_functions(), libMesh::Elem::point(), libMesh::FE< Dim, T >::shape_deriv(), and libMesh::Elem::type().

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

01285 {
01286   libmesh_assert(elem);
01287 
01288   Point p;
01289 
01290   const ElemType type     = elem->type();
01291   const Order order       = elem->default_order();
01292   const unsigned int n_sf = FE<Dim,LAGRANGE>::n_shape_functions(type, order);
01293 
01294   // Lagrange basis functions are used for mapping
01295   for (unsigned int i=0; i<n_sf; i++)
01296     p.add_scaled (elem->point(i),
01297                   FE<Dim,LAGRANGE>::shape_deriv(type,
01298                                                 order,
01299                                                 i,
01300                                                 1,
01301                                                 reference_point)
01302                   );
01303 
01304   return p;
01305 }

template<unsigned int Dim, FEFamily T>
Point libMesh::FE< Dim, T >::map_xi ( const Elem elem,
const Point reference_point 
) [inline, static]
Returns:
d(xyz)/dxi (in physical space) of the point p located on the reference element.

Definition at line 1257 of file fe_map.C.

References libMesh::TypeVector< T >::add_scaled(), libMesh::Elem::default_order(), libMesh::FE< Dim, T >::n_shape_functions(), libMesh::Elem::point(), libMesh::FE< Dim, T >::shape_deriv(), and libMesh::Elem::type().

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

01259 {
01260   libmesh_assert(elem);
01261 
01262   Point p;
01263 
01264   const ElemType type     = elem->type();
01265   const Order order       = elem->default_order();
01266   const unsigned int n_sf = FE<Dim,LAGRANGE>::n_shape_functions(type, order);
01267 
01268   // Lagrange basis functions are used for mapping
01269   for (unsigned int i=0; i<n_sf; i++)
01270     p.add_scaled (elem->point(i),
01271                   FE<Dim,LAGRANGE>::shape_deriv(type,
01272                                                 order,
01273                                                 i,
01274                                                 0,
01275                                                 reference_point)
01276                   );
01277 
01278   return p;
01279 }

template<unsigned int Dim, FEFamily T>
Point libMesh::FE< Dim, T >::map_zeta ( const Elem elem,
const Point reference_point 
) [inline, static]
Returns:
d(xyz)/dzeta (in physical space) of the point p located on the reference element.

Definition at line 1309 of file fe_map.C.

References libMesh::TypeVector< T >::add_scaled(), libMesh::Elem::default_order(), libMesh::FE< Dim, T >::n_shape_functions(), libMesh::Elem::point(), libMesh::FE< Dim, T >::shape_deriv(), and libMesh::Elem::type().

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

01311 {
01312   libmesh_assert(elem);
01313 
01314   Point p;
01315 
01316   const ElemType type     = elem->type();
01317   const Order order       = elem->default_order();
01318   const unsigned int n_sf = FE<Dim,LAGRANGE>::n_shape_functions(type, order);
01319 
01320   // Lagrange basis functions are used for mapping
01321   for (unsigned int i=0; i<n_sf; i++)
01322     p.add_scaled (elem->point(i),
01323                   FE<Dim,LAGRANGE>::shape_deriv(type,
01324                                                 order,
01325                                                 i,
01326                                                 2,
01327                                                 reference_point)
01328                   );
01329 
01330   return p;
01331 }

template<>
unsigned int libMesh::FE< 3, XYZ >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 907 of file fe_xyz.C.

00907 { return xyz_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, XYZ >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 906 of file fe_xyz.C.

00906 { return xyz_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, XYZ >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 905 of file fe_xyz.C.

00905 { return xyz_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 0, XYZ >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 904 of file fe_xyz.C.

00904 { return xyz_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 3, SZABAB >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 1243 of file fe_szabab.C.

01243 { return szabab_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, SZABAB >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 1242 of file fe_szabab.C.

01242 { return szabab_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, SZABAB >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 1241 of file fe_szabab.C.

01241 { return szabab_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 0, SZABAB >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 1240 of file fe_szabab.C.

01240 { return szabab_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 3, SCALAR >::n_dofs ( const   ElemType,
const Order  o 
) [inline]

Definition at line 90 of file fe_scalar.C.

00090 { return o; }

template<>
unsigned int libMesh::FE< 2, SCALAR >::n_dofs ( const   ElemType,
const Order  o 
) [inline]

Definition at line 89 of file fe_scalar.C.

00089 { return o; }

template<>
unsigned int libMesh::FE< 1, SCALAR >::n_dofs ( const   ElemType,
const Order  o 
) [inline]

Definition at line 88 of file fe_scalar.C.

00088 { return o; }

template<>
unsigned int libMesh::FE< 0, SCALAR >::n_dofs ( const   ElemType,
const Order  o 
) [inline]

Definition at line 87 of file fe_scalar.C.

00087 { return o; }

template<>
unsigned int libMesh::FE< 3, NEDELEC_ONE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 544 of file fe_nedelec_one.C.

00544 { return nedelec_one_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, NEDELEC_ONE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 543 of file fe_nedelec_one.C.

00543 { return nedelec_one_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, NEDELEC_ONE >::n_dofs ( const   ElemType,
const   Order 
) [inline]

Definition at line 542 of file fe_nedelec_one.C.

00542 { NEDELEC_LOW_D_ERROR_MESSAGE }

template<>
unsigned int libMesh::FE< 0, NEDELEC_ONE >::n_dofs ( const   ElemType,
const   Order 
) [inline]

Definition at line 541 of file fe_nedelec_one.C.

00541 { NEDELEC_LOW_D_ERROR_MESSAGE }

template<>
unsigned int libMesh::FE< 3, MONOMIAL >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 383 of file fe_monomial.C.

00383 { return monomial_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, MONOMIAL >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 382 of file fe_monomial.C.

00382 { return monomial_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, MONOMIAL >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 381 of file fe_monomial.C.

00381 { return monomial_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 0, MONOMIAL >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 380 of file fe_monomial.C.

00380 { return monomial_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 3, LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 907 of file fe_lagrange_vec.C.

References libMesh::FE< Dim, T >::n_dofs().

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

template<>
unsigned int libMesh::FE< 2, LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 906 of file fe_lagrange_vec.C.

References libMesh::FE< Dim, T >::n_dofs().

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

template<>
unsigned int libMesh::FE< 1, LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 905 of file fe_lagrange_vec.C.

References libMesh::FE< Dim, T >::n_dofs().

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

template<>
unsigned int libMesh::FE< 0, LAGRANGE_VEC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 904 of file fe_lagrange_vec.C.

References libMesh::FE< Dim, T >::n_dofs().

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

template<>
unsigned int libMesh::FE< 3, LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 822 of file fe_lagrange.C.

00822 { return lagrange_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 821 of file fe_lagrange.C.

00821 { return lagrange_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 820 of file fe_lagrange.C.

00820 { return lagrange_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 0, LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 819 of file fe_lagrange.C.

00819 { return lagrange_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 3, L2_LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 465 of file fe_l2_lagrange.C.

00465 { return l2_lagrange_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, L2_LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 464 of file fe_l2_lagrange.C.

00464 { return l2_lagrange_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, L2_LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 463 of file fe_l2_lagrange.C.

00463 { return l2_lagrange_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 0, L2_LAGRANGE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 462 of file fe_l2_lagrange.C.

00462 { return l2_lagrange_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 3, L2_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 172 of file fe_l2_hierarchic.C.

00172 { return l2_hierarchic_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, L2_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 171 of file fe_l2_hierarchic.C.

00171 { return l2_hierarchic_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, L2_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 170 of file fe_l2_hierarchic.C.

00170 { return l2_hierarchic_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 0, L2_HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 169 of file fe_l2_hierarchic.C.

00169 { return l2_hierarchic_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 3, HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 344 of file fe_hierarchic.C.

00344 { return hierarchic_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 343 of file fe_hierarchic.C.

00343 { return hierarchic_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 342 of file fe_hierarchic.C.

00342 { return hierarchic_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 0, HIERARCHIC >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 341 of file fe_hierarchic.C.

00341 { return hierarchic_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 3, HERMITE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 330 of file fe_hermite.C.

00330 { return hermite_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, HERMITE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 329 of file fe_hermite.C.

00329 { return hermite_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, HERMITE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 328 of file fe_hermite.C.

00328 { return hermite_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 0, HERMITE >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 327 of file fe_hermite.C.

00327 { return hermite_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 3, CLOUGH >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 322 of file fe_clough.C.

00322 { return clough_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, CLOUGH >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 321 of file fe_clough.C.

00321 { return clough_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, CLOUGH >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 320 of file fe_clough.C.

00320 { return clough_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 0, CLOUGH >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 319 of file fe_clough.C.

00319 { return clough_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 3, BERNSTEIN >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 408 of file fe_bernstein.C.

00408 { return bernstein_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 2, BERNSTEIN >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 407 of file fe_bernstein.C.

00407 { return bernstein_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 1, BERNSTEIN >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 406 of file fe_bernstein.C.

00406 { return bernstein_n_dofs(t, o); }

template<>
unsigned int libMesh::FE< 0, BERNSTEIN >::n_dofs ( const ElemType  t,
const Order  o 
) [inline]

Definition at line 405 of file fe_bernstein.C.

00405 { return bernstein_n_dofs(t, o); }

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

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

Referenced by libMesh::FE< Dim, T >::dofs_on_edge(), libMesh::FE< Dim, T >::dofs_on_side(), libMesh::FE< Dim, T >::n_dofs(), libMesh::FE< Dim, LAGRANGE_VEC >::n_shape_functions(), and libMesh::FE< Dim, T >::n_shape_functions().

template<>
unsigned int libMesh::FE< 3, XYZ >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 914 of file fe_xyz.C.

00914 { return 0; }

template<>
unsigned int libMesh::FE< 2, XYZ >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 913 of file fe_xyz.C.

00913 { return 0; }

template<>
unsigned int libMesh::FE< 1, XYZ >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 912 of file fe_xyz.C.

00912 { return 0; }

template<>
unsigned int libMesh::FE< 0, XYZ >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 911 of file fe_xyz.C.

00911 { return 0; }

template<>
unsigned int libMesh::FE< 3, SZABAB >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 1249 of file fe_szabab.C.

01249 { return szabab_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 2, SZABAB >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 1248 of file fe_szabab.C.

01248 { return szabab_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 1, SZABAB >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 1247 of file fe_szabab.C.

01247 { return szabab_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 0, SZABAB >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 1246 of file fe_szabab.C.

01246 { return szabab_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 3, SCALAR >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 97 of file fe_scalar.C.

00097 { return 0; }

template<>
unsigned int libMesh::FE< 2, SCALAR >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 96 of file fe_scalar.C.

00096 { return 0; }

template<>
unsigned int libMesh::FE< 1, SCALAR >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 95 of file fe_scalar.C.

00095 { return 0; }

template<>
unsigned int libMesh::FE< 0, SCALAR >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 94 of file fe_scalar.C.

00094 { return 0; }

template<>
unsigned int libMesh::FE< 3, NEDELEC_ONE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 552 of file fe_nedelec_one.C.

00552 { return nedelec_one_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 2, NEDELEC_ONE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 551 of file fe_nedelec_one.C.

00551 { return nedelec_one_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 1, NEDELEC_ONE >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 550 of file fe_nedelec_one.C.

00550 { NEDELEC_LOW_D_ERROR_MESSAGE }

template<>
unsigned int libMesh::FE< 0, NEDELEC_ONE >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 549 of file fe_nedelec_one.C.

00549 { NEDELEC_LOW_D_ERROR_MESSAGE }

template<>
unsigned int libMesh::FE< 3, MONOMIAL >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 390 of file fe_monomial.C.

00390 { return 0; }

template<>
unsigned int libMesh::FE< 2, MONOMIAL >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 389 of file fe_monomial.C.

00389 { return 0; }

template<>
unsigned int libMesh::FE< 1, MONOMIAL >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 388 of file fe_monomial.C.

00388 { return 0; }

template<>
unsigned int libMesh::FE< 0, MONOMIAL >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 387 of file fe_monomial.C.

00387 { return 0; }

template<>
unsigned int libMesh::FE< 3, LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 915 of file fe_lagrange_vec.C.

References libMesh::FE< Dim, T >::n_dofs_at_node().

00915 { return 3*FE<2,LAGRANGE>::n_dofs_at_node(t,o,n); }

template<>
unsigned int libMesh::FE< 2, LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 914 of file fe_lagrange_vec.C.

References libMesh::FE< Dim, T >::n_dofs_at_node().

00914 { return 2*FE<2,LAGRANGE>::n_dofs_at_node(t,o,n); }

template<>
unsigned int libMesh::FE< 1, LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 913 of file fe_lagrange_vec.C.

References libMesh::FE< Dim, T >::n_dofs_at_node().

00913 { return FE<1,LAGRANGE>::n_dofs_at_node(t,o,n); }

template<>
unsigned int libMesh::FE< 0, LAGRANGE_VEC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 912 of file fe_lagrange_vec.C.

References libMesh::FE< Dim, T >::n_dofs_at_node().

00912 { return FE<0,LAGRANGE>::n_dofs_at_node(t,o,n); }

template<>
unsigned int libMesh::FE< 3, LAGRANGE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 830 of file fe_lagrange.C.

00830 { return lagrange_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 2, LAGRANGE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 829 of file fe_lagrange.C.

00829 { return lagrange_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 1, LAGRANGE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 828 of file fe_lagrange.C.

00828 { return lagrange_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 0, LAGRANGE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 827 of file fe_lagrange.C.

00827 { return lagrange_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 3, L2_LAGRANGE >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 472 of file fe_l2_lagrange.C.

00472 { return 0; }

template<>
unsigned int libMesh::FE< 2, L2_LAGRANGE >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 471 of file fe_l2_lagrange.C.

00471 { return 0; }

template<>
unsigned int libMesh::FE< 1, L2_LAGRANGE >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 470 of file fe_l2_lagrange.C.

00470 { return 0; }

template<>
unsigned int libMesh::FE< 0, L2_LAGRANGE >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 469 of file fe_l2_lagrange.C.

00469 { return 0; }

template<>
unsigned int libMesh::FE< 3, L2_HIERARCHIC >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 179 of file fe_l2_hierarchic.C.

00179 { return 0; }

template<>
unsigned int libMesh::FE< 2, L2_HIERARCHIC >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 178 of file fe_l2_hierarchic.C.

00178 { return 0; }

template<>
unsigned int libMesh::FE< 1, L2_HIERARCHIC >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 177 of file fe_l2_hierarchic.C.

00177 { return 0; }

template<>
unsigned int libMesh::FE< 0, L2_HIERARCHIC >::n_dofs_at_node ( const   ElemType,
const   Order,
const unsigned  int 
) [inline]

Definition at line 176 of file fe_l2_hierarchic.C.

00176 { return 0; }

template<>
unsigned int libMesh::FE< 3, HIERARCHIC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 350 of file fe_hierarchic.C.

00350 { return hierarchic_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 2, HIERARCHIC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 349 of file fe_hierarchic.C.

00349 { return hierarchic_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 1, HIERARCHIC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 348 of file fe_hierarchic.C.

00348 { return hierarchic_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 0, HIERARCHIC >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 347 of file fe_hierarchic.C.

00347 { return hierarchic_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 3, HERMITE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 337 of file fe_hermite.C.

00337 { return hermite_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 2, HERMITE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 336 of file fe_hermite.C.

00336 { return hermite_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 1, HERMITE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 335 of file fe_hermite.C.

00335 { return hermite_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 0, HERMITE >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 334 of file fe_hermite.C.

00334 { return hermite_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 3, CLOUGH >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 329 of file fe_clough.C.

00329 { return clough_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 2, CLOUGH >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 328 of file fe_clough.C.

00328 { return clough_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 1, CLOUGH >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 327 of file fe_clough.C.

00327 { return clough_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 0, CLOUGH >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 326 of file fe_clough.C.

00326 { return clough_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 3, BERNSTEIN >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 414 of file fe_bernstein.C.

00414 { return bernstein_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 2, BERNSTEIN >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
) [inline]

Definition at line 413 of file fe_bernstein.C.

00413 { return bernstein_n_dofs_at_node(t, o, n); }

template<>
unsigned int libMesh::FE< 1, BERNSTEIN >::n_dofs_at_node ( const ElemType  t,
const Order  o,
const unsigned int  n 
)