主応力の応力幅を用いた疲労寿命の評価

今回は機械部品の静止時の主応力と稼働時の主応力を利用しての疲労寿命評価ツールを開発しました。 このトピックスはFemap APIを利用して、Femapから解析結果の取り出し、再加工したデータをFemapに書き戻す手法について紹介します。

概要

Femap with NX Nastran上で静止時および複数の稼働条件の解析を実施後、 各稼働条件と静止時の結果から主応力の応力幅を計算し、稼働時間、繰り返し数などの条件を加えて 累積損傷ダメージと疲労寿命を計算します。 最後に、累積損傷ダメージと疲労寿命の結果をFemapに書き戻してポスト処理を行います。

Femapから特定の解析結果を取り出す

Femapから特定の解析結果を取り出すには、OutputオブジェクトのGetOutpuList関数を使います。 書式
GetOutputList(ByRef listcount As Integer,  ByRef ID As object, ByRef value as object);
説明
アウトプットベクトルを取り出すメソッド
入力
なし
出力
INT4 listcount
ID 配列とvalue 配列の各エントリ数
INT4 ID[0..N]
アウトプットがあるノード/エレメントのID
REAL8 value[0..N]
ID 配列のノード/エレメントに当たるアウトプット値
下記はPlate Top X Normal Stressの結果取り出しコードを示します。
'
'特定のアウトプットベクトル結果を取り出す
'
Dim listCount As Integer 'エレメント数を格納する
Dim eids() As Integer = Nothing  'エレメントIDを格納する
Dim values() As Double = Nothing 'エレメント結果を格納する

Dim FeModel As object = GetObject(, "femap.model")  'Femapモデルオブジェクトを取得する
Dim outvec As object = FeModel.feOutput  'アウトプットベクトルオブジェクトを初期化

With outvec
     .setID = 1 'アウトプットセットIDをセットする
     .Get(7020)  'Plate Top X Normal StressベクトルIDを指定する                   
     .GetOutputList(listCount, eids, values) '結果を取り出す
End With
 

疲労寿命の計算

主応力幅の計算

二つの解析セットの主応力幅の計算すには、以下のように、各応力成分の差を計算後、応力成分から最大・最小主応力を求めます。
$$ \sigma_x = Case2\sigma_x – Case1\sigma_x \tag{1}$$ $$ \sigma_y = Case2\sigma_y – Case1\sigma_y \tag{2}$$ $$ \tau_{xy} = Case2\tau_{xy} – Case1\tau_{xy} \tag{3}$$ $$ \theta=\frac{1}{2} \tan^{-1}(\frac{2\tau_{xy}}{σ_x – σ_y}) \tag{4}$$ $$ 最大主応力 \sigma_1= \sigma_x \cos^2\theta + \sigma_y \sin^2\theta + 2\tau_{xy}\sin⁡\theta \cos⁡\theta \tag{5}$$ $$ 最小主応力 \sigma_3= \sigma_x \sin^2\theta + \sigma_y \cos^2\theta – 2\tau_{xy}\sin\theta \cos⁡\theta \tag{6}$$ $$ 応力幅 A = 最大主応力\sigma_1 – 最小主応力\sigma_3 \tag{7} $$

疲労寿命の計算

各テストケースの頻度をμ、応力集中係数をα、SN線図の傾きをβ、基準応力をγ、基準繰り返し数をδとして定義した場合、 累積損傷ダメージおよび疲労寿命は以下の式で計算します。
$$ 累積損傷ダメージ: D = \sum{\left\{\frac{\mu_i}{\delta}\times\left(\frac{A_i}{\gamma}\right)^\beta\right\}} \tag{8}$$ $$ 疲労寿命: L=\frac{1}{D} \tag{9} $$

Femapへ結果を書き込み

計算後の結果をFemapに書き戻すには、PutOutputList関数を利用します。 以下Femapに結果書き戻すコードを示します。
'
'Femapへ結果を書き込み
'
Dim FeModel As object = GetObject(, "femap.model")  'Femapモデルオブジェクトを取得する
Dim outvec As object = FeModel.feOutput  'アウトプットベクトルオブジェクトを初期化
Dim outset As object = FeModel.feOutputSet 'アウトプットセットオブジェクトを初期化

'新しいアウトプットセット作成
Dim setid As Integer = FeModel.Info_MaxID(femap.zDataType.FT_OUT_CASE) + 1
With outset
      .ID = setid
      .title = "計算後のアウトプットセット"
      .Put(setid)
End With

'計算後のアウトプットベクトルID(任意)
Dim vecid As Integer = 7020
outset.Get(setid) '作成したアウトプットセットをアクティブ化
outvec.InitScalarAtElem(setid, vecid, "計算後の結果ベクトル", femap.zOutputType.FOT_STRESS, False)
outvec.PutOutputList(listCount, eids, newvalues)
With outvec
      .setID = setid
      .ID = vecid
      .Put(vecid)
End With

ポスト処理

計算結果をFemapに書き戻すと、Femapの標準ポスト処理機能を利用してコンター図を確認することができます。 疲労評価結果ポスト処理

関連製品

Femap

Femap

Widowsベースの高性能・汎用プリ・ポストプロセッサー、多彩なCADI/F、高度なFEM I/F、高機能ポスト処理できます。

 NX Nastran

NX Nastran

40年以上にわたって、応力、振動、構造的な不具合、熱伝導、音響、および空力弾性を解析するための業界標準の有限要素ソルバ―です。