12#ifndef __FATPRISMELEMENTFORCESANDSURCESCORE_HPP__
13#define __FATPRISMELEMENTFORCESANDSURCESCORE_HPP__
15using namespace boost::numeric;
57 using VolumeElementForcesAndSourcesCore::UserDataOperator::UserDataOperator;
62 inline double getArea(
const int dd);
210FatPrismElementForcesAndSourcesCore::UserDataOperator::getArea(
const int dd) {
215FatPrismElementForcesAndSourcesCore::UserDataOperator::getAreaF3() {
219FatPrismElementForcesAndSourcesCore::UserDataOperator::getAreaF4() {
224FatPrismElementForcesAndSourcesCore::UserDataOperator::getNormal() {
229FatPrismElementForcesAndSourcesCore::UserDataOperator::getNormalF3() {
232 return VectorAdaptor(3, ublas::shallow_array_adaptor<double>(3, data));
236FatPrismElementForcesAndSourcesCore::UserDataOperator::getNormalF4() {
239 return VectorAdaptor(3, ublas::shallow_array_adaptor<double>(3, data));
243FatPrismElementForcesAndSourcesCore::UserDataOperator::getGaussPts() {
247inline MatrixDouble &FatPrismElementForcesAndSourcesCore::UserDataOperator::
248 getGaussPtsTrianglesOnly() {
253inline MatrixDouble &FatPrismElementForcesAndSourcesCore::UserDataOperator::
254 getGaussPtsThroughThickness() {
260FatPrismElementForcesAndSourcesCore::UserDataOperator::getCoordsAtGaussPts() {
265inline MatrixDouble &FatPrismElementForcesAndSourcesCore::UserDataOperator::
266 getCoordsAtGaussPtsTrianglesOnly() {
271inline MatrixDouble &FatPrismElementForcesAndSourcesCore::UserDataOperator::
272 getHOCoordsAtGaussPtsF3() {
277inline MatrixDouble &FatPrismElementForcesAndSourcesCore::UserDataOperator::
278 getHOCoordsAtGaussPtsF4() {
284FatPrismElementForcesAndSourcesCore::UserDataOperator::getNormalsAtGaussPtsF3() {
290FatPrismElementForcesAndSourcesCore::UserDataOperator::getNormalsAtGaussPtsF4() {
295inline ublas::matrix_row<MatrixDouble>
296FatPrismElementForcesAndSourcesCore::UserDataOperator::getNormalsAtGaussPtsF3(
298 return ublas::matrix_row<MatrixDouble>(
304inline ublas::matrix_row<MatrixDouble>
305FatPrismElementForcesAndSourcesCore::UserDataOperator::getNormalsAtGaussPtsF4(
307 return ublas::matrix_row<MatrixDouble>(
313inline MatrixDouble &FatPrismElementForcesAndSourcesCore::UserDataOperator::
314 getTangent1AtGaussPtF3() {
319inline MatrixDouble &FatPrismElementForcesAndSourcesCore::UserDataOperator::
320 getTangent2AtGaussPtF3() {
325inline MatrixDouble &FatPrismElementForcesAndSourcesCore::UserDataOperator::
326 getTangent1AtGaussPtF4() {
331inline MatrixDouble &FatPrismElementForcesAndSourcesCore::UserDataOperator::
332 getTangent2AtGaussPtF4() {
338 UserDataOperator::getTrianglesOnlyDataStructure() {
344 UserDataOperator::getTroughThicknessDataStructure() {
350FatPrismElementForcesAndSourcesCore::UserDataOperator::getPrismFE() {
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
VectorShallowArrayAdaptor< double > VectorAdaptor
implementation of Data Operators for Forces and Sources
Deprecated interface functions.
data structure for finite element entity
default operator for Flat Prism element
MatrixDouble & getGaussPts()
get Gauss pts. in the prism
VectorAdaptor getNormalF4()
EntitiesFieldData & getTroughThicknessDataStructure()
EntitiesFieldData & getTrianglesOnlyDataStructure()
MatrixDouble & getCoordsAtGaussPtsTrianglesOnly()
get coordinates at Gauss pts.
MatrixDouble & getGaussPtsThroughThickness()
get Gauss pts. through thickness
VectorAdaptor getNormalF3()
MatrixDouble & getTangent2AtGaussPtF3()
if higher order geometry return tangent vector to triangle at Gauss pts.
MatrixDouble & getHOCoordsAtGaussPtsF4()
coordinate at Gauss points on face 4 (if hierarchical approximation of element geometry)
MatrixDouble & getTangent2AtGaussPtF4()
if higher order geometry return tangent vector to triangle at Gauss pts.
MoFEMErrorCode setPtrFE(ForcesAndSourcesCore *ptr)
MatrixDouble & getNormalsAtGaussPtsF4()
if higher order geometry return normals at face F4 at Gauss pts.
MatrixDouble & getNormalsAtGaussPtsF3()
if higher order geometry return normals at face F3 at Gauss pts.
MatrixDouble & getCoordsAtGaussPts()
get coordinates at Gauss pts.
MatrixDouble & getGaussPtsTrianglesOnly()
get Gauss pts. on triangles
const FatPrismElementForcesAndSourcesCore * getPrismFE()
return pointer to fat prism finite element
MatrixDouble & getHOCoordsAtGaussPtsF3()
coordinate at Gauss points on face 3 (if hierarchical approximation of element geometry)
MatrixDouble & getTangent1AtGaussPtF4()
if higher order geometry return tangent vector to triangle at Gauss pts.
VectorDouble & getNormal()
get triangle normal
MatrixDouble & getTangent1AtGaussPtF3()
if higher order geometry return tangent vector to triangle at Gauss pts.
double getArea(const int dd)
get face aRea
virtual int getRuleThroughThickness(int order)
MatrixDouble hoCoordsAtGaussPtsF3
MatrixDouble nOrmals_at_GaussPtF3
virtual MoFEMErrorCode setGaussPtsTrianglesOnly(int order_triangles_only)
virtual int getRuleTrianglesOnly(int order)
MatrixDouble tAngent2_at_GaussPtF3
EntitiesFieldData dataH1TrianglesOnly
MatrixDouble tAngent2_at_GaussPtF4
MatrixDouble tAngent1_at_GaussPtF3
OpGetCoordsAndNormalsOnPrism opHOCoordsAndNormals
MatrixDouble gaussPtsTrianglesOnly
virtual MoFEMErrorCode setGaussPtsThroughThickness(int order_thickness)
MatrixDouble hoCoordsAtGaussPtsF4
MatrixDouble gaussPtsThroughThickness
MoFEMErrorCode operator()()
function is run for every finite element
MatrixDouble coordsAtGaussPtsTrianglesOnly
MatrixDouble nOrmals_at_GaussPtF4
MatrixDouble tAngent1_at_GaussPtF4
EntitiesFieldData dataH1TroughThickness
ForcesAndSourcesCore * ptrFE
structure to get information form mofem into EntitiesFieldData
MatrixDouble coordsAtGaussPts
coordinated at gauss points
MatrixDouble gaussPts
Matrix of integration points.
calculate normals at Gauss points of triangle element
Volume finite element base.