11#ifndef MAT_ELASTIC_HPP
12#define MAT_ELASTIC_HPP
38 template <AssemblyType A, IntegrationType I,
typename DomainEleOp>
41 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
43 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
45 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
46 using B =
typename FormsIntegrators<DomainEleOp>::template Assembly<
50 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"grad");
51 auto m_P = physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"P");
53 new OpCalculateVectorFieldGradient<DIM, DIM>(
field_name, m_grad));
54 pip.push_back(physical_equations_ptr->createOp(physical_equations_ptr,
true,
56 pip.push_back(
new OpInternalForce(
field_name, m_P));
60 template <AssemblyType A, IntegrationType I,
typename DomainEleOp>
63 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
65 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
67 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
68 using B =
typename FormsIntegrators<DomainEleOp>::template Assembly<
70 using OpKPiola =
typename B::template OpGradTensorGrad<1, DIM, DIM, -1>;
72 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"grad");
74 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"P_dF");
76 new OpCalculateVectorFieldGradient<DIM, DIM>(
field_name, m_grad));
77 pip.push_back(physical_equations_ptr->createOp(physical_equations_ptr,
85 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
87 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
89 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
91 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"grad");
92 auto m_P = physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"P");
94 new OpCalculateVectorFieldGradient<DIM, DIM>(
field_name, m_grad));
95 pip.push_back(physical_equations_ptr->createOp(physical_equations_ptr,
102 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
104 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
106 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
108 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"grad");
109 auto m_P = physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"P");
111 new OpCalculateVectorFieldGradient<DIM, DIM>(
field_name, m_grad));
112 pip.push_back(physical_equations_ptr->createOp(physical_equations_ptr,
true,
122std::map<int, boost::shared_ptr<PhysicalEquations>> &
126boost::shared_ptr<PhysicalEquations>
128 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
131boost::shared_ptr<PhysicalEquations>
133 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
136boost::shared_ptr<PhysicalEquations>
138 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
141boost::shared_ptr<PhysicalEquations>
143 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
146boost::shared_ptr<PhysicalEquations>
148 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
151boost::shared_ptr<PhysicalEquations>
154 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
157boost::shared_ptr<PhysicalEquations>
159 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
162boost::shared_ptr<PhysicalEquations>
165 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
168boost::shared_ptr<PhysicalEquations>
170 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
173boost::shared_ptr<PhysicalEquations>
176 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
179boost::shared_ptr<PhysicalEquations>
181 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
184boost::shared_ptr<PhysicalEquations>
187 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
198boost::shared_ptr<PhysicalEquations>
200 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
#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()
std::map< int, boost::shared_ptr< PhysicalEquations > > & getMetaElasticMap(boost::shared_ptr< PhysicalEquations > meta_ptr)
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr< ELASTICITY::MOONEYRIVLINWRIGGERSEQ63, MODEL_3D >(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr< ELASTICITY::NEOHOOKEAN, MODEL_3D >(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr< ELASTICITY::META, MODEL_2D_PLANE_STRAIN >(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr< ELASTICITY::STVENANTKIRCHHOFF, MODEL_3D >(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr< ELASTICITY::TOPO_NEOHOOKEAN, MODEL_3D >(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
@ BARRIER_AND_CHANGE_QUALITY_SCALED_BY_VOLUME
@ LASTOP_VOLUMELENGTHQUALITYTYPE
@ BARRIER_AND_CHANGE_QUALITY
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr< ELASTICITY::VOLUMELENGTHQUALITY, MODEL_3D >(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr< ELASTICITY::NEOHOOKEAN, MODEL_2D_PLANE_STRAIN >(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr< ELASTICITY::META, MODEL_3D >(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
FormsIntegrators< DomainEleOp >::Assembly< A >::LinearForm< I >::OpGradTimesTensor< 1, FIELD_DIM, SPACE_DIM > OpGradTimesTensor
constexpr auto field_name
FormsIntegrators< DomainEleOp >::Assembly< PETSC >::BiLinearForm< GAUSS >::OpGradTensorGrad< 1, SPACE_DIM, SPACE_DIM, -1 > OpKPiola
[Only used for dynamics]
static bool useDeformationGradient
static MoFEMErrorCode opUpdateFactory(MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, std::string field_name, boost::shared_ptr< PhysicalEquations > physical_equations_ptr)
static MoFEMErrorCode opRhsFactory(MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, std::string field_name, boost::shared_ptr< PhysicalEquations > physical_equations_ptr)
OpMaterialFactory()=delete
static MoFEMErrorCode opPostProcFactory(MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, std::string field_name, boost::shared_ptr< PhysicalEquations > physical_equations_ptr)
static MoFEMErrorCode opLhsFactory(MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, std::string field_name, boost::shared_ptr< PhysicalEquations > physical_equations_ptr)
PhysicalEquations()=delete
Deprecated interface functions.