![]() |
v0.15.0 |
base operator to do operations at Gauss Pt. level More...
#include "src/finite_elements/DataOperators.hpp"
Public Types | |
using | DoWorkLhsHookFunType |
using | DoWorkRhsHookFunType |
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. | |
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. | |
virtual MoFEMErrorCode | opRhs (EntitiesFieldData &data, const bool error_if_no_base=false) |
bool | getSymm () const |
Get if operator uses symmetry of DOFs or not. | |
void | setSymm () |
set if operator is executed taking in account symmetry | |
void | unSetSymm () |
unset if operator is executed for non symmetric problem | |
Public Attributes | |
DoWorkLhsHookFunType | doWorkLhsHook |
DoWorkRhsHookFunType | doWorkRhsHook |
bool | sYmm |
If true assume that matrix is symmetric structure. | |
std::array< bool, MBMAXTYPE > | doEntities |
If true operator is executed for entity. | |
bool & | doVertices |
\deprectaed If false skip vertices | |
bool & | doEdges |
\deprectaed If false skip edges | |
bool & | doQuads |
\deprectaed | |
bool & | doTris |
\deprectaed | |
bool & | doTets |
\deprectaed | |
bool & | doPrisms |
\deprectaed | |
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) |
base operator to do operations at Gauss Pt. level
Definition at line 24 of file DataOperators.hpp.
Definition at line 30 of file DataOperators.hpp.
Definition at line 58 of file DataOperators.hpp.
MoFEM::DataOperator::DataOperator | ( | const bool | symm = true | ) |
This not yet implemented, switch off.
Definition at line 21 of file DataOperators.cpp.
|
virtualdefault |
|
inlinevirtual |
Operator for bi-linear form, usually to calculate values on left hand side.
Reimplemented in AnalyticalDirichletBC::ApproxField::OpLhs, EshelbianPlasticity::OpAssembleBasic< VolUserDataOperator >, EshelbianPlasticity::OpAssembleVolumePositiveDefine, MetaSpringBC::OpSpringALEMaterialLhs, MetaSpringBC::OpSpringALEMaterialLhs_dX_dX, MetaSpringBC::OpSpringALEMaterialLhs_dX_dx, MetaSpringBC::OpSpringKs, MetaSpringBC::OpSpringKs_dX, MetaSpringBC::SpringALEMaterialVolOnSideLhs, MixTransport::MixTransportElement::OpTauDotSigma_HdivHdiv, MixTransport::MixTransportElement::OpVDivSigma_L2Hdiv, MyOp< OP >, NavierStokesElement::OpAssembleLhs, OpAssemble, OpAssembleBasic< VolUserDataOperator >, OpAssembleVolumePositiveDefine, OpFace, OpSimpleRodK, Poisson2DLagrangeMultiplierOperators::OpBoundaryLhsC, Poisson2DLagrangeMultiplierOperators::OpDomainLhsK, Poisson2DNonhomogeneousOperators::OpBoundaryLhs, Poisson2DNonhomogeneousOperators::OpDomainLhs, PrismOpLhs, QuadOpLhs, ReactionDiffusionEquation::OpAssembleMass, and ReactionDiffusionEquation::OpAssembleStiffLhs< DIM >.
Definition at line 40 of file DataOperators.hpp.
|
inlinevirtual |
Operator for linear form, usually to calculate values on right hand side.
Reimplemented in AnalyticalDirichletBC::ApproxField::OpRhs< FUNEVAL >, EshelbianPlasticity::OpAssembleBasic< VolUserDataOperator >, EshelbianPlasticity::OpAssembleVolumePositiveDefine, EshelbianPlasticity::OpAssembleVolumeStabilize, EshelbianPlasticity::OpGetScale, Example::BoundaryOp, Example::OpCalcSurfaceAverageTemperature, Example::OpFirst, Example::OpSecond, Example::OpZero, MetaSpringBC::OpGetNormalSpEle, MetaSpringBC::OpGetTangentSpEle, MetaSpringBC::OpSpringFs, MetaSpringBC::OpSpringFsMaterial, MixTransport::MixTransportElement::OpDivTauU_HdivL2, MixTransport::MixTransportElement::OpError, MixTransport::MixTransportElement::OpEvaluateBcOnFluxes, MixTransport::MixTransportElement::OpFluxDivergenceAtGaussPts, MixTransport::MixTransportElement::OpL2Source, MixTransport::MixTransportElement::OpPostProc, MixTransport::MixTransportElement::OpRhsBcOnValues, MixTransport::MixTransportElement::OpSkeleton, MixTransport::MixTransportElement::OpTauDotSigma_HdivHdiv, MixTransport::MixTransportElement::OpValuesAtGaussPts, MixTransport::MixTransportElement::OpValuesGradientAtGaussPts, MixTransport::MixTransportElement::OpVDivSigma_L2Hdiv, MoFEM::OpBaseDerivativesMass< 1 >, MoFEM::OpBaseDerivativesNext< 1 >, MoFEM::OpBaseDerivativesNext< 3 >, MoFEM::OpBaseDerivativesSetHOInvJacobian< 2 >, MoFEM::OpBrokenLoopSide< E >, MoFEM::OpCalcNormL2Tensor0, MoFEM::OpCalcNormL2Tensor1< DIM >, MoFEM::OpCalcNormL2Tensor2< DIM_1, DIM_2 >, MoFEM::OpCalculateBrokenHVecTensorDivergence< Tensor_Dim0, Tensor_Dim1, CoordSys >, MoFEM::OpCalculateBrokenHVecTensorField< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateDivergenceVectorFieldValues< Tensor_Dim, COORDINATE_SYSTEM >, MoFEM::OpCalculateHcurlVectorCurl< 1, 2 >, MoFEM::OpCalculateHcurlVectorCurl< 1, 3 >, MoFEM::OpCalculateHcurlVectorCurl< 3, 3 >, MoFEM::OpCalculateHdivVectorDivergence< BASE_DIM, SPACE_DIM >, MoFEM::OpCalculateHdivVectorDivergenceDot< Tensor_Dim1, Tensor_Dim2 >, MoFEM::OpCalculateHOCoords< FIELD_DIM >, MoFEM::OpCalculateHOJacForFaceImpl< 2 >, MoFEM::OpCalculateHOJacForFaceImpl< 3 >, MoFEM::OpCalculateHOJacForVolume, MoFEM::OpCalculateHTensorTensorField< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateHVecTensorDivergence< Tensor_Dim0, Tensor_Dim1, CoordSys >, MoFEM::OpCalculateHVecTensorField< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateHVecVectorField_General< 3, Field_Dim, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateHVecVectorFieldDot< 3, Field_Dim >, MoFEM::OpCalculateHVecVectorGradient< BASE_DIM, SPACE_DIM >, MoFEM::OpCalculateHVecVectorHessian< BASE_DIM, SPACE_DIM >, MoFEM::OpCalculateInvJacForFatPrism, MoFEM::OpCalculateInvJacForFlatPrism, MoFEM::OpCalculateScalarFieldGradient_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateScalarFieldHessian< Tensor_Dim >, MoFEM::OpCalculateScalarFieldValues, MoFEM::OpCalculateScalarFieldValues_General< T, A >, MoFEM::OpCalculateScalarFieldValues_General< double, DoubleAllocator >, MoFEM::OpCalculateScalarFieldValuesFromPetscVecImpl< 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::OpCalculateTensor2SymmetricFieldGradient_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateTensor2SymmetricFieldValues< Tensor_Dim >, MoFEM::OpCalculateTensor2SymmetricFieldValuesDot< Tensor_Dim >, MoFEM::OpCalculateTraceFromMat< DIM >, MoFEM::OpCalculateTraceFromSymmMat< DIM >, MoFEM::OpCalculateVectorFieldGradient_General< Tensor_Dim0, Tensor_Dim1, S, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateVectorFieldGradientDot< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateVectorFieldHessian< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateVectorFieldValues_General< Tensor_Dim, T, L, A >, MoFEM::OpCalculateVectorFieldValues_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >, MoFEM::OpCalculateVectorFieldValuesFromPetscVecImpl< Tensor_Dim, CTX >, MoFEM::OpCopyGeomDataToE< 2 >, MoFEM::OpDGProjectionCoefficients, MoFEM::OpDGProjectionEvaluation, MoFEM::OpDGProjectionMassMatrix, MoFEM::OpGetCoordsAndNormalsOnPrism, MoFEM::OpGetDataAndGradient< RANK, DIM >, MoFEM::OpGetHONormalsOnFace< FIELD_DIM >, MoFEM::OpGetHOTangentOnEdge, MoFEM::OpGetHOTangentsOnEdge< FIELD_DIM >, MoFEM::OpGetTensor0fromFunc, MoFEM::OpGetTensor1fromFunc< SPACE_DIM, BASE_DIM >, MoFEM::OpHOSetContravariantPiolaTransformOnEdge3D, MoFEM::OpHOSetContravariantPiolaTransformOnFace3D, MoFEM::OpHOSetCovariantPiolaTransformOnFace3D, MoFEM::OpInvertMatrix< DIM >, MoFEM::OpLoopRange< E >, MoFEM::OpLoopSide< E >, MoFEM::OpLoopThis< E >, MoFEM::OpMakeHdivFromHcurl, MoFEM::OpMultiplyDeterminantOfJacobianAndWeightsForFatPrisms, MoFEM::OpPostProcMapInMoab< DIM1, DIM2, O >, MoFEM::OpRunParent, MoFEM::OpScaleBaseBySpaceInverseOfMeasure, MoFEM::OpScaleMatrix, MoFEM::OpSchurAssembleBegin, MoFEM::OpSchurAssembleEnd< SchurDGESV >, MoFEM::OpSchurAssembleEnd< SchurDSYSV >, MoFEM::OpSchurZeroRowsAndCols, MoFEM::OpSetBc, MoFEM::OpSetContravariantPiolaTransform, MoFEM::OpSetContravariantPiolaTransformOnEdge2D, MoFEM::OpSetContravariantPiolaTransformOnFace2DImpl< 2 >, MoFEM::OpSetContravariantPiolaTransformOnFace2DImpl< 3 >, MoFEM::OpSetContravariantPiolaTransformOnFace, MoFEM::OpSetCovariantPiolaTransform, MoFEM::OpSetCovariantPiolaTransformOnEdge, MoFEM::OpSetCovariantPiolaTransformOnFace2DImpl< 2 >, MoFEM::OpSetCovariantPiolaTransformOnFace, MoFEM::OpSetHOContravariantPiolaTransform, MoFEM::OpSetHOCovariantPiolaTransform, MoFEM::OpSetHOInvJacToScalarBasesImpl, MoFEM::OpSetHOInvJacVectorBase, MoFEM::OpSetHOWeights, MoFEM::OpSetHOWeightsOnEdge, MoFEM::OpSetHOWeightsOnFace, MoFEM::OpSetInvJacH1, MoFEM::OpSetInvJacH1ForFatPrism, MoFEM::OpSetInvJacH1ForFlatPrism, MoFEM::OpSetInvJacHcurlFaceImpl< 2 >, MoFEM::OpSetInvJacHcurlFaceImpl< 3 >, MoFEM::OpSetInvJacHdivAndHcurl, MoFEM::OpSetInvJacSpaceForFaceImpl< 2, 1 >, MoFEM::OpSetInvJacSpaceForFaceImpl< 2, 2 >, MoFEM::OpSetInvJacSpaceForFaceImpl< 3, 1 >, MoFEM::OpSymmetrizeTensor< DIM >, MoFEM::OpTensorTimesSymmetricTensor< DIM_01, DIM_23, S >, MoFEM::OpUnSetBc, MyOp< OP >, MyOp< OP >, NavierStokesElement::OpAssembleRhs, NavierStokesElement::OpCalcDragForce, NavierStokesElement::OpCalcDragTraction, NavierStokesElement::OpCalcVolumeFlux, NavierStokesElement::OpPostProcDrag, NavierStokesElement::OpPostProcVorticity, OpAleLhsPre_dX_dx< S >, OpAssemble, OpAssembleBasic< VolUserDataOperator >, OpAssembleVolumePositiveDefine, OpAssembleVolumeStabilize, OpCalculateEnergy, OpCalculateEshelbyStress, OpCalculateEshelbyStress, OpCalculateHomogeneousStiffness< S >, OpCalculateRotationAndSpatialGradient, OpCalculateStiffnessScaledByDensityField, OpCalculateStrain< D >, OpCalculateStrainAle, OpCalculateStress< S >, OpCheck, OpCheckValsDiffVals, OpCheckValsDiffVals, OpCheckValsDiffVals, OpDivergence, OpDivergence, OpFace, OpFace, OpFace, OpFlux, OpFlux, OpPressure, OpSimpleRodPreStress, OpVolumeAssemble, OpVolumeCalculation, OpVolumeSet, OpVolumeTest, Poisson2DLagrangeMultiplierOperators::OpBoundaryRhsG, Poisson2DLagrangeMultiplierOperators::OpDomainRhsF, Poisson2DNonhomogeneousOperators::OpBoundaryRhs, Poisson2DNonhomogeneousOperators::OpDomainRhs, PrismOp, PrismOpCheck, PrismOpRhs, QuadOpCheck, QuadOpRhs, ReactionDiffusionEquation::OpAssembleSlowRhs, ReactionDiffusionEquation::OpAssembleStiffRhs< DIM >, SkeletonFE, SkeletonFE, SkeletonFE, SkeletonFE::OpFaceSide, SkeletonFE::OpFaceSide, and SkeletonFE::OpFaceSide.
Definition at line 67 of file DataOperators.hpp.
|
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.
Definition at line 107 of file DataOperators.hpp.
|
virtual |
Definition at line 90 of file DataOperators.cpp.
|
inlineprivate |
Definition at line 41 of file DataOperators.cpp.
|
virtual |
Reimplemented in MoFEM::OpAddParentEntData.
Definition at line 140 of file DataOperators.cpp.
|
inlineprivate |
Definition at line 100 of file DataOperators.cpp.
|
inline |
set if operator is executed taking in account symmetry
Definition at line 110 of file DataOperators.hpp.
|
inline |
unset if operator is executed for non symmetric problem
Definition at line 113 of file DataOperators.hpp.
bool& MoFEM::DataOperator::doEdges |
\deprectaed If false skip edges
Definition at line 91 of file DataOperators.hpp.
std::array<bool, MBMAXTYPE> MoFEM::DataOperator::doEntities |
If true operator is executed for entity.
Definition at line 85 of file DataOperators.hpp.
bool& MoFEM::DataOperator::doPrisms |
\deprectaed
Definition at line 95 of file DataOperators.hpp.
bool& MoFEM::DataOperator::doQuads |
\deprectaed
Definition at line 92 of file DataOperators.hpp.
bool& MoFEM::DataOperator::doTets |
\deprectaed
Definition at line 94 of file DataOperators.hpp.
bool& MoFEM::DataOperator::doTris |
\deprectaed
Definition at line 93 of file DataOperators.hpp.
bool& MoFEM::DataOperator::doVertices |
\deprectaed If false skip vertices
Definition at line 90 of file DataOperators.hpp.
DoWorkLhsHookFunType MoFEM::DataOperator::doWorkLhsHook |
Definition at line 35 of file DataOperators.hpp.
DoWorkRhsHookFunType MoFEM::DataOperator::doWorkRhsHook |
Definition at line 62 of file DataOperators.hpp.
bool MoFEM::DataOperator::sYmm |
If true assume that matrix is symmetric structure.
Definition at line 82 of file DataOperators.hpp.