



图5.22 Treloar[16]的实验数据和Gent模型的预测结果对比
function[stress] = mat_Gent(time, strain, params)
%mat_Gent Gent超弹性模型
%不可压缩单轴加载
%此函数使用真实应力和应变
mu = params(1);
Jm = params(2);
lambda = exp(strain);stress = mu*(lambda.^2 - 1./lambda) ./ ...
(Jm - (lambda.^2 +2./lambda - 3));
end
对于不可压缩单轴加载,Gent材料模型也可以使用以下Python代码实现:
from pylab import *
defGent(trueStrain, params):
"""Gent模型。不可压缩单轴加载。返回真实应力。"""
mu = params[0]
Jm = params[1]
lam = exp(trueStrain)
return mu*Jm / (Jm - lam*lam - 2/lam + 3) * (lam*lam - 1/lam)
trueStrain = linspace(0, 0.8, 100)
trueStress = Gent(trueStrain, [0.29, 86.0])
plot(trueStrain, trueStress, 'r-')
xlabel('真实应变')
ylabel('真实应力 (MPa)')
grid('on')
show()这段Python代码定义了Gent模型函数,并绘制了一个应力-应变曲线图,展示了在给定参数下的模型行为。
以下代码示例展示了如何实现可压缩单轴加载的Gent材料模型。
defGent_3D(stretch, param):
"""Gent. 3D加载由拉伸指定。
param: [mu, Jm, kappa]. 返回真实应力。"""
L1 = stretch[0]
L2 = stretch[1]
L3 = 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)
I1s = trace(bstar)
devbstar = bstar - trace(bstar)/3 * eye(3)
return param[0]/ J / (1 - (I1s-3)/param[1]) * devbstar + \
param[2]*(J-1) * eye(3)该函数实现了3D Gent模型,考虑了材料的可压缩性。它使用拉伸比来描述变形,并返回真实应力张量。
使用以下Python代码来应用可压缩单轴加载的Gent模型:
from pylab import *
from Polymer_Mechanics_Chap05 import *
trueStrain = linspace(0, 0.8, 100)
trueStress = uniaxial_stress(Gent_3D, trueStrain, [0.29, 86.0, 100])
plot(trueStrain, trueStress, 'b-')
xlabel('真实应变')
ylabel('真实应力 (MPa)')
grid('on')
show()这段代码使用了先前定义的Gent_3D函数来计算可压缩单轴加载下的应力-应变关系,并绘制了相应的曲线图。参数[0.29, 86.0, 100]分别代表剪切模量μ、Jm和体积模量κ。
绘制的曲线如下:
