Paraviewの使い方 備忘録

## はじめに

流体シミュレーションをすると、やっぱりまずはどんな風に流体が流れているかを確認したくなります。

そんな時に使いたいのが「[ParaView](https://www.paraview.org/)」です。

ParaViewとは、主に流体の可視化に用いられる汎用の可視化ソフトウェアで、HPを見ると気候変動なり、雲の動きなんかも可視化できるみたいです。

久しぶりに使ったのですが、全然使い方を覚えていなかったので、備忘録として基本的な使い方を記録します。

## 対象

ParaView の簡単な使い方を知りたい人

## 計算対象
[MPS(Moving Particle Simulation)](https://www.tandfonline.com/doi/abs/10.13182/NSE96-A24205)(S.Koshiduka et al. Nuclear Sci. and Engineering 123 3 421-434 (1996))
でいわゆる水柱の崩壊を計算しました。

以下の書籍に同様のシミュレーションがあるので、よければどうぞ
[粒子法入門 流体シミュレーションの基礎から並列計算と可視化まで C/C++ソースコード付](https://www.amazon.co.jp/%E7%B2%92%E5%AD%90%E6%B3%95%E5%85%A5%E9%96%80-%E6%B5%81%E4%BD%93%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E4%B8%A6%E5%88%97%E8%A8%88%E7%AE%97%E3%81%A8%E5%8F%AF%E8%A6%96%E5%8C%96%E3%81%BE%E3%81%A7-C-%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E4%BB%98/dp/4621088343)

## インストール

特に何も考えずに公式HPからできたと思います。[（公式HP ダウンロードページ）](https://www.paraview.org/download/)

ちなみに、この記事での実行環境はMacです。

Applicationフォルダに移動させると、LaunchPadから開くことができます。
(一番右のものです。　ちなみに真ん中のVMDも簡単に使えて便利です。)
　　<img width="496" alt="スクリーンショット 2020-07-31 17.19.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/dc531428-306f-9d68-963a-cc5674462fc6.png">

## データファイルの準備
今回はVTUファイル`.vtu`を用意します。

フォーマットはこんな感じです。

```data.vtu
<?xml version='1.0' encoding='UTF-8'?>
<VTKFile xmlns='VTK' byte_order='LittleEndian' version='0.1' type='UnstructuredGrid'>
<UnstructuredGrid>
<Piece NumberOfCells='584' NumberOfPoints='584'>
<Points>
<DataArray NumberOfComponents='3' type='Float32' Name='Position' format='ascii'>
-0.075000 -0.075000 0.000000
-0.075000 -0.050000 0.000000
-0.075000 -0.025000 0.000000
-0.075000 0.000000 0.000000
   .          .        .
   .          .        .
1.100000 0.550000 0.000000
1.100000 0.575000 0.000000
1.100000 0.600000 0.000000
</DataArray>
</Points>
<PointData>
<DataArray NumberOfComponents='1' type='Int32' Name='ParticleType' format='ascii'>
3
3
.
.
1
1
1
</DataArray>
</Cells>
</Piece>
</UnstructuredGrid>
</VTKFile>

```

実際に作りたい人はちゃんと調べてからやってみてください。

## 起動
アプリを起動するとこんな感じの画面になります。
<img width="1440" alt="スクリーンショット 2020-07-31 17.46.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/e7b16702-52f0-fd9f-d249-3b205a9aadab.png">

## ファイルのインプット
左上にある　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/ee7099ce-52f8-c7de-af24-78b9c446f1fa.png)　もしくは`command + o`　でファイルを選択することができます。

`data.vtu`のファイルがまとめられているので、こちらを選択しましょう。

## 粒子の表示
 
　　　　　　　　<img width="345" alt="スクリーンショット 2020-07-31 17.53.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/d4ea225d-4e10-98de-ca38-11c2802fa3b4.png">

読み込んだデータが選択されている状態(緑になっている状態)で`Apply`を押すと、最初のファイル(t=0の状態をアウトプットしたファイル）での粒子状態が表示されます。

<img width="1440" alt="スクリーンショット 2020-07-31 18.03.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/f7380cc0-6da8-7621-a225-8795fd311ba0.png">

まだ、めっちゃ見にくいですね。
見やすくしていきましょう。

## 粒子の見た目
### ○カラーリング
<img width="347" alt="スクリーンショット 2020-07-31 18.29.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/edda0fd2-fd1a-dcbf-972b-b4832cf83074.png">
`Display`の部分をいじっていきます。

- Representation <br>
<img width="198" alt="スクリーンショット 2020-07-31 18.31.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/e9405126-5f39-9518-ace4-f221967f6d56.png">
<br>色々ありますが粒子法のシミュレーションだと`points`が一番使いやすいでしょう
`Styling`の`Point size`で粒子の大きさを変えることができます。
`Render Points As Spheres`にチェックマークを入れると、pointのカクカク感がなくなってオススメです。
<img width="344" alt="スクリーンショット 2020-07-31 22.40.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/0cba7ebc-860b-49e2-e187-205e0e8839f6.png">

 
- Particle Type <br>
<img width="184" alt="スクリーンショット 2020-07-31 18.37.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/790a8ad0-9386-40d7-e540-4de845ff3dc2.png">
データファイルには、位置座標の他に`ParticleType`、`Velocity`、`pressure`の３つのデータを出力しています。
今回の場合だと`ParticleType`で表示するとわかりやすいです。
<img width="1440" alt="スクリーンショット 2020-07-31 18.47.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/204c26de-522b-d410-1d6d-336df7e4a163.png">

右側をいじると色味を変えたり、各カラーの分布(`Display data histgram`)なんかを見ることもできます。
<img width="379" alt="スクリーンショット 2020-07-31 18.51.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/80de56e6-d808-0856-3872-8274a05dbd18.png">

また、以下のボタンを使うと、カラーバーをリスケールすることができます。
左のボタンは自動でリスケール。
真ん中のボタンは手動で値を指定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/77a36690-50b6-d7eb-9694-7455f73eb969.png)


## 背景
なんかちょっと見にくいので、背景を変えましょう

<img width="339" alt="スクリーンショット 2020-07-31 22.25.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/b549f735-f8fb-2fe1-4252-18e604bb5d95.png">
ここの検索窓で`background`と検索します。

<img width="335" alt="スクリーンショット 2020-07-31 22.27.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/3948b068-1106-bd54-6af8-38170fa5d339.png">

ここで、`color`を変えましょう。
（多分、私のMacのデフォルトのテーマがダーク系だからですかね。背景が黒は見にくいです）

<img width="1440" alt="スクリーンショット 2020-07-31 22.33.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/e6b53055-ed25-11a9-20ae-5f07bc73de28.png">

割と見やすくはなりましたね。

これで最低限のアニメーションができました。

## 表示する粒子の設定
3Dバージョンの場合、目の前の壁のせいで、中の流体が見えなくなっています。
このような場合は、目の前の壁を表示させないようにしましょう。

<img width="100" alt="スクリーンショット 2020-08-01 11.48.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/11a26fb5-5717-9b0e-e1ad-57b944904d1a.png">
左上の`Threshold`フィルターを開きます。

<img width="347" alt="スクリーンショット 2020-08-01 12.00.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/a294fc29-ca91-4bc4-0020-6e17492083bb.png">
流体のParticleTypeは`0`に設定してあるので、流体だけを表示したいときは、`Maximum`を`0`まで戻しましょう。


<img width="137" alt="スクリーンショット 2020-08-01 12.01.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/d68ff0cb-6193-549c-1195-269424fd5cdb.png">
`Pipeline`パートで今、設定した`Threshold1`のフィルターをONにしましょう。
(目:eye:を開けると、実際に画面に表示されます。)
<img width="441" alt="スクリーンショット 2020-08-01 12.04.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/2a5aebc5-9621-909e-9c6c-04bf05c77f66.png">

こうすると、中の流体だけを見ることができます。

<img width="665" alt="スクリーンショット 2020-08-01 12.04.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/f691deff-2a0f-8fa2-7ec0-e6d34416e463.png">

元々はこんな感じです。

## 座標の表示

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/c8c5617a-28eb-94f6-28f3-f8daaa8f1dd4.png)
`Ray Tracing`の`Data Axes Grid`にチェックを入れると、以下のように座標軸を表示させることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/02ee3fa5-84a1-f02f-e06b-65f3677b541f.png)


## おまけ

![watercollapse.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586286/f9343d3d-eea5-c5d7-be6a-fc23fed2f641.gif)

若干見にくいですが、こんな感じのシミュレーションができます。
[こちらのサイト](https://syncer.jp/gif-maker)でGIFファイルを作成しました。
(めちゃくちゃ粒子が飛んでいってる、、、)