16. ターゲット:計算流体力学(Computational Fluid Dynamics
16.1. はじめに
このチュートリアルでは、cfd データセットの一般的な可視化テクニックを紹介します。ここでは、Paraview の File/ Open/ Examples にある disk_out_ref.ex2 というデータセットを使用します。このデータセットには、V というベクトル場が含まれています。
16.2. スライス
disk_out_ref.ex2を開きます。
Apply を実行します。
+X
Filters → Common → Slice を選択します。
Apply を実行します。
Show Plane の選択を解除します。
Coloring を v に設定します。
パイプラインブラウザで、disk_out_ref.ex2 を選択します。
Filters → Common → Slice を選択します。
Y Normal.
Apply を実行します。
Show Plane の選択を解除します。
Coloring を Pres に設定します。
View → Color Map Editor → Presets (ハートのついた小さな袋) → Turbo.
マウスでスライスを回転させ、両方の面が見えるようにします。
Edit → Reset Session です。また、色を変えていた場所のすぐ上に、ショートカットアイコンがあります。緑色の反時計回りの蛇が尻尾を食べているように見えます。
16.3. ストリームトレーサー - ラインとチューブ
disk_out_ref.ex2を開きます。
Apply を実行します。
+X
Filters → Common → Stream Tracer を選択します。
v.
Seed Type を Point Cloud に設定します。
Show Sphere のチェックをはずします。
Coloring を v に設定します。
Apply を実行します。
線は面ほどきれいに発色しません。それぞれの流線の周りにチューブフィルタを追加してみましょう。
Filters → Search を選択します。
タイプ Tube にします。
Apply を実行します。
さて、パーティクルがどの方向に移動しているのかを知りたい。そこで、グリフフィルタを使用します。グリフフィルタはチューブではなく、流線上に配置することに注意してください。
パイプラインブラウザで StreamTracer1 を選択します。
Filters → Common → Glyph を選択します。
Glyph Type を Cone に設定します。
Orientation Array を v に設定します。
Scale Array を v に設定します。
!非常に重要!: Scale Factor で、右側のリサイクルボタンを選択します。
Apply を実行します。
Coloring を temp に設定します。
View → Color Map Editor → Presets (ハートのついた小さな封筒) → Black Body Radiation.
このクールな画像をスクリーンショットとして保存しましょう。
File → Save Screenshot.
ファイル名を追加します。
OK を押します。
OK を押します。
Edit → Reset Session.
16.4. カスタムソースを使ったストリームトレーサー
We want to create stream tracers from any arbitrary source. This can be a line, spline, circle, ellipse or any other curving line. An extreme example would be a cylinder cut by a plane.
disk_out_ref.ex2を開きます。
Apply を実行します。
+X
vtkBlockColors を Solid Color に設定します。
Opacity を 0.3 に設定します。
Sources/Alphabetical/Ellipse.
Center を 0,0,7 に設定します。
Major Radius Vector を 3,0,0 に設定します。
Ratio を 0.3 に設定します。
Apply を実行します。
Filters → Search を選択します。
タイプ Tube にします。
Apply を実行します。
Pipeline Browser で disk_out_ref.ex2 を選択します。
Filters → Alphabetical → Stream Tracer with Custom Source を選択します。
Set Seed Source to Ellipse.
Apply を実行します。
Coloring を Solid Color に設定します。
下の画像は、ストリームトレーサーにラインやチューブを加えたものと、ストリームトレーサーにカスタムソースを加えたものを合体させたものです。よりきれいに見えるように色も変えてみました。興味があれば、複製はユーザーにお任せします。
16.5. スライスに垂直なグリフ
Edit → Reset Session.
disk_out_ref.ex2を開きます。
Apply を実行します。
+X.
ハーフスライスを作成しましょう。これはグリフのseed planeとして使用されます。
Filters → Common → Slice を選択します。
Z Normal.
原点を 0, 0, 5 に設定します。
Show Plane のチェックをはずします。
Apply を実行します。
Filters → Common → Clip を選択します。
Show Plane のチェックをはずします。
Apply を実行します。
次に、グリフを適用します。
Filters → Common → Glyph を選択します。
Glyph Type を Arrow に設定します。
Orientation Array を v に設定します。
Scale Array を v に設定します。
!非常に重要!: Scale Factor で、右側のリサイクルボタンを選択します。
.5X.
.5X.
Apply を実行します。
Coloring を v に設定します。
Magnitude を Z に変更します。
このグリフを元のデータセットに戻して、文脈を整理してみよう。
パイプラインブラウザで disk_out_ref.ex2 を選択します。
Representation を Wireframe に設定します。
pipeline browser で、disk_out_ref.ex2 の隣にある eball をクリックします。
Opacity を 0.3 に設定します。
マウスでグリフベクターにズームインすることができます。
16.6. 流体の流れ
速度プロファイルを表示するには、データセットを線でサンプリングし、この線からグリフを作成する必要があります。これはParaViewのテクニック、すなわちPlot over Lineフィルタを使って行うことができます。なお、ParaView 5.11以降では、Resample to Lineフィルタが追加される予定です。
Edit → Reset Session.
disk_out_ref.ex2を開きます。
Apply を実行します。
一本の線の上にサンプルを置くことができます。
Select Filters → Domain → Data Analysis → Plot over Line.
Y Axis.
Point1 と Point2 の Z 成分を 1 に変更します。
Resolution を 40 に変更します。
Apply を実行します。
LineChartView を閉じます。
Pipeline Browser で、disk_out_ref.ex2 の表示設定をオフにします。
これで流体を貫く線ができあがりました。Vの負のZ成分(Vとは逆方向の線)を計算しましょう。そうすると、2つのプロファイルができます。1つはVで、もう1つはVzです。
Make sure that PlotOverLine is selected
Filter → Common → Calculator を設定します。
Result を Vz に変更します。
Set Expression to 0*iHat+0*jHat+-v_Z*kHat.
Apply を実行します。
ここで、2つのグリフを作成します。1つは Calculator フィルタから、もう1つは Plot over Line フィルタから直接作成します。
パイプラインブラウザでは、Calculator1 がハイライトされているはずです。
Filters → Common → Glyph を選択します。
Glyph Type を Arrow に設定します。
Orientation Array を Vz に設定します。
Scale Array を Vz に設定します。
!非常に重要!: Scale Factor で、右側のリサイクルボタンを選択します。
.5X.
.5X.
Apply を実行します。
Color Editor のアイコンをクリックします。
カラーをオレンジに変更します。
Apply を実行します。
パイプラインブラウザで、Plot over Line フィルタを選択します。
Filters → Common → Glyph を選択します。
Glyph Type を Arrow に設定します。
Orientation Array を v に設定します。
Scale Array を v に設定します。
!非常に重要!: Scale Factor で、右側のリサイクルボタンを選択します。
Apply を実行します。
このグリフを元のデータセットに戻して、文脈を整理してみよう。
パイプラインブラウザで disk_out_ref.ex2 を選択します。
disk_out_ref.ex2 の横にある eyeball をクリックします。
Opacity を 0.3 に設定します。
ちょっといい画像を作るために、ビューを水平に分割し、この可視化を横からも表示することにします。
ラインからサンプリングしたデータを.csvファイルに書き出し、そこでExcelなどのツールで後処理をすることができます。以下にその方法を示します。
パイプラインブラウザで PlotOverLine を選択します。
縦型分割画面。
Spreadsheet view.
Now, click on the Export Spreadsheet icon, and write the Spreadsheet down to a .csv file.
このクールな画像をスクリーンショットとして保存しましょう。
File → Save Screenshot.
ファイル名を追加します。
OK を押します。
両方のビューを保存したい。Save All Views をクリックします。
OK を押します。
16.7. 流体による2Dプロット
Edit → Reset Session.
disk_out_ref.ex2を開きます。
Apply を実行します。
+X.
Select Filters → Domain → Data Analysis → Plot over Line.
Y Axis.
Point1 と Point2 の Z 成分を 4 に変更します。
Apply を実行します。
Properties Tab で、v_Z 以外の変数をオフにします。
左の view である RenderView をクリックします。
パイプラインブラウザで disk_out_ref.ex2 を選択します。
Opacity を 0.3 に設定します。
16.8. スライス上のContour
Edit → Reset Session.
disk_out_ref.ex2を開きます。
Apply を実行します。
+X.
Filter → Common → Slice を選択します。
Show Plane のチェックをはずします。
Apply を実行します。
Contourフィルタに必要な大きさです。
Filters → Common → Calculator を選択します。
出力配列名 vMag.
Expression を mag(v) に設定します。
Apply を実行します。
次に、2次元のスライスにContourを描きます。
Filter → Common → Contour を選択します。
vMagのContourです。
Value を削除し、Add a Range of Values のアイコンを使って新しいセットを作成します。
Apply を実行します。
可視化としては、Slice の表示設定をオンにして v で塗り、Contour を Solid Color に変更し、その色を White にするのがよいでしょう。
ここでは、流線、チューブ、グリフ を追加した例を紹介します。
16.9. 勾配、発散、渦度、Q基準
Gradient フィルタ (Advanced Properties タブ) は、Gradient、Divergence、Vorticity、および Q Criterion を提供します。以下は disk_out_ref.ex2 を使用した例です。
16.10. 流体の探索
流体のセルやポイントをプローブする方法は数多くあります。1つは、レンダービューのすぐ上にある Hover Points On と Hover Cells On のアイコンを使う方法です。もう1つは、インタラクティブにセルまたはポイントを選択する方法です。そして、データ検索で、セルまたはポイントラベルをオンにします。さらに、プローブフィルタを使用する方法もあります。ここでは、プローブフィルタの使い方を説明します。
Edit → Reset Session.
disk_out_ref.ex2を開きます。
Apply を実行します。
+X.
Filters → Common → Clip を選択します。
Show Plane のチェックをはずします。
反転 のチェックをはずします。
Apply を実行します。
Probe フィルタは、Auto Apply をオンにすると、より効果的に機能します。立方体から木が伸びているようなアイコンです。
Auto Apply オン
Select Filters → Domain → Data Analysis → Probe.
必要であれば、RenderView ウィンドウを選択し、フォーカスを与えてください。
ここで、disk_out_ref.ex2 を移動し、プローブされた場所を p キーで更新します。プローブされた データは、スプレッドシートビューに表示されます。
16.11. 静的なベクトル場のアニメーション化
データにベクトル場があれば、静的なデータセットをアニメーション化することができます。私たちの目標は、ベクトルフィールドから流線のセットを作成し、この流線のセット上にポイントを配置し、流線の下にポイントをアニメーション化することです。また、流線のポイントにグリフを追加する予定です。
Edit → Reset Session.
disk_out_ref.ex2を開きます。
Apply を実行します。
X アイコンをクリックします。
Stream tracer フィルタ。(すでにVでストリームトレーシングを行っています)。
Seed Type を Point Cloud に設定します。
オプション - 不透明度を 0.4 に変更します。
Apply を実行します。
Filter → Common → Contour を選択します。
IntegrationTime でのContour
Apply を実行します。
Filters → Common → Glyph を選択します。
Vectors V.
No Scale Array.
Scale 1.
Glyph Mode を All Points に設定します。
Apply を実行します。
View → Animation View を選択します。
Mode を Sequence に設定します。
No. Frames を 100 に設定します。
青い + の横のプルダウンボックスを Contour に変更します。
青い + をクリックします。なお、スタートは0にするときれいに表示されます。
ここで、再生ボタンをクリックします。
パイプラインブラウザでは、Contourフィルタの表示設定もオフにしています。
動画で保存しましょう。
File → Save Animation.
ファイル名を追加します。
.avi として保存します。
OK を押します。
OK を押します。
16.12. ボリュームレンダリング
流体をボリュームレンダリングされた温度で塗り、火のように見えるようにするつもりです。コンテキストを与えるために、外面を抽出し、disk_out_ref を半分に切り取ります。この外面を黒く塗ることにします。
注意:ボリュームレンダリングは非常にリソースを消費します。サーフェスを使ったデータセットがボリュームレンダリングで詰まって表示されることがあります。解決策は、クラスタのより多くのノードを取得し、より多くのメモリを取得することです。
Edit → Reset Session.
disk_out_ref.ex2を開きます。
Apply を実行します。
Filters → Alphabetical → Extract Surface を選択します。
Apply を実行します。
Filters → Common → Clip を選択します。
Invert の選択を解除します。
Apply を実行します。
Solid Color を black に設定します。
Representation を Wireframe に設定します。
disk_out_ref.ex2を再度開きます。
Apply を実行します。
Coloring を temp に設定します。
Representation を Volume に設定します。
火のように見えることが目的なので、Color Map の設定を細かくしていきます。
View → Color Map Editor を選択します。
presets (ハートマークのついたフォルダのようなもの) を Black Body Radiation に変更します。
カラー伝達関数 (下側の1次元の色のついた線)には、すでに4つのポイントがあるはずです。
オレンジ色の領域にポイントを追加します
ブラックの上部にもう一つ追加します。
Did you know?
ウィンドウ内をクリックすると、カラースケール上にポイントを作成することができます。
カラースケール上のポイントをクリックすると、そのポイントを選択することができます。
ポイント間の移動は、Tab キーと Shift キーで行えます。
deleteキーでポイントを削除することができます。
The temperature should be set by the physical laws of black body curve. Thus, manually specify the color transfer function values of the 6 points as follows by clicking the advanced button.
不透明度伝達関数 (上の2Dの色のついた線)には、すでに2つのポイントがあるはずです。
Add 4 extra points as seen below.
不透明度には、少し芸術的な要素が必要です。私たちがやろうとしていることは、炎の中のさまざまな温度を示すことです。また、すすが異なる量であることを示したい場合もあります(これはポイント番号1になります)。したがって、6点のopacity transfer function values (不透明度伝達関数値) を以下のように手動で指定します。
最終的にボリュームレンダリングの火はこのように表示されます。