2025/09/09公開
車の衝突シミュレーションをHAKAIでやってみる
この記事では、車の衝突シミュレーションをFEM動的陽解法フリーソフト(オープンソース)の「HAKAI」を使用して行ってみます。
Abaqusによる例題
Abaqusによる簡易的な車の衝突シミュレーションのチュートリアル動画はYouTubeでいくつか見る事ができます。
https://www.youtube.com/watch?v=9KOcNG2kJDE
このチュートリアル動画を参考に、同じような解析をフリーソフトを使用して行ってみます。
フリーソフトでどうやって行うか?
まず最初に、フリーソフトだけでどうやって解析を行うかを説明します。
ソルバーは簡易的なFEM動的陽解法ソルバーの「HAKAI」を使用します。
HAKAIはオープンソースプログラムでGitHubからダウンロードできます。
HAKAI-fem: Simple finite element method dynamic explicit solver.
Fracture analysis by element deletions. Matlab Julia
HAKAIは入力にAbaqusの.inpファイルを使用して、結果の出力はvtk filesで行います。
よって、ポスト処理のソフトはParaViewを使用します。
vtkファイルをインポートするだけで簡単に解析結果をみる事ができます。
https://www.paraview.org/download
プリ処理として解析モデルのinpファイルを作る必要があります。
この解析では車のボディと柱の2つのパートが存在します。
それぞれについてのメッシュモデルの作成方法について考えてみましょう。
車ボディについては冒頭で紹介したチュートリアル動画にあるようにシンプルなボディ形状のフリーCADモデルを使用する事ができます。
形状があれば何らかのメッシュツールでメッシュを作成すれば車ボディの節点と要素データを得る事ができます。
Abaqus Learning Editionを使用してチュートリアル動画と同様の手順で粗いメッシュモデルを作成しました。
ここで得られたメッシュには局所に不必要に微細なメッシュが含まれていたので手作業でそれらを取り除きました。
全体的に均一なメッシュにすることで後に行うパラメータスタディに使用しやすくなります。
柱については単純な直方体として何らかのツールでモデル化すれば良いです。
ここでは”abaqus_beam_inp.m”というMatlab言語で書かれたシンプルなプログラムも使用します。
関数の引数に直方体形状のサイズとメッシュ分割数を入力するだけで節点と要素データを得る事ができます。
abaqus-tool/abaqus_beam_inp.m
あとは境界条件、接触、解析ステップサイズ等を手書きで追加すればモデルのinpファイルが出来上がります。
簡易的な車衝突モデル

作成した簡易的な車衝突モデルを上の図に示します。
車ボディについて、厚さや塑性を含む材料特性はチュートリアル動画に従って設定しました。
初期速度については実際の衝突試験と同等の値にしました。
ボディだけのモデル化のため、そのままだとかなり軽量になってしまうため、実際の車の重量に近づくように質量スケーリングの値を設定しました。
柱については塑性なしの弾性体としました。境界条件は底面の節点を全て固定としました。
このモデルのinpファイルはこちらからダウンロードできます。
HAKAI-fem/HAKAI-v0.0.2/input/car-crash-N2k.inp
では、HAKAIで解析を実行してParaviewで結果を見ていきます。
解析結果 – 粗いメッシュモデル
粗いメッシュ分割で節点数を少なくしたモデルの結果アニメーションです。
HAKAI (#OpenSource FEM dynamic exlicit solver)
— CAE_labo (@cae_labo) November 20, 2024
Test analysis of the car-crash example
1800 nodes, 900 elements #Matlab, #JuliaLang pic.twitter.com/vBd3ALpSoz
とてもシンプルな解析なので当然ながら実際の衝突試験との比較評価はする事ができません。
しかしながら、柱の衝突した際の塑性変形の様子を見る事ができました。
解析結果 – 微細なメッシュモデル
では、もっと詳細に変形の様子を見るためにメッシュサイズを小さくしてみましょう。
微細メッシュサイズのモデルのinpファイルはこちらからダウンロードできます。
HAKAI-fem/HAKAI-v0.0.2/input/car-crash-N22k.inp
解析結果アニメーションです。
HAKAI (#OpenSource FEM dynamic exlicit solver)
— CAE_labo (@cae_labo) November 22, 2024
Test analysis of the car-crash example
22,000 nodes, 11,000 elements, @ floop –thread 16
Need GPGPU? I don't know how…#Matlab , #JuliaLang pic.twitter.com/E7MTr4bOXp
先ほどよりも複雑な塑性変形を見る事が出来ました。
ボディが折れ曲がった際に要素同士が貫通している所があるようなので自己接触を考慮する必要があったかもしれません。
解析結果 – 柱を壁に変更したモデル
一度、解析モデルを作成すれば、色々なバリエーションの解析ができます。
例えば、先ほどのモデルにおいて柱を壁に変更して、車のボディの自己接触を考慮して解析を行ってみます。
壁衝突バージョンのinpファイルはこちらからダウンロードできます。
HAKAI-fem/HAKAI-v0.0.2/input/car-wall-N22k.inp
解析結果アニメーションです。
HAKAI (#OpenSource FEM dynamic exlicit solver) #GPGPU is great. @ cuda #JuliaLang #CUDA pic.twitter.com/ySPY2KRhNb
— CAE_labo (@cae_labo) November 28, 2024
自己接触を考慮したのでフロント部分の座屈変形でボディが折りたたまれていく様子を確認できました。
解析結果 – 車と車の衝突
最後に車と車の衝突という挑戦的な解析をやってみます。
接触の計算負荷が膨大なものとなりCPUの並列計算では解析が終わりそうになかったので、GPGPUを使用しました。
この場合置いてはGPGPUのほうが数倍速く処理できました。
車同士の衝突バージョンのinpファイルはこちらからダウンロードできます。
HAKAI-fem/HAKAI-v0.0.2/input/carx2-crash-N43k.inp
解析結果アニメーションです。
HAKAI (#OpenSource FEM dynamic exlicit solver)
— CAE_labo (@cae_labo) November 27, 2024
Test analysis of #GPGPU @ cuda
43,000 nodes, 21,000 elements#JuliaLang #CUDA pic.twitter.com/MOjOm0OaUr
解析時間がとても長くなってしまったので途中で終了させましたが、もしハイスペックなPCを持っていたら続きの計算をやってみて下さい。
以上です。
興味があったら、ご自身でも試してみてください。
