こんにちは(@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ファイルの作成が必要です。
今回は以下のファイル名で設定ファイルを作成します。
- 500_main_0000.rad:Starter ファイル(解析設定ファイル)
- 500_main_0001.rad:Engine ファイル(解析制御と出力設定ファイル)
単位系
物理量の値の大きさには単位系を意識する必要があります。
今回はmm-kg-msの単位系で解析設定を行います。
ミッフィーちゃんに初速度を与える
ひとつずつ解析の設定を行います。
ミッフィーちゃんに初速度を与える設定方法です。
初速の設定は「/INIVEL」というキーワードを使います。
以下のようにtypeを指定する必要があり、
1 |
/INIVEL/type/inivel_ID/unit_ID |
以下の中からタイプを選択します。
type | 初速度のタイプ
|
今回は「TRA」の並進速度を設定します。
1 2 3 4 5 6 7 8 |
/INIVEL/TRA/2 miffy velocity # Vx Vy Vz Gnod_id Skew_id 0.0 0.0 -5.5 4 0 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /GRNOD/PART/4 miffy Part NODE 6000000 |
初速度は「z方向に-5.5m/s」を与えます。
どの物体に初速度を与えるのかは「Gnod_id」で節点グループとして与えます。
節点グループは「GRNOD」で節点を指定します。
しかし、ひとつずつ節点を指定するのは面倒なので「PART=6000000」を持つミッフィーちゃんのPART IDを指定することで節点グループが指定できます。
1 2 3 4 5 6 7 8 9 10 11 12 |
/PART/6000001 #part_title plate # prop_ID mat_ID Thick 6000000 2 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /MAT/ELAST/6000000 Dummy # Init. dens. Ref. dens. 7.8000003E-6 0 # E nu 2.0699999 .28 |
解析はmm-kg-msの単位系で設定をしているためヤング率はGPa設定なっています。
これでOpenRadiossで計算させると以下のようにミッフィーちゃんが動きます。
ただし、エアバッグとミッフィーちゃんの接触がされていないので接触されずに通過します。
接触定義
次に接触定義を行います。
接触定義は接触面間に、接触すると剛性を発揮するバネを張って釣り合いを保つ方法(ペナルティ法)に基づく「/INTER/TYPE19」を使用します。
ミッフィーちゃんとエアバッグの接触定義
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
/INTER/TYPE19/3 #Title head to airbag contact # surf_id2 surf_id1 Istf Ithe Igap Iedge Ibag Idel Icurv 40 41 4 0 0 1 0 0 # Fscale_gap Gap_max 0.0 0.0 # Stmin Stmax dtmin Irem_gap Irem_i2 1000.0 0.0 0.0 # Stfac Fric Gapmin Tstart Tstop 0.0 0.3 0.3 0.0 0.0 # IBC Inacti VisS VisF Bumult 000 6 0.0 0.0 0.0 # Ifric Ifiltr Xfreq Iform sens_ID fric_ID 0 0 0.0 2 0 0 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /SURF/PART/41 #title miffiy # item_ID1 item_ID2 item_ID3 item_ID4 item_ID5 item_ID6 item_ID7 item_ID8 item_ID9 item_ID10 6000000 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /SURF/PART/40 #title airbag # item_ID1 item_ID2 item_ID3 item_ID4 item_ID5 item_ID6 item_ID7 item_ID8 item_ID9 item_ID10 1 2 #---1----|----2----|- |
どの面とどの面が接触するのかはサーフェスグループで設定する必要があります。
さらにエアバッグと裏側の反力板との接触をさせる必要があります。
反力板とエアバッグの接触定義
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/INTER/TYPE19/4 #Title head to airbag contact # surf_id2 surf_id1 Istf Ithe Igap Iedge Ibag Idel Icurv 40 43 4 0 0 1 0 0 # Fscale_gap Gap_max 0.0 0.0 # Stmin Stmax dtmin Irem_gap Irem_i2 1000.0 0.0 0.0 # Stfac Fric Gapmin Tstart Tstop 0.0 0.3 5.0 0.0 0.0 # IBC Inacti VisS VisF Bumult 000 6 0.0 0.0 0.0 # Ifric Ifiltr Xfreq Iform sens_ID fric_ID 0 0 0.0 2 0 0 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /SURF/PART/43 #title plate # item_ID1 item_ID2 item_ID3 item_ID4 item_ID5 item_ID6 item_ID7 item_ID8 item_ID9 item_ID10 6000001 |
エアバッグのサーフェスグループは先ほど設定したので、ここでは記載していません。
では、OpenRadiossの計算をして結果を確認します。
これだとミッフィーちゃんがやわらかい材料特性のままなのであることに気付きました。
ということで、ミッフィーちゃんを剛体にする必要があります。
それに「/MAT/ELAST」ではどこにもミッフィーちゃんの質量を与えていないことに気付きました。
剛体設定
剛体を設定するには「/RBODY」を使用します。
こちらを見ると質量の設定や慣性モーメントの設定があることが確認できます。
つまり、
- 材料は「/MAT/ELAST」
- 剛体定義は「/RBODY」:ここで質量と慣性モーメントを与える
こちらを見ると剛体定義する物体は「grnd_ID」でIDを指定する必要があるのでPARTを指定することで節点グループを定義できる「/GRNOD/PART」を使用しています。
node_IDは重心となる節点番号です。
これを起点に慣性モーメントが働くんでだろうと思います・・・が、ミッフィーちゃんの慣性モーメントはわからないので今回は設定しておりません。
FreeCADで慣性モーメントを知ることができそうですが・・・
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/RBODY/817 #rbody_title # node_ID sens_ID Skew_ID Ispher Mass grnd_ID Ikrem ICoG surf_ID 6012924 40 45 # J_XX J_YY J_ZZ # J_XY J_YZ J_XZ # Ioptoff Iexpams #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /GRNOD/PART/45 #title miffiy RIGID # item_ID1 item_ID2 item_ID3 item_ID4 item_ID5 item_ID6 item_ID7 item_ID8 item_ID9 item_ID10 6000000 |
これにて再度OpenRadiossを計算して結果を確認します。
ミッフィーちゃんがたぶん剛体になりました。
これによりミッフィーちゃんが衝撃子としてエアバッグが受け止めるという解析ができました。
まとめ
前回の記事から追加したキーワードは以下です、
- 物体の初速度:/INIVEL
- 接触定義:/INTER/TYPE19
- 剛体定義:/RBODY
本記事はとりあえず解析してみたという程度ですので、実験との比較を行うことでさらなる精度向上が見込めるでしょう。
OpenRadioss自体は機能も豊富なので、今後の発展に期待大です。
追記
OpenRadiossの結果をd3plotに変換できるようになりました。
これによりLS-PrePostでの結果表示もできるようになります。
OpenRadiossの出力をLs-PrePostに変換できた。
これはいいね。 https://t.co/Nf5gQMV8nO pic.twitter.com/tYM4KgsBK5— カマキリ🐲CAE頑張る (@t_kun_kamakiri) June 1, 2024
参考文献
以下自動車の衝突安全のバイブルを紹介します。
版が異なりますが、微妙に内容が違うのでどちらも持っておいても良いでしょう。