17. ターゲット:粒子シミュレーション

17.1. はじめに

粒子シミュレーションは、セルや元素のデータではなく、点データで構成されています。例としては、フィールド内の電子や流体内の水分子が挙げられます。粒子データセットを他のデータセットと組み合わせることで、固体や液体中の粒子の動きを表現することができます。

このチュートリアルでは、mediumVector.vtu という名前のデータセットを使用します。KitwareのWebサイトで入手できるようにします。もし、自分で作りたいのであれば、このチュートリアルの最後に記載されているフォーマットを使って、vtkのデータセットとして作成すればよいでしょう。それをParaViewで読み込んで、X、Y、Zの順で反射フィルタを使いました。その後、もう一度同じように反射を行ったと思います。最後に、このファイルを.vtuファイルとしてディスクに書き出しました。

17.2. 粒子を表示する

  • paraview を実行します。

  • mediumVector.vtuを開きます。

  • Properties タブで、Point size を2(お好みで1)に設定します。以下の画像は約25万点のポイントを保持しています。

../../_images/Particles_1.png

17.3. グリフ粒子

  • これらの粒子を球体や矢印に置き換えるには、グリフフィルタを使うとよいでしょう。グリフフィルタは、データセットに適度な数のアイテムを追加します。この適度な数は、Maximum number of points 入力ボックスによって設定されます。Random mode は見栄えの良い出力を作成することが多いですが、多数のタイムステップを経てアニメーションを行う場合には役に立ちません。次の図は、方向と長さにベクトルを使用し、温度で色付けした矢印を粒子に使用しています。

../../_images/Particles_2.png

17.4. 粒子の閾値化

  • もう一つの便利なフィルタは、Filters → Alphabetical → Threshold です。Threshold filter を使用すると、ユーザーは関心のある粒子だけを選択することができます。例えば、次の図は、温度が430度から511度の粒子だけを表示しています。Filters → Common → Clip を使用すると、画像の上半分に矢印のグリフが、下半分に粒子そのものが、すべて温度によって色分けされて表示されます。

../../_images/Particles_3.png

17.5. 散布図

  • 最後に、Filters → Common → Calculator で散布図を作ることができます。例えば、点のX,Y座標はそのままに、Z成分にピザの枚数を使いたい場合は、以下のようにします。

    • Filter → Common → Calculator を選択します。

    • Coordinate Results チェックボックスをオンにします。

    • ExpressioncoordsX*iHat+coordsY*jHat+pizza*kHat に設定します。これで、以下のようなベクトルが作成されます。(X,Y,pizzas)のようになります。(iHatは X、 * は座標と変数を結びつけるもの、+記号はX,Y,Zの間のカンマとお考えください)。

../../_images/Particles_4.png

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
...