libMesh
Static Public Member Functions | Private Member Functions | List of all members
libMesh::InfFEBase Class Reference

This nested class contains most of the static methods related to the base part of an infinite element. More...

#include <inf_fe.h>

Static Public Member Functions

static Elembuild_elem (const Elem *inf_elem)
 Build the base element of an infinite element. More...
 
static ElemType get_elem_type (const ElemType type)
 
static unsigned int n_base_mapping_sf (const Elem &base_elem, const Order base_mapping_order)
 

Private Member Functions

 InfFEBase ()
 Never use an object of this type. More...
 

Detailed Description

This nested class contains most of the static methods related to the base part of an infinite element.

Only static members are provided, for use within InfFE and InfFEMap.

Author
Daniel Dreyer
Date
2003

Definition at line 147 of file inf_fe.h.

Constructor & Destructor Documentation

◆ InfFEBase()

libMesh::InfFEBase::InfFEBase ( )
inlineprivate

Never use an object of this type.

Definition at line 154 of file inf_fe.h.

154 {}

Member Function Documentation

◆ build_elem()

Elem * libMesh::InfFEBase::build_elem ( const Elem inf_elem)
static

Build the base element of an infinite element.

Be careful, this method allocates memory! So be sure to delete the new element afterward.

Definition at line 35 of file inf_fe_base_radial.C.

36 {
37  std::unique_ptr<const Elem> ape(inf_elem->build_side_ptr(0));
38 
39  // The incoming inf_elem is const, but this function is required to
40  // return a non-const Elem * so that it can be used by
41  // update_base_elem(). Therefore a const_cast seems to be
42  // unavoidable here.
43  return const_cast<Elem *>(ape.release());
44 }

References libMesh::Elem::build_side_ptr().

Referenced by libMesh::InfFEMap::inverse_map(), libMesh::InfFEMap::map(), and libMesh::InfFE< Dim, T_radial, T_map >::update_base_elem().

◆ get_elem_type()

ElemType libMesh::InfFEBase::get_elem_type ( const ElemType  type)
static
Returns
The base element associated to type. This is, for example, TRI3 for INFPRISM6.

Definition at line 49 of file inf_fe_base_radial.C.

50 {
51  switch (type)
52  {
53  // 3D infinite elements:
54  // with Dim=3 -> infinite elements on their own
55  case INFHEX8:
56  return QUAD4;
57 
58  case INFHEX16:
59  return QUAD8;
60 
61  case INFHEX18:
62  return QUAD9;
63 
64  case INFPRISM6:
65  return TRI3;
66 
67  case INFPRISM12:
68  return TRI6;
69 
70  // 2D infinite elements:
71  // with Dim=3 -> used as boundary condition,
72  // with Dim=2 -> infinite elements on their own
73  case INFQUAD4:
74  return EDGE2;
75 
76  case INFQUAD6:
77  return EDGE3;
78 
79  // 1D infinite elements:
80  // with Dim=2 -> used as boundary condition,
81  // with Dim=1 -> infinite elements on their own,
82  // but no base element!
83  case INFEDGE2:
84  return INVALID_ELEM;
85 
86  default:
87  libmesh_error_msg("ERROR: Unsupported element type!: " << type);
88  }
89 }

References libMesh::EDGE2, libMesh::EDGE3, libMesh::INFEDGE2, libMesh::INFHEX16, libMesh::INFHEX18, libMesh::INFHEX8, libMesh::INFPRISM12, libMesh::INFPRISM6, libMesh::INFQUAD4, libMesh::INFQUAD6, libMesh::INVALID_ELEM, libMesh::QUAD4, libMesh::QUAD8, libMesh::QUAD9, libMesh::TRI3, and libMesh::TRI6.

Referenced by libMesh::InfFE< Dim, T_radial, T_map >::combine_base_radial(), libMesh::InfFE< Dim, T_radial, T_map >::compute_shape_indices(), libMesh::InfFE< Dim, T_radial, T_map >::n_dofs(), libMesh::InfFE< Dim, T_radial, T_map >::n_dofs_at_node(), libMesh::InfFE< Dim, T_radial, T_map >::n_dofs_per_elem(), libMesh::InfFE< Dim, T_radial, T_map >::shape(), and libMesh::InfFE< Dim, T_radial, T_map >::shape_deriv().

◆ n_base_mapping_sf()

unsigned int libMesh::InfFEBase::n_base_mapping_sf ( const Elem base_elem,
const Order  base_mapping_order 
)
static
Returns
The number of shape functions used in the mapping in the base element of type base_elem_type mapped with order base_mapping_order

Definition at line 95 of file inf_fe_base_radial.C.

97 {
98  switch (base_elem.dim())
99  {
100  case 0:
101  return 1;
102  case 1:
103  return FE<1,LAGRANGE>::n_shape_functions (base_elem.type(),
104  base_mapping_order);
105  case 2:
106  return FE<2,LAGRANGE>::n_shape_functions (base_elem.type(),
107  base_mapping_order);
108  default:
109  libmesh_error_msg("Unsupported base_elem dim = " << base_elem.dim());
110  }
111 }

References libMesh::Elem::dim(), libMesh::FE< Dim, T >::n_shape_functions(), and libMesh::Elem::type().

Referenced by libMesh::InfFE< Dim, T_radial, T_map >::init_face_shape_functions(), and libMesh::InfFE< Dim, T_radial, T_map >::init_shape_functions().


The documentation for this class was generated from the following files:
libMesh::FE::n_shape_functions
virtual unsigned int n_shape_functions() const override
Definition: fe.C:50
libMesh::INFHEX8
Definition: enum_elem_type.h:60
libMesh::INFQUAD4
Definition: enum_elem_type.h:58
libMesh::INFEDGE2
Definition: enum_elem_type.h:57
libMesh::INFPRISM6
Definition: enum_elem_type.h:63
libMesh::INFHEX18
Definition: enum_elem_type.h:62
libMesh::QUAD4
Definition: enum_elem_type.h:41
libMesh::TRI3
Definition: enum_elem_type.h:39
libMesh::INFHEX16
Definition: enum_elem_type.h:61
libMesh::INFPRISM12
Definition: enum_elem_type.h:64
libMesh::TRI6
Definition: enum_elem_type.h:40
libMesh::INVALID_ELEM
Definition: enum_elem_type.h:75
libMesh::INFQUAD6
Definition: enum_elem_type.h:59
libMesh::EDGE3
Definition: enum_elem_type.h:36
libMesh::QUAD9
Definition: enum_elem_type.h:43
libMesh::EDGE2
Definition: enum_elem_type.h:35
libMesh::QUAD8
Definition: enum_elem_type.h:42