libMesh
fe_transformation_base.C
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2017 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 #include "libmesh/fe_transformation_base.h"
19 #include "libmesh/h1_fe_transformation.h"
20 #include "libmesh/hcurl_fe_transformation.h"
21 #include "libmesh/fe_type.h"
22 
23 namespace libMesh
24 {
25 
26 template<typename OutputShape>
28 {
29  switch (fe_type.family)
30  {
31  // H1 Conforming Elements
32  case LAGRANGE:
33  case HIERARCHIC:
34  case BERNSTEIN:
35  case SZABAB:
36  case CLOUGH: // PB: Really H2
37  case HERMITE: // PB: Really H2
38  case SUBDIVISION:
39  case LAGRANGE_VEC:
40  case MONOMIAL: // PB: Shouldn't this be L2 conforming?
41  case XYZ: // PB: Shouldn't this be L2 conforming?
42  case L2_HIERARCHIC: // PB: Shouldn't this be L2 conforming?
43  case L2_LAGRANGE: // PB: Shouldn't this be L2 conforming?
44  case JACOBI_20_00: // PB: For infinite elements...
45  case JACOBI_30_00: // PB: For infinite elements...
47 
48  // HCurl Conforming Elements
49  case NEDELEC_ONE:
51 
52  // HDiv Conforming Elements
53  // L2 Conforming Elements
54 
55  // Other...
56  case SCALAR:
57  // Should never need this for SCALARs
59 
60  default:
61  libmesh_error_msg("Unknown family = " << fe_type.family);
62  }
63 
64  libmesh_error_msg("We'll never get here!");
66 }
67 
68 template class FETransformationBase<Real>;
70 
71 } // namespace libMesh
class FEType hides (possibly multiple) FEFamily and approximation orders, thereby enabling specialize...
Definition: fe_type.h:178
FEFamily family
The type of finite element.
Definition: fe_type.h:203
static UniquePtr< FETransformationBase< OutputShape > > build(const FEType &type)
Builds an FETransformation object based on the finite element type.
This class handles the computation of the shape functions in the physical domain for HCurl conforming...
The libMesh namespace provides an interface to certain functionality in the library.
This class handles the computation of the shape functions in the physical domain for H1 conforming el...
std::unique_ptr< T > UniquePtr
Definition: auto_ptr.h:46
This class handles the computation of the shape functions in the physical domain. ...
Definition: fe_base.h:55