v0.14.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 
8 
9 #ifndef __TETPOLYNOMIALBASE_HPP__
10 #define __TETPOLYNOMIALBASE_HPP__
11 
12 namespace MoFEM {
13 
14 /**
15  * \brief Calculate base functions on tetrahedral
16  *
17  * \ingroup mofem_base_functions
18  */
20 
21  MoFEMErrorCode query_interface(boost::typeindex::type_index type_index,
22  UnknownInterface **iface) const;
23 
24  TetPolynomialBase() = default;
25  ~TetPolynomialBase() = default;
26 
28  boost::shared_ptr<BaseFunctionCtx> ctx_ptr);
29 
30 private:
32 
33  /**
34  * @brief Get base functions for H1 space
35  *
36  * @param pts matrix of intergation pts
37  * @return MoFEMErrorCode
38  *
39  * \note matrix of integration points on rows has local coordinates of finite
40  * element on columns are integration pts.
41  */
43 
44  /**
45  * @brief Get base functions for L2 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 Hdiv 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 Hcurl 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  ublas::matrix<MatrixDouble> N_face_edge;
78  ublas::vector<MatrixDouble> N_face_bubble;
79  ublas::vector<MatrixDouble> N_volume_edge;
80  ublas::vector<MatrixDouble> N_volume_face;
82 
83  ublas::matrix<MatrixDouble> diffN_face_edge;
84  ublas::vector<MatrixDouble> diffN_face_bubble;
85  ublas::vector<MatrixDouble> diffN_volume_edge;
86  ublas::vector<MatrixDouble> diffN_volume_face;
88 
89 private:
92 
95 
98 
101 
103 };
104 
105 } // namespace MoFEM
106 
107 #endif //__TETPOLYNOMIALBASE_HPP__
MoFEM::TetPolynomialBase::getValueH1
MoFEMErrorCode getValueH1(MatrixDouble &pts)
Get base functions for H1 space.
Definition: TetPolynomialBase.cpp:19
MoFEM::TetPolynomialBase::getValueL2
MoFEMErrorCode getValueL2(MatrixDouble &pts)
Get base functions for L2 space.
Definition: TetPolynomialBase.cpp:431
MoFEM::EntPolynomialBaseCtx
Class used to pass element data to calculate base functions on tet,triangle,edge.
Definition: EntPolynomialBaseCtx.hpp:22
MoFEM::TetPolynomialBase::N_face_bubble
ublas::vector< MatrixDouble > N_face_bubble
Definition: TetPolynomialBase.hpp:78
MoFEM::TetPolynomialBase::getValueHcurlAinsworthBase
MoFEMErrorCode getValueHcurlAinsworthBase(MatrixDouble &pts)
Definition: TetPolynomialBase.cpp:1079
MoFEM::Exceptions::MoFEMErrorCode
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:56
MoFEM::Types::MatrixDouble
UBlasMatrix< double > MatrixDouble
Definition: Types.hpp:77
MoFEM::TetPolynomialBase::senseFaceAlpha
MatrixInt senseFaceAlpha
Definition: TetPolynomialBase.hpp:102
MoFEM::TetPolynomialBase::N_face_edge
ublas::matrix< MatrixDouble > N_face_edge
Definition: TetPolynomialBase.hpp:77
MoFEM::BaseFunction
Base class if inherited used to calculate base functions.
Definition: BaseFunction.hpp:40
MoFEM::TetPolynomialBase::getValueH1AinsworthBase
MoFEMErrorCode getValueH1AinsworthBase(MatrixDouble &pts)
Definition: TetPolynomialBase.cpp:37
MoFEM::TetPolynomialBase::diffN_volume_edge
ublas::vector< MatrixDouble > diffN_volume_edge
Definition: TetPolynomialBase.hpp:85
MoFEM::TetPolynomialBase::getValueL2AinsworthBase
MoFEMErrorCode getValueL2AinsworthBase(MatrixDouble &pts)
Definition: TetPolynomialBase.cpp:449
MoFEM::TetPolynomialBase::getValueHcurl
MoFEMErrorCode getValueHcurl(MatrixDouble &pts)
Get base functions for Hcurl space.
Definition: TetPolynomialBase.cpp:1329
MoFEM
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:10
MoFEM::TetPolynomialBase::diffN_volume_bubble
MatrixDouble diffN_volume_bubble
Definition: TetPolynomialBase.hpp:87
MoFEM::TetPolynomialBase::N_volume_edge
ublas::vector< MatrixDouble > N_volume_edge
Definition: TetPolynomialBase.hpp:79
MoFEM::Types::MatrixInt
UBlasMatrix< int > MatrixInt
Definition: Types.hpp:76
MoFEM::TetPolynomialBase::diffN_face_edge
ublas::matrix< MatrixDouble > diffN_face_edge
Definition: TetPolynomialBase.hpp:83
MoFEM::TetPolynomialBase::N_volume_face
ublas::vector< MatrixDouble > N_volume_face
Definition: TetPolynomialBase.hpp:80
MoFEM::TetPolynomialBase::getValueHdiv
MoFEMErrorCode getValueHdiv(MatrixDouble &pts)
Get base functions for Hdiv space.
Definition: TetPolynomialBase.cpp:1062
MoFEM::TetPolynomialBase::getValueHdivAinsworthBase
MoFEMErrorCode getValueHdivAinsworthBase(MatrixDouble &pts)
Definition: TetPolynomialBase.cpp:655
MoFEM::TetPolynomialBase::diffN_volume_face
ublas::vector< MatrixDouble > diffN_volume_face
Definition: TetPolynomialBase.hpp:86
MoFEM::TetPolynomialBase::getValueHcurlDemkowiczBase
MoFEMErrorCode getValueHcurlDemkowiczBase(MatrixDouble &pts)
Definition: TetPolynomialBase.cpp:1197
MoFEM::TetPolynomialBase::getValueL2BernsteinBezierBase
MoFEMErrorCode getValueL2BernsteinBezierBase(MatrixDouble &pts)
Definition: TetPolynomialBase.cpp:479
MoFEM::UnknownInterface
base class for all interface classes
Definition: UnknownInterface.hpp:34
MoFEM::TetPolynomialBase::TetPolynomialBase
TetPolynomialBase()=default
MoFEM::TetPolynomialBase::~TetPolynomialBase
~TetPolynomialBase()=default
MoFEM::TetPolynomialBase::cTx
EntPolynomialBaseCtx * cTx
Definition: TetPolynomialBase.hpp:31
MoFEM::TetPolynomialBase::diffN_face_bubble
ublas::vector< MatrixDouble > diffN_face_bubble
Definition: TetPolynomialBase.hpp:84
MoFEM::TetPolynomialBase::getValueHdivDemkowiczBase
MoFEMErrorCode getValueHdivDemkowiczBase(MatrixDouble &pts)
Definition: TetPolynomialBase.cpp:995
MoFEM::TetPolynomialBase::getValue
MoFEMErrorCode getValue(MatrixDouble &pts, boost::shared_ptr< BaseFunctionCtx > ctx_ptr)
Definition: TetPolynomialBase.cpp:1348
MoFEM::TetPolynomialBase::N_volume_bubble
MatrixDouble N_volume_bubble
Definition: TetPolynomialBase.hpp:81
MoFEM::TetPolynomialBase::getValueH1BernsteinBezierBase
MoFEMErrorCode getValueH1BernsteinBezierBase(MatrixDouble &pts)
Definition: TetPolynomialBase.cpp:149
MoFEM::TetPolynomialBase::query_interface
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, UnknownInterface **iface) const
Definition: TetPolynomialBase.cpp:11
MoFEM::TetPolynomialBase
Calculate base functions on tetrahedral.
Definition: TetPolynomialBase.hpp:19