libMesh
h1_fe_transformation.h
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 #ifndef LIBMESH_H1_FE_TRANSFORMATION_H
19 #define LIBMESH_H1_FE_TRANSFORMATION_H
20 
21 #include "libmesh/fe_transformation_base.h"
22 #include "libmesh/compare_types.h"
23 
24 namespace libMesh
25 {
26 
27 // Forward declarations
28 class Elem;
29 
39 template<typename OutputShape>
40 class H1FETransformation : public FETransformationBase<OutputShape>
41 {
42 public:
43 
45  : FETransformationBase<OutputShape>(){}
46 
47  virtual ~H1FETransformation(){}
48 
52  virtual void init_map_phi(const FEGenericBase<OutputShape> & fe) const libmesh_override;
53 
57  virtual void init_map_dphi(const FEGenericBase<OutputShape> & fe) const libmesh_override;
58 
62  virtual void init_map_d2phi(const FEGenericBase<OutputShape> & fe) const libmesh_override;
63 
68  virtual void map_phi(const unsigned int,
69  const Elem * const,
70  const std::vector<Point> &,
72  std::vector<std::vector<OutputShape>> &) const libmesh_override;
73 
78  virtual void map_dphi(const unsigned int dim,
79  const Elem * const elem,
80  const std::vector<Point> & qp,
81  const FEGenericBase<OutputShape> & fe,
82  std::vector<std::vector<typename FEGenericBase<OutputShape>::OutputGradient>> & dphi,
83  std::vector<std::vector<OutputShape>> & dphidx,
84  std::vector<std::vector<OutputShape>> & dphidy,
85  std::vector<std::vector<OutputShape>> & dphidz) const libmesh_override;
86 
87 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
88 
92  virtual void map_d2phi(const unsigned int dim,
93  const std::vector<Point> & qp,
94  const FEGenericBase<OutputShape> & fe,
95  std::vector<std::vector<typename FEGenericBase<OutputShape>::OutputTensor>> & d2phi,
96  std::vector<std::vector<OutputShape>> & d2phidx2,
97  std::vector<std::vector<OutputShape>> & d2phidxdy,
98  std::vector<std::vector<OutputShape>> & d2phidxdz,
99  std::vector<std::vector<OutputShape>> & d2phidy2,
100  std::vector<std::vector<OutputShape>> & d2phidydz,
101  std::vector<std::vector<OutputShape>> & d2phidz2) const libmesh_override;
102 #endif //LIBMESH_ENABLE_SECOND_DERIVATIVES
103 
108  virtual void map_curl(const unsigned int dim,
109  const Elem * const elem,
110  const std::vector<Point> & qp,
111  const FEGenericBase<OutputShape> & fe,
112  std::vector<std::vector<OutputShape>> & curl_phi) const libmesh_override;
113 
118  virtual void map_div(const unsigned int dim,
119  const Elem * const elem,
120  const std::vector<Point> & qp,
121  const FEGenericBase<OutputShape> & fe,
122  std::vector<std::vector<typename FEGenericBase<OutputShape>::OutputDivergence>> & div_phi) const libmesh_override;
123 
124 }; // class H1FETransformation
125 
126 }
127 
128 #endif // LIBMESH_H1_FE_TRANSFORMATION_H
virtual void init_map_dphi(const FEGenericBase< OutputShape > &fe) const libmesh_override
Pre-requests any necessary data from FEMap.
unsigned int dim
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 libmesh_override
Evaluates shape function Hessians in physical coordinates based on H1 conforming finite element trans...
This is the base class from which all geometric element types are derived.
Definition: elem.h:89
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 libmesh_override
Evaluates the shape function divergence in physical coordinates based on H1 conforming finite element...
virtual void init_map_phi(const FEGenericBase< OutputShape > &fe) const libmesh_override
Pre-requests any necessary data from FEMap.
This class defines a vector in LIBMESH_DIM dimensional Real or Complex space.
The libMesh namespace provides an interface to certain functionality in the library.
TensorTools::DecrementRank< OutputShape >::type OutputDivergence
Definition: fe_base.h:123
virtual void init_map_d2phi(const FEGenericBase< OutputShape > &fe) const libmesh_override
Pre-requests any necessary data from FEMap.
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 libmesh_override
Evaluates the shape function curl in physical coordinates based on H1 conforming finite element trans...
virtual void map_phi(const unsigned int, const Elem *const, const std::vector< Point > &, const FEGenericBase< OutputShape > &, std::vector< std::vector< OutputShape >> &) const libmesh_override
Evaluates shape functions in physical coordinates for H1 conforming elements.
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 libmesh_override
Evaluates shape function gradients in physical coordinates for H1 conforming elements.
This class handles the computation of the shape functions in the physical domain. ...
Definition: fe_base.h:55
This class forms the foundation from which generic finite elements may be derived.