2D Navier-Stokes方程式の数値シミュレーションコードを公開しました

less than 1 minute read

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の既存のシミュレーションコードはネットに山のように転がっていますが,研究で利用するにはそれでは不十分なことがあるからです.