2020年4月11日土曜日

SU2のチュートリアル

はじめに

OpenFoamは何度か使ってことあるので、SU2も使ってみました。
SU2は非構造な計算格子データ(非構造格子)に対応したOSSの圧縮性流体ソルバーです。
https://su2code.github.io/
圧縮性流体ソルバーで広く使われる計算スキームは2000年ころにはだいたい固まってあまり変化しなくなりました。
2012年に登場したこのソフトウェアも割合オーソドックスなものを踏襲していますが、いくつか新しいものも取り入れられているようです。

Binaryファイルをダウンロードしてそのまま使うのも良いのだけど、ソースをこのページの内容に従って取得してビルドしてみました。

以下にソースファイルがあるものとします。
$HOME/SU2/
OSはUbuntu 16.04です。

SU2はver6以前とver7以降でビルドの仕方が少し変わったようです。

SU2-v6.0

いつものconfigureでビルドしていきます。
git clone -b v6.0.0 https://github.com/su2code/SU2.git
mv SU2 SU2-6.0.0
cd ./SU2-6.0.0
./bootstrap
./configure --prefix=$HOME/SU2/SU2-v7.0.3 --enable-mpi
make -j 4
make install
bin/以下に実行モジュールがインストールされます。

SU2-v7.0

Blackbird(v7.0)からmeson, ninjaを使うとのこと。
git clone -b v7.0.3 https://github.com/su2code/SU2.git
mv SU2 SU2-7.0.3
cd ./SU2-7.0.3
./meson.py build --prefix=$HOME/SU2/SU2-v7.0.3
./ninja -C build install
なお、このままではうまく行かなかったので、こちらの環境では以下変更を要しました。
/meson_scripts/extract_file.py
  with tarfile.open(fn) as z:
    z.extractall(str(outpath))
  with tarfile.open(str(fn)) as z:
    z.extractall(str(outpath))

チュートリアル

SU2-v7.0.3で非定常な翼型周りを対象にチュートリアルを行ってみます。
git clone https://github.com/su2code/Tutorials
Unsteady_NACA0012に移動。
cd Tutorials/compressible_flow/Unsteady_NACA0012
計算設定ファイルはunsteady_naca0012.cfg、計算格子ファイルはunsteady_naca0012_mesh.su2です。 計算実行は単列計算では
$HOME/SU2/SU2-v7.0.3/bin/SU2_CFD unsteady_NACA0012.cfg
並列計算(たとえば8並列)であれば、
mpirun -np 8 $HOME/SU2/SU2-v7.0.3/bin/SU2_CFD unsteady_NACA0012.cfg
デフォルトではVTKフォーマットで可視化ファイルが生成されます。Paraviewで可視化します。
後流の流れ場が不連続に見えます。
今回の格子は構造格子であればC型格子に相当するもので、翼後端から後流にかけてとても格子が密になっています。
後流を拡大してあげると分布は連続になっていて、おそらく収束が足りないのではないかと思います。