11#ifndef ADOLC_OPS_ELEASTIC_HPP
12#define ADOLC_OPS_ELEASTIC_HPP
29 template <AssemblyType A, IntegrationType I,
typename DomainEleOp>
32 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
34 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
36 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
37 using B =
typename FormsIntegrators<DomainEleOp>::template Assembly<
41 physical_equations_ptr->adolcDataPtr->getCommonDataPtr(
"grad");
42 auto m_P = physical_equations_ptr->adolcDataPtr->getCommonDataPtr(
"P");
44 new OpCalculateVectorFieldGradient<DIM, DIM>(
field_name, m_grad));
46 physical_equations_ptr->createOp(physical_equations_ptr,
true,
false));
47 pip.push_back(
new OpInternalForce(
field_name, m_P));
51 template <AssemblyType A, IntegrationType I,
typename DomainEleOp>
54 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
56 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
58 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
59 using B =
typename FormsIntegrators<DomainEleOp>::template Assembly<
61 using OpKPiola =
typename B::template OpGradTensorGrad<1, DIM, DIM, 1>;
63 physical_equations_ptr->adolcDataPtr->getCommonDataPtr(
"grad");
65 physical_equations_ptr->adolcDataPtr->getCommonDataPtr(
"P_dF");
67 new OpCalculateVectorFieldGradient<DIM, DIM>(
field_name, m_grad));
69 physical_equations_ptr->createOp(physical_equations_ptr,
false,
true));
76 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pip,
78 boost::shared_ptr<PhysicalEquations> physical_equations_ptr) {
80 constexpr int DIM = (MODEL_TYPE ==
MODEL_3D) ? 3 : 2;
82 physical_equations_ptr->adolcDataPtr->getCommonDataPtr(
"grad");
83 auto m_P = physical_equations_ptr->adolcDataPtr->getCommonDataPtr(
"P");
85 new OpCalculateVectorFieldGradient<DIM, DIM>(
field_name, m_grad));
87 physical_equations_ptr->createOp(physical_equations_ptr,
true,
false));
97boost::shared_ptr<PhysicalEquations>
99 boost::shared_ptr<ADolCData> adolc_data_ptr,
int tag);
102boost::shared_ptr<PhysicalEquations>
104 boost::shared_ptr<ADolCData> adolc_data_ptr,
int tag);
107boost::shared_ptr<PhysicalEquations>
109 boost::shared_ptr<ADolCData> adolc_data_ptr,
int tag);
112boost::shared_ptr<PhysicalEquations>
114 boost::shared_ptr<ADolCData> adolc_data_ptr,
int tag);
125boost::shared_ptr<PhysicalEquations>
127 boost::shared_ptr<ADolCData> adolc_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()
boost::shared_ptr< PhysicalEquations > createAdolCPhysicalEquationsPtr< ELASTICITY::NEOHOOKEAN, MODEL_3D >(boost::shared_ptr< ADolCData > adolc_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createAdolCPhysicalEquationsPtr< ELASTICITY::VOLUMELENGTHQUALITY, MODEL_3D >(boost::shared_ptr< ADolCData > adolc_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createAdolCPhysicalEquationsPtr< ELASTICITY::META, MODEL_2D_PLANE_STRAIN >(boost::shared_ptr< ADolCData > adolc_data_ptr, int tag)
@ LASTOP_VOLUMELENGTHQUALITYTYPE
@ BARRIER_AND_CHANGE_QUALITY
@ BARRIER_AND_CHANGE_QUALITY_SCALED_BY_VOLUME
boost::shared_ptr< PhysicalEquations > createAdolCPhysicalEquationsPtr< ELASTICITY::META, MODEL_3D >(boost::shared_ptr< ADolCData > adolc_data_ptr, int tag)
boost::shared_ptr< PhysicalEquations > createAdolCPhysicalEquationsPtr< ELASTICITY::NEOHOOKEAN, MODEL_2D_PLANE_STRAIN >(boost::shared_ptr< ADolCData > adolc_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]
OpMaterialFactory()=delete
static MoFEMErrorCode opLhsFactory(MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, std::string field_name, boost::shared_ptr< PhysicalEquations > physical_equations_ptr)
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 opRhsFactory(MoFEM::Interface &m_field, boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pip, std::string field_name, boost::shared_ptr< PhysicalEquations > physical_equations_ptr)
Deprecated interface functions.