11constexpr AssemblyType A = AssemblyType::SCHUR;
13#ifndef __ESHELBIAN_PLASTICITY_HPP__
14#define __ESHELBIAN_PLASTICITY_HPP__
26using EntData = EntitiesFieldData::EntData;
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; })
368 : T(row_field, col_field, type, false),
dataAtPts(data_ptr),
392 double *vec_ptr = &*
nF.begin();
395 CHKERR VecSetValues(this->getTSf(), nb_dofs, ind_ptr, vec_ptr, ADD_VALUES);
412 virtual MoFEMErrorCode
assemble(
int row_side,
int col_side,
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);
425 CHKERR MatSetValues<SchurL2Mats>(this->getTSA(), row_data, col_data,
K,
428 CHKERR MatSetValues<SchurL2Mats>(this->getTSA(), col_data, 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)
522 CHK_MOAB_THROW(PetscOptionsGetBool(PETSC_NULL,
"",
"-poly_convex",
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,
677 CHK_MOAB_THROW(PetscOptionsGetBool(PETSC_NULL,
"",
"-poly_convex",
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)
855 EntitiesFieldData::EntData &data);
869 static boost::function<
double(
const double)>
f;
911 MoFEMErrorCode
query_interface(boost::typeindex::type_index type_index,
912 UnknownInterface **iface)
const;
923 boost::shared_ptr<FaceElementForcesAndSourcesCore>
contactRhs;
926 SmartPetscObj<DM>
dM;
970 template <
typename BC>
971 MoFEMErrorCode
getBc(boost::shared_ptr<BC> &bc_vec_ptr,
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);
1020 inline MoFEMErrorCode
1030 MoFEMErrorCode
addDMs(
const BitRefLevel
bit = BitRefLevel().set(0));
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
1081 virtual MoFEMErrorCode
setUp(KSP solver) = 0;
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define CHK_MOAB_THROW(err, msg)
Check error code of MoAB function and throw MoFEM exception.
@ MOFEM_DATA_INCONSISTENCY
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
FTensor::Index< 'm', SPACE_DIM > m
const double v
phase velocity of light in medium (cm/ns)
std::vector< BcDisp > BcDispVec
boost::shared_ptr< VectorDouble > VectorPtr
FaceElementForcesAndSourcesCore::UserDataOperator FaceUserDataOperator
ForcesAndSourcesCore::UserDataOperator UserDataOperator
std::vector< Range > TractionFreeBc
VolumeElementForcesAndSourcesCore::UserDataOperator VolUserDataOperator
std::vector< BcRot > BcRotVec
enum RotSelector EshelbianCore
std::vector< TractionBc > TractionBcVec
boost::shared_ptr< MatrixDouble > MatrixPtr
constexpr auto field_name
BcDisp(std::string name, std::vector< double > &attr, Range &faces)
BcRot(std::string name, std::vector< double > &attr, Range &faces)
MatrixDouble leviKirchhoffOmegaAtPts
MatrixDouble approxSigmaAtPts
MatrixDouble diffStretchTensorAtPts
MatrixPtr getBigG0AtPts()
MatrixPtr getLogStretchTensorAtPts()
MatrixDouble matDeviatorD
MatrixDouble wL2DotDotAtPts
MatrixDouble logStretchTotalTensorAtPts
MatrixDouble hdOmegaAtPts
MatrixDouble rotAxisDotAtPts
MatrixDouble diff2RotMatAtPts
MatrixDouble leviKirchhoffPAtPts
MatrixDouble stretchTensorAtPts
MatrixPtr getSmallWL2AtPts()
MatrixDouble logStretchDotTensorAtPts
MatrixPtr getRotAxisAtPts()
VectorDouble detStretchTensorAtPts
MatrixPtr getSmallWL2DotDotAtPts()
MatrixDouble adjointPdUdPAtPts
MatrixDouble adjointPdstretchAtPts
MatrixPtr getRotAxisDotAtPts()
MatrixPtr getSmallWGradH1AtPts()
MatrixPtr getMatAxiatorDPtr()
MatrixDouble diffRotMatAtPts
MatrixDouble approxPAtPts
MatrixPtr getSmallWH1AtPts()
MatrixPtr getLogStretchDotTensorAtPts()
MatrixDouble divSigmaAtPts
MatrixPtr getContactL2AtPts()
MatrixPtr getApproxSigmaAtPts()
MatrixPtr getApproxPAtPts()
MatrixPtr getStretchTensorAtPts()
MatrixPtr getMatDeviatorDPtr()
MatrixDouble hdLogStretchAtPts
MatrixPtr getSmallWL2DotAtPts()
MatrixPtr getDivSigmaAtPts()
MatrixDouble adjointPdUAtPts
MatrixDouble logStretchTensorAtPts
MatrixDouble wGradH1AtPts
MatrixDouble leviKirchhoffAtPts
MatrixDouble adjointPdUdOmegaAtPts
MatrixDouble detStretchTensorAtPts_du
MatrixDouble rotAxisAtPts
boost::shared_ptr< PhysicalEquations > physicsPtr
MatrixDouble contactL2AtPts
virtual MoFEMErrorCode postProc()=0
virtual MoFEMErrorCode setUp(KSP solver)=0
virtual MoFEMErrorCode preProc()=0
static boost::shared_ptr< SetUpSchur > createSetUpSchur(MoFEM::Interface &m_field, SmartPetscObj< Mat > m, SmartPetscObj< Mat > p, EshelbianCore *ep_core_ptr)
static double inv_d_f_linear(const double v)
MoFEMErrorCode getSpatialDispBc()
[Getting norms]
double precEpsContactDisp
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, UnknownInterface **iface) const
Getting interface of core database.
static boost::function< double(const double)> dd_f
const std::string lambdaField
boost::shared_ptr< FaceElementForcesAndSourcesCore > elasticBcLhs
const std::string contactDisp
const std::string tauField
static enum RotSelector gradApperoximator
boost::shared_ptr< VolumeElementForcesAndSourcesCore > elasticFeLhs
MoFEMErrorCode addMaterial_Hencky(double E, double nu)
static boost::function< double(const double)> inv_f
static boost::function< double(const double)> inv_dd_f
const std::string eshelbyStress
MoFEMErrorCode postProcessResults(const int tag, const std::string file)
MoFEMErrorCode addBoundaryFiniteElement(const EntityHandle meshset=0)
const std::string piolaStress
static boost::function< double(const double)> inv_d_f
MoFEMErrorCode addDMs(const BitRefLevel bit=BitRefLevel().set(0))
static double inv_f_log(const double v)
MoFEMErrorCode addMaterial_HMHHStVenantKirchhoff(const int tape, const double lambda, const double mu, const double sigma_y)
boost::shared_ptr< VolumeElementForcesAndSourcesCore > elasticFeRhs
MoFEMErrorCode setElasticElementOps(const int tag)
static double inv_d_f_log(const double v)
static double d_f_linear(const double v)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
const std::string materialL2Disp
static double dd_f_log(const double v)
const std::string essentialBcElement
const std::string bubbleField
MoFEMErrorCode setContactElementOps(boost::shared_ptr< ContactTree > &fe_contact_tree, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_lhs)
MoFEMErrorCode solveElastic(TS ts, Mat m, Vec f, Vec x)
static enum StretchSelector stretchSelector
static double inv_dd_f_log(const double v)
static boost::function< double(const double)> d_f
MoFEMErrorCode getSpatialTractionFreeBc(const EntityHandle meshset=0)
MoFEMErrorCode getBc(boost::shared_ptr< BC > &bc_vec_ptr, const std::string block_name, const int nb_attributes)
MoFEMErrorCode setBaseVolumeElementOps(const int tag, const bool do_rhs, const bool do_lhs, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe)
boost::shared_ptr< BcRotVec > bcSpatialRotationVecPtr
MoFEMErrorCode setFaceElementOps(const bool add_elastic, const bool add_material, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_lhs)
static enum RotSelector rotSelector
MoFEMErrorCode addMaterial_HMHMooneyRivlin(const int tape, const double alpha, const double beta, const double lambda, const double sigma_y)
SmartPetscObj< DM > dM
Coupled problem all fields.
static double d_f_log(const double v)
MoFEMErrorCode addVolumeFiniteElement(const EntityHandle meshset=0)
SmartPetscObj< DM > dmElastic
Elastic problem.
MoFEMErrorCode getSpatialRotationBc()
const std::string skinElement
boost::shared_ptr< BcDispVec > bcSpatialDispVecPtr
boost::shared_ptr< PhysicalEquations > physicalEquations
const std::string spatialL2Disp
const std::string spatialH1Disp
static double inv_dd_f_linear(const double v)
static boost::function< double(const double)> f
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)
boost::shared_ptr< FaceElementForcesAndSourcesCore > contactRhs
static double dd_f_linear(const double v)
MoFEMErrorCode gettingNorms()
[Getting norms]
MoFEMErrorCode getSpatialTractionBc()
boost::shared_ptr< TractionFreeBc > bcSpatialFreeTraction
static double f_linear(const double v)
static double exponentBase
boost::shared_ptr< TractionBcVec > bcSpatialTraction
MoFEMErrorCode addFields(const EntityHandle meshset=0)
static double f_log(const double v)
const std::string naturalBcElement
const std::string stretchTensor
MoFEMErrorCode getOptions()
const std::string rotAxis
boost::shared_ptr< ContactTree > contactTreeRhs
Make a contact tree.
MoFEMErrorCode setElasticElementToTs(DM dm)
const std::string elementVolumeName
boost::shared_ptr< FaceElementForcesAndSourcesCore > elasticBcRhs
const std::string materialGradient
SmartPetscObj< DM > dmPrjSpatial
Projection spatial displacement.
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.
static double inv_f_linear(const double v)
const std::string contactElement
MoFEM::Interface & mField
MoFEMErrorCode preProcess()
boost::shared_ptr< TractionBcVec > bcData
MoFEM::Interface & mField
FeTractionBc(MoFEM::Interface &m_field, const std::string field_name, boost::shared_ptr< TractionBcVec > &bc)
MoFEMErrorCode postProcess()
virtual MoFEMErrorCode assemble(EntData &data)
const bool assembleSymmetry
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
virtual MoFEMErrorCode integrate(int row_side, EntityType row_type, EntData &data)
virtual MoFEMErrorCode integrate(EntData &data)
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;})
virtual MoFEMErrorCode assemble(int row_side, EntityType row_type, EntData &data)
MatrixDouble K
local tangent matrix
VectorDouble nF
local right hand side vector
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
virtual MoFEMErrorCode assemble(int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
virtual MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
OpAssembleBasic(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
boost::function< double()> ScaleOff
OpAssembleFace(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const char type, const bool assemble_symmetry)
OpAssembleFace(const std::string &field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const char type)
OpAssembleVolume(const std::string &field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
OpAssembleVolume(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry)
OpCalculateRotationAndSpatialGradient(boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
OpCalculateStrainEnergy(const std::string field_name, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, boost::shared_ptr< double > &e)
boost::shared_ptr< double > energy
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
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)
boost::shared_ptr< BcDispVec > bcDispPtr
boost::shared_ptr< BcDispVec > bcDispPtr
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 integrate(EntData &data)
std::vector< boost::shared_ptr< ScalingMethod > > scalingMethodsVec
boost::shared_ptr< PhysicalEquations > physicsPtr
material physical equations
virtual MoFEMErrorCode evaluateRhs(EntData &data)=0
OpJacobian(const int tag, const bool eval_rhs, const bool eval_lhs, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, boost::shared_ptr< PhysicalEquations > &physics_ptr)
virtual MoFEMErrorCode evaluateLhs(EntData &data)=0
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
moab::Interface & postProcMesh
std::vector< EntityHandle > & mapGaussPts
OpPostProcDataStructure(moab::Interface &post_proc_mesh, std::vector< EntityHandle > &map_gauss_pts, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
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)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< BcRotVec > bcRotPtr
MoFEMErrorCode integrate(EntData &data)
OpRotationBc(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, boost::shared_ptr< BcRotVec > &bc_rot_ptr)
boost::shared_ptr< BcRotVec > bcRotPtr
OpSpatialConsistency_dBubble_domega(const std::string &row_field, const 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)
OpSpatialConsistency_dP_domega(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off)
MoFEMErrorCode integrate(EntData &data)
OpSpatialConsistencyBubble(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
OpSpatialConsistencyDivTerm(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
MoFEMErrorCode integrate(EntData &data)
MoFEMErrorCode integrate(EntData &data)
OpSpatialConsistencyP(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialEquilibrium_dw_dP(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
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)
MoFEMErrorCode integrate(EntData &data)
OpSpatialEquilibrium(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const double alpha, const double rho)
OpSpatialPhysical_du_dBubble(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
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)
OpSpatialPhysical_du_domega(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrateHencky(EntData &row_data, EntData &col_data)
OpSpatialPhysical_du_du(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const double alpha)
MoFEMErrorCode integratePiola(EntData &row_data, EntData &col_data)
MoFEMErrorCode integratePolyconvexHencky(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialPhysical_du_dx(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
MoFEMErrorCode integratePiola(EntData &data)
MoFEMErrorCode integratePolyconvexHencky(EntData &data)
MoFEMErrorCode integrate(EntData &data)
MoFEMErrorCode integrateHencky(EntData &data)
OpSpatialPhysical(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const double alpha_u)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialPrj_dx_dw(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
OpSpatialPrj_dx_dx(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data)
OpSpatialPrj(const std::string &row_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
OpSpatialRotation_domega_dBubble(const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
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 &row_data, EntData &col_data)
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)
MoFEMErrorCode integrate(EntData &data)
OpSpatialRotation(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
OpTractionBc(std::string row_field, FeTractionBc &bc_fe)
FTensor::Tensor3< double, 3, 3, 3 > DTensor3
PhysicalEquations()=delete
FTensor::Tensor3< FTensor::PackPtr< double *, 1 >, 3, 3, 3 > DTensor3Ptr
FTensor::Tensor2< FTensor::PackPtr< double *, 1 >, 3, 3 > DTensor2Ptr
FTensor::Tensor1< double, 3 > DTensor1
static DTensor3Ptr get_vecTensor3(std::vector< double > &v, const int nba)
FTensor::Tensor2< adouble, 3, 3 > ATensor2
FTensor::Tensor2< double, 3, 3 > DTensor2
PhysicalEquations(const int size_active, const int size_dependent)
std::vector< double > dependentVariablesPiolaDirevatives
static DTensor2Ptr get_VecTensor2(std::vector< double > &v)
FTensor::Tensor1< adouble, 3 > ATensor1
FTensor::Tensor3< adouble, 3, 3, 3 > ATensor3
virtual MoFEMErrorCode recordTape(const int tag, DTensor2Ptr *t_h)=0
FTensor::Tensor0< FTensor::PackPtr< double *, 1 > > DTensor0Ptr
virtual ~PhysicalEquations()=default
std::vector< double > activeVariables
static DTensor0Ptr get_VecTensor0(std::vector< double > &v)
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
std::vector< double > dependentVariablesPiola
TractionBc(std::string name, std::vector< double > &attr, Range &faces)
virtual moab::Interface & get_moab()=0
Deprecated interface functions.
Data on single entity (This is passed as argument to DataOperator::doWork)
const VectorInt & getIndices() const
Get global indices of dofs on entity.
base class for all interface classes
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface refernce to pointer of interface.