HDF5ファイルの読み込み

HDF5で保存したファイルを読み込みます。HDF5はデータのフォーマットというよりはデータのコンテナであり、Zindaiji3でデータを読むには下で述べる文法に従っている必要があります。

HDF5を使う利点、欠点

HDF5の文法

データのタイプをHDF5(SIMPLE)に設定します。実際の読み込みをする前に、「HDF5 ファイルの文法チェック」ボタンで、ファイルの読み込みを行わずに、データの内部構造を見ることができます。データの内部構造は、アトリビュート欄とデータの構造欄に表示されます。



データは、時間ステップごとに1つのグループとして保持します。(SimpleBinaryの時の様に)1ファイルに1時間ステップしか無い場合でも、1つグループを作成するようにしてください。Zindaijiで読むことのできるデータの構造は HDF5View2.9(HDF標準のビューワー)上で見ると下の図の様になります。



ファイルそのものには、メタ情報としてFormat Versionという「文字情報」を持たせます。(現時点では機能しません。将来の仕様変更などに備えた措置となっています) 各グループには、下図の様に必要なデータセットを持たせます。



グループには、メタ情報として粒子数と時間の情報を持たせます。デフォルトでは「number」「time」という名前が関連付けられています。
粒子数は必須情報です。時間情報が無い場合には、フレームに応じて0, 1, 2と数字が入ります。

グループの中には、位置や半径といったようなデータの種類に応じたデータセットを収納します。データの種類は名前で判定をします。デフォルト状態では次表の名前に関連づけれられています。位置などの3次元のデータは[粒子数][3]の2次元配列として、そのほかは1次元配列として収納します。

xyz位置情報 粒子数x3 の配列として収納します(float)
vxvyvz速度情報 粒子数x3 の配列として収納します(float)
axayaz1/2 加速度情報 粒子数x3 の配列として収納します(float)
jxjyjz1/6 加加速度情報 粒子数x3 の配列として収納します(float)
radius半径(float)
dradius半径の時間変化量(微分値)
value1VALUE1 (任意の物理量)(float)
dvalue1VALUE1 の時間変化量(微分値)
type粒子の種類(int)
ID粒子のID(int)
index粒子のインデックス(int TOKI圧縮時に必須)

※加速度と加加速度について 通常は補間によってZindaiji3の内部で計算されますが、予め加速度と加加速度を与えておくことができます。その際には、補間の方法を補間無しに設定します。(補間をすると、補間処理の際に上書きされます)
加速度、加加速度情報は、実際の加速度の(1/2)倍、(1/6)倍を与えてください。これは、補間の際にテイラー展開 位置 + 速度xΔt + (1/2)加速度xΔtxΔt + (1/6)加加速度xΔtxΔtxΔt を計算する際に、係数を予め与えて計算量を削減するための仕様になります。

※半径とVALUE1の変化量について 半径とVALUE1の変化は、値 + 微分値xΔt の1次までしか計算しません。

※粒子のインデックスついて 後述する TOKI 圧縮によって、必要が無い粒子のデータをスキップしてファイルサイズを削減することができます。その際、「今の時間ステップのデータが、何番目の粒子に対応しているか」の表として index を使います。 例えば、粒子が10個あるデータですが、この時間ステップにはそのうちの 0, 1, 4, 7 の粒子のデータのみを保存してあるとします。 その際には、index の配列に 0, 1, 4, 7 を保存しておくことで、その他のデータ(粒子4つ分の配列データ)を、粒子0, 1, 4, 7 のデータと解釈します。 この際には、メタ情報「number」には 4 では無く実際の粒子数 10 を与えておきます。 TOKI圧縮を行わない場合には必須ではありません。

関連付けられた名前の変更

データに関連付けられた名前は変更をすることができます。

たとえば、位置の情報の名前がデフォルトで設定されている xyz ではなく position であるようなデータであれば、該当する position データに対して 右クリックメニューから「XYZ として読む」を実行することで、位置情報として読み込みを行います。

データ読み込み

データ構造が問題ないことが確認できた後に、「連番ファイルを開く」を使ってデータの読み込みを開始してください。

戻る
inserted by FC2 system