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/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的脚本文件和命令行有以下几个规则:

  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 最小应力 应力历程中的最小应力