TOKI圧縮の解凍
HDF5 ファイルを読み込むときに、一部のデータを省略するTOKI圧縮を行ったデータを読み込むことができます。
TOKI圧縮
粒子シミュレーションデータの中には、ごく一部の粒子だけ高速で相互作用をしており、周囲の粒子はほとんどまっすぐ移動しているといったものがあります。一部の粒子を充分に解像する時間ステップで全てのデータを保存すると、非常に無駄が多くなります。
そこでそのようなデータには、更新が必要な一部の粒子のみ毎ステップのデータを保存して、残りの粒子は必要な時のみ情報を更新するという圧縮を行うことができます。(TOKI圧縮)
TOKI圧縮への対応は、HDF5 ファイルからの読み込みでのみ対応しています。現在 HDF5ファイルの場合のみ複数の時間ステップ情報を1つのファイルから読み出すことができるためです。
ファイル構造
連番ファイル00.h5
snap00
全ての粒子の 位置、速度、加速度、加加速度、その他必要データ
snap01
更新が必要な粒子のデータ
snap02
更新が必要な粒子のデータ
....
....
連番ファイル01.h5
snap00
全ての粒子の 位置、速度、加速度、加加速度、その他必要データ
snap01
更新が必要な粒子のデータ
snap02
更新が必要な粒子のデータ
....
....
各連番ファイルの先頭のフレーム(グループ)には、全ての粒子の情報を保存しておくようにしてください。 残りのフレームには、更新が必要な粒子のデータのみを保存します。更新が必要な粒子の情報は、
HDF5ファイルの読み込み
で解説してある index のデータセットを利用して与えます。
粒子データの連続性
通常のモードでは、2つのフレームでの位置と速度情報から、粒子の位置を補間するための 速度、加速度、加加速度を計算して、表示の際に 位置 + 速度xΔt + (1/2)加速度xΔtxΔt + (1/6)加加速度xΔtxΔtxΔt の公式を展開しています。
そのために、2つのステップ間での粒子の動きは連続的になることが保証されています。
TOKI圧縮を解凍する際には、粒子の速度、加速度、加加速度が全てデータとして与えられているものとして、それらを元に更新されない粒子のデータを計算します。
そのため、粒子が次に更新される時に、前のフレームの情報から補間された粒子の位置と、同一である保証はされていません。(データが間違っていると、不連続な動きをします)
ある粒子が t0 でデータを与えられ、次に tn で更新されるとするならば、Δt=tn-t0として、t0の状態から計算した補間結果 位置 + 速度xΔt + (1/2)加速度xΔtxΔt + (1/6)加加速度xΔtxΔtxΔt が tn での位置にきちんとつながるように正しくデータを与えてください。(そうなっていない場合は、圧縮が間違っていることになります…)
粒子の除去
ファイル内で粒子が消滅する場合、その粒子のデータの書き込みを中止すると、単にその粒子の更新の必要が無いのか、粒子そのものがなくなったのか区別ができません。ファイルの途中で存在しなくなった粒子は、画面に表示されないパラメータをセットします。(表示領域の外に配置、半径を0に設定する等)。時間が次のファイルに移った際に、ファイルにデータのかきこまれていない粒子が実際に消滅します。
戻る