35#ifndef druckerpragerplasticitysm_h
36#define druckerpragerplasticitysm_h
47#define _IFT_DruckerPragerPlasticitySM_Name "druckerprager"
48#define _IFT_DruckerPragerPlasticitySM_iys "iys"
49#define _IFT_DruckerPragerPlasticitySM_alpha "alpha"
50#define _IFT_DruckerPragerPlasticitySM_alphapsi "alphapsi"
51#define _IFT_DruckerPragerPlasticitySM_ht "ht"
52#define _IFT_DruckerPragerPlasticitySM_hm "hm"
53#define _IFT_DruckerPragerPlasticitySM_kc "kc"
54#define _IFT_DruckerPragerPlasticitySM_lys "lys"
55#define _IFT_DruckerPragerPlasticitySM_yieldtol "yieldtol"
56#define _IFT_DruckerPragerPlasticitySM_newtoniter "newtoniter"
85 int state_flag = DruckerPragerPlasticitySMStatus :: DP_Elastic;
99 const char *
giveClassName()
const override {
return "DruckerPragerPlasticitySMStatus"; }
111 return plasticStrain;
144 return plasticStrain;
235 const char *
giveClassName()
const override {
return "DruckerPragerPlasticitySM"; }
257 bool checkForVertexCase(
double eM,
double gM,
double kM,
double trialStressJTwo,
double volumetricStress,
double tempKappa)
const;
264 void performRegularReturn(
double eM,
double gM,
double kM,
double trialStressJTwo,
FloatArrayF<6> &stressDeviator,
double &volumetricStress,
double &tempKappa)
const;
271 void performVertexReturn(
double eM,
double gM,
double kM,
double trialStressJTwo,
FloatArrayF<6> &stressDeviator,
double &volumetricStress,
double &tempKappa,
double volumetricElasticTrialStrain,
double kappa)
const;
326 return LEMaterial.giveThermalDilatationVector(gp, tStep);
void restoreContext(DataStream &stream, ContextMode mode) override
double giveVolumetricPlasticStrain() const
state_flag_values
Values of history variable state_flag.
double tempVolumetricPlasticStrain
void letTempVolumetricPlasticStrainBe(double v)
DruckerPragerPlasticitySMStatus(GaussPoint *gp)
Constructor.
int giveStateFlag() const
double kappa
Hardening variable.
const FloatArrayF< 6 > & giveTempPlasticStrainDeviator() const
double giveTempVolumetricPlasticStrain() const
double volumetricPlasticStrain
Volumetric plastic strain.
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
FloatArrayF< 6 > givePlasticStrainVector() const
double giveTempKappa() const
void saveContext(DataStream &stream, ContextMode mode) override
int state_flag
Indicates the state (i.e. elastic, yielding, vertex, unloading) of the Gauss point.
void updateYourself(TimeStep *tStep) override
const FloatArrayF< 6 > & givePlasticStrainDeviator() const
void letTempStateFlagBe(int v)
int giveTempStateFlag() const
void initTempStatus() override
void letTempPlasticStrainDeviatorBe(const FloatArrayF< 6 > &v)
void letTempKappaBe(double v)
FloatArrayF< 6 > plasticStrainDeviator
Deviatoric of plastic strain.
const char * giveClassName() const override
FloatArrayF< 6 > giveTempPlasticStrainVector() const
FloatArrayF< 6 > tempPlasticStrainDeviator
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
const char * giveClassName() const override
DruckerPragerPlasticitySM(int n, Domain *d)
Constructor.
double initialYieldStress
Parameter of all three laws, this is the initial value of the yield stress in pure shear.
void initializeFrom(InputRecord &ir) override
double computeYieldValue(double meanStress, double JTwo, double kappa, double eM) const
int newtonIter
Maximum number of iterations for stress return.
void performVertexReturn(double eM, double gM, double kM, double trialStressJTwo, FloatArrayF< 6 > &stressDeviator, double &volumetricStress, double &tempKappa, double volumetricElasticTrialStrain, double kappa) const
double kFactor
Scalar factor between rate of plastic multiplier and rate of hardening variable.
FloatArrayF< 6 > giveThermalDilatationVector(GaussPoint *gp, TimeStep *tStep) const override
double yieldTol
Yield tolerance.
virtual double computeYieldStressPrime(double kappa, double eM) const
FloatMatrixF< 6, 6 > giveVertexAlgorithmicStiffMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
FloatArrayF< 6 > giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
double limitYieldStress
Parameter of the exponential hardening law.
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
double predictRelativeComputationalCost(GaussPoint *gp) override
double hardeningModulus
Hardening modulus normalized with the elastic modulus, parameter of the linear hardening/softening la...
bool checkForVertexCase(double eM, double gM, double kM, double trialStressJTwo, double volumetricStress, double tempKappa) const
FloatMatrixF< 6, 6 > giveRegAlgorithmicStiffMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const
double alpha
Friction coefficient, parameter of the yield criterion.
state_flag_values
Values of history variable state_flag.
double alphaPsi
Dilatancy coefficient, parameter of the flow rule.
double predictRelativeRedistributionCost(GaussPoint *gp) override
void performLocalStressReturn(GaussPoint *gp, const FloatArrayF< 6 > &strain) const
double kappaC
Parameter of the exponential laws.
const char * giveInputRecordName() const override
void performRegularReturn(double eM, double gM, double kM, double trialStressJTwo, FloatArrayF< 6 > &stressDeviator, double &volumetricStress, double &tempKappa) const
IsotropicLinearElasticMaterial LEMaterial
Associated linear elastic material.
virtual double computeYieldStressInShear(double kappa, double eM) const
GaussPoint * gp
Associated integration point.
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
StructuralMaterial(int n, Domain *d)
#define _IFT_DruckerPragerPlasticitySM_Name