Skip to main content

3. 使用Fatigue

3.1 Fatigue计算流程和文件组成

Fatigue的计算流程

一般情况下,用户无需了解内部的具体计算过程,只需要了解计算过程中所涉及的文件所起作用,以及在实际计算过程中应如何准备这些文件。Fatigue进行疲劳寿命分析的计算流程与疲劳寿命计算理论相对应,包含以下步骤:

  1. 运行Fatigue程序,读入控制命令
  2. 模型处理:读入不同格式的有限元网格文件
  3. 模型处理:建立有限元模型的结点拓扑关系
  4. 载荷处理:读入载荷工况定义数据
  5. 载荷处理:读入有限元计算得到的应力数据
  6. 载荷处理:对不同载荷历程数据与应力文件数据进行关联
  7. 载荷处理:建立和检查应力数据与模型数据对应关系
  8. 应力计算:组合应力和模型数据计算各个结点应力历程
  9. 应力计算:计算各结点在不同加载条件下的等效疲劳应力
  10. 疲劳计算:采用不同方式对疲劳应力历程进行雨流计数
  11. 疲劳计算:读入SN数据,采用不同疲劳模型计算累积损伤
  12. 结果输出:输出各种计算结果、便于疲劳寿命显示

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单元类型的对应关系可参考以下链接:

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
            }
        }
    }
}

具体说明如下:

  • 文件中包含有两个LoadCase1LoadCase2两个载荷工况,表示结构先受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/snsnSN数据块
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的脚本文件和命令行有以下几个规则:

  1. Fatigue的每个命令占一行,可以通过“&”符号来继行,Fatigue一次只读入条命令,只有当前命令正确地执行完了,它才读入下一条命令。
  2. Fatigue的注释符号是“#”,所有出现在“#”后的字符都将视为注释。
  3. Fatigue包含以下几个主命令:input, output, mesh, material, loads, life,每个主命令包含有一些动作命令(Action)和可选参数(Options),一般情况下,不同动作命令的执行和可选参数的设置是有顺序的。
  4. 命令的名称是大小写敏感的。主命令可以采用缩写形式,可取主命令的前几个字母(不少于3个)来代替主命令,例如:out、outp、outpu、都被视为output命令,但动作命令和可选参数不能支持缩写形式。
  5. 每个命令行需要以Fatigue的主命令作为开始,包含“=”号的变量赋值行除外。每个命令的各个参数之间通过空格符分开,一个主命令后可以跟多个动作命令和可选参数。
  6. 每个主命令和动作命令的参数可以用变量名代替(关于变量见下文的说明)。

脚本文件的内容

对于一个典型的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最小应力应力历程中的最小应力