cpp
double Prager_stress(const vec &v, const double &b, const double &n)
Returns the Prager equivalent stress σP, considering
considering the input stress σ, σVM is the Von Mises computed equivalent stress, and b and m are parameter that define the equivalent stress.
vec sigma = randu(6);
double b = 1.2;
double m = 0.5;
double sigma_Prager = Prager_stress(sigma, b, n);
vec dPrager_stress(const vec &v, const double &b, const double &n)
Returns the derivative of the Prager equivalent stress with respect to stress. It main use is to define evolution equations for strain based on an associated rule of a convex yield surface
vec sigma = randu(6); double b = 1.2; double m = 0.5; vec dsigma_Pragerdsigma = dPrager_stress(sigma, b, n);
double Tresca(const vec &v)
Returns the Tresca equivalent stress σT, considering
σT = σI − σIII,
where sigma{I} and sigma{III} are the highest and lowest principal stress values, respectively.
vec sigma = randu(6);
double sigma_Prager = Tresca_stress(sigma);
vec dTresca_stress(const vec &v)
Returns the derivative of the Tresca equivalent stress with respect to stress. It main use is to define evolution equations for strain based on an associated rule of a convex yield surface.
Warning
Note that so far that the correct derivative it is not implemented! Only stress flow
vec sigma = randu(6);
double b = 1.2;
double m = 0.5;
vec dsigma_Pragerdsigma = dPrager_stress(sigma, b, n);
mat P_Ani(const vec ¶ms)
Returns an anisotropic configurational tensor in the Voigt format (6x6 matrix)
The vector of parameters must be constituted of 9 values, respectively: P11, P22, P33, P12, P13, P23, P44 = P1212, P55 = P1313, P66 = P2323
vec P_params = {1.,1.2,1.3,-0.2,-0.2,-0.33,1.,1.,1.4};
mat P = P_Ani(P_params);
mat P_Hill(const vec ¶ms)
Returns an anisotropic configurational tensor considering the quadratic Hill yield criterion [Hill48].
The vector of parameters must be constituted of 5 values, respectively: F*, G*, H*, L, M, N
vec P_params = {1.,1.2,1.3,0.95,0.8,1.2};
mat P = P_Hill(P_params);
Note that the values of F*, G*, H* have been scaled up so that
The reason is that if F* = G* = H* = L = M = N = 1, the Mises equivalent stress is retrieved when defining an equivalent stress based on the obtained configurational tensor (see below).
double Ani_stress(const vec &v, const mat &H)
Returns an anisotropic equivalent stress, providing a configurational tensor
vec P_params = {1.,1.2,1.3,0.95,0.8,1.2};
mat P = P_Hill(P_params);
vec sigma = randu(6);
double sigma_ani = Ani_stress(sigma,P_Hill);
double dAni_stress(const vec &v, const mat &H)
Returns the derivative (with respect to stress) of an anisotropic equivalent stress, providing a configurational tensor
Warning
Might be not stable for pure deviatoric criteria
vec P_params = {1.,1.2,1.3,0.95,0.8,1.2};
mat P = P_Hill(P_params);
vec sigma = randu(6);
vec dsigma_anidsigma = dAni_stress(sigma,P_params);
double Hill_stress(const vec &v, const vec ¶ms)
Returns an the Hill equivalent stress, providing a set of Parameters
The definition of the P_Hill function: P_Hill
.
vec P_params = {1.,1.2,1.3,0.95,0.8,1.2};
vec sigma = randu(6);
mat sigma_Hill = Hill_stress(sigma, P_params);
vec dHill_stress(const vec &v, const vec ¶ms)
Returns the derivative (with respect to stress) of an Hill equivalent stress
Warning
Might be not stable for pure deviatoric criteria
vec P_params = {1.,1.2,1.3,0.95,0.8,1.2};
vec sigma = randu(6);
double dsigma_Hilldsigma = dHill_stress(sigma,P_params);
double Ani_stress(const vec &v, const vec ¶ms)
Returns the Anisotropic stress equivalent stress, providing a set of parameters .. seealso:: The definition of the P_Ani function: P_Ani
.
vec P_params = {1.,1.2,1.3,0.95,0.8,1.2};
vec sigma = randu(6);
double sigma_ani = Ani_stress(sigma,P_Hill);
vec dAni_stress(const vec &v, const vec ¶ms)
Returns the derivative (with respect to stress) of an Anisotropic equivalent stress
Warning
Might be not stable for pure deviatoric criteria
vec P_params = {1.,1.2,1.3,0.95,0.8,1.2};
vec sigma = randu(6);
double dsigma_anidsigma = dAni_stress(sigma,P_params);
double Eq_stress(const vec &v, const string &eq_type, const vec ¶ms)
Returns the an equivalent stress, providing a set of parameters and a string to determine which equivalent stress definition will be utilized The possible choices are :"Mises", "Tresca", "Prager", "Hill", "Ani"
vec P_params = {0.3,2.}; //b and n parameters for the Prager criterion
vec sigma = randu(6);
double sigma_eq = Eq_stress(sigma,P_params);
double dEq_stress(const vec &v, const string &eq_type, const vec ¶ms)
Returns the derivative with respect o stress of an equivalent stress, providing a set of parameters and a string to determine which equivalent stress definition will be utilized The possible choices are :"Mises", "Tresca", "Prager", "Hill", "Ani"
Warning
Might be not stable for pure deviatoric criteria
vec P_params = {0.3,2.}; //b and n parameters for the Prager criterion
vec sigma = randu(6);
vec dsigma_eqdsigma = Eq_stress(sigma,P_params);
References
[Hill48] Hill R. A theory of the yielding and plastic fow of anisotropic materials. Proc R Soc. 1947;(193):281–97.