v0.16.3
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Attributes | Static Protected Attributes | List of all members
MatOps::MatMetaElastic< DIM, MODEL_TYPE > Struct Template Reference
Inheritance diagram for MatOps::MatMetaElastic< DIM, MODEL_TYPE >:
[legend]
Collaboration diagram for MatOps::MatMetaElastic< DIM, MODEL_TYPE >:
[legend]

Public Types

using A = MatElasticImpl< DIM >
 
- Public Types inherited from MatOps::PhysicalEquations
using HookFunction = std::function< MoFEMErrorCode(boost::shared_ptr< MatOpsData >, int, EntityHandle, int)>
 

Public Member Functions

MoFEMErrorCode getOptions (MoFEM::Interface *m_field_ptr=nullptr) override
 
MoFEMErrorCode setParams (FEMethod *fe_ptr, int gg) override
 
MoFEMErrorCode recordTape () override
 
MoFEMErrorCode evaluateVariable (int tag, EntityHandle entity, int gg)
 
MoFEMErrorCode evaluateDerivatives (int tag, EntityHandle entity, int gg)
 
MoFEMErrorCode updateState (int tag, EntityHandle entity, int gg)
 
std::map< int, boost::shared_ptr< PhysicalEquations > > & getMetaElasticMap ()
 
- Public Member Functions inherited from MatOps::MatElasticImpl< DIM >
ForcesAndSourcesCore::UserDataOperatorcreateOp (boost::shared_ptr< PhysicalEquations > physical_ptr, bool eval_stress, bool eval_tangent, bool update) override
 
ForcesAndSourcesCore::UserDataOperatorcreateOp (boost::shared_ptr< PhysicalEquations > physical_ptr, bool eval_stress, bool eval_tangent, bool update)
 
ForcesAndSourcesCore::UserDataOperatorcreateOp (boost::shared_ptr< PhysicalEquations > physical_ptr, bool eval_stress, bool eval_tangent, bool update)
 
- Public Member Functions inherited from MatOps::MatElastic
 PhysicalEquations ()=delete
 
 PhysicalEquations (boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag, boost::shared_ptr< std::map< int, Range > > tag_vs_range_ptr=nullptr)
 
- Public Member Functions inherited from MatOps::PhysicalEquations
 PhysicalEquations ()=delete
 
 PhysicalEquations (boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag, boost::shared_ptr< std::map< int, Range > > tag_vs_range_ptr=nullptr)
 
virtual ~PhysicalEquations ()=default
 
virtual MoFEMErrorCode addBlockParameters (MoFEM::Interface &m_field, const std::string &block_name, int block_id, const Range &block_entities, const std::vector< double > &block_data)
 

Protected Attributes

std::map< int, boost::shared_ptr< PhysicalEquations > > metaElasticAtPts
 

Static Protected Attributes

static constexpr int modelType = MODEL_TYPE
 

Additional Inherited Members

- Public Attributes inherited from MatOps::PhysicalEquations
HookFunction hookEvaluateVariable = AdolCEvaluation::evaluateVariable
 
HookFunction hookEvaluateDerivatives = AdolCEvaluation::evaluateDerivatives
 
HookFunction hookUpdateState = AdolCEvaluation::evaluateVariable
 
int tAg
 
boost::shared_ptr< std::map< int, Range > > tagVsRangePtr
 
std::vector< std::pair< Range, std::vector< double > > > paramVecByRange
 
boost::shared_ptr< MatOpsDatamatOpsDataPtr
 
- Static Public Attributes inherited from MatOps::MatElastic
static bool useDeformationGradient
 

Detailed Description

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
struct MatOps::MatMetaElastic< DIM, MODEL_TYPE >

Definition at line 16 of file MatMetaElastic.cpp.

Member Typedef Documentation

◆ A

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
using MatOps::MatMetaElastic< DIM, MODEL_TYPE >::A = MatElasticImpl<DIM>

Definition at line 19 of file MatMetaElastic.cpp.

Member Function Documentation

◆ evaluateDerivatives()

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
MoFEMErrorCode MatOps::MatMetaElastic< DIM, MODEL_TYPE >::evaluateDerivatives ( int  tag,
EntityHandle  entity,
int  gg 
)
inlinevirtual

Reimplemented from MatOps::PhysicalEquations.

Definition at line 101 of file MatMetaElastic.cpp.

101 {
102 return metaElasticAtPts.at(tag)->evaluateDerivatives(tag, entity, gg);
103 }
std::map< int, boost::shared_ptr< PhysicalEquations > > metaElasticAtPts

◆ evaluateVariable()

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
MoFEMErrorCode MatOps::MatMetaElastic< DIM, MODEL_TYPE >::evaluateVariable ( int  tag,
EntityHandle  entity,
int  gg 
)
inlinevirtual

Reimplemented from MatOps::PhysicalEquations.

Definition at line 97 of file MatMetaElastic.cpp.

97 {
98 return metaElasticAtPts.at(tag)->evaluateVariable(tag, entity, gg);
99 }

◆ getMetaElasticMap()

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
std::map< int, boost::shared_ptr< PhysicalEquations > > & MatOps::MatMetaElastic< DIM, MODEL_TYPE >::getMetaElasticMap ( )
inline

Definition at line 109 of file MatMetaElastic.cpp.

109 {
110 return metaElasticAtPts;
111 }

◆ getOptions()

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
MoFEMErrorCode MatOps::MatMetaElastic< DIM, MODEL_TYPE >::getOptions ( MoFEM::Interface m_field_ptr = nullptr)
inlineoverridevirtual

Implements MatOps::PhysicalEquations.

Definition at line 21 of file MatMetaElastic.cpp.

21 {
23
24 // Activate UMAT only for an explicit library or material block.
25 char umat_library[PETSC_MAX_PATH_LEN] = "";
26 CHKERR PetscOptionsGetString(PETSC_NULLPTR, PETSC_NULLPTR,
27 "-umat_library", umat_library,
28 sizeof(umat_library), PETSC_NULLPTR);
29
30 if (umat_library[0] ||
31 (m_field_ptr &&
32 !m_field_ptr->getInterface<MeshsetsManager>()
33 ->getCubitMeshsetPtr(std::regex("MAT_UMAT(.*)"))
34 .empty())) {
35 metaElasticAtPts.insert(
37 createMatOpsPhysicalEquationsPtr<UMAT, modelType>(
38 this->matOpsDataPtr,
40 }
41
42 for (auto &m : metaElasticAtPts) {
43 CHKERR m.second->getOptions(m_field_ptr);
44 }
45 A::tagVsRangePtr = boost::make_shared<std::map<int, Range>>();
46 for (const auto &m : metaElasticAtPts) {
47 A::tagVsRangePtr->insert(
48 {m.first, Range()}); // Initialize with empty range
49 for (auto &rp : m.second->paramVecByRange) {
50 A::tagVsRangePtr->at(m.first).merge(
51 rp.first); // Merge ranges for the same tag
52 }
53 }
55 }
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
PetscErrorCode PetscOptionsGetString(PetscOptions *, const char pre[], const char name[], char str[], size_t size, PetscBool *set)
FTensor::Index< 'm', 3 > m
static int setTagName(std::string name, int tag=-1)
Definition MatOps.cpp:29
std::vector< std::pair< Range, std::vector< double > > > paramVecByRange
Definition MatOps.hpp:174
boost::shared_ptr< std::map< int, Range > > tagVsRangePtr
Definition MatOps.hpp:173
boost::shared_ptr< MatOpsData > matOpsDataPtr
Definition MatOps.hpp:176
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface reference to pointer of interface.

◆ recordTape()

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
MoFEMErrorCode MatOps::MatMetaElastic< DIM, MODEL_TYPE >::recordTape ( )
inlineoverridevirtual

Implements MatOps::PhysicalEquations.

Definition at line 89 of file MatMetaElastic.cpp.

89 {
91 for (auto &m : metaElasticAtPts) {
92 CHKERR m.second->recordTape();
93 }
95 }

◆ setParams()

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
MoFEMErrorCode MatOps::MatMetaElastic< DIM, MODEL_TYPE >::setParams ( FEMethod fe_ptr,
int  gg 
)
inlineoverridevirtual

Implements MatOps::PhysicalEquations.

Definition at line 57 of file MatMetaElastic.cpp.

57 {
59 const auto ent = fe_ptr->getFEEntityHandle();
60
61 bool has_ranges = false;
62 if (A::tagVsRangePtr) {
63 for (const auto &tag_range : *A::tagVsRangePtr) {
64 has_ranges = has_ranges || !tag_range.second.empty();
65 }
66 }
67
68 if (!has_ranges) {
69 for (auto &m : metaElasticAtPts) {
70 CHKERR m.second->setParams(fe_ptr, gg);
71 }
73 }
74
75 for (auto &m : metaElasticAtPts) {
76 if (A::tagVsRangePtr->at(m.first).find(ent) !=
77 A::tagVsRangePtr->at(m.first).end()) {
78 CHKERR m.second->setParams(fe_ptr, gg);
80 }
81 }
82
83 SETERRQ(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
84 "Meta elastic material parameters not found for entity %lu",
85 static_cast<unsigned long>(ent));
87 }
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
@ MOFEM_DATA_INCONSISTENCY
Definition definitions.h:31
MatElasticImpl< DIM > A

◆ updateState()

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
MoFEMErrorCode MatOps::MatMetaElastic< DIM, MODEL_TYPE >::updateState ( int  tag,
EntityHandle  entity,
int  gg 
)
inlinevirtual

Reimplemented from MatOps::PhysicalEquations.

Definition at line 105 of file MatMetaElastic.cpp.

105 {
106 return metaElasticAtPts.at(tag)->updateState(tag, entity, gg);
107 }

Member Data Documentation

◆ metaElasticAtPts

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
std::map<int, boost::shared_ptr<PhysicalEquations> > MatOps::MatMetaElastic< DIM, MODEL_TYPE >::metaElasticAtPts
protected

Definition at line 116 of file MatMetaElastic.cpp.

116 {
117
118 {
119
120 // First tag is always MetaElastic tag
122 createMatOpsPhysicalEquationsPtr<ELASTICITY::NEOHOOKEAN, modelType>(
123 this->matOpsDataPtr,
125
126 },
127
128 {
129
130 MatOps::MatOpsTagsRegistry::setTagName("MooneyRivlinWriggersEq63"),
131 createMatOpsPhysicalEquationsPtr<ELASTICITY::MOONEYRIVLINWRIGGERSEQ63,
132 modelType>(
134 "MooneyRivlinWriggersEq63"))
135
136 },
137
138 {
139
140 MatOps::MatOpsTagsRegistry::setTagName("StVenantKirchhoff"),
141 createMatOpsPhysicalEquationsPtr<ELASTICITY::STVENANTKIRCHHOFF,
142 modelType>(
143 this->matOpsDataPtr,
144 MatOps::MatOpsTagsRegistry::setTagName("StVenantKirchhoff"))
145
146 },
147
148 };
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
static constexpr int modelType

◆ modelType

template<int DIM, int MODEL_TYPE = (DIM == 3) ? MatOps::MODEL_3D : MatOps::MODEL_2D_PLANE_STRAIN>
constexpr int MatOps::MatMetaElastic< DIM, MODEL_TYPE >::modelType = MODEL_TYPE
inlinestaticconstexprprotected

Definition at line 114 of file MatMetaElastic.cpp.


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