流体計算のサロゲートモデルを作成するためのフレームワーク
By K.Yoshimi
深層学習の研究の進展に伴い、CFDによる流体計算の代わりに、AIで流体計算を行うサロゲートモデル(代理モデル)が注目されています。
一度サロゲートモデルを作ってしまえば、CFDの計算に比べて、計算に使用するメモリ量や、計算時間を小さく抑えられるので、 CFDを使った最適化問題をサロゲートモデルで高速化したり、今まで流体計算が導入できないようなリソースの限られた環境にも、 サロゲートモデルによる流体計算を導入することができるなど、用途が広がっています。
しかしながら、流体計算を模擬するサロゲートモデルを作成するためには、 形状や計算条件、境界条件をさまざまに変更したCFDの計算を大量に行い、その計算結果を教師データとしてAIに渡す必要があります。 このため、自動でパラメータを変更しながら、CFDの計算結果を大量に取得し、AIに渡すためのフレームワークを構築することが重要になります。
そこで、本記事では、そのようなフレームワークを1つ紹介します。
Deep-Flow-Predictionのフレームワーク
Deep-Flow-Predictionは、オープンソースで構築された サロゲートモデルを作成するためのフレームワークを提案しています。
例題として、さまざまな翼型に対して、迎角や流速を変えた場合の流速ベクトルや圧力コンターを出力するサロゲートモデルを作成しています。
具体的には、下記のようなオープンソースを使ったフレームワークとなっています。
- 形状: 既存の翼型の点列を大量に用意
- メッシュ生成:オープンソースのGmshで翼型周りの2次元メッシュを作成
- 流体解析: オープンソースのCFDソフトウェアとして、最も普及しているOpenFOAMを使用
- 流体解析の後処理:OpenFOAMのinternalCloud機能を利用して、計算結果を画像データに補間
- 深層学習: オープンソースの深層学習フレームワークであるPyTorchを使用
ここで、流体解析から深層学習に渡すデータは、下記のような画像を一定サイズにして渡します。
- 流入一様流のX成分+形状をマスクした画像
- 流入一様流のY成分+形状をマスクした画像
- 形状をマスクした画像
- 結果の圧力コンター画像
- 結果の流速ベクトルのX成分の画像
- 結果の流速ベクトルのY成分の画像
なお、画像データを使用するのは、深層学習が画像データから特徴を抽出することに長けているからです。
また、ニューラルネットワークは、サロゲートモデルを作成する際によく使用されるU-Netを採用しています。
Deep-Flow-Predictionのニューラルネットワーク(転載)
応用
Deep-Flow-Predictionのフレームワークを使用すると、自分でCFD計算を模擬するサロゲートモデルを作成する際に役立ちます。
特に、実際にDeep-Flow-Predictionを動作させることで、流体計算からサロゲートモデル作成する過程を体験でき、お勧めです。
また、Deep-Flow-Predictionのフレームワークには、形状を作成する過程がありませんが、 自動で形状を作成したい場合、FreeCADやblenderなどのスクリプト機能を使用するとよいでしょう。
メッシュ生成部は、OpenFOAMのSnappyHexに置き換えるなど、使い慣れた道具を使用しても良いでしょう。
最後に
商用のソフトウェアにはANSYS-optiSLangなど、解析計算を実行すると、サロゲートモデルも自動で作成するようなものもあるようです。 サロゲートモデルにご興味がある場合は、この辺りを調べてみても良いかもしれません。
弊社の解析事例
弊社の流体解析事例については、下記のリンクからご覧ください。