2017年2月5日 星期日

paraview python macro

paraview 是一套強大的、可用於呈現 VTK 系列檔案[1]的工具,同時也是由 Kitware 公司維護的 open source software。

通常操作 paraview 的流程是:啟動 GUI、讀入檔案[2]、選擇要呈現的屬性[3]、操作 camera 來檢視圖形、播放隨時間流逝的動畫(需要讀入數個檔案,見[2])。

在 CFD 開發與實驗的過程中,如果每次產生的資料與數據,都要手動調整 GUI (例如上述的步驟)來檢查每次的結果,是非常沒有效率的事情。paraview 有提供接口,讓使用者可以透過 python 來操作 paraview 引擎;因此使用者可以撰寫 python macro 來簡化每次的操作。

安裝


Ubuntu 可以透過安裝 paraview-python 套件來取得 python 支援。

使用


參考 paraview wiki,或是 paraview 本身的 document 都很不錯。

tips - 好用的 trace


paraview 本身有提供「記錄使用者操作的流程,然後直接輸出成 python macro 」的超級好用功能。這樣使用者可以很直觀地操作之後(例如轉動物體到自己看得順眼的角度),直接取得 python script (欸欸欸這樣認真 K 上面 document 或是 wiki 的人情何以堪 XD)。

使用上就從 GUI 選擇 Tools 列表中的 Start Trace 選項,然後開始操作 paraview GUI[4]。操作完畢後選擇 Stop Trace ,並且存檔取得 python script。這樣就大功告成了。非常方便的功能!

理解 paraview python script


paraview 的運作邏輯大致上如下:


  • 資料 IO 、讀入檔案(注意支援一次讀多個檔案),用 reader 物件代表讀入結果。
  • Show:產生即將要呈現的資料的圖形屬性管理者 display
  • Render:渲染、呈現 display。包括動畫的部份。
  • Camera:決定使用者的視角(所以旋轉圖形什麼的由這裡操作)

由 paraview.simple module 提供操作層。(注意不是 module paraview;module paraview 應該是引擎本身)


資料讀入


  • OpenDataFile (泛用的方法,會自己判定是哪種 grid 幾何)
  • XMLUnstructuredGridReader、xxxxReader (直接指定 reader,注意可以透過 Filename keyword 來傳入檔案 list)



[1] 一種檔案格式,有多種延伸格式(例如 vtu)。常用於呈現 3D 幾何圖形,廣泛在地球科學與計算流體力學中被採用。特色之一是支援平行化運算。
[2] paraview 支援一次讀入檔名連續的不同檔案,常用於顯示不同時間的圖形幾何。
[3] 通常是用來呈現物理意義上的屬性。由檔案寫入者決定任何的 attribute 名稱。例如可以是壓力或者溫度。
[4] 你可能會遇到需要 python-pygments 套件的問題;Ubuntu 上透過 apt 安裝該套件可以解決這個問題。