v0.13.1
BaseDerivativesDataOperators.hpp
Go to the documentation of this file.
1/** \file BaseDerivativesDataOperators.hpp
2 * \brief Base derivatives data operators
3
4*/
5
6
7
8#ifndef __BASE_DIREVATIVES_DATA_OPERATORS_HPP__
9#define __BASE_DIREVATIVES_DATA_OPERATORS_HPP__
10
11namespace MoFEM {
12
14
15 OpBaseDerivativesBase(boost::shared_ptr<MatrixDouble> base_mass_ptr,
16 boost::shared_ptr<EntitiesFieldData> data_l2,
17 const FieldApproximationBase b, const FieldSpace s,
18 int verb = QUIET, Sev sev = Sev::verbose);
19
20protected:
24
25 boost::shared_ptr<MatrixDouble> baseMassPtr;
26 boost::shared_ptr<EntitiesFieldData> dataL2;
27};
28
29template <int BASE_DIM>
31
32template <> struct OpBaseDerivativesMass<1> : public OpBaseDerivativesBase {
33
35
36 MoFEMErrorCode doWork(int side, EntityType type,
38};
39
40template <> struct OpBaseDerivativesMass<3> : public OpBaseDerivativesMass<1> {
41 using OpBaseDerivativesMass<1>::OpBaseDerivativesMass;
42};
43
44template <int DIM> struct OpBaseDerivativesSetHOInvJacobian;
45
46template <>
48 : public OpSetInvJacSpaceForFaceImpl<2, 1> {
49
51 boost::shared_ptr<EntitiesFieldData> data_l2,
52 boost::shared_ptr<MatrixDouble> inv_jac_ptr);
53
54 MoFEMErrorCode doWork(int side, EntityType type,
56
57protected:
58 boost::shared_ptr<EntitiesFieldData> dataL2;
59};
60
61template <int BASE_DIM>
63
64/**
65 * @brief Specialisation for calculate directives for scalar base functions
66 *
67 * @tparam
68 */
69template <> struct OpBaseDerivativesNext<1> : public OpBaseDerivativesBase {
70
71 OpBaseDerivativesNext(int derivative,
72 boost::shared_ptr<MatrixDouble> base_mass_ptr,
73 boost::shared_ptr<EntitiesFieldData> data_l2,
74 const FieldApproximationBase b, const FieldSpace s,
75 int verb = QUIET, Sev sev = Sev::verbose);
76
77 MoFEMErrorCode doWork(int side, EntityType type,
79
80protected:
83
84 template <int BASE_DIM>
85 MoFEMErrorCode doWorkImpl(int side, EntityType type,
87
88 template <int BASE_DIM, int SPACE_DIM>
91};
92
93/**
94 * @brief Specialisation for calculate directives for scalar base functions
95 *
96 * @tparam
97 */
98template <> struct OpBaseDerivativesNext<3> : public OpBaseDerivativesNext<1> {
99
100 using OpBaseDerivativesNext<1>::OpBaseDerivativesNext;
101 MoFEMErrorCode doWork(int side, EntityType type,
103};
104
105} // namespace MoFEM
106
107#endif //__BASE_DIREVATIVES_DATA_OPERATORS_HPP__
@ QUIET
Definition: definitions.h:208
FieldApproximationBase
approximation base
Definition: definitions.h:58
FieldSpace
approximation spaces
Definition: definitions.h:82
SeverityLevel
Severity levels.
Definition: LogManager.hpp:33
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:56
implementation of Data Operators for Forces and Sources
Definition: MoFEM.hpp:24
Data on single entity (This is passed as argument to DataOperator::doWork)
OpBaseDerivativesBase(boost::shared_ptr< MatrixDouble > base_mass_ptr, boost::shared_ptr< EntitiesFieldData > data_l2, const FieldApproximationBase b, const FieldSpace s, int verb=QUIET, Sev sev=Sev::verbose)
boost::shared_ptr< EntitiesFieldData > dataL2
boost::shared_ptr< MatrixDouble > baseMassPtr
Transform local reference derivatives of shape functions to global derivatives.