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

#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)
 

Detailed Description

Definition at line 480 of file HODataOperators.hpp.

Constructor & Destructor Documentation

◆ AddHOOps()

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

Member Function Documentation

◆ add()

MoFEMErrorCode MoFEM::AddHOOps< 2, 2, 2 >::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

Definition at line 647 of file HODataOperators.cpp.

652 {
654
655 if (!jac_ptr)
656 jac_ptr = boost::make_shared<MatrixDouble>();
657 if (!det_ptr)
658 det_ptr = boost::make_shared<VectorDouble>();
659 if (!inv_jac_ptr)
660 inv_jac_ptr = boost::make_shared<MatrixDouble>();
661
662 if (geom_field_name.empty()) {
663
664 pipeline.push_back(new OpCalculateHOJac<2>(jac_ptr));
665
666 } else {
667
668 pipeline.push_back(new OpCalculateHOCoords<2>(geom_field_name));
669 pipeline.push_back(
670 new OpCalculateVectorFieldGradient<2, 2>(geom_field_name, jac_ptr));
671 pipeline.push_back(new OpGetHONormalsOnFace<2>(geom_field_name));
672 }
673
674 pipeline.push_back(new OpInvertMatrix<2>(jac_ptr, det_ptr, inv_jac_ptr));
675 pipeline.push_back(new OpSetHOWeightsOnFace());
676
677 for (auto s : spaces) {
678 switch (s) {
679 case NOSPACE:
680 break;
681 case H1:
682 case L2:
683 pipeline.push_back(new OpSetHOInvJacToScalarBases<2>(s, inv_jac_ptr));
684 break;
685 case HCURL:
686 pipeline.push_back(new OpSetCovariantPiolaTransformOnFace2D(inv_jac_ptr));
687 pipeline.push_back(new OpSetInvJacHcurlFace(inv_jac_ptr));
688 break;
689 case HDIV:
690 pipeline.push_back(new OpMakeHdivFromHcurl());
691 pipeline.push_back(new OpSetContravariantPiolaTransformOnFace2D(jac_ptr));
692 pipeline.push_back(new OpSetInvJacHcurlFace(inv_jac_ptr));
693 break;
694 default:
695 SETERRQ1(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
696 "Space %s not yet implemented", FieldSpaceNames[s]);
697 }
698 }
699
701}
@ 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 ...
Definition: definitions.h:346
@ MOFEM_NOT_IMPLEMENTED
Definition: definitions.h:32
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
OpSetInvJacHcurlFaceImpl< 2 > OpSetInvJacHcurlFace
OpSetCovariantPiolaTransformOnFace2DImpl< 2 > OpSetCovariantPiolaTransformOnFace2D
OpSetContravariantPiolaTransformOnFace2DImpl< 2 > OpSetContravariantPiolaTransformOnFace2D

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