v0.13.0
TetPolynomialBase.hpp
Go to the documentation of this file.
1 /** \file TetPolynomialBase.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 __TETPOLYNOMIALBASE_HPP__
22 #define __TETPOLYNOMIALBASE_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 
36  TetPolynomialBase() = default;
37  ~TetPolynomialBase() = default;
38 
40  boost::shared_ptr<BaseFunctionCtx> ctx_ptr);
41 
42 private:
44 
45  /**
46  * @brief Get base functions for H1 space
47  *
48  * @param pts matrix of intergation pts
49  * @return MoFEMErrorCode
50  *
51  * \note matrix of integration points on rows has local coordinates of finite
52  * element on columns are integration pts.
53  */
55 
56  /**
57  * @brief Get base functions for L2 space
58  *
59  * @param pts matrix of intergation pts
60  * @return MoFEMErrorCode
61  *
62  * \note matrix of integration points on rows has local coordinates of finite
63  * element on columns are integration pts.
64  */
66 
67  /**
68  * @brief Get base functions for Hdiv space
69  *
70  * @param pts matrix of intergation pts
71  * @return MoFEMErrorCode
72  *
73  * \note matrix of integration points on rows has local coordinates of finite
74  * element on columns are integration pts.
75  */
77 
78  /**
79  * @brief Get base functions for Hcurl space
80  *
81  * @param pts matrix of intergation pts
82  * @return MoFEMErrorCode
83  *
84  * \note matrix of integration points on rows has local coordinates of finite
85  * element on columns are integration pts.
86  */
88 
89  ublas::matrix<MatrixDouble> N_face_edge;
90  ublas::vector<MatrixDouble> N_face_bubble;
91  ublas::vector<MatrixDouble> N_volume_edge;
92  ublas::vector<MatrixDouble> N_volume_face;
94 
95  ublas::matrix<MatrixDouble> diffN_face_edge;
96  ublas::vector<MatrixDouble> diffN_face_bubble;
97  ublas::vector<MatrixDouble> diffN_volume_edge;
98  ublas::vector<MatrixDouble> diffN_volume_face;
100 
101 private:
104 
107 
110 
113 
115 };
116 
117 } // namespace MoFEM
118 
119 #endif //__TETPOLYNOMIALBASE_HPP__
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:67
UBlasMatrix< double > MatrixDouble
Definition: Types.hpp:88
UBlasMatrix< int > MatrixInt
Definition: Types.hpp:87
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.
ublas::matrix< MatrixDouble > diffN_face_edge
EntPolynomialBaseCtx * cTx
MoFEMErrorCode getValueH1AinsworthBase(MatrixDouble &pts)
ublas::vector< MatrixDouble > diffN_volume_face
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, UnknownInterface **iface) const
MoFEMErrorCode getValueL2BernsteinBezierBase(MatrixDouble &pts)
MoFEMErrorCode getValueHcurlDemkowiczBase(MatrixDouble &pts)
MoFEMErrorCode getValueHcurl(MatrixDouble &pts)
Get base functions for Hcurl space.
MoFEMErrorCode getValueH1BernsteinBezierBase(MatrixDouble &pts)
MoFEMErrorCode getValueH1(MatrixDouble &pts)
Get base functions for H1 space.
ublas::vector< MatrixDouble > diffN_face_bubble
ublas::vector< MatrixDouble > N_volume_edge
ublas::vector< MatrixDouble > N_volume_face
MoFEMErrorCode getValueHdiv(MatrixDouble &pts)
Get base functions for Hdiv space.
MoFEMErrorCode getValueHdivAinsworthBase(MatrixDouble &pts)
MoFEMErrorCode getValueL2AinsworthBase(MatrixDouble &pts)
ublas::vector< MatrixDouble > N_face_bubble
ublas::matrix< MatrixDouble > N_face_edge
MoFEMErrorCode getValueL2(MatrixDouble &pts)
Get base functions for L2 space.
MoFEMErrorCode getValueHdivDemkowiczBase(MatrixDouble &pts)
MoFEMErrorCode getValue(MatrixDouble &pts, boost::shared_ptr< BaseFunctionCtx > ctx_ptr)
ublas::vector< MatrixDouble > diffN_volume_edge
MoFEMErrorCode getValueHcurlAinsworthBase(MatrixDouble &pts)
base class for all interface classes