11#ifndef __VOLUMEELEMENTFORCESANDSOURCESCORE_ONSIDE_HPP__
12#define __VOLUMEELEMENTFORCESANDSOURCESCORE_ONSIDE_HPP__
14using namespace boost::numeric;
100 using VolumeElementForcesAndSourcesCore::UserDataOperator::UserDataOperator;
199const std::array<int, 4> &
204const std::array<int, 8> &
226VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::getFaceFE()
233VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::getNormal() {
234 return getFaceFE()->nOrmal;
238VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::getTangent1() {
239 return getFaceFE()->tangentOne;
243VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::getTangent2() {
244 return getFaceFE()->tangentTwo;
248VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::getVolumeFE()
253int VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::
254 getFaceSense()
const {
258int VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::
259 getSkeletonSense()
const {
260 return getVolumeFE()->faceSense;
263auto VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::
264 getFTensor1Normal() {
265 double *ptr = &*getNormal().data().begin();
269auto VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::
270 getFTensor1Tangent1() {
271 double *ptr = &*getTangent1().data().begin();
275auto VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::
276 getFTensor1Tangent2() {
277 double *ptr = &*getTangent2().data().begin();
281inline auto VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::
282 getFTensor1NormalsAtGaussPts() {
283 double *ptr = &*getNormalsAtGaussPts().data().begin();
288int VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::
289 getFaceSideNumber()
const {
290 return getVolumeFE()->faceSideNumber;
293MatrixDouble &VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::
294 getNormalsAtGaussPts() {
295 return getFaceFE()->normalsAtGaussPts;
298MatrixDouble &VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::
299 getFaceCoordsAtGaussPts() {
300 return getFaceFE()->coordsAtGaussPts;
303bool VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator::getEdgeFace(
304 const int ee)
const {
305 constexpr bool edges_on_faces[6][4] = {{
true,
false,
false,
true},
306 {
false,
true,
false,
true},
307 {
false,
false,
true,
true},
308 {
true,
false,
true,
false},
309 {
true,
true,
false,
false},
310 {
false,
true,
true,
false}};
314ublas::matrix_row<MatrixDouble> VolumeElementForcesAndSourcesCoreOnSide::
315 UserDataOperator::getNormalsAtGaussPts(
const int gg) {
316 return ublas::matrix_row<MatrixDouble>(getNormalsAtGaussPts(), gg);
333 VolumeElementForcesAndSourcesCoreOnSide;
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
implementation of Data Operators for Forces and Sources
DEPRECATED typedef VolumeElementForcesAndSourcesCoreOnSide VolumeElementForcesAndSourcesCoreOnSideBase
structure to get information form mofem into EntitiesFieldData
ForcesAndSourcesCore * sidePtrFE
Element to integrate on the sides.
Volume finite element base.
VolumeElementForcesAndSourcesCore(Interface &m_field, const EntityType type=MBTET)
default operator for TET element
auto getFTensor1Tangent1()
get tangentOne as tensor
int getSkeletonSense() const
Get the skeleton sense.
MatrixDouble & getFaceCoordsAtGaussPts()
get face coordinates at Gauss pts.
bool getEdgeFace(const int ee) const
VectorDouble & getNormal()
FaceElementForcesAndSourcesCore * getFaceFE() const
int getFaceSideNumber() const
get face side number in respect to volume
VectorDouble & getTangent2()
get triangle tangent 2
MoFEMErrorCode setPtrFE(ForcesAndSourcesCore *ptr)
DEPRECATED int getFaceSense() const
get face sense in respect to volume
MatrixDouble & getNormalsAtGaussPts()
if higher order geometry return normals at Gauss pts.
VectorDouble & getTangent1()
get triangle tangent 1
auto getFTensor1Normal()
get normal as tensor
auto getFTensor1Tangent2()
get tangentTwo as tensor
auto getFTensor1NormalsAtGaussPts()
get normal at integration points
VolumeElementForcesAndSourcesCoreOnSide * getVolumeFE() const
Base volume element used to integrate on skeleton.
DEPRECATED int getFaceSense() const
Sense face on volume.
std::array< int, 4 > faceConnMap
const std::array< int, 8 > & getTetConnMap() const
Get face nodes maped on volume.
int getFaceSideNumber() const
Face number on the volume.
const std::array< int, 4 > & getFaceConnMap() const
Get the face nodes mapped on volume element.
std::array< int, 8 > tetConnMap
int getSkeletonSense() const
Sense face on volume.
int faceSense
Sense of face, could be 1 or -1.
int getOppositeNode() const
Get node on volume opposite to volume element.
MoFEMErrorCode setGaussPts(int order)
int faceSideNumber
Face side number.