v0.15.0
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 640 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 831 of file HODataOperators.cpp.

836 {
838
839 if (!jac_ptr)
840 jac_ptr = boost::make_shared<MatrixDouble>();
841 if (!det_ptr)
842 det_ptr = boost::make_shared<VectorDouble>();
843 if (!inv_jac_ptr)
844 inv_jac_ptr = boost::make_shared<MatrixDouble>();
845
846 if (geom_field_name.empty()) {
847
848 } else {
849
850 pipeline.push_back(new OpCalculateHOCoords<3>(geom_field_name));
851 pipeline.push_back(new OpGetHONormalsOnFace<3>(geom_field_name));
852 }
853
854 pipeline.push_back(new OpCalculateHOJacForFaceEmbeddedIn3DSpace(jac_ptr));
855 pipeline.push_back(new OpInvertMatrix<3>(jac_ptr, det_ptr, inv_jac_ptr));
856 pipeline.push_back(new OpSetHOWeightsOnFace());
857
858 for (auto s : spaces) {
859 switch (s) {
860 case NOSPACE:
861 break;
862 case H1:
863 pipeline.push_back(
864 new OpSetInvJacH1ForFaceEmbeddedIn3DSpace(inv_jac_ptr));
865 break;
866 case HDIV:
867 pipeline.push_back(new OpMakeHdivFromHcurl());
868 pipeline.push_back(
870 jac_ptr));
871 pipeline.push_back(
873 break;
874 case L2:
875 pipeline.push_back(
876 new OpSetInvJacL2ForFaceEmbeddedIn3DSpace(inv_jac_ptr));
877 break;
878 default:
879 SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
880 "Space %s not yet implemented", FieldSpaceNames[s]);
881 }
882 }
883
885}
@ 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: