リチャード・ストールマンが1984年1月5日に顕在的に行動を起こし、フリーソフトウェア運動やGNUなどの精神は、オープンソースという形で今ではいろんな恩恵を授けてくれています。
本チームのようなチープにデーターのポスト処理をはじめる場合、そうしたプログラムのひとつである ParaView は強い味方です。
もっとも、こうしたプログラムをわざわざ商用OS上で動かしているところは少々後ろめたいですが、それでも、ストールマン氏の恩恵に十分浴しています。
というわけで、このテーマでもまた、気まぐれにしか記事を書きませんが、ParaView です。
よい参考サイトがありましたのでリンクをおきます。
ゼロからはじめるParaViewーー[01]ParaViewで何ができるのか?
本サイトは、基本的には本研究室関連の情報交換用の情報を記事にしています。ただ、癖はあるものの、一般の方に少しお役に立つかもしれない、ということで公開されています。内容に齟齬があることがありますので、あらかじめご了承ください。
参考サイト案内
PENGUINITTSのParaView解説コーナー
一般社団法人 オープンCAE学会ほか日本国内可視化関連学会等の解説書など
OpenFOAM財団 リソース(日本語ユーザーガイド2.2.0)
ParaViewは、可視化ツール、と聞いて、きっとなんか曖昧に、あんなことや、そんなことが、マウスをすすすーっと動かすだけで、、、という妄想があって、調べ始めている人も多いことでしょう。
本記事では、そんな人への期待に応えられるよう、ちょっとだけ暇を見つけられたときに、できる範囲で、頑張ってみたいと思います。
まず、ParaViewは、何ができるのか。
そもそも可視化ツールとは何か。
その疑問に答えるには何を説明したら良いのか。
まずはそこからです。
手取り早いのは、fileメニューで開けられるfile形式を示す、というのは一つの合理的回答かもしれません。
まずは私たち初心者の置かれた現実を見てみましょう。
fileメニューの開く、を選択してください。見慣れたファイルオープンダイアログが開きます。現実を直視するとともに、ParaViewの汎用性を垣間見てみましょう。
# 見慣れた、とは書きましたが、実際は、画面左側にはフォルダー表示が上下に箇所あります。上側はウインドウズのシステム上のフォルダ構成、下側が仮想linuxファイルシステムのビューアーになっているようです。後者は、Windows上のファイルエクスプローラーではすぐにはアクセスできない場所です。
ウインドウ下方のファイルタイプの選択のセレクターリストを開いてみてください。
いかがですか。これがParaViewの対応力です。本研究室では無縁ですが、高価な市販解析ソフトの名称もいくつもみられたことでしょう。もっとも、普通は私たちが関連するのはこの中のほんの一つ、二つだけですが。。。
で、チープでプアーな本研究室での注目は、もちろん汎用性のあるオープンでフリーな環境についてです。
デフォルトの supported files の中には、.txt や .csv のように見慣れた拡張子もあります。選択肢の中にはOpenFOAM という項目も見られます。ちょっと光明が見えそうです。
さて、
データーファイル
vtm、vtmb、vthb、vth、vtp、vtt、vtu、vti、vtk、vts、vtr、pvtp、pvtu、pvtt、pvti、pvts、pvtr、pvtk、ply、stl
まず、本記事の対象者であらせられる、何ができるか、をあいまいに調べているゼロベースの立場の人であれば、この羅列を見た時点で問題山積、かもしれません。機械系で3Dプロッターを使っている人なら、STLファイルはなんとなく想像がつきます。それ以外は、チンプンカンプンでしょう。だって、機械工学系に直接関連するCAD系はSTLくらいですから。。。
“それ以外”は、3次元コンピューターグラフィクス、可視化、画像処理で使用される構造、非構造等々の主要なデーター形式、VTKの形式です。STLが形状データーだけなのに比べて、それ以外は、三次元座標に関連づけられた、何か意味のあるデーター、つまり、例えば、数値計算ツールで言えば分布する物理量などを格納するファイル形式、と、ざっくり理解しておけば良いでしょう。あるいは、Adobeなどの特定アプリケーションのグラフィックなファイルと思っておいてください。
例
vtm : Adobe ColdFusion Visual Tool Markup Language Crie File のどう略したらそうなるのかと突っ込みたくなる略称です
vtk : 1993年発祥で今世紀に入って台頭した三次元コンピューターグラフィクス業界のオープンソースソフトVisualization Toolkit のファイル形式 https://vtk.org//omu-content/uploads/2015/04/file-formats.pdf ティックルティーケーやパイソン、ジャバをサポートし、科学的可視化業界の標準。最新は Ver.8。
vtu :VTK 非構造時系列データ
vtp : VTK非構造ポリゴン用時系列データ
等々、以下、VTK File Format 解説書からの引用。
• ImageData(.vti)—SerialvtkImageData(structured).
• PolyData(.vtp)—SerialvtkPolyData(unstructured).
• RectilinearGrid(.vtr)—SerialvtkRectilinearGrid(structured).
• StructuredGrid(.vts)—SerialvtkStructuredGrid(structured).
• UnstructuredGrid(.vtu)—SerialvtkUnstructuredGrid(unstructured).
• PImageData(.pvti)—ParallelvtkImageData(structured).
• PPolyData(.pvtp)—ParallelvtkPolyData(unstructured).
• PRectilinearGrid(.pvtr)—ParallelvtkRectilinearGrid(structured).
• PStructuredGrid(.pvts)—ParallelvtkStructuredGrid(structured).
• PUnstructuredGrid(.pvtu)—ParallelvtkUnstructuredGrid(unstructured).
pvd : 時間ステップ※を記述したParaView Dataネイティブファイル
※この時間ステップを記述、というところですが、OpenFOAMの時間ステップ出力がフォルダ別にバラバラなところを見れば、ちょっと気になるところですね。でも、ツールがOpenFOAMで提供されています。
生真面目に考えれば、各形式のフォーマットが気になりますが、自分が使うものだけ気にかけておけば良いでしょう。そしてそれは。
いずれにせよ、非構造データーも簡単に可視化できるようになるので、実験屋にとっては大変いいツール、ということです。
さらに“それ以外”に、CSVファイルも読み込めます。というか、テキストデーターであれば、読み込んだ後にいろいろ指定もできます。バイナリも大丈夫です。読み込んだのちに、filterメニューからどのようにデーターを扱うか指定します。
ただ、あまりに多様性があるので、メニューから選択するだけでもちょっと手間です。もちろんフィルター名がわかれば絞り込めます。試しにFilter メニューのプルダウンメニュー一番下のアルファベット順の項目をポイントしてみてください。
フィルターの一例
table to points : データーを点座標に
warp to Scalar : データーを値でスライドさせて立体図に
ParaViewがコアに使用しているVTKは、超多量データーの可視化に利用されるため、科学界あるいは工学界の標準ツールとなりつつあるそうです。
つまり、以上のことから、コンバーターさえ組み込めば簡単にいろんな形式に対応できてしまうため、例えば各種地形データーや衛星等の気象その他センシング形式、などなど、様々な科学ツールの形式にも対応しています。
そう、ということは、実験データーであれ数値計算データーであれ、プログラミングするときの出力ファイルは自己流の出力ファイルではなく、下流処理で無駄な時間を食わないきちんと標準化されたデーターファイル形式にしておく、というのが現代流、というわけです。機械設計製図をすでに体得した本過程の学生さんなら、納得の行動ですね。
さて、ついでにプログラミングの情報もありましたが、今回はParaViewの入力ファイルのざっくりした紹介だけでしたが、これだけでもなんとなくParaViewが何かという妄想が、少し骨のある想像に変わったでしょうか。
そうであれば幸いです。
で、これですぐにOpenFOAMの結果をすぐに利用できるか、というと、実はファイルを開くのにあまりにオートなParaView と、ファイルを吐くのに非常にシンプルな 複数ファイルを吐くOpen FOAM との間では、効率よく作業を進めるにはちょっとした手順、拡張子にまつわる整理が必要です。それはOpenFOAM で提供されているparafoamというコマンドで提供され、実行するだけで済むんですが、その話はまた次の機会に、、、今回はこれまで。
[参考]
出力ファイルも概説します。
データーセットタイプ
データー型
出力ファイル形式
1.ここで登場した VTKには、5つのデーターセットのフォーマットがあります。それらは、以下の5つです。
構造点
構造格子
直線格子
非構造格子
ポリゴンデーター
構造型ファイルではその座標データーは、暗黙的に、x、y、zの順に大きくなることになっています。われわれが利用するのは、非構造型です。
• StructuredPoints
構造点タイプでは、1D、2D、および3D構造化ポイントデータセットをサポートしています。データーサイズ nx、ny、nzは1以上である必要があります。データ間隔sx、sy、szは0より大きい必要があります。サイズと間隔の二つのパラメーターで定義されます。実験屋には窮屈ですね。
DATASET STRUCTURED_POINTS DIMENSIONS nx ny nz
ORIGIN x y z
SPACING sx sy sz
• StructuredGrid
上と同様、1D、2D、および3D構造化グリッドデータセットをサポートしています。サイズ nx、ny、nzは1以上でなければなりません。ポイント座標は、POINTSセクションの各ポイントのx-y-zデータ値で構成されます。
DATASET STRUCTURED_GRID DIMENSIONS nx ny nz
POINTS n dataType
p0x p0y p0z
p1x p1y p1z
…
p(n-1)x p(n-1)y p(n-1)z
• RectilinearGrid
直線グリッドは、座標値を省いたデーターの羅列で表されたデーターです。通常のトポロジと、x-y-z座標軸に沿って配置された半正則ジオメトリを持つデータセットを定義します。ジオメトリは、単調に増加する座標値の3つのリスト(x-y-z座標軸ごとに1つのリスト)によって定義されます。トポロジーは、1以上のグリッド次元を行末で指定することで定義されます。形はシンプルですが、ズラーっと長いみにくい形式になるので、緊急時用、ですね。
DATASET RECTILINEAR_GRID DIMENSIONS nx ny nz X_COORDINATES nx dataType
x0 x1 … x(nx-1) Y_COORDINATES ny dataType
y0 y1 … y(ny-1) Z_COORDINATES nz dataType
z0 z1 … z(nz-1)
• PolygonalData
ポリゴンデータセットは、数値計算のモデルチェック用ですね。サーフェスグラフィックスプリミティブの頂点(およびポリ頂点)、ライン(およびポリライン)、ポリゴン(さまざまなタイプ)、および三角形のストリップの任意の組み合わせで構成されます。多角形データは、POINTS VERTICES、LINES、POLYGONS、またはTRIANGLE_STRIPSセクションによって定義されます。 POINTSの定義は、構造化グリッドデータセットと同じです。 VERTICES、LINES、POLYGONS、またはTRIANGLE_STRIPSキーワードは、ポリゴンデータセットトポロジを定義します。これらの各キーワードには、セル数nとセルリストサイズのサイズの2つのパラメーターが必要です。セルリストのサイズは、リストを表すために必要な整数値の合計数です(つまり、numPointsと各セルの接続性インデックスの合計)。キーワードVERTICES、LINES、POLYGONS、またはTRIANGLE_STRIPSはいずれも必須ではありません。
DATASET POLYDATA POINTS n dataType p0x p0y p0z
p1x p1y p1z
…
p(n-1)x p(n-1)y p(n-1)z
VERTICES n size
numPoints0, i0, j0, k0, … numPoints1, i1, j1, k1, …
…
numPointsn-1, in-1, jn-1, kn-1, …
LINES n size
numPoints0, i0, j0, k0, … numPoints1, i1, j1, k1, …
…
numPointsn-1, in-1, jn-1, kn-1, …
POLYGONS n size
numPoints0, i0, j0, k0, … numPoints1, i1, j1, k1, …
…
numPointsn-1, in-1, jn-1, kn-1, …
TRIANGLE_STRIPS n size numPoints0, i0, j0, k0, … numPoints1, i1, j1, k1, …
…
numPointsn-1, in-1, jn-1, kn-1, …
• UnstructuredGrid
このデーターセットタイプのポイントデーターが、実験屋には一番有効と思います。非構造化グリッドデータセットは、使用可能なセルタイプの任意の組み合わせで構成されます。非構造化グリッドは、ポイント、セル、およびセルタイプによって定義されます。 CELLSキーワードには、セルの数nとセルリストのサイズの2つのパラメーターが必要です。セルリストのサイズは、リストを表すために必要な整数値の合計数です(つまり、numPointsと各セルの接続性インデックスの合計)。 CELL_TYPESキーワードには、単一のパラメーター(セル数n)が必要です。この値は、CELLSキーワードで指定された値と一致する必要があります。セルタイプデータは、セルタイプを指定したセルごとの単一の整数値です。
DATASET UNSTRUCTURED_GRID POINTS n dataType
p0x p0y p0z
p1x p1y p1z
…
p(n-1)x p(n-1)y p(n-1)z
CELLS n size numPoints0, i, j, k, l, … numPoints1, i, j, k, l, … numPoints2, i, j, k, l, … …
numPointsn-1, i, j, k, l, …
Simple Legacy Formats 5
CELL_TYPES n type0
type1
type2
…
typen-1
• Field
フィールドデータは、トポロジおよび幾何学的構造を持たず、特定の次元を持たない一般的な形式です。通常、フィールドデータはデータセットのポイントまたはセルに関連付けられています。ただし、FIELDタイプがデータセットタイプとして指定されている場合(図1を参照)、一般的なVTKデータオブジェクトが定義されます。次のセクションで説明する形式を使用して、フィールドを定義します。
2.それぞれのデーターセット内で扱えるデーター形式(dataType )は、以下の7種類です。データーセットがポイントでもセルでも利用できます。
カラー(1〜4コンポーネント): つまり、モノカラーでもRGBAでもCMYKでも?
ベクトル: つまり、いろんな物理量、速度が扱える。
法線 : つまり、面データーで形状が表せる。
テクスチャ座標(1D、2D、および3D)、つまり、見かけのプロパティが扱える
3×3テンソル : つまり、いろんな応力群も扱える。
フィールドデータ : 位置情報を持った汎用形式。
スカラーデータに関連付けられたRGBAカラー仕様を使用したルックアップテーブル
以上のデーターを表現するためには、dataNameとよばれるインデックスキーワード(識別子)が利用できます。これを使えば、タイプが同じでも、複数の属性のデーターをごちゃ混ぜにファイルに格納できます。定義(VTKリーダーで指定)しないときは、デフォウルトで、最初のデーターセットだけが使用されることになります。
使いそうなスカラー、ベクトル、テンソル、を掲載しておきます。
• Scalars
スカラー定義では、ルックアップテーブルが利用可能です(任意:デフォルトVTKtableNameは「default 」にする)。numComp変数(1-4)はオプションでデフォルトでは、コンポーネント数は1です。
SCALARS dataName dataType numComp LOOKUP_TABLE tableName
s0
s1
…
sn-1
カラースカラー(つまり、色に直接マップされる符号なしchar値)の定義は、スカラーごとの値(nValue)の数によって異なります。ファイル形式がASCIIの場合、カラースカラーは(0,1)の間のnValues float値を使用して定義されます。ファイル形式がBINARYの場合、データのストリームはスカラー値ごとのnValues符号なしchar値で構成されます。
COLOR_SCALARS dataName nValues c00 c01 … c0(nValues-1)
c10 c11 … c1(nValues-1)
…
c(n-1)0 c(n-1)1 … c(n-1)(nValues-1)
• LookupTable
TableNameフィールドは、VTKリーダーが利用するルックアップテーブル識別のための文字列(埋め込み空白なし)です。ルックアップテーブルの各エントリは、rgba [4](赤-緑-青-アルファ)配列です(アルファは不透明度、アルファ= 0は透明)。ファイル形式がASCIIの場合、各値は(0,1)の間の浮動小数点値、BINARYの場合、データのストリームはテーブルエントリごとに4つの符号なしchar値である必要があります。
r0 g0 b0 a0
r1 g1 b1 a1
…
rsize-1 gsize-1 bsize-1 asize-1
• Vectors
ベクトルの場合は、簡単に以下の通り。
VECTORS dataName dataType v0x v0y v0z
v1x v1y v1z
…
v(n-1)x v(n-1)y v(n-1)z
• Tensors
テンソルは、3×3の実数要素対象テンソルだけがサポート。
TE10NSORS dataName dataType
t0_00 t0_01 t0_02 テンソルを3×3で羅列し、空行で区切る
t0_10 t0_11 t0_12
t0_20 t0_21 t0_22
t1_00 t1_01 t1_02
t1_10 t1_11 t1_12
t1_20 t1_21 t1_22
…
tn-1_00 tn-1_01 tn-1_02
tn-1_10 tn-1_11 tn-1_12
tn-1_20 tn-1_21 tn-1_22
3. 出力ファイル
オリジナルの設定ファイルと結果の保存ファイル形式
●スクリーンショット
スクリーンショットはビットマップ形式でのみ保存化
●3Dデーターの保存
3Dデーターは以下の形式にエクスポートできる。
POV Files *.pov
VRML Files image *.vrml
X3D Files image *.x3d
X3DB Files *.x3d
●アニメーション動画の保存
時系列情報を含んだ記録としての保存方法。AVI形式は(コンテナなんですが、、、)出力時にフレームレート等を指定できる。それ以外の各形式(jpg, tiff, png)では、通し番号の静止画の集合体として保存する。
●作業状態の保存
Stateファイルは作業状態保存ファイルとして使える。XML形式の専用ファイル(*.pvsm)のほか、Pythonで記述されたバッチファイル形式(*.py)でも出力可能である。ParaViewに読み込んだときにカラーバーが再現できない不具合があるので、出会ったら、そうか、これか、と受け入れてください。
●ソースの保存形式
各種データー形式から読み込み、変換したソースデーターを保存するソース用ファイル形式。
フォーマット 拡張子 備考
ParaView Data Files *.pvd ParaViewのオリジナル、ネイティブ形式。要素形状各種データー型および時系列データ情報を記録するこのXMLベースファイル形式でZLibでの圧縮も可能。
CSV File *.csv テキスト形式。桁数、要素・節点・フィールドのいずれを出力するか選択可能。
Exodus II File *.e *.ex2 *.ex2v2 *.exo *.exoII *.exoii *.g *.gen EXODUS II 形式。netCDFに基づく有限要素メッシュおよび結果ファイル形式。
VTK XML Files *.各種 VTK形式。ソースの種別に合わせたファイルフォーマット10種以上が選択可能。
Legacy VTK File *.vtk VTK旧形式。非推奨。アスキー、バイナリいずれで出力するか選択可能。
PLY Polygonal File Format *.ply ポリゴン形式。アスキー、バイナリいずれで出力するか選択可能。
Stereo Lithography File Format *.stl STL形式。アスキー、バイナリいずれで出力するか選択可能。
Xdmf Data File *.xmf XDMF(eXtensible Data Model and Format)形式。データやモデルの幾何形状を保存するデータ形式
投稿日時:2019年11月25日 12:58 PM
OpenFOAM の計算結果は、時間ステップごとに数字でフォルダに分かれて計算結果がはき出されます。
一方、前回の記事で、paraView は拡張子を利用してデーターを区別すると書きました。
この二つの隔たりを調整し、埋めて、さらに自動的にPaeaView を実行するコマンドが、 paraFOAM です。
このコマンドを、blueCFD terminal で実行すると、
$ paraFoam
Created temporary ‘sampleCAVITY.foam’
というメッセージの通りにケースフォルダ内に .foam というファイルが生成されて、このファイルを自動的に読み込んで ParaView が起動します。
投稿日時:2019年11月25日 8:17 PM
paraView は、操作をするごとにオブジェクト(あるいはソース)を生成します。オブジェクトを生成するので、そのオブジェクトを起点として新たな処理を行うことができます。これがパイプライン処理で、パイプラインブラウザの根拠と思われます。
したがって、いくつものフィルターを重ねていくほどに、複雑な結果を売ることも可能になり、しかもそれはオブジェクトとして記録されるので、そのデーターを使って paraView 内外で、新しい処理がどんどんできます。
それだけに、汎用化されたフィルターの扱いには、多分それなりのコツがあるようです。
投稿日時:2019年11月26日 8:22 PM
ParaView。今回は、二次元平面上に分布するスカラー値データーの表示です。
平面上にコンター表示させた後(Delaunay2D)、値を使って三次元表示グラフにします(WarpByScalar)。
メッシュの分割を内装補完して、ポリゴンらしさを押さえた表示にもしてみます(LoopSubdivision)。
ParaVIEWは、入力形式の対応などを見るだけで、かなり充実していると言うことがうかがえると思います。しかし、お手軽に使おう、というずぼら人にとっては、これは非常に敷居の高いことです。綱渡りのように使うこともできるでしょうが、切羽詰まって追い込まれた状況で、不具合が生じたときには、基本のParaVIEWの特性を知っておく必要があるように思います。
そこで、CSV形式で記録された簡単なデーターを作って、試しておこうかと思いますが、さてさて、どうなるのでしょうか。。。
※現時点での疑問問題点
ホントに二次元で座標は読めないのか?・・・読めそうですが未調査です。
いじくってたらコンターが消えた!・・・surfaceやcolor の設定では復活しないのか?
なんかメニューオプションの表示が不安定?・・・選択肢が反映されるタイミングがなんか微妙?
テキストファイル(ASCIIファイル)でデーターをはき出してしまうことはよくあることです。
その際の区切り文字にはいろいろ選択できますが、区切り文字を ” ‘ “(カンマ) にすれは、一応CSV形式として扱えます。日本語などの2バイト文字は ParaView では無難新国は避ける方がよいでしょう。
ParaView は、すでに前のトピックスでもあるように、基本的には大規模データーを扱うための可視化ツールです。したがって、入力するデーターが、従前のグラフrツールのような 2次元データー などというけちなことは考えていないようです。三次元空間中の空間ベクトルデーターの時間履歴データー、なんてお手ものなのです。
したがって、二次元平面上のスカラーデーター分布などというものは、端から相手にしていないようです。
そこで、2次元分布データーは、とりあえず第三軸を0とでもおいて、三次元空間座標にしておいてください。データー地租のものは、スカラーでもベクトルでも、フィルターは対応しているようです。
●入力ファイルの準備
まず、x, y, z の三次元空間座標を列挙して、その次にスカラー値を記述した CSV ファイルを作成します。
x, y, z, value
0, 0, 0, 4.2
1, 0, 0, 4.8
2, 0, 0, 5.6
のような感じのファイルです。今回は2次元平面上分布なので、 z はずべて 0 です。
●ファイルの読み込み
これを、 ParaView でcsvファイルとして読み込みます。
メニューバー、ファイルメニュー、開く、でファイルを指定して読み込みます。1行目に上記のように項目を記しているので、読み込み時のオプションで、「Have Header」にチェックを入れておきます。
これで、Applyボタンを押します。
うまくいくと、右ウインドウにファイルの中身にData Index がついて値が表示されます。
もしエラーが出ると、Pipeline Browser に赤いマークでエラーが表示されますが、詳細は不明です。ファイル操作で、カンマ区切りが認識されてなかったり、ヘッダーの状態が指定と異なっていたり、というあたりをチェックしてみてください。
●数値の物理量関連づけ
データーが読めたら、次はデーターの表示にかかわる数値と座標や物理量との関係の定義です。
TableToPoint フィルターを選択します。
フィルタープロパティズで、x Column, Y Column, Z Column に、データーを割り当てます。同じものが二つ重なったりするとエラーになるようです。だから二次元空間データーは使用できません。ヘッダーが指定されていると、ヘッダーがドロップダウンメニューから選択できるので、確認して空間座標を指定してください。
これで、Applyボタンを押します。
画面には、座標点の位置のみが三次元的に表示されるはずです。
もちろん今回は、平面上に表示されているはずです。
各座標を定義した「Propaties項目の下に、「Display」があります。ここから 「surface」を選択すれば、その下にさらにサブ項目が展開しますので、「Coloring」のプルダウンから、ヘッダー Value を選択します。
これで、Applyボタンを押します。
うまくいけば、カラーコンターの平面が表示されるはずです。
●立体表示
さらに「WarpByScalar」フィルターを選択します。
●パネル解像度の調整
ポリゴンの粗さも調整できます。細かくして表示を滑らかにするには、データー感を補完することになります。それが科学的に適性かどうかと言われれば、あんまりよいことではないので、適宜判断して使用する必要があります。
「Loop Subdivision」フィルターを適用して、オプションで細かさを調整します。
このフィルターは、コンターをワープ変換させる前に適用しないといけませんので、Table to PointフィルターとWarpByScalarフィルターの間に挿入する必要があります。
●出力の保存
結果のグラフを各種形式のファイルにエクスポートできます。Inkscapeで操作がしやすい svg 形式にも保存はできますが、gnuplot と少し似ているようで、座標軸等が操作(フィルター)ごとに上書きされているようです。座標軸の表題を操作してみると、下図のようにいくつもキャラクターが重なっています。文字をベクターに変換すれば、大きさも変更可能ですが、元の場所の背景には影が残ります。うーん。きっとオプションで対応は可能かも。背景は色指定はあるけど透明にできるのでしょうか・
投稿日時:2020年3月18日 6:53 PM
さて、混迷の ParaVIEW ですが、それはこのアプリケーションが壮大に成長してしまったからかも知れません。手っ取り早く使おうとする私のような低俗な人間には、ルート整理が必要です。つまり、ParaVIEW を使うシチュエーションが何で、それをどうしたいか、です。
★ 数値計算結果を簡単に表示させたい
★ 欲を言えば、それ以外のデーターをそれなりに図示させたい
これが目的です。
ParaVIEW を使用するのであれば、データーをうまく読み込んでやれば、二つの作業の後半は共通作業です。ここでは、とりあえず前項について整理しておきます。
で、流れの計算を行って何がしたいのか。
流れ場を知りたい。
物理量のコンターが書きたい
速度から流線が描きたい
ベクトルで速度場を描きたい
当然それらを計算領域に重ねて描きたい
まぁ、こんなところでしょうか。OpenFOAM なら、圧力、速度、にとどまらず、乱流に関するパラメーターや渦度などもデーターとして吐き出されますから、何を表示するかは、表示する物理量を選択するだけで切り替えできそうです。となれば、上記の各項目の異なった表示方法を調べておけば、オッケーです。
これは当たり前のようで、実は少し複雑です。何もしなければ、ParaVIEWは、モデル計算結果は領域なので、体積として扱っています。だから、せっかく頑張って他の物理量を表示させても、体積に埋もれて何も見えません。
単純に計算領域を表示する、と言っても、ヒトがするようにその外形を取捨選択する作業が必要です。これには素直に外形を表示する方法と、ひねくれて?、背景にある断面の形を表示する考えもあります。
計算領域を抜き出す
翼初心者向けに紹介されているのが、フィルターの Extract Surface です。表面の抽出。つまり、体積である計算領域の表面を抜き出してくれる訳です。本来はもっと高尚な別の目的があるようですが、確かに使えそうな響きです。簡単に言ってしまえば、シェル化してくれるわけですね。シェルになれば、適当な面で切り分ければ、中空の殻が作れます。
この図は、Extract Surface で体積様の計算領域をシェル化した後、後述の clip で背面近くで薄く切断しているところ、です。白い矢印軸に垂直な赤い平面が、クリップによる切断面です。この切断面から白矢印軸の方向に見た風景が表示されます。え!?向こう正面の壁面もいらないから縁だけでいい、って?うーん、なるほど、ごもっとも。その場合はクリップの応用です。クリップした後のシェルを、今度は反対方向(白矢印を逆)から枠の奥行きが薄くなるようにクリップしてはどうでしょう。
白い矢印が先のクリップと逆を向いているところが味噌です、肝です。なお、矢印向きの反転方法はわかっていませんので、地道に作業しました。
ちなみに、二度目のクリップは、最初のクリップに対してフィルターをかけないといけません。モデルツリー参照方。また、最終形でこの切り抜きになりますので、モデルに関する他のビューは不可視にしないといけません。念のため。意図的に活用できそうですね。
でも、この方法だと、斜投影っぽい図では、計算領域をワイヤーフレームでは表示できないんですよね。本当は、体積様のまま透明化してやる方がよいのかもしれません。っていうか、ここは clip より slice の方が適してるかも。(^◇^;)
断面を背景にする
賢明な学生さんなら、もうすでに前項を読んだだけで先を見通してしまったでしょう。最初に表示される体積領域を、clip で削り取ります。この例では、計算領域内のある線分を通る流線が表示されています。もし、体積領域をそのまま表示すれば、流線は領域に飲み込まれて見えなくなってしまします。したがって、領域を飲み込む部分を消し去ってやればよいわけです。流線が飲み込まれない程度に clip で体積要素を消してやりましょう。
計算領域のやや奥側で clip した面にコンターを表示した例。背景にしたければ、プロパティウインドウの物理量の選択の欄で solid color を選択すれば、単色になります。単色を背景色にすれば全く消えてしまって見えなくなるので、領域が確認できるような違う色で表示する方がよいでしょう。同時に表示した stream line は、その面から少し右側に浮いているのがわかります。ついでに、流涎は三次元精が出ているので、流速の遅い下流側(奥側)では、面外に曲線が伸びています。
透明化した場合
透明化は、プロパティの Display(GeometoryRepresentation) の styling にある Opacity の値を調整すれば透明化できます。
直方体フレームで表示
表示の選択肢に outline という直方体を表示する機能もあります。surface から outline に変更できます。ただし、形状表示とは少し違って、ザクっとした長方形しか表示しないみたいです、多分。ついでに wireframe もありますが、見た目は surface with edges とある意味大差ないです。もちろん、sueface がないですが。
素直にスライスする
結局、slice を利用するという手があるようです。slice は、clip とはちがって、面で立体を切り分けるんではなく、その面でサーフェイスのみを切り出します。だから、上述のような clip 二枚重ねのようなややこしい作業は不要です。スライスした面を透過させれば、スライス面の一を視覚化的作業には面の一を気にする必要はありません。カメラ位置のプロパティのデフォウルトの遠近表示をパラレルにチェックを入れれば、二次元流れには最適です。
面を選択する
コンター(等高線表示)は、計算領域の値をカラーバーで表示します。厚さを持って擬2次元の計算をさせた場合、理想的にはどの断面でも同じ流れになっているはずです。三次元流れを計算させた場合には、当然、断面によって流れが異なります。前者では、計算領域の外壁面が表示されていても問題は小さいですが、後者では、意図した断面を抽出してその名ガレ場を可視化しないといけません。そこで、 clip です。clipアイコンをクリックすると、白矢印軸とそれに垂直な赤い面が表示されます。赤い面を選択すると緑系の色に変わりますが、この状態でマウス操作すれば、白矢印軸に沿って平行移動させることができます。面の向きは、白矢印軸を三次元的にマウスで操作しないといけません。表示の方向をアイコンの座標系選択で、あるいは、プロパティウインドウにある、x, y, z 各軸垂直にセットするボタンを利用するとよいかもしれません。clip 向きを簡単に 180度反転させる方法は、前述のように未解明です。
左下の循環領域は、流線が集まって高速回転してそうです。でも、速度の大きさコンターでは、右半分の領域と同じくらい速度は小さいことがわかります。これは、循環域を何度も同じ流線が回っているからです。
ちまみに流線(トレース線)が正面からみると重なって見えているのは、二次元流れになっていなかったからです。機械工学的には、コンター面はまだしも、流線を投影図で表記するなんて馬鹿げています、ゲスです。あ、言い過ぎた(°°;) 三次元構造をきちんと図示するならば、機械系エンジニアであれば、機械設計図面と同様に、複数断面を提示すべきです。確立されている製図法を尊重すべきです。三次元ステレオホログラムならまだしも、所詮二次元の投影図で三次元流れの流線を示すのは、概略を示すのにはよいですが、正確な形状は伝わらないと思っておく方がよいと思います。
あぁ、なんかここまで来たら、いいよね。推して知るべし、ですよね。そうです。流線アイコンを押せばよいのです。問題は、なぜか思うような流線がデフォウルトでは描かれないことが多いことと、あの白矢印軸が登場することです。このモードでの白矢印はどういう働きをしているかさえがわかれば、思い通りに近い流線を描けるでしょう、領域的に。
始点を線分で指定する
お察しの通り、流線は、速度馬をトレースして描かれています。三次元空間内の流線を全部書くととってもややこしいことになってしまいます。そこで、高度な使い方はわかりませんが、とりあえずは、三次元空間中にある白矢印をよぎる流体について、指定さた resolution (Number of Points ?)にちなんだ本数で流線を描きます。
デフォウルトでは、白矢印は、計算領域を三次元的な対角線で結んでいるようです。なので、みたい部分に流体粒子が通らなければ、そこには流線がなくなってしまいます。また、白矢印から離れると、長さ制限 Maximum Streamline Length で途切れてしまいますが、長すぎると、対流域や渦では、何周も回ってしまって線が集中するので、まるで速度が大きいかのように見えてしまいます。こういうときは速度の大きさコンターと合わせて表示すればよいかもしれません。 また、流線の本数 Number of Points はデフォウルトでは二桁くらい多すぎる?ので、50 位から始めてみる方が見やすいと思います。
これは、左右の中心あたりで縦に一本、白矢印を引いて書かせた流線です。上部の欠けのある細い流路で、右側で速度指定吸い出し、左側で速度指定吹き込みを境界条件にしましたが、吹き込みの流路にはあまり流線がありませんし、左の循環領域らしき部分も流線がありません。それは、上述の理由によります。
結局これらの問題は、おそらく一本の矢印で解決するのはやや難しそうということです。したがって、流線の描画を、想定される領域ごとに複数に分けて描画させて、それらを重ねて表示するのは一つの解決方法かもしれません。一発で書き上げるのに手間がかかりそうなら、一度検討してみてください。
緯度経度球で指定する
3次元流れの流線を白矢印線で指定するのも良いですが、もう少しザクっと空間的に通過点を指定する方法があります。プロパティの seeds(タネ)の seed type を High Resolution line source から point source へ切り替えると、画面上に球様にアイコンが現れます。この球アイコンあたりを追加する流線が得られます。適当に、画面をグルグル立体的に回して確認しながら、配置してみてください。球の大きさが変えられるかは、まだ調べてません。
追伸 ctrl + 右クリックしてからドラッグでできます。回転はどうでしょう?^o^
三次元流れの流線(もどき)を表示した図。地球儀は一つですが、実際は四つ使っています。複数の流線を追加しても、カラーコンター等は共通一元設定になります。
さて、ベクトル図。2次元流れなら、要素は二つなので平面で表現できます。三次元流れならば、流線と同様、複雑になることはわかります。速度ベクトルをつなげた StreamTracer が速度の大きさの情報を持たない分、表現が難しいですが、大きさの情報のある速度ベクトルは、もう一つ面を設定すれば表現のやりようがあります。
二次元流れの場合
これは上述のように少しシンプルです。流線では、白矢印軸 を使用しましたが、ベクトル表示では glyph を利用します。
三次元流れの場合
3次元流れの場合、3D glyph が使用できます。
ParaVIEW の作業を保存する場合は、File メニューの Save State… を利用します。開けるときも、このメニューの Load State… を利用します。ここで ParaVIEW 専用の XML 形式 PVSM ファイルがやりとりされます。
でも、例えば エクスプローラーなどから関連付けでダブルクリックしてこの PVSMファイルを開かない方が無難のようです。ダブルクリックはデーターを開く機能に紐付いているので、PVSM に対応していません。老人に厳しいプルダウンメニューをいくら探しても PVSM形式はリストにありません。うっかり適当に ParaVIEW の何かとして開くと、データーも大きいようなので、固まって苦労します。
さて、ここまでの説明でおかしいところをまとめます。
まず、計算領域。これを体積用の領域、といってますが、 ParaVIEW でデフォウルトで描いた場合、大抵は surface になっています。そう、volume にはなっていないんです。しかも、volume に変更しようとすると、なんか脅されます。
これは surface で表示した領域に zoon in したところです。内部に入り込んだら、中空になっていることがわかります。でも、これをたぶん clip すると、切断面には surface が生成されるようです。だからやっぱり、exstract surface は必要なのかも。
最後に、ParaVIEW が強力なツールであることはいろんなところで紹介されていますが、私だけかもしれませんが、使いにくいのも確かではないでしょうか。その理由として、プロパティウインドウが使いにくいように思います。aply をする前と後でもプロパティの内容が変わっているような気もします。設定不能な項目を表示することで冗長になるのでそれを防ぐためどうかはわかりません。しかし、項目が消えて見失うのは、やはりちょっと混乱します。グレー表示であれば安心です。プロパティが縦に長くスクロールすることと相まって、わかりにくいと思います。
願わくば、プロパティの各カテゴリーをもっとタブにして操作性を向上してくれたらよいのに、と思います。しかしながら、aply するまでは対象を認識していないし、設定内容も違うのに、文句言うだけで、開発に貢献する能がないので、WEBの世界の片隅で、ちょっとぼやくくらいにしておきます。
[作成中]
投稿日時:2021年3月25日 7:30 PM
ある程度必要最低限の使用方法がわかってきたので、ちょっと切り口変えて整理していきます。
今回はこんな図(左側)を作ってみる、というテーマ。
流れ場によくある要素。
圧力場
速度場
流線場
渦度場
これらを重ねても雰囲気がわかるような図を考えて、作成してみます、、、雰囲気、ここがポイントかも。
導入
例えば論文などでは、厳密な数値の二次元分布を示したければ、きちんとした平面図に、物理量は各個、単独で、しかもグラデーションではなく、区分色、あるいは境界には明確な曲線を使ったコンターズが必要です。三次元空間であっても、それらの複数で構成された図が最適のように思います
しかし一方で、プレゼンテーションで、流しながら制限時間内で上方を強調して伝えるための図も、一方で有意義です。
最近はこれらが混在して、論文でもなんとなくの雰囲気も伝わらない図もよく見かけるような気がします。多分端からそういう意図で掲載されてるのだと思いますが、図の20%以上を占めるかと思われる矢印が混ざった速度ベクトル図などは、その迫力は圧巻です。
つかみはこのあたりにして、冒頭のようなグラフをParaVIEW で作成してみます。
趣旨(コンセプト)
各物理量を表す色を見分けられる
各物理量の代表値を基準にする
各物理量の変化については、基準値よりも大きいか小さいかを強調する
作戦(デザイン)
三つの物理量を、基準値と、それより大きい値、小さい値の三色で表す必要があるので、8~9色を選定する。
カラーバーで表示するが、基準は無彩色系、そこから外れた場合はオン、オフに近い表現とすることで強調する。
流線についても速度の大きさを同様の表現とするが、線上にあるため配色は重複を容認する(別に区別してもよい)。
実装(インプリメーション)
操作の前の初習者あるある。
Windows でマウス操作でプロパティを自在に移動するとき、トラッカーで上下に移動させるときは要注意。ポインターが選択メニュー等の上を通るときに、勝手にプルダウンメニューを開いた上に、選択項目を変更しながら、プロパティを移動していきます。日頃触らない項目の選択肢がわからなくなったり、設定値が変更されていたりと、災難に見舞われます。移動は極力サイドバーをクリックしてドラッグするか、サイドバーから外れないようにトラッカーを動かすのが肝要です。ポインターを超スラロームで選択枠かわしながら操作できれば別ですが。見慣れないものが突然現れたりしたら、それが原因です。
フィルターを使用するときに、何気なく追加すると、表示される、と期待したものが全く出ないとき。その場合は大抵は、モデルツリーの、前作業のフィルターに重ねて新たにフィルターをかけたときの可能性が大です。なれれば意識しますが、片手間に作業しているとうっかり入れ子にフィルターかけてしまうことも。久しぶりにやるとしばらく固まったり、連 Apply したり、恐怖におののいたりすることになります。新たに何か表示させるときは、意識してモデルツリーの大本を選択してから、フィルターアイコンなどをクリックすることです。よそ見厳禁。
読み込む。Apply。
二次元の流れ場の場合は、プロパティ下の方の、Camera Parallel Projection にチェックを入れとく。これで透視図法を解除。
ついでに背景色も黒にしとく?
StreamTracer アイコンで流線を書かせる準備をする。
Apply のまえに、Seed の座標 Line Parameter とResolution を 50 – 100 位に調整する。
ここで、円柱の場合のおすすめは、以下の図のような4本のラインです。
円柱中心やや後方を流れに直交する線ソース(Res.=80位)
円柱後半部中心から 0.8R 位の外側位置から、円柱後方 3D 中心軸から 0.4R 位の位置までの線ソース、対象に各1本ずつ2本(Res.=15位)。
円柱後方外部中心軸近傍に、円柱から 0.2R 位に流れと直交して長さ0.3D 位の線ソース(Res.=7位)
Apply
Apply するとカラーバーの設定が出来るようになります。
メニューバー下の物理値選択のボックスで、デフォウルトの P を U に変更。
さらに、要素を Magnetud に変更。
Edit Color Map アイコンで Color Map Editor を開く。プロパティで設定するのもいいですが、プロパティをうろつくのはリスクと時間がかかります。別ウインドウでさっとエディターを開きましょう。
カラーバーエディターのカラーバー表示右のアイコンの一番下、歯車アイコンをクリック。これで色の基準点の値とカラー値RGBを数値入力できます。カラーバーの任意の場所をクリックすると点が増え、点を選択して DEL キーを押せば削除できます。たまに削除できないときがあります。
両端のゲージの数字は、カラーバー表示右のアイコンの Rescal For Custom Range アイコンで調整します。
カラー設定点を5点作成して、青、青、白、赤、赤、のように設定します。城野展を、一様流速のような基準値にします。
白の両サイドの点を白に近づけることで、基準値から高低にずれた部分がはっきり赤、青に分かれます。
Apply。この設定は、追加していく流線のカラー参照を、速さUに変更することで、うなじカラーバーが適用されます。残りの流線を設定していきます。そして、Apply。
スライス slice アイコンをクリックします。
座標指定で 面に垂直な軸(例えば Z) の、Z Normal ボタンをクリック。そうすると、Z軸が白矢印、それに垂直な赤い面が出来ます。座標値で面の位置を計算領域内に固定します。Apply。
今度は物理量を P に変更。圧力はスカラーなので要素の選択肢はなし。Surface を確認しておきます。
11 の作業を行います。おすすめの色は、黄色と黄緑色です。圧力ゼロは黒です。
圧力がうまく設定できたら、最後は渦度です。
17 からの作業を、物理量を 渦度 にして行います。おすすめの色は、青と赤、です。これも渦度ゼロは黒です。
設定が終了したら、ファイルメニューの Save State を選択して、これまでの作業を保存しておきます。
以上で多分完成です。
スライスする場合に、面の前後位置を、小数点以下の数字で若干意識すると、透過性や、背景色などの見え方が変わるかもしれません。
Ambient という項目は、0 の方が色が引き締まる?
などなど。この操作をすればきっと何か先が見えてきた、かもしれません。
時刻5秒
時刻6秒
投稿日時:2021年4月13日 5:59 PM
フィルター plot on Intersection Curves
アニメーションなんて、俗っぽい。
なんて思った時期もありましたが、静止画を並べてみるよりも、令和の時代はカーソルをすすすーっと動かして見れる時代になったので、動画で変化を見るのはとても理解の効率がよいようです。
Save Animation
このメニューを選択して、一画像ずつ時間をかけて書き換えながら保存するParaVIEW の動作を見守るだけです。コマ範囲は、歯車アイコンで表示されるテキストボックスで指定できます。でも、間引けない?おし締めは、20~50コマ程度で一度うまくいくか試してみることです。
【トラブル】
上述のようにうまくいけば問題ないのですが、せっかく長時間にわたって出力させた AVI書式のファイル。ダブルクリックして再生しようとすると、圧縮形式がイレギュラーだ、みたいなエラーが出て再生が出来ません。
そもそも、情報基礎でも習っている動画形式のファイルに多分、AVI も含まれていたはずです。好奇心と向学心が旺盛な学生のみなさんなら、当然理解しているし、わからなくてもどういうものなのかはそのときに調べたことでしょう。
簡単に補足すれば、AVI は画像のコンテナですので、中に入れるものは何でもありです。でも、外から見ると、AVI です。AVI を作成したり受け取ったりするときは、コンテンツ形式を意識しないといけませんし、Windows上 で使うときは、マイクロソフトの流儀に注意しないといけないようです。
ブラフなどの図は、JPEG のような圧縮形式画像にすると、輪郭がぼけたりします。だから、インデックスカラーのPNGを使ったり、ベクター形式の SVG なんかもいいかもしれません。コンテナには何でも入りそうです。
でも、じゃぁそれを開くときはどうするのか。
自分でツールを作るのならよいですが、その辺の完成度の高いフリー、あるいはオープンソースソフトを使う場合に、とってもイレギュラーな AVI に対応できるかどうかは大変重要です。
世間では、 AVI には Jpeg を入れる。
どうもこれが無難なようです。
と言うわけで、何か設定でトラブルを起こしたのか、せっかくの AVI が開けないときは、上述のことを踏まえてください。
一プロしジャー
緊急避難、あるいは遠回りでも無難にいく一つの方法は、
ParaView では、Save Animation メニューから、Jpeg あるいは PNG 画像を吐き出させる。
それを、ImageJ で画像群としてインポートする。インポート時に画像を間引くことも出来ます。
取り込んだ画像群を、Jpeg 指定で AVI に保存する。
Windowsツールでも開けることが出来るでしょう。
という感じも、手法の一つです。
静止画の出力
Save Animation で静止画を選択すると、保存先フォルダの選択指定が求められて、ファイル名の設定も求められます。静止画は、このファイル名の後ろに連番が振られますが、連番の開始番号は設定できない?未調査です。もし指定できなければ、続きを書き出すときには不便です。
時刻表示
Sources > Annonated Times
時刻が表示されますアニメーションには時刻があった方が実時間のイメージができてよいですよね。表示位置はプロパティウインドウでいろいろ変更できます。
投稿日時:2021年4月20日 6:11 PM
アイコンの大きさが、どうもバージョンや使用環境によって異なるようです。
バーージョン 5.6 まで頃では小さくなりすぎて一部のディスプレイでは判別できないという苦情もあったようです。どうもバージョンごとに微妙にアイコンの大きさを変えて試行錯誤しているようです。バージョン 5.9 くらいでアイコンの大きさも設定できるようにしよう、という話もあったようですが、今のところそういう設定目乳が見つかりません。文字フォントは今まで通り設定メニューで変更できるようですけれど。
解像度のある大きいディスプレイで使用する、が解決方法なのかもしれません。
投稿日時:2021年5月13日 3:02 PM
物理量の凡例 (Properties – legend)
自動表示。位置は表示ウインドウ基準
時間表示
Sources – Annotate Time 位置は表示ウインドウ基準
スケール
Sources – Line 位置は物理座標基準。もっとほかによい方法があるか未調査
テキスト
Sources – Text 位置は表示ウインドウ基準
投稿日時:2021年5月25日 10:43 AM
OpenFOAM の方で間違って書いてしまったけど、書いた本人も混乱するので両方に若干変えて掲載。
時系列処理をする場合は、計算の出力は、欲張らず、身の丈で、ほどほどに間引いてギリギリ少なめに出力する方が良さそうです。
計算の調子を確認するのに必要な情報は、空間的な定点における物理量の観察です。
ParaVIEW では、以下のステップで作業するようです。
観測したい点を、選択
その位置におけるデーターを全時間から、収集。
スプレッドシートの保存。
ちなみに、グラフに表示できるのは、一点のみの各種物理データーのみのようです。複数点の時系列データーを、同時には作業、表示はできないようです。
選択
選択する方法はいくつか用意されています。
選択する対象は、ポイント、面、ブロック、の三種類があるようです。
ここではデーターを収集するので、ポイントを指定します。
読み込み
スプレッドシート
スプレッドシートには、利用できる項目が左上のボックスに、プルダウンメニューで表示されます。その中から、図示したいデーターを選択すれば、それが倉分反映される、ということです。
出力されたスプレッドシートには単純な物理量だけではなく、
物理量値、最小値、最大値、平均値、標準偏差、
などが含まれることもあります。それは選択したデーターセットに依存します。それも、スキルが上達すれば、アレンジできるようです。
この値が、スカラー量なら単体で、ベクトル量なら3成分と大きさ、というふうに、大変データー量がインフレーションしています。
それら物理量の後に、時刻、座標、、、のデーターが記されています(順番は対象による?)。
うっかり時間区切りの多いファイルをエクセルで開くと二進も三進も行きません(動かなくなるという意味)。
この例では、物体後方のあるx軸上の観測点における、圧力、速度(x, y)、速さ、渦度(z) の時間変化を示しています。グラフ的には 5秒あたりから、実際はもう少し早い時刻から、変動し始めた物理量が、15秒前後でいったん渦度の最大振れ幅をとって、その後やや減少して収束していく湯女様子が見られます。渦の放出が安定するまではまだ時間がかかりそうですが、放出渦の周期を得るにはほぼ大丈夫そうな時間の結果です。
これで視覚的に収束や非定常の状況を認知できるようになります。
ちなみに、この結果はデーター量が多すぎて、そのままではアニメーションに変換することはできませんでした。
投稿日時:2021年5月25日 11:22 AM