**process swt#

Description#

This process allows to calculate number of cycles to failure according to a unified strain-stress fatigue model based on the Smith-Watson-Topper criterion.

The fatigue life is calculated by solving the following equation:

(173)#\[\sigma_{eff} = F(N_f)\]

where the effective stress \(\displaystyle\sigma_{eff}\) is calculated as a product of the stress and strain amplitudes multiplied by a correction factor depending on the mean stress:

(174)#\[\sigma_{eff} = \sqrt{ E \frac{\Delta \sigma}{2} \frac{\Delta \epsilon}{2}} f(\frac{\Delta \sigma}{2}, \bar{\sigma})\]

In the above formula \(E\) is the material Young’s modulus, while:

  • \(\displaystyle\frac{\Delta \sigma}{2}\) is the multiaxial stress amplitude (measured in terms of the von mises \(J_2\) stress invariant) as calculated by the **process range post-processor,

  • a special treatment is needed for the calculation of the multiaxial strain amplitude \(\displaystyle\frac{\Delta \epsilon}{2}\) in order to be compatible with the uniaxial case (because of nonzero strains that arise in directions orthogonal to the uniaxial stress direction). The expression used to calculate \(\displaystyle\frac{\Delta \epsilon}{2}\) is the following one:

    (175)#\[\frac{\Delta \epsilon}{2} = \frac{\Delta \sigma}{2 E} + \frac{\Delta \epsilon^{p}}{2}\]

    where the plastic strain amplitude \(\displaystyle\frac{\Delta \epsilon^{p}}{2}\) is computed either using the **process range post-processing, or by means of a cyclic hardening relation \(\displaystyle\Delta \epsilon^{p}=f(\Delta \sigma)\), depending on the option selected (see syntax). Note that when the range post-processor is used, the distance measuring the amplitude in the deviatoric strain space is calculated by:

    (176)#\[J_2^{*}(\overline{\epsilon}^p) = \sqrt{\frac{2}{3} \deviator(\overline{\epsilon}^p):\deviator(\overline{\epsilon}^p)}\]

    the \(\displaystyle\frac{2}{3}\) factor being used instead of the conventional \(\displaystyle\frac{3}{2}\) of the mises stress invariant, for compatibility with the uniaxial case:

    (177)#\[\overline{\epsilon}^p = (\epsilon^p_{11}, \epsilon^p_{22}, \epsilon^p_{33}, \epsilon^p_{12}, \epsilon^p_{23}, \epsilon^p_{31}) = (\epsilon^p_{11},-0.5 \epsilon^p_{11},-0.5 \epsilon^p_{11}, 0, 0, 0)\]

    such that:\(J_2^{*}(\overline{\epsilon}^p) = \epsilon^p_{11}\) in this case.

  • in the multiaxial case, the mean stress value \(\displaystyle\bar{\sigma}\) is calculated as the mean trace of tensor \(\displaystyle\overline{\sigma}\):

    (178)#\[\bar{\sigma} = \frac{1}{2} \left[ \max ( \trace(\overline{\sigma}) ) + \min ( \trace(\overline{\sigma}) ) \right]\]
  • the mean stress correction factor \(\displaystyle f(\frac{\Delta \sigma}{2}, \bar{\sigma})\) is defined as the following function of \(\displaystyle\bar{\sigma}\):

    • traction : \(\displaystyle\bar{\sigma}>0\)

      (179)#\[f(\frac{\Delta \sigma}{2}, \bar{\sigma}) = \left( 1 + \frac{\bar{\sigma}}{\left(\frac{\Delta \sigma}{2}\right)} \right)^n\]

      where \(n\) is a model coefficient.

    • compression : \(\displaystyle\bar{\sigma}<0\)

      (180)#\[f(\frac{\Delta \sigma}{2}, \bar{\sigma}) = \left( 1 - \frac{\bar{\sigma}}{\left(\frac{\Delta \sigma}{2}\right)} \right)^{-1}\]

      which yields an effect similar to the one predicted by the Sines criterion, or alternatively \(\displaystyle f(\frac{\Delta \sigma}{2}, \bar{\sigma})=1\) when the *skip_compression option is specified. The latter option ignores any beneficial effect of a compressive stress, and may be too pessimistic.

    • traction \(\displaystyle\bar{\sigma}>0\) and option *chaboche_2012 [U11]:

      (181)#\[\begin{split}f(\frac{\Delta \sigma}{2}, \bar{\sigma}) = \begin{cases} 1 + b_1\frac{\bar{\sigma}}{\left(\frac{\Delta \sigma}{2}\right)} & \text{if } t^* \geq \frac{\bar{\sigma}}{\left(\frac{\Delta \sigma}{2}\right)} \\ 1 + \left(b_1-b_2\right)t^* + b_2\frac{\bar{\sigma}}{\left(\frac{\Delta \sigma}{2}\right)} & \text{otherwise} \end{cases}\end{split}\]

      where \(b_1\), \(b_2\) and \(t^*\) are model coefficients.

Several definitions of \(F(N_f)\) are allowed depending on the options:

  • the first possibility (keyword *expression manson) is to derive \(F(N_f)\) from a prior Manson-Coffin model calibration on symmetric cyclic tests (loading factor R=-1, \(\displaystyle\bar{\sigma}=0\)).

    (182)#\[\frac{\Delta \epsilon}{2} = \frac{\Delta \epsilon^p}{2} + \frac{\Delta \epsilon^e}{2} = A N_f^{-\alpha} + B N_f^{-\beta}\]

    which yields by replacing \(\displaystyle\frac{\Delta \epsilon^p}{2}=A N_f^{-\alpha}\) and \(\displaystyle\frac{\Delta \epsilon^e}{2}=B N_f^{-\beta}\) in the effective stress formula:

    (183)#\[F(N_f) = E \sqrt{ A B N_f^{-\alpha-\beta} + B^2 N_f^{-2 \beta} }\]

    In that case model coefficients \(A\), \(B\), \(\displaystyle\alpha\), \(\displaystyle\beta\) are directly known from the Manson-Coffin calibration, and the only additional coefficient still left to define is the \(n\) exponent involved in the mean stress correction factor,

  • a second possibility lets the user define an arbitrary expression for \(F(N_f)\), using the keyword *expression <FUNCTION>, where <FUNCTION> is a valid function definition. For example, an user-defined expression of \(F(N_f)\) equivalent to the manson option could be specified by:

    *expression E*(A*B*Nf^(-alpha-beta) + B*B*Nf^(-2.0*beta)^(0.5);
    

    Note that it is mandatory that a variable named Nf or nf should be used in the function definition. Other function coefficients are assumed to be model coefficients and should be given in the post-processing material file.

Introduction of a fatigue limit effect

An additional model coefficient \(\displaystyle\epsilon_D\) may be used to add a fatigue limit effect when the manson option is selected. In this case the Manson-Coffin model used during calibration is rewritten:

(184)#\[\frac{\Delta \epsilon}{2} = \frac{\Delta \epsilon^p}{2} + \frac{\Delta \epsilon^e}{2} + \epsilon_D\]

such that \(N_f = \infty\) when \(\displaystyle\frac{\Delta \epsilon}{2}<\epsilon_D\).

In that case the \(F(N_f)\) expression used in the swt model becomes:

(185)#\[F(N_f) = E \sqrt{ A B N_f^{-\alpha-\beta} + B^2 N_f^{-2 \beta} + \epsilon_D \left( 2 B N_f^{-\beta} + A N_f^{-\alpha} + \epsilon_D \right)}\]

Syntax#

**process swt \(~\,\) *var name_sig [ *type scalar | tensor ] [ *expression manson | func_exp ] [ *derivative func_deriv ] *plastic_strain name_ep | *cyclic hardening function func_hard | *cyclic hardening file fname sig_col eto_col [ *precision prec ] [ *iter iter ] [ *skip_compression ] [ *chaboche_2012 ]

  • name_sig is the name of the variable used to store the stress in the results file (one would expect sig here).

  • The *expression command allows to define the \(F(N_f)\) function. Default is *expression manson that defines a \(F(N_f)\) expression derived from a Manson-Coffin calibration as detailed above. A user-defined expression may alternatively be given by means of argument func_exp.

  • The *derivative command allows to define the derivative \(\displaystyle\displaystyle \frac{dF(N_f)}{dN_f}\) of \(F(N_f)\) in the func_deriv argument, and may be needed when a user defined function is given after *expression. In this case a Newton-Raphson method is used to solve the \(\displaystyle\sigma_{eff} = F(N_f)\) equation to calculate \(N_f\). Otherwise, a slower dichotomy method is used. Note that the *derivative command is not needed in the default *expression manson mode, and that the Newton-Raphson method is always used in this case.

  • The *plastic_strain command is used to define the name of the variable where the plastic strain \(\displaystyle\overline{\epsilon^p}\) is stored in the results files. In this case the \(\displaystyle\frac{\Delta \epsilon^p}{2}\) amplitude needed in the effective stress expression will be calculated by applying the range post-processor on the variable specified by the argument name_ep.

  • Alternative specification of \(\displaystyle\frac{\Delta \epsilon^p}{2}\) calculation can be given by means of the *cyclic_hardening function command. In that case a function \(\displaystyle\frac{\Delta \epsilon^p}{2} = f(\frac{\Delta \sigma}{2})\) is expected for the func_hard argument.

  • \(\displaystyle\frac{\Delta \epsilon^p}{2}\) may also be interpolated from cyclic hardening curve results by means of the *cyclic_hardening file command. In this case argument fname is the name of the file containing the cyclic hardening curve, and sig_col, eto_col are the column numbers in this file used to store \(\displaystyle\frac{\Delta \sigma}{2}\) and \(\displaystyle\frac{\Delta \epsilon^p}{2}\) respectively. Note that the half-amplitude is expected for both stress and strain values.

  • The optional *precision command defines the precision required when solving the \(\displaystyle\sigma_{eff} = F(N_f)\) by either dichotomy or Newton-Raphson. Default value is \(10^{-4}\). Similarly, the maximum number of iterations allowed may be given after *iter command (default is \(500\)). In general, the Newton-Raphson method converges in at most a few dozens of iterations, while the dichotomy method may need larger values depending on the precision required.

  • When the optional *skip_compression command is given, the mean stress correction factor \(\displaystyle f(\frac{\Delta \sigma}{2}, \bar{\sigma})\) is set to \(1.0\), negative value of the mean stress \(\displaystyle\bar{\sigma}\).

Default output gives the number of cycles to failure in a variable named Nf, while the effective stress is stored in a variable named “name_sig_swt”, obtained by concatenation of the stress tensor name “name_sig” specified with the “_swt” character string.

  • The optional *full_output command will add the following results to the output:

    • the stress amplitude under the name “name_sig_alt

    • the average stress under the name “name_sig_ave” where “name_sig” is the name of the stress tensor specified

    • the elastic and plastic amplitudes in variables eel_alt and ein_alt

Example#

% standard definition using the default *expression manson option
**process swt
   *var sig
   *plastic_strain ev
   *full_output

% The following syntax must be used in the material file in this case:
***post_processing_data
 **process swt
   young 98000.00
   alpha 0.7438  % mandatory Manson-Coffin coefficients
   A 165.e-2
   beta 0.0745
   B 0.8015e-2
   epsd 0.13e-2  % optional fatigue limit coefficient
   n 0.65        % mandatory mean stress correction coefficient

   % if *chaboche_2012
   b1 0.7 % mandatory mean stress correction coefficient
   b2 0.3 % mandatory mean stress correction coefficient
   t_star 0.4 % mandatory mean stress correction coefficient

% user definition of the F(Nf) function
**process swt
   *var sig
   *expression Au*Nf^(-au)+Bu*Nf^(-bu);
   % optional derivative specification to allow faster newton-raphson resolution
   *derivative -au*Au*Nf^(-au-1.0)-bu*Bu*Nf^(bu-1.0);
   *plastic_strain ev
   *full_output

% The following syntax must be used in the material file in this case:
% note the Au, au, Bu, bu coefficients needed depend of the user expression
***post_processing_data
 **process swt
   young 98000.00
   au 0.7438
   Au 165.e-2
   bu 0.0745
   Bu 0.8015e-2
   n 0.65

   % if *chaboche_2012
   b1 0.7 % mandatory mean stress correction coefficient
   b2 0.3 % mandatory mean stress correction coefficient
   t_star 0.4 % mandatory mean stress correction coefficient

% definition of a cyclic hardening function
**process swt
   *var sig
   % note that the function variable should be called "dsig"
   *cyclic_hardening function (dsig/K)^m;
   *full_output

% The following syntax must be used in the material file in this case:
% note the K, m coefficients needed depend on the *cyclic_hardening user definition
***post_processing_data
 **process swt
   young 98000.00
   alpha 0.7438
   A 165.e-2
   beta 0.0745
   B 0.8015e-2
   epsd 0.13e-2
   n 0.65
   K 1000.
   m 0.07