|
| v0.14.0
|
Go to the documentation of this file.
14 meshPositionsFieldName(
"MESH_NODE_POSITIONS"),
15 opHOCoordsAndNormals(hoCoordsAtGaussPtsF3, nOrmals_at_GaussPtF3,
16 tAngent1_at_GaussPtF3, tAngent2_at_GaussPtF3,
17 hoCoordsAtGaussPtsF4, nOrmals_at_GaussPtF4,
18 tAngent1_at_GaussPtF4, tAngent2_at_GaussPtF4) {
22 "Problem with creation data on element")
40 coords.resize(num_nodes * 3,
false);
65 CHKERR getEntitySense<MBEDGE>(data_curl);
66 CHKERR getEntityDataOrder<MBEDGE>(data_curl,
HCURL);
67 CHKERR getEntitySense<MBTRI>(data_curl);
73 CHKERR getEntitySense<MBTRI>(data_div);
74 CHKERR getEntityDataOrder<MBTRI>(data_div,
HDIV);
79 CHKERR getEntitySense<MBTRI>(data_l2);
80 CHKERR getEntityDataOrder<MBTRI>(data_l2,
L2);
86 int rule =
getRule(order_row, order_col, order_data);
99 gaussPts.resize(3, nb_gauss_pts,
false);
100 cblas_dcopy(nb_gauss_pts, &
QUAD_2D_TABLE[rule]->points[1], 3,
102 cblas_dcopy(nb_gauss_pts, &
QUAD_2D_TABLE[rule]->points[2], 3,
110 cblas_dcopy(3 * nb_gauss_pts,
QUAD_2D_TABLE[rule]->points, 1, shape_ptr,
129 if (nb_gauss_pts == 0)
134 for (
int gg = 0; gg < nb_gauss_pts; gg++) {
135 for (
int dd = 0;
dd < 3;
dd++) {
167 "Not yet implemented");
171 "Not yet implemented");
175 "Not yet implemented");
181 "Not yet implemented");
186 auto check_field = [&]() {
191 (*field_it)->getId())
242 "User operator and finite element do not work together");
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
virtual MoFEMErrorCode opRhs(EntitiesFieldData &data, const bool error_if_no_base=false)
int getMaxRowOrder() const
Get max order of approximation for field in rows.
FlatPrismElementForcesAndSourcesCore(Interface &m_field)
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
@ L2
field with C-1 continuity
static QUAD *const QUAD_2D_TABLE[]
MatrixDouble coordsAtGaussPts
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
virtual MoFEMErrorCode setGaussPts(int order_row, int order_col, int order_data)
set user specific integration rule
virtual FieldBitNumber get_field_bit_number(const std::string name) const =0
get field bit number
int getMaxDataOrder() const
Get max order of approximation for data fields.
MultiIndex Tag for field name.
MatrixDouble tAngent1_at_GaussPtF4
#define QUAD_2D_TABLE_SIZE
OpGetCoordsAndNormalsOnPrism opHOCoordsAndNormals
auto & getElementPolynomialBase()
Get the Entity Polynomial Base object.
int getMaxColOrder() const
Get max order of approximation for field in columns.
std::array< std::bitset< LASTSPACE >, MBMAXTYPE > spacesOnEntities
spaces on entity types
MatrixDouble tAngent1_at_GaussPtF3
Deprecated interface functions.
MoFEMErrorCode getEntityFieldData(EntitiesFieldData &data, const int bit_number, const EntityType type_lo=MBVERTEX, const EntityType type_hi=MBPOLYHEDRON) const
MatrixDouble tAngent2_at_GaussPtF4
const Field_multiIndex * fieldsPtr
raw pointer to fields container
MoFEMErrorCode setPtrFE(ForcesAndSourcesCore *ptr)
#define CHKERR
Inline error check.
virtual moab::Interface & get_moab()=0
implementation of Data Operators for Forces and Sources
MatrixDouble nOrmals_at_GaussPtF3
const std::array< boost::shared_ptr< EntitiesFieldData >, LASTSPACE > dataOnElement
Entity data on element entity rows fields.
MoFEMErrorCode createDataOnElement(EntityType type)
Create a entity data on element object.
Calculate base functions on tetrahedral.
@ LASTSPACE
FieldSpace in [ 0, LASTSPACE )
virtual int getRule(int order_row, int order_col, int order_data)
another variant of getRule
MatrixDouble hoCoordsAtGaussPtsF3
std::bitset< LASTBASE > bAse
bases on element
MatrixDouble tAngent2_at_GaussPtF3
MoFEMErrorCode getSpacesAndBaseOnEntities(EntitiesFieldData &data) const
Get field approximation space and base on entities.
structure to get information form mofem into EntitiesFieldData
MatrixDouble nOrmals_at_GaussPtF4
EntitiesFieldData & dataH1
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
FlatPrism finite element.
@ AINSWORTH_LEGENDRE_BASE
Ainsworth Cole (Legendre) approx. base .
@ HCURL
field with continuous tangents
@ MOFEM_DATA_INCONSISTENCY
MatrixDouble gaussPts
Matrix of integration points.
Class used to pass element data to calculate base functions on flat prism.
MatrixDouble hoCoordsAtGaussPtsF4
FieldApproximationBase
approximation base
std::array< boost::ptr_vector< EntData >, MBMAXTYPE > dataOnEntities
MoFEMErrorCode loopOverOperators()
Iterate user data operators.
boost::shared_ptr< const NumeredEntFiniteElement > numeredEntFiniteElementPtr
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Field_multiIndex::index< FieldName_mi_tag >::type::iterator field_it
MoFEMErrorCode getNodesFieldData(EntitiesFieldData &data, const int bit_number) const
Get data on nodes.
data structure for finite element entity
std::string meshPositionsFieldName
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
@ HDIV
field with continuous normal traction
ForcesAndSourcesCore * ptrFE
MoFEMErrorCode operator()()
function is run for every finite element
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
MoFEMErrorCode calculateNormals()