Various different hardening or softening laws have been implemented as GeneraUserObjects, and it is very simple to implement others if you wish.

In this article, let $$$p$$$ denote the physical property of interest, such as yield strength, tensile strength, cohesion, friction angle, etc. Also let $$$x$$$ denote the internal parameter that this is dependent upon. The following hardening laws have been implemented.

Perfect plasticity

This is

$$$$p = \mbox{constant}$$$$

Exponential

This is

$$$$p = p_{\infty} + (p_{0} - p_{\infty})e^{-r x} \ ,$$$$ where $$$p_{\infty}$$$, $$$p_{0}$$$ and $$$r$$$ are user-entered quantities. This is smooth, which is nice numerically, but it has the large disadvantage that algorithms can converge to $$$x<0$$$, which is an unphysical region.

Cut Exponential

This is

$$$$p = \left\{ \begin{array}{ll} p_{0} & \ \ \mbox{for}\ \ \ x<x_{0} \\ p_{\infty} + (p_{0} - p_{\infty})e^{-r(x-x_{0})} & \ \ \mbox{for}\ \ \ x\geq x_{0} \end{array} \right.$$$$ Here $$$x_{0}$$$, $$$p_{0}$$$, $$$p_{\infty}$$$ and $$$r$$$ are user-entered quantities. This has the advantage that plasticity algorithms do not converge to $$$x<0$$$, but it is not smooth at $$$x=x_{0}$$$ which can cause convergence problems.

Gaussian

This is

$$$$p = \left\{ \begin{array}{ll} p_{0} & \ \ \ \mbox{for}\ \ \ x<x_{0} \\ p_{\infty} + (p_{0} - p_{\infty})e^{-r(x - x_{0})^{2}/2} & \ \ \ \mbox{for}\ \ \ x\geq x_{0} \end{array} \right.$$$$ Here $$$x_{0}$$$, $$$p_{0}$$$, $$$p_{\infty}$$$ and $$$r$$$ are user-entered quantities. This has very nice convergence properties: it is smooth and does not cause algorithms to enter the forbidden region $x<0$.

Cubic

This is

$$$$p = \left\{ \begin{array} p p_{0} & \ \ \ \mbox{for} \ \ \ x\leq x_{0} \\ \alpha(x - x_{0} - \mbox{$\frac{L}{2}$})^{3} + \beta(x - x_{0} - \mbox{$\frac{L}{2}$}) + \mbox{$\frac{1}{2}$}(p_{0}+p_{\mathrm{res}}) & \ \ \ \mbox{for} \ \ \ x_{0}<x<x_{L} \\ p_{\mathrm{res}} & \ \ \ \mbox{for}\ \ \ x\geq x_{L} \end{array} \right.$$$$ Here $$$x_{0}$$$, $$$x_{L}$$$, $$$p_{0}$$$, $$$p_{\mathrm{res}}$$$ are user-entered quantities. This has very nice convergence properties: it is smooth and does not cause algorithms to enter the forbidden region $$$x<0$$$. The $$$\alpha$$$ and $$$\beta$$$ parameters are chosen to fulfil the smoothness and continuity, namely $$$$\begin{array}{rcl} \alpha(x_{L}/2)^{3} & = & (p_{0} - p_{\mathrm{res}})/4 \\ \beta & = & -3\alpha(x_{L}/2)^{2} \end{array}$$$$