3. 使用Fatigue
3.1 Fatigue计算流程和文件组成
Fatigue的计算流程
一般情况下,用户无需了解内部的具体计算过程,只需要了解计算过程中所涉及的文件所起作用,以及在实际计算过程中应如何准备这些文件。Fatigue进行疲劳寿命分析的计算流程与疲劳寿命计算理论相对应,包含以下步骤:
- 运行Fatigue程序,读入控制命令
- 模型处理:读入不同格式的有限元网格文件
- 模型处理:建立有限元模型的结点拓扑关系
- 载荷处理:读入载荷工况定义数据
- 载荷处理:读入有限元计算得到的应力数据
- 载荷处理:对不同载荷历程数据与应力文件数据进行关联
- 载荷处理:建立和检查应力数据与模型数据对应关系
- 应力计算:组合应力和模型数据计算各个结点应力历程
- 应力计算:计算各结点在不同加载条件下的等效疲劳应力
- 疲劳计算:采用不同方式对疲劳应力历程进行雨流计数
- 疲劳计算:读入SN数据,采用不同疲劳模型计算累积损伤
- 结果输出:输出各种计算结果、便于疲劳寿命显示
Fatigue计算的文件组成
图3.1展示了运行Fatigue进行疲劳寿命分析所需要的输入文件以及计算输出文件。下面将分别介绍各个文件的内容和格式,以及Faigue软件的运行方式。
这些文件的准备方式不一样,其中模型文件和应力文件可以通过有限元软件生成;载荷文件需要用户根据实际情况用MATLAB或自编程序基于实验数据生成;SN文件可基于已有了文件模板和实验数据进行修改得到;命令流文件需要用户根据实际计算需求和命令流格式进行编辑生成。这些文件一般都是文本格式的,可以采用文本编辑器打开编辑。
图3.1 Fatigue运行的文件组成
3.2 模型文件
模型文件给出有限元离散后的结构数据,包括结点和单元定义、结点和单元分组等。该数据一般由有限元计算软件输出,目前支持ANSYS的mesh格式文件或CDB文件、ABAQUS的inp格式文件。支持输入的单元类型包括:
- ABAQUS:C3D20、C3D10、C3D4、S8R、S3、S4、CPS3、SPRINGA、COMBIN14、CPE4、MASS、ROTARYI
- ANSYS:SOLID186、SOLID187、SURF154、STRI65、SURF153、PLANE182
Fatigue可以识别文件中的以上单元类型,但并不是所有单元类型都将用于疲劳寿命计算,用于计算的主要是三维体单元和二维面单元。如果需要支持其它单元,可与开发者联系添加。ANSYS和ABAQUS单元类型的对应关系可参考以下链接:
- Translating ANSYS input files to partial Abaqus input files
- ABAQUS Element Types Supported by FE Modeler
3.3 应力文件
应力文件给出模型中结点处的应力分量值。三维和二维情况下,应力分量都包括:$\sigma_{xx}$,$\sigma_{yy}$,$\sigma_{zz}$,$\sigma_{xy}$,$\sigma_{yz}$,$\sigma_{xz}$。目前支持的输入格式为ANSYS的应力文件格式,用其它软件输出的数据可按算例文件格式进行调整,具体格式为:
COMMENTS LINE
NODE SX SY SZ SXY SYZ SXZ
1 3.7834 0.26638 0.0000 -0.3E-01 0.0000 0.0000
2 0.44745E-02-0.13820E-01 0.0000 0.1E-01 0.0000 0.0000
应力文件的准备应注意以下几点:
- 注意格式文件中SYZ和SXZ的位置
- 一个应力文件对一种单位载荷作用时各结点的应力值,多个单位载荷组合作用时,应准备多个与之对应的应力文件
- 应力文件中可以不需要列出所有结点的应力值,可以只列出需要计算疲劳寿命的结点应力值。Fatigue在计算过程中,取所有结点的最小集
3.4 载荷文件
载荷文件给出各单位载荷的作用历程。为让用户更灵活地编辑和控制载荷文件,载荷文件以JSON形式给出,具体数据格式为:
{
"LoadCase1": {
"repeats": 2000.0,
"components": {
"Fx": {
"scale": 1.0,
"data": [50.0, 52.5, 54.9, ... ],
"unit": "N",
"offset": 0.0
},
"Time": {
"scale": 1.0,
"data": [0.0, 0.1, 0.2, ... ],
"unit": "s",
"offset": 0.0
}
}
},
"LoadCase2": {
"repeats": 2000000.0,
"components": {
"Fx": {
"scale": 1.0,
"data": [50.0, 52.5, 54.9, ... ],
"unit": "N",
"offset": 0.0
},
"Time": {
"scale": 1.0,
"data": [0.0, 0.1, 0.2, ... ],
"unit": "s",
"offset": 0.0
}
}
}
}
具体说明如下:
- 文件中包含有两个
LoadCase1
和LoadCase2
两个载荷工况,表示结构先受LoadCase1
作用,然后进行LoadCase2
作用,疲劳寿命是两个载荷工况连续作用的结果。 - 在
LoadCase1
中,repeats
表示该载荷工况作用多少个循环。 - 每个载荷工况中又包含多个数据列
components
,这些数据列可在计算输入文件中进行选择,与应力文件建立对应关系。 - 数据列
Fx
表示Fx作用时的载荷历程,而Fx单位载荷作用时的结构应力文件则单独给出。 -
scale
表示数据列的放大系数,data
表示数据列的具体数值,unit
表示该数据列的单位,offset
表示数据列的偏移值,Fatigue在读入数据列之后,根据这些设定对数据进行对应的操作。
3.5 材料S-N性能文件
材料性能文件给出材料的力学性能,如弹性常数、疲劳性能数据S-N曲线等,文件格式为JSON。下面是一个典型的材料性能文件:
{
"Header": {
"author": "Pan Xiao",
"description": "default test material"
},
"Density": {
"value": 7800.0
},
"Elasticity": {
"youngthModulus": 200.0,
"poissonRatio": 0.3
},
"Fatigue": {
"style": "custom",
"comments": "default SN curve from fatlab",
"sn": {
"slope1": 3.0,
"slope2": 5.0,
"fatigueStrength": 100.0,
"associatedCycles": 2000000,
"kneePointStress": 43.3188,
"kneePointCycles": 10000000,
"stressMin": 0.0,
"stressMax": 1000.0,
"safetyFactor": 1.35,
"allowableDamage": 1.0
},
"meanStress": {
"mode": "None",
"sensitivity": 0.2,
"yieldStrength": 235.0,
"tensileStrength": 370.0,
"avoidYielding": 0,
"extrapolateInCompression": 0
}
}
}
以上参数可参考疲劳寿命计算理论简介的2.3 计算中的SN曲线参数一节中的相关参数。具体含义如下表所示。
数据位置 | 参数名称 | 参数说明 |
---|---|---|
Header/author | 作者 | 用于记录数据或修改数据的人员 |
Header/description | 描述 | 用于描述这个文件的一些基本信息 |
Density/value | 密度 | 材料的密度(一般疲劳计算中没有用到) |
Elasticity/youngthModulus | $E$ | 材料的杨氏模量 |
Elasticity/poissonRatio | $\mu$ | 材料的泊松比 |
Fatigue/style | 格式 | 用于表示采用何种疲劳数据格式,一般为custom |
Fatigue/comments | 描述 | 用于对当前疲劳数据的说明文字 |
Fatigue/sn | sn | SN数据块 |
sn/slope1 | $m_1$ | SN曲线第一斜线段的斜率 |
sn/slope2 | $m_2$ | SN曲线第二斜线段的斜率 |
sn/fatigueStrength | $\Delta \sigma_{R1}$ | 疲劳强度,单位为MPa |
sn/associatedCycles | $N_{R1}$ | 疲劳强度对应的循环次数 |
sn/kneePointStress | $\Delta \sigma_{R2}$ | 拐点应力(m1和m2段的分隔点,单位为MPa,可以不提供,程序会根据参数$N_{k1}$和其它参数计算得到) |
sn/kneePointCycles | $N_{R2}$ | 拐点处的循环次数 |
sn/stressMin | $\Delta \sigma_{Rmin}$ | 最小截断应力,单位为MPa |
sn/stressMax | $\Delta \sigma_{Rmax}$ | 最大截断应力,单位为MPa |
sn/safetyFactor | $\gamma_{Mf}$ | 安全系数($\ge 1$) |
sn/allowableDamage | $D_a$ | 容许的疲劳损伤值($\ge 1$) |
Fatigue/meanStress | 平均应力修正数据块 | |
meanStress/mode | 方法 | 平均应力修正方式,可选的参数为:none, linear, bilinear, soderberg, modified-goodman, gerber-parabola, smith-watson-topper, 60-compression, iiw-low-rs, iiw-medium-rs, fkm,具体修正方式及其对应的参数请见平均应力修正部分。 |
sensitivity | $M$ | 平均应力灵敏度 |
yieldStrength | $\sigma_{y}$ | 屈服极限 |
tensileStrength | $\sigma_{u}$ | 拉伸强度极限 |
avoidYielding | 避免屈服,取值为0或者1 | |
extrapolateInCompression | 采用压缩外推,取值为0或者1 |
3.6 运行Fatigue
Fatigue通过用户所给的命令来完成计算任务。有以下三种方法可以向Fatigue中输入命令:
- 打开Fatigue之后,从屏幕中输入命令,这也是运行Fatigue后默认的方式
- 给定一个脚本文件让Fatigue去执行
- 用一个脚本文件做为Fatigue的启动参数,这通常用于提交并行或批量任务
每一个命令对应于一个特定的设置或动作,对于一些比较重要的命令,Fatigue会对执行结果给出一些状态信息。若遇到错误,Fatigue将给出相应的错误信息并且退出运行。Fatigue通常会将这些状态和错误信息输出到屏幕和日志文件。建议对每一个计算任务都通过“input log”命令指定一个日志文件,这样便于跟踪Fatigue的运行状态和错误信息。
命令行参数
当向并行机或远程计算机提交Fatigue计算任务时,向Fatigue传入命令行参数非常重要,比如指定脚本文件。运行形式为:
Fatigue [options]
Fatigue接收以下几个命令行参数:
-
filename
: 如果只给定一个命令行参数,Fatigue将会把它视作一个脚本文件,启动之后从中读取并执行命令。 -
-in filename
: 向Fatigue指定一个脚本文件。 -
-log filename
: 向Fatigue指定一个日志文件,用于输出状态和错误信息。 -
-title TitleString
: 向Fatigue指定运行任务名称,在脚本文件中可以采用“${Title}”来得到对应的字符串,用于作相关输出文件的文件名等。 -
-var vName vValue
: 向Fatigue定义一个变量并赋值,这个变量可以在脚本文件中使用,关于变量的定义规则,可见variable命令说明。
3.7 命令流文件
Fatigue可以从屏幕或脚本文件中读入命令。但在批处理或并行计算环境中,一般采用脚本文件来控制Fatigue的计算、输入输出过程。将脚本文件作为Fatigue的命令行参数输入形式为:
-
Fatigue filename.scp
-
Fatigue -in filename.scp
或者可以在打开Fatigue之后,在窗口命令输入: -
input filename.scp
脚本文件编写规则
Fatigue的脚本文件和命令行有以下几个规则:
- Fatigue的每个命令占一行,可以通过“&”符号来继行,Fatigue一次只读入条命令,只有当前命令正确地执行完了,它才读入下一条命令。
- Fatigue的注释符号是“#”,所有出现在“#”后的字符都将视为注释。
- Fatigue包含以下几个主命令:input, output, mesh, material, loads, life,每个主命令包含有一些动作命令(Action)和可选参数(Options),一般情况下,不同动作命令的执行和可选参数的设置是有顺序的。
- 命令的名称是大小写敏感的。主命令可以采用缩写形式,可取主命令的前几个字母(不少于3个)来代替主命令,例如:out、outp、outpu、都被视为output命令,但动作命令和可选参数不能支持缩写形式。
- 每个命令行需要以Fatigue的主命令作为开始,包含“=”号的变量赋值行除外。每个命令的各个参数之间通过空格符分开,一个主命令后可以跟多个动作命令和可选参数。
- 每个主命令和动作命令的参数可以用变量名代替(关于变量见下文的说明)。
脚本文件的内容
对于一个典型的Fatigue计算分析,在脚本文件中应该有以下几个命令段:
- 变量定义
定义脚本中需要用到的相关变量,可以包括数值型变量和字符型变量等。用于命令中需要用到的参数或文件名设置,详见主命令:variable
部分。
- 输入输出设置
指定脚本文件,日志信息的输出形式等,详见主命令:input
, output
部分。
- 模型数据设置
读入指定的模型数据文件,并对模型数据的处理设置可选操作,也可对模型数据进行输出,以检查数据读入的正确性,详见主命令:mesh
部分。
- 材料参数设置
控制读入材料性能数据,用于疲劳寿命计算,详见主命令:material
部分。
- 载荷数据设置
设置载荷历程和应力数据,建立载荷和应力文件之间的对应关系,详见主命令:loads
部分。
- 寿命计算控制
设置寿命计算所采用的算法、针对的结点集,对计算结果进行输出,控制计算过程中的输出信息等,详见主命令:life
部分。
脚本文件示例
下面是一个采用Fatigue方法计算结构的疲劳寿命控制脚本示例。
# output settings Definition
title = "${Script}"
input -echo both
output log ${title}.log -debug yes
# model data
mesh read model Bolted_joint/model.txt -style ansys -surface 3d
mesh write model Bolted_joint/model -style tetgen
# material data
mater read steel0 sn-steel0.json
# loads data
loads read cases Bolted_joint/loads.json -style json
loads read stress sPret 1d-linear Pret 1.0 Bolted_joint/Pret.fes -style ansys
loads read stress sF5 1d-bilinear F5 -1.0 Bolted_joint/F5-100kN.fes -style ansys
loads read stress sF5 1d-bilinear F5 1.0 Bolted_joint/F5+100kN.fes -style ansys
loads read stress sF6 1d-bilinear F6 -1.0 Bolted_joint/F6-100kN.fes -style ansys
loads read stress sF6 1d-bilinear F6 1.0 Bolted_joint/F6+100kN.fes -style ansys
# life run
life set surface -mat steel0 -smode pnmax -cmode rainflow
life run -report 10
life export Bolted_joint/result-pnmax.txt -style text
life export Bolted_joint/result-pnmax -style tetgen
3.8 疲劳结果文件
为便于结果显示,Fatigue计算结果文件可以输出成不同的格式,目前支持TEXT和TET两种格式的文件,下面是一个TEXT格式的Fatigue计算结果文件内容片段:
Number Node Dtot UR Napplied Nendurable dSeq dSmax Smax Smin
1 8509 0.000163 0.0547 8.25e+06 5.034e+10 2.527 11.041 5.828 -5.2134
2 8510 7.9972e-06 0.0199 3.75e+06 4.6892e+11 1.2013 6.0441 -8.2466 -14.291
......
文件中各参数的含义为:
变量名 | 名称 | 说明 |
---|---|---|
Number | 序号 | 数据行序号 |
Node | 结点编号 | 对应模型文件中的单元结点编号 |
Dtot | 累积损伤 | 计算得到的累积损伤 |
UR | 利用率 | 计算得到的累积损伤 |
Napplied | 载荷循环次数 | 累积的载荷循环次数 |
Nendurable | 疲劳寿命 | 疲劳寿命,请见理论说明2.9部分 |
dSeq | 等效应力水平 | 请见理论说明2.9部分 |
dSmax | 最大应力水平 | 应力历程中的最大应力水平 |
Smax | 最大应力 | 应力历程中的最大应力 |
Smin | 最小应力 | 应力历程中的最小应力 |
No Comments