![]() |
v0.14.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. 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... | |
bool & | doVertices |
\deprectaed If false skip vertices More... | |
bool & | doEdges |
\deprectaed If false skip edges More... | |
bool & | doQuads |
\deprectaed More... | |
bool & | doTris |
\deprectaed More... | |
bool & | doTets |
\deprectaed More... | |
bool & | doPrisms |
\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) |
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 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.
Definition at line 40 of file DataOperators.hpp.
|
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.
|
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.