vtkファイルフォーマット(バイナリ形式)

バイナリ形式によるvtkファイルのフォーマットがやっとわかったので書き留めておく。
意外と日本語で解説している人、いないのよね…。


また、日本語サイトでちらほら見つかるアスキー形式のvtkファイルも、ほぼ全てがレガシーなフォーマット(.vtk)の解説になっている。

最新のvtk形式はxmlによる記述を採用しており、可視化する形状の種類(画像、構造格子、非構造格子、etc.)によって拡張子を変えている(vti,vtuなど)。
ここでは最新のフォーマットについて少しだけ解説する。



基本的な形式は下記のサイトの後半に書かれており、アスキー形式でよければすぐ理解できると思う。
VTK File Formats


サンプルコードは下記の通り。見た目だけでこれのみでは可視化不能。ちなみにこれはImageDataなので拡張子はvtiである。

<?xml version="1.0"?>
<VTKFile type="ImageData" version="1.0" byte_order="LittleEndian" header_type="UInt64">
  <ImageData WholeExtent= "Xmin Xmax Ymin Ymax Zmin Zmax" Origin= "x0 y0 z0" Spacing= "dx dy dz">
    <Piece Extent= "Pxmin Pxmax Pymin Pymax Pzmin Pzmax" > 
      <PointData>
      </PointData>
      <CellData Scalars="Scalar">
        <DataArray type="Float32" Name="Scalar" format="appended" RangeMin="minValue" RangeMax="maxValue" offset="0">
        </DataArray>
      </CellData>
    </Piece>
  </ImageData>
  <AppendedData encoding="raw">

    _NNNN(Data(Binary))

  </AppendedData>
</VTKFile>


ヘッダ部の変数は直観的にだいたい想像がつくので解説は割愛。
これは画像だが直交格子を使った計算などならこれでも対応できると思われる。

可視化したいデータをAppendedとして、最後にまとめて貼り付ければいいのでコーディングも割と楽だと思う。

ただ、注意として、
・データの頭に必ずアンダーバー(_)を配置しないといけないこと
・8バイト(もしくは4)のint型で、dataの総バイト数を記述すること(下記NNNN)4か8かは二行目のheader_typeに依存。UInt64なら8.
を忘れてはならない。encodingをrawとしているためこれは必須。

上記サイトにも注意があるかもしれないが、おそらく見落としていた。
偶然見つけた下記がなければまだ悩んでいたと思われる。感謝。
'Re: [Paraview] VTK XML Binary Output' - MARC
What they don’t tell you about VTK XML binary formats
VTK XML Formats - KitwarePublic

netcdf-4.4.0のインストール(Ubuntu14.04)

データ管理用フォーマットとして名高いnetcdfをインストールした。


ソースコードをダウンロードしてきて、

./configure --prefix=/home/hoge/netcdf-4.4.0
make
make install

で終了。なぜかhelpを見てもhdf5との依存関係の設定方法が書いてなかった。

後はc++APIでも落としてこようかなと思わなくもないが、とりあえずFFV-Cでnetcdfが使えるよう再設定を試みる。

vmware-toolsとopen-vm-toolsの共依存関係:Ubuntu14.04の場合

最近のVmwareにおいて、Linuxの仮想環境ではVmwareが提供するvmware-toolsではなく、Linux側が提供するopen-vm-toolsの使用を推奨しているはず。
ただし、open-vm-toolsのみをインストールしても共有フォルダが有効化できない。
vmhgfsが通常の設定では起動しないのが原因らしいが、これの対応はかなり面倒。

そういうわけでvmware-toolsを使い続けてきたが、最近Ubuntuのアップデートを行った結果、Ubuntuの画面の拡大ができなくなった。

vmware-toolsがちゃんと機能していないらしい。

仕方ないのでvmware-toolsとopen-vm-toolsを全て削除し、

最新版のvmware-toolsのインストール

open-vm-tools-desktopのインストール

の順にやった結果、画面の拡大、共有フォルダの有効化ともに正常に起動した。ものすごい不自然な設定で、完全に対処療法だけど、今使用しているPCはあと2か月程度しか使わない予定なのでもうこれで通す。

Sublime text 3のインストール(ubuntu14.04, Windows8.1)

vimにそろそろ限界を感じてきたので、Sublime text3に変更を試みた。
vimに特に大きな不満があるわけでないし、サーバでの作業も簡単にできる点で非常にありがたいけど、
だからといってvimの変態的なカスタマイズを突き詰めるよりは、もっとモダンなエディタで自動プラグインによる管理のほうが効率的だろうと判断した。


インストールしたsublimeに対して行った設定を列挙する。

  • Package Controlのインストール

view-show consoleを選択
Installation - Package Control
の中のpythonコマンドを全てコンソールに打ち込む。何度か再起動を求められるので、そのたびに同様の操作を繰り替えすといつの間にか入っている。
これでCtr+shift+pでパッケージのインストールが簡単にできるようになる。

  • テーマ

package installで早速theme flatlandを選択。

Preferences settings-Userを
{
"default_encording": "UTF-8",
"draw_white_space": "all",
"fallback_encording": "UTF-8",
"font_face": "Consolas",
"font_size": 12,
"highlight line": true,
"ignored_packages":
[
],
"line_padding_top": 3,
"show_encording": true,
"tab size": 4,
"theme": "Flatland Dark.sublime-theme",
"color_scheme": "Packages/Theme - Flatland/Flatland Monokai.tmTheme",
"translate_tabs_to_spaces": true,
"trim_trailing_white_space_on_save": true,
"vintage_ctrl_keys": true,
"vintage_start_in_command_mode": true,
"vintage_use_clipboard": true,
"word wrap": true
}
とする。
追記(20160121):
こっちのほうが最新版で格好いいので変更した。
m.designbits.jp


ついでにPreferencesのKey Bindings-Userを
[
// タブの切り替え
{ "keys": ["g", "t"], "command": "next_view",
"context":
[{ "key": "setting.is_widget", "operand": false },
{ "key": "setting.command_mode" }
]
},
{ "keys": ["g", "T"], "command": "prev_view",
"context":
[
{ "key": "setting.is_widget", "operand": false },
{ "key": "setting.command_mode" }
]
},
// インサートモードから抜ける
{ "keys": ["ctrl+j"], "command": "exit_insert_mode",
"context":
[
{ "key": "setting.command_mode", "operand": false },
{ "key": "setting.is_widget", "operand": false }
]
},
{ "keys": ["j","j"], "command": "exit_insert_mode",
"context":
[
{ "key": "setting.command_mode", "operand": false },
{ "key": "setting.is_widget", "operand": false }
]
},
// ビジュアルモードから抜ける
{ "keys": ["ctrl+j"], "command": "exit_visual_mode",
"context":
[
{ "key": "setting.command_mode"},
{ "key": "num_selections", "operand": 1},
{ "key": "selection_empty", "operator": "equal", "operand": false, "match_all": false }
]
},
{ "keys": ["ctrl+shift+c"], "command": "clang_format" },
]
とする。

  • 日本語を使用するため、下記に沿う作業を行う(Ubuntuのみ)。

Linux での日本語入力設定 [Sublime Text 3 の参考書(実践編)Wiki]


All Autocomplete
BracketHighter
C++ Snippets

Clang Format
Clang Formatの実行ファイルへパスを通す必要がある。
github.com

ConvertToUTF8
IMESupport
MinimalFortran
SideBarEnhancements
Smart Delete

この動作の前にCppcheckをインストールしておくこと。
SublimeLinter
SublimeLinter-cppcheck
windowsの場合はそれぞれ下記を参考に。
How to do it — C++ Starting Kit Project - Guide 0.0.1 documentation

SyncedSlideBar
Terminal
TrailingSpaces
preferences-package settings-trailing spaces-settings-Userを選択し、下記を記入
{
"trailing_spaces_regexp": " |[ \t]+",
"trailing_spaces_highlight_color": "comment"
}

参考
Sublime Text 3でインストールしているプラグイン - プログラミングとかLinuxとかの備忘録
【Sublime Text】愛好家必読!Vim化しよう - 悲しいけど、オレ素人プログラマなのよね

ubuntuWindowsの同期を試みたが失敗した。まあ仕方ないか。

ubuntu14.04へのFFV-Cのインストール

ボクセルベースの流体解析は理研がもう十年くらい頑張って開発しており、その最新版がこれらしい。
FFV-C package by avr-aics-riken
なかなか便利そうだし、まだメンテナンスもされていそうなので、期待して使用を試みた。

前準備として、
sudo apt-get install autoconf

で、上のサイトからtarファイルを落として解凍する。
推奨としてはinstall_intel.shをそのまま実行すればよいらしいが、そうするとエラーが発生。
パスがおかしいみたいなので、中をみて、
FFV_HOME = ~/FFV
となっていたところを、自分のhome直下に書き換えて再実行。これでうまくいった。



...vsphereは何だったのかと言いたくなるくらい簡単。

openFOAMの解析結果処理:閾値で指定した領域体積の時系列データ取得

タイトルの操作はopenFOAMに実装されているfunctionでは無理そうで、paraviewによる代替案を記録しておく。

・paraFOAMを起動

・thretholdで適当な物理量による閾値処理

・filtersからintegrateVariablesを選択

あとはfileからsave dataを選択して、全時間の出力を選択すれば終わり。

ただしこの場合、csvファイルが各時間ステップで作成される。
catか何かで結合すると時系列が乱れるので、結局そのへんは手作業もしくはスクリプトを書いて編集するしかない様子。
ああ面倒くさい。