|
| v0.14.0
|
Go to the documentation of this file.
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
470 int row_side,
int col_side,
471 EntityType row_type,EntityType col_type,
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
646 #endif //__SMALL_STRAIN_PLASTICITY_HPP
friend PetscErrorCode SmallStrainPlasticityfRes(SNES, Vec, Vec, void *ctx)
int getRule(int order)
it is used to calculate nb. of Gauss integration points
virtual PetscErrorCode evaluatePotentials()
ClosestPointProjection & cP
vector< MatrixDouble > & gradientAtGaussPts
VectorDouble plasticStrain0
ublas::vector< adouble > a_plasticStrain
const EntityType zeroAtType
SNESLineSearch lineSearch
VectorDouble internalVariables0
virtual PetscErrorCode yieldFunction()
vector< VectorDouble > sTress
virtual PetscErrorCode setActiveVariablesW()
PetscErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
VectorAdaptor partialHFlux
virtual PetscErrorCode pLayH()
virtual PetscErrorCode destroyMatAVecR()
VectorDouble plasticStrain
OpGetCommonDataAtGaussPts(const string field_name, CommonData &common_data)
virtual PetscErrorCode rEcordH()
UBlasMatrix< double > MatrixDouble
vector< double > deltaGamma
Closest point projection algorithm.
SmallStrainPlasticity(MoFEM::Interface &m_field)
PetscErrorCode solveColasetProjection()
VectorAdaptor partialHSigma
virtual PetscErrorCode rEcordY()
ublas::symmetric_matrix< double, ublas::lower > D
OpUpdate(string field_name, CommonData &common_data)
ublas::matrix< double, ublas::column_major > dataA
VectorAdaptor partialYSigma
virtual PetscErrorCode pLayY_NoGradient()
ublas::symmetric_matrix< double, ublas::lower > partial2HFlux
PetscErrorCode snesCreate()
virtual PetscErrorCode createMatAVecR()
friend PetscErrorCode SmallStrainPlasticityfJac(SNES, Vec, Mat, Mat, void *ctx)
Deprecated interface functions.
PetscErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, DataForcesAndSourcesCore::EntData &row_data, DataForcesAndSourcesCore::EntData &col_data)
double * internalVariablesPtr
ublas::vector< adouble > a_internalFluxes
VolumeElementForcesAndSourcesCore(Interface &m_field, const EntityType type=MBTET)
int internalVariablesSize
VectorAdaptor internalFluxes
vector< VectorDouble > plasticStrain
MoFEM::Interface & mField
implementation of Data Operators for Forces and Sources
MatrixDouble partial2HSigmaFlux
MatrixDouble partialWStrainPlasticStrain
PetscErrorCode snesDestroy()
map< string, vector< MatrixDouble > > gradAtGaussPts
vector< VectorDouble > internalFluxes
PetscErrorCode SmallStrainPlasticityfJac(SNES, Vec, Mat, Mat, void *ctx)
VectorAdaptor partialYFlux
OpGetDataAtGaussPts(const string field_name, vector< VectorDouble > &values_at_gauss_pts, vector< MatrixDouble > &gardient_at_gauss_pts)
MyVolumeFE(MoFEM::Interface &m_field)
VectorDouble activeVariablesYH
OpAssembleLhs(string field_name, CommonData &common_data)
VectorDouble activeVariablesW
map< string, vector< VectorDouble > > dataAtGaussPts
vector< MatrixDouble > materialTangentOperator
virtual PetscErrorCode rEcordW()
ublas::vector< adouble > a_internalVariables
VectorShallowArrayAdaptor< double > VectorAdaptor
Small strain finite element implementation.
Volume finite element base.
ublas::symmetric_matrix< double, ublas::lower > partial2HSigma
virtual PetscErrorCode freeHemholtzEnergy()
vector< VectorDouble > & valuesAtGaussPts
PetscErrorCode addVolumetricB(const MatrixAdaptor &diffN, MatrixDouble &volB, double alpha)
OpAssembleRhs(string field_name, CommonData &common_data)
EntitiesFieldData::EntData EntData
constexpr auto field_name
ublas::vector< adouble > a_sTress
VectorDouble internalVariables
double * plasticStrainPtr
common data used by volume elements
virtual PetscErrorCode pLayW()
definition of volume element
virtual PetscErrorCode flowPotential()
virtual PetscErrorCode pLayW_NoHessian()
PetscErrorCode createInternalVariablesTag()
const FTensor::Tensor2< T, Dim, Dim > Vec
virtual PetscErrorCode cAlculateR(Vec R)
MoFEM::Interface & mField
PetscErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
operator calculating field data and gradients
virtual PetscErrorCode setActiveVariablesYH()
UBlasVector< double > VectorDouble
PetscErrorCode setTagsData(const EntityHandle tet, const int nb_gauss_pts, const int nb_internal_variables)
ublas::vector< adouble > a_sTrain
MatrixShallowArrayAdaptor< double > MatrixAdaptor
Matrix adaptor.
PetscErrorCode consistentTangent()
MyVolumeFE feRhs
calculate right hand side for tetrahedral elements
virtual PetscErrorCode pLayY()
PetscErrorCode makeB(const MatrixAdaptor &diffN, MatrixDouble &B)
virtual PetscErrorCode cAlculateA()
OpCalculateStress(MoFEM::Interface &m_field, string field_name, CommonData &common_data, ClosestPointProjection &cp, bool is_linear=true)
vector< VectorDouble > internalVariables
ublas::symmetric_matrix< double, ublas::lower > C
PetscErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
PetscErrorCode SmallStrainPlasticityfRes(SNES snes, Vec chi, Vec r, void *ctx)
PetscErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
@ OPROW
operator doWork function is executed on FE rows