20 #ifndef LIBMESH_FE_INTERFACE_H 21 #define LIBMESH_FE_INTERFACE_H 49 #ifdef LIBMESH_ENABLE_PERIODIC 50 class PeriodicBoundaries;
51 class PointLocatorBase;
98 static unsigned int n_dofs(
const unsigned int dim,
112 const unsigned int n);
145 const unsigned int dim,
148 std::vector<unsigned int> & di);
158 const unsigned int dim,
161 std::vector<unsigned int> & di);
174 static void nodal_soln(
const unsigned int dim,
177 const std::vector<Number> & elem_soln,
203 const bool secure =
true);
219 const std::vector<Point> & physical_points,
220 std::vector<Point> & reference_points,
222 const bool secure =
true);
244 static Real shape(
const unsigned int dim,
247 const unsigned int i,
259 static Real shape(
const unsigned int dim,
262 const unsigned int i,
274 template<
typename OutputType>
275 static void shape(
const unsigned int dim,
278 const unsigned int i,
291 template<
typename OutputType>
292 static void shape(
const unsigned int dim,
295 const unsigned int i,
314 #ifdef LIBMESH_ENABLE_AMR 322 const unsigned int variable_number,
324 #endif // #ifdef LIBMESH_ENABLE_AMR 326 #ifdef LIBMESH_ENABLE_PERIODIC 337 const unsigned int variable_number,
339 #endif // #ifdef LIBMESH_ENABLE_PERIODIC 383 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 395 static unsigned int ifem_n_dofs(
const unsigned int dim,
402 const unsigned int n);
411 const std::vector<Number> & elem_soln,
424 const bool secure =
true);
429 const std::vector<Point> & physical_points,
430 std::vector<Point> & reference_points,
432 const bool secure =
true);
442 const unsigned int i,
448 const unsigned int i,
463 #endif // LIBMESH_FE_INTERFACE_H static unsigned int n_dofs_per_elem(const unsigned int dim, const FEType &fe_t, const ElemType t)
static void dofs_on_edge(const Elem *const elem, const unsigned int dim, const FEType &fe_t, unsigned int e, std::vector< unsigned int > &di)
Manages the family, order, etc. parameters for a given FE.
static Point map(unsigned int dim, const FEType &fe_t, const Elem *elem, const Point &p)
static unsigned int n_dofs(const unsigned int dim, const FEType &fe_t, const ElemType t)
static unsigned int ifem_n_shape_functions(const unsigned int dim, const FEType &fe_t, const ElemType t)
static bool ifem_on_reference_element(const Point &p, const ElemType t, const Real eps)
static Real ifem_shape(const unsigned int dim, const FEType &fe_t, const ElemType t, const unsigned int i, const Point &p)
static void dofs_on_side(const Elem *const elem, const unsigned int dim, const FEType &fe_t, unsigned int s, std::vector< unsigned int > &di)
Helper class used with FEInterface::compute_data().
Maps between boundary ids and PeriodicBoundaryBase objects.
The base class for all geometric element types.
static FEFieldType field_type(const FEType &fe_type)
static const Real TOLERANCE
static Point ifem_inverse_map(const unsigned int dim, const FEType &fe_t, const Elem *elem, const Point &p, const Real tolerance=TOLERANCE, const bool secure=true)
static unsigned int max_order(const FEType &fe_t, const ElemType &el_t)
static void compute_constraints(DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
Manages the degrees of freedom (DOFs) in a simulation.
static void ifem_compute_data(const unsigned int dim, const FEType &fe_t, const Elem *elem, FEComputeData &data)
static bool extra_hanging_dofs(const FEType &fe_t)
static unsigned int n_shape_functions(const unsigned int dim, const FEType &fe_t, const ElemType t)
static Real shape(const unsigned int dim, const FEType &fe_t, const ElemType t, const unsigned int i, const Point &p)
static void compute_data(const unsigned int dim, const FEType &fe_t, const Elem *elem, FEComputeData &data)
static Point inverse_map(const unsigned int dim, const FEType &fe_t, const Elem *elem, const Point &p, const Real tolerance=TOLERANCE, const bool secure=true)
static Point ifem_map(const unsigned int dim, const FEType &fe_t, const Elem *elem, const Point &p)
static void ifem_nodal_soln(const unsigned int dim, const FEType &fe_t, const Elem *elem, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
static bool on_reference_element(const Point &p, const ElemType t, const Real eps=TOLERANCE)
Interface class which provides access to FE functions.
static unsigned int ifem_n_dofs_per_elem(const unsigned int dim, const FEType &fe_t, const ElemType t)
static unsigned int n_vec_dim(const MeshBase &mesh, const FEType &fe_type)
static n_dofs_at_node_ptr n_dofs_at_node_function(const unsigned int dim, const FEType &fe_t)
static unsigned int n_dofs_at_node(const unsigned int dim, const FEType &fe_t, const ElemType t, const unsigned int n)
static unsigned int ifem_n_dofs(const unsigned int dim, const FEType &fe_t, const ElemType t)
unsigned int(* n_dofs_at_node_ptr)(const ElemType, const Order, const unsigned int)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static bool is_InfFE_elem(const ElemType et)
static void nodal_soln(const unsigned int dim, const FEType &fe_t, const Elem *elem, const std::vector< Number > &elem_soln, std::vector< Number > &nodal_soln)
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)
A geometric point in (x,y,z) space.
static unsigned int ifem_n_dofs_at_node(const unsigned int dim, const FEType &fe_t, const ElemType t, const unsigned int n)