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

Specialization for 2D face elements in 2D problems embedded in 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 > spaces, 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 2D face elements embedded in 3D.
 

Detailed Description

Specialization for 2D face elements in 2D problems embedded in 3D space.

This specialization adds high-order operators for 2D face elements operating in 2D problems but embedded within 3D coordinate space. Typically used for surface elements or membranes in 3D environments.

Definition at line 683 of file HODataOperators.hpp.

Constructor & Destructor Documentation

◆ AddHOOps()

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

Member Function Documentation

◆ add()

MoFEMErrorCode AddHOOps< 2, 2, 3 >::add ( boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &  pipeline,
std::vector< FieldSpace spaces,
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 2D face elements embedded in 3D.

Parameters
pipelinePipeline to add operators to
spacesVector 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 918 of file HODataOperators.cpp.

923 {
925
926 if (!jac_ptr)
927 jac_ptr = boost::make_shared<MatrixDouble>();
928 if (!det_ptr)
929 det_ptr = boost::make_shared<VectorDouble>();
930 if (!inv_jac_ptr)
931 inv_jac_ptr = boost::make_shared<MatrixDouble>();
932
933 if (geom_field_name.empty()) {
934
935 } else {
936
937 pipeline.push_back(new OpCalculateHOCoords<3>(geom_field_name));
938 pipeline.push_back(new OpGetHONormalsOnFace<3>(geom_field_name));
939 }
940
941 pipeline.push_back(new OpCalculateHOJacForFaceEmbeddedIn3DSpace(jac_ptr));
942 pipeline.push_back(new OpInvertMatrix<3>(jac_ptr, det_ptr, inv_jac_ptr));
943 pipeline.push_back(new OpSetHOWeightsOnFace());
944
945 for (auto s : spaces) {
946 switch (s) {
947 case NOSPACE:
948 break;
949 case H1:
950 pipeline.push_back(
951 new OpSetInvJacH1ForFaceEmbeddedIn3DSpace(inv_jac_ptr));
952 break;
953 case HDIV:
954 pipeline.push_back(new OpMakeHdivFromHcurl());
955 pipeline.push_back(
957 jac_ptr));
958 pipeline.push_back(
960 break;
961 case L2:
962 pipeline.push_back(
963 new OpSetInvJacL2ForFaceEmbeddedIn3DSpace(inv_jac_ptr));
964 break;
965 default:
966 SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
967 "Space %s not yet implemented", FieldSpaceNames[s]);
968 }
969 }
970
972}
@ L2
field with C-1 continuity
Definition definitions.h:88
@ H1
continuous field
Definition definitions.h:85
@ NOSPACE
Definition definitions.h:83
@ 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()
OpSetContravariantPiolaTransformOnFace2DImpl< 3 > OpSetContravariantPiolaTransformOnFace2DEmbeddedIn3DSpace
OpSetInvJacHcurlFaceImpl< 3 > OpSetInvJacHcurlFaceEmbeddedIn3DSpace
OpCalculateHOJacForFaceImpl< 3 > OpCalculateHOJacForFaceEmbeddedIn3DSpace

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