6#ifndef __FACEELEMENTFORCESANDSOURCESCORE_HPP__
7#define __FACEELEMENTFORCESANDSOURCESCORE_HPP__
9using namespace boost::numeric;
13struct VolumeElementForcesAndSourcesCoreOnSide;
97 using ForcesAndSourcesCore::UserDataOperator::UserDataOperator;
239double FaceElementForcesAndSourcesCore::UserDataOperator::getArea() {
243VectorDouble &FaceElementForcesAndSourcesCore::UserDataOperator::getNormal() {
247VectorDouble &FaceElementForcesAndSourcesCore::UserDataOperator::getTangent1() {
251VectorDouble &FaceElementForcesAndSourcesCore::UserDataOperator::getTangent2() {
255auto FaceElementForcesAndSourcesCore::UserDataOperator::getFTensor1Normal() {
256 double *ptr = &*getNormal().data().begin();
260auto FaceElementForcesAndSourcesCore::UserDataOperator::getFTensor1Tangent1() {
261 double *ptr = &*getTangent1().data().begin();
265auto FaceElementForcesAndSourcesCore::UserDataOperator::getFTensor1Tangent2() {
266 double *ptr = &*getTangent2().data().begin();
270int FaceElementForcesAndSourcesCore::UserDataOperator::getNumNodes() {
275FaceElementForcesAndSourcesCore::UserDataOperator::getConn() {
279VectorDouble &FaceElementForcesAndSourcesCore::UserDataOperator::getCoords() {
283auto FaceElementForcesAndSourcesCore::UserDataOperator::getFTensor1Coords() {
284 double *ptr = &*getCoords().data().begin();
290FaceElementForcesAndSourcesCore::UserDataOperator::getNormalsAtGaussPts() {
295ublas::matrix_row<MatrixDouble>
296FaceElementForcesAndSourcesCore::UserDataOperator::getNormalsAtGaussPts(
298 return ublas::matrix_row<MatrixDouble>(
304FaceElementForcesAndSourcesCore::UserDataOperator::getTangent1AtGaussPts() {
310FaceElementForcesAndSourcesCore::UserDataOperator::getTangent2AtGaussPts() {
315auto FaceElementForcesAndSourcesCore::UserDataOperator::
316 getFTensor1NormalsAtGaussPts() {
317 double *ptr = &*getNormalsAtGaussPts().data().begin();
322auto FaceElementForcesAndSourcesCore::UserDataOperator::
323 getFTensor1Tangent1AtGaussPts() {
324 double *ptr = &*getTangent1AtGaussPts().
data().begin();
329auto FaceElementForcesAndSourcesCore::UserDataOperator::
330 getFTensor1Tangent2AtGaussPts() {
331 double *ptr = &*getTangent2AtGaussPts().
data().begin();
337FaceElementForcesAndSourcesCore::UserDataOperator::getFaceFE() {
361 template <
typename E>
371 boost::shared_ptr<FaceElementForcesAndSourcesCore>
toElePtr;
ForcesAndSourcesCore::UserDataOperator UserDataOperator
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
implementation of Data Operators for Forces and Sources
DEPRECATED typedef FaceElementForcesAndSourcesCore FaceElementForcesAndSourcesCoreBase
Deprecated interface functions.
Data on single entity (This is passed as argument to DataOperator::doWork)
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
boost::shared_ptr< FaceElementForcesAndSourcesCore > toElePtr
OpCopyGeomDataToE(boost::shared_ptr< E > to_ele_ptr)
Copy geometry-related data from one element to other.
Base volume element used to integrate on skeleton.