VTK フォーマット

参考ページ:

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
 ...

このデータを出力する

不等間隔構造格子スカラー

不等間隔構造格子上のスカラーデータを記述するデータファイルは下のような見た目になる.

# 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
 ...

このデータを出力する

不等間隔構造格子ベクトル

不等間隔構造格子上のベクトルデータを記述するデータファイルは下のような見た目になる.

# 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
 ...

このデータを出力する

時系列データ (不等間隔構造格子ベクトル)

時系列データは, 時刻ごとに連番の名前のファイルに保存すれば一連のデータとして認識される. 例えば, ファイル名を test4_XXX.vtk (XXX は連番の数字) として保存すればよい.

このデータを出力する

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) の結果を用いて描画した動画がこちら (別角度).