首页/文章/ 详情

《Mechanics of Solid Polymers》5.3.10 8链模型

1月前浏览41

5.3.10  8链模型

        Arruda 和 Boyce 提出的八链(EC)模型是一种超弹性模型,旨在描述弹性体的变形行为。EC模型的基本假设是,链状高分子(也称为链分子)在平均情况下位于单位立方体的对角线上,如图 5.18 所示。链的单位长度由   表示,并由   和未变形链的长度决定   。它直接得出     。在该模型中,高分子被认为是n个长度为 ℓ 的刚性链相连。根据这个 FJC 模型,在无外力作用下端-到端的自由长度为   。有效形变链长为:

其中  和 是主变形伸长率,可以得到有效链伸长率:

图 5.18 位于单位立方体中的分子链模型

其中这表明,扭转形变伸长率实际上与第一不变量 I1 有关。
        基于这一物理模型,8链材料模型被定义为各向同性的超弹性材料,其 Helmholtz 自由能仅依赖于两个变形不变量,及温度θ0 。

        通过注意到有效链伸长与第一不变量 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(00.810)
trueStress = EightChain(trueStrain, [1.03.0])
plot(trueStrain, trueStress, 'r-')
xlabel('True Strain')
ylabel('True Stress (MPa)')
grid('on')
show()
以下代码示例展示了一种实现可压缩单轴加载的EC材料模型的方法。

附加到"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(00.8100)
trueStress = uniaxial_stress(EC_3D, trueStrain, [1.03.0100])

plot(trueStrain, trueStress, 'b-')
xlabel('True Strain')
ylabel('True Stress (MPa)')
grid('on')
show()

图像由Python代码创建:



来源:ABAQUS仿真世界

MATLABpython材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-07-17
最近编辑:1月前
yunduan082
硕士 | 仿真主任工程... Abaqus仿真世界
获赞 176粉丝 319文章 395课程 0
点赞
收藏
作者推荐

为什么三角形单元你的应力分析总是不准?Abaqus二阶三角形单元揭秘,精度直接翻倍!

在本文中,我们将详细介绍静态结构分析中使用的二阶三角形单元的公式。此类单元通常用于有限元法 (FEM) 中来解决工程问题。我们将考虑以下假设:平面应力或平面应变条件线弹性、各向同性、均质材料。单元仅在XY平面上加载。小变形条件。 介绍二阶三角单元的每个单元具有6个节点和每个节点2个自由度(DOF),总共12 doF。因此,我们已经可以确保该元素的刚度矩阵将是12×12矩阵。该矩阵也将是对称和奇异的。 用于结构分析的元素的自由度是位移。对于二阶三角元素,每个节点有两个可能的位移:一个在x方向上,一个在y方向上,如下所示:所需的材料特性仅弹性模量(E)和泊松比(ν)。单元几何和形状函数对于二阶三角形单元,节点位于边的顶点和中点。xy平面上的节点坐标可以表示如下:制定任何有限元的初始步骤之一是定义计算单元内任何位置处的位移分量的函数。最简单的函数类型是多项式。要定义多项式,必须确定其所需的系数数量。确定每个多项式所需系数数量的方法如下所示。为了帮助构造多项式,我们将使用帕斯卡三角形。因此,位移函数U如下:可以使用矩阵表示法将其写为:或者以更紧凑的方式:并且,位移函数v如下:同样可以写为或者以更紧凑的方式:请注意,以上方程包括二阶(二次)项。这就是为什么此单元称为二阶有限单元的原因。为了确定系数 ,节点位移可以用作边界条件,从而形成12个代数方程。由于有12个系数可以计算,因此该系统将具有独特的解决方案。这些方程式使用矩阵表示法表示。上面的矩阵方程可以更简洁地表达如下:为了计算系数 ,应在上面的方程式中隔离列矩阵{a}。因此:因此,位移函数可以计算如下:可以执行上面的矩阵运算,生成以下位移函数表达式:其中 是插值函数或形状函数。注意:其中矩阵[v]包含变量x和y,矩阵[p]包含节点坐标,因此其逆也由节点坐标组成。因此,形状函数将由节点坐标(创建网格后建立)和变量x和y定义。应变-位移矩阵(B 矩阵)对于平面应力或平面应变条件,应变的三个分量可以计算如下:现在可以使用先前开发的位移函数方程来计算这些量。请注意,由于变量x和y仅出现在形状函数 中,因此只需要区分这些函数。上述表达式可以写成矩阵形式:B矩阵是形状函数相对于X和Y的微分构成:关于应变-位移矩阵(B 矩阵)的重要结论了解应变分量如何随单元区域变化对于任何有限元公式都至关重要。例如,在单元的整个区域中,线性三角单元(也称为恒定应变三角形(CST))具有恒定应变和应力。在压力和应变梯度高的区域中,这种特征是不可取的,因为它需要使用许多单元,从而大大增加了计算成本。在当前的公式中,我们具有二阶有限元。我们已经开发了方程来计算应变成分作为形状函数的微分。但是,形状函数并未明确得出。仅显示用于得出它的表达式。因此,无法得出结论如何变化。因此,我们现在将以不同的方式计算应变分量,以说明它们在单元区域内的变化情况。使用初始形式的位移函数,我们有以下表达式:通过对这些函数进行微分,我们可以计算出应变分量,如下所示:这些表达式的关键结论是,二阶三角单元的应变成分在x和y方向上线性变化。与恒定应变三角形相比,这是一个显着改善。这种线性变化允许在压力和应变高梯度的区域使用较少的单元,从而降低计算成本。本构矩阵(D 矩阵)二阶三角形单元的应力分量可以使用以下表达式计算:对于平面应力条件,本构矩阵D定义为:对于平面应变条件,本构矩阵D定义为:应该注意的是,平面应力和平面应变条件之间二阶三角单元的唯一差异在于本构矩阵D的计算。另一个需要注意的要点是,由于应力是通过将本构矩阵 D 乘以应变矢量来计算的,并且应变分量在 x 和 y 方向上线性变化,因此应力分量也将在 x 和 y 方向上线性变化。 刚度矩阵 [k]现在我们已经定义了应变位移矩阵(B 矩阵)和本构矩阵(D 矩阵),我们可以评估二阶三角形单元的刚度矩阵。首先,我们需要计算单元的总应变能。 总应变能计算总应变能很重要,因为它使我们能够使用以下两种方法之一来评估单元刚度矩阵:卡斯蒂利亚诺第一定理总势能最小原理这两种方法都需要单元的总应变能,可以使用以下表达式计算: 总势能最小总势能的原理将用于评估刚度矩阵K。因此,我们首先需要计算单元的总势能,这可以使用以下表达式完成:这里,W 表示与单元内所有可能的节点力相关的功。这些力如下图所示:因此,W可以计算为: 这里因此,单元的总势能可以计算如下:总势能最小原理在稳定平衡条件下,物体的总势能最小化。为了找到最小值,我们将总势能函数求微分并使之为零。对于二阶三角单元,我们需要根据总势能函数对节点位移求微分,并将这些微分等于零,如下所示。这些导数将产生 12 个代数方程,可以用矩阵表示法表示如下:其中 是二阶三角单元的刚度矩阵。重要的是,这组12个代数方程表示x和y方向的每个节点处的平衡条件。例如,第一个方程对应于x方向上节点1的静态平衡,而第二个方程与y方向上节点1的静态平衡有关,依此类推。可以证明,刚度矩阵是使用以下表达式计算的,该表达式是从这 12 个导数导出的。正如预期的那样,刚度矩阵是一个 12×12 矩阵,是奇异且对称的。为了评估这种积分,通常使用数值集成,特别是在单元区域上应用的高斯正交过程。 结论这篇博文详细介绍了静态结构分析中使用的二阶三角形有限元的公式。有限元法 (FEM) 中使用的单元假设平面应力或应变条件、线弹性、各向同性、均质材料、xy 平面载荷和小位移。 要点元素特征:6 个节点,每个节点 2 个自由度 (DOF),总共 12 个 DOF。刚度矩阵: ,对称奇异。 位移功能:使用多项式定义 x 和 y 形函数。以矩阵形式表示的函数:应变 - 置换矩阵(B-Matrix): 从位移函数导出的应变分量:以矩阵形式表示: 应变变化:二阶单元提供应变的线性变化,与恒定应变三角形相比提高了计算效率。本构矩阵(D-matrix):适用于平面应力和平面应变条件。使用: 计算的应力分量 刚度矩阵([k]):通过总应变能或总势能计算。积分表达式: 使用数值积分求解,通常是高斯积分法。等参公式等级公式也可以应用于此元素。这种方法的优点是它使用相同的形状函数来插值元素的几何形状和位移。由于二阶三角元素的形状函数是二次函数,因此使用等法公式可以使三角形的侧面弯曲,符合二阶多项式。该特征对于表示域的弯曲部分(例如孔)特别有用。准确地表示几何形状,从而降低计算成本所需的元素更少。下图说明了使用等参公式制定的元素与按照此处描述的方式制定的元素之间的差异。来源:ABAQUS仿真世界

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈