v0.15.0
Loading...
Searching...
No Matches
Classes | Namespaces
UserDataOperators.hpp File Reference

User data operators for finite element computations. More...

Go to the source code of this file.

Classes

struct  MoFEM::OpCalculateScalarFieldValues_General< T, A >
 Scalar field values at integration points. More...
 
struct  MoFEM::OpCalculateScalarFieldValues
 Specialization for double precision scalar field values calculation. More...
 
struct  MoFEM::OpCalculateScalarFieldValuesFromPetscVecImpl< CTX >
 Calculate scalar field values from PETSc vector at integration points. More...
 
struct  MoFEM::OpCalculateVectorFieldValues_General< Tensor_Dim, T, L, A >
 Calculate field values for tensor field rank 1, i.e. vector field. More...
 
struct  MoFEM::OpCalculateVectorFieldValues_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >
 Calculate field values (template specialization) for tensor field rank 1, i.e. vector field. More...
 
struct  MoFEM::OpCalculateVectorFieldValues< Tensor_Dim >
 Specialization for double precision vector field values calculation. More...
 
struct  MoFEM::OpCalculateDivergenceVectorFieldValues< Tensor_Dim, COORDINATE_SYSTEM >
 Calculate divergence of vector field at integration points. More...
 
struct  MoFEM::OpCalculateVectorFieldValuesFromPetscVecImpl< Tensor_Dim, CTX >
 Approximate field values for given petsc vector. More...
 
struct  MoFEM::OpCalculateTensor2FieldValues_General< Tensor_Dim0, Tensor_Dim1, T, L, A >
 Calculate field values for tenor field rank 2. More...
 
struct  MoFEM::OpCalculateTensor2FieldValues_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >
 
struct  MoFEM::OpCalculateTensor2FieldValues< Tensor_Dim0, Tensor_Dim1 >
 Get values at integration pts for tensor field rank 2, i.e. matrix field. More...
 
struct  MoFEM::OpCalculateTensor2FieldValuesDot< Tensor_Dim0, Tensor_Dim1 >
 Get time direvarive values at integration pts for tensor field rank 2, i.e. matrix field. More...
 
struct  MoFEM::OpCalculateTensor2SymmetricFieldValues< Tensor_Dim >
 Calculate symmetric tensor field values at integration pts. More...
 
struct  MoFEM::OpCalculateTensor2SymmetricFieldValuesDot< Tensor_Dim >
 Calculate symmetric tensor field rates ant integratio pts. More...
 
struct  MoFEM::OpCalculateScalarFieldGradient_General< Tensor_Dim, T, L, A >
 Evaluate field gradient values for scalar field, i.e. gradient is tensor rank 1 (vector) More...
 
struct  MoFEM::OpCalculateScalarFieldGradient_General< Tensor_Dim, double, ublas::row_major, DoubleAllocator >
 Evaluate field gradient values for scalar field, i.e. gradient is tensor rank 1 (vector), specialization. More...
 
struct  MoFEM::OpCalculateScalarFieldGradient< Tensor_Dim >
 Get field gradients at integration pts for scalar field rank 0, i.e. vector field. More...
 
struct  MoFEM::OpCalculateScalarFieldHessian< Tensor_Dim >
 Evaluate field gradient values for scalar field, i.e. gradient is tensor rank 1 (vector), specialization. More...
 
struct  MoFEM::OpCalculateVectorFieldGradient_General< Tensor_Dim0, Tensor_Dim1, S, T, L, A >
 Evaluate field gradient values for vector field, i.e. gradient is tensor rank 2. More...
 
struct  MoFEM::OpCalculateVectorFieldGradient_General< Tensor_Dim0, Tensor_Dim1, S, double, ublas::row_major, DoubleAllocator >
 
struct  MoFEM::OpCalculateVectorFieldGradient< Tensor_Dim0, Tensor_Dim1, S >
 Get field gradients at integration pts for scalar field rank 0, i.e. vector field. More...
 
struct  MoFEM::OpCalculateVectorFieldGradientDot< Tensor_Dim0, Tensor_Dim1 >
 Get field gradients time derivative at integration pts for scalar field rank 0, i.e. vector field. More...
 
struct  MoFEM::OpCalculateTensor2SymmetricFieldGradient_General< Tensor_Dim0, Tensor_Dim1, T, L, A >
 Evaluate field gradient values for symmetric 2nd order tensor field, i.e. gradient is tensor rank 3. More...
 
struct  MoFEM::OpCalculateTensor2SymmetricFieldGradient_General< Tensor_Dim0, Tensor_Dim1, double, ublas::row_major, DoubleAllocator >
 
struct  MoFEM::OpCalculateTensor2SymmetricFieldGradient< Tensor_Dim0, Tensor_Dim1 >
 Get field gradients at integration pts for symmetric tensorial field rank 2. More...
 
struct  MoFEM::OpCalculateVectorFieldHessian< Tensor_Dim0, Tensor_Dim1 >
 
struct  MoFEM::OpTensorTimesSymmetricTensor< DIM_01, DIM_23, S >
 Calculate \( \pmb\sigma_{ij} = \mathbf{D}_{ijkl} \pmb\varepsilon_{kl} \). More...
 
struct  MoFEM::OpSymmetrizeTensor< DIM >
 Operator for symmetrizing tensor fields. More...
 
struct  MoFEM::OpScaleMatrix
 Operator for scaling matrix values by a scalar factor. More...
 
struct  MoFEM::OpCalculateHVecVectorField_General< 3, Field_Dim, double, ublas::row_major, DoubleAllocator >
 Get vector field for H-div approximation. More...
 
struct  MoFEM::OpCalculateHVecVectorField< Base_Dim, Field_Dim >
 Get vector field for H-div approximation. More...
 
struct  MoFEM::OpCalculateHVecVectorFieldDot< 3, Field_Dim >
 
struct  MoFEM::OpCalculateHdivVectorDivergence< BASE_DIM, SPACE_DIM >
 Calculate divergence of vector field. More...
 
struct  MoFEM::OpCalculateHVecVectorGradient< BASE_DIM, SPACE_DIM >
 Calculate gradient of vector field. More...
 
struct  MoFEM::OpCalculateHVecTensorGradient< 3, 9, 3 >
 Specialisation for 3D tensor field gradient calculation. More...
 
struct  MoFEM::OpCalculateHVecTensorGradient< 9, 9, 3 >
 
struct  MoFEM::OpCalculateHVecVectorHessian< BASE_DIM, SPACE_DIM >
 Calculate gradient of vector field. More...
 
struct  MoFEM::OpCalculateHdivVectorDivergenceDot< Tensor_Dim1, Tensor_Dim2 >
 Calculate divergence of vector field dot. More...
 
struct  MoFEM::OpCalculateHcurlVectorCurl< 3, 3 >
 Calculate curl of vector field. More...
 
struct  MoFEM::OpCalculateHcurlVectorCurl< 1, 2 >
 Calculate curl of vector field. More...
 
struct  MoFEM::OpCalculateHcurlVectorCurl< 1, 3 >
 Calculate curl of vector field. More...
 
struct  MoFEM::OpCalculateHVecTensorField< Tensor_Dim0, Tensor_Dim1 >
 Calculate tenor field using vectorial base, i.e. Hdiv/Hcurl. More...
 
struct  MoFEM::OpCalculateBrokenHVecTensorField< Tensor_Dim0, Tensor_Dim1 >
 Get tensor field for H-div approximation. More...
 
struct  MoFEM::OpCalculateHTensorTensorField< Tensor_Dim0, Tensor_Dim1 >
 Calculate tenor field using tensor base, i.e. Hdiv/Hcurl. More...
 
struct  MoFEM::OpCalculateHVecTensorDivergence< Tensor_Dim0, Tensor_Dim1, CoordSys >
 Calculate divergence of tonsorial field using vectorial base. More...
 
struct  MoFEM::OpCalculateBrokenHVecTensorDivergence< Tensor_Dim0, Tensor_Dim1, CoordSys >
 Calculate divergence of tonsorial field using vectorial base. More...
 
struct  MoFEM::OpCalculateHVecTensorTrace< Tensor_Dim, OpBase >
 Calculate trace of vector (Hdiv/Hcurl) space. More...
 
struct  MoFEM::OpSetInvJacToScalarBasesBasic
 
struct  MoFEM::OpSetInvJacSpaceForFaceImpl< 2, 1 >
 
struct  MoFEM::OpSetInvJacSpaceForFaceImpl< 3, 1 >
 
struct  MoFEM::OpSetInvJacSpaceForFaceImpl< 2, 2 >
 
struct  MoFEM::OpSetInvJacH1ForFace< DERIVARIVE >
 
struct  MoFEM::OpSetInvJacL2ForFace< DERIVARIVE >
 
struct  MoFEM::OpSetInvJacH1ForFaceEmbeddedIn3DSpace< DERIVARIVE >
 
struct  MoFEM::OpSetInvJacL2ForFaceEmbeddedIn3DSpace< DERIVARIVE >
 
struct  MoFEM::OpSetInvJacHcurlFaceImpl< 2 >
 
struct  MoFEM::OpSetInvJacHcurlFaceImpl< 3 >
 
struct  MoFEM::OpMakeHdivFromHcurl
 Make Hdiv space from Hcurl space in 2d. More...
 
struct  MoFEM::OpSetCovariantPiolaTransformOnFace2DImpl< 2 >
 Apply contravariant (Piola) transfer to Hdiv space on face. More...
 
struct  MoFEM::OpSetContravariantPiolaTransformOnFace2DImpl< 2 >
 
struct  MoFEM::OpSetContravariantPiolaTransformOnFace2DImpl< 3 >
 
struct  MoFEM::OpSetContravariantPiolaTransformOnEdge2D
 
struct  MoFEM::OpMultiplyDeterminantOfJacobianAndWeightsForFatPrisms
 Operator for fat prism element updating integration weights in the volume. More...
 
struct  MoFEM::OpCalculateInvJacForFatPrism
 Calculate inverse of jacobian for face element. More...
 
struct  MoFEM::OpSetInvJacH1ForFatPrism
 Transform local reference derivatives of shape functions to global derivatives. More...
 
struct  MoFEM::OpCalculateInvJacForFlatPrism
 Calculate inverse of jacobian for face element. More...
 
struct  MoFEM::OpSetInvJacH1ForFlatPrism
 Transform local reference derivatives of shape functions to global derivatives. More...
 
struct  MoFEM::OpInvertMatrix< DIM >
 Operator for inverting matrices at integration points. More...
 
struct  MoFEM::OpCalculateTraceFromMat< DIM >
 Operator for calculating the trace of matrices at integration points. More...
 
struct  MoFEM::OpCalculateTraceFromSymmMat< DIM >
 Calculates the trace of an input matrix. More...
 

Namespaces

namespace  MoFEM
 implementation of Data Operators for Forces and Sources
 

Typedefs

Scalar values
using MoFEM::OpCalculateScalarFieldValuesDot = OpCalculateScalarFieldValuesFromPetscVecImpl< PetscData::CTX_SET_X_T >
 
using MoFEM::OpCalculateScalarFieldValuesDotDot = OpCalculateScalarFieldValuesFromPetscVecImpl< PetscData::CTX_SET_X_TT >
 
using MoFEM::OpCalculateScalarValuesDot = OpCalculateScalarFieldValuesDot
 
Vector field values at integration points
template<int Tensor_Dim>
using MoFEM::OpCalculateVectorFieldValuesDot = OpCalculateVectorFieldValuesFromPetscVecImpl< Tensor_Dim, PetscData::CTX_SET_X_T >
 Get rate of values at integration pts for tensor field rank 1, i.e. vector field.
 
template<int Tensor_Dim>
using MoFEM::OpCalculateVectorFieldValuesDotDot = OpCalculateVectorFieldValuesFromPetscVecImpl< Tensor_Dim, PetscData::CTX_SET_X_TT >
 Get second rate of values at integration pts for tensor field rank 1, i.e. vector field.
 
template<int Tensor_Dim>
using MoFEM::OpCalculateVectorFieldSNESUpdateValues = OpCalculateVectorFieldValuesFromPetscVecImpl< Tensor_Dim, PetscData::CTX_SET_DX >
 Get second time second update vector at integration pts for tensor field rank 1, i.e. vector field.
 
Operators for faces
using MoFEM::OpSetInvJacHcurlFace = OpSetInvJacHcurlFaceImpl< 2 >
 
using MoFEM::OpSetInvJacHcurlFaceEmbeddedIn3DSpace = OpSetInvJacHcurlFaceImpl< 3 >
 
using MoFEM::OpSetCovariantPiolaTransformOnFace2D = OpSetCovariantPiolaTransformOnFace2DImpl< 2 >
 
using MoFEM::OpSetContravariantPiolaTransformOnFace2D = OpSetContravariantPiolaTransformOnFace2DImpl< 2 >
 
using MoFEM::OpSetContravariantPiolaTransformOnFace2DEmbeddedIn3DSpace = OpSetContravariantPiolaTransformOnFace2DImpl< 3 >
 
Operators for edges
using MoFEM::OpSetContrariantPiolaTransformOnEdge = OpSetContravariantPiolaTransformOnEdge2D
 

Detailed Description

User data operators for finite element computations.

This file contains a comprehensive collection of user data operators used in MoFEM finite element computations. These operators provide functionality for calculating, transforming, and manipulating field values at integration points.

Main Categories of Operators:

Field Value Calculation Operators

Field Gradient Calculation Operators

Matrix and Tensor Operations

Coordinate and Geometry Operations

Key Features:

Template-Based Design

Most operators are implemented as template structures allowing:

PETSc Integration

Many operators provide seamless integration with PETSc:

Field Space Support

Operators support various finite element field spaces:

Memory Management

Robust memory management through:

Usage Patterns:

  1. Field Evaluation: Calculate field values at integration points for post-processing, visualization, or coupling with other physics
  2. Gradient Calculations: Compute spatial derivatives for stress analysis, heat conduction, fluid dynamics, and other gradient-dependent phenomena
  3. Matrix Operations: Perform linear algebra operations needed in constitutive relations, coordinate transformations, and iterative solvers
  4. Data Extraction: Extract computed results from finite element solutions for analysis, visualization, or coupling with external codes

Thread Safety and Performance:

Note
These operators are typically used within the MoFEM pipeline system and are automatically integrated into finite element assembly processes.
See also
ForcesAndSourcesCore::UserDataOperator for base class documentation
EntitiesFieldData for field data management
PipelineManager for operator pipeline management

Definition in file UserDataOperators.hpp.