v0.14.0
Public Member Functions | Static Public Member Functions | List of all members
MoFEM::AddHOOps< 3, 3, 3 > 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 > 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)
 

Detailed Description

Definition at line 455 of file HODataOperators.hpp.

Constructor & Destructor Documentation

◆ AddHOOps()

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

Member Function Documentation

◆ add()

MoFEMErrorCode MoFEM::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

Definition at line 1000 of file HODataOperators.cpp.

1004  {
1006 
1007  if (!jac)
1008  jac = boost::make_shared<MatrixDouble>();
1009  if (!det)
1010  det = boost::make_shared<VectorDouble>();
1011  if (!inv_jac)
1012  inv_jac = boost::make_shared<MatrixDouble>();
1013 
1014  if (geom_field_name.empty()) {
1015 
1016  pipeline.push_back(new OpCalculateHOJac<3>(jac));
1017 
1018  } else {
1019 
1020  pipeline.push_back(new OpCalculateHOCoords<3>(geom_field_name));
1021  pipeline.push_back(
1022  new OpCalculateVectorFieldGradient<3, 3>(geom_field_name, jac));
1023  }
1024 
1025  pipeline.push_back(new OpInvertMatrix<3>(jac, det, inv_jac));
1026  pipeline.push_back(new OpSetHOWeights(det));
1027 
1028  for (auto s : spaces) {
1029  switch (s) {
1030  case NOSPACE:
1031  break;
1032  case H1:
1033  pipeline.push_back(new OpSetHOInvJacToScalarBases<3>(H1, inv_jac));
1034  break;
1035  case HCURL:
1036  pipeline.push_back(new OpSetHOCovariantPiolaTransform(HCURL, inv_jac));
1037  pipeline.push_back(new OpSetHOInvJacVectorBase(HCURL, inv_jac));
1038  break;
1039  case HDIV:
1040  pipeline.push_back(
1041  new OpSetHOContravariantPiolaTransform(HDIV, det, jac));
1042  pipeline.push_back(new OpSetHOInvJacVectorBase(HDIV, inv_jac));
1043  break;
1044  case L2:
1045  pipeline.push_back(new OpSetHOInvJacToScalarBases<3>(L2, inv_jac));
1046  break;
1047  default:
1048  SETERRQ1(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
1049  "Space %s not yet implemented", FieldSpaceNames[s]);
1050  break;
1051  }
1052  }
1053 
1055 }

The documentation for this struct was generated from the following files:
NOSPACE
@ NOSPACE
Definition: definitions.h:83
H1
@ H1
continuous field
Definition: definitions.h:85
L2
@ L2
field with C-1 continuity
Definition: definitions.h:88
FieldSpaceNames
const static char *const FieldSpaceNames[]
Definition: definitions.h:92
HCURL
@ HCURL
field with continuous tangents
Definition: definitions.h:86
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:429
HDIV
@ HDIV
field with continuous normal traction
Definition: definitions.h:87
MOFEM_NOT_IMPLEMENTED
@ MOFEM_NOT_IMPLEMENTED
Definition: definitions.h:32
OpCalculateVectorFieldGradient
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:359