オープン CAE 講習会 @ 秋田トレーニング講習資料 2017/1/28 ParaView 講習 中山勝之 ( オープン CAE 勉強会 @ 富山 )
2 講習の概要 ParaView の使用未経験者 初心者を対象として ParaView の基本的な操作方法から 等値面図やベクトル図等の可視化図の作成方法 Python スクリプトを利用した 可視化処理の自動化についての講習を行います
3 講習の内容 1. ParaView の基本的な使用方法操作 データ入力 面塗り コンター ベクトル図の作成 (60 分 ) 2. マウス キー操作のレコーディング機能 ( トレース機能 ) を用いた操作の自動化手法 (30 分 )
配布データについて データ形式は VTK 形式 cavity ディレクトリ名 cavity_orig 説明 実習作業用データ (Cavity) 実習用データ (Cavity) のオリジナル誤作動からの復旧用 4
講習 PC 環境について ParaView Version : 5.0.1 インストール方法 以下の URL から入手可能 http://www.paraview.org/download/ Windows 版 MacOS 版 5
ParaView の特徴 入力可能なデータ形式が豊富データ構造構造格子非構造格子マルチブロック AMR 商用 非商用アプリケーションのデータ形式に対応 ANSYS Dyna3D EnSight FLUENT LSDYNA VTK NASTRAN OpenFOAM Plot3D Tecplot データ操作 処理面塗りコンターベクター表示データ抽出バッチ処理 オープンソース 無料で使用可能 6
7 ParaView の基本的な使用方法 ファイル入力から可視化画像作成まで
可視化対象について 2 次元 Cavity 流れ OpenFOAM Users-Guide 2.1 節の内容 ( サーフェス表示 ) を可視化する http://cfd.direct/openfoam/user-guide/cavity/ 8
9 ParaView のインターフェース Menu Bar Toolbar Pipeline Browser 3D View Advanced Toggle
可視化データ読み込み Toolbar から をクリック または [File]-[open] をクリック cavity.vtk を選択し OK をクリック 左サイドウインドウ : Pipeline Browser に cavity が表示される 10
11 操作 : モデルの表示 Apply ボタン ( 緑 ) を押す
12 操作 : メッシュの確認 Surface をクリックすると他の表示形式が選択できるので この中から Surface With Edges を選択
13 操作 : メッシュの確認 左側のウインドウから information タブをクリックすると計算データの情報 ( セル数, 変数値の範囲など ) が表示されます
14 マウス操作 ドラッグ Shift + ドラッグ Ctrl + ドラッグ 2 軸回転平行移動拡大 縮小 1 軸回転 2 軸回転平行移動 拡大 縮小 2 軸回転拡大 縮小 ホイール操作は拡大 縮小 メニューバー :[Edit]-[Settings]-[Cameras] タブでボタンの割り当てを変更可能
15 カメラ操作 Toolbar のボタン群でカメラを操作できる モデル全体を画面に合わせる 選択範囲をズーム カメラを座標軸に沿わせる Zoom to Data
16 操作 : 圧力サーフェスの表示 (1)- 圧力表示に変換 - Properties 内の Representation を Surface にする Coloring で p を選択する Coloring で show を押す ( 左サイドウインドウを下にスクロールすることで見つけることができます ) Coloring で Rescale を押す
操作 : 圧力サーフェスの表示 (2)- カラーマップ変更 - 右サイドウインドウに Color Map Editor が表示されていることを確認する無いならば を選択する 3Apply を選択 1Choose preset を選択 2Blue to Red Rainbow を選択 4close を選択 17
18 操作 : 圧力サーフェスの表示 (3)- カラーバー表示 - メニューバーから を選択する
画像ファイルの作成 画像ファイル (jpg, tiff, png, bmp,ppm) を作成可能 1 [File] [Save Screenshot..] 2 画面サイズ等を指定して OK をクリック 3 ファイル名を指定して OK をクリック 19
アニメーションの作成 静止画連番データ (ex. animation.0000.png, animation.0001.png, ) が作成 動画データは avi(windows, MacOS 版 ), ogv(linux 版 ) が作成可能 1 [File] [Save Animation..] 2 フレームレート等を指定して OK をクリック 3 ファイル名を指定して OK をクリック 20
21 設定の保存と読み込み 可視化の設定を保存したり 読み込んだりするには メニューバー [File] の [Save State] と [Load State] を使用する拡張子は pvsm
22 操作 :ParaView を初期化 1. メニューバーから [Edit]-[Reset Session] を選択し ParaView を初期化する 2. 可視化ファイルを開く 3. Apply ボタン ( 緑 ) を押す
23 操作 : 速度ベクトルの表示 (1) 1 Pipeline Browser 内で cavity.vtk が選択されていることを確認 2 メニューバーから Glyph アイコンをクリック 3 Properties 内の設定を以下のようにする
操作 : 速度ベクトルの表示 (2) 24
25 操作 : 圧力コンターの表示 (1) - スライス面の作成 - 1 Pipeline Browser 内で cavity.vtk が選択されていることを確認 2 メニューバーから slice アイコンをクリック 3 Properties 内で Z Normal をクリックし Apply をクリック 赤枠を消すには show plane のチェックを外す
操作 : 圧力コンターの表示 (2) 1 Pipeline Browser 内で Slice1 を選択 2 メニューバーから contour アイコンをクリック 3 Properties:[Contour By], [Coloring] で p を選択 4 Isosurfaces で以下の順序で操作 3. Steps は 10 に設定して OK をクリック 2 1 5 Apply をクリック 6 Pipeline Browser 内で Slice1 を表示する 26
操作 : 圧力コンターの表示 (3) 27
紹介 : データ抽出 28
29 紹介 : スプレッドシート 1 3Dview の Split ボタンをクリック 2 SpreadSheet View ボタンをクリック
マウス キー操作のレコーディング機能 ( トレース機能 ) を用いた操作の自動化手法 30
2-1 圧力サーフェス表示操作をトレース機能を用いてマクロ登録する 31
ParaView の GUI 上で行った操作を Python スクリプトとして書き出す トレース操作 1. [Tools] [Start Trace] を選択 2. GUIで操作を実行 3. [Tools] [Stop Trace] を選択スクリプトが生成され スクリプトエディタに表示される [File] - [Save] で保存 シェルの読み込み 1. [Tools] [Python Shell] を選択 2. Run Script を選択しファイルを選択 トレース実行時には Stop Trace に変更される 32
33 Python スクリプトをマクロ登録 1. メニューバー [Macros] [Add New Macro..] を選択 2. ファイルを選択 マクロファイルは /home/user/.config/paraview/macros/ に保存される
34 操作 :ParaView を初期化 1. メニューバーから [Edit]-[Reset Session] を選択し ParaView を初期化する 2. 可視化ファイルを開く 3. Apply ボタン ( 緑 ) を押す
操作 : トレースの実行 1. [Tools] [Start Trace] を選択 2. Trace Options は any *modified* properties を選択し 他のチェックを ON にして OK をクリック Properties To Trace On Create オプション all properties 可能な限りすべての情報を記述する 他のユーザー設定があっても一貫した状態を確保できるが 非常に冗長な出力となり読みにくい any *modified* properties デフォルト設定から変更されていない記述は無視される ほとんどの利用で適したオプション only *user-modified* properties ユーザーが変更した設定のみ記述される トレースの動作は内部設定に依存する Color maps, color bar etc. オプション チェックするとカラーバー カラーマップ 注釈 (anotation) の情報を記述する 3. 操作 : 圧力サーフェスの表示 (1) ー (3) ( スライド 17-19) を実行 4. [Tools] [Stop Trace] を選択しトレース終了 Miscellaneous オプション チェックするとトレース記述時 Script Editor に書き込まれる チェックがない場合 Stop trace 時にトレース内容が一括して書き込まれる 35
36 操作 : スクリプトの保存とマクロ登録 5. Script Editor が表示されるので [File] - [save as] で保存 ファイル名は p_contour.py で保存する 6. マクロ登録はメニューバーから [Macros] - [Add new macro] を選択し p_contour.py を選択することで登録される
37 操作 : マクロ実行 1. メニューバーから [Edit]-[Reset Session] を選択し ParaView を初期化する 2. VTK ファイルを開く 3. Apply ボタン ( 緑 ) を押す 4. メニューバーから [Macros]-[p_countour] を選択
2-2 圧力サーフェス表示操作のトレース内容を確認する 38
39 ParaView ライブラリのインポート p_contour.py 1 2 3 4 5 #### import the simple module from the paraview from paraview.simple import * #### disable automatic camera reset on 'Show' paraview.simple._disablefirstrendercamerareset() Python コードでは 先頭に import するライブラリを指定する ParaView の操作に必要なライブラリをインポート
アクティブソース ビュー ディスプレイ設定の取得 p_contour.py 6 7 8 9 10 11 12 13 14 15 # get active source. caivtyvtk = GetActiveSource() # get active view renderview1 = GetActiveViewOrCreate('RenderView') # uncomment following to set a specific view size # renderview1.viewsize = [1071, 674] # get display properties caivtyvtkdisplay = Show(cavityvtk, renderview1) GetActiveSource(): アクティブなソースを取得する caivtyvtk という名前で利用 renderview1 をアクティブなウインドウに指定 renderview1.viewsize はコメントされているサイズの数値はトレース時のウインドウにサイズに依存 GetDisplayProperties() : ディスプレイ設定を取得 caivtyvtkdisplay という名前で利用 40
41 表示する変数の定義 p_contour.py 16 17 18 19 20 21 22 23 # trace defaults for the display properties. cavityvtkdisplay.colorarrayname = [None, ''] cavityvtkdisplay.glyphtype = 'Arrow' cavityvtkdisplay.scalaropacityunitdistance = 0.01924175606617764 cavityvtkdisplay.setscalearray = ['POINTS', 'p'] cavityvtkdisplay.scaletransferfunction = 'PiecewiseFunction' cavityvtkdisplay.opacityarray = ['POINTS', 'p'] cavityvtkdisplay.opacitytransferfunction = 'PiecewiseFunction'
42 変数 p の設定 (1) p_contour.py 28 29 30 31 32 # set scalar coloring ColorBy(cavityvtkDisplay, ('POINTS', 'p')) # rescale color and/or opacity maps used to include current data range cavityvtkdisplay.rescaletransferfunctiontodatarange(true) POINTS( 点データ ) p( 変数 : 圧力 ) に対してのカラー表示 データ内での最大 最小値でリスケールを行う
変数 p の設定 (2) p_contour.py 37 38 39 40 41 42 43 44 45 # get color transfer function/color map for 'p' plut = GetColorTransferFunction( p ) #pに対するルックアップテーブルを取得 plutという名前で利用 plut.rgbpoints = [-4.366660118103027, 0.231373, 0.298039, 0.752941, 0.24093985557556152, 0.865003, 0.865003, 0.865003, 4.84853982925415, 0.705882, 0.0156863, 0.14902] plut.scalarrangeinitialized = 1.0 # get opacity transfer function/opacity map for 'p' ppwf = GetOpacityTransferFunction('p') ppwf.points = [-4.366660118103027, 0.0, 0.5, 0.0, 4.84853982925415, 1.0, 0.5, 0.0] ppwf.scalarrangeinitialized = 1 カラーマップの対応 RGBPoints= [ 値 1, R, G, B, 値 2, R, G, B, ] ただし現時点のカラーマップは Cool to Warm に対応しているので注意 言い換えると トレース出力は 実際の描画に不要な記述が含まれている 43
44 カラーマップ カラーバーの設定 p_contour.py 47 48 # Apply a preset using its name. Note this may not work as expected when presets have duplicate names. plut.applypreset('blue to Red Rainbow', True) 34 35 # show color bar/color legend aopenfoamdisplay.setscalarbarvisibility(renderview1, True) plut.applypreset: プリセットカラーマップの設定 aopenfoamdisplay.setscalarbarvisibility : カラーバー表示設定 (True/False)
45 カメラ位置の設定 その他 p_contour.py 50 51 52 53 54 55 56 57 58 59 以下の記述は Stop trace 実行時に記述される #### saving camera placements for all active views # current camera placement for renderview1 renderview1.cameraposition = [0.05000000074505806, 0.05000000074505806, 0.27888724573938806] renderview1.camerafocalpoint = [0.05000000074505806, 0.05000000074505806, 0.004999999888241291] renderview1.cameraparallelscale = 0.07088723543695315 #### uncomment the following to render all views # RenderAllViews() # alternatively, if you want to write images, you can use SaveScreenshot(...). Adjust Camera 内の Camera Positions の内容が記述されている
46 2 章まとめ トレース機能を利用した可視化操作の自動化手法についての紹介 圧力サーフェスの表示の自動化を行った マクロ登録機能の紹介 トレース機能が生成する python スクリプトの解説 ファイル操作と 記述されたスクリプトの対応関係についての解説を行った トレース機能の出力するスクリプトは必要最小限な記述ではないことに注意する
F A Q etc... 47
48 不明な関数があった場合 - Python Shell から探す方法 - (1) メニューバーから Tools Python Shell を選択することで Python Shell が起動 help( 関数名 ) で Enter を押すことで内容を確認することができる
49 不明な関数があった場合 - Python Shell から探す方法 - (2) help( 関数名 ): 簡易な記述で表示される Python 2.7.12 (default, Jul 1 2016, 15:12:24) [GCC 5.4.0 20160609] on linux2 >>> from paraview.simple import * >>> help(getactivesource) Help on function GetActiveSource in module paraview.simple: GetActiveSource().. _GetActiveSource: Returns the active source. >>>
不明な関数があった場合 - Python Shell から探す方法 - (3) help( 関数名 ()): 詳細な記述が表示される Python 2.7.12 (default, Jul 1 2016, 15:12:24) [GCC 5.4.0 20160609] on linux2 >>> from paraview.simple import * >>> help(getactivesource()) Help on PVFoamReader in module paraview.servermanager object: class PVFoamReader(SourceProxy) Proxy for a server side object. A proxy manages the lifetime of one or more server manager objects. It also provides an interface to set and get the properties of the server side objects. These properties are presented as Python properties. For example, you can set a property Foo using the following:: proxy.foo = (1,2) or 50
51 不明な関数があった場合 - web から探す方法 - http://www.paraview.org/paraview3/doc/nightly/www/py-doc/index.html
52 参考資料 ParaView Guide ParaView Tutorials 以下の URL から入手可能 http://www.paraview.org/documentation/