17. ターゲット:粒子シミュレーション
17.1. はじめに
粒子シミュレーションは、セルや元素のデータではなく、点データで構成されています。例としては、フィールド内の電子や流体内の水分子が挙げられます。粒子データセットを他のデータセットと組み合わせることで、固体や液体中の粒子の動きを表現することができます。
このチュートリアルでは、mediumVector.vtu という名前のデータセットを使用します。KitwareのWebサイトで入手できるようにします。もし、自分で作りたいのであれば、このチュートリアルの最後に記載されているフォーマットを使って、vtkのデータセットとして作成すればよいでしょう。それをParaViewで読み込んで、X、Y、Zの順で反射フィルタを使いました。その後、もう一度同じように反射を行ったと思います。最後に、このファイルを.vtuファイルとしてディスクに書き出しました。
17.2. 粒子を表示する
paraview
を実行します。mediumVector.vtuを開きます。
Properties タブで、Point size を2(お好みで1)に設定します。以下の画像は約25万点のポイントを保持しています。
17.3. グリフ粒子
これらの粒子を球体や矢印に置き換えるには、グリフフィルタを使うとよいでしょう。グリフフィルタは、データセットに適度な数のアイテムを追加します。この適度な数は、Maximum number of points 入力ボックスによって設定されます。Random mode は見栄えの良い出力を作成することが多いですが、多数のタイムステップを経てアニメーションを行う場合には役に立ちません。次の図は、方向と長さにベクトルを使用し、温度で色付けした矢印を粒子に使用しています。
17.4. 粒子の閾値化
もう一つの便利なフィルタは、Filters → Alphabetical → Threshold です。Threshold filter を使用すると、ユーザーは関心のある粒子だけを選択することができます。例えば、次の図は、温度が430度から511度の粒子だけを表示しています。Filters → Common → Clip を使用すると、画像の上半分に矢印のグリフが、下半分に粒子そのものが、すべて温度によって色分けされて表示されます。
17.5. 散布図
最後に、Filters → Common → Calculator で散布図を作ることができます。例えば、点のX,Y座標はそのままに、Z成分にピザの枚数を使いたい場合は、以下のようにします。
Filter → Common → Calculator を選択します。
Coordinate Results チェックボックスをオンにします。
Expression を coordsX*iHat+coordsY*jHat+pizza*kHat に設定します。これで、以下のようなベクトルが作成されます。(X,Y,pizzas)のようになります。(iHatは X、 * は座標と変数を結びつけるもの、+記号はX,Y,Zの間のカンマとお考えください)。
17.6. データファイルの例
このデータは、.vtkファイルに書き込まれます。多くのデータを削除してしまったので、再作成する必要があることに注意してください。また、いくつかのランダムな変数データを追加したことにも注意してください。たとえば、ある場所には1枚または2枚のピザがあるなどです。これは実際に奇妙なデータセットを作成します - セルごとに多くのポイントを持ちますが、表示目的には有効でした。
# vtk DataFile Version 2.0
Unstructured Grid Example
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 512 float
0 0 0 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0
0 1 0 1 1 0 2 1 0 3 1 0 4 1 0 5 1 0 6 1 0 7 1 0
...
0 0 1 1 0 1 2 0 1 3 0 1 4 0 1 5 0 1 6 0 1 7 0 1
0 1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1
...
0 0 2 1 0 2 2 0 2 3 0 2 4 0 2 5 0 2 6 0 2 7 0 2
0 1 2 1 1 2 2 1 2 3 1 2 4 1 2 5 1 2 6 1 2 7 1 2
...
CELL_TYPES 52
1
1
...
POINT_DATA 512
SCALARS temperature float 1
LOOKUP_TABLE default
000.0 001.0 002.0 003.0 004.0 005.0 006.0 007.0 008.0 009.0
010.0 011.0 012.0 013.0 014.0 015.0 016.0 017.0 018.0 019.0
...
SCALARS pizza float 1
LOOKUP_TABLE default
000.0 000.0 000.0 000.0 000.0 000.0 000.0 000.0 000.0 000.0
000.0 000.0 000.0 000.0 000.0 000.0 000.0 000.0 000.0 000.0
...
VECTORS vectors float
1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
...