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}$$