11constexpr AssemblyType
A = AssemblyType::SCHUR;
13#ifndef __ESHELBIAN_PLASTICITY_HPP__
14#define __ESHELBIAN_PLASTICITY_HPP__
42using EntData = EntitiesFieldData::EntData;
49 :
public boost::enable_shared_from_this<DataAtIntegrationPts> {
110 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
114 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
approxPAtPts);
118 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
divPAtPts);
122 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
divSigmaAtPts);
126 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wAtPts);
130 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wDotAtPts);
134 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wDotDotAtPts);
138 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
143 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
148 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
153 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
rotAxisAtPts);
157 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
162 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
GAtPts);
166 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
GAtPts);
170 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matD);
174 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
UAtPts);
207 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
208 boost::shared_ptr<PhysicalEquations> &physics_ptr) = 0;
221 &
v[S + 5], &
v[S + 6], &
v[S + 7], &
v[S + 8]);
233 const int A00 = nba * 0 + S0;
234 const int A01 = nba * 1 + S0;
235 const int A02 = nba * 2 + S0;
236 const int A10 = nba * 3 + S0;
237 const int A11 = nba * 4 + S0;
238 const int A12 = nba * 5 + S0;
239 const int A20 = nba * 6 + S0;
240 const int A21 = nba * 7 + S0;
241 const int A22 = nba * 8 + S0;
245 &
v[A00 + 0], &
v[A00 + 1], &
v[A00 + 2], &
v[A01 + 0], &
v[A01 + 1],
246 &
v[A01 + 2], &
v[A02 + 0], &
v[A02 + 1], &
v[A02 + 2],
248 &
v[A10 + 0], &
v[A10 + 1], &
v[A10 + 2], &
v[A11 + 0], &
v[A11 + 1],
249 &
v[A11 + 2], &
v[A12 + 0], &
v[A12 + 1], &
v[A12 + 2],
251 &
v[A20 + 0], &
v[A20 + 1], &
v[A20 + 2], &
v[A21 + 0], &
v[A21 + 1],
252 &
v[A21 + 2], &
v[A22 + 0], &
v[A22 + 1], &
v[A22 + 2]
328 OpJacobian(
const int tag,
const bool eval_rhs,
const bool eval_lhs,
329 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
330 boost::shared_ptr<PhysicalEquations> &physics_ptr)
346 boost::shared_ptr<DataAtIntegrationPts>
348 boost::shared_ptr<PhysicalEquations>
357 boost::shared_ptr<DataAtIntegrationPts>
361 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
366 const std::string &row_field,
const std::string &col_field,
367 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const char type,
368 const bool assemble_symmetry,
ScaleOff scale_off = []() {
return 1; })
369 :
T(row_field, col_field, type,
false),
dataAtPts(data_ptr),
393 double *vec_ptr = &*
nF.begin();
396 CHKERR VecSetValues(this->getTSf(), nb_dofs, ind_ptr, vec_ptr, ADD_VALUES);
413 virtual MoFEMErrorCode
assemble(
int row_side,
int col_side,
419 const auto row_nb_dofs = row_data.
getIndices().size();
420 const auto col_nb_dofs = col_data.
getIndices().size();
421 transposeK.resize(col_nb_dofs, row_nb_dofs,
false);
426 CHKERR MatSetValues<SchurL2Mats>(this->getTSA(), row_data, col_data,
K,
429 CHKERR MatSetValues<SchurL2Mats>(this->getTSA(), col_data, row_data,
458 CHKERR assemble(row_side, col_side, row_type, col_type, row_data, col_data);
465 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
470 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
471 const char type,
const bool assemble_symmetry)
473 type, assemble_symmetry) {}
478 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
483 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
484 const char type,
const bool assemble_symmetry)
486 type, assemble_symmetry) {}
490 boost::shared_ptr<DataAtIntegrationPts>
493 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
502 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
503 const double alpha,
const double rho)
511 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
519 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
520 const double alpha_u)
534 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
543 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
552 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
560 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
561 boost::shared_ptr<BcDispVec> &bc_disp_ptr)
569 const std::string &col_field_name,
570 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
571 boost::shared_ptr<BcDispVec> &bc_disp_ptr)
572 :
OpAssembleFace(row_field_name, col_field_name, data_ptr, OPROWCOL,
581 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
582 boost::shared_ptr<BcRotVec> &bc_rot_ptr)
590 const std::string &col_field_name,
591 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
592 boost::shared_ptr<BcRotVec> &bc_rot_ptr)
593 :
OpAssembleFace(row_field_name, col_field_name, data_ptr, OPROWCOL,
616 boost::shared_ptr<TractionBcVec> &bc)
632 const std::string &col_field,
633 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
634 const bool assemble_off =
false)
646 const std::string &col_field,
647 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
648 const double alpha,
const double rho)
659 const std::string &col_field,
660 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
673 const std::string &col_field,
674 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
675 const bool assemble_off =
false)
686 const std::string &row_field,
const std::string &col_field,
687 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
688 const bool assemble_off =
false)
699 const std::string &col_field,
700 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
701 const bool assemble_off =
false)
711 const std::string &col_field,
712 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
713 const bool assemble_off =
false)
723 const std::string &col_field,
724 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
725 const bool assemble_off)
735 const std::string &row_field,
const std::string &col_field,
736 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
737 const bool assemble_off)
747 const std::string &row_field,
const std::string &col_field,
748 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
757 const std::string &col_field,
758 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
759 const bool assemble_off =
false)
769 const std::string &row_field,
const std::string &col_field,
770 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
771 const bool assemble_off)
783 const std::string &row_field,
const std::string &col_field,
784 boost::shared_ptr<DataAtIntegrationPts> &data_ptr,
785 const bool assemble_off)
802 std::vector<EntityHandle> &map_gauss_pts,
804 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
814 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
821 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
831 boost::shared_ptr<DataAtIntegrationPts> &data_ptr)
841 boost::shared_ptr<DataAtIntegrationPts> data_at_pts,
842 boost::shared_ptr<double> &e)
847 EntitiesFieldData::EntData &data);
862 MoFEMErrorCode
query_interface(boost::typeindex::type_index type_index,
863 UnknownInterface **iface)
const;
874 boost::shared_ptr<FaceElementForcesAndSourcesCore>
contactRhs;
876 SmartPetscObj<DM>
dM;
917 template <
typename BC>
918 MoFEMErrorCode
getBc(boost::shared_ptr<BC> &bc_vec_ptr,
919 const std::string block_name,
const int nb_attributes) {
924 (boost::format(
"%s(.*)") % block_name).str()
929 std::vector<double> block_attributes;
930 CHKERR it->getAttributes(block_attributes);
931 if (block_attributes.size() != nb_attributes) {
933 "In block %s expected %d attributes, but given %d",
934 it->getName().c_str(), nb_attributes, block_attributes.size());
939 bc_vec_ptr->emplace_back(it->getName(), block_attributes, faces);
964 boost::shared_ptr<TractionFreeBc> &bc_ptr,
965 const std::string contact_set_name);
967 inline MoFEMErrorCode
977 MoFEMErrorCode
addDMs(
const BitRefLevel
bit = BitRefLevel().set(0));
982 const double sigma_y);
987 const double sigma_y);
992 const int tag,
const bool do_rhs,
const bool do_lhs,
993 boost::shared_ptr<VolumeElementForcesAndSourcesCore> &fe);
996 const int tag,
const bool add_elastic,
const bool add_material,
997 boost::shared_ptr<VolumeElementForcesAndSourcesCore> &fe_rhs,
998 boost::shared_ptr<VolumeElementForcesAndSourcesCore> &fe_lhs);
1002 boost::shared_ptr<FaceElementForcesAndSourcesCore> &fe_rhs,
1003 boost::shared_ptr<FaceElementForcesAndSourcesCore> &fe_lhs);
1006 boost::shared_ptr<FaceElementForcesAndSourcesCore> &fe_rhs,
1007 boost::shared_ptr<FaceElementForcesAndSourcesCore> &fe_lhs);
1024 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 ...
@ 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)
static double exponentBase
std::vector< BcDisp > BcDispVec
double dd_f_linear(const double v)
boost::shared_ptr< MatrixDouble > MatrixPtr
double f_log(const double v)
static boost::function< double(const double)> d_f
double d_f_linear(const double v)
VolumeElementForcesAndSourcesCore::UserDataOperator VolUserDataOperator
static boost::function< double(const double)> f
double dd_f_log(const double v)
double f_linear(const double v)
static boost::function< double(const double)> dd_f
std::vector< Range > TractionFreeBc
ForcesAndSourcesCore::UserDataOperator UserDataOperator
double d_f_log(const double v)
static enum RotSelector rotSelector
std::vector< BcRot > BcRotVec
std::vector< TractionBc > TractionBcVec
FaceElementForcesAndSourcesCore::UserDataOperator FaceUserDataOperator
boost::shared_ptr< VectorDouble > VectorPtr
constexpr auto field_name
MatrixDouble detStreachTensorAtPts_du
MatrixDouble approxSigmaAtPts
MatrixPtr getSmallWDotAtPts()
MatrixPtr getLogStreachDotTensorAtPts()
MatrixPtr getBigG0AtPts()
MatrixDouble rotAxisDotAtPts
MatrixDouble diff2RotMatAtPts
MatrixPtr getRotAxisAtPts()
MatrixPtr getSmallWAtPts()
MatrixPtr getRotAxisDotAtPts()
MatrixDouble diffRotMatAtPts
MatrixDouble approxPAtPts
MatrixPtr getLogStreachTensorAtPts()
MatrixDouble divSigmaAtPts
MatrixPtr getApproxSigmaAtPts()
MatrixPtr getApproxPAtPts()
MatrixDouble streachTensorAtPts
MatrixDouble wDotDotAtPts
MatrixPtr getDivSigmaAtPts()
MatrixDouble logStreachTensorAtPts
MatrixPtr getSmallWDotDotAtPts()
MatrixDouble logStreachDotTensorAtPts
VectorDouble detStreachTensorAtPts
MatrixDouble diffStreachTensorAtPts
MatrixDouble rotAxisAtPts
boost::shared_ptr< PhysicalEquations > physicsPtr
MatrixPtr getStreachTensorAtPts()
static boost::shared_ptr< SetUpSchur > createSetUpSchur(MoFEM::Interface &m_field, SmartPetscObj< Mat > m, SmartPetscObj< Mat > p, EshelbianCore *ep_core_ptr)
virtual MoFEMErrorCode postProc()=0
virtual MoFEMErrorCode setUp(KSP solver)=0
virtual MoFEMErrorCode preProc()=0
MoFEMErrorCode getSpatialDispBc()
MoFEMErrorCode query_interface(boost::typeindex::type_index type_index, UnknownInterface **iface) const
Getting interface of core database.
const std::string lambdaField
boost::shared_ptr< FaceElementForcesAndSourcesCore > elasticBcLhs
const std::string tauField
boost::shared_ptr< VolumeElementForcesAndSourcesCore > elasticFeLhs
MoFEMErrorCode addMaterial_Hencky(double E, double nu)
const std::string eshelbyStress
MoFEMErrorCode postProcessResults(const int tag, const std::string file)
MoFEMErrorCode addBoundaryFiniteElement(const EntityHandle meshset=0)
const std::string piolaStress
MoFEMErrorCode addDMs(const BitRefLevel bit=BitRefLevel().set(0))
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)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
const std::string materialL2Disp
const std::string essentialBcElement
const std::string bubbleField
MoFEMErrorCode solveElastic(TS ts, Mat m, Vec f, Vec x)
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 setContactElementOps(boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_lhs)
MoFEMErrorCode setFaceElementOps(const bool add_elastic, const bool add_material, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_lhs)
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.
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
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
MoFEMErrorCode gettingNorms()
[Getting norms]
MoFEMErrorCode getSpatialTractionBc()
boost::shared_ptr< TractionFreeBc > bcSpatialFreeTraction
boost::shared_ptr< TractionBcVec > bcSpatialTraction
MoFEMErrorCode addFields(const EntityHandle meshset=0)
const std::string naturalBcElement
const std::string streachTensor
MoFEMErrorCode getOptions()
const std::string rotAxis
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.
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)
MoFEMErrorCode integrate(EntData &data)
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
OpPostProcDataStructure(moab::Interface &post_proc_mesh, std::vector< EntityHandle > &map_gauss_pts, const std::string field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
std::vector< EntityHandle > & mapGaussPts
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 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 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)
OpSpatialRotation_domega_du(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 &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
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.