介绍
这是关于线性粘弹性系列的第 5 部分。在本文中,将展示线性粘弹性的积分方程形式,实际上与具有线性弹簧和阻尼并联网络的流变学模型相同。这一发现之所以重要有两个原因:
(1)对于大多数人来说,想象弹簧阻尼系统的行为比积分方程更容易;
(2)它提供了一种将线性粘弹性更容易推广到非线性粘弹性的方法。
Maxwell 模型理论
为了证明线性粘弹性的积分形式与线性流变模型相同,我将首先分析由线性弹簧与线性阻尼串联的麦克斯韦模型。总应变由下式给出:
ε=ε1+ε2
回想一下,线性弹簧的定义是:σ=Eε1,线性阻尼的定义是ε ̇2=σ/η。
从这些方程中,我们可以以不同的方式制定力平衡。这里有 2 个选项(一个在应变 ε2 方面,一个在应力方面):
阶跃应变响应
现在,我们可以计算加载阶跃应变的麦克斯韦模型在时间t=0: ε(t)=ε0时的应力响应。通过将其插入基于应力的平衡方程中,我们直接得到:
从中我们直接得到规一化的松弛模量:
这与我从第 1 部分中的积分公式得出的表达式相同。因此,麦克斯韦弹簧-阻尼模型的行为与单项Prony级数线性粘弹性模型完全相同!而一个多项Prony级数模型相当于多个并联的麦克斯韦单元。
应力计算
在本系列的第 2 部分中,我展示了如何根据线性粘弹性的积分形式计算应力响应。在本文中,展示了应力方程也可以作为一阶常微分方程。在接下来的小节中,将研究应力的前向和后向欧拉数值解方案。
前向欧拉解
应力的前向欧拉解由下式给出:
下图显示了麦克斯韦模型的加载-卸载应力响应,E=1 MPa,η=1 MPa s,最大应变= 0.1,应变率=0.01/s。在图中,绘制了三个案例的响应,这些案例分别使用 15、25 和 55 个时间增量步来求解。正如预期的那样,如果使用的时间增量不足,前向欧拉方法可能会变得不稳定。我用来生成图像的Julia代码显示在下图下方。
using Plots
function calc_strain(time, maxStrain, strainRate)
t1 = maxStrain / strainRate
if time < t1
return strainRate * time
else
return maxStrain - (time - t1) * strainRate
end
end
function calc_stress(E, eta, maxStrain, strainRate, N)
time = range(0, 2*maxStrain/strainRate, length=N)
strain = zeros(N)
for i in 1:N
strain[i] = calc_strain(time[i], maxStrain, strainRate)
end
stress = zeros(N)
for i in 2:N
de = strain[i] - strain[i-1]
dt = time[i] - time[i-1]
stress[i] = (1 - dt/(eta/E)) * stress[i-1] + E * de
end
return time, strain, stress
end
time, strain, stress = calc_stress(1, 1, 0.1, 0.01, 55)
plot(strain, stress, label="Forward Euler (N=55)", linewidth=2)
time, strain, stress = calc_stress(1, 1, 0.1, 0.01, 25)
plot!(strain, stress, label="Forward Euler (N=25)", linewidth=2)
time, strain, stress = calc_stress(1, 1, 0.1, 0.01, 15)
plot!(strain, stress, label="Forward Euler (N=15)", linewidth=2)
plot!(size=(1000,800), framestyle=:box)
plot!(tickfontsize=14, guidefontsize=16, xlabel="Strain", ylabel="Stress")
savefig("Forward_Euler.png")
后向欧拉法求解
后向欧拉法由下式给出:
下图显示了具有与上述相同属性的麦克斯韦模型的加载-卸载应力响应。该图显示了分别使用 15、25 和 55 个时间增量步来解决问题的三个案例的响应。可见后向欧拉方法比前向欧拉方法更稳定,但时间增量的数量仍然需要比较大才能得到准确的解。我用来生成图像的Julia代码显示在下图下方。
using Plots
function calc_strain(time, maxStrain, strainRate)
t1 = maxStrain / strainRate
if time < t1
return strainRate * time
else
return maxStrain - (time - t1) * strainRate
end
end
function calc_stress(E, eta, maxStrain, strainRate, N)
time = range(0, 2*maxStrain/strainRate, length=N)
strain = zeros(N)
for i in 1:N
strain[i] = calc_strain(time[i], maxStrain, strainRate)
end
stress = zeros(N)
for i in 2:N
de = strain[i] - strain[i-1]
dt = time[i] - time[i-1]
stress[i] = (stress[i-1] + E*de) / (1 + dt/(eta/E))
end
return time, strain, stress
end
time, strain, stress = calc_stress(1, 1, 0.1, 0.01, 55)
plot(strain, stress, label="Backward Euler (N=55)", linewidth=2)
time, strain, stress = calc_stress(1, 1, 0.1, 0.01, 25)
plot!(strain, stress, label="Backward Euler (N=25)", linewidth=2)
time, strain, stress = calc_stress(1, 1, 0.1, 0.01, 15)
plot!(strain, stress, label="Backward Euler (N=15)", linewidth=2)
plot!(size=(1000,800), framestyle=:box)
plot!(tickfontsize=14, guidefontsize=16, xlabel="Strain", ylabel="Stress")
savefig("Backward_Euler.png")
非线性粘弹性初探
从玻尔兹曼叠加原理开始了关于线性粘弹性的系列。然后,我展示了如何直接推导应力的积分方程公式。这种方法的一个问题是,将其推广到非线性粘弹性理论并不容易。本文讨论的流变学方法的好处之一是,很容易将其扩展到非线性粘弹性理论。例如,一种方法是用非线性阻尼替换线性阻尼。一个常见的例子是对阻尼使用以下方程:
这个流动方程是简化版本的Bergstrom-Boyce模型,用于预测类橡胶材料的非线性粘弹性响应。
总结
线性粘弹性通常根据积分方程推导,但也等效于弹簧-阻尼模型。
非线性粘弹性可以从弹簧-阻尼流变模型发展出来