8#ifndef __FACEELEMENTFORCESANDSOURCESCORE_HPP__
9#define __FACEELEMENTFORCESANDSOURCESCORE_HPP__
11using namespace boost::numeric;
15struct VolumeElementForcesAndSourcesCoreOnSide;
98 using ForcesAndSourcesCore::UserDataOperator::UserDataOperator;
240double FaceElementForcesAndSourcesCore::UserDataOperator::getArea() {
244VectorDouble &FaceElementForcesAndSourcesCore::UserDataOperator::getNormal() {
248VectorDouble &FaceElementForcesAndSourcesCore::UserDataOperator::getTangent1() {
252VectorDouble &FaceElementForcesAndSourcesCore::UserDataOperator::getTangent2() {
256auto FaceElementForcesAndSourcesCore::UserDataOperator::getFTensor1Normal() {
257 double *ptr = &*getNormal().data().begin();
261auto FaceElementForcesAndSourcesCore::UserDataOperator::getFTensor1Tangent1() {
262 double *ptr = &*getTangent1().data().begin();
266auto FaceElementForcesAndSourcesCore::UserDataOperator::getFTensor1Tangent2() {
267 double *ptr = &*getTangent2().data().begin();
271int FaceElementForcesAndSourcesCore::UserDataOperator::getNumNodes() {
276FaceElementForcesAndSourcesCore::UserDataOperator::getConn() {
280VectorDouble &FaceElementForcesAndSourcesCore::UserDataOperator::getCoords() {
284auto FaceElementForcesAndSourcesCore::UserDataOperator::getFTensor1Coords() {
285 double *ptr = &*getCoords().data().begin();
291FaceElementForcesAndSourcesCore::UserDataOperator::getNormalsAtGaussPts() {
296ublas::matrix_row<MatrixDouble>
297FaceElementForcesAndSourcesCore::UserDataOperator::getNormalsAtGaussPts(
299 return ublas::matrix_row<MatrixDouble>(
305FaceElementForcesAndSourcesCore::UserDataOperator::getTangent1AtGaussPts() {
311FaceElementForcesAndSourcesCore::UserDataOperator::getTangent2AtGaussPts() {
316auto FaceElementForcesAndSourcesCore::UserDataOperator::
317 getFTensor1NormalsAtGaussPts() {
318 double *ptr = &*getNormalsAtGaussPts().data().begin();
323auto FaceElementForcesAndSourcesCore::UserDataOperator::
324 getFTensor1Tangent1AtGaussPts() {
325 double *ptr = &*getTangent1AtGaussPts().
data().begin();
330auto FaceElementForcesAndSourcesCore::UserDataOperator::
331 getFTensor1Tangent2AtGaussPts() {
332 double *ptr = &*getTangent2AtGaussPts().
data().begin();
338FaceElementForcesAndSourcesCore::UserDataOperator::getFaceFE() {
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
implementation of Data Operators for Forces and Sources
DEPRECATED typedef FaceElementForcesAndSourcesCore FaceElementForcesAndSourcesCoreBase
Deprecated interface functions.
default operator for TRI element
MatrixDouble & getNormalsAtGaussPts()
if higher order geometry return normals at Gauss pts.
auto getFTensor1Tangent1()
get tangentOne as tensor
VectorDouble & getTangent1()
get triangle tangent 1
auto getFTensor1Tangent2AtGaussPts()
get tangent 2 at integration points
MoFEMErrorCode setPtrFE(ForcesAndSourcesCore *ptr)
MoFEMErrorCode loopSideVolumes(const string fe_name, VolumeElementForcesAndSourcesCoreOnSide &fe_method)
double getArea()
get area of face
FaceElementForcesAndSourcesCore * getFaceFE()
return pointer to Generic Triangle Finite Element object
auto getFTensor1Tangent2()
get tangentTwo as tensor
MatrixDouble & getTangent2AtGaussPts()
if higher order geometry return tangent vector to triangle at Gauss pts.
VectorDouble & getTangent2()
get triangle tangent 2
auto getFTensor1Coords()
get get coords at gauss points
VectorDouble & getNormal()
get triangle normal
auto getFTensor1NormalsAtGaussPts()
get normal at integration points
auto getFTensor1Normal()
get normal as tensor
int getNumNodes()
get element number of nodes
VectorDouble & getCoords()
get triangle coordinates
const EntityHandle * getConn()
get element connectivity
MatrixDouble & getTangent1AtGaussPts()
if higher order geometry return tangent vector to triangle at Gauss pts.
auto getFTensor1Tangent1AtGaussPts()
get tangent 1 at integration points
std::string meshPositionsFieldName
MatrixDouble tangentOneAtGaussPts
virtual MoFEMErrorCode calculateAreaAndNormal()
Calculate element area and normal of the face.
MoFEMErrorCode operator()()
function is run for every finite element
MatrixDouble normalsAtGaussPts
virtual MoFEMErrorCode getSpaceBaseAndOrderOnElement()
Determine approximation space and order of base functions.
virtual MoFEMErrorCode calculateAreaAndNormalAtIntegrationPts()
Calculate element area and normal of the face at integration points.
virtual MoFEMErrorCode setIntegrationPts()
Set integration points.
const EntityHandle * conn
virtual MoFEMErrorCode calculateCoordinatesAtGaussPts()
Calculate coordinate at integration points.
MatrixDouble tangentTwoAtGaussPts
ForcesAndSourcesCore * ptrFE
structure to get information form mofem into EntitiesFieldData
Base volume element used to integrate on skeleton.