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