2D Navier-Stokes方程式の数値シミュレーションコードを公開しました
Published:
2次元Navier-Stokes方程式の数値シミュレーションコード(暫定)を作成しました:GitHub
力学計算はC++17で行います.NetCDF形式で計算結果を保存します.解析はpythonを利用すると便利です.
まだ掃除をしていないので,荒れていますが,
- /your workspace/exe/job.shを実行
- /your workspace/output/test number/*.ncにアウトプットを出力
- /your workspace/analysis/test number/job_*.pyで.ncファイルを解析 という流れを想定しています.
参考までに,乱流のデータ同化(ナッジング)実験結果(コード上のtest8)を載せます.

\( (u, v) \)が2次元流れ場を表します. 左列がTrue,中央列が観測(小メッシュ平均),右列が推定値です. 観測を用いて,Trueの乱流を予測しています. 手元のM1 MacBook Proで計算から解析(可視化)までしたところ,2-3分程度かかりました. 設定は以下のようにしています.
- nx = 100
- ny = 100
- nt = 10000
数学的妥当性は,Azouani-Olson-Titiらの結果などで示されています.
現在は,境界条件は周期境界条件のみしか扱うことができませんが,斉次と非斉次DirichletやNeumann境界条件も扱えるように改良する予定です.
本当は,非斉次Dirichlet-Neumann混合境界条件で2D Navier-Stokesを解くというモチベーションで開発しています. 2D Navier-Stokesの既存のシミュレーションコードはネットに山のように転がっていますが,研究で利用するにはそれでは不十分なことがあるからです.
