OpenRadioss

【OpenRadioss入門】エアバッグの膨張の設定方法

こんにちは(@t_kun_kamakiri

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

今回解説するのはこちらのエアバッグが膨張する解析です。
設定としては適当で「とりあえず計算できればいいや!」くらいの感覚ですので実現象を再現しうる精度にはなっていないでしょうが、設定方法は参考になると思います。

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

WSL2

解析設定の手順

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

  • 200_main_0000.rad:Starter ファイル(解析設定ファイル)
  • 200_main_0001.rad:Engine ファイル(解析制御と出力設定ファイル)

単位系

物理量の値の大きさには単位系を意識する必要があります。

  • 長さ:mm,mなど
  • 時間:sec, msecなど
  • 質量:kg, ton, gなど

同じ長さのものでも10という値だけでは10mmなのか、10mなのかで1000倍の長さに違いがあります。

国際単位系(略称:SI単位系)で書く場合も多いですが、それは専門分野によって変わります。

特に今回扱う自動車衝突においては車の質量はton(トン)=1000kg(キログラム)の世界なので質量の単位をkgにすると桁が大きすぎて煩雑に見えたりします。
一方で長さに関しては、mm(ミリメートル)単位の方がわかりやすかったりします。
時間に関しては数100ms(ミリ秒) = 0.1秒で事が終わる世界感です。

ゆえに、単位系としては

  • mm-ton-sec
  • mm-kg-ms

のどちらかを選択することが多いでしょう。

今回はmm-kg-msの単位系で解析設定を行います。

この単位系によって物理量(パスカル、エネルギー、速度、加速度)がどのような単位系になるかによって変わるので、今使っている単位系を意識しないと値が1000倍違うなど平気で起こってしまうので注意が必要です。

単位系の一覧はこちらで確認すると良いでしょう。
LS-DYNA で使用する単位 No.01 構造解析編

モデル作成

まずは解析の設定を200_main_0000.radに記述していきます。
これがRadiossのstarter inputファイルになります。

モデルの作成は前回の記事ではLS-DYNAを用いて作ったものをOpenRadioss用に変換して使うことにします。

ちなみにLS-DYNAでのモデル作成部分はこちらの動画を参考にしています。

以上で作成したモデルはLS-DYNAフォーマットでのエアバッグモデルです。

こちらにも作り方のメモを残しました。

完成状態はこちら。


ちなみにOpenRadiossにはLS-DYNAで解析設定を作ってもRadiossに変換して計算することもできます。

LS-DYNAの全ての機能を使えるわけではありませんが、対応しているキーワードなら使うことができます。

LS-DYNAフォーマットをOpenRadiossフォーマットに変換

作成したLS-DYNAのメッシュデータをOpenRadiossフォーマットに変換して使う必要があります。

LS-DYNAからOpenRadiossへの直接変換できる無償ソフトはなさそうでしたので、今回はエクセルを使って変換しました。

規則を理解していれば変換は容易でしょう。

  • モデル(下の絵はミッフィーちゃん)にPART IDというのを振り分けられている。
  • PARTはELEMENT(要素)と呼ばれるメッシュ要素から構成されている
  • 1つ1つのELEMENTはNODE(節点)から構成されている

これらを理解してLS-DYNAとOpenRadiossで作るべきフォーマットを比較すると以下のようになります。

LS-DYNAフォーマットのELEMENT(もしくはSHELL)を以下のようにエクセルに値を貼り付けて、関数を使ってOpenRadiossフォーマットに変換します。

シェル要素の変換

節点の変換

これにミッフィーちゃんのモデルも追加して以下のような解析モデルになっています。

※ミッフィーちゃんエアバッグ反力板のモデルは今後のシミュレーションモデル用に作成しただけで今回はただの飾りです。

材料特性の設定

材料特性は以下のようにします。

エアバッグ/MAT/LAW19 (FABRI)弾性直交異方性材料。シェル要素のみで使用可能。エアバッグ繊維のモデル化に使用される。
固定プレート/MAT/LAW13 (RIGID) (廃止)パートを剛体としてモデル化。
エアバッグ反力板/MAT/LAW13 (RIGID) (廃止)
ミッフィーちゃん/MAT/LAW13 (RIGID) (廃止)

材料モデルにはいくつかの注意点があります。

適宜マニュアルを見て対応していきます。

「/MAT/FABRI」については少し詳しく見てみましょう。

赤文字で書いた設定は今回は特に設定で使われていないので、意味がありません。
ZEROSTRESSはエアバッグが折り畳んだりして初期に応力が発生している場合に元の形状はどうだったかを参照させる参照モデルがある場合に使用します。
さらに、自動車が衝突した直後が0msで、エアバッグが作動するまで衝突直後から10~20msと時間差が作動するためその遅れ時間(Time To Fire)を設定しておくと解析上便利になります。
それはセンサー/SENSOR/TIME」で指定しています。
見ての通り遅れ時間は0msとしています。

プロパティの設定

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

エアバッグ/PROP/TYPE9 (SH_ORTH)直交異方性シェルロパティの定義。
固定プレート/PROP/TYPE1(SHELL)3節点または4節点のシェル要素で使用。Belytschko、QBAT、またはQEPHのシェル定式化が利用可能。
エアバッグ反力板/PROP/TYPE1(SHELL)
ミッフィーちゃん/PROP/TYPE1(SHELL)

適宜マニュアルを見て対応していきます。

エアバッグの材料特性「/MAT/LAW19 (FABRI)」と合わせて使われる「/PROP/TYPE9 (SH_ORTH)」プロパティは設定項目が多く理論も難しいので、詳しくはマニュアルを見ましょう。

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

PARTの作成

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

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

設定は10カラム(10行)ごとに区切られているので、記述する位置を間違えないようにしましょう。「#」で始まる行はコメント行になるので、設定のメモを残しておくとわかりやすいです。

エアバッグPART ID = 1,2prop_ID = 1mat_ID = 1
固定プレートPART ID = 3prop_ID = 6000000mat_ID = 2
エアバッグ反力板PART ID = 6000000prop_ID = 6000000mat_ID = 2
ミッフィーちゃんPART ID = 6000001prop_ID = 6000000mat_ID = 2

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

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

拘束条件

エアバッグの底面はエアバッグを収納するための箱があり(今はエアバッグを折り畳んでいないので収納していませんが)、それを動かないように拘束する必要があります。

以下のような関係性があります。

/GRNOD/PART」を使用することでPART内の節点を全てグループ化することができて便利です。
その他の方法としては「/GRNOD/NODE」のように節点を1つずつ記述するという方法もありますが、グループ化したい節点を全て記述する必要があり面倒です。部分的に節点をグループ化したい場合には役に立ちます。

エアバッグガス注入の設定

エアバッグの膨張の解析の最も重要な部分ですね。
解析の設定には大きく3つのキーワードを設定する必要があります。

※「/MONVOL/COMMU1」はエアバッグが複数の部屋(チャンバーという)に分かれている場合に、チャンバー間でガスのやり取りを行うキーワードです。

非常にわかりにくいですが「/MONVOL/AIRBAG1」をまず設定します。

「/MONVOL/AIRBAG1」で、どのサーフェスで囲まれた領域をエアバッグの部屋とするかのサーフェスID、熱伝達係数、初期ガスと注入するガスなどのID、ガス抜けなどのNvent(ガス抜け穴。面積指定もできる※今回は使わない)を設定します。

続いて初期のガス成分(air)と注入するガス成分を設定します。
注入するガス成分は同じ空気の物性値を使っています。
設定するのは、

  • MW:モル質量[kg/mol]
  • Cpa~CPe:比熱の温度依存性の係数
    $C_{p}=C_{pa}+C_{pb}T+C_{pc}T^2+C_{pd}T^3+\frac{C_{pe}}{T^2}+C_{pf}T^4$
    これらの係数は以下の熱物性データベースから入手するのが良いでしょう。

続いて、注入するガスに対して「質量流」と「注入温度[K]」を指定します。

  • 質量流:今回の単位系はmm-kg-msで設定しているため、単位は[kg/ms]として値を設定します。
    Fscale_Mを1.0E-3にすることでスケールがかかるので、この後説明する「/FUNCT」は[kg/s]のままの値でも良いでしょう。
  • 注入温度[K]:温度はKとして入力します。

そして、質量流と温度のテーブルデータを設定します。

この際に、以下のような関係性を意識する必要があります。

これでエアバッグの解析の設定は終了です。

実機とCAEが合うかどうかは物性データなどが必要ではあります。

エアバッグ内の熱力学変数の出力

/TH/MONVOL」によってエアバッグ内の圧力、温度、密度、体積・・・・と色々な熱力学変数の時刻歴を出力できます。

計算実行後に「200_mainT01.csv」が出力されているので確認してみましょう。
圧力と容量を確認するとこんな感じです。

※今回は単位系を「mm-kg-ms」で計算しているため、以下の変換が必要です。

  • 圧力[kPa]:ゲージ圧にしたいので「×1000000-101.325」にしてゲージ圧[kPa]にする
  • 容量[L]:「mm3」の単位になっているので「÷1000000」としてリットル[L]にする

Engine設定

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

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

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

200_main_0001.rad

さらに詳しく知りたい方はマニュアルを参考にしましょう。

解析実行

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

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

  • 200_main_0000.rad:Starter ファイル(解析設定ファイル)
  • 200_main_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で読み込みます。

※ミッフィーちゃんはただの飾りです。

エアバッグの理論

補足でエアバッグの理論計算も書いておきます。

エアバッグの膨張の理論は基本的には熱力学第一法則に従う方程式を解いているにすぎません。ここでは計算の概要を紹介してイメージしてもらえればよいかと思います。

以下の容器をエアバッグと見立てて、その容器に熱を加えてピストンが動くというのをイメージすれば、エアバッグが膨張していく原理がわかるかと思います

まず、エアバッグが膨張するガス発生装置のエネルギーを考えます。

  • $\dot{m}_{inf}$:注入する質量流
  • $T_{inf}$:注入する温度
  • $C_{p inf}$:注入するガスの定圧比熱

3つの掛け算がエンタルピーとしてエネルギー注入されて、初期状態の空気のガスと混合してエアバッグが膨張するという計算を行っています。
ゆえに、注入ガスの設定には上記3つの設定が必ず必要になります。

あとは項に対してエネルギーを考えていきます。次が、エアバッグ内の内部エネルギーです。
内部エネルギーは基本的には熱力学的は変数(圧力、温度、密度など・・・)です。

エアバッグが膨張する際に空気を押しのけて膨張するため外へする仕事もエネルギーとして考慮します。ただし、これでは問題が解けないことがわかります。

  • 変数:4つ:圧力P_0  、内部エネルギーU、温度T_0、容量V_0である。
  • 方程式:3つ:①、②、③

ピストンの運動量変化を考えることで、もうひとつ式を追加する。

これで変数の数と式の数が一致したので原理上問題を解くことができます。
あとはこれらの式を連立させて解きます。方程式が複雑になりますが、原理上問題を解くことができることがわかります。
このような内部計算ができるソフトがLS-DYNA、PAM-Crash、Radioss(OpenRadioss)、MADYMOなどなど・・・にはあります。

ちなみに膨張しきった際にエアバッグの布の張力がかかるので、必要であればそれも式に加えると原理上計算できるというわけですね。

まとめ

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

今回はエアバッグを膨張させただけですが、今度はミッフィーちゃんに初速度を与えて壁にぶつかる直前にエアバッグを膨らませて無事衝突を回避するという解析を行います。

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

参考文献

以下自動車の衝突安全のバイブルを紹介します。
版が異なりますが、微妙に内容が違うのでどちらも持っておいても良いでしょう。

自動車の衝突安全

自動車の衝突安全

水野 幸治
Amazonの情報を掲載しています
自動車の衝突安全 基礎論

自動車の衝突安全 基礎論

水野 幸治
Amazonの情報を掲載しています
関連記事もどうぞ

COMMENT

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