从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正

1 uel简要介绍

1.1 uel变量

在uel中,主要需要更新amatrix(雅克比矩阵)和rhs(右端残值项),如果有状态变量的话,也需要更新状态变量svars.

1.2 inp文件修改

并且要成功使用uel的话,需要对inp文件做以下修改,一一说明。

(1) 需要首先定义uel,加入以下keyword以及data line(s)

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图1

各变量的含义如下:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图2

该keyword下的data line(s)表示uel激活的自由度。

(2) 定义完uel之后,可以使用该uel,keyword以及data line(s)如下:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图3

(3) 接着需要给uel赋予性质

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图4

以C3D8单元计算一个各向同性材料为例,uel需要的性质为材料的杨氏模量和泊松比。

1.3 uel结果的可视化

由于Abaqus不支持uel结果的可视化,因此我们可以利用umat来辅助进行可视化。使用Abaqus的标准单元覆盖uel,即标准单元与uel共享节点,但是材料使用umat(设置一个很小的刚度),关键步骤在于使用common block将uel中的svars数据传递到umat中的statev中。

2 有限元离散方程

2.1 形函数

本部分记录八节点实体单元(C3D8)的刚度矩阵和内力列阵等 ,熟悉此部分可跳过。

该单元的节点编号顺序示意图如下:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图5

单元的形函数矩阵为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图6

参数坐标系下的形函数为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图7

因此形函数对参数坐标的导数为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图8

2.2 雅克比矩阵

利用形函数对参数坐标的导数矩阵和节点的物理坐标信息可以求得雅克比矩阵:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图9

具体公式为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图10

2.3 B矩阵

利用雅克比矩阵可以求得形函数对物理坐标的导数:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图11

从而可以组装B矩阵为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图12

2.4 单元刚度矩阵和内力列阵

单元的刚度矩阵和内力公式为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图13

uel的主要目的就是更新这两项,其中和的计算需要用到具体的本构方程。在此使用各向同性线弹性本构。

2.5 高斯积分

上述积分的计算需要使用数值积分,一维高斯积分点的坐标以及权系数如下:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图14

采用2x2x2的高斯积分点。

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图15

3 B bar 算法

B-bar算法将应变修正为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图16

式中:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图17

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图18

体应变插值B矩阵为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图19

记为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图20

也有:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图21

因此将B矩阵修正为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图22

4 测试

4.1 一个单元测试

对一个单元进行单轴拉伸测试,借助umat进行可视化时,在代码中设置参数为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图23

需要根据job的单元总数手动修改该参数。

位移结果为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图24

应变结果为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图25

应力结果为:

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图26

4.2 带孔板单轴拉伸测试

位移结果对比为(左列为Abaqus计算结果,右列为uel计算结果):

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图27

应变的对比结果为(左列为Abaqus计算结果,右列为uel计算结果):

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图28从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图29

应力的对比结果为(左列为Abaqus计算结果,右列为uel计算结果):

从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图30从C3D8的uel源代码入门Abaqus的uel编写, 更新B-Bar修正的图31

uel源代码

2024/03/27更新:已加入B-bar算法进行刚度矩阵的修正,可看到uel的计算结果已于Abaqus计算结果一致

该付费内容为:包括C3D8的uel源代码以及文中测试的计算inp文件,已更新加入B-bar修正

包含1个附件 3人购买
(4条)
默认 最新
代码编写很规范,美观,已验证无误,大家放心参考。泊松比取值0.45,梁两端固定,中间受集中荷载。刚度矩阵与ABAQUS保持一致。
评论 点赞 1
请问有matlab的吗
评论 2 点赞
回复
还能用MATLAB写uel吗,抱歉这块我不太清楚
评论 1 点赞
回复
技术邻有个iSolver团队,做了一个接口,可以用Matlab写UEL和UMAT。
评论 点赞

查看更多评论 >

点赞 9 评论 13 收藏 17
关注