11#ifndef MAT_ELASTIC_HPP
12#define MAT_ELASTIC_HPP
41 addKinematics(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
43 boost::shared_ptr<MatrixDouble> m_grad) {
44 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
46 auto m_disp = boost::make_shared<MatrixDouble>();
47 auto m_grad_2d = boost::make_shared<MatrixDouble>();
59 template <AssemblyType A, IntegrationType I,
typename DomainEleOp>
62 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
64 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
66 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
71 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"grad");
72 auto m_P = physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"P");
74 pip.push_back(physical_equations_ptr->createOp(physical_equations_ptr,
true,
77 auto data = boost::make_shared<AxisymmetricAssemblyData>();
78 auto jacobian = [](
double r,
double,
double) {
return 2 * M_PI * r; };
81 new OpInternalForce(
field_name, data->inPlaneStress, jacobian));
84 pip.push_back(
new OpInternalForce(
field_name, m_P));
89 template <AssemblyType A, IntegrationType I,
typename DomainEleOp>
92 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
94 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
96 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
99 using OpKPiola =
typename B::template OpGradTensorGrad<1, DIM, DIM, -1>;
101 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"grad");
103 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"P_dF");
105 pip.push_back(physical_equations_ptr->createOp(physical_equations_ptr,
106 false,
true,
false));
108 auto data = boost::make_shared<AxisymmetricAssemblyData>();
109 auto jacobian = [](
double r,
double,
double) {
return 2 * M_PI * r; };
123 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
125 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
127 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
129 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"grad");
130 auto m_P = physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"P");
132 pip.push_back(physical_equations_ptr->createOp(physical_equations_ptr,
133 false,
false,
true));
139 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
141 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
143 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
145 physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"grad");
146 auto m_P = physical_equations_ptr->matOpsDataPtr->getCommonDataPtr(
"P");
148 pip.push_back(physical_equations_ptr->createOp(physical_equations_ptr,
true,
158std::map<int, boost::shared_ptr<PhysicalEquations>> &
162boost::shared_ptr<PhysicalEquations>
164 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
167boost::shared_ptr<PhysicalEquations>
169 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
172boost::shared_ptr<PhysicalEquations>
174 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
177boost::shared_ptr<PhysicalEquations>
179 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
182boost::shared_ptr<PhysicalEquations>
184 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
187boost::shared_ptr<PhysicalEquations>
189 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
192boost::shared_ptr<PhysicalEquations>
194 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
197boost::shared_ptr<PhysicalEquations>
200 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
203boost::shared_ptr<PhysicalEquations>
206 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
209boost::shared_ptr<PhysicalEquations>
211 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
214boost::shared_ptr<PhysicalEquations>
217 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
220boost::shared_ptr<PhysicalEquations>
223 boost::shared_ptr<MatOpsData> mat_ops_data_ptr,
int tag);
234boost::shared_ptr<PhysicalEquations>
236 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_AXISYMMETRIC >(boost::shared_ptr< MatOpsData > mat_ops_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createMatOpsPhysicalEquationsPtr< ELASTICITY::META, MODEL_AXISYMMETRIC >(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)
@ 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)
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
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 void addKinematics(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, const std::string &field_name, boost::shared_ptr< MatrixDouble > m_grad)
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.
Get field gradients at integration pts for scalar field rank 0, i.e. vector field.
Specialization for MatrixDouble vector field values calculation.