5.3.7 Mooney-Rivlin模型
Mooney-Rivlin (MR) 模型是NH模型的扩展,通过在单位参考体积的亥姆霍兹自由能中加入对I2*的线性依赖,试图提高预测精度:如方程所示,MR模型的可压缩版本需要三个材料参数:C10、C01和κ。使用方程(5.41)可以证明,Mooney-Rivlin模型的柯西应力表达式为:对于MR模型的不可压缩版本(κ → ∞),单轴、平面和等双轴变形的柯西应力由以下表达式给出:Mooney-Rivlin模型预测弹性体行为的准确性在图5.15中通过与Treloar[16]的硫化天然橡胶数据对比得到了展示。图5.15 Treloar[16]的实验数据与不可压缩Mooney-Rivlin材料模型预测的对比。
这个图表明,Mooney-Rivlin模型能够改善NH模型的预测。然而,这种改进可能会付出代价——具有负C01项虽然通常能改善一种加载模式下的预测,但同时可能使模型在另一种有限变形下变得不稳定。这种情况的一个例子如图5.16所示。

对于不可压缩单轴加载,Mooney-Rivlin材料模型可以用以下Python代码实现:
Python代码:"MR_incompressible_uniaxial.py"
from pylab import *
defMR(strain, params):
"""Mooney-Rivlin超弹性模型。
不可压缩单轴加载。
此函数使用真实应力和应变"""
C10 = params[0]
C01 = params[1]
lam = exp(strain)
return2 * (lam*lam - 1/lam) * (C10 + C01/lam)
strain = linspace(0, 0.8)
params = [1.0, 0.1]
stress = MR(strain, params)
plot(strain, stress, 'r-')
show()
以下代码示例展示了一种实现可压缩单轴加载的Mooney-Rivlin材料模型的方法。
这段代码展示了Mooney-Rivlin模型的3D实现和可压缩单轴加载的应用。让我解释一下这两部分代码:
"Polymer_Mechanics_Chap05.py"中的附加Python代码:
这个函数MR_3D实现了3D Mooney-Rivlin模型:
defMR_3D(stretch, param):
"""Mooney-Rivlin。3D加载由拉伸指定。
param: [C10, C01, kappa]"""
L1, L2, L3 = stretch[0], stretch[1], stretch[2]
F = array([[L1,0,0], [0,L2,0], [0,0,L3]])
J = det(F)
bstar = J**(-2.0/3.0) * dot(F, F.T)
bstar2 = dot(bstar, bstar)
I1s = trace(bstar)
I2s = 0.5 * (I1s**2 - trace(bstar2))
C10, C01, kappa = param[0], param[1], param[2]
return2/J*(C10+C01*I1s)*bstar - 2*C01/J*bstar2 + \
(kappa*(J-1) - 2*I1s*C10/(3*J) - 4*I2s*C01/(3*J))*eye(3)
"MR_compressible_uniaxial.py":
这个脚本使用上面定义的MR_3D函数来计算可压缩单轴加载下的应力-应变关系:
from pylab import *
from Polymer_Mechanics_Chap05 import *
trueStrain = linspace(0, 0.8, 100)
trueStress = uniaxial_stress(MR_3D, trueStrain, [1.0, 0.1, 100])
plot(trueStrain, trueStress, 'r-')
xlabel('真实应变')
ylabel('真实应力 (MPa)')
grid('on')
show()
这段代码计算了一系列真实应变对应的真实应力,并绘制了应力-应变曲线。它使用了之前定义的uniaxial_stress函数(在前面的代码中定义)来计算单轴应力。
这个实现展示了Mooney-Rivlin模型如何处理可压缩材料的单轴加载情况。它考虑了体积变化(通过参数kappa),这使得模型更加通用,可以应用于更广泛的材料和加载情况。