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 の選択を解除します。

  • Coloringv に設定します。

  • パイプラインブラウザで、disk_out_ref.ex2 を選択します。

  • Filters → Common → Slice を選択します。

  • Y Normal.

  • Apply を実行します。

  • Show Plane の選択を解除します。

  • Coloringpres に設定します。

  • View → Color Map Editor → Presets (ハートのついた小さな袋) → Turbo.

  • マウスでスライスを回転させ、両方の面が見えるようにします。

  • Edit → Reset Session です。また、色を変えていた場所のすぐ上に、ショートカットアイコンがあります。緑色の反時計回りの蛇が尻尾を食べているように見えます。

../../_images/Cfd_slices2.png

16.3. ストリームトレーサー - ラインとチューブ

  • disk_out_ref.ex2を開きます。

  • Apply を実行します。

  • +X

  • Filters → Common → Stream Tracer を選択します。

  • v.

  • Seed TypePoint Cloud に設定します。

  • Show Sphere のチェックをはずします。

  • Coloringv に設定します。

  • Apply を実行します。

線は面ほどきれいに発色しません。それぞれの流線の周りにチューブフィルタを追加してみましょう。

  • Filters → Search を選択します。

  • タイプ Tube にします。

  • Apply を実行します。

さて、パーティクルがどの方向に移動しているのかを知りたい。そこで、グリフフィルタを使用します。グリフフィルタはチューブではなく、流線上に配置することに注意してください。

  • パイプラインブラウザで StreamTracer1 を選択します。

  • Filters → Common → Glyph を選択します。

  • Glyph TypeCone に設定します。

  • Orientation Arrayv に設定します。

  • Scale Arrayv に設定します。

  • !非常に重要!: Scale Factor で、右側のリサイクルボタンを選択します。

  • Apply を実行します。

  • Coloringtemp に設定します。

  • View → Color Map Editor → Presets (ハートのついた小さな封筒) → Black Body Radiation.

このクールな画像をスクリーンショットとして保存しましょう。

  • File → Save Screenshot.

  • ファイル名を追加します。

  • OK を押します。

  • OK を押します。

  • Edit → Reset Session.

../../_images/Cfd_streamtracer1.png

16.4. カスタムソースを使ったストリームトレーサー

任意のソースからストリームトレーサーを作成したいと考えています。これは、線、スプライン、円、楕円、その他あらゆる曲線です。極端な例としては、平面で切断された円柱が挙げられます。

  • disk_out_ref.ex2を開きます。

  • Apply を実行します。

  • +X

  • vtkBlockColorsSolid Color に設定します。

  • Opacity0.3 に設定します。

  • Sources/Alphabetical/Elipse.

  • Center0,0,7 に設定します。

  • Major Radius Vector3,0,0 に設定します。

  • Ratio0.3 に設定します。

  • Apply を実行します。

  • Filters → Search を選択します。

  • タイプ Tube にします。

  • Apply を実行します。

  • Pipeline Browserdisk_out_ref.ex2 を選択します。

  • Filters → Alphabetical → Stream Tracer with Custom Source を選択します。

  • Seed SourceElipse に設定します。

  • Apply を実行します。

  • ColoringSolid Color に設定します。

下の画像は、ストリームトレーサーにラインやチューブを加えたものと、ストリームトレーサーにカスタムソースを加えたものを合体させたものです。よりきれいに見えるように色も変えてみました。興味があれば、複製はユーザーにお任せします。

../../_images/Cfd_streamtracer_with_custom_source.png

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 TypeArrow に設定します。

  • Orientation Arrayv に設定します。

  • Scale Arrayv に設定します。

  • !非常に重要!: Scale Factor で、右側のリサイクルボタンを選択します。

  • .5X.

  • .5X.

  • Apply を実行します。

  • Coloringv に設定します。

  • MagnitudeZ に変更します。

このグリフを元のデータセットに戻して、文脈を整理してみよう。

  • パイプラインブラウザで disk_out_ref.ex2 を選択します。

  • RepresentationWireframe に設定します。

  • pipeline browser で、disk_out_ref.ex2 の隣にある eball をクリックします。

  • Opacity0.3 に設定します。

  • マウスでグリフベクターにズームインすることができます。

../../_images/Cfd_slice_glyph1.png

16.6. 流体の流れ

速度プロファイルを表示するには、データセットを線でサンプリングし、この線からグリフを作成する必要があります。これはParaViewのテクニック、すなわちPlot over Lineフィルタを使って行うことができます。なお、ParaView 5.11以降では、Resample to Lineフィルタが追加される予定です。

  • Edit → Reset Session.

  • disk_out_ref.ex2を開きます。

  • Apply を実行します。

一本の線の上にサンプルを置くことができます。

  • Filters → Data Analysis → Plot over Line を選択します。

  • Y Axis.

  • Point1Point2Z 成分を 1 に変更します。

  • Resolution40 に変更します。

  • Apply を実行します。

  • LineChartView を閉じます。

  • Pipeline Browser で、disk_out_ref.ex2 の表示設定をオフにします。

これで流体を貫く線ができあがりました。Vの負のZ成分(Vとは逆方向の線)を計算しましょう。そうすると、2つのプロファイルができます。1つはVで、もう1つはVzです。

  • Filter → Common → Calculator を設定します。

  • ResultVz に変更します。

  • Set Expression to 0*iHat+0*jHat+-v_Z*kHat.

  • Apply を実行します。

ここで、2つのグリフを作成します。1つは Calculator フィルタから、もう1つは Plot over Line フィルタから直接作成します。

  • パイプラインブラウザでは、Calculator1 がハイライトされているはずです。

  • Filters → Common → Glyph を選択します。

  • Glyph TypeArrow に設定します。

  • Orientation ArrayVz に設定します。

  • Scale ArrayVz に設定します。

  • !非常に重要!: Scale Factor で、右側のリサイクルボタンを選択します。

  • .5X.

  • .5X.

  • Apply を実行します。

  • Color Editor のアイコンをクリックします。

  • カラーをオレンジに変更します。

  • Apply を実行します。

  • パイプラインブラウザで、Plot over Line フィルタを選択します。

  • Filters → Common → Glyph を選択します。

  • Glyph TypeArrow に設定します。

  • Orientation Arrayv に設定します。

  • Scale Arrayv に設定します。

  • !非常に重要!: Scale Factor で、右側のリサイクルボタンを選択します。

  • Apply を実行します。

このグリフを元のデータセットに戻して、文脈を整理してみよう。

  • パイプラインブラウザで disk_out_ref.ex2 を選択します。

  • disk_out_ref.ex2 の横にある eyeball をクリックします。

  • Opacity0.3 に設定します。

ちょっといい画像を作るために、ビューを水平に分割し、この可視化を横からも表示することにします。

../../_images/Cfd_fluid_velocity_profile1.png

ラインからサンプリングしたデータを.csvファイルに書き出し、そこでExcelなどのツールで後処理をすることができます。以下にその方法を示します。

  • パイプラインブラウザで PlotOverLine を選択します。

  • 縦型分割画面。

  • Spreadsheet view.

  • ここで、Export Scene のアイコンをクリックし、Spreadsheet.csv file に書き出します。

このクールな画像をスクリーンショットとして保存しましょう。

  • File → Save Screenshot.

  • ファイル名を追加します。

  • OK を押します。

  • 両方のビューを保存したい。Save All Views をクリックします。

  • OK を押します。

../../_images/Cfd_fluid_velocity_profile_spreadsheet.png

16.7. 流体による2Dプロット

  • Edit → Reset Session.

  • disk_out_ref.ex2を開きます。

  • Apply を実行します。

  • +X.

  • Filters → Data Analysis → Plot over Line を選択します。

  • Y Axis.

  • Point1Point2Z 成分を 4 に変更します。

  • Apply を実行します。

  • Properties Tab で、v_Z 以外の変数をオフにします。

  • 左の view である RenderView をクリックします。

  • パイプラインブラウザで disk_out_ref.ex2 を選択します。

  • Opacity0.3 に設定します。

../../_images/Cfd_2d_plots.png

16.8. スライス上のContour

  • Edit → Reset Session.

  • disk_out_ref.ex2を開きます。

  • Apply を実行します。

  • +X.

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

  • Show Plane のチェックをはずします。

  • Apply を実行します。

Contourフィルタに必要な大きさです。

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

  • 出力配列名 vMag.

  • Expressionmag(v) に設定します。

  • Apply を実行します。

次に、2次元のスライスにContourを描きます。

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

  • vMagのContourです。

  • Value を削除し、Add a Range of Values のアイコンを使って新しいセットを作成します。

  • Apply を実行します。

可視化としては、Slice の表示設定をオンにして v で塗り、ContourSolid Color に変更し、その色を White にするのがよいでしょう。

ここでは、流線チューブグリフ を追加した例を紹介します。

../../_images/Cfd_contours_on_slices.png

16.9. 勾配、発散、渦度、Q基準

Gradient フィルタ (Advanced Properties タブ) は、Gradient、Divergence、Vorticity、および Q Criterion を提供します。以下は disk_out_ref.ex2 を使用した例です。

../../_images/Cfd_gradient1.png

16.10. 流体の探索

流体のセルやポイントをプローブする方法は数多くあります。1つは、レンダービューのすぐ上にある Hover Points OnHover Cells On のアイコンを使う方法です。もう1つは、インタラクティブにセルまたはポイントを選択する方法です。そして、データ検索で、セルまたはポイントラベルをオンにします。さらに、プローブフィルタを使用する方法もあります。ここでは、プローブフィルタの使い方を説明します。

  • Edit → Reset Session.

  • disk_out_ref.ex2を開きます。

  • Apply を実行します。

  • +X.

  • Filters → Common → Clip を選択します。

  • Show Plane のチェックをはずします。

  • 反転 のチェックをはずします。

  • Apply を実行します。

Probe フィルタは、Auto Apply をオンにすると、より効果的に機能します。立方体から木が伸びているようなアイコンです。

  • Auto Apply オン

  • Filters → Data Analysis → Probe を選択します。

  • 必要であれば、RenderView ウィンドウを選択し、フォーカスを与えてください。

  • ここで、disk_out_ref.ex2 を移動し、プローブされた場所を p キーで更新します。プローブされた データは、スプレッドシートビューに表示されます。

../../_images/Cfd_probe1.png

16.11. 静的なベクトル場のアニメーション化

データにベクトル場があれば、静的なデータセットをアニメーション化することができます。私たちの目標は、ベクトルフィールドから流線のセットを作成し、この流線のセット上にポイントを配置し、流線の下にポイントをアニメーション化することです。また、流線のポイントにグリフを追加する予定です。

  • Edit → Reset Session.

  • disk_out_ref.ex2を開きます。

  • Apply を実行します。

  • X アイコンをクリックします。

  • Stream tracer フィルタ。(すでにVでストリームトレーシングを行っています)。

  • Seed TypePoint Cloud に設定します。

  • オプション - 不透明度を 0.4 に変更します。

  • Apply を実行します。

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

  • IntegrationTime でのContour

  • Apply を実行します。

  • Filters → Common → Glyph を選択します。

  • Vectors V.

  • No Scale Array.

  • Scale 1.

  • Glyph ModeAll Points に設定します。

  • Apply を実行します。

  • View → Animation View を選択します。

  • ModeSequence に設定します。

  • No. Frames100 に設定します。

  • 青い + の横のプルダウンボックスを Contour に変更します。

  • 青い + をクリックします。なお、スタートは0にするときれいに表示されます。

  • ここで、再生ボタンをクリックします。

  • パイプラインブラウザでは、Contourフィルタの表示設定もオフにしています。

動画で保存しましょう。

  • File → Save Animation.

  • ファイル名を追加します。

  • .avi として保存します。

  • OK を押します。

  • OK を押します。

../../_images/Cfd_animating_static_field.png

16.12. ボリュームレンダリング

流体をボリュームレンダリングされた温度で塗り、火のように見えるようにするつもりです。コンテキストを与えるために、外面を抽出し、disk_out_ref を半分に切り取ります。この外面を黒く塗ることにします。

注意:ボリュームレンダリングは非常にリソースを消費します。サーフェスを使ったデータセットがボリュームレンダリングで詰まって表示されることがあります。解決策は、クラスタのより多くのノードを取得し、より多くのメモリを取得することです。

  • Edit → Reset Session.

  • disk_out_ref.ex2を開きます。

  • Apply を実行します。

  • Filters → Alphabetical → Extract Surface を選択します。

  • Apply を実行します。

  • Filters → Common → Clip を選択します。

  • Invert の選択を解除します。

  • Apply を実行します。

  • Solid Colorblack に設定します。

  • RepresentationWireframe に設定します。

  • disk_out_ref.ex2を再度開きます。

  • Apply を実行します。

  • Coloringtemp に設定します。

  • RepresentationVolume に設定します。

火のように見えることが目的なので、Color Map の設定を細かくしていきます。

  • View → Color Map Editor を選択します。

  • presets (ハートマークのついたフォルダのようなもの) を Black Body Radiation に変更します。

  • カラー伝達関数 (下側の1次元の色のついた線)には、すでに4つのポイントがあるはずです。

  • オレンジ色の領域にポイントを追加します

  • ブラックの上部にもう一つ追加します。

../../_images/Cfd_volume_rendering_color_transfer_function.png

Did you know?

  • ウィンドウ内をクリックすると、カラースケール上にポイントを作成することができます。

  • カラースケール上のポイントをクリックすると、そのポイントを選択することができます。

  • ポイント間の移動は、Tab キーと Shift キーで行えます。

  • deleteキーでポイントを削除することができます。

  • 温度は、黒体曲線の物理法則で設定する必要があります。そこで、advanced ボタンをクリックして、以下のように6点のcolor transfer function values (カラー伝達関数値) を手動で指定します。

../../_images/Cfd_volume_rendering_color_transfer_values.png
  • 不透明度伝達関数 (上の2Dの色のついた線)には、すでに2つのポイントがあるはずです。

  • 以下のように4点追加します。

../../_images/Cfd_volume_rendering_opacity_transfer_function.png
  • 不透明度には、少し芸術的な要素が必要です。私たちがやろうとしていることは、炎の中のさまざまな温度を示すことです。また、すすが異なる量であることを示したい場合もあります(これはポイント番号1になります)。したがって、6点のopacity transfer function values (不透明度伝達関数値) を以下のように手動で指定します。

../../_images/Cfd_volume_rendering_opacity_transfer_values.png

最終的にボリュームレンダリングの火はこのように表示されます。

../../_images/Cfd_volume_rendering.png