モチベーション
昨年末からPINNsを勉強し、2次元の流体に関してPINNs手法でモデルを学習し、そのモデルを使って予測させて来た。なかなか参考にした論文の結果を示さず苦労もした。こちらの投稿の「まとめ」でも書いた通りPINNs手法でカルマン渦の予測をしてみようと考えていた。
調べていく内に、この論文で「データを持たないPINNsは渦の放出を予測できない」との記述を知った。そうであるならば、先ずはOpenFOAMでカルマン渦のシミュレーションを行なってみようと考えた。
この投稿は、OpenFOAMでカルマン渦をシミュレーションした内容をまとめたものである。
情報源
- Predictive Limitations of Physics-Informed Neural Networks in Vortex Shedding - この概要に、「データを持たないPINNは渦の放出を予測できないことを発見した」とあった。その後にデータ駆動型PINNは、学習データを使っている間のみ渦はできるとも。本文読むのはハードルが高そう!
- barbagroup/jsc_paper_pinn - 上記論文の筆者らのgithubのページ。論文の原稿以外に、PetIBMという流体ソルバーとModulusを使う場合のデータがまとめられている。筆者らは、PINNsとしてはModulusを使って検証したようだ。
- OpenFOAMで2次元円柱まわりの流体解析 (力学的相似性の検証) - レイノルズ数Reにより流れのパターンが決定するということを異なるサイズのモデルで検証した内容。
- Understanding the von Karman Vortex Street with OpenFOAM 11 - OpenFOAMを使ってカルマン渦を理解するとの内容のブログ記事。筆者は、化学工学の研究者とのこと。
- von Karman Vortex Street Simulation with OpenFOAM 11 - 上記ブログ記事のGithub。OpenFOAMのデータがダウンロードできる。
- Vortex shedding by Joel Guerrero 2D - このページに「2D Circular cylinder - Vortex shedding」というチュートリアルがある。OpenFOAM.comによって管理されているwikiページの一部。このチュートリアルは、“First glimpse” seriesの一部である"Fourth simulation - Vortex shedding"である。また、“3 weeks” seriesの"Day 8"のturbulence modelingの一部でもある。
チュートリアルを実行
OpenFOAMに関する情報源3.から6.の中から、直ぐに試せる情報源6.のチュートリアルを実施することにした。必要なファイルをダウンロードして、実行した手順は、次のとおりである。
必要ファイルのダウンロード
情報源6.のページの「You can download the case files at the following」のリンクから「vortex_shedding.tar.gz」をダウンロードして、解凍する。
使用した事例
解凍すると、「README.CASES」というテキストを開いて、各事例の説明を読み「c14」(Re=10000、turbulent model)を実行することにした。c14ディレクトリをOpenFOAMでアクセスできる領域にコピーする。
c14を実行
「README.FIRST」に従って、コマンドを実行すると、カルマン渦をParaViewで見ることができる。
「pimpleFoam | tee log」が時間掛かる。自分の環境(Xeon E5-1620 3.6GHz 64GBメモリ)では、約30分掛かった。
ParaViewで可視化
「c14」ディレクトリに「c14.foam」ファイルを作成した後、ParaViewで開く。
以下の動画は、ParaViewでタイムステップの結果をアニメーション表示し、その画面を録画したもの。
まとめ
先人が公開しているファイルを利用することで、非常に簡単に、自分の環境でカルマン渦のシミュレーション結果を得ることができた。先人の努力に改めて感謝。
今回ダウンロードしたチュートリアルのケースには、層流も入っていたので、OpenFOAMの結果とPINNsの結果を比較してみたい。その後、レイノルズ数を上げて、双子渦の発生をOpenFOAMで確かめ、PINNsではどうなるかを試してみたい。