非発散順圧渦度モデル (BAROVOR)
本プログラムは, 2 次元流におけるカルマン渦をシミュレーションする数値モデルである (参考文献 : 石岡, 2004).
本モデルの定式化などの詳細はマニュアル PDFを参照. 空間微分について FFT によるスペクトル法を用いて渦度の時間発展と流線関数を計算する.
ファイル構成は以下のようになっている.
fft_solver.f90 -> ソルバプログラム. namelist.nml の finame で設定された初期データを元に, 渦度の時間発展を計算する.
プログラムの実行
依存プログラム
- 必須
STPK, NetCDF, gtool5
NetCDF 形式で出力されるので, それを描画するツールがあれば, 何でも OK.
Mkinclude の編集
- 親ディレクトリに存在する Mkinclude を自身の環境に合わせて適宜編集して下さい.
プログラムのコンパイル
$ make
でメインソルバ (FFT_BAROVOR) と初期値作成プログラム (make_init) が作成される.
プログラムの実行
namelist の編集
同梱ファイルに初期値データ作成用 make_init.nml とメインプログラム実行用 namelist.nml という設定ファイルが入っている. これは, ソルバプログラムで用いられるネームリストファイルである.
make_init.nml の中身
&initial nx = 601 ny = 601 xmin = 0.0d0 ymin = 0.0d0 dx = 5.0d2 dy = 5.0d2 fname = 'initial.nc' tcx = 150.0d3 tcy = 150.0d3 / &vprof zcore = 2.4d-2 R1 = 10.0d3 alpha = 1.0d0 ri = 0.65d0 ro = 0.81d0 / &dipole nnum = 1 xdip = 180.0d3 ydip = 150.0d3 zdip = 3.0d-3 adip = 5.0d3 ndip = 6 R2 = 20.0d3 /
[注意] : make_init は初期値のみ作成するプログラムであるので, このプログラムの実行は必須ではない. 同様のフォーマットの NetCDF データを初期値として別途用意すれば FFT_BAROVOR は問題なく実行される.
namelist.nml の中身
&input nxi = 601 ! X-coordinate grid number of initial data nyi = 601 ! Y-coordinate grid number of initial data hxnt = 261 ! X-coordinate grid number hynt = 261 ! Y-coordinate grid number nt = 57600 ! calculating time step Lx = 300.0d3 ! X-coordinate grid interval [m] Ly = 300.0d3 ! Y-coordinate grid interval [m] dt = 3.0d0 ! time interval [s] dmpstp = 40 ! dumping time step ! dumping time interval is equal to "dmpstp * dt" ininame = "initial.nc" ! initial data file name. ! if there is no, automatically, ! being made by the program. inix = 'x' ! X-coordinate name iniy = 'y' ! Y-coordinate name iniz = 'zeta' ! vorticity name inixd = 'xd' ! X-coordinate name for double iniyd = 'yd' ! Y-coordinate name for double foname = "result.nc" ! result data time_flag = 'RK4' ! time scheme nu = 6.5d0 ! diffusion coefficient / &restart resopt = 1 ! restart option ! 0 = first start, 1 = restart resfname = 'restart.nc'! restart file name restp = 120 ! making time step of restart file /
実際の実行
以下の順番で実行する.
$ ./make_init < make_init.nml # 初期値作成. $ export OMP_NUM_THREADS=[number] # ここは openMP 並列機能を用いる場合のみ. $ ./FFT_BAROVOR < namelist.nml # 実際の実行.
以上で結果が foname に指定されたファイルに作成されている.
データの詳細は NetCDF のヘッダー情報参照.
- 実行例
- 陰影が相対渦度.
- 上記のネームリストの設定で行った計算.