ParaView可視化
理論:ParaViewが扱うデータの形
概要
ParaViewできれいな図は描けるのですが、数値をそのまま信じてよいのか不安です。
データが「どこに置かれているか」を意識すれば、ほとんどの誤解は防げる。ParaViewのデータには、要素(セル)ごとに1つの値を持つセルデータと、節点(ポイント)ごとに値を持つポイントデータがある。有限体積法のOpenFOAMの結果は本来セルデータで、有限要素法のソルバーは積分点の値を節点に外挿して出すことが多い。ParaViewは表示を滑らかにするため、セルデータを平均してポイントデータに変換すること(Cell Data to Point Data)があり、そのとき局所のピークは平らにならされる。また、断面(Slice)や線上の値(Plot Over Line)は、元のデータを補間した値なので、メッシュが粗い所では実際の値とずれる。図の見た目だけでなく、どのデータをどう加工して出した数字かを確かめるのが基本だ。
平均と検算の式
左は、節点を共有する4要素の値を平均したときの節点の値。右は、円柱(直径10 mm・長さ100 mm)の側面積で、Integrate Variablesでの面積の検算に使える。
ParaViewとVTK
ParaViewの土台になっているVTK(Visualization Toolkit)は、1990年代に3人の研究者が書いた可視化の教科書のソフトウェアとして生まれ、その後Kitware社が開発を続けている。ParaView自体は2000年ごろ、米国のロスアラモス国立研究所とKitwareの共同で、スーパーコンピュータの巨大な計算結果を並列で可視化するために始まった。今では科学技術計算の結果を見る標準的な道具の一つになっている。
計算例
19%は例示4要素の共有節点の値の差で、モデル全体の最大値が必ず19%低下するという意味ではない。圧力の面積積分はスカラー量で、力には圧力×面法線のベクトル積分(必要なら粘性力も)が必要。応力の平均・外挿は適用する評価基準に合わせる。
例1:節点を共有する4要素の応力
| 表示の方法 | その節点付近の表示値 | 要素の最大値との差 |
|---|---|---|
| セルデータ(要素ごと) | 180 MPa | 0% |
| Cell Data to Point Data(平均) | 145 MPa | −19% |
4要素の値は180・170・120・110 MPa。応力が急に変わる所ほど平均で失われる量が大きい。疲労や強度の評価では、平均した節点値ではなく、要素の値や、ソルバーが外挿した節点値を使う。
例2:Integrate Variablesによる検算
| 確かめる量 | 期待値 | 合わないときの原因 |
|---|---|---|
| 円柱側面の面積(直径10 mm・長さ100 mm) | ≈ 3,142 mm² | 単位(m/mm)の取り違え |
| 圧力×面法線のベクトル積分 | ソルバーの圧力による力(同じ面・単位) | 圧力の単位・法線・粘性力の有無 |
| 流入と流出の流量 | 等しい(定常・非圧縮) | 収束不足・境界の選択 |
Plot Over Lineで断面の速度分布を出したら、壁の近くの値がソルバーの値と合いません。なぜですか?
補間と、壁の境界の値の扱いを確かめよう。Plot Over Lineは線上に指定した数(Resolution)の点を置き、それぞれの点で元のデータを補間した値を出す。セルデータのままなら、点がどのセルに入るかで階段状の値になり、ポイントデータに変換していれば節点の平均から補間した値になる。どちらも壁の境界面上の値(OpenFOAMなら境界パッチの値)とは一致しないことがある。壁の値を正しく見たいときは、OpenFOAMの読み込みで境界パッチを含め、線の端を壁から少し内側に置くか、壁の値はソルバーの関数オブジェクト(wallShearStressなど)で直接出すのがよい。また、Resolutionがメッシュより粗いと、急な変化を見落とすので、壁の近くのセルより細かい間隔にしておく。
実務での進め方
- 結果を読み込み、Informationタブでセルデータかポイントデータか、データの範囲と単位を確かめる。
- Integrate Variablesで面積・体積・流量など既知の量を検算する。
- 最大値の評価はセルデータか外挿した節点値で行い、平均の影響を避ける。
- 断面・等値面・流線などのフィルタで現象を理解し、図には単位とカラーバーの範囲を明記する。
- 同じ処理を繰り返すなら、Python Traceで操作を記録し、pvpythonやpvbatchで自動化する。
「虹色のカラーマップに注意」
昔からよく使われる虹色のカラーマップ(Rainbow)は、明るさが一様に変わらないため、黄色や水色の帯の所に実際にはない境目があるように見えたり、色覚の違いによって読み取れなかったりする。ParaViewの既定は、明るさが一様に変わる配色に変わっている。値の大小を正しく伝えたい図では、こうした配色を使い、カラーバーの範囲を図どうしでそろえると、比較の誤解を防げる。
よくある間違い
間違いと対策
| 間違い | 起きること | 対策 |
|---|---|---|
| 平均したポイントデータで最大値を評価 | ピークを過小評価 | セルデータ・外挿値で |
| 単位を確かめない | 桁違いの読み取り | 面積・体積で検算 |
| Plot Over Lineの点が粗い | 急な変化を見落とす | セルより細かく |
| カラーバーの範囲が図ごとに違う | 比較を誤る | 範囲をそろえる |
| 並列結果を結合せずに開く | 一部しか表示されない | Decomposed Caseで開く |
関連する内容も知りたいです。
関連するページはOpenFOAM後処理、Gmshメッシュ生成、SALOME Meshモジュール、FreeCAD FEMモジュールが参考になる。
よくある質問
ParaViewとは何ですか?
米国の国立研究所とKitware社が開発するオープンソースの可視化ソフトで、VTKライブラリの上に作られています。OpenFOAM、Code_Aster、Elmer、FEniCSなど多くのソルバーの結果を読み込み、断面、等値面、流線、グラフなどのフィルタを組み合わせて表示します。大きなデータを並列で処理でき、Pythonで操作を自動化できます。
表示された最大値がソルバーの出力と違うのはなぜですか?
セルデータを節点データに変換したときに平均されるためです。ある節点を共有する4要素の応力が180・170・120・110 MPaなら、Cell Data to Point Dataでその節点の値は平均の145 MPaになり、180 MPaのピークが19%小さく見えます。最大値を評価するときは、セルデータのまま見るか、ソルバー側で積分点から外挿した節点値を使います。
結果が正しく読み込めているかはどう確かめますか?
形と単位が分かっている量で検算します。Integrate Variablesで面積や体積を出して設計値と比べたり、圧力を面で積分した力をソルバーの力の出力と比べたりします。円柱の側面(直径10 mm・長さ100 mm)なら面積は約3,142 mm²で、これが合わなければ単位やスケールの読み込みを疑います。
参考資料・検算の位置づけ
掲載値は本文の仮定に基づく教育用の参考計算。資料は理論・設定の参照先であり、本記事の数値を各ソフトで再現した証明ではない。設計・製造の判断には対象条件での検証が必要。
関連トピック
なった
詳しく
報告