Arruda 和 Boyce 提出的八链(EC)模型是一种超弹性模型,旨在描述弹性体的变形行为。EC模型的基本假设是,链状高分子(也称为链分子)在平均情况下位于单位立方体的对角线上,如图 5.18 所示。链的单位长度由 表示,并由 和未变形链的长度决定 。它直接得出 。在该模型中,高分子被认为是n个长度为 ℓ 的刚性链相连。根据这个 FJC 模型,在无外力作用下端-到端的自由长度为ℓ 。有效形变链长为:
其中 、 和 是主变形伸长率,可以得到有效链伸长率:
通过注意到有效链伸长与第一不变量 b* 的关系= [I₁*(b*)/3]¹/²,可以得出单位参考体积下的Helmholtz可以写成 Ψ(λ̄*, J, θ₀) 的形式,或者用主伸长率 λ₁, λ₂, λ₃ 来表示为 Ψ(I₁*, J, θ₀),其中 I₁* = I₁(b*)= tr(b*)。利用连续介质力学的公式 (5.41),可以得到该情况下柯西应力张量 σ 的表达式 (5.98)。当不依赖于 I₂* 时,该表达式可以简化为:
单位参考体积下的亥姆霍兹自由能 (Ψ) 可以通过实验观察确定,该观察表明,对于弹性体,内能通常不是外加畸变伸长 (λ*) 的函数 [16],即 e₀(J, θ₀)。因此,亥姆霍兹自由能的函数形式为:
注意,由于假设体积变化很小,因此忽略了 η₀(, J) 中对 J 的依赖性。对小体积变形的假设也使得柯西应力张量 σ 的压力分量和体积变形 J 之间的关系可以近似为线性:
其中 κ 为体积模量。这给出了内能 e₀(J) = κJ(J/2 - 1)。然后,可以根据公式 (5.99) 计算柯西应力,得到:
为了完全确定本构关系,现在只需要确定熵如何依赖于有效链伸长。根据链式法则,我们得到:
因此,为了最终确定本构方程,只需要确定单个高分子的熵如何依赖于其端到端距离就足够了。这个推导在 5.3.5 节中有详细讨论。
利用公式 (5.70),公式 (5.102) 现在可以写成:
其中是分子所能承受的最大(完全伸展)伸长。对于不可压缩单轴变形的特殊情况,方程 (5.104) 简化为:
对于由定义的简单剪切,剪切应力由下式给出:
其中
材料的初始剪切模量由下式给出:
将其代入 (5.104) 中,得到八链模型的柯西应力为:
在这个方程中,是材料参数。对于八链模型的不可压缩版本,单轴、平面和等双轴变形的柯西应力由以下表达式给出:
可压缩的八链 (EC) 模型包含三个材料参数:剪切模量 μ、极限链伸长 λlock 和体积模量 κ。EC 模型不依赖于 I₂,并且其预测精度与 Gent 模型相似 [29]。通过与 Treloar [16] 的硫化天然橡胶数据进行比较,图 5.19 展示了 EC 模型预测弹性体行为的准确性。
该图显示,在这种情况下,EC 模型比 NH 模型和 Mooney-Rivlin 模型更准确,并且与 Yeoh 模型的准确性几乎相同。该图还显示,EC 模型略微低估了双轴响应。由于该模型是基于 I₁ 的,并且不包含任何对 I₂ 的依赖性,因此这是符合预期的。
对于不可压缩单轴加载,可以使用以下代码将 EC 材料模型在 Matlab 中实现:
Matlab Code:
function[stress] = mat_EC(time, strain, params)
%mat_EC Arruda-Boyce eight-Chain hyperelastic model
%Incompressible uniaxial loading
%This function is using true stress and strain
mu = params(1);
lambdaL=params(2);
lambda = exp(strain);
lambdaChain = sqrt((lambda.^2 + 2./lambda) / 3);
stress = mu./lambdaChain.*invLangevin(lambdaChain./lambda) .* (lambda.^2 - 1./lambda);
end
function[res] = invLangevin(x)
%INVLANGEVIN Implementation of the inverse Langevin function
x(find(x>1)) = 1-eps;
x(find(x<-1)) = -1+eps;
res = zeros(size(x));
index = find(abs(x)<0.839);
res(index)= 1.314*tan(1.59.*x(index)) + 0.911249.*x(index);
index = find(abs(x)>=0.839);
res(index
) = 1
./ (sign(x(index)) - x(index));
end
对于不可压缩单向加载情况NH模型可以用以下Python代码实现:
Python Code:
defInvLangevin(x):
EPS = spacing(1)
iftype(x) == float: # x is a scalar
if x >= 1 - EPS: x = 1 - EPS
if x <= -1 + EPS: x = -1 + EPS
ifabs(x) < 0.839:
return1.31435 * tan(1.59*x) + 0.911249*x
# x is an array
=x[x > 1 - EPS] = 1 - EPS
x[x < -1 + EPS] = -1 + EPS
index = abs(x) < 0.839
res = zeros(size(x))
res[index] = 1.31435 * tan(1.59*x[index]) + 0.911249*x[index]
index = abs(x) >= 0.839
res[index] = 1.0 / (sign(x[index]) - x[index])
return res
#Python Code: 'EC_incompressible_uniaxial.py'
from pylab import *
from Polymer_Mechanics_Chap05 import *
defEightChain(trueStrain, params):
"""Arruda-Boyce eight-chain model.
Incompressible uniaxial loading. Returns true stress."""
mu = params[0]
lambdaL=params[1]
lam = exp(trueStrain)
lamChain = sqrt((lam**2 + 2/lam)/3)
return mu/lamChain * invLangevin(lamChain/lambdaL)/invLangevin(1/lambdaL) * (lam**2 - 1/lam)
trueStrain = linspace(0, 0.8, 10)
trueStress = EightChain(trueStrain, [1.0, 3.0])
plot(trueStrain, trueStress, 'r-')
xlabel('True Strain')
ylabel('True Stress (MPa)')
grid('on')
show()
附加到"Polymer_Mechanics_Chap05.py"的代码:
defEC_3D(stretch, param):
"""八链模型。通过拉伸指定的3D加载。
param: [mu, lambdaL, 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)
lamChain = sqrt(trace(bstar)/3)
devbstar = bstar - trace(bstar)/3 * eye(3)
return param[0]/(J*lamChain) * invLangevin(lamChain/param[1]) / \
invLangevin(1/param[1]) * devbstar + param[2]*(J-1) * eye(3)
Python代码:"EC_compressible_uniaxial.py"
from pylab import *
from Polymer_Mechanics_Chap05 import *
trueStrain = linspace(0, 0.8, 100)
trueStress = uniaxial_stress(EC_3D, trueStrain, [1.0, 3.0, 100])
plot(trueStrain, trueStress, 'b-')
xlabel('True Strain')
ylabel('True Stress (MPa)')
grid('on')
show()
图像由Python代码创建:
来源:ABAQUS仿真世界