![]() |
v0.15.0 |
base operator to do operations at Gauss Pt. level More...
#include "src/finite_elements/DataOperators.hpp"
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. | |
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.
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.
using MoFEM::DataOperator::DoWorkRhsHookFunType = boost::function<MoFEMErrorCode( DataOperator *op_ptr, int side, EntityType type, EntitiesFieldData::EntData &data)> |
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 ReactionDiffusionEquation::OpAssembleMass, ReactionDiffusionEquation::OpAssembleStiffLhs< DIM >, Poisson2DNonhomogeneousOperators::OpDomainLhs, Poisson2DNonhomogeneousOperators::OpBoundaryLhs, Poisson2DLagrangeMultiplierOperators::OpDomainLhsK, Poisson2DLagrangeMultiplierOperators::OpBoundaryLhsC, OpAssemble, NavierStokesElement::OpAssembleLhs, MetaSpringBC::OpSpringKs, MetaSpringBC::OpSpringKs_dX, MetaSpringBC::SpringALEMaterialVolOnSideLhs, MetaSpringBC::OpSpringALEMaterialLhs, MetaSpringBC::OpSpringALEMaterialLhs_dX_dx, MetaSpringBC::OpSpringALEMaterialLhs_dX_dX, OpAssembleBasic< VolUserDataOperator >, OpAssembleVolumePositiveDefine, MyOp< OP >, PrismOpLhs, QuadOpLhs, OpFace, MixTransport::MixTransportElement::OpTauDotSigma_HdivHdiv, MixTransport::MixTransportElement::OpVDivSigma_L2Hdiv, AnalyticalDirichletBC::ApproxField::OpLhs, and OpSimpleRodK.
Definition at line 40 of file DataOperators.hpp.
|
inlinevirtual |
Operator for linear form, usually to calculate values on right hand side.
Reimplemented in OpCalculateStrain< D >, OpCalculateStrainAle, OpCalculateStress< S >, OpCalculateEnergy, OpCalculateEshelbyStress, OpCalculateHomogeneousStiffness< S >, OpCalculateStiffnessScaledByDensityField, OpAssemble, OpAleLhsPre_dX_dx< S >, NavierStokesElement::OpAssembleRhs, OpVolumeCalculation, MoFEM::OpTensorTimesSymmetricTensor< DIM_01, DIM_23, S >, MoFEM::OpSymmetrizeTensor< DIM >, MoFEM::OpScaleMatrix, ReactionDiffusionEquation::OpAssembleSlowRhs, ReactionDiffusionEquation::OpAssembleStiffRhs< DIM >, Example::OpZero, Example::OpFirst, Example::OpSecond, Example::BoundaryOp, Poisson2DNonhomogeneousOperators::OpDomainRhs, Poisson2DNonhomogeneousOperators::OpBoundaryRhs, Poisson2DLagrangeMultiplierOperators::OpDomainRhsF, Poisson2DLagrangeMultiplierOperators::OpBoundaryRhsG, NavierStokesElement::OpCalcDragForce, NavierStokesElement::OpCalcDragTraction, NavierStokesElement::OpPostProcDrag, NavierStokesElement::OpPostProcVorticity, NavierStokesElement::OpCalcVolumeFlux, OpAssembleBasic< VolUserDataOperator >, OpAssembleVolumeStabilize, OpAssembleVolumePositiveDefine, OpCalculateEshelbyStress, OpCalculateRotationAndSpatialGradient, MetaSpringBC::OpSpringFsMaterial, MetaSpringBC::OpGetTangentSpEle, MetaSpringBC::OpGetNormalSpEle, OpFace, SkeletonFE::OpFaceSide, SkeletonFE, SkeletonFE::OpFaceSide, SkeletonFE, SkeletonFE::OpFaceSide, SkeletonFE, MyOp< OP >, MyOp< OP >, OpCheckValsDiffVals, OpDivergence, OpFlux, OpDivergence, OpFlux, OpCheckValsDiffVals, PrismOp, PrismOpCheck, PrismOpRhs, QuadOpCheck, QuadOpRhs, 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::OpLoopThis< E >, MoFEM::OpDGProjectionMassMatrix, MoFEM::OpDGProjectionCoefficients, MoFEM::OpDGProjectionEvaluation, MoFEM::OpCopyGeomDataToE< 2 >, MoFEM::OpLoopSide< E >, MoFEM::OpLoopRange< E >, MoFEM::OpBrokenLoopSide< 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::OpScaleBaseBySpaceInverseOfMeasure, MoFEM::OpSchurAssembleBegin, MoFEM::OpSchurZeroRowsAndCols, MoFEM::OpSchurAssembleEnd< SchurDSYSV >, MoFEM::OpSchurAssembleEnd< SchurDGESV >, MoFEM::OpRunParent, MoFEM::OpCalcNormL2Tensor0, MoFEM::OpCalcNormL2Tensor1< DIM >, MoFEM::OpCalcNormL2Tensor2< DIM_1, DIM_2 >, MoFEM::OpGetTensor0fromFunc, MoFEM::OpGetTensor1fromFunc< SPACE_DIM, BASE_DIM >, 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::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, S, 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::OpCalculateHcurlVectorCurl< 1, 3 >, MoFEM::OpCalculateHVecTensorField< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateBrokenHVecTensorField< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateHTensorTensorField< Tensor_Dim0, Tensor_Dim1 >, MoFEM::OpCalculateHVecTensorDivergence< Tensor_Dim0, Tensor_Dim1, CoordSys >, MoFEM::OpCalculateBrokenHVecTensorDivergence< 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::OpCalculateTraceFromMat< DIM >, MoFEM::OpCalculateTraceFromSymmMat< DIM >, MoFEM::OpPostProcMapInMoab< DIM1, DIM2, O >, MixTransport::MixTransportElement::OpPostProc, MixTransport::MixTransportElement::OpTauDotSigma_HdivHdiv, MixTransport::MixTransportElement::OpDivTauU_HdivL2, MixTransport::MixTransportElement::OpVDivSigma_L2Hdiv, MixTransport::MixTransportElement::OpL2Source, MixTransport::MixTransportElement::OpRhsBcOnValues, MixTransport::MixTransportElement::OpEvaluateBcOnFluxes, MixTransport::MixTransportElement::OpValuesAtGaussPts, MixTransport::MixTransportElement::OpValuesGradientAtGaussPts, MixTransport::MixTransportElement::OpFluxDivergenceAtGaussPts, MixTransport::MixTransportElement::OpError, MixTransport::MixTransportElement::OpSkeleton::OpVolSide, MixTransport::MixTransportElement::OpSkeleton, OpPressure, OpFace, Example::OpCalcSurfaceAverageTemperature, OpCheck, AnalyticalDirichletBC::ApproxField::OpRhs< FUNEVAL >, OpSimpleRodPreStress, and EshelbianPlasticity::OpGetScale.
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.