libMesh
Loading...
Searching...
No Matches
h1_fe_transformation.h
Go to the documentation of this file.
1// The libMesh Finite Element Library.
2// Copyright (C) 2002-2026 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
24namespace libMesh
25{
26
27// Forward declarations
28class Elem;
29
39template<typename OutputShape>
40class H1FETransformation : public FETransformationBase<OutputShape>
41{
42public:
43
45 : FETransformationBase<OutputShape>() {}
46
47 virtual ~H1FETransformation() = default;
48
52 virtual void init_map_phi(const FEGenericBase<OutputShape> & fe) const override;
53
57 virtual void init_map_dphi(const FEGenericBase<OutputShape> & fe) const override;
58
62 virtual void init_map_d2phi(const FEGenericBase<OutputShape> & fe) const 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>> &,
73 bool add_p_level = true) const override;
74
79 virtual void map_dphi(const unsigned int dim,
80 const Elem * const elem,
81 const std::vector<Point> & qp,
83 std::vector<std::vector<typename FEGenericBase<OutputShape>::OutputGradient>> & dphi,
84 std::vector<std::vector<OutputShape>> & dphidx,
85 std::vector<std::vector<OutputShape>> & dphidy,
86 std::vector<std::vector<OutputShape>> & dphidz) const override;
87
88#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
93 virtual void map_d2phi(const unsigned int dim,
94 const std::vector<Point> & qp,
96 std::vector<std::vector<typename FEGenericBase<OutputShape>::OutputTensor>> & d2phi,
97 std::vector<std::vector<OutputShape>> & d2phidx2,
98 std::vector<std::vector<OutputShape>> & d2phidxdy,
99 std::vector<std::vector<OutputShape>> & d2phidxdz,
100 std::vector<std::vector<OutputShape>> & d2phidy2,
101 std::vector<std::vector<OutputShape>> & d2phidydz,
102 std::vector<std::vector<OutputShape>> & d2phidz2) const override;
103#endif //LIBMESH_ENABLE_SECOND_DERIVATIVES
104
109 virtual void map_curl(const unsigned int dim,
110 const Elem * const elem,
111 const std::vector<Point> & qp,
113 std::vector<std::vector<OutputShape>> & curl_phi) const override;
114
119 virtual void map_div(const unsigned int dim,
120 const Elem * const elem,
121 const std::vector<Point> & qp,
123 std::vector<std::vector<typename FEGenericBase<OutputShape>::OutputDivergence>> & div_phi) const override;
124
125}; // class H1FETransformation
126
127}
128
129#endif // LIBMESH_H1_FE_TRANSFORMATION_H
unsigned int dim
This is the base class from which all geometric element types are derived.
Definition elem.h:96
This class forms the foundation from which generic finite elements may be derived.
Definition fe_base.h:86
TensorTools::DecrementRank< OutputShape >::type OutputDivergence
Definition fe_base.h:122
This class handles the computation of the shape functions in the physical domain.
This class handles the computation of the shape functions in the physical domain for H1 conforming el...
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 override
Evaluates shape function gradients in physical coordinates for H1 conforming elements.
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 override
Evaluates shape function Hessians in physical coordinates based on H1 conforming finite element trans...
virtual void init_map_phi(const FEGenericBase< OutputShape > &fe) const 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 override
Evaluates the shape function curl in physical coordinates based on H1 conforming finite element trans...
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 override
Evaluates the shape function divergence in physical coordinates based on H1 conforming finite element...
virtual ~H1FETransformation()=default
virtual void map_phi(const unsigned int, const Elem *const, const std::vector< Point > &, const FEGenericBase< OutputShape > &, std::vector< std::vector< OutputShape > > &, bool add_p_level=true) const override
Evaluates shape functions in physical coordinates for H1 conforming elements.
virtual void init_map_dphi(const FEGenericBase< OutputShape > &fe) const override
Pre-requests any necessary data from FEMap.
virtual void init_map_d2phi(const FEGenericBase< OutputShape > &fe) const 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.