v0.13.0
HexPolynomialBase.hpp
Go to the documentation of this file.
1 /** \file HexPolynomialBase.hpp
2 \brief Implementation of Ainsworth-Coyle / Demkowicz or any other H1, Hcurl,
3 Hdiv and L2 base on tetrahedral
4 
5 */
6 
7 /* This file is part of MoFEM.
8  * MoFEM is free software: you can redistribute it and/or modify it under
9  * the terms of the GNU Lesser General Public License as published by the
10  * Free Software Foundation, either version 3 of the License, or (at your
11  * option) any later version.
12  *
13  * MoFEM is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
16  * License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with MoFEM. If not, see <http://www.gnu.org/licenses/>. */
20 
21 #ifndef __HEXPOLYNOMIALBASE_HPP__
22 #define __HEXPOLYNOMIALBASE_HPP__
23 
24 namespace MoFEM {
25 
26 /**
27  * \brief Calculate base functions on tetrahedral
28  *
29  * \ingroup mofem_base_functions
30  */
32 
33  MoFEMErrorCode query_interface(boost::typeindex::type_index type_index,
34  UnknownInterface **iface) const;
35  HexPolynomialBase() = default;
36  ~HexPolynomialBase() = default;
37 
39  boost::shared_ptr<BaseFunctionCtx> ctx_ptr);
40 
41 private:
43 
44  /*
45  * @brief Get base functions for H1 space
46  *
47  * @param pts matrix of intergation pts
48  * @return MoFEMErrorCode
49  *
50  * \note matrix of integration points on rows has local coordinates of finite
51  * element on columns are integration pts.
52  */
54 
55  /**
56  * @brief Get base functions for L2 space
57  *
58  * @param pts matrix of intergation pts
59  * @return MoFEMErrorCode
60  *
61  * \note matrix of integration points on rows has local coordinates of finite
62  * element on columns are integration pts.
63  */
65 
66  /**
67  * @brief Get base functions for Hdiv space
68  *
69  * @param pts matrix of intergation pts
70  * @return MoFEMErrorCode
71  *
72  * \note matrix of integration points on rows has local coordinates of finite
73  * element on columns are integration pts.
74  */
76 
77  /**
78  * @brief Get base functions for Hcurl space
79  *
80  * @param pts matrix of intergation pts
81  * @return MoFEMErrorCode
82  *
83  * \note matrix of integration points on rows has local coordinates of finite
84  * element on columns are integration pts.
85  */
87 
88 private:
93 
94  std::array<MatrixDouble, 6> faceFamily;
95  std::array<MatrixDouble, 6> diffFaceFamily;
96 
99 };
100 
101 } // namespace MoFEM
102 
103 #endif //__HEXPOLYNOMIALBASE_HPP__
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:67
UBlasMatrix< double > MatrixDouble
Definition: Types.hpp:88
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:21
Base class if inherited used to calculate base functions.
Class used to pass element data to calculate base functions on tet,triangle,edge.
Calculate base functions on tetrahedral.
MoFEMErrorCode getValueH1DemkowiczBase(MatrixDouble &pts)
MoFEMErrorCode getValueL2(MatrixDouble &pts)
Get base functions for L2 space.
MoFEMErrorCode getValueH1(MatrixDouble &pts)
std::array< MatrixDouble, 6 > faceFamily
MoFEMErrorCode getValueHdivDemkowiczBase(MatrixDouble &pts)
MoFEMErrorCode getValueHcurl(MatrixDouble &pts)
Get base functions for Hcurl space.
MoFEMErrorCode getValueL2DemkowiczBase(MatrixDouble &pts)
MoFEMErrorCode getValueHdiv(MatrixDouble &pts)
Get base functions for Hdiv space.
MoFEMErrorCode getValueHcurlDemkowiczBase(MatrixDouble &pts)
MoFEMErrorCode getValue(MatrixDouble &pts, boost::shared_ptr< BaseFunctionCtx > ctx_ptr)
std::array< MatrixDouble, 6 > diffFaceFamily
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, UnknownInterface **iface) const
EntPolynomialBaseCtx * cTx
base class for all interface classes