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 (35). A coupled Mooney-Rivlin strain energy density (cf. Neo-Hookean (60)) is [Hol00]
We differentiate \(\psi\) as in the Neo-Hookean case (61) to yield the second Piola-Kirchoff tensor,
where we have used (37). 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 = pd.read_csv(source_path("doc/data/NH-strain.csv"))
nh["model"] = "Neo-Hookean"
nh["parameters"] = "E=2.8, nu=0.4"
mr = pd.read_csv(source_path("doc/data/MR-strain.csv"))
mr["model"] = "Mooney-Rivlin; Neo-Hookean equivalent"
mr["parameters"] = "mu_1=1, mu_2=0, nu=.4"
mr1 = pd.read_csv(source_path("doc/data/MR-strain1.csv"))
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)),
)
base.mark_point().add_params(highlight) + base.mark_line()
Tip
Similar to the Neo-Hookean materials, the stable form for the Mooney-Rivlin model in initial configuration (79) can be written as
The Kirchhoff stress tensor \(\bm{\tau}\) for Mooney-Rivlin model is given by
Tip
The stable Kirchhoff stress tensor version of (81) is given by
where \(\mathtt{J_{-1}}\) is computed by (64)