306#ifndef __SMALL_STRAIN_PLASTICITY_HPP
307#define __SMALL_STRAIN_PLASTICITY_HPP
310 #error "MoFEM need to be compiled with ADOL-C"
402 vector<VectorDouble > &values_at_gauss_pts,
403 vector<MatrixDouble > &gardient_at_gauss_pts
409 int side,
EntityType type,DataForcesAndSourcesCore::EntData &data
428 int side,
EntityType type,DataForcesAndSourcesCore::EntData &data
434 PetscErrorCode
makeB(
const MatrixAdaptor &diffN,MatrixDouble &
B);
435 PetscErrorCode
addVolumetricB(
const MatrixAdaptor &diffN,MatrixDouble &volB,
double alpha);
451 int side,
EntityType type,DataForcesAndSourcesCore::EntData &data
470 int row_side,
int col_side,
472 DataForcesAndSourcesCore::EntData &row_data,
473 DataForcesAndSourcesCore::EntData &col_data
496 ublas::symmetric_matrix<double,ublas::lower>
C,
D;
521 virtual PetscErrorCode
rEcordW();
523 virtual PetscErrorCode
rEcordY();
525 virtual PetscErrorCode
rEcordH();
529 virtual PetscErrorCode
pLayW();
533 virtual PetscErrorCode
pLayY();
538 virtual PetscErrorCode
pLayH();
541 ublas::matrix<double,ublas::column_major>
dataA;
576 "Not implemented (overload class and implement this function)"
578 PetscFunctionReturn(0);
586 "Not implemented (overload class and implement this function)"
588 PetscFunctionReturn(0);
596 "Not implemented (overload class and implement this function)"
598 PetscFunctionReturn(0);
619 bool is_linear =
true
635 const EntityHandle tet,
const int nb_gauss_pts,
const int nb_internal_variables
639 int side,
EntityType type,DataForcesAndSourcesCore::EntData &data
ForcesAndSourcesCore::UserDataOperator UserDataOperator
PetscErrorCode SmallStrainPlasticityfRes(SNES snes, Vec chi, Vec r, void *ctx)
PetscErrorCode SmallStrainPlasticityfJac(SNES snes, Vec chi, Mat A, Mat, void *ctx)
implementation of Data Operators for Forces and Sources
constexpr auto field_name
Deprecated interface functions.
@ OPROW
operator doWork function is executed on FE rows
Volume finite element base.
VolumeElementForcesAndSourcesCore(Interface &m_field, const EntityType type=MBTET)
Closest point projection algorithm.
ublas::matrix< double, ublas::column_major > dataA
virtual PetscErrorCode cAlculateA()
VectorDouble activeVariablesW
ublas::symmetric_matrix< double, ublas::lower > C
VectorAdaptor partialYSigma
VectorDouble internalVariables0
ublas::vector< adouble > a_sTress
ublas::symmetric_matrix< double, ublas::lower > partial2HSigma
VectorAdaptor partialHSigma
VectorAdaptor partialYFlux
virtual PetscErrorCode pLayY_NoGradient()
PetscErrorCode consistentTangent()
ublas::vector< adouble > a_plasticStrain
virtual PetscErrorCode flowPotential()
virtual PetscErrorCode evaluatePotentials()
virtual PetscErrorCode pLayH()
PetscErrorCode snesCreate()
VectorDouble plasticStrain
ublas::vector< adouble > a_internalFluxes
virtual PetscErrorCode createMatAVecR()
ublas::vector< adouble > a_sTrain
virtual PetscErrorCode pLayY()
ublas::vector< adouble > a_internalVariables
VectorAdaptor partialHFlux
virtual PetscErrorCode pLayW_NoHessian()
virtual PetscErrorCode destroyMatAVecR()
virtual PetscErrorCode pLayW()
PetscErrorCode solveColasetProjection()
VectorAdaptor internalFluxes
friend PetscErrorCode SmallStrainPlasticityfJac(SNES, Vec, Mat, Mat, void *ctx)
VectorDouble plasticStrain0
virtual PetscErrorCode rEcordW()
virtual PetscErrorCode rEcordH()
VectorDouble internalVariables
SNESLineSearch lineSearch
virtual PetscErrorCode freeHemholtzEnergy()
ublas::symmetric_matrix< double, ublas::lower > partial2HFlux
VectorDouble activeVariablesYH
MatrixDouble partialWStrainPlasticStrain
virtual PetscErrorCode setActiveVariablesW()
virtual PetscErrorCode yieldFunction()
virtual PetscErrorCode cAlculateR(Vec R)
ublas::symmetric_matrix< double, ublas::lower > D
friend PetscErrorCode SmallStrainPlasticityfRes(SNES, Vec, Vec, void *ctx)
virtual PetscErrorCode rEcordY()
PetscErrorCode snesDestroy()
virtual PetscErrorCode setActiveVariablesYH()
MatrixDouble partial2HSigmaFlux
common data used by volume elements
vector< VectorDouble > plasticStrain
vector< double > deltaGamma
map< string, vector< MatrixDouble > > gradAtGaussPts
double * plasticStrainPtr
vector< VectorDouble > internalVariables
vector< VectorDouble > internalFluxes
map< string, vector< VectorDouble > > dataAtGaussPts
vector< VectorDouble > sTress
double * internalVariablesPtr
vector< MatrixDouble > materialTangentOperator
int internalVariablesSize
PetscErrorCode makeB(const MatrixAdaptor &diffN, MatrixDouble &B)
PetscErrorCode addVolumetricB(const MatrixAdaptor &diffN, MatrixDouble &volB, double alpha)
definition of volume element
MyVolumeFE(MoFEM::Interface &m_field)
int getRule(int order)
it is used to calculate nb. of Gauss integration points
PetscErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, DataForcesAndSourcesCore::EntData &row_data, DataForcesAndSourcesCore::EntData &col_data)
PetscErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
ClosestPointProjection & cP
PetscErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
OpCalculateStress(MoFEM::Interface &m_field, string field_name, CommonData &common_data, ClosestPointProjection &cp, bool is_linear=true)
PetscErrorCode setTagsData(const EntityHandle tet, const int nb_gauss_pts, const int nb_internal_variables)
MoFEM::Interface & mField
PetscErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
operator calculating field data and gradients
vector< MatrixDouble > & gradientAtGaussPts
const EntityType zeroAtType
vector< VectorDouble > & valuesAtGaussPts
PetscErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
Small strain finite element implementation.
MyVolumeFE feRhs
calculate right hand side for tetrahedral elements
MoFEM::Interface & mField
PetscErrorCode createInternalVariablesTag()
SmallStrainPlasticity(MoFEM::Interface &m_field)