# Mooney-Rivlin Materials¶

While the Neo-Hookean model depends on just two scalar invariants, $$\mathbb{I}_1 = \trace \bm{C} = 3 + 2 \trace \bm{E}$$ and $$J$$, Mooney-Rivlin models depend on the additional invariant, $$\mathbb{I}_2$$ defined in (25). A coupled Mooney-Rivlin strain energy density (cf. Neo-Hookean (50)) is [Hol00]

(68)\begin{aligned} \psi \left( \mathbb{I_1}, \mathbb{I_2}, J \right) &= \firstlame V(J) - \left( \secondlame_1 + 2\secondlame_2 \right) \log J + \frac{\secondlame_1}{2} \left( \mathbb{I_1} - 3 \right) + \frac{\secondlame_2}{2} \left( \mathbb{I_2} - 3 \right), \\ &= \frac{\firstlame}{4} \left( J^2 - 1 -2 \log J \right) - \left( \secondlame_1 + 2\secondlame_2 \right) \log J + \frac{\secondlame_1}{2} \left( \mathbb{I_1} - 3 \right) + \frac{\secondlame_2}{2} \left( \mathbb{I_2} - 3 \right). \end{aligned}

We differentiate $$\psi$$ as in the Neo-Hookean case (51) to yield the second Piola-Kirchoff tensor,

(69)\begin{aligned} \bm{S} &= \firstlame J V' \bm{C}^{-1} - \left( \secondlame_1 + 2\secondlame_2 \right) \bm{C}^{-1} + \secondlame_1\bm{I} + \secondlame_2 \left( \mathbb{I_1} \bm{I} - \bm{C} \right) \\ &= \frac{\firstlame}{2} \left( J^2 - 1 \right)\bm{C}^{-1} + \secondlame_1 \left( \bm{I} - \bm{C}^{-1} \right) + \secondlame_2 \left( \mathbb{I_1} \bm{I} - 2 \bm{C}^{-1} - \bm{C} \right), \end{aligned}

where we have used (27). This is a common model for vulcanized rubber, with a shear modulus (defined for the small-strain limit) of $$\secondlame_1 + \secondlame_2$$ that should be significantly smaller than the first Lamé parameter $$\firstlame$$.

Mooney-Rivlin strain energy comparison

We apply traction to a block and plot integrated strain energy $$\psi$$ as a function of the loading parameter.

Click to show code
import altair as alt
import pandas as pd
def source_path(rel):
import os
return os.path.join(os.path.dirname(os.environ["DOCUTILSCONFIG"]), rel)

nh["model"] = "Neo-Hookean"
nh["parameters"] = "E=2.8, nu=0.4"

mr["model"] = "Mooney-Rivlin; Neo-Hookean equivalent"
mr["parameters"] = "mu_1=1, mu_2=0, nu=.4"

mr1["model"] = "Mooney-Rivlin"
mr1["parameters"] = "mu_1=0.5, mu_2=0.5, nu=.4"

df = pd.concat([nh, mr, mr1])
highlight = alt.selection_point(
on = "mouseover",
nearest = True,
fields=["model", "parameters"],
)
base = alt.Chart(df).encode(
alt.X("increment"),
alt.Y("energy", scale=alt.Scale(type="sqrt")),
alt.Color("model"),
alt.Tooltip(("model", "parameters")),
opacity=alt.condition(highlight, alt.value(1), alt.value(.5)),
size=alt.condition(highlight, alt.value(2), alt.value(1)),
)


Tip

Similar to the Neo-Hookean materials, the stable form for the Mooney-Rivlin model in initial configuration (69) can be written as

(70)$\bm{S} = \frac{\firstlame}{2} \mathtt{J_{-1}} \left(\mathtt{J_{-1}} + 2 \right) \bm{C}^{-1} + 2 \left( \secondlame_1 + 2\secondlame_2 \right)\bm{C}^{-1} \bm{E} + 2\secondlame_2 \left(\trace \left(\bm{E} \right) \bm{I} - \bm{E} \right).$

The Kirchhoff stress tensor $$\bm{\tau}$$ for Mooney-Rivlin model is given by

(71)\begin{aligned} \bm{\tau} = \bm{F}\bm{S}\bm{F}^T &= \firstlame J V' \bm{I} + \secondlame_1 \left( \bm{b} - \bm{I} \right) + \secondlame_2 \left( \mathbb{I_1} \bm{b} - 2 \bm{I} - \bm{b}^2 \right), \\ &= \frac{\firstlame}{2} \left( J^2 - 1 \right)\bm{I} + \secondlame_1 \left( \bm{b} - \bm{I} \right) + \secondlame_2 \left( \mathbb{I_1} \bm{b} - 2 \bm{I} - \bm{b}^2 \right). \end{aligned}

Tip

The stable Kirchhoff stress tensor version of (71) is given by

(72)$\bm{\tau} = \frac{\firstlame}{2} \mathtt{J_{-1}} \left(\mathtt{J_{-1}} + 2 \right) \bm{I} + 2 \left( \secondlame_1 + 2\secondlame_2 \right)\bm{e} + 2\secondlame_2 \left(\trace \left(\bm{e}\right) \bm{I} - \bm{e} \right) \bm{b}.$

where $$\mathtt{J_{-1}}$$ is computed by (54)