VTK フォーマット
参考ページ:
- <URL:https://github.com/kaityo256/lab_startup/blob/main/paraview/README.md>
- <URL:http://www.paraview-expert.com/vtk-structured-grid/>
VTK フォーマット
VTK フォーマットは, イマドキは XML で記述するようだが, ここではレガシーフォーマットと呼ばれる XML でない形式についてまとめる.
VTK フォーマットでは, 構造格子/非構造格子上のデータを ASCII/BINARY 形式で記述で きる. ここでは構造格子上のデータを ASCII 形式で記述する方法についてまとめる.
書式としては,
ヘッダ (下のデータファイルの例では [H] を付けた部分) 格子情報 (下のデータファイルの例では [G] を付けた部分) 値 (下のデータファイルの例では [V] を付けた部分)
の順番で記述するらしい.
等間隔構造格子スカラー
もっとも簡単な等間隔構造格子上のスカラーデータを記述するデータファイルは下のような見た目になる. (各行の "!" 以降は解説.)
# vtk DataFile Version 1.0 ! [H] 決まり文句 out/test1.vtk ! [H] title (ファイル名とか入れておく) ASCII ! [H] ASCII/BINARY DATASET STRUCTURED_POINTS ! [G] 等間隔構造格子を用いる宣言 DIMENSIONS 21 21 21 ! [G] 3 次元座標軸の格子点数 ORIGIN 0.0 0.0 0.0 ! [G] 3 次元座標軸の最初の格子点の座標 SPACING 0.3 0.3 0.3 ! [G] 3 次元座標軸の格子点間隔 POINT_DATA 9261 ! [V] 格子点数 SCALARS intensity float ! [V] intensity という名前のスカラーを実数で格 納する宣言 LOOKUP_TABLE default ! [V] 決まり文句 0.00 ! [V] 以後, 各格子点における値. 0.00 0.00 ...
このデータを出力する
- テストプログラム (Fortran) が <URL:scripts/test1_str-point_scal.f90>,
- テストスクリプト (Ruby) が <URL:scripts/test1_str-point_scal.rb>.
不等間隔構造格子スカラー
不等間隔構造格子上のスカラーデータを記述するデータファイルは下のような見た目になる.
# vtk DataFile Version 1.0 ! [H] 決まり文句 out/test2.vtk ! [H] title (ファイル名とか入れておく) ASCII ! [H] ASCII/BINARY DATASET STRUCTURED_GRID ! [G] 不等間隔構造格子を用いる宣言 DIMENSIONS 21 21 21 ! [G] 3 次元座標軸の格子点数 POINTS 9261 float ! [G] 格子点数 -3.14 -3.14 0.00 ! [G] 第 1 格子点の XYZ 座標 -2.84 -3.14 0.00 ! [G] 第 2 格子点の XYZ 座標 -2.54 -3.14 0.00 ! [G] 第 3 格子点の XYZ 座標 ... POINT_DATA 9261 ! [V] 格子点数 SCALARS intensity float ! [V] intensity という名前のスカラーを実数で格 納する宣言 LOOKUP_TABLE default ! [V] 決まり文句 0.00 ! [V] 以後, 各格子点のデータ 0.00 0.00 ...
このデータを出力する
- テストプログラム (Fortran) が <URL:scripts/test2_str-grid_scal.f90>,
- テストスクリプト (Ruby) が <URL:scripts/test2_str-grid_scal.rb>.
不等間隔構造格子ベクトル
不等間隔構造格子上のベクトルデータを記述するデータファイルは下のような見た目になる.
# vtk DataFile Version 1.0 ! [H] 決まり文句 out/test2.vtk ! [H] title (ファイル名とか入れておく) ASCII ! [H] ASCII/BINARY DATASET STRUCTURED_GRID ! [G] 不等間隔構造格子を用いる宣言 DIMENSIONS 21 21 21 ! [G] 3 次元座標軸の格子点数 POINTS 9261 float ! [G] 格子点数 -3.14 -3.14 0.00 ! [G] 第 1 格子点の XYZ 座標 -2.84 -3.14 0.00 ! [G] 第 2 格子点の XYZ 座標 -2.54 -3.14 0.00 ! [G] 第 3 格子点の XYZ 座標 ... POINT_DATA 9261 ! [V] 格子点数 VECTORS velocity float ! [V] velocity という名前のベクトルを実数で格 納する宣言 10.00 1.00 0.1 ! [V] 以後, 各格子点のベクトルデータ 10.20 0.90 0.2 9.80 1.00 -0.1 ...
このデータを出力する
- テストプログラム (Fortran) が <URL:scripts/test3_str-grid_vec.f90>,
- テストスクリプト (Ruby) が <URL:scripts/test3_str-grid_vec.rb>.
時系列データ (不等間隔構造格子ベクトル)
時系列データは, 時刻ごとに連番の名前のファイルに保存すれば一連のデータとして認識される. 例えば, ファイル名を test4_XXX.vtk (XXX は連番の数字) として保存すればよい.
このデータを出力する
- テストスクリプト (Ruby) が <URL:scripts/test4_str-grid_vec_anim.rb>.
DCPAM 計算結果の利用
DCPAM の計算結果の
- 地表面気圧 (Ps.nc)
- 温度 (Temp.nc)
- 東西風 (U.nc)
- 南北風 (V.nc)
- 圧力鉛直速度 (OMG.nc)
の NetCDF ファイルを処理して, 北半球の
- 310 K 等温位面における風速
- 東西平均南北風と圧力鉛直速度
を VTK ファイルで出力する ruby スクリプトが test5.rb.
以下のように使う.
$ ruby s2p.rb Ps.nc Temp.nc U.nc V.nc OMG.nc outdir --tis 4560 --tie 4800
ここで,
--tis XXXX VTK ファイルに出力する最初の時間添え字 --tie XXXX VTK ファイルに出力する最後の時間添え字
である.
DCPAM を用いた Held and Suarez (1994) 力学コア実験 (解像度 T42L20) の結果を用いて描画した動画がこちら (別角度).