v0.14.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Private Member Functions | List of all members
MoFEM::DataOperator Struct Reference

base operator to do operations at Gauss Pt. level More...

#include <src/finite_elements/DataOperators.hpp>

Inheritance diagram for MoFEM::DataOperator:
[legend]
Collaboration diagram for MoFEM::DataOperator:
[legend]

Public Types

using DoWorkLhsHookFunType = boost::function< MoFEMErrorCode(DataOperator *op_ptr, int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)>
 
using DoWorkRhsHookFunType = boost::function< MoFEMErrorCode(DataOperator *op_ptr, int side, EntityType type, EntitiesFieldData::EntData &data)>
 

Public Member Functions

 DataOperator (const bool symm=true)
 
virtual ~DataOperator ()=default
 
virtual MoFEMErrorCode doWork (int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
 Operator for bi-linear form, usually to calculate values on left hand side. More...
 
virtual MoFEMErrorCode opLhs (EntitiesFieldData &row_data, EntitiesFieldData &col_data)
 
virtual MoFEMErrorCode doWork (int side, EntityType type, EntitiesFieldData::EntData &data)
 Operator for linear form, usually to calculate values on right hand side. More...
 
virtual MoFEMErrorCode opRhs (EntitiesFieldData &data, const bool error_if_no_base=false)
 
bool getSymm () const
 Get if operator uses symmetry of DOFs or not. More...
 
void setSymm ()
 set if operator is executed taking in account symmetry More...
 
void unSetSymm ()
 unset if operator is executed for non symmetric problem More...
 

Public Attributes

DoWorkLhsHookFunType doWorkLhsHook
 
DoWorkRhsHookFunType doWorkRhsHook
 
bool sYmm
 If true assume that matrix is symmetric structure. More...
 
std::array< bool, MBMAXTYPE > doEntities
 If true operator is executed for entity. More...
 
booldoVertices
 \deprectaed If false skip vertices More...
 
booldoEdges
 \deprectaed If false skip edges More...
 
booldoQuads
 \deprectaed More...
 
booldoTris
 \deprectaed More...
 
booldoTets
 \deprectaed More...
 
booldoPrisms
 \deprectaed More...
 

Private Member Functions

template<bool Symm>
MoFEMErrorCode opLhs (EntitiesFieldData &row_data, EntitiesFieldData &col_data)
 
template<bool ErrorIfNoBase>
MoFEMErrorCode opRhs (EntitiesFieldData &data, const std::array< bool, MBMAXTYPE > &do_entities)
 

Detailed Description

base operator to do operations at Gauss Pt. level

Examples
child_and_parent.cpp, free_surface.cpp, hanging_node_approx.cpp, level_set.cpp, poisson_2d_dis_galerkin.cpp, and simple_l2_only.cpp.

Definition at line 24 of file DataOperators.hpp.

Member Typedef Documentation

◆ DoWorkLhsHookFunType

using MoFEM::DataOperator::DoWorkLhsHookFunType = boost::function<MoFEMErrorCode( DataOperator *op_ptr, int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)>

Definition at line 30 of file DataOperators.hpp.

◆ DoWorkRhsHookFunType

Definition at line 58 of file DataOperators.hpp.

Constructor & Destructor Documentation

◆ DataOperator()

MoFEM::DataOperator::DataOperator ( const bool  symm = true)

This not yet implemented, switch off.

Definition at line 21 of file DataOperators.cpp.

22 :
23
24 sYmm(symm),
25
26 doEntities{true, true, true, true, true, true,
27 true, true, true, true, true, true},
28
29 doVertices(doEntities[MBVERTEX]), doEdges(doEntities[MBEDGE]),
30 doQuads(doEntities[MBQUAD]), doTris(doEntities[MBTRI]),
31 doTets(doEntities[MBTET]), doPrisms(doEntities[MBPRISM]) {
32
33 /// This not yet implemented, switch off.
34 doEntities[MBPOLYGON] = false;
35 doEntities[MBPYRAMID] = false;
36 doEntities[MBKNIFE] = false;
37 doEntities[MBPOLYHEDRON] = false;
38}
std::array< bool, MBMAXTYPE > doEntities
If true operator is executed for entity.
bool & doTris
\deprectaed
bool & doPrisms
\deprectaed
bool sYmm
If true assume that matrix is symmetric structure.
bool & doVertices
\deprectaed If false skip vertices
bool & doTets
\deprectaed
bool & doEdges
\deprectaed If false skip edges
bool & doQuads
\deprectaed

◆ ~DataOperator()

virtual MoFEM::DataOperator::~DataOperator ( )
virtualdefault

Member Function Documentation

◆ doWork() [1/2]

virtual MoFEMErrorCode MoFEM::DataOperator::doWork ( int  row_side,
int  col_side,
EntityType  row_type,
EntityType  col_type,
EntitiesFieldData::EntData row_data,
EntitiesFieldData::EntData col_data 
)
inlinevirtual

Operator for bi-linear form, usually to calculate values on left hand side.

Reimplemented in OpAssemble, NavierStokesElement::OpAssembleLhs, MetaSpringBC::OpSpringKs, MetaSpringBC::OpSpringKs_dX, MetaSpringBC::SpringALEMaterialVolOnSideLhs, MetaSpringBC::OpSpringALEMaterialLhs, MetaSpringBC::OpSpringALEMaterialLhs_dX_dx, MetaSpringBC::OpSpringALEMaterialLhs_dX_dX, OpRotatingFrameTools::OpRotatingFrameBoundaryLhs, ReactionDiffusionEquation::OpAssembleMass, ReactionDiffusionEquation::OpAssembleStiffLhs< DIM >, Poisson2DNonhomogeneousOperators::OpDomainLhs, Poisson2DNonhomogeneousOperators::OpBoundaryLhs, Poisson2DLagrangeMultiplierOperators::OpDomainLhsK, Poisson2DLagrangeMultiplierOperators::OpBoundaryLhsC, NonlinearPoissonOps::OpDomainTangentMatrix, NonlinearPoissonOps::OpBoundaryTangentMatrix, MyOp< OP >, CallingOp, MyOp2, PrismOpLhs, QuadOpLhs, OpFace, AnalyticalDirichletBC::ApproxField::OpLhs, and OpSimpleRodK.

Examples
MagneticElement.hpp, free_surface.cpp, and lorentz_force.cpp.

Definition at line 40 of file DataOperators.hpp.

43 {
45 if (doWorkLhsHook) {
46 CHKERR doWorkLhsHook(this, row_side, col_side, row_type, col_type,
47 row_data, col_data);
48 } else {
49 SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
50 "doWork function is not implemented for this operator");
51 }
53 }
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:447
@ MOFEM_NOT_IMPLEMENTED
Definition: definitions.h:32
#define CHKERR
Inline error check.
Definition: definitions.h:535
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:440
DoWorkLhsHookFunType doWorkLhsHook

◆ doWork() [2/2]

virtual MoFEMErrorCode MoFEM::DataOperator::doWork ( int  side,
EntityType  type,
EntitiesFieldData::EntData data 
)
inlinevirtual

Operator for linear form, usually to calculate values on right hand side.

Reimplemented in OpElasticTools::OpSchurBegin, OpElasticTools::OpSchurBeginBoundary, OpCalculateStrain< D >, OpCalculateStrainAle, OpCalculateStress< S >, OpCalculateEnergy, OpCalculateEshelbyStress, OpCalculateHomogeneousStiffness< S >, OpCalculateStiffnessScaledByDensityField, OpAssemble, OpAleLhsPre_dX_dx< S >, NavierStokesElement::OpAssembleRhs, HookeInternalStressElement::OpGetInternalStress, HookeInternalStressElement::OpGetAnalyticalInternalStress< S >, HookeInternalStressElement::OpSaveStress, OpVolumeCalculation, AtomTest::OpError< 1 >, AtomTest::OpError< 1 >, AtomTest::OpErrorSkel< 1 >, AtomTest::OpError< FIELD_DIM >, MoFEM::OpTensorTimesSymmetricTensor< DIM_01, DIM_23, S >, MoFEM::OpSymmetrizeTensor< DIM >, MoFEM::OpScaleMatrix, NavierStokesElement::OpCalcDragForce, NavierStokesElement::OpCalcDragTraction, NavierStokesElement::OpPostProcDrag, NavierStokesElement::OpPostProcVorticity, NavierStokesElement::OpCalcVolumeFlux, OpContactTools::OpPostProcVertex, OpContactTools::OpGetClosestRigidBodyData, OpContactTools::OpPostProcContact, OpContactTools::OpGetGaussPtsContactState, OpContactTools::OpGetContactArea, OpElasticTools::OpStrain, OpElasticTools::OpLogStrain, OpElasticTools::OpStress, OpElasticTools::OpCalculateLogStressTangent< TANGENT >, OpElasticTools::OpCalculateNeoHookeStressTangent, OpElasticTools::OpPostProcElastic< LOGSTRAIN >, OpElasticTools::OpSetMaterialBlock, OpElasticTools::OpSetMaterialBlockBoundary, OpElasticTools::OpSaveReactionForces, OpElasticTools::OpSchurEnd, OpElasticTools::OpSchurEndBoundary, OpPlasticTools::OpCalculatePlasticSurfaceAndFlow, OpPlasticTools::OpPlasticStress, OpPlasticTools::OpPostProcPlastic, OpPlasticTools::OpGetGaussPtsPlasticState, OpRotatingFrameTools::OpCalculatePlasticConvRotatingFrame, PlasticOps::OpCalculatePlasticSurfaceImpl< DIM, GAUSS, DomainEleOp >, PlasticOps::OpCalculatePlasticityImpl< DIM, GAUSS, DomainEleOp >, PlasticOps::OpPlasticStressImpl< DIM, GAUSS, DomainEleOp >, ThermoElasticOps::OpStressThermal, ReactionDiffusionEquation::OpAssembleSlowRhs, ReactionDiffusionEquation::OpAssembleStiffRhs< DIM >, Example::OpZero, Example::OpFirst, Example::OpSecond, MixedPoisson::OpError, StandardPoisson::OpError, Example::BoundaryOp, PhotonDiffusion::OpCameraInteg, Poisson2DiscontGalerkinOperators::OpL2BoundaryRhs, Poisson2DNonhomogeneousOperators::OpDomainRhs, Poisson2DNonhomogeneousOperators::OpBoundaryRhs, Poisson2DLagrangeMultiplierOperators::OpDomainRhsF, Poisson2DLagrangeMultiplierOperators::OpBoundaryRhsG, NonlinearPoissonOps::OpDomainResidualVector, NonlinearPoissonOps::OpBoundaryResidualVector, ElasticExample::OpCalculateTraction, HenckyOps::OpCalculateEigenValsImpl< DIM, GAUSS, DomainEleOp >, HenckyOps::OpCalculateLogCImpl< DIM, GAUSS, DomainEleOp >, HenckyOps::OpCalculateLogC_dCImpl< DIM, GAUSS, DomainEleOp >, HenckyOps::OpCalculateHenckyStressImpl< DIM, GAUSS, DomainEleOp >, HenckyOps::OpCalculateHenckyPlasticStressImpl< DIM, GAUSS, DomainEleOp >, HenckyOps::OpCalculatePiolaStressImpl< DIM, GAUSS, DomainEleOp >, HenckyOps::OpHenckyTangentImpl< DIM, GAUSS, DomainEleOp >, OpError, MetaSpringBC::OpSpringFsMaterial, MetaSpringBC::OpGetTangentSpEle, MetaSpringBC::OpGetNormalSpEle, OpFace, SkeletonFE::OpFaceSide, SkeletonFE, SkeletonFE::OpFaceSide, SkeletonFE, SkeletonFE::OpFaceSide, SkeletonFE, MyOp< OP >, MyOp< OP >, CallingOp, MyOp2, OpCheckValsDiffVals, OpDivergence, OpFlux, OpDivergence, OpFlux, PrismOp, PrismOpCheck, PrismOpRhs, QuadOpCheck, QuadOpRhs, OpValsDiffVals, OpCheckValsDiffVals, OpFace, OpVolumeSet, OpVolumeTest, OpVolumeAssemble, MoFEM::OpBaseDerivativesMass< 1 >, MoFEM::OpBaseDerivativesSetHOInvJacobian< 2 >, MoFEM::OpBaseDerivativesNext< 1 >, MoFEM::OpBaseDerivativesNext< 3 >, MoFEM::OpSetInvJacH1, MoFEM::OpSetInvJacHdivAndHcurl, MoFEM::OpSetContravariantPiolaTransform, MoFEM::OpSetCovariantPiolaTransform, MoFEM::OpGetDataAndGradient< RANK, DIM >, MoFEM::OpGetCoordsAndNormalsOnPrism, MoFEM::OpSetContravariantPiolaTransformOnFace, MoFEM::OpSetCovariantPiolaTransformOnFace, MoFEM::OpGetHOTangentOnEdge, MoFEM::OpSetCovariantPiolaTransformOnEdge, MoFEM::OpLoopSide< E >, MoFEM::OpSetBc, MoFEM::OpUnSetBc, MoFEM::OpCalculateHOJacForVolume, MoFEM::OpCalculateHOCoords< FIELD_DIM >, MoFEM::OpSetHOInvJacToScalarBasesImpl, MoFEM::OpSetHOInvJacVectorBase, MoFEM::OpSetHOWeightsOnFace, MoFEM::OpSetHOWeightsOnEdge, MoFEM::OpSetHOWeights, MoFEM::OpSetHOContravariantPiolaTransform, MoFEM::OpSetHOCovariantPiolaTransform, MoFEM::OpCalculateHOJacForFaceImpl< 2 >, MoFEM::OpCalculateHOJacForFaceImpl< 3 >, MoFEM::OpGetHONormalsOnFace< FIELD_DIM >, MoFEM::OpHOSetContravariantPiolaTransformOnFace3D, MoFEM::OpHOSetContravariantPiolaTransformOnEdge3D, MoFEM::OpHOSetCovariantPiolaTransformOnFace3D, MoFEM::OpGetHOTangentsOnEdge< FIELD_DIM >, MoFEM::OpRunParent, MoFEM::OpCalcNormL2Tensor0, MoFEM::OpCalcNormL2Tensor1< DIM >, MoFEM::OpCalcNormL2Tensor2< DIM_1, DIM_2 >, MoFEM::OpSchurAssembleBegin, MoFEM::OpSchurAssembleEnd< SCHUR_DSYSV >, MoFEM::OpSchurAssembleEnd< SCHUR_DGESV >, MoFEM::OpCalculateScalarFieldValues_General< T, A >, MoFEM::OpCalculateScalarFieldValues_General< double, DoubleAllocator >, MoFEM::OpCalculateScalarFieldValues, MoFEM::OpCalculateScalarFieldValuesFromPetscVecImpl< CTX >, MoFEM::OpCalculateVectorFieldValues_General< Tensor_Dim, T, L, A >, MoFEM::OpCalculateVectorFieldValues_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateDivergenceVectorFieldValues< Tensor_Dim, COORDINATE_SYSTEM >, MoFEM::OpCalculateVectorFieldValuesFromPetscVecImpl< Tensor_Dim, CTX >, MoFEM::OpCalculateTensor2FieldValues_General< Tensor_Dim0, Tensor_Dim1, T, L, A >, MoFEM::OpCalculateTensor2FieldValues_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateTensor2FieldValuesDot< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateTensor2SymmetricFieldValues< Tensor_Dim >, MoFEM::OpCalculateTensor2SymmetricFieldValuesDot< Tensor_Dim >, MoFEM::OpCalculateScalarFieldGradient_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateScalarFieldHessian< Tensor_Dim >, MoFEM::OpCalculateVectorFieldGradient_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateVectorFieldGradientDot< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateTensor2SymmetricFieldGradient_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateVectorFieldHessian< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateHVecVectorField_General< 3, Field_Dim, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateHVecVectorFieldDot< 3, Field_Dim >, MoFEM::OpCalculateHdivVectorDivergence< BASE_DIM, SPACE_DIM >, MoFEM::OpCalculateHVecVectorGradient< BASE_DIM, SPACE_DIM >, MoFEM::OpCalculateHVecVectorHessian< BASE_DIM, SPACE_DIM >, MoFEM::OpCalculateHdivVectorDivergenceDot< Tensor_Dim1, Tensor_Dim2 >, MoFEM::OpCalculateHcurlVectorCurl< 3, 3 >, MoFEM::OpCalculateHcurlVectorCurl< 1, 2 >, MoFEM::OpCalculateHVecTensorField< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateHTensorTensorField< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateHVecTensorDivergence< Tensor_Dim0, Tensor_Dim1, CoordSys >, MoFEM::OpSetInvJacSpaceForFaceImpl< 2, 1 >, MoFEM::OpSetInvJacSpaceForFaceImpl< 3, 1 >, MoFEM::OpSetInvJacSpaceForFaceImpl< 2, 2 >, MoFEM::OpSetInvJacHcurlFaceImpl< 2 >, MoFEM::OpSetInvJacHcurlFaceImpl< 3 >, MoFEM::OpMakeHdivFromHcurl, MoFEM::OpSetCovariantPiolaTransformOnFace2DImpl< 2 >, MoFEM::OpSetContravariantPiolaTransformOnFace2DImpl< 2 >, MoFEM::OpSetContravariantPiolaTransformOnFace2DImpl< 3 >, MoFEM::OpSetContravariantPiolaTransformOnEdge2D, MoFEM::OpMultiplyDeterminantOfJacobianAndWeightsForFatPrisms, MoFEM::OpCalculateInvJacForFatPrism, MoFEM::OpSetInvJacH1ForFatPrism, MoFEM::OpCalculateInvJacForFlatPrism, MoFEM::OpSetInvJacH1ForFlatPrism, MoFEM::OpInvertMatrix< DIM >, MoFEM::OpPostProcMapInMoab< DIM1, DIM2 >, OpCheck, AnalyticalDirichletBC::ApproxField::OpRhs< FUNEVAL >, OpSimpleRodPreStress, LevelSet::OpRhsSkeleton, LevelSet::OpLhsSkeleton, OpPressure, OpFace, Example::OpCalcSurfaceAverageTemperature, and OpH1LhsSkeleton.

Definition at line 67 of file DataOperators.hpp.

68 {
70 if (doWorkRhsHook) {
71 CHKERR doWorkRhsHook(this, side, type, data);
72 } else {
73 SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
74 "doWork function is not implemented for this operator");
75 }
77 }
DoWorkRhsHookFunType doWorkRhsHook

◆ getSymm()

bool MoFEM::DataOperator::getSymm ( ) const
inline

Get if operator uses symmetry of DOFs or not.

If symmetry is used, only not repeating combinations of entities are looped. For an example pair of (Vertex, Edge_0) and (Edge_0, Vertex) will calculate the same matrices only transposed. Implementing that this can be exploited by integrating only one pair.

Returns
true if symmetry

Definition at line 107 of file DataOperators.hpp.

107{ return sYmm; }

◆ opLhs() [1/2]

MoFEMErrorCode MoFEM::DataOperator::opLhs ( EntitiesFieldData row_data,
EntitiesFieldData col_data 
)
virtual

Definition at line 90 of file DataOperators.cpp.

91 {
92 if (getSymm())
93 return opLhs<true>(row_data, col_data);
94 else
95 return opLhs<false>(row_data, col_data);
96}
bool getSymm() const
Get if operator uses symmetry of DOFs or not.

◆ opLhs() [2/2]

template<bool Symm>
MoFEMErrorCode MoFEM::DataOperator::opLhs ( EntitiesFieldData row_data,
EntitiesFieldData col_data 
)
inlineprivate

Definition at line 41 of file DataOperators.cpp.

42 {
44
45 auto do_col_entity =
46 [&](boost::ptr_vector<EntitiesFieldData::EntData> &row_ent_data,
47 const int ss, const EntityType row_type, const EntityType low_type,
48 const EntityType hi_type) {
50 for (EntityType col_type = low_type; col_type != hi_type; ++col_type) {
51 auto &col_ent_data = col_data.dataOnEntities[col_type];
52 for (size_t SS = 0; SS != col_ent_data.size(); SS++) {
53 if (col_ent_data[SS].getFieldData().size())
54 CHKERR doWork(ss, SS, row_type, col_type, row_ent_data[ss],
55 col_ent_data[SS]);
56 }
57 }
59 };
60
61 auto do_row_entity = [&](const EntityType type) {
63 auto &row_ent_data = row_data.dataOnEntities[type];
64 for (size_t ss = 0; ss != row_ent_data.size(); ++ss) {
65 if constexpr (!Symm)
66 CHKERR do_col_entity(row_ent_data, ss, type, MBVERTEX, type);
67 size_t SS = 0;
68 if constexpr (Symm)
69 SS = ss;
70 for (; SS < col_data.dataOnEntities[type].size(); ++SS) {
71 CHKERR doWork(ss, SS, type, type, row_ent_data[ss],
72 col_data.dataOnEntities[type][SS]);
73 }
74 CHKERR do_col_entity(row_ent_data, ss, type,
75 static_cast<EntityType>(type + 1), MBMAXTYPE);
76 }
78 };
79
80 for (EntityType row_type = MBVERTEX; row_type != MBMAXTYPE; ++row_type) {
81 if (doEntities[row_type]) {
82 CHKERR do_row_entity(row_type);
83 }
84 }
85
86
88}
virtual MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
Operator for bi-linear form, usually to calculate values on left hand side.

◆ opRhs() [1/2]

MoFEMErrorCode MoFEM::DataOperator::opRhs ( EntitiesFieldData data,
const bool  error_if_no_base = false 
)
virtual

Reimplemented in MoFEM::OpAddParentEntData.

Definition at line 140 of file DataOperators.cpp.

141 {
142 if (error_if_no_base)
143 return opRhs<true>(data, doEntities);
144 else
145 return opRhs<false>(data, doEntities);
146}

◆ opRhs() [2/2]

template<bool ErrorIfNoBase>
MoFEMErrorCode MoFEM::DataOperator::opRhs ( EntitiesFieldData data,
const std::array< bool, MBMAXTYPE > &  do_entities 
)
inlineprivate

Definition at line 100 of file DataOperators.cpp.

101 {
103
104 auto do_entity = [&](auto type) {
106
107 auto &ent_data = data.dataOnEntities[type];
108 const size_t size = ent_data.size();
109 for (size_t ss = 0; ss != size; ++ss) {
110
111 auto &side_data = ent_data[ss];
112
113 if (ErrorIfNoBase) {
114 if (side_data.getFieldData().size() &&
115 (side_data.getBase() == NOBASE ||
116 side_data.getBase() == LASTBASE)) {
117 for (VectorDofs::iterator it = side_data.getFieldDofs().begin();
118 it != side_data.getFieldDofs().end(); it++)
119 if ((*it) && (*it)->getActive())
120 SETERRQ(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY, "No base on");
121 }
122 }
123
124 CHKERR doWork(ss, type, side_data);
125 }
126
128 };
129
130 for (EntityType row_type = MBVERTEX; row_type != MBMAXTYPE; ++row_type) {
131 if (do_entities[row_type]) {
132 CHKERR do_entity(row_type);
133 }
134 }
135
136
138}
@ LASTBASE
Definition: definitions.h:69
@ NOBASE
Definition: definitions.h:59
@ MOFEM_DATA_INCONSISTENCY
Definition: definitions.h:31

◆ setSymm()

void MoFEM::DataOperator::setSymm ( )
inline

set if operator is executed taking in account symmetry

Definition at line 110 of file DataOperators.hpp.

110{ sYmm = true; }

◆ unSetSymm()

void MoFEM::DataOperator::unSetSymm ( )
inline

unset if operator is executed for non symmetric problem

Examples
forces_and_sources_testing_flat_prism_element.cpp.

Definition at line 113 of file DataOperators.hpp.

113{ sYmm = false; }

Member Data Documentation

◆ doEdges

bool& MoFEM::DataOperator::doEdges

\deprectaed If false skip edges

Examples
ElasticityMixedFormulation.hpp, and NavierStokesElement.hpp.

Definition at line 91 of file DataOperators.hpp.

◆ doEntities

std::array<bool, MBMAXTYPE> MoFEM::DataOperator::doEntities

◆ doPrisms

bool& MoFEM::DataOperator::doPrisms

\deprectaed

Examples
ElasticityMixedFormulation.hpp, and NavierStokesElement.hpp.

Definition at line 95 of file DataOperators.hpp.

◆ doQuads

bool& MoFEM::DataOperator::doQuads

\deprectaed

Examples
ElasticityMixedFormulation.hpp, and NavierStokesElement.hpp.

Definition at line 92 of file DataOperators.hpp.

◆ doTets

bool& MoFEM::DataOperator::doTets

\deprectaed

Examples
ElasticityMixedFormulation.hpp, and NavierStokesElement.hpp.

Definition at line 94 of file DataOperators.hpp.

◆ doTris

bool& MoFEM::DataOperator::doTris

\deprectaed

Examples
ElasticityMixedFormulation.hpp, and NavierStokesElement.hpp.

Definition at line 93 of file DataOperators.hpp.

◆ doVertices

bool& MoFEM::DataOperator::doVertices

\deprectaed If false skip vertices

Examples
ElasticityMixedFormulation.hpp, and NavierStokesElement.hpp.

Definition at line 90 of file DataOperators.hpp.

◆ doWorkLhsHook

DoWorkLhsHookFunType MoFEM::DataOperator::doWorkLhsHook

Definition at line 35 of file DataOperators.hpp.

◆ doWorkRhsHook

DoWorkRhsHookFunType MoFEM::DataOperator::doWorkRhsHook

Definition at line 62 of file DataOperators.hpp.

◆ sYmm

bool MoFEM::DataOperator::sYmm

If true assume that matrix is symmetric structure.

Examples
NavierStokesElement.hpp, UnsaturatedFlow.hpp, and reaction_diffusion.cpp.

Definition at line 82 of file DataOperators.hpp.


The documentation for this struct was generated from the following files: