v0.9.0
FlatPrismPolynomialBase.hpp
Go to the documentation of this file.
1 /** \file FlatPrismPolynomialBase.hpp
2 \brief Implementation of Ainsworth-Cole H1 base on tetrahedral
3 
4 */
5 
6 /* This file is part of MoFEM.
7  * MoFEM is free software: you can redistribute it and/or modify it under
8  * the terms of the GNU Lesser General Public License as published by the
9  * Free Software Foundation, either version 3 of the License, or (at your
10  * option) any later version.
11  *
12  * MoFEM is distributed in the hope that it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15  * License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with MoFEM. If not, see <http://www.gnu.org/licenses/>. */
19 
20 #ifndef __FLATPRISMPOLYNOMIALBASE_HPP__
21 #define __FLATPRISMPOLYNOMIALBASE_HPP__
22 
23 namespace MoFEM {
24 
27 
28 /**
29  * \brief Class used to pass element data to calculate base functions on flat
30  * prism
31  *
32  * \ingroup mofem_base_functions
33  * FIXME: Need moab and mofem finite element structure to work (that not
34  * perfect)
35  */
37 
39  BaseFunctionUnknownInterface **iface) const;
40 
41  moab::Interface &mOab;
43 
45  DataForcesAndSourcesCore &data, moab::Interface &moab,
46  const NumeredEntFiniteElement *fe_ptr, const FieldSpace space,
47  const FieldApproximationBase base,
48  const FieldApproximationBase copy_node_base = LASTBASE);
49 
51 };
52 
53 /**
54  * \brief Calculate base functions on tetrahedral
55  * \ingroup mofem_base_functions
56  * FIXME: Need moab and mofem finite element structure to work (that not
57  * perfect)
58  */
60 
62  BaseFunctionUnknownInterface **iface) const;
63 
66 
68  boost::shared_ptr<BaseFunctionCtx> ctx_ptr);
69 
70 private:
72 
74 
76 
78 
80 
81  int numNodes;
85  int faceNodes[2][3];
88 };
89 
90 } // namespace MoFEM
91 
92 #endif //__FLATPRISMPOLYNOMIALBASE_HPP__
MoFEM interface unique ID.
MoFEMErrorCode getValue(MatrixDouble &pts, boost::shared_ptr< BaseFunctionCtx > ctx_ptr)
data structure for finite element entityIt keeps that about indices of degrees of freedom,...
static const MOFEMuuid IDD_FLATPRISM_BASE_FUNCTION
Partitioned (Indexed) Finite Element in Problem.
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 query_interface(const MOFEMuuid &uuid, BaseFunctionUnknownInterface **iface) const
std::bitset< BITINTERFACEUID_SIZE > BitIntefaceId
Definition: Types.hpp:56
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:21
MoFEMErrorCode getValueHcurl(MatrixDouble &pts)
Calculate base functions on tetrahedralFIXME: Need moab and mofem finite element structure to work (t...
MoFEMErrorCode getValueHdiv(MatrixDouble &pts)
FieldApproximationBase
approximation base
Definition: definitions.h:144
Base class if inherited used to calculate base functions.
MoFEMErrorCode query_interface(const MOFEMuuid &uuid, BaseFunctionUnknownInterface **iface) const
Class used to pass element data to calculate base functions on flat prism.
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:66
const NumeredEntFiniteElement * fePtr
FieldSpace
approximation spaces
Definition: definitions.h:168
FlatPrismPolynomialBaseCtx * cTx
FlatPrismPolynomialBaseCtx(DataForcesAndSourcesCore &data, moab::Interface &moab, const NumeredEntFiniteElement *fe_ptr, const FieldSpace space, const FieldApproximationBase base, const FieldApproximationBase copy_node_base=LASTBASE)
MoFEMErrorCode getValueL2(MatrixDouble &pts)
MoFEMErrorCode getValueH1(MatrixDouble &pts)