OpenRadioss

【OpenRadioss入門】引張試験片の設定方法

こんにちは(@t_kun_kamakiri

Altairのサイトにこれまで商用利用としていたRadiossを2022年9月からオープンソース化するという内容の記事が投稿されていました。RadiossといえばLS-DYNAやPAM-Crashなどと並ぶAltairの衝突系(衝撃解析)の解析ソフトのイメージが強いですが、それが無償で使えるようになったというのはなかなかの衝撃でした。

今回解説するのはこちらの試験片を引張った際の挙動です。

Altair社が提供している無償のHyper View Playerでは以下のように試験片が破断する様子が可視化されていますが、ParaViewでは伸びるだけです。(設定次第かもしれません)

Radiossはキーワードというカードで設定を記述する必要があります。
そのため、GUI操作で順番にボタンをポチポチ押して行って設定するという感じではなく、適切な解析条件を自分で選択して解析設定を行う必要があります。
無償のOpenRadiossにはAltair社のHyper WorksのようなGUIが無いため、設定に苦労します。本記事では、できるだけテキスト編集をメインにOpenRadiossの基本的な設定を解説します。

WSL2

モデルの設定ファイルはこちらです

github

解析設定の手順

解析設定にはStarterファイルとEngineファイルの作成が必要です。
今回は以下のファイル名で設定ファイルを作成します。

  • 001tensile_start_0000.rad:Starter ファイル(解析設定ファイル)
  • 001tensile_start_0001.rad:Engine ファイル(解析制御と出力設定ファイル)

節点と要素

モデルはメッシュという要素に分割されて作られています。

今回は扱うモデルは厚みのないシェル要素で、下の絵のように要素は3つもしくは4つの節点から構成されています。

  • 節点は節点のIDと$x,y,z$の座標を指定
  • 要素は3つもしくは4つの節点IDを指定

節点が3つで構成される要素は「/SH3N」のキーワードを使い、節点が4つの場合は「/SHELL」というキーワードを使います。

同時に「/SH3N/3」と「/SHELL/3」と数字を書くことでPARTのIDを設定しています。

テキストでの設定は以下のようになっています。

PARTはシェル要素から構成されており、シェル要素は節点から構成されているという具合になっています。

節点、シェル要素(ソリッド要素)がPARTと紐づいていることを確認したら、次に行うのはPARTに対するプロパティと材料特性の設定です。

材料特性の設定

OpenRadiossには多くの材料特性の設定が用意されており、こちらの材料一覧から確認することができます。

今回使うのは以下の材料設定です。

則名 グループ タイプ モデル概要 適用分野 粘性 直交異方性 組み込み熱オプション** ひずみ速度 定式化
/MAT/LAW2 (PLAS_JOHNS)* 弾塑性材料 金属 Johnson-Cook材料モデルを使用した等方性弾塑性材料 金属、弾塑性材料、軟鋼、ひずみ速度依存、温度依存、等方および移動硬化、熱硬化性、低合金鋼、ST52、およびDP600 × × Lagrange

この材料則は、Johnson-Cook材料モデルを使用して等方性弾塑性材料を表します。

以下、こちらからの引用です。

1.これは、真の応力およびひずみ出力を伴うひずみ速度および温度効果を含む弾塑性材料モデルです。

2.このモデルでは、相当応力が塑性降伏応力よりも低い時、材料は線形弾性材料として挙動します。もっと高い応力値では、材料は塑性挙動で、応力は以下のように計算されます:

\begin{align*}
\sigma = \big(a+b\varepsilon_{p}^{n}\big)\bigg(1+c\ln\frac{\dot{\varepsilon}}{\dot{\varepsilon}_{0}}\bigg)\big(1-(T^{*})^{m}\big)
\end{align*}

$T^{*}=\frac{T-T_{r}}{T_{melt}-T_{r}}$

  • $\varepsilon_{p}$:塑性ひずみ
  • $\dot{\varepsilon}$:ひずみ速度
  • $T$:温度
  • $T_{r}$:雰囲気温度
  • $T_{melt}$:溶融温度

3.Iflag=1の場合、σy, UTSおよび に実験工学応力およびひずみデータを入力でき、パラメータabおよびnが計算されてStarter出力ファイルに出力されます。

が1つの積分点での値に到達してから、要素タイプに基づく場合:
シェル要素:対応するシェル要素が削除されます。

今回は以下のように設定しています。

  • SIG_Y = 0.09025:降伏応力
  • UTS = 0.175:工学応力UTS > σy
  • EUTS = 0.24:UTSにおける工学ひずみ
  • EPS_p_max = 0.75:破壊塑性ひずみ
  • ICC(設定なし) :デフォルトは1なのでひずみ速度効果あり

つまり、蘇生ひずみεpが0.75を超えるとシェル要素が削除されるというモデル設定です。
さらに詳しく知りたい方はマニュアルを参照ください。

テキスト設定の入手方法
GUIが無い場合はテキストによる設定の記述が必要となり、マニュアルを見ながら正確に設定を書くのは正直困難です。
設定のテンプレートがあれば楽ですよね。

その場合は、マニュアルの材料設定のページにいくと、以下のように材料設定が使われている例題の紹介があるので、どれかひとつ参考になるモデルからテキスト設定をコピペすることを考えます。

例題集のモデルはモデルファイルへのアクセスから入手できるので、必要なキーワードはここから入手していけばよいでしょう。

以上で材料設定が終わりです。

※ここでは材料特性の設定を記述しただけで、PARTとは紐づいていません。

プロパティの設定

シェル要素に対して要素の定義と厚みの設定を行います。

このキーワードは、/PROP/TYPE1(SHELL)から引用すると、

3節点または4節点のシェル要素で使用されるシェルプロパティセットを記述します。Belytschko、QBAT、またはQEPHのシェル定式化が利用可能です。

ほとんどがデフォルト設定でよく、すべて設定しなければならないというわけではありません。
大事なところは以下です。

その他の設定は必要に応じてマニュアルを見て設定します。

※ここではプロパティの設定を記述しただけで、PARTとは紐づいていません。

PARTの作成

ここで先ほど記述したプロパティと材料特性をPARTに紐づけます。

PARTは要素(ビーム要素、シェル要素、ソリッド要素)で構成されており、PARTへはプロパティのIDと材料のIDを指定します。

設定は10カラム(10行)ごとに区切られているので、記述する位置を間違えないようにしましょう。

「#」で始まる行はコメント行になるので、設定のメモを残しておくとわかりやすいです。

これでPARTにプロパティと材料が紐づけられました。

解析設定としてPARTにプロパティと材料を指定すると使用されるため、例えば使う可能性があるプロパティや材料を設定の記述だけをテキストに書いておくこともできます。
その際はプロパティや材料はそれぞれIDが被らないようにしておきましょう。

剛体定義

節点グループをひとつの剛体として定義することができます。

「/RBODY」のキーワードを使います。
設定個所は「node_ID」と「grnd_ID」のみです。

以下のように「grnd_ID」には赤枠で囲まれた節点グループのIDを指定します。
ここでは節点グループIDを1としています。

節点グループの取得は少しやっかいで色々な方法がありますが、自分の場合はRadiossのフォーマットをNastran形式に出力しなおすソフトを使ってNastran形式に1度して、それを無償のLS-PrePostに読み込んでLS-DYNAの「*SET_NODE」を作成しました。

LS-DYNAの「*SET_NODE」の出力すると以下のようになっています。

それをOpenRadiossの節点グループ「/GRNOD/NODE」に記述しました。

このあたりの良い方法がないかもう少し考えます。

注意点ですが、キーワード「/RBODY」を指定した際に「RBID」で990が割り当てられています。
これは、選択した節点グループからなる剛体の重心による節点IDです。つまり、「/RBODY」を作成した時点で重心による節点を作成する必要があります。

なので選択した節点グループの重心を適当に計算して「/NODE」の一番最後に追加する必要があります。

この節点IDは選択した節点グループの剛体の代表点のようになっているので、後々境界条件による荷重設定などが楽になります。

境界条件

並進・回転移動による境界

次に先ほど設定した剛体の代表節点ID = 990の並進・回転による境界条件を指定します。

  • Tra:x,y,zの拘束設定(0がフリー、1が拘束)
  • rot:ωx、ωy、ωzの拘束設定(0がフリー、1が拘束)

なので節点グループID = 2はx方向のみ自由に動くことができる設定になっています。

節点グループID = 2は節点ID = 990になっているため、先ほど剛体設定した節点グループも同様にx方向のみ自由度を持っていることになります。

固定拘束による境界

同様に固定拘束の境界条件を設定します。
節点グループにおいては、先ほどと同様にLS-PrePostを使って「/GRNOD/NODE」を作成します。

Traとrotがすべて1なので以下の節点グループは完全に拘束されている設定になっています。

速度条件

続いて先ほど設定した剛体の代表点の節点ID = 990に x方向の強制速度を与える設定を行います。

  • 強制速度は「/IMPVEL」
  • 強制速度の関数は「/FUNCT」
  • 強制速度を与える節点グループは「/GNOD/NODE」

にそれぞれIDで紐づけて設定を行います。

「/GRNOD/NODE/4」の節点グループは節点ID = 990のみですが、こちらは剛体の代表点なので節点ID = 990に強制速度を与えると節点グループも強制移動するという設定になります。

以上で解析設定の大枠は終了です。

節点の履歴

必要に応じて出力するようにしておくと便利です。
時刻歴応答「/TH」からはじまるキーワードを使います。

  • /TH/ACCEL:加速度
  • /TH/INTER:接触力など
  • /TH/NODE:節点の変位、速度、加速度
  • /TH/MONVOL:エアバッグの体積
  • /TH/PART:重心位置、慣性モーメントなど
  • /TH/RBODY:剛体の荷重
  • /TH/RWALL:剛体壁の接触力
  • /TH/SH3N:3節点のシェル要素の応力、ひずみ
  • /TH/SHEL:4節点のシェル要素の応力、ひずみ

以下は節点座標の時刻歴を出力する設定です。

以下は剛体の荷重の出力設定です。

必要に応じて設定を追加すれば良いでしょう。

以上までの設定を001tensile_start_0000.radに保存します。
これがRadiossのstarter inputファイルになります。

Engine設定

以上まではRadiossのstarter inputファイルの設定でしたが、Radioss Engineファイルはシミュレーションの解析制御と出力を記述するファイルです。

ここでは最低限の設定だけを記述します。

  • /RUN:計算実行に関するキーワード。40msまでの解析
  • /DT/NODA/CST:モデルの時間ステップを増やすためのマススケーリング
  • /TFILE:時刻歴ファイルであるT-ファイルの書き出し時間間隔
  • /ANIM/DT:アニメーションファイル(A-ファイル)を出力する開始時間と出力間隔(0.5ms)

001tensile_start_0001.rad

さらに詳しく知りたい方はマニュアルを参考にしましょう。
今回は歪みや応力もアニメーションにしたかったので以下を追加しました。

  • /ANIM/ELEM/EPSP:塑性歪み
  • /ANIM/ELEM/VONM:フォン・ミーゼス応力
  • /ANIM/ELEM/ENER:比エネルギー密度
  • /ANIM/ELEM/HOURG:アワーグラスエネルギー

解析実行

以上により解析の設定が終わりました。

解析に必要なファイルは以下の2つです。

  • 001tensile_start_0000.rad:Starter ファイル(解析設定ファイル)
  • 001tensile_start_0001.rad:Engine ファイル(解析制御と出力設定ファイル)

OpenRadiossの計算実行は、こちらで公開されているPythonで作られたGUIを使うと簡単に行えます。

WSLを使っているのでLinux環境での実行方法を参考にします。

これで計算投入用のGUIが立ち上がるので、アニメーションとデータ出力の項目にチェック(②)を入れて計算を実行します。
ここにチェックを入れておくことでA-ファイル(アニメーション用ファイル)はParaViewでも閲覧できるvtk形式に変換し、T-ファイル(データ用ファイル)はcsvファイルに変換してくれます。

OpenRadiossのインストール先は下記のスクリプトで自身の環境に合わせる必要があります。

openradioss_run_script_ps.sh

問題なく計算が進んでいれば大量の「A-ファイル」が出力されているはずです。

結果処理

先ほど計算実行時に「Anim-vtk」にチェックを入れたのでA-ファイルはvtk形式に変換されているので、それらをParaViewで読み込みます。

まとめ

本記事ではOpenRadiossの設定をできるだけマニュアルを見ながら、テキストのみで解析実行できるように解説を行いました。

途中、節点グループの作成には困りましたが無理やりLS-PrePostなどを使ったりしましたので、そのあたりの良い方法は要検討です。
また、解析途中にモデルの確認ができないというのはかなり解析設定を困難にしているので、せめてメッシュ状態などを確認できる標準的な方法が今後の課題です。

とはいえOpenRadioss自体は機能も豊富なので、今後の発展に期待大です。

関連記事もどうぞ

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です