表面应变计算(Surface strain calculation)

1. 背景介绍

应力-应变曲线能够有效地帮助我们分析材料的力学性能,应力指物体单位面积上所受到力的大小,应变指物体的相对变形量。正应变描述的是沿着某一方向上长度的变化量,而切应变描述的是角度的变化量。
Alt根据力的大小可根据胡克定律理论上计算得到任意位置应变。对于现代的测量方式而言,主要有引伸计、应变片、光学测量等方式,光学测量因非接触、精度高的特点,在工业测量领域受到高度关注。
在这里插入图片描述

2 变形梯度张量

光学测量使用数字图像相关法(Digital Image Correlation, DIC)获得被测物体表面的变形情况,因此,计算的是表面应变(Surface Strain)。在连续介质力学中,描述物体运动的方式有两种,即Lagrange描述与Euler描述。前者以不同时刻下物体的位置为研究对象,而后者以固定空间内的变化为对象。本文中我们在Lagrange描述下进行分析。
在这里插入图片描述
上图中,参考位置 P Q ⃗ \vec{PQ} PQ ,在 t t t刻为 p q ⃗ \vec{pq} pq ,P和Q的位移量分别为 u ( X ) u(\bf{X}) u(X), u ( X + d X ) u({\bf{X}}+d\bf{X}) u(X+dX),该过程的运动描述为 x = χ ( X , t ) {\bf{x}}=\chi({\bf{X}},t) x=χ(X,t)。根据应变的定义可知,要想得到应变,就需要建立 d x d{\bf{x}} dx d X d{\bf{X}} dX之间的关系,根据图示,很容易能够得到 d x = d X + d u d{\bf{x}}=d{\bf{X}}+d{\bf{u}} dx=dX+du,进一步可知
在这里插入图片描述
其中, d u d{\bf{u}} du是相对位移, F \bf{F} F为变形梯度张量(Deformation Gradient Tensor)。根据运动描述 x = χ ( X , t ) {\bf{x}}=\chi({\bf{X}},t) x=χ(X,t)的全微分形式
在这里插入图片描述
由此前两式可知,变形梯度张量 F \bf{F} F实际上是该物体运动描述函数的梯度。 d x d{\bf{x}} dx如果理解为变形后 p q ⃗ \vec{pq} pq 的长度,那么变形前长度就是 d X d{\bf{X}} dX,因此,只要能够得到 F \bf{F} F,就能计算出应变大小。关于变形梯度张量 F \bf{F} F的计算,若是已知运动方程,则只需要根据方程,求 F = [ ∂ x / ∂ X ∂ x / ∂ Y ∂ y / ∂ X ∂ y / ∂ Y ] {\bf{F}}=\begin{bmatrix} \partial{x}/\partial{X} & \partial{x}/\partial{Y} \\ \partial{y}/\partial{X} & \partial{y}/\partial{Y} \\ \end{bmatrix} F=[x/Xy/Xx/Yy/Y]的偏导数矩阵即可,如下所示的计算例子。
在这里插入图片描述前述内容是关于变形梯度张量的代数意义,而它在几何上的意义可以用公式表示为 F = R U \bf{F=RU} F=RU它表示的是连续介质刚体旋转与变形的过程,如下图所示,立方体在变形矩阵 U \bf{U} U作用下变形为长方体,其后做刚体旋转 R \bf{R} R,最终为 t t t时刻状态。或者也可以先旋转再变形, F = V R \bf{F=VR} F=VR
在这里插入图片描述

3. 表面应变计方法一

实际情况运动方程是未知的,那应该如何求解 F \bf{F} F。根据前面的式子可知, F = I + ∇ x u {\bf{F}}={\bf{I}}+\nabla_x{\bf{u}} F=I+xu如果能得到相对位移的梯度,那就能得到 F \bf{F} F。使用DIC设备匹配散斑图像,重建能够得到匹配点的三维坐标,同时计算得到位移。但是,这些这些数据都是离散的,如何来求相对位移的梯度呢?常用的方法就是拟合,根据这些离散点的坐标为自变量,位移为因变量,拟合得到函数 u ( X , Y ) u(X,Y) u(X,Y), v ( X , Y ) v(X,Y) v(X,Y)。然后,求函数梯度,即可得到 F \bf{F} F在这里插入图片描述根据 F \bf{F} F,计算得到格林-拉格朗日应变张量(Green-Lagrange tensor),
在这里插入图片描述

3.1 局部坐标系建立

DIC结果得到的实际上是一个没有厚度的面片,Surface strain或者Plain strain就是说,应变计算是一个沿着表面的、二维的度量。利用 3 × 3 3\times3 3×3 7 × 7 7\times7 7×7或者其他局部范围内的点来构造一个平面,以此建立局部坐标系,有两种方式:一是这些点的拟合平面;二是在局部中心点处的切平面。
在这里插入图片描述采用构造切平面的方式,使用局部 3 × 3 3\times3 3×3内点坐标,拟合二次曲面 z = f ( x , y ) z=f(x,y) z=f(x,y),法向量为
在这里插入图片描述
切向量有无数条,关于切向量的选取,只需要固定 x x x y y y为一常数,从而确定一个切向量。它的选取最好能与沿着物体变形的方向。
在这里插入图片描述
根据向量叉乘得到另一个坐标轴,由此,获得 n ⃗ \vec{n} n , t ⃗ \vec{t} t , b ⃗ \vec{b} b 单位向量构建的局部坐标系
在这里插入图片描述

3.2 位移函数拟合

值得注意的是,每个点的位移量值不是将点投影到局部坐标系,然后做差。这种做法只适合于小弯曲变形情况,在Andresen 1999年撰写的论文中就有提到在大弯曲变形情况下,这种做法准确性很低。Surface strain, 是沿着表面方向发生的变形量,准确的来讲,应该使用弧长而不是位移向量,如图所示。换句话说,相当于把面展开成平面。,准确的方法应该是在上一步建立的局部坐标下,将重建的三维点,根据拟合的二次曲面 z = f ( x , y ) z=f(x,y) z=f(x,y)沿展到 t o b tob tob面内,最后在 t o b tob tob面内得到每一个点的“位移量”。

在这里插入图片描述
假设点的位移模式为如下二次形式

在这里插入图片描述
现在已知每一个点在 t o b tob tob面内的坐标 ( x 1 , x 2 ) (x_1,x_2) (x1,x2),以及该点的在 x 1 x_1 x1方向的“位移” u ( x 1 , x 2 ) u(x_1,x_2) u(x1,x2),如果选取的是 3 × 3 3\times3 3×3的点,9个方程,6个未知系数,利用最小二乘法求解,得到函数的表达式。

3.3 位移函数偏导

由前述得到位移函数的表达式之后,也就能计算得到 ∂ u / ∂ x 1 = β 2 \partial u/\partial x_1 = \beta_2 u/x1=β2 ∂ u / ∂ x 2 = β 3 \partial u/\partial x_2 = \beta_3 u/x2=β3同理得到另一个方向的偏导数,带入上述变形梯度张量 F \bf{F} F的计算中,最终求解格林应变张量。根据3.1~3.3的步骤,遍历DIC重建得到的每一个点,由此可以获得物体表面变形的应变分布。

4. 表面应变计算方法二

通过第3节中的计算过程,其实可以看出来,连续变形过程的应变计算本质上讲就是位移的变化率,用公式来说就是 s t r a i n s = ∇ d i s p l a c e m e n t s strains = \nabla displacements strains=displacements这里通过搜集的资料,给大家分享第二种表面应变计算方法,其本质没有变,只是策略是利用了有限元理论中,三角形单元的应变计算。
既然DIC设备重建得到的是点的信息,那就可以将这些点连接为一个个的三角形,三角形内任意点的位移可以根据如下位移模式得到
在这里插入图片描述
方程中含有6个未知数,三角形的每一个定点坐标与位移量大小都是DIC获取的,每一点能够建立两个方程,那么3个点正好6个方程,可以求解 a 1 , a 2 , . . . , a 6 a_1,a_2,...,a_6 a1,a2,...,a6。同样地,就可以得到位移的梯度
∂ u / ∂ x = a 2 , ∂ u / ∂ y = a 3 \partial u/\partial x = a_2, \partial u/\partial y = a_3 u/x=a2,u/y=a3 ∂ v / ∂ x = a 5 , ∂ v / ∂ y = a 6 \partial v/\partial x = a_5, \partial v/\partial y = a_6 v/x=a5,v/y=a6代入变形梯度张量公式与格林应变公式,即可得到结果。三角形单元是一次形式的单元,单元内任意一点的应变是一个常数,那么在四个三角形中心点处的应变,需要求平均值。
在这里插入图片描述同样地,遍历所有点,构造周围四个三角形,得到该点格林应变。由上述过程可以看出,该方法的前提就是获取点之间的间距必须足够小,否则对于大变形的情况精度会很差,而方法一的误差则主要来自于拟合误差。

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
在 Abaqus 中使用 Python 脚本计算整个结构的平均应力应变并输出为应力应变关系的 txt 文档,可以按照以下步骤进行: 1. 在 Abaqus 中建立一个分析模型,并进行力学分析。确保分析结果包含了每个单元的应力应变信息。 2. 在 Abaqus 中创建一个脚本。在菜单栏中选择“File”->“New”->“Script”,或者使用快捷键“Ctrl+N”。 3. 在脚本中导入必要的模块,例如 abaqusConstants、odbAccess 和 numpy。代码如下: ``` from abaqus import * from abaqusConstants import * from odbAccess import * import numpy as np ``` 4. 获取当前分析模型的 ODB 文件,并打开它。代码如下: ``` odb = openOdb('Job-1.odb') ``` 5. 获取 ODB 文件中的应力应变数据,并计算平均值。代码如下: ``` stress = [] strain = [] for frame in odb.steps['Step-1'].frames: stress.append(frame.fieldOutputs['S'].getScalarField(componentLabel='S11').values[0].data) strain.append(frame.fieldOutputs['LE'].getScalarField(componentLabel='LE11').values[0].data) stress_avg = np.mean(stress) strain_avg = np.mean(strain) ``` 6. 将平均应力应变数据输出到一个 txt 文件中。代码如下: ``` with open('stress_strain.txt', 'w') as f: f.write('Stress\tStrain\n') for i in range(len(stress)): f.write('{}\t{}\n'.format(stress[i], strain[i])) f.write('Average\t{}\t{}\n'.format(stress_avg, strain_avg)) ``` 7. 运行脚本并查看输出的 txt 文件。 以上就是在 Abaqus 中使用 Python 脚本计算整个结构的平均应力应变并输出为应力应变关系的 txt 文档的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leaf_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值