メインコンテンツに移動

xmlVTK

XML-VTKとは

VTKとは, 3次元データを保存するための数値計算ライブラリーです.簡単なLegacyVTKと,高度な機能を持つXML-VTKがあります.XML-VTKでは,直交座標,曲線座標をはじめ,複雑な複合格子系や重複格子系をサポートしています.また,VTKで保存されたデータは, フリーの可視化ソフトウェアParaViewを用いて,非常に容易に SVGファイルに変換できるので, LyXでの取り扱いが極めて簡単です. もちろんEPSやPDFによる出力も可能ですバージョンアップで使えなくなっている).VTK/ParaViewの組み合わせは,各所のスーパーコンピュータで採用されており,このため,巨大な計算出力を,計算センターで並列描画し,その画像だけを結果として転送・取得することも可能です.ムービーの作成は自動化されており,データをロードして再生ボタンを押せばムービーが作成されます.マウスのクリック回数を数えると,ロードするのに【File】【Open】【ファイル名選択】【OK】の4回が最低必要ですので,最低5回のマウスクリックでムービーができます.マウスが嫌いな人にはうってつけです.もっとマウスが嫌いな人向けに,データのロードからプログラムの終了まで,全てをpythonスクリプトで書けるので,繰り返し作業も精度高く行えます.数値解析データから流跡線,発散,渦度の算出を行ったり,解析形状を理解させやすくするために補助的な線・物体を配置したり,物体の位置や形状を時間変化させたりすることができます.MySQLをサポートしているらしく,巨大なパラメータ空間にも対応しているみたいです.

ここでは,高度な機能を持つXML-VTKについて解説を進めましょう.VTKでは,データファイルを読み取るという原始的な方法でも描画は可能ですが,MPI接続された巨大な計算クラスターから直接ネットワーク接続を用い,例えばリアルタイムで描画することも可能だそうです.描画に長大な計算量が必要なことを考慮し,描画の各ステップで並列計算が可能となるように工夫されています.

VTKが作成するデータファイルは非常に小さく, いわゆる"unformatted", "binary" のファイルよりも小さくなります.これは, base64zlibで圧縮をかけるためです.ファイルが非常に小さいため, SAMBAなどで, WindowsマシンからLinuxフォルダーのデータを直接描画しても問題がなさそうです.これにより,ファイルを転送したりバックアップしたりする手間を省くことができます.倍精度を保ったまま小さく保存するので,データの保存をVTKに一本化するとディスクの節約になるでしょう.

なお,全て無料ソフトウェアです.Linux, MacOSおよびWindowsをサポートしています.

VTKは完全なオブジェクト指向であるので,原始的なC, Fortranでは極めて限定的にしか使えません.それら呪われた言語は潔く捨てて,C++, C#, Java, python, tcl/tkなど,情報のプロがちゃんとメンテナンスしている言語を利用してください.とはいえ,当研究室の計算クラスターで利用できるものはC++に限られます.Javaは使えるようにはなるとは思いますが,ユーザーが居ないので・・・なお,本セクションのC++ではC言語構文は用いません. (Fortran95を書くのにFortran66を知っていると,かえって話が面倒になるのと同じです).

ここでは, 現在分かっている範囲で,VTKの利用方法を解説します.

公式ユーザーガイドはこちらです.

ここがイチヴァン良さそう

なお,次の資料は優秀です: Introduction to ParaView    Introduction to VTK

VTKデータを作成するには, VTKライブラリを使用します.

ところが!日本語文献は,(実にくだらないもの以外は)存在しません.

2012年には日本語文献はなかったが, 2021年にはパラパラあるね!

ところが!英語文献は,整理できておらず,情報が錯綜して読めたものではありません.情報のプロは,これで十分なのかもしれませんが,我々には不可能ですね.

ここを読めば少しわかるかも

そこで,最低限必要な要素をまとめてみます.