Skip to content

Latest commit

 

History

History
executable file
·
194 lines (115 loc) · 6.9 KB

criteria.rst

File metadata and controls

executable file
·
194 lines (115 loc) · 6.9 KB

The Criteria Library

cpp

double Prager_stress(const vec &v, const double &b, const double &n)

Returns the Prager equivalent stress σP, considering

$$\sigma^{P} = \sigma^{VM} \left(\frac{1 + b \cdot J_3 \left(\boldsymbol{\sigma} \right)}{\left(J_2 \left(\boldsymbol{\sigma} \right) \right)^{3/2} } \right)^{m}$$

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 $\eta_{stress}=\frac{3/2\sigma_{dev}}{\sigma_{Mises}}$ is returned

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 &params)

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 &params)

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

$$F^*=\frac{1}{3}F,G^*=\frac{1}{3}G,H^*=\frac{1}{3}H.$$

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

$$\sigma^{Ani} = \sqrt{\frac{3}{2} \boldsymbol{\sigma} \cdot \boldsymbol{H} \cdot \boldsymbol{\sigma}}$$

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 &params)

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 &params)

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 &params)

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 &params)

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 &params)

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 &params)

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.