|
| v0.14.0
|
Go to the documentation of this file.
16 #ifndef __ESHELBIAN_PLASTICITY_HPP__
17 #define __ESHELBIAN_PLASTICITY_HPP__
23 using CachePhi = boost::tuple<int, int, MatrixDouble>;
29 BaseFunctionUnknownInterface **iface)
const;
31 boost::shared_ptr<BaseFunctionCtx> ctx_ptr);
56 :
public boost::enable_shared_from_this<DataAtIntegrationPts> {
119 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
123 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
approxPAtPts);
127 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
divPAtPts);
131 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
divSigmaAtPts);
135 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wL2AtPts);
139 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wL2DotAtPts);
143 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wL2DotDotAtPts);
147 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
152 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
157 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
162 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
rotAxisAtPts);
166 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
171 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
GAtPts);
175 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
GAtPts);
179 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matD);
183 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matInvD);
187 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matAxiatorD);
191 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matDeviatorD);
195 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wH1AtPts);
199 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
XH1AtPts);
203 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
contactL2AtPts);
207 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wGradH1AtPts);
211 return boost::shared_ptr<VectorDouble>(shared_from_this(), &
jacobianAtPts);
244 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
245 boost::shared_ptr<PhysicalEquations> physics_ptr) = 0;
249 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
250 const double alpha_u);
253 std::string row_field, std::string col_field,
254 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const double alpha);
258 boost::shared_ptr<double> total_energy_ptr);
261 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
262 boost::shared_ptr<PhysicalEquations> physics_ptr);
275 &
v[S + 5], &
v[S + 6], &
v[S + 7], &
v[S + 8]);
287 const int A00 = nba * 0 + S0;
288 const int A01 = nba * 1 + S0;
289 const int A02 = nba * 2 + S0;
290 const int A10 = nba * 3 + S0;
291 const int A11 = nba * 4 + S0;
292 const int A12 = nba * 5 + S0;
293 const int A20 = nba * 6 + S0;
294 const int A21 = nba * 7 + S0;
295 const int A22 = nba * 8 + S0;
299 &
v[A00 + 0], &
v[A00 + 1], &
v[A00 + 2], &
v[A01 + 0], &
v[A01 + 1],
300 &
v[A01 + 2], &
v[A02 + 0], &
v[A02 + 1], &
v[A02 + 2],
302 &
v[A10 + 0], &
v[A10 + 1], &
v[A10 + 2], &
v[A11 + 0], &
v[A11 + 1],
303 &
v[A11 + 2], &
v[A12 + 0], &
v[A12 + 1], &
v[A12 + 2],
305 &
v[A20 + 0], &
v[A20 + 1], &
v[A20 + 2], &
v[A21 + 0], &
v[A21 + 1],
306 &
v[A21 + 2], &
v[A22 + 0], &
v[A22 + 1], &
v[A22 + 2]
382 OpJacobian(
const int tag,
const bool eval_rhs,
const bool eval_lhs,
383 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
384 boost::shared_ptr<PhysicalEquations> physics_ptr)
400 boost::shared_ptr<DataAtIntegrationPts>
402 boost::shared_ptr<PhysicalEquations>
411 boost::shared_ptr<DataAtIntegrationPts>
415 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
420 std::string row_field, std::string col_field,
421 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const char type,
422 const bool assemble_symmetry,
ScaleOff scale_off = []() {
return 1; })
447 double *vec_ptr = &*
nF.begin();
468 EntityType row_type, EntityType col_type,
473 const auto row_nb_dofs = row_data.
getIndices().size();
474 const auto col_nb_dofs = col_data.
getIndices().size();
475 transposeK.resize(col_nb_dofs, row_nb_dofs,
false);
480 CHKERR MatSetValues<AssemblyTypeSelector<A>>(this->getTSB(), row_data,
481 col_data,
K, ADD_VALUES);
483 CHKERR MatSetValues<AssemblyTypeSelector<A>>(
484 this->getTSB(), col_data, row_data,
transposeK, ADD_VALUES);
502 EntityType col_type,
EntData &row_data,
512 CHKERR assemble(row_side, col_side, row_type, col_type, row_data, col_data);
519 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
524 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
525 const char type,
const bool assemble_symmetry)
527 type, assemble_symmetry) {}
532 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
537 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
538 const char type,
const bool assemble_symmetry)
540 type, assemble_symmetry) {}
553 boost::shared_ptr<DataAtIntegrationPts>
560 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
565 boost::shared_ptr<DataAtIntegrationPts>
573 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
574 const double alpha,
const double rho)
582 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
589 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
598 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
607 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
614 template <AssemblyType A>
616 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
618 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
622 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
623 boost::shared_ptr<BcDispVec> &bc_disp_ptr,
624 std::vector<boost::shared_ptr<ScalingMethod>> smv,
625 boost::shared_ptr<Range> ents_ptr =
nullptr)
626 :
OP(broken_base_side_data, ents_ptr), bcDispPtr(bc_disp_ptr),
627 scalingMethodsVec(smv) {}
637 using OP::OpDispBcImpl;
645 template <AssemblyType A>
647 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
649 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
653 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
654 boost::shared_ptr<BcRotVec> &bc_rot_ptr,
655 std::vector<boost::shared_ptr<ScalingMethod>> smv,
656 boost::shared_ptr<Range> ents_ptr =
nullptr)
657 :
OP(broken_base_side_data, ents_ptr), bcRotPtr(bc_rot_ptr),
658 scalingMethodsVec(smv) {}
668 using OP::OpRotationBcImpl;
675 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase {
677 boost::shared_ptr<TractionBcVec> bc_data)
690 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
691 const bool assemble_off =
false)
703 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
704 const double alpha,
const double rho)
714 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
715 const bool assemble_off =
false)
726 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
727 const bool assemble_off =
false)
738 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
739 const bool assemble_off =
false)
749 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
750 const bool assemble_off)
760 std::string row_field, std::string col_field,
761 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const bool assemble_off)
771 std::string row_field, std::string col_field,
772 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
781 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
794 std::string row_field, std::string col_field,
795 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
808 std::string row_field, std::string col_field,
809 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
822 std::string row_field, std::string col_field,
823 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const bool assemble_off)
835 std::string row_field, std::string col_field,
836 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const bool assemble_off)
856 std::vector<EntityHandle> &map_gauss_pts,
857 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
870 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
877 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
887 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
903 static boost::function<
double(
const double)>
f;
910 static double f_log_e(
const double v) {
return std::exp(
v); }
950 UnknownInterface **iface)
const;
963 SmartPetscObj<DM>
dM;
1010 template <
typename BC>
1012 const std::string block_name,
const int nb_attributes) {
1017 (boost::format(
"%s(.*)") % block_name).str()
1022 std::vector<double> block_attributes;
1023 CHKERR it->getAttributes(block_attributes);
1024 if (block_attributes.size() < nb_attributes) {
1026 "In block %s expected %d attributes, but given %d",
1027 it->getName().c_str(), nb_attributes, block_attributes.size());
1032 bc_vec_ptr->emplace_back(it->getName(), block_attributes, faces);
1057 boost::shared_ptr<TractionFreeBc> &bc_ptr,
1058 const std::string contact_set_name);
1079 const double sigma_y);
1084 const double sigma_y);
1092 const int tag,
const bool do_rhs,
const bool do_lhs,
1093 boost::shared_ptr<VolumeElementForcesAndSourcesCore> &fe);
1096 const int tag,
const bool add_elastic,
const bool add_material,
1097 boost::shared_ptr<VolumeElementForcesAndSourcesCore> &fe_rhs,
1098 boost::shared_ptr<VolumeElementForcesAndSourcesCore> &fe_lhs);
1102 boost::shared_ptr<FaceElementForcesAndSourcesCore> &fe_rhs,
1103 boost::shared_ptr<FaceElementForcesAndSourcesCore> &fe_lhs);
1107 boost::shared_ptr<ContactTree> &fe_contact_tree
1139 boost::shared_ptr<ParentFiniteElementAdjacencyFunctionSkeleton<2>>
1150 template <
int FE_DIM,
int PROBLEM_DIM,
int SPACE_DIM>
struct AddHOOps;
1155 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
1156 std::vector<FieldSpace> space, std::string geom_field_name,
1157 boost::shared_ptr<Range> crack_front_edges_ptr);
1163 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
1164 std::vector<FieldSpace> space, std::string geom_field_name,
1165 boost::shared_ptr<Range> crack_front_edges_ptr);
1170 #endif //__ESHELBIAN_PLASTICITY_HPP__
VectorDouble jacobianAtPts
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface reference to pointer of interface.
static double f_log_e(const double v)
static double f_linear(const double v)
std::vector< BcDisp > BcDispVec
FTensor::Tensor2< double, 3, 3 > DTensor2
Data on single entity (This is passed as argument to DataOperator::doWork)
BcRot(std::string name, std::vector< double > &attr, Range &faces)
MatrixDouble logStretch2H1AtPts
MatrixPtr getDivSigmaAtPts()
MatrixPtr getSmallWH1AtPts()
std::vector< TractionBc > TractionBcVec
PhysicalEquations(const int size_active, const int size_dependent)
MatrixDouble approxSigmaAtPts
boost::shared_ptr< BcRotVec > bcSpatialRotationVecPtr
static boost::function< double(const double)> dd_f
std::vector< double > activeVariables
MatrixPtr getLargeXH1AtPts()
VectorBoundedArray< double, 3 > VectorDouble3
const std::string hybridMaterialDisp
VectorPtr getJacobianAtPts()
virtual VolUserDataOperator * returnOpSpatialPhysical_du_du(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const double alpha)
static double inv_f_log(const double v)
MoFEMErrorCode getTractionFreeBc(const EntityHandle meshset, boost::shared_ptr< TractionFreeBc > &bc_ptr, const std::string contact_set_name)
Remove all, but entities where kinematic constrains are applied.
MatrixPtr getSmallWL2DotDotAtPts()
const std::string piolaStress
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
MatrixPtr getBigG0AtPts()
const std::string spatialH1Disp
FTensor::Tensor0< FTensor::PackPtr< double *, 1 > > DTensor0Ptr
MoFEMErrorCode addDMs(const BitRefLevel bit=BitRefLevel().set(0), const EntityHandle meshset=0)
OpAssembleFace(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry)
OpCalculateRotationAndSpatialGradient(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
virtual OpJacobian * returnOpJacobian(const int tag, const bool eval_rhs, const bool eval_lhs, boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< PhysicalEquations > physics_ptr)=0
MoFEMErrorCode iNtegrate(EntData &data)
OpSpatialPrj(std::string row_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode setBaseVolumeElementOps(const int tag, const bool do_rhs, const bool do_lhs, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe)
MatrixDouble rotAxisDotAtPts
MoFEMErrorCode projectGeometry(const EntityHandle meshset=0)
static double exponentBase
static double inv_dd_f_linear(const double v)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrateImpl(EntData &row_data, EntData &col_data)
FTensor::Tensor2< FTensor::PackPtr< double *, 1 >, 3, 3 > DTensor2Ptr
virtual MoFEMErrorCode assemble(int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
virtual MoFEMErrorCode assemble(int row_side, EntityType row_type, EntData &data)
MoFEMErrorCode iNtegrate(EntData &data)
boost::shared_ptr< Range > materialSkeletonFaces
BitRefLevel bitAdjParentMask
bit ref level for parent parent
MatrixPtr getRotAxisDotAtPts()
MatrixDouble stretchTensorAtPts
MatrixDouble leviKirchhoffOmegaAtPts
OpAssembleVolume(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
MoFEMErrorCode addMaterial_Hencky(double E, double nu)
MoFEMErrorCode addBoundaryFiniteElement(const EntityHandle meshset=0)
virtual VolUserDataOperator * returnOpSpatialPhysical(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const double alpha_u)
std::vector< EntityHandle > & mapGaussPts
MatrixDouble diff2RotMatAtPts
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
static double dd_f_linear(const double v)
UBlasMatrix< double > MatrixDouble
MatrixDouble matDeviatorD
const std::string stretchTensor
virtual ~PhysicalEquations()=default
const std::string materialVolumeElement
MoFEMErrorCode setElasticElementToTs(DM dm)
std::vector< BcRot > BcRotVec
MoFEMErrorCode setElasticElementOps(const int tag)
boost::shared_ptr< PhysicalEquations > physicsPtr
material physical equations
OpSpatialConsistencyDivTerm(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrateImpl(EntData &row_data, EntData &col_data)
OpRotationBcImpl(boost::shared_ptr< std::vector< BrokenBaseSideData >> broken_base_side_data, boost::shared_ptr< BcRotVec > &bc_rot_ptr, std::vector< boost::shared_ptr< ScalingMethod >> smv, boost::shared_ptr< Range > ents_ptr=nullptr)
MatrixDouble logStretchTotalTensorAtPts
static double d_f_linear(const double v)
static double dd_f_log(const double v)
MoFEMErrorCode integrateImpl(EntData &row_data, EntData &col_data)
OpSpatialConsistency_dBubble_dBubble(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode getSpatialTractionFreeBc(const EntityHandle meshset=0)
MatrixPtr getStretchTensorAtPts()
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
static double inv_f_linear(const double v)
VectorDouble nF
local right hand side vector
static boost::function< double(const double)> d_f
SmartPetscObj< DM > dmPrjSpatial
Projection spatial displacement.
virtual MoFEMErrorCode evaluateLhs(EntData &data)=0
boost::function< double()> ScaleOff
MoFEMErrorCode integrate(EntData &data)
OpSpatialConsistency_dBubble_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
boost::shared_ptr< VolumeElementForcesAndSourcesCore > elasticFeRhs
FTensor::Tensor3< double, 3, 3, 3 > DTensor3
boost::shared_ptr< FaceElementForcesAndSourcesCore > elasticBcRhs
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MatrixPtr getRotAxisAtPts()
MoFEMErrorCode integrate(EntData &data)
boost::shared_ptr< VolumeElementForcesAndSourcesCore > elasticFeLhs
boost::shared_ptr< Range > frontEdges
MatrixPtr getApproxSigmaAtPts()
OpSpatialEquilibrium_dw_dw(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const double alpha, const double rho)
const std::string hybridSpatialDisp
MoFEMErrorCode VecSetValues(Vec V, const EntitiesFieldData::EntData &data, const double *ptr, InsertMode iora)
Assemble PETSc vector.
MatrixDouble rotAxisAtPts
VectorBoundedArray< int, 3 > VectorInt3
Deprecated interface functions.
boost::shared_ptr< MatrixDouble > MatrixPtr
OpAssembleBasic(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry, ScaleOff scale_off=[]() { return 1;})
MatrixDouble contactL2AtPts
static double f_log(const double v)
DeprecatedCoreInterface Interface
virtual MoFEMErrorCode assemble(EntData &data)
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, UnknownInterface **iface) const
Getting interface of core database.
boost::shared_ptr< Range > frontAdjEdges
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
MatrixDouble adjointPdstretchAtPts
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
static double d_f_log_e(const double v)
OpSpatialConsistencyP(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
boost::shared_ptr< BcDispVec > bcDispPtr
MoFEMErrorCode integrate(EntData &data)
MatrixDouble logStretchDotTensorAtPts
EntitiesFieldData::EntData EntData
MoFEMErrorCode postProcessResults(const int tag, const std::string file)
OpAssembleFace(const std::string &field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
boost::shared_ptr< Range > crackFaces
#define CHKERR
Inline error check.
virtual MoFEMErrorCode integrate(EntData &data)
virtual moab::Interface & get_moab()=0
MatrixPtr getMatInvDPtr()
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
static boost::shared_ptr< SetUpSchur > createSetUpSchur(MoFEM::Interface &m_field, EshelbianCore *ep_core_ptr)
const std::string skinElement
MatrixDouble approxPAtPts
MatrixDouble adjointPdUdOmegaAtPts
static double d_f_log(const double v)
static enum RotSelector gradApproximator
MoFEMErrorCode addVolumeFiniteElement(const EntityHandle meshset=0)
boost::shared_ptr< PhysicalEquations > physicsPtr
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
std::vector< Range > TractionFreeBc
static enum StretchSelector stretchSelector
SmartPetscObj< DM > dmElastic
Elastic problem.
boost::shared_ptr< FaceElementForcesAndSourcesCore > elasticBcLhs
boost::shared_ptr< ContactTree > contactTreeRhs
Make a contact tree.
OpDispBcImpl(boost::shared_ptr< std::vector< BrokenBaseSideData >> broken_base_side_data, boost::shared_ptr< BcDispVec > &bc_disp_ptr, std::vector< boost::shared_ptr< ScalingMethod >> smv, boost::shared_ptr< Range > ents_ptr=nullptr)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
boost::shared_ptr< Range > skeletonFaces
static enum RotSelector rotSelector
FTensor::Tensor2< adouble, 3, 3 > ATensor2
MoFEMErrorCode addMaterial_HMHHStVenantKirchhoff(const int tape, const double lambda, const double mu, const double sigma_y)
boost::shared_ptr< BcRotVec > bcRotPtr
~CGGUserPolynomialBase()=default
static boost::function< double(const double)> f
MatrixDouble leviKirchhoffAtPts
boost::shared_ptr< BcDispVec > bcSpatialDispVecPtr
const VectorInt & getIndices() const
Get global indices of dofs on entity.
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, BaseFunctionUnknownInterface **iface) const
OpSpatialEquilibrium_dw_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off=false)
static boost::function< double(const double)> inv_d_f
const std::string materialSkeletonElement
MatrixDouble logStretchTensorAtPts
boost::shared_ptr< TractionBcVec > bcSpatialTraction
EshelbianCore(MoFEM::Interface &m_field)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
virtual MoFEMErrorCode integrate(int row_side, EntityType row_type, EntData &data)
boost::shared_ptr< VectorDouble > VectorPtr
MoFEM::Interface & mField
std::vector< double > dependentVariablesPiolaDirevatives
OpSpatialRotation(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode addMaterial_HMHNeohookean(const int tape, const double c10, const double K)
OpSpatialRotation_domega_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
static PetscBool noStretch
VolumeElementForcesAndSourcesCore::UserDataOperator VolUserDataOperator
static DTensor3Ptr get_vecTensor3(std::vector< double > &v, const int nba)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
MoFEMErrorCode solveElastic(TS ts, Vec x)
BcDisp(std::string name, std::vector< double > &attr, Range &faces)
MoFEMErrorCode getValueHdivForCGGBubble(MatrixDouble &pts)
static PetscBool setSingularity
const std::string contactElement
MoFEMErrorCode setFaceElementOps(const bool add_elastic, const bool add_material, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_lhs)
SmartPetscObj< DM > dM
Coupled problem all fields.
static DTensor2Ptr get_VecTensor2(std::vector< double > &v)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
virtual VolUserDataOperator * returnOpCalculateStretchFromStress(boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< PhysicalEquations > physics_ptr)
OpSpatialConsistencyBubble(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MatrixPtr getMatAxiatorDPtr()
MatrixPtr getLogStretchTensorAtPts()
const std::string rotAxis
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
const std::string spatialL2Disp
FaceElementForcesAndSourcesCore::UserDataOperator FaceUserDataOperator
virtual MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< Range > contactFaces
constexpr auto field_name
boost::shared_ptr< TractionFreeBc > bcSpatialFreeTraction
MatrixPtr getLogStretchDotTensorAtPts()
MatrixPtr getMatDeviatorDPtr()
static double dd_f_log_e(const double v)
std::vector< boost::shared_ptr< ScalingMethod > > scalingMethodsVec
OpSpatialRotation_domega_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
const std::string bubbleField
FTensor::Tensor1< adouble, 3 > ATensor1
base class for all interface classes
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
static boost::function< double(const double)> inv_f
const double v
phase velocity of light in medium (cm/ns)
MatrixDouble wL2DotDotAtPts
MoFEMErrorCode getValue(MatrixDouble &pts, boost::shared_ptr< BaseFunctionCtx > ctx_ptr)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &data)
boost::shared_ptr< CachePhi > cachePhiPtr
std::vector< boost::shared_ptr< ScalingMethod > > scalingMethodsVec
boost::shared_ptr< PhysicalEquations > physicalEquations
const std::string elementVolumeName
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< Range > frontVertices
MatrixDouble diffStretchTensorAtPts
MatrixDouble hdOmegaAtPts
TractionBc(std::string name, std::vector< double > &attr, Range &faces)
OpSpatialConsistency_dP_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
ForcesAndSourcesCore::UserDataOperator UserDataOperator
OpCalculateEshelbyStress(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
UBlasVector< int > VectorInt
OpSpatialConsistency_dP_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
static DTensor0Ptr get_VecTensor0(std::vector< double > &v)
MatrixDouble divSigmaAtPts
BitRefLevel bitAdjParent
bit ref level for parent
OpSpatialPhysical_du_dBubble(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off=false)
BitRefLevel bitAdjEntMask
bit ref level for parent parent
MatrixPtr getSmallWGradH1AtPts()
MatrixDouble leviKirchhoffPAtPts
MatrixDouble diffRotMatAtPts
static double inv_d_f_linear(const double v)
boost::shared_ptr< TractionBcVec > bcData
MoFEMErrorCode integrate(EntData &row_data)
MatrixPtr getSmallWL2DotAtPts()
VectorDouble detStretchTensorAtPts
const FTensor::Tensor2< T, Dim, Dim > Vec
@ MOFEM_DATA_INCONSISTENCY
FTensor::Tensor1< double, 3 > DTensor1
OpSpatialConsistency_dBubble_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
const std::string skeletonElement
virtual MoFEMErrorCode evaluateRhs(EntData &data)=0
static double inv_d_f_log(const double v)
MoFEMErrorCode addFields(const EntityHandle meshset=0)
OpAssembleBasic(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
UBlasVector< double > VectorDouble
virtual VolUserDataOperator * returnOpCalculateEnergy(boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< double > total_energy_ptr)
MatrixDouble detStretchTensorAtPts_du
static boost::function< double(const double)> inv_dd_f
MatrixDouble wGradH1AtPts
static double inv_dd_f_log(const double v)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode getOptions()
std::bitset< BITREFLEVEL_SIZE > BitRefLevel
Bit structure attached to each entity identifying to what mesh entity is attached.
OpSpatialPhysical_du_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off=false)
OpSpatialPrj_dx_dw(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode iNtegrate(EntData &data)
OpAssembleVolume(const std::string &field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
int contactRefinementLevels
MoFEMErrorCode getBc(boost::shared_ptr< BC > &bc_vec_ptr, const std::string block_name, const int nb_attributes)
moab::Interface & postProcMesh
MatrixPtr getApproxPAtPts()
boost::shared_ptr< ParentFiniteElementAdjacencyFunctionSkeleton< 2 > > parentAdjSkeletonFunctionDim2
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
OpSpatialPhysical_du_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off=false)
MatrixPtr getSmallWL2AtPts()
MoFEMErrorCode getSpatialTractionBc()
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode setVolumeElementOps(const int tag, const bool add_elastic, const bool add_material, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe_lhs)
OpSpatialEquilibrium(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const double alpha, const double rho)
const std::string crackElement
FTensor::Tensor3< adouble, 3, 3, 3 > ATensor3
MoFEMErrorCode addMaterial_HMHMooneyRivlin(const int tape, const double alpha, const double beta, const double lambda, const double sigma_y)
OpJacobian(const int tag, const bool eval_rhs, const bool eval_lhs, boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< PhysicalEquations > physics_ptr)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
MatrixDouble K
local tangent matrix
const std::string materialL2Disp
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
const bool assembleSymmetry
std::vector< double > dependentVariablesPiola
MoFEMErrorCode setContactElementRhsOps(boost::shared_ptr< ContactTree > &fe_contact_tree)
const std::string eshelbyStress
PhysicalEquations()=delete
virtual MoFEMErrorCode recordTape(const int tag, DTensor2Ptr *t_h)=0
OpSpatialRotation_domega_dBubble(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
BitRefLevel bitAdjEnt
bit ref level for parent
MatrixDouble adjointPdUdPAtPts
const std::string contactDisp
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
MoFEMErrorCode getSpatialRotationBc()
OpSpatialPrj_dx_dx(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode getSpatialDispBc()
[Getting norms]
OpPostProcDataStructure(moab::Interface &post_proc_mesh, std::vector< EntityHandle > &map_gauss_pts, boost::shared_ptr< DataAtIntegrationPts > data_ptr, int sense)
virtual MoFEMErrorCode setUp(TS)=0
boost::tuple< int, int, MatrixDouble > CachePhi
const std::string naturalBcElement
MoFEMErrorCode gettingNorms()
[Getting norms]
CGGUserPolynomialBase(boost::shared_ptr< CachePhi > cache_phi=nullptr)
MatrixDouble hdLogStretchAtPts
MoFEMErrorCode integrate(EntData &data)
MatrixPtr getContactL2AtPts()
OpBrokenTractionBc(const std::string row_field, boost::shared_ptr< TractionBcVec > bc_data)
const std::string materialH1Positions
MatrixDouble adjointPdUAtPts
SmartPetscObj< DM > dmMaterial
Material problem.
FTensor::Tensor3< FTensor::PackPtr< double *, 1 >, 3, 3, 3 > DTensor3Ptr