v0.14.0
Loading...
Searching...
No Matches
VolumeElementForcesAndSourcesCoreOnContactPrismSide.hpp
Go to the documentation of this file.
1/** \file VolumeElementForcesAndSourcesCoreOnContactPrismSide.hpp
2 \brief Volume element.
3
4 Those element are inherited by user to implement specific implementation of
5 particular problem.
6
7*/
8
9
10
11#ifndef __VOLUMEELEMENTFORCESANDSOURCESCORE_ONVOLUMESIDE_HPP__
12#define __VOLUMEELEMENTFORCESANDSOURCESCORE_ONVOLUMESIDE_HPP__
13
14using namespace boost::numeric;
15
16namespace MoFEM {
17
18/**
19 * \brief Base volume element used to integrate on contact surface (could be
20 * extended to other volume elements) \ingroup
21 * mofem_forces_and_sources_volume_element
22 */
25
27
28 /**
29 * @brief Get the face nodes mapped on volume element
30 *
31 * \todo That this is not general, e.g., for quad number of nodes is 4.
32 *
33 * @return const std::array<int, 4>&
34 */
35 inline const std::array<int, 4> &getFaceConnMap() const;
36
37 /**
38 * @brief Get face nodes maped on volume
39 *
40 * \todo That this is not general, e.g., for prism or hex, size of fixed array
41 * is wrong.
42 *
43 * @return const sdt::array<int, 4>&
44 */
45 inline const std::array<int, 8> &getTetConnMap() const;
46
47 /**
48 * @brief Get node on volume opposite to volume element
49 *
50 * \todo That this is not general, e.g., for prism or hex, opposite node is
51 * not unique.
52 *
53 * @return int
54 */
55 inline int getOppositeNode() const;
56
57 /**
58 * @brief Sense face on volume
59 *
60 * @return int
61 */
62 inline int getFaceSense() const;
63
64 /**
65 * @brief Face number on the volume
66 *
67 * @return int
68 */
69 inline int getFaceSideNumber() const;
70
71 /** \brief default operator for TET element
72 * \ingroup mofem_forces_and_sources_volume_element
73 */
76
77 using VolumeElementForcesAndSourcesCore::UserDataOperator::UserDataOperator;
78
80 getVolumeFE() const;
81
83
84 /** \brief get face coordinates at Gauss pts.
85
86 \note Coordinates should be the same what function getMasterCoordsAtGaussPts
87 on tets is returning. If both coordinates are different it is error, or you
88 do something very unusual.
89
90 */
92
93 /** \brief get face coordinates at Gauss pts.
94
95 \note Coordinates should be the same what function getSlaveCoordsAtGaussPts
96 on tets is returning. If both coordinates are different it is error, or you
97 do something very unusual.
98
99 */
101
102 /**
103 * \brief get face sense in respect to volume
104 * @return error code
105 */
106 inline int getFaceSense() const;
107
108 /**
109 * \brief get face side number in respect to volume
110 * @return error code
111 */
112 inline int getFaceSideNumber() const;
113 };
114
115 int getRule(int order);
117
118private:
119 int faceSense; ///< Sense of face, could be 1 or -1
120 int faceSideNumber; ///< Face side number
121 std::array<int, 4> faceConnMap;
122 std::array<int, 8> tetConnMap;
124};
125
126const std::array<int, 4> &
128 return faceConnMap;
129}
130
131const std::array<int, 8> &
133 return tetConnMap;
134}
135
137 return oppositeNode;
138}
139
141 return faceSense;
142}
143
145 const {
146 return faceSideNumber;
147}
148
150VolumeElementForcesAndSourcesCoreOnContactPrismSide::UserDataOperator::
151 getVolumeFE() const {
153 ptrFE);
154}
155
157VolumeElementForcesAndSourcesCoreOnContactPrismSide::UserDataOperator::
158 getContactFE() const {
159 return static_cast<ContactPrismElementForcesAndSourcesCore *>(
160 getVolumeFE()->sidePtrFE);
161}
162
163MatrixDouble &VolumeElementForcesAndSourcesCoreOnContactPrismSide::
164 UserDataOperator::getMasterCoordsAtGaussPts() {
165 return getContactFE()->getGaussPtsMasterFromEleSide();
166}
167
168MatrixDouble &VolumeElementForcesAndSourcesCoreOnContactPrismSide::
169 UserDataOperator::getSlaveCoordsAtGaussPts() {
170 return getContactFE()->getGaussPtsSlaveFromEleSide();
171}
172
173int VolumeElementForcesAndSourcesCoreOnContactPrismSide::UserDataOperator::
174 getFaceSense() const {
175 return getVolumeFE()->faceSense;
176}
177
178int VolumeElementForcesAndSourcesCoreOnContactPrismSide::UserDataOperator::
179 getFaceSideNumber() const {
180 return getVolumeFE()->faceSideNumber;
181}
182
183/**
184 * @deprecated use VolumeElementForcesAndSourcesCore
185 *
186 */
189
190/**
191 * @deprecated do not use this template, it is obsolete
192 */
193template <int SWITCH>
197 VolumeElementForcesAndSourcesCoreOnContactPrismSide;
200};
201
202} // namespace MoFEM
203
204#endif //__VOLUMEELEMENTFORCESANDSOURCESCORE_ONVOLUMESIDE_HPP__
#define DEPRECATED
Definition: definitions.h:17
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:56
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:10
DEPRECATED typedef VolumeElementForcesAndSourcesCoreOnContactPrismSide VolumeElementForcesAndSourcesCoreOnContactPrismSideBase
VolumeElementForcesAndSourcesCore(Interface &m_field, const EntityType type=MBTET)
Base volume element used to integrate on contact surface (could be extended to other volume elements)...
const std::array< int, 4 > & getFaceConnMap() const
Get the face nodes mapped on volume element.
const std::array< int, 8 > & getTetConnMap() const
Get face nodes maped on volume.