v0.14.0
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 33 of file DataOperators.hpp.

◆ DoWorkRhsHookFunType

using MoFEM::DataOperator::DoWorkRhsHookFunType = boost::function<MoFEMErrorCode( DataOperator *op_ptr, int side, EntityType type, EntitiesFieldData::EntData &data)>

Definition at line 60 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 }

◆ ~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

◆ 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 MoFEM::OpInvertMatrix< DIM >, MoFEM::OpSetInvJacH1ForFlatPrism, MoFEM::OpCalculateInvJacForFlatPrism, MoFEM::OpSetInvJacH1ForFatPrism, MoFEM::OpCalculateInvJacForFatPrism, MoFEM::OpMultiplyDeterminantOfJacobianAndWeightsForFatPrisms, MoFEM::OpSetContravariantPiolaTransformOnEdge2D, MoFEM::OpSetContravariantPiolaTransformOnFace2DImpl< 3 >, MoFEM::OpSetContravariantPiolaTransformOnFace2DImpl< 2 >, MoFEM::OpSetCovariantPiolaTransformOnFace2DImpl< 2 >, MoFEM::OpMakeHdivFromHcurl, MoFEM::OpSetInvJacHcurlFaceImpl< 3 >, MoFEM::OpSetInvJacHcurlFaceImpl< 2 >, MoFEM::OpSetInvJacSpaceForFaceImpl< 2, 2 >, MoFEM::OpSetInvJacSpaceForFaceImpl< 3, 1 >, MoFEM::OpSetInvJacSpaceForFaceImpl< 2, 1 >, MoFEM::OpCalculateHVecTensorDivergence< Tensor_Dim0, Tensor_Dim1, CoordSys >, MoFEM::OpCalculateHTensorTensorField< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateHVecTensorField< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateHcurlVectorCurl< 1, 3 >, MoFEM::OpCalculateHcurlVectorCurl< 1, 2 >, MoFEM::OpCalculateHcurlVectorCurl< 3, 3 >, MoFEM::OpCalculateHdivVectorDivergenceDot< Tensor_Dim1, Tensor_Dim2 >, MoFEM::OpCalculateHVecVectorHessian< BASE_DIM, SPACE_DIM >, MoFEM::OpCalculateHVecVectorGradient< BASE_DIM, SPACE_DIM >, MoFEM::OpCalculateHdivVectorDivergence< BASE_DIM, SPACE_DIM >, MoFEM::OpCalculateHVecVectorFieldDot< 3, Field_Dim >, MoFEM::OpCalculateHVecVectorField_General< 3, Field_Dim, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateVectorFieldHessian< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateTensor2SymmetricFieldGradient_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateVectorFieldGradientDot< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateVectorFieldGradient_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateScalarFieldHessian< Tensor_Dim >, MoFEM::OpLoopSide< E >, MoFEM::OpCalculateScalarFieldGradient_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateTensor2SymmetricFieldValuesDot< Tensor_Dim >, MoFEM::OpCalculateTensor2SymmetricFieldValues< Tensor_Dim >, MoFEM::OpCalculateTensor2FieldValuesDot< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateTensor2FieldValues_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateTensor2FieldValues_General< Tensor_Dim0, Tensor_Dim1, T, L, A >, MoFEM::OpPostProcMapInMoab< DIM1, DIM2 >, MoFEM::OpCalculateVectorFieldValuesFromPetscVecImpl< Tensor_Dim, CTX >, MoFEM::OpSetCovariantPiolaTransformOnEdge, MoFEM::OpCalculateDivergenceVectorFieldValues< Tensor_Dim, COORDINATE_SYSTEM >, MoFEM::OpGetHOTangentOnEdge, MoFEM::OpSetCovariantPiolaTransformOnFace, MoFEM::OpSetContravariantPiolaTransformOnFace, MoFEM::OpGetCoordsAndNormalsOnPrism, MoFEM::OpGetHOTangentsOnEdge< FIELD_DIM >, MoFEM::OpCopyGeomDataToE< 2 >, MoFEM::OpCalculateVectorFieldValues_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >, MoFEM::OpHOSetCovariantPiolaTransformOnFace3D, MoFEM::OpHOSetContravariantPiolaTransformOnEdge3D, MoFEM::OpCalculateVectorFieldValues_General< Tensor_Dim, T, L, A >, MoFEM::OpHOSetContravariantPiolaTransformOnFace3D, MoFEM::OpGetDataAndGradient< RANK, DIM >, MoFEM::OpGetHONormalsOnFace< FIELD_DIM >, MoFEM::OpCalculateHOJacForFaceImpl< 3 >, MoFEM::OpCalculateHOJacForFaceImpl< 2 >, OpPressure, MoFEM::OpSetCovariantPiolaTransform, OpCalculateLameStress< DIM >, OpSimpleRodPreStress, MoFEM::OpSetHOCovariantPiolaTransform, MoFEM::OpSetContravariantPiolaTransform, MoFEM::OpSetHOContravariantPiolaTransform, OpCheckValsDiffVals, OpCheckValsDiffVals, MoFEM::OpSetHOWeights, MoFEM::OpCalculateScalarFieldValuesFromPetscVecImpl< CTX >, MoFEM::OpSetInvJacHdivAndHcurl, OpVolumeAssemble, MoFEM::OpDGProjectionEvaluation, MoFEM::OpSetInvJacH1, MoFEM::OpSetHOWeightsOnEdge, MoFEM::OpGetTensor1fromFunc< SPACE_DIM, BASE_DIM >, MyOp2, MoFEM::OpDGProjectionCoefficients, MoFEM::OpSetHOWeightsOnFace, OpVolumeSide, MoFEM::OpGetTensor0fromFunc, Example::OpCalcSurfaceAverageTemperature, MoFEM::OpSchurAssembleEnd< SchurDGESV >, MoFEM::OpDGProjectionMassMatrix, MoFEM::OpSetHOInvJacVectorBase, MoFEM::OpSchurAssembleEnd< SchurDSYSV >, MoFEM::OpBaseDerivativesNext< 3 >, OpVolumeTest, OpFaceSide, MoFEM::OpCalculateScalarFieldValues, SkeletonFE, CallingOp, SkeletonFE, MoFEM::OpCalcNormL2Tensor2< DIM_1, DIM_2 >, SkeletonFE, MoFEM::OpLoopThis< E >, OpFace, MoFEM::OpBaseDerivativesNext< 1 >, AnalyticalDirichletBC::ApproxField::OpRhs< FUNEVAL >, OpVolume, PrismOpRhs, QuadOpRhs, OpFlux, MoFEM::OpBaseDerivativesSetHOInvJacobian< 2 >, MoFEM::OpSetHOInvJacToScalarBasesImpl, MoFEM::OpCalcNormL2Tensor1< DIM >, PrismOpCheck, OpFace, OpFlux, PrismOp, QuadOpCheck, MoFEM::OpCalculateScalarFieldValues_General< T, A >, MoFEM::OpCalculateScalarFieldValues_General< double, DoubleAllocator >, MoFEM::OpUnSetBc, MoFEM::OpCalculateHOCoords< FIELD_DIM >, MoFEM::OpRunParent, OpFacesRot, MoFEM::OpBaseDerivativesMass< 1 >, MoFEM::OpSetBc, OpFacesFluxes, OpVolumeSet, SkeletonFE::OpFaceSide, SkeletonFE::OpFaceSide, SkeletonFE::OpFaceSide, OpDivergence, OpVolCurl, MoFEM::OpCalcNormL2Tensor0, OpDivergence, OpVolDivergence, OpFace, MoFEM::OpCalculateHOJacForVolume, OpRow, OpCheck, OpVolume, MoFEM::OpSchurAssembleBegin, MetaSpringBC::OpGetNormalSpEle, MetaSpringBC::OpGetTangentSpEle, MetaSpringBC::OpSpringFsMaterial, MoFEM::OpScaleMatrix, MoFEM::OpSymmetrizeTensor< DIM >, MoFEM::OpTensorTimesSymmetricTensor< DIM_01, DIM_23, S >, NavierStokesElement::OpCalcVolumeFlux, NavierStokesElement::OpPostProcVorticity, NavierStokesElement::OpPostProcDrag, NavierStokesElement::OpCalcDragTraction, NavierStokesElement::OpCalcDragForce, NonlinearPoissonOps::OpBoundaryResidualVector, Poisson2DNonhomogeneousOperators::OpBoundaryRhs, Poisson2DLagrangeMultiplierOperators::OpBoundaryRhsG, Example::BoundaryOp, MetaSpringBC::OpSpringFs, ReactionDiffusionEquation::OpAssembleStiffRhs< DIM >, NonlinearPoissonOps::OpDomainResidualVector, Example::OpSecond, Poisson2DLagrangeMultiplierOperators::OpDomainRhsF, Poisson2DNonhomogeneousOperators::OpDomainRhs, ReactionDiffusionEquation::OpAssembleSlowRhs, Example::OpFirst, Example::OpZero, OpVolumeCalculation, OpAleLhsPre_dX_dx< S >, NavierStokesElement::OpAssembleRhs, OpAssemble, OpCalculateStiffnessScaledByDensityField, OpCalculateHomogeneousStiffness< S >, OpCalculateEshelbyStress, OpCalculateEnergy, OpCalculateStress< S >, HookeInternalStressElement::OpSaveStress, OpCalculateStrainAle, OpCalculateStrain< D >, HookeInternalStressElement::OpGetAnalyticalInternalStress< S >, and HookeInternalStressElement::OpGetInternalStress.

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  }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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

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.

Definition at line 91 of file DataOperators.hpp.

◆ doEntities

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

If true operator is executed for entity.

Examples
HookeInternalStressElement.hpp.

Definition at line 85 of file DataOperators.hpp.

◆ doPrisms

bool& MoFEM::DataOperator::doPrisms

\deprectaed

Examples
ElasticityMixedFormulation.hpp.

Definition at line 95 of file DataOperators.hpp.

◆ doQuads

bool& MoFEM::DataOperator::doQuads

\deprectaed

Examples
ElasticityMixedFormulation.hpp.

Definition at line 92 of file DataOperators.hpp.

◆ doTets

bool& MoFEM::DataOperator::doTets

\deprectaed

Examples
ElasticityMixedFormulation.hpp.

Definition at line 94 of file DataOperators.hpp.

◆ doTris

bool& MoFEM::DataOperator::doTris

\deprectaed

Examples
ElasticityMixedFormulation.hpp.

Definition at line 93 of file DataOperators.hpp.

◆ doVertices

bool& MoFEM::DataOperator::doVertices

\deprectaed If false skip vertices

Examples
ElasticityMixedFormulation.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
UnsaturatedFlow.hpp.

Definition at line 82 of file DataOperators.hpp.


The documentation for this struct was generated from the following files:
MoFEMFunctionReturnHot
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:447
MoFEM::DataOperator::doTris
bool & doTris
\deprectaed
Definition: DataOperators.hpp:93
LASTBASE
@ LASTBASE
Definition: definitions.h:69
NOBASE
@ NOBASE
Definition: definitions.h:59
MoFEM::DataOperator::doPrisms
bool & doPrisms
\deprectaed
Definition: DataOperators.hpp:95
MoFEM::DataOperator::doTets
bool & doTets
\deprectaed
Definition: DataOperators.hpp:94
MoFEM::DataOperator::doWork
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.
Definition: DataOperators.hpp:40
MoFEM::DataOperator::doVertices
bool & doVertices
\deprectaed If false skip vertices
Definition: DataOperators.hpp:90
CHKERR
#define CHKERR
Inline error check.
Definition: definitions.h:535
convert.type
type
Definition: convert.py:64
MoFEM::DataOperator::doQuads
bool & doQuads
\deprectaed
Definition: DataOperators.hpp:92
MoFEM::DataOperator::doWorkRhsHook
DoWorkRhsHookFunType doWorkRhsHook
Definition: DataOperators.hpp:62
MoFEM::DataOperator::doEdges
bool & doEdges
\deprectaed If false skip edges
Definition: DataOperators.hpp:91
MoFEM::DataOperator::doEntities
std::array< bool, MBMAXTYPE > doEntities
If true operator is executed for entity.
Definition: DataOperators.hpp:85
MoFEM::DataOperator::getSymm
bool getSymm() const
Get if operator uses symmetry of DOFs or not.
Definition: DataOperators.hpp:107
MOFEM_DATA_INCONSISTENCY
@ MOFEM_DATA_INCONSISTENCY
Definition: definitions.h:31
MoFEM::DataOperator::doWorkLhsHook
DoWorkLhsHookFunType doWorkLhsHook
Definition: DataOperators.hpp:35
MoFEMFunctionBeginHot
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:440
MoFEM::DataOperator::sYmm
bool sYmm
If true assume that matrix is symmetric structure.
Definition: DataOperators.hpp:82
MOFEM_NOT_IMPLEMENTED
@ MOFEM_NOT_IMPLEMENTED
Definition: definitions.h:32