libMesh
Public Member Functions | Static Public Member Functions | List of all members
libMesh::FETransformationBase< OutputShape > Class Template Referenceabstract

This class handles the computation of the shape functions in the physical domain. More...

#include <fe_base.h>

Inheritance diagram for libMesh::FETransformationBase< OutputShape >:
[legend]

Public Member Functions

 FETransformationBase ()
 
virtual ~FETransformationBase ()
 
virtual void init_map_phi (const FEGenericBase< OutputShape > &fe) const =0
 Pre-requests any necessary data from FEMap. More...
 
virtual void init_map_dphi (const FEGenericBase< OutputShape > &fe) const =0
 Pre-requests any necessary data from FEMap. More...
 
virtual void init_map_d2phi (const FEGenericBase< OutputShape > &fe) const =0
 Pre-requests any necessary data from FEMap. More...
 
virtual void map_phi (const unsigned int dim, const Elem *const elem, const std::vector< Point > &qp, const FEGenericBase< OutputShape > &fe, std::vector< std::vector< OutputShape >> &phi) const =0
 Evaluates shape functions in physical coordinates based on proper finite element transformation. More...
 
virtual void map_dphi (const unsigned int dim, const Elem *const elem, const std::vector< Point > &qp, const FEGenericBase< OutputShape > &fe, std::vector< std::vector< typename FEGenericBase< OutputShape >::OutputGradient >> &dphi, std::vector< std::vector< OutputShape >> &dphidx, std::vector< std::vector< OutputShape >> &dphidy, std::vector< std::vector< OutputShape >> &dphidz) const =0
 Evaluates shape function gradients in physical coordinates based on proper finite element transformation. More...
 
virtual void map_d2phi (const unsigned int dim, const std::vector< Point > &qp, const FEGenericBase< OutputShape > &fe, std::vector< std::vector< typename FEGenericBase< OutputShape >::OutputTensor >> &d2phi, 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) const =0
 Evaluates shape function Hessians in physical coordinates based on proper finite element transformation. More...
 
virtual void map_curl (const unsigned int dim, const Elem *const elem, const std::vector< Point > &qp, const FEGenericBase< OutputShape > &fe, std::vector< std::vector< OutputShape >> &curl_phi) const =0
 Evaluates the shape function curl in physical coordinates based on proper finite element transformation. More...
 
virtual void map_div (const unsigned int dim, const Elem *const elem, const std::vector< Point > &qp, const FEGenericBase< OutputShape > &fe, std::vector< std::vector< typename FEGenericBase< OutputShape >::OutputDivergence >> &div_phi) const =0
 Evaluates the shape function divergence in physical coordinates based on proper finite element transformation. More...
 

Static Public Member Functions

static std::unique_ptr< FETransformationBase< OutputShape > > build (const FEType &type)
 Builds an FETransformation object based on the finite element type. More...
 

Detailed Description

template<typename OutputShape>
class libMesh::FETransformationBase< OutputShape >

This class handles the computation of the shape functions in the physical domain.

Derived classes implement the particular mapping: H1, HCurl, HDiv, or L2. This class assumes the FEGenericBase object has been initialized in the reference domain (i.e. init_shape_functions has been called).

Author
Paul T. Bauman
Date
2012

Definition at line 53 of file fe_base.h.

Constructor & Destructor Documentation

◆ FETransformationBase()

template<typename OutputShape >
libMesh::FETransformationBase< OutputShape >::FETransformationBase ( )
inline

Definition at line 46 of file fe_transformation_base.h.

46 {}

◆ ~FETransformationBase()

template<typename OutputShape >
virtual libMesh::FETransformationBase< OutputShape >::~FETransformationBase ( )
inlinevirtual

Definition at line 47 of file fe_transformation_base.h.

47 {}

Member Function Documentation

◆ build()

template<typename OutputShape >
std::unique_ptr< FETransformationBase< OutputShape > > libMesh::FETransformationBase< OutputShape >::build ( const FEType type)
static

Builds an FETransformation object based on the finite element type.

Definition at line 28 of file fe_transformation_base.C.

29 {
30  switch (fe_type.family)
31  {
32  // H1 Conforming Elements
33  case LAGRANGE:
34  case HIERARCHIC:
35  case BERNSTEIN:
36  case SZABAB:
37  case CLOUGH: // PB: Really H2
38  case HERMITE: // PB: Really H2
39  case SUBDIVISION:
40  case LAGRANGE_VEC:
41  case MONOMIAL: // PB: Shouldn't this be L2 conforming?
42  case MONOMIAL_VEC: // PB: Shouldn't this be L2 conforming?
43  case XYZ: // PB: Shouldn't this be L2 conforming?
44  case RATIONAL_BERNSTEIN:
45  case L2_HIERARCHIC: // PB: Shouldn't this be L2 conforming?
46  case L2_LAGRANGE: // PB: Shouldn't this be L2 conforming?
47  case JACOBI_20_00: // PB: For infinite elements...
48  case JACOBI_30_00: // PB: For infinite elements...
49  return libmesh_make_unique<H1FETransformation<OutputShape>>();
50 
51  // HCurl Conforming Elements
52  case NEDELEC_ONE:
53  return libmesh_make_unique<HCurlFETransformation<OutputShape>>();
54 
55  // HDiv Conforming Elements
56  // L2 Conforming Elements
57 
58  // Other...
59  case SCALAR:
60  // Should never need this for SCALARs
61  return libmesh_make_unique<H1FETransformation<OutputShape>>();
62 
63  default:
64  libmesh_error_msg("Unknown family = " << fe_type.family);
65  }
66 }

References libMesh::BERNSTEIN, libMesh::CLOUGH, libMesh::FEType::family, libMesh::HERMITE, libMesh::HIERARCHIC, libMesh::JACOBI_20_00, libMesh::JACOBI_30_00, libMesh::L2_HIERARCHIC, libMesh::L2_LAGRANGE, libMesh::LAGRANGE, libMesh::LAGRANGE_VEC, libMesh::MONOMIAL, libMesh::MONOMIAL_VEC, libMesh::NEDELEC_ONE, libMesh::RATIONAL_BERNSTEIN, libMesh::SCALAR, libMesh::SUBDIVISION, libMesh::SZABAB, and libMesh::XYZ.

◆ init_map_d2phi()

template<typename OutputShape >
virtual void libMesh::FETransformationBase< OutputShape >::init_map_d2phi ( const FEGenericBase< OutputShape > &  fe) const
pure virtual

Pre-requests any necessary data from FEMap.

Implemented in libMesh::H1FETransformation< OutputShape >, and libMesh::HCurlFETransformation< OutputShape >.

◆ init_map_dphi()

template<typename OutputShape >
virtual void libMesh::FETransformationBase< OutputShape >::init_map_dphi ( const FEGenericBase< OutputShape > &  fe) const
pure virtual

Pre-requests any necessary data from FEMap.

Implemented in libMesh::H1FETransformation< OutputShape >, and libMesh::HCurlFETransformation< OutputShape >.

◆ init_map_phi()

template<typename OutputShape >
virtual void libMesh::FETransformationBase< OutputShape >::init_map_phi ( const FEGenericBase< OutputShape > &  fe) const
pure virtual

Pre-requests any necessary data from FEMap.

Implemented in libMesh::H1FETransformation< OutputShape >, and libMesh::HCurlFETransformation< OutputShape >.

◆ map_curl()

template<typename OutputShape >
virtual void libMesh::FETransformationBase< OutputShape >::map_curl ( const unsigned int  dim,
const Elem *const  elem,
const std::vector< Point > &  qp,
const FEGenericBase< OutputShape > &  fe,
std::vector< std::vector< OutputShape >> &  curl_phi 
) const
pure virtual

Evaluates the shape function curl in physical coordinates based on proper finite element transformation.

Implemented in libMesh::HCurlFETransformation< OutputShape >, and libMesh::H1FETransformation< OutputShape >.

◆ map_d2phi()

template<typename OutputShape >
virtual void libMesh::FETransformationBase< OutputShape >::map_d2phi ( const unsigned int  dim,
const std::vector< Point > &  qp,
const FEGenericBase< OutputShape > &  fe,
std::vector< std::vector< typename FEGenericBase< OutputShape >::OutputTensor >> &  d2phi,
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 
) const
pure virtual

Evaluates shape function Hessians in physical coordinates based on proper finite element transformation.

Implemented in libMesh::HCurlFETransformation< OutputShape >, and libMesh::H1FETransformation< OutputShape >.

◆ map_div()

template<typename OutputShape >
virtual void libMesh::FETransformationBase< OutputShape >::map_div ( const unsigned int  dim,
const Elem *const  elem,
const std::vector< Point > &  qp,
const FEGenericBase< OutputShape > &  fe,
std::vector< std::vector< typename FEGenericBase< OutputShape >::OutputDivergence >> &  div_phi 
) const
pure virtual

Evaluates the shape function divergence in physical coordinates based on proper finite element transformation.

Implemented in libMesh::HCurlFETransformation< OutputShape >, and libMesh::H1FETransformation< OutputShape >.

◆ map_dphi()

template<typename OutputShape >
virtual void libMesh::FETransformationBase< OutputShape >::map_dphi ( const unsigned int  dim,
const Elem *const  elem,
const std::vector< Point > &  qp,
const FEGenericBase< OutputShape > &  fe,
std::vector< std::vector< typename FEGenericBase< OutputShape >::OutputGradient >> &  dphi,
std::vector< std::vector< OutputShape >> &  dphidx,
std::vector< std::vector< OutputShape >> &  dphidy,
std::vector< std::vector< OutputShape >> &  dphidz 
) const
pure virtual

Evaluates shape function gradients in physical coordinates based on proper finite element transformation.

Implemented in libMesh::HCurlFETransformation< OutputShape >, and libMesh::H1FETransformation< OutputShape >.

◆ map_phi()

template<typename OutputShape >
virtual void libMesh::FETransformationBase< OutputShape >::map_phi ( const unsigned int  dim,
const Elem *const  elem,
const std::vector< Point > &  qp,
const FEGenericBase< OutputShape > &  fe,
std::vector< std::vector< OutputShape >> &  phi 
) const
pure virtual

Evaluates shape functions in physical coordinates based on proper finite element transformation.

Implemented in libMesh::H1FETransformation< OutputShape >, and libMesh::HCurlFETransformation< OutputShape >.


The documentation for this class was generated from the following files:
libMesh::CLOUGH
Definition: enum_fe_family.h:53
libMesh::L2_HIERARCHIC
Definition: enum_fe_family.h:40
libMesh::HERMITE
Definition: enum_fe_family.h:54
libMesh::JACOBI_20_00
Definition: enum_fe_family.h:49
libMesh::XYZ
Definition: enum_fe_family.h:46
libMesh::MONOMIAL_VEC
Definition: enum_fe_family.h:62
libMesh::SZABAB
Definition: enum_fe_family.h:44
libMesh::JACOBI_30_00
Definition: enum_fe_family.h:50
libMesh::RATIONAL_BERNSTEIN
Definition: enum_fe_family.h:64
libMesh::BERNSTEIN
Definition: enum_fe_family.h:43
libMesh::HIERARCHIC
Definition: enum_fe_family.h:37
libMesh::MONOMIAL
Definition: enum_fe_family.h:39
libMesh::NEDELEC_ONE
Definition: enum_fe_family.h:61
libMesh::L2_LAGRANGE
Definition: enum_fe_family.h:41
libMesh::LAGRANGE_VEC
Definition: enum_fe_family.h:60
libMesh::LAGRANGE
Definition: enum_fe_family.h:36
libMesh::SCALAR
Definition: enum_fe_family.h:58
libMesh::SUBDIVISION
Definition: enum_fe_family.h:55