v0.9.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 
34  BaseFunctionUnknownInterface **iface) const;
35 
38 
40  boost::shared_ptr<BaseFunctionCtx> ctx_ptr);
41 
42 private:
44 
48 
50 
51  ublas::matrix<MatrixDouble> N_face_edge;
52  ublas::vector<MatrixDouble> N_face_bubble;
53  ublas::vector<MatrixDouble> N_volume_edge;
54  ublas::vector<MatrixDouble> N_volume_face;
56 
57  ublas::matrix<MatrixDouble> diffN_face_edge;
58  ublas::vector<MatrixDouble> diffN_face_bubble;
59  ublas::vector<MatrixDouble> diffN_volume_edge;
60  ublas::vector<MatrixDouble> diffN_volume_face;
62 
64 
66 
67 private:
70 
73 
75 };
76 
77 } // namespace MoFEM
78 
79 #endif //__TETPOLYNOMIALBASE_HPP__
MoFEM interface unique ID.
ublas::matrix< MatrixDouble > diffN_face_edge
Calculate base functions on tetrahedral.
MoFEMErrorCode getValueHcurlAinsworthBase(MatrixDouble &pts)
MoFEMErrorCode getValueHdivDemkowiczBase(MatrixDouble &pts)
ublas::matrix< double, ublas::row_major, DoubleAllocator > MatrixDouble
Definition: Types.hpp:74
Class used to pass element data to calculate base functions on tet,triangle,edge.
MoFEMErrorCode getValueH1AinsworthBase(MatrixDouble &pts)
MoFEMErrorCode getValue(MatrixDouble &pts, boost::shared_ptr< BaseFunctionCtx > ctx_ptr)
MoFEMErrorCode getValueL2(MatrixDouble &pts)
ublas::matrix< int, ublas::row_major, IntAllocator > MatrixInt
Definition: Types.hpp:73
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:21
ublas::vector< MatrixDouble > N_volume_face
MoFEMErrorCode getValueH1BernsteinBezierBase(MatrixDouble &pts)
ublas::matrix< MatrixDouble > N_face_edge
Base class if inherited used to calculate base functions.
MoFEMErrorCode getValueHdivAinsworthBase(MatrixDouble &pts)
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:66
MoFEMErrorCode getValueHdiv(MatrixDouble &pts)
MoFEMErrorCode query_interface(const MOFEMuuid &uuid, BaseFunctionUnknownInterface **iface) const
ublas::vector< MatrixDouble > diffN_volume_edge
ublas::vector< MatrixDouble > diffN_face_bubble
ublas::vector< MatrixDouble > N_volume_edge
MoFEMErrorCode getValueH1(MatrixDouble &pts)
MoFEMErrorCode getValueHcurl(MatrixDouble &pts)
ublas::vector< MatrixDouble > diffN_volume_face
EntPolynomialBaseCtx * cTx
ublas::vector< MatrixDouble > N_face_bubble
MoFEMErrorCode getValueHcurlDemkowiczBase(MatrixDouble &pts)