|
| v0.14.0
|
Go to the documentation of this file.
13 #ifndef __ESHELBIAN_PLASTICITY_HPP__
14 #define __ESHELBIAN_PLASTICITY_HPP__
33 :
public boost::enable_shared_from_this<DataAtIntegrationPts> {
92 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
96 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
approxPAtPts);
100 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
divPAtPts);
104 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
divSigmaAtPts);
108 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wL2AtPts);
112 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wL2DotAtPts);
116 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wL2DotDotAtPts);
120 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
125 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
130 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
135 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
rotAxisAtPts);
139 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
144 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
GAtPts);
148 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
GAtPts);
152 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matD);
156 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matAxiatorD);
160 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matDeviatorD);
164 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wH1AtPts);
168 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
contactL2AtPts);
172 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
206 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
207 boost::shared_ptr<PhysicalEquations> &physics_ptr) = 0;
220 &
v[S + 5], &
v[S + 6], &
v[S + 7], &
v[S + 8]);
232 const int A00 = nba * 0 + S0;
233 const int A01 = nba * 1 + S0;
234 const int A02 = nba * 2 + S0;
235 const int A10 = nba * 3 + S0;
236 const int A11 = nba * 4 + S0;
237 const int A12 = nba * 5 + S0;
238 const int A20 = nba * 6 + S0;
239 const int A21 = nba * 7 + S0;
240 const int A22 = nba * 8 + S0;
244 &
v[A00 + 0], &
v[A00 + 1], &
v[A00 + 2], &
v[A01 + 0], &
v[A01 + 1],
245 &
v[A01 + 2], &
v[A02 + 0], &
v[A02 + 1], &
v[A02 + 2],
247 &
v[A10 + 0], &
v[A10 + 1], &
v[A10 + 2], &
v[A11 + 0], &
v[A11 + 1],
248 &
v[A11 + 2], &
v[A12 + 0], &
v[A12 + 1], &
v[A12 + 2],
250 &
v[A20 + 0], &
v[A20 + 1], &
v[A20 + 2], &
v[A21 + 0], &
v[A21 + 1],
251 &
v[A21 + 2], &
v[A22 + 0], &
v[A22 + 1], &
v[A22 + 2]
327 OpJacobian(
const int tag,
const bool eval_rhs,
const bool eval_lhs,
328 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
329 boost::shared_ptr<PhysicalEquations> &physics_ptr)
345 boost::shared_ptr<DataAtIntegrationPts>
347 boost::shared_ptr<PhysicalEquations>
356 boost::shared_ptr<DataAtIntegrationPts>
360 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
365 const std::string &row_field,
const std::string &col_field,
366 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const char type,
367 const bool assemble_symmetry,
ScaleOff scale_off = []() {
return 1; })
392 double *vec_ptr = &*
nF.begin();
413 EntityType row_type, EntityType col_type,
418 const auto row_nb_dofs = row_data.
getIndices().size();
419 const auto col_nb_dofs = col_data.
getIndices().size();
420 transposeK.resize(col_nb_dofs, row_nb_dofs,
false);
447 EntityType col_type,
EntData &row_data,
457 CHKERR assemble(row_side, col_side, row_type, col_type, row_data, col_data);
464 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
469 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
470 const char type,
const bool assemble_symmetry)
472 type, assemble_symmetry) {}
477 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
482 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
483 const char type,
const bool assemble_symmetry)
485 type, assemble_symmetry) {}
489 boost::shared_ptr<DataAtIntegrationPts>
492 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
501 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
502 const double alpha,
const double rho)
510 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
518 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
519 const double alpha_u)
524 "get ployconvex option failed");
540 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
549 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
558 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
566 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
567 boost::shared_ptr<BcDispVec> &bc_disp_ptr,
568 std::vector<boost::shared_ptr<ScalingMethod>> smv)
580 const std::string &col_field_name,
581 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
582 boost::shared_ptr<BcDispVec> &bc_disp_ptr)
583 :
OpAssembleFace(row_field_name, col_field_name, data_ptr, OPROWCOL,
592 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
593 boost::shared_ptr<BcRotVec> &bc_rot_ptr)
601 const std::string &col_field_name,
602 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
603 boost::shared_ptr<BcRotVec> &bc_rot_ptr)
604 :
OpAssembleFace(row_field_name, col_field_name, data_ptr, OPROWCOL,
627 boost::shared_ptr<TractionBcVec> &bc)
643 const std::string &col_field,
644 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
645 const bool assemble_off =
false)
657 const std::string &col_field,
658 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
659 const double alpha,
const double rho)
670 const std::string &col_field,
671 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
679 "get ployconvex option failed");
694 const std::string &col_field,
695 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
696 const bool assemble_off =
false)
707 const std::string &row_field,
const std::string &col_field,
708 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
709 const bool assemble_off =
false)
720 const std::string &col_field,
721 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
722 const bool assemble_off =
false)
732 const std::string &col_field,
733 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
734 const bool assemble_off =
false)
744 const std::string &col_field,
745 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
746 const bool assemble_off)
756 const std::string &row_field,
const std::string &col_field,
757 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
758 const bool assemble_off)
768 const std::string &row_field,
const std::string &col_field,
769 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
778 const std::string &row_field,
const std::string &col_field,
779 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
780 const bool assemble_off)
792 const std::string &row_field,
const std::string &col_field,
793 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
794 const bool assemble_off)
811 std::vector<EntityHandle> &map_gauss_pts,
812 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
822 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
829 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
839 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
849 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
850 boost::shared_ptr<double> &e)
869 static boost::function<
double(
const double)>
f;
912 UnknownInterface **iface)
const;
923 boost::shared_ptr<FaceElementForcesAndSourcesCore>
contactRhs;
926 SmartPetscObj<DM>
dM;
970 template <
typename BC>
972 const std::string block_name,
const int nb_attributes) {
977 (boost::format(
"%s(.*)") % block_name).str()
982 std::vector<double> block_attributes;
983 CHKERR it->getAttributes(block_attributes);
984 if (block_attributes.size() != nb_attributes) {
986 "In block %s expected %d attributes, but given %d",
987 it->getName().c_str(), nb_attributes, block_attributes.size());
992 bc_vec_ptr->emplace_back(it->getName(), block_attributes, faces);
1017 boost::shared_ptr<TractionFreeBc> &bc_ptr,
1018 const std::string contact_set_name);
1035 const double sigma_y);
1040 const double sigma_y);
1045 const int tag,
const bool do_rhs,
const bool do_lhs,
1046 boost::shared_ptr<VolumeElementForcesAndSourcesCore> &fe);
1049 const int tag,
const bool add_elastic,
const bool add_material,
1050 boost::shared_ptr<VolumeElementForcesAndSourcesCore> &fe_rhs,
1051 boost::shared_ptr<VolumeElementForcesAndSourcesCore> &fe_lhs);
1055 boost::shared_ptr<FaceElementForcesAndSourcesCore> &fe_rhs,
1056 boost::shared_ptr<FaceElementForcesAndSourcesCore> &fe_lhs);
1060 boost::shared_ptr<ContactTree> &fe_contact_tree,
1061 boost::shared_ptr<FaceElementForcesAndSourcesCore> &fe_rhs,
1062 boost::shared_ptr<FaceElementForcesAndSourcesCore> &fe_lhs
1093 #endif //__ESHELBIAN_PLASTICITY_HPP__
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface refernce to pointer of interface.
#define CHK_MOAB_THROW(err, msg)
Check error code of MoAB function and throw MoFEM exception.
static double f_linear(const double v)
std::vector< BcDisp > BcDispVec
boost::shared_ptr< FaceElementForcesAndSourcesCore > contactRhs
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)
MatrixPtr getDivSigmaAtPts()
MatrixPtr getSmallWH1AtPts()
const std::string essentialBcElement
std::vector< TractionBc > TractionBcVec
MoFEMErrorCode addDMs(const BitRefLevel bit=BitRefLevel().set(0))
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
VectorBoundedArray< double, 3 > VectorDouble3
OpRotationBc(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, boost::shared_ptr< BcRotVec > &bc_rot_ptr)
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()
OpPostProcDataStructure(moab::Interface &post_proc_mesh, std::vector< EntityHandle > &map_gauss_pts, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
const std::string piolaStress
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &data)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
MatrixPtr getBigG0AtPts()
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
const std::string spatialH1Disp
FTensor::Tensor0< FTensor::PackPtr< double *, 1 > > DTensor0Ptr
OpCalculateStrainEnergy(const std::string field_name, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, boost::shared_ptr< double > &e)
MoFEMErrorCode setBaseVolumeElementOps(const int tag, const bool do_rhs, const bool do_lhs, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe)
MatrixDouble rotAxisDotAtPts
static double exponentBase
static double inv_dd_f_linear(const double v)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialPhysical_du_dP(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
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)
OpTractionBc(std::string row_field, FeTractionBc &bc_fe)
MatrixPtr getRotAxisDotAtPts()
MatrixDouble stretchTensorAtPts
MatrixDouble leviKirchhoffOmegaAtPts
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
MoFEMErrorCode integrateHencky(EntData &row_data, EntData &col_data)
MoFEMErrorCode addMaterial_Hencky(double E, double nu)
MoFEMErrorCode addBoundaryFiniteElement(const EntityHandle meshset=0)
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
MoFEMErrorCode setElasticElementToTs(DM dm)
std::vector< BcRot > BcRotVec
MoFEMErrorCode setElasticElementOps(const int tag)
boost::shared_ptr< PhysicalEquations > physicsPtr
material physical equations
MatrixDouble logStretchTotalTensorAtPts
static double d_f_linear(const double v)
OpSpatialEquilibrium(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const double alpha, const double rho)
static double dd_f_log(const double v)
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
MoFEMErrorCode integrate(EntData &data)
SmartPetscObj< DM > dmPrjSpatial
Projection spatial displacement.
OpSpatialConsistency_dP_domega(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off)
virtual MoFEMErrorCode evaluateLhs(EntData &data)=0
MoFEMErrorCode integratePolyconvexHencky(EntData &row_data, EntData &col_data)
boost::function< double()> ScaleOff
MoFEMErrorCode integrate(EntData &data)
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)
virtual MoFEMErrorCode postProc()=0
MatrixPtr getRotAxisAtPts()
MoFEMErrorCode integrate(EntData &data)
boost::shared_ptr< VolumeElementForcesAndSourcesCore > elasticFeLhs
MatrixPtr getApproxSigmaAtPts()
MoFEMErrorCode VecSetValues(Vec V, const EntitiesFieldData::EntData &data, const double *ptr, InsertMode iora)
Assemble PETSc vector.
MatrixDouble rotAxisAtPts
static enum RotSelector gradApperoximator
VectorBoundedArray< int, 3 > VectorInt3
Deprecated interface functions.
OpAssembleFace(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const char type, const bool assemble_symmetry)
boost::shared_ptr< MatrixDouble > MatrixPtr
MatrixDouble contactL2AtPts
OpSpatialRotation_domega_dBubble(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off)
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.
OpSpatialConsistencyDivTerm(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
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)
OpSpatialPrj_dx_dx(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
MoFEMErrorCode integrate(EntData &data)
MatrixDouble logStretchDotTensorAtPts
EntitiesFieldData::EntData EntData
MoFEMErrorCode postProcessResults(const int tag, const std::string file)
OpSpatialEquilibrium_dw_dP(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
#define CHKERR
Inline error check.
OpSpatialRotation_domega_dP(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off)
MoFEMErrorCode integrate(EntData &data)
virtual MoFEMErrorCode integrate(EntData &data)
virtual moab::Interface & get_moab()=0
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialPhysical_du_dBubble(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
const std::string skinElement
MatrixDouble approxPAtPts
MoFEMErrorCode integratePolyconvexHencky(EntData &data)
MatrixDouble adjointPdUdOmegaAtPts
static double d_f_log(const double v)
OpSpatialRotation(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
boost::shared_ptr< BcRotVec > bcRotPtr
OpSpatialPhysical(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const double alpha_u)
MoFEMErrorCode addVolumeFiniteElement(const EntityHandle meshset=0)
boost::shared_ptr< PhysicalEquations > physicsPtr
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
std::vector< Range > TractionFreeBc
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
static enum StretchSelector stretchSelector
SmartPetscObj< DM > dmElastic
Elastic problem.
const std::string materialGradient
boost::shared_ptr< FaceElementForcesAndSourcesCore > elasticBcLhs
boost::shared_ptr< ContactTree > contactTreeRhs
Make a contact tree.
FeTractionBc(MoFEM::Interface &m_field, const std::string field_name, boost::shared_ptr< TractionBcVec > &bc)
OpAssembleBasic(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry, ScaleOff scale_off=[]() { return 1;})
double precEpsContactDisp
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
OpSpatialPhysical_du_domega(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
static enum RotSelector rotSelector
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
FTensor::Tensor2< adouble, 3, 3 > ATensor2
MoFEMErrorCode integrateHencky(EntData &data)
MoFEMErrorCode addMaterial_HMHHStVenantKirchhoff(const int tape, const double lambda, const double mu, const double sigma_y)
static boost::function< double(const double)> f
MatrixDouble leviKirchhoffAtPts
OpSpatialPhysical_du_dx(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
boost::shared_ptr< BcDispVec > bcSpatialDispVecPtr
const VectorInt & getIndices() const
Get global indices of dofs on entity.
std::vector< boost::shared_ptr< ScalingMethod > > scalingMethodsVec
static boost::function< double(const double)> inv_d_f
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
VolumeElementForcesAndSourcesCore::UserDataOperator VolUserDataOperator
OpSpatialPrj_dx_dw(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
static DTensor3Ptr get_vecTensor3(std::vector< double > &v, const int nba)
OpCalculateRotationAndSpatialGradient(boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
BcDisp(std::string name, std::vector< double > &attr, Range &faces)
const std::string contactElement
MoFEMErrorCode MatSetValues< SchurL2Mats >(Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const MatrixDouble &mat, InsertMode iora)
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)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MatrixPtr getMatAxiatorDPtr()
MatrixPtr getLogStretchTensorAtPts()
MoFEMErrorCode integratePiola(EntData &data)
const std::string rotAxis
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
const std::string spatialL2Disp
boost::shared_ptr< BcDispVec > bcDispPtr
FaceElementForcesAndSourcesCore::UserDataOperator FaceUserDataOperator
virtual MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
constexpr auto field_name
boost::shared_ptr< TractionFreeBc > bcSpatialFreeTraction
MatrixPtr getLogStretchDotTensorAtPts()
MatrixPtr getMatDeviatorDPtr()
MoFEM::Interface & mField
const std::string bubbleField
FTensor::Tensor1< adouble, 3 > ATensor1
base class for all interface classes
static boost::function< double(const double)> inv_f
const double v
phase velocity of light in medium (cm/ns)
MatrixDouble wL2DotDotAtPts
OpSpatialRotation_domega_domega(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
static boost::shared_ptr< SetUpSchur > createSetUpSchur(MoFEM::Interface &m_field, SmartPetscObj< Mat > m, SmartPetscObj< Mat > p, EshelbianCore *ep_core_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
boost::shared_ptr< BcDispVec > bcDispPtr
MoFEMErrorCode integrate(EntData &data)
virtual MoFEMErrorCode setUp(KSP solver)=0
MoFEMErrorCode preProcess()
boost::shared_ptr< PhysicalEquations > physicalEquations
OpSpatialConsistencyP(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
const std::string elementVolumeName
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
OpAssembleFace(const std::string &field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const char type)
MatrixDouble diffStretchTensorAtPts
MatrixDouble hdOmegaAtPts
TractionBc(std::string name, std::vector< double > &attr, Range &faces)
ForcesAndSourcesCore::UserDataOperator UserDataOperator
UBlasVector< int > VectorInt
static DTensor0Ptr get_VecTensor0(std::vector< double > &v)
MatrixDouble divSigmaAtPts
MatrixPtr getSmallWGradH1AtPts()
MatrixDouble leviKirchhoffPAtPts
MatrixDouble diffRotMatAtPts
OpAssembleVolume(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry)
static double inv_d_f_linear(const double v)
MoFEMErrorCode integrate(EntData &row_data)
MatrixPtr getSmallWL2DotAtPts()
VectorDouble detStretchTensorAtPts
const FTensor::Tensor2< T, Dim, Dim > Vec
@ MOFEM_DATA_INCONSISTENCY
FTensor::Tensor1< double, 3 > DTensor1
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
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)
OpRotationBc_dx(const std::string &row_field_name, const std::string &col_field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, boost::shared_ptr< BcRotVec > &bc_rot_ptr)
UBlasVector< double > VectorDouble
MatrixDouble detStretchTensorAtPts_du
static boost::function< double(const double)> inv_dd_f
MatrixDouble wGradH1AtPts
static double inv_dd_f_log(const double v)
FTensor::Index< 'm', 3 > m
MoFEMErrorCode getOptions()
std::bitset< BITREFLEVEL_SIZE > BitRefLevel
Bit structure attached to each entity identifying to what mesh entity is attached.
MoFEMErrorCode integratePiola(EntData &row_data, EntData &col_data)
OpAssembleVolume(const std::string &field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
MoFEMErrorCode setContactElementOps(boost::shared_ptr< ContactTree > &fe_contact_tree, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_lhs)
OpDispBc(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, boost::shared_ptr< BcDispVec > &bc_disp_ptr, std::vector< boost::shared_ptr< ScalingMethod >> smv)
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< DataAtIntegrationPts > dataAtPts
data at integration pts
boost::shared_ptr< BcRotVec > bcRotPtr
MatrixPtr getSmallWL2AtPts()
MoFEMErrorCode getSpatialTractionBc()
MoFEMErrorCode postProcess()
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)
OpSpatialPrj(const std::string &row_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
virtual MoFEMErrorCode preProc()=0
FTensor::Tensor3< adouble, 3, 3, 3 > ATensor3
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 addMaterial_HMHMooneyRivlin(const int tape, const double alpha, const double beta, const double lambda, const double sigma_y)
boost::shared_ptr< double > energy
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
MatrixDouble K
local tangent matrix
const std::string materialL2Disp
OpSpatialPhysical_du_du(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const double alpha)
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
MoFEMErrorCode solveElastic(TS ts, Mat m, Vec f, Vec x)
const bool assembleSymmetry
std::vector< double > dependentVariablesPiola
const std::string eshelbyStress
const std::string tauField
PhysicalEquations()=delete
boost::shared_ptr< TractionBcVec > bcData
virtual MoFEMErrorCode recordTape(const int tag, DTensor2Ptr *t_h)=0
const std::string lambdaField
MatrixDouble adjointPdUdPAtPts
OpSpatialEquilibrium_dw_dw(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const double alpha, const double rho)
OpDispBc_dx(const std::string &row_field_name, const std::string &col_field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, boost::shared_ptr< BcDispVec > &bc_disp_ptr)
const std::string contactDisp
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
MoFEMErrorCode getSpatialRotationBc()
MoFEMErrorCode getSpatialDispBc()
[Getting norms]
const std::string naturalBcElement
OpSpatialConsistencyBubble(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
MoFEMErrorCode gettingNorms()
[Getting norms]
OpSpatialConsistency_dBubble_domega(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off)
MatrixDouble hdLogStretchAtPts
MoFEMErrorCode integrate(EntData &data)
MatrixPtr getContactL2AtPts()
MatrixDouble adjointPdUAtPts
PetscErrorCode PetscOptionsGetBool(PetscOptions *, const char pre[], const char name[], PetscBool *bval, PetscBool *set)
FTensor::Tensor3< FTensor::PackPtr< double *, 1 >, 3, 3, 3 > DTensor3Ptr