v0.15.5
Loading...
Searching...
No Matches
AdolCMetaElastic.cpp
Go to the documentation of this file.
1/**
2 * @file AdolCMetaElastic.cpp
3 * @brief
4 * @version 0.1
5 * @date 2026-03-28
6 *
7 * @copyright Copyright (c) 2026
8 *
9 */
10
11 namespace AdolCOps {
12
13template <int DIM> struct AdolCMetaElastic : public AdolCElasticImpl<DIM> {
14 using AdolCElasticImpl<DIM>::AdolCElasticImpl;
15
17
18 MoFEMErrorCode getOptions(MoFEM::Interface *m_field_ptr = nullptr) override {
20 for (auto &m : metaElasticAtPts) {
21 CHKERR m.second->getOptions(m_field_ptr);
22 }
23 A::tagVsRangePtr = boost::make_shared<std::map<int, Range>>();
24 for (const auto &m : metaElasticAtPts) {
25 A::tagVsRangePtr->insert(
26 {m.first, Range()}); // Initialize with empty range
27 for (auto &rp : A::paramVecByRange) {
28 A::tagVsRangePtr->at(m.first).merge(
29 rp.first); // Merge ranges for the same tag
30 }
31 }
33 }
34
35 MoFEMErrorCode setParams(EntityHandle ent, int gg) override {
37 for(auto &m : metaElasticAtPts) {
38 CHKERR m.second->setParams(ent, gg);
39 }
41 }
42
43 MoFEMErrorCode recordTape() override {
45 for (auto &m : metaElasticAtPts) {
46 CHKERR m.second->recordTape();
47 }
49 }
50
51protected:
52 static inline constexpr int modelType =
54
55 std::map<int, boost::shared_ptr<PhysicalEquations>> metaElasticAtPts = {
56
57 {
58
59 // First tag is always MetaElastic tag
61 createAdolCPhysicalEquationsPtr<ELASTICITY::NEOHOOKEAN, modelType>(
62 this->adolcDataPtr,
64
65 }
66
67 };
68};
69
70template <>
71boost::shared_ptr<PhysicalEquations>
73 boost::shared_ptr<ADolCData> adolc_data_ptr, int tag) {
74 return boost::make_shared<AdolCMetaElastic<3>>(adolc_data_ptr, tag);
75}
76
77template <>
78boost::shared_ptr<PhysicalEquations>
80 boost::shared_ptr<ADolCData> adolc_data_ptr, int tag) {
81 return boost::make_shared<AdolCMetaElastic<2>>(adolc_data_ptr, tag);
82}
83}
#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.
boost::shared_ptr< PhysicalEquations > createAdolCPhysicalEquationsPtr< ELASTICITY::META, MODEL_2D_PLANE_STRAIN >(boost::shared_ptr< ADolCData > adolc_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createAdolCPhysicalEquationsPtr< ELASTICITY::META, MODEL_3D >(boost::shared_ptr< ADolCData > adolc_data_ptr, int tag)
@ MODEL_2D_PLANE_STRAIN
Definition AdolCOps.hpp:183
FTensor::Index< 'm', 3 > m
MoFEMErrorCode getOptions(MoFEM::Interface *m_field_ptr=nullptr) override
MoFEMErrorCode setParams(EntityHandle ent, int gg) override
static constexpr int modelType
std::map< int, boost::shared_ptr< PhysicalEquations > > metaElasticAtPts
MoFEMErrorCode recordTape() override
static auto setTagName(std::string name, int tag=-1)
Definition AdolCOps.hpp:16
std::vector< std::pair< Range, std::vector< double > > > paramVecByRange
Definition AdolCOps.hpp:165
boost::shared_ptr< std::map< int, Range > > tagVsRangePtr
Definition AdolCOps.hpp:164
boost::shared_ptr< ADolCData > adolcDataPtr
Definition AdolCOps.hpp:167
Deprecated interface functions.