VTK Multi-block Datasetの自動分割

ParaViewのとっつきにくい点として、他のポスト処理ツールと違い、ソースを読み込んだ時点ではソルバ側で分割された領域を個別に表示できないことが挙げられる。実際にはExtract Blockフィルタを適用することで領域を分割することが可能であるが、「領域を個別に表示するためにフィルタを適用する」というParaViewの独特な考え方が、とっつきにくさを増しているようにも感じられる。以上の背景から、本スクリプトを作成した。

本スクリプトは、領域分割したいVTK Multi-block Dataset形式のソースを選択した状態で実行する。本スクリプトを適用すれば、ソースに含まれるすべてのブロックを自動的に分割し、EnSightやANSYS FLUENTなど
他のポスト処理ツールと同様に、領域情報を個別に扱うことが可能となる。また、生成された領域にはソルバで指定した領域名が付与される。

※ParaView 4.0以降ではMulti-block Inspectorが用意されたので、そちらの利用も検討されたい。

動作確認環境

ParaView 3.14.1 64bit、CentOS 6.2 64bit、Python 2.7.3

Script

extractBlocks.py

activesource = GetActiveSource()
activecomposite = activesource.GetDataInformation().GetCompositeDataInformation()
for i in range(0, activecomposite.GetNumberOfChildren()):
    SetActiveSource(activesource)
    block = ExtractBlock()
    block.BlockIndices = [i + 1]
    RenameSource(activecomposite.GetName(i))
    datarep = Show()
Render()
タグ: , , , , , , , ,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*