All About the Arruda-Boyce Hyperelastic Model


The Arruda-Boyce model is a well-known and popular hyperelastic model. Their original paper has more than 3,000 citations! There are not many papers that reach that many citations, and there are not many researchers that ever write a paper that becomes that popular. I am a big fan of the Arruda-Boyce Eight-Chain model, partly because I was also a Ph.D. student of Mary Boyce (just like Ellen Arruda). But also because it is an easy to use and robust model. Also note that Arruda and Boyce developed more than one model, so it is a bit misleading to call this the “Arruda-Boyce model”. A better name is the Arruda-Boyce Eight-Chain model.

Prof. Arruda

Prof. Arruda

Prof. Boyce


The macromolecules on average are located along the diagonals of a unit cell located in principal stretch space

The Eight-Chain model predicts that in uniaxial tension the macromolecules are stretched and rotated towards the loading direction. In uniaxial compression the modulus are also stretched, but in this case they are rotated away from the loading direction. In other words, the molecules are always stretched when the material is deformed. This makes intuitive sense.

The amount of molecular chain stretch is given by:

\( \lambda_{chain}^* = \displaystyle \left[ \frac{(\lambda_1^*)^2 + (\lambda_2^*)^2 + (\lambda_3^*)^2}{3} \right]^{1/2} = \sqrt{\frac{I_1^*}{3}} \)

This shows that the Arruda-Boyce model is an \(I_1\) based hyperelastic model.

Using continuum mechanics, this gives the following equation for the Cauchy stress:

\(\boldsymbol{\sigma} = \displaystyle\frac{1}{J} \frac{1}{3\lambda_{chain}^*} \frac{\partial\Psi}{\partial\lambda_{chain}^*} \text{dev}[\mathbf{b}^*] + \frac{\partial\Psi}{\partial J} \mathbf{I}\)

The final stress-strain equation is given by (where \(\mathcal{L}(x)\) is the Langevin function, and \( \mathcal{L}^{-1}(x)\) the inverse Langevin function that cannot be expressed in closed form):

Eight-Chain Stress

Here is a Julia implementation. Note that there are some discussions in the literature (see page 257 in my book) about the best way to calculate the inverse Langevin function. It turns out that different FE solvers have used different equations for this. 

					function invLangevin(xIn)
    res = zeros(size(xIn))
    for (i,x) in enumerate(xIn)
        x = min(x,  1-eps())
        x = max(x, -1+eps())
        if abs(x) < 0.839
            res[i] = 1.31435 * tan(1.59*x) + 0.911249*x
            res[i] = 1 / (sign(x) - x)
    return res
function arruda_boyce(strain, params)
    # Incompressible uniaxial loading
    # This function is using true strain and stress
    mu      = params[1]
    lambdaL = params[2]
    lambda  = exp.(strain)
    lambdaChain = sqrt.((lambda.^2 + 2 ./ lambda) / 3)
    stress = mu./lambdaChain .* invLangevin(lambdaChain/lambdaL) ./ invLangevin(1/lambdaL) .* (lambda.^2 - 1 ./ lambda)
arruda_boyce([0.0, 0.1], [1.0, 5.0])


  • The Arruda-Boyce (Eight-Chain) model is a simple I1-based hyperelastic model
  • Easy to use
  • Easy to calibrate
  • Always stable
  • Works well as a building block in more advanced viscoplastic material models
  • Underpredicts the stress in biaxial loading

More to explore

Leave a Comment