4. 算例分析
下面采用Fatigue对以图4.1中所示铆接连接结构进行疲劳寿命分析为例,介绍如何使用Fatigue程序。该结构在服役过程中受到三个载荷:螺栓预紧力,两个连接口的动载荷F5、F6,分析在这三个载荷作用下结构的疲劳寿命。
图4.1 铆接连接结构
4.1 模型文件
根据Fatigue计算程序的要求,需要提供该结构的有限元网格文件,文件内容参见example/bolted-joint/fem-model.txt,该结构的网格划分如图4.2所示。这是一个由ANSYS生成的网格文件,包含模型的结点和单元信息。Fatigue程序将分析单元和结点之间的拓扑关系,并找出所有的表面结点用于疲劳寿命计算。
图4.2 铆接连接结构的有限元模型
对于该模型文件的读入,可采用以下Fatigue程序的命令:
mesh read model fem-model.txt -style ansys -surface 3d
mesh write model fem-model.tet -style tetgen
第一行命令表示以ANSYS文件格式读入fem-model.txt文件,并告知Fatigue程序这是一个三维体系,需要识别三维模型的表面结点。
第二行命令表示将读入的模型以TETGEN格式输出到文件fem-model.tet,该文件类型可以通过开发者的Moleshow软件进行可视化。
4.2 载荷工况文件
文件内容参见example/bolted-joint/load-cases.json。下面是该文件的内容结构:
{
"A": {
"repeats": 750000.0,
"components": {
"Pret": {
"scale": 1.0,
"data": [ ... ],
"unit": "x143kN",
"offset": 0.0
},
"F5": {
"scale": 1.0,
"data": [ ... ],
"unit": "x100kN",
"offset": 0.0
},
"F6": {
"scale": 1.0,
"data": [ ... ],
"unit": "x100kN",
"offset": 0.0
},
"Time": {
"scale": 1.0,
"data": [ ... ],
"unit": "s",
"offset": 0.0
}
}
},
"B": {
"repeats": 750000.0,
"components": {
"Pret": {
"scale": 1.0,
"data": [ ... ],
"unit": "x143kN",
"offset": 0.0
},
......
},
......
首先,该载荷文件中包含了4个工况:A、B、C、D,表示该结构将先后经历这4个工况的作用,计算疲劳损伤时,是这4个工况所产生的损伤之和。
4个工况的数据内容都是类似的,以工况A的数据展开说明。其中repeats变量表示A工况会重复750000.0次。例如,如果A工况重复一次表示外部某一旋转部件旋转一圈所造成的载荷-时间数据,那么旋转750000次的情况就可以通过repeats来表示而不需要将数据复制750000次。
A工况包含有4个数据定义:Pret、F5、F6以及Time。其中Time表示载荷数据点对应的时间,而其它3个数据分别表示不同时间点对应的载荷大小。Pret表示预紧载荷,由于预紧载荷是结构在初始状态就存在的,而且后面不随时间变化,所以所有时间点的数据都是1.0。而F5、F6的载荷是随时间变化的。每个数据定义的格式和含义请参见3.4节。
对于该载荷文件的读入,可采用以下Fatigue程序的命令:
loads read cases load-cases.json -style json
该命令表示以JSON数据格式读入载荷工况数据文件。
4.3 应力数据文件
由于结构受到三个载荷作用:螺栓预紧力(Pretension),两个连接口的动载荷F5、F6,需要提前针对每个载荷产生对应的应力文件。
其中螺栓预紧力的应力文件example/bolted-joint/stress-Pretension.fes是通过在结构施加单位螺栓预紧力,开展有限元计算得到的结构应力分布数据。在有限元计算中预紧力的大小不一定要设为1.0,也可以是比较大的载荷。例如,如果真实工况下预紧力为10.0,那么既可以在有限元计算施加1.0的作用力,在载荷定义中Pret的数据值设为10.0;也可以在有限元计算施加2.0的作用力,而在载荷定义中Pret的数据值设为5.0,两者的效果是一样的(也可能通过修改Pret数据的scale值来调整)。其它载荷应力的计算也是类型的。
由于动载荷F5和F6在正和负值条件下产生的应力是不一样的,即存在拉压不对称的情况。因此,针对F5和F6,分别用有限元计算了正负100 kN两种情况下的应力分布数据。这样在进行应力组合时,如果F5在某个时间点为负,则采用负载荷的应力进行计算,反之采用正载荷的应力数据。F5、F6对应的应力文件内容参见example/bolted-joint目录下的stress-F5+100kN.fes、stress-F5-100kN.fes、stress-F6+100kN.fes、stress-F6-100kN.fes。
为了将这些应力文件与载荷工况文件相联系起来,可采用以下Fatigue程序的命令:
loads read stress sPret 1d-linear Pret 1.0 stress-Pretension.fes -style ansys
loads read stress sF5 1d-bilinear F5 -1.0 stress-F5-100kN.fes -style ansys
loads read stress sF5 1d-bilinear F5 1.0 stress-F5+100kN.fes -style ansys
loads read stress sF6 1d-bilinear F6 -1.0 stress-F6-100kN.fes -style ansys
loads read stress sF6 1d-bilinear F6 1.0 stress-F6+100kN.fes -style ansys
第一行命令表示,以ANSYS格式读入stress-Pretension.fes应力文件数据,并与载荷工况文件中的载荷名称“Pret”相关联起来,sPret是对该应力数据给一个名字;1d-linear表示在应力计算中采用线性插值;1.0表示这个应力文件是在螺栓预紧力为1.0的状态下计算得到的。
第二行命令表示,以ANSYS格式读入stress-F5-100kN.fes应力文件数据,并与载荷工况文件中的载荷名称“F5”相关联起来,1d-bilinear表示在应力计算中用一维双线性插值; -1.0表示这个应力文件是在螺栓预紧力为-1.0的状态下计算得到的(这里没有与-100 kN对应,是因为在载荷工况数据中进行了对应的缩放,这里需要用一个负数表示负加载即)。
后面几行的命令功能与第二行的类似。通过这几行命令,Fatigue程序会将应力文件和载荷工况数据联系起来。对于不同的需求,可以对各个载荷文件和应力文件进行不同组合。
4.4 SN数据文件
SN数据文件内容参见example/bolted-joint/sn-steel0.json。文件中变量的具体参数可以参见3.5节说明。SN数据文件的读入采用以下Fatigue程序的命令:
mater read steel0 sn-steel0.json
第一行命令表示读入材料文件sn-steel0.json,并将材料命名为steel0,在后面的疲劳寿命计算中可以针对不同的结构指定不同的材料名称,从面实现采用不同的材料进行计算。
4.5 疲劳寿命计算设置
在疲劳寿命计算中有许多不同的方法可以采用,这些方法的选择可以通过类似以下命令来实现:
life set surface -mat steel0 -smode pnmax -cmode rainflow
life run -report 10
life export result.txt -style text
第一行命令表示,将surface结点集的材料设置为steel0的SN数据,疲劳应力计算方法采用最大主应力方式(pnmax),循环计算采用雨流计数方法(rainflow)。
第二行命令表示开始进行疲劳寿命计算,在计算过程中的输出频率为10。
第三行命令表示将疲劳寿命计算结果以TEXT格式输出到results.txt文件。
图4.3是计算得到的疲劳寿命云图,该云图是采用Moleshow进行显示。
图4.3 计算得到的疲劳寿命云图
4.6 命令流文件
以上计算过程的命令流文件参见example/bolted-joint/script-run.scp
No Comments