非発散順圧渦度モデル (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 のヘッダー情報参照.

  • 実行例
    • 陰影が相対渦度.
    • 上記のネームリストの設定で行った計算.


戻る