v0.15.0
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
MoFEM::AddHOOps< 3, 3, 3 > Struct Reference

Specialization for 3D volume elements in 3D problems with 3D space. More...

#include "src/finite_elements/HODataOperators.hpp"

Public Member Functions

 AddHOOps ()=delete
 

Static Public Member Functions

static MoFEMErrorCode add (boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, std::vector< FieldSpace > space, std::string geom_field_name="", boost::shared_ptr< MatrixDouble > jac=nullptr, boost::shared_ptr< VectorDouble > det=nullptr, boost::shared_ptr< MatrixDouble > inv_jac=nullptr)
 Add high-order operators to the pipeline for 3D volume elements.
 

Detailed Description

Specialization for 3D volume elements in 3D problems with 3D space.

This specialization adds high-order operators for 3D volume elements operating in 3D problems within 3D coordinate space. This is the most common case for solid mechanics, heat transfer, and other 3D finite element applications involving volumetric elements like tetrahedra, hexahedra, and prisms.

Definition at line 750 of file HODataOperators.hpp.

Constructor & Destructor Documentation

◆ AddHOOps()

MoFEM::AddHOOps< 3, 3, 3 >::AddHOOps ( )
delete

Member Function Documentation

◆ add()

MoFEMErrorCode AddHOOps< 3, 3, 3 >::add ( boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &  pipeline,
std::vector< FieldSpace space,
std::string  geom_field_name = "",
boost::shared_ptr< MatrixDouble jac = nullptr,
boost::shared_ptr< VectorDouble det = nullptr,
boost::shared_ptr< MatrixDouble inv_jac = nullptr 
)
static

Add high-order operators to the pipeline for 3D volume elements.

Parameters
pipelinePipeline to add operators to
spaceVector of field spaces to be handled
geom_field_nameName of the geometry field (default: empty string)
jacShared pointer to Jacobian matrix. If provided, values will be set by this function. If null, Jacobian will be handled internally.
detShared pointer to determinant vector. If provided, values will be set by this function. If null, determinant will be handled internally.
inv_jacShared pointer to inverse Jacobian matrix. If provided, values will be set by this function. If null, inverse Jacobian will be handled internally.
Returns
MoFEMErrorCode Error code indicating success or failure

Definition at line 980 of file HODataOperators.cpp.

984 {
986
987 if (!jac)
988 jac = boost::make_shared<MatrixDouble>();
989 if (!det)
990 det = boost::make_shared<VectorDouble>();
991 if (!inv_jac)
992 inv_jac = boost::make_shared<MatrixDouble>();
993
994 if (geom_field_name.empty()) {
995
996 pipeline.push_back(new OpCalculateHOJac<3>(jac));
997
998 } else {
999
1000 pipeline.push_back(new OpCalculateHOCoords<3>(geom_field_name));
1001 pipeline.push_back(
1002 new OpCalculateVectorFieldGradient<3, 3>(geom_field_name, jac));
1003 }
1004
1005 pipeline.push_back(new OpInvertMatrix<3>(jac, det, inv_jac));
1006 pipeline.push_back(new OpSetHOWeights(det));
1007
1008 for (auto s : spaces) {
1009 switch (s) {
1010 case NOSPACE:
1011 break;
1012 case H1:
1013 pipeline.push_back(new OpSetHOInvJacToScalarBases<3>(H1, inv_jac));
1014 break;
1015 case HCURL:
1016 pipeline.push_back(new OpSetHOCovariantPiolaTransform(HCURL, inv_jac));
1017 pipeline.push_back(new OpSetHOInvJacVectorBase(HCURL, inv_jac));
1018 break;
1019 case HDIV:
1020 pipeline.push_back(
1021 new OpSetHOContravariantPiolaTransform(HDIV, det, jac));
1022 break;
1023 case L2:
1024 pipeline.push_back(new OpSetHOInvJacToScalarBases<3>(L2, inv_jac));
1025 break;
1026 default:
1027 SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
1028 "Space %s not yet implemented", FieldSpaceNames[s]);
1029 break;
1030 }
1031 }
1032
1034}
@ L2
field with C-1 continuity
Definition definitions.h:88
@ H1
continuous field
Definition definitions.h:85
@ NOSPACE
Definition definitions.h:83
@ HCURL
field with continuous tangents
Definition definitions.h:86
@ HDIV
field with continuous normal traction
Definition definitions.h:87
static const char *const FieldSpaceNames[]
Definition definitions.h:92
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
@ MOFEM_NOT_IMPLEMENTED
Definition definitions.h:32
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()

The documentation for this struct was generated from the following files: