オープンCAE講習会@秋田 トレーニング講習資料 2017/1/28
中山 勝之 (オープンCAE勉強会@富山)
講習の概要
2
ParaViewの使用未経験者・初心者を対象として、
ParaViewの基本的な操作方法から、等値面図やベクトル図等の可
視化図の作成方法、Pythonスクリプトを利用した、可視化処理の自
動化についての講習を行います
講習の内容
3
2. マウス・キー操作のレコーディング機能(トレース機能)を用いた
操作の自動化手法(30分)
1. ParaViewの基本的な使用方法
操作、データ入力、面塗り、コンター、ベクトル図の作成(60分)
配布データについて
4
ディレクトリ名
説明
cavity
実習作業用データ(Cavity)
cavity_orig
実習用データ(Cavity)のオリジナル
誤作動からの復旧用
データ形式はVTK形式講習PC環境について
5
ParaView Version : 5.0.1
インストール方法
Windows版 以下のURLから入手可能 MacOS版http://www.paraview.org/download/
ParaViewの特徴
6
マルチブロック 入力可能なデータ形式が豊富 AMR 構造格子 非構造格子 データ構造 商用・非商用アプリケーションのデータ形式に対応ANSYS Dyna3D EnSight FLUENT LSDYNA VTK NASTRAN OpenFOAM Plot3D Tecplot データ操作・処理
面塗り コンター ベクター表示 データ抽出 バッチ処理
7
ParaViewの基本的な使用方法
8
2次元Cavity流れ
OpenFOAM Users-Guide 2.1節の内容(サーフェス表示)を可視化する
可視化対象について
ParaViewのインターフェース
9
Menu Bar Toolbar Pipeline Browser Advanced Toggle 3D View10
をクリック。または[File]-[open]をクリック Toolbarから可視化データ読み込み
cavity.vtkを選択しOKをクリック 左サイドウインドウ : Pipeline Browserにcavityが表示される11
Applyボタン(緑)を押す
12
Surfaceをクリックすると他の表示形式が選択できるので、 この中からSurface With Edgesを選択
13
操作:メッシュの確認
左側のウインドウからinformationタブをクリックすると計算データの情報 (セル数, 変数値の範囲など)が表示されます。
マウス操作
14
ドラッグ Shift + ドラッグ 2軸回転 平行移動 拡大・縮小 1軸回転 平行移動 ※ホイール操作は拡大・縮小 2軸回転 Ctrl + ドラッグ 拡大・縮小 2軸回転 拡大・縮小 メニューバー:[Edit]-[Settings]-[Cameras]タブでボタンの割り当てを変更可能カメラ操作
15
Toolbarのボタン群でカメラを操作できる モデル全体を 画面に合わせる Zoom to Data 選択範囲をズーム カメラを座標軸に沿わせる16
Coloringで◆ pを選択する Properties内のRepresentation を Surface にする ColoringでRescaleを押す Coloringでshowを押す (左サイドウインドウを下にスクロールすることで 見つけることができます)操作:圧力サーフェスの表示(1) 圧力表示に変換
-17
右サイドウインドウにColor Map Editorが表示されていることを確認する 無いならば
を選択する
①Choose presetを選択
②Blue to Red Rainbowを選択
③Applyを選択 ④closeを選択
-18
メニューバーから
を選択する
-19
画像ファイルの作成
① [File]—[Save Screenshot..] ② 画面サイズ等を指定してOKをクリック
③ ファイル名を指定してOKをクリック
20
アニメーションの作成
① [File]—[Save Animation..] ② フレームレート等を指定してOKをクリック
③ ファイル名を指定してOKをクリック
静止画連番データ(ex. animation.0000.png, animation.0001.png, ・・・)が作成 動画データはavi(Windows, MacOS版), ogv(Linux版)が作成可能
21
設定の保存と読み込み
可視化の設定を保存したり、読み込んだりするには、
メニュー バー[File] の [Save State] と [Load State] を使用する 拡張子はpvsm
22
1. メニューバーから[Edit]-[Reset Session]を選択しParaViewを初期化する
2. 可視化ファイルを開く
3. Applyボタン(緑)を押す
操作:ParaViewを初期化
23
① Pipeline Browser内でcavity.vtkが選択されていることを確認
操作:速度ベクトルの表示(1)
③ Properties内の設定を以下のようにする ② メニューバーからGlyphアイコンをクリック
24
操作:速度ベクトルの表示(2)
25
操作:圧力コンターの表示(1)
-スライス面の作成-① Pipeline Browser内でcavity.vtkが選択されていることを確認 ③ Properties内でZ NormalをクリックしApplyをクリック ② メニューバーからsliceアイコンをクリック 赤枠を消すには show planeのチェックを外す26
操作:圧力コンターの表示(2)
① Pipeline Browser内でSlice1を選択
③ Properties:[Contour By], [Coloring]で pを選択 ② メニューバーからcontourアイコンをクリック 3. Stepsは10に設定してOKをクリック ④ Isosurfacesで以下の順序で操作 1 2 ⑤ Applyをクリック ⑥ Pipeline Browser内でSlice1を表示する
27
操作:圧力コンターの表示(3)
28
紹介:データ抽出
29
紹介:スプレッドシート
① 3DviewのSplitボタンをクリック
30
マウス・キー操作のレコーディング機能(トレース機能)
を用いた操作の自動化手法
31
2-1 圧力サーフェス表示操作を
32
1. [Tools] – [Start Trace]を選択
2. GUIで操作を実行
3. [Tools] – [Stop Trace]を選択
スクリプトが生成され、スクリプトエディタに表示される
[File] - [Save]で保存
シェルの読み込み
1. [Tools] – [Python Shell]を選択
2. Run Scriptを選択しファイルを選択
トレース操作
※トレース実行時には Stop Traceに変更される
ParaViewのGUI上で行った操作をPythonスクリプトとして書き出す
33
1. メニューバー[Macros] – [Add New Macro..]を選択
2. ファイルを選択
マクロファイルは
/home/user/.config/ParaView/Macros/
に保存される
34
1. メニューバーから[Edit]-[Reset Session]を選択しParaViewを初期化する
2. 可視化ファイルを開く
3. Applyボタン(緑)を押す
操作:ParaViewを初期化
35
1. [Tools] → [Start Trace]を選択
3. 操作:圧力サーフェスの表示(1)ー(3) (スライド17-19)を実行
2. Trace Optionsはany *modified* properties
を選択し、他のチェックをONにしてOKをクリック
4. [Tools] → [Stop Trace]を選択しトレース終了
Properties To Trace On Createオプション all properties
• 可能な限りすべての情報を記述する
• 他のユーザー設定があっても一貫した状態を確保できるが、 非常に冗長な出力となり読みにくい
any *modified* properties
• デフォルト設定から変更されていない記述は無視される • ほとんどの利用で適したオプション
only *user-modified* properties
• ユーザーが変更した設定のみ記述される • トレースの動作は内部設定に依存する
Color maps, color bar etc. オプション
• チェックするとカラーバー、カラーマップ、注釈(anotation) の情報を記述する Miscellaneousオプション • チェックするとトレース記述時Script Editorに書き込まれる • チェックがない場合、Stop trace時にトレース内容が一括して 書き込まれる
操作:トレースの実行
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]を選択操作:マクロ実行
38
2-2 圧力サーフェス表示操作のトレース内容を確認する
39
#### import the simple module from the paraview
from paraview.simple import *
#### disable automatic camera reset on 'Show'
paraview.simple._DisableFirstRenderCameraReset() 1 2 3 4 5
Python コードでは、先頭にimportするライブラリを指定する
ParaViewの操作に必要なライブラリをインポート
p_contour.pyParaViewライブラリのインポート
40
p_contour.py# 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) 6 7 8 9 10 11 12 13 14 15
アクティブソース・ビュー・ディスプレイ設定の取得
renderView1をアクティブなウインドウに指定
renderView1.ViewSizeはコメントされている
サイズの数値はトレース時のウインドウにサイズに依存
GetActiveSource():アクティブなソースを取得する
caivtyvtkという名前で利用
GetDisplayProperties() :ディスプレイ設定を取得
caivtyvtkDisplayという名前で利用
41
p_contour.py# 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' 16 17 18 19 20 21 22 23
表示する変数の定義
42
p_contour.py# set scalar coloring
ColorBy(cavityvtkDisplay, ('POINTS', 'p'))
# rescale color and/or opacity maps used to include current data range
cavityvtkDisplay.RescaleTransferFunctionToDataRange(True) 28 29 30 31 32
変数pの設定(1)
POINTS(点データ)、
p(変数:圧力)に対してのカラー表示
データ内での最大・最小値でリスケールを行う43
p_contour.py# get color transfer function/color map for 'p'
pLUT = GetColorTransferFunction(‘p’) #pに対するルックアップテーブルを取得 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 37 38 39 40 41 42 43 44 45 カラーマップの対応 RGBPoints= [値1, R, G, B, 値2, R, G, B, ・・・・] ただし現時点のカラーマップはCool to Warm に対応しているので注意 言い換えると、トレース出力は、実際の描画に不要な 記述が含まれている
変数pの設定(2)
pLUTという名前で利用44
p_contour.py# 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)
# show color bar/color legend
aOpenFOAMDisplay.SetScalarBarVisibility(renderView1, True) 47 48 34 35
pLUT.ApplyPreset:プリセットカラーマップの設定
aOpenFOAMDisplay.SetScalarBarVisibility :
カラーバー表示設定 (True/False)カラーマップ・カラーバーの設定
45
p_contour.py#### 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(...).
50 51 52 53 54 55 56 57 58 59
以下の記述はStop trace実行時に記述される
Adjust Camera内のCamera Positionsの内容が記述されている
46
トレース機能を利用した
可視化操作の自動化手法についての紹介
• 圧力サーフェスの表示の自動化を行った
• マクロ登録機能の紹介
トレース機能が生成するpython スクリプトの解説
• ファイル操作と、記述されたスクリプトの対応関係についての
解説を行った
• トレース機能の出力するスクリプトは必要最小限な記述では
ないことに注意する
2章まとめ
47
48
不明な関数があった場合 - Python Shellから探す方法- (1)
メニューバーからTools → Python Shellを選択することでPython Shellが起動
49
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.
>>>
50
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 | ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・