v0.14.0
TriPolynomialBase.hpp
Go to the documentation of this file.
1 /** \file TriPolynomialBase.hpp
2 \brief Implementation of H1, Hcurl base on triangle
3 
4 */
5 
6 #ifndef __H1TRIPOLYNOMIAL_HPP__
7 #define __H1TRIPOLYNOMIAL_HPP__
8 
9 namespace MoFEM {
10 
11 /**
12  * \brief Calculate base functions on triangle
13  *
14  * \ingroup mofem_base_functions
15  */
17 
18  MoFEMErrorCode query_interface(boost::typeindex::type_index type_index,
19  UnknownInterface **iface) const;
20 
21  TriPolynomialBase() = default;
22  virtual ~TriPolynomialBase() = default;
23 
25  boost::shared_ptr<BaseFunctionCtx> ctx_ptr);
26 
27  /**
28  * @brief Set map of dof to side number
29  *
30  * That is used for broken space to establish connection between dofs in the
31  * interior of element/entity and side of element/entity to which that dof is
32  * associated. That depends on implementation of the base for given space, and
33  * has to be implemented while implementing base function for given space.
34  *
35  * @param space
36  * @param continuity
37  * @param base
38  * @param DofsSideMap
39  * @return MoFEMErrorCode
40  */
41  static MoFEMErrorCode setDofsSideMap(const FieldSpace space,
42  const FieldContinuity continuity,
43  const FieldApproximationBase base,
44  DofsSideMap &);
45 
46 private:
48 
52 
56 
57  ublas::matrix<MatrixDouble> N_face_edge;
58  ublas::vector<MatrixDouble> N_face_bubble;
59  ublas::matrix<MatrixDouble> diffN_face_edge;
60  ublas::vector<MatrixDouble> diffN_face_bubble;
61 
63 
65 
68 
71 
74 
76  const FieldContinuity continuity,
77  const FieldApproximationBase base,
78  DofsSideMap &dofs_side_map);
79 };
80 
81 } // namespace MoFEM
82 
83 #endif //__H1TRIPOLYNOMIAL_HPP__
UBlasMatrix< double >
MoFEM::TriPolynomialBase::cTx
EntPolynomialBaseCtx * cTx
Definition: TriPolynomialBase.hpp:47
MoFEM::TriPolynomialBase::getValueHdivDemkowiczBase
MoFEMErrorCode getValueHdivDemkowiczBase(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:618
MoFEM::TriPolynomialBase::TriPolynomialBase
TriPolynomialBase()=default
MoFEM::EntPolynomialBaseCtx
Class used to pass element data to calculate base functions on tet,triangle,edge.
Definition: EntPolynomialBaseCtx.hpp:22
MoFEM::BaseFunction::DofsSideMap
multi_index_container< DofsSideMapData, indexed_by< ordered_non_unique< tag< TypeSide_mi_tag >, composite_key< DofsSideMapData, member< DofsSideMapData, EntityType, &DofsSideMapData::type >, member< DofsSideMapData, int, &DofsSideMapData::side > >>, ordered_unique< tag< EntDofIdx_mi_tag >, member< DofsSideMapData, int, &DofsSideMapData::dof > > > > DofsSideMap
Map entity stype and side to element/entity dof index.
Definition: BaseFunction.hpp:73
MoFEM::TriPolynomialBase::N_face_edge
ublas::matrix< MatrixDouble > N_face_edge
Definition: TriPolynomialBase.hpp:57
MoFEM::Exceptions::MoFEMErrorCode
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:56
MoFEM::TriPolynomialBase::getValueHdiv
MoFEMErrorCode getValueHdiv(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:650
MoFEM::BaseFunction
Base class if inherited used to calculate base functions.
Definition: BaseFunction.hpp:40
FieldSpace
FieldSpace
approximation spaces
Definition: definitions.h:82
MoFEM::TriPolynomialBase::getValueHdivAinsworthBase
MoFEMErrorCode getValueHdivAinsworthBase(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:526
MoFEM
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:10
MoFEM::TriPolynomialBase::getValueH1
MoFEMErrorCode getValueH1(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:16
MoFEM::TriPolynomialBase::getValueHcurlDemkowiczBase
MoFEMErrorCode getValueHcurlDemkowiczBase(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:879
MoFEM::TriPolynomialBase
Calculate base functions on triangle.
Definition: TriPolynomialBase.hpp:16
MoFEM::TriPolynomialBase::~TriPolynomialBase
virtual ~TriPolynomialBase()=default
FieldContinuity
FieldContinuity
Field continuity.
Definition: definitions.h:99
MoFEM::TriPolynomialBase::getValueL2BernsteinBezierBase
MoFEMErrorCode getValueL2BernsteinBezierBase(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:373
MoFEM::TriPolynomialBase::setDofsSideMap
static MoFEMErrorCode setDofsSideMap(const FieldSpace space, const FieldContinuity continuity, const FieldApproximationBase base, DofsSideMap &)
Set map of dof to side number.
Definition: TriPolynomialBase.cpp:1228
MoFEM::TriPolynomialBase::getValue
MoFEMErrorCode getValue(MatrixDouble &pts, boost::shared_ptr< BaseFunctionCtx > ctx_ptr)
Definition: TriPolynomialBase.cpp:1130
MoFEM::TriPolynomialBase::query_interface
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, UnknownInterface **iface) const
Definition: TriPolynomialBase.cpp:9
MoFEM::TriPolynomialBase::getValueHcurlAinsworthBrokenBase
MoFEMErrorCode getValueHcurlAinsworthBrokenBase(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:754
MoFEM::TriPolynomialBase::diffN_face_edge
ublas::matrix< MatrixDouble > diffN_face_edge
Definition: TriPolynomialBase.hpp:59
MoFEM::TriPolynomialBase::getValueL2AinsworthBase
MoFEMErrorCode getValueL2AinsworthBase(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:340
MoFEM::TriPolynomialBase::getValueHcurl
MoFEMErrorCode getValueHcurl(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:1091
MoFEM::TriPolynomialBase::getValueH1AinsworthBase
MoFEMErrorCode getValueH1AinsworthBase(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:248
MoFEM::UnknownInterface
base class for all interface classes
Definition: UnknownInterface.hpp:34
MoFEM::TriPolynomialBase::getValueHcurlDemkowiczBrokenBase
MoFEMErrorCode getValueHcurlDemkowiczBrokenBase(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:973
MoFEM::TriPolynomialBase::getValueH1BernsteinBezierBase
MoFEMErrorCode getValueH1BernsteinBezierBase(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:35
MoFEM::TriPolynomialBase::setDofsSideMapHcurl
static MoFEMErrorCode setDofsSideMapHcurl(const FieldSpace space, const FieldContinuity continuity, const FieldApproximationBase base, DofsSideMap &dofs_side_map)
Definition: TriPolynomialBase.cpp:1257
FieldApproximationBase
FieldApproximationBase
approximation base
Definition: definitions.h:58
MoFEM::TriPolynomialBase::N_face_bubble
ublas::vector< MatrixDouble > N_face_bubble
Definition: TriPolynomialBase.hpp:58
MoFEM::TriPolynomialBase::getValueL2
MoFEMErrorCode getValueL2(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:321
MoFEM::TriPolynomialBase::getValueHcurlAinsworthBase
MoFEMErrorCode getValueHcurlAinsworthBase(MatrixDouble &pts)
Definition: TriPolynomialBase.cpp:667
MoFEM::TriPolynomialBase::diffN_face_bubble
ublas::vector< MatrixDouble > diffN_face_bubble
Definition: TriPolynomialBase.hpp:60