利用Paraview內(nèi)置編程計(jì)算處理vtk文件

(對(duì)標(biāo)題毫不了解的可以無視)

Paraview是一款優(yōu)秀的立體模型可視化軟件。
https://www.paraview.org/download/
之前只用它看看圖,但用到里面的數(shù)據(jù),就需要自己動(dòng)手編程處理。今天發(fā)現(xiàn)其實(shí)Paraview是可以編程的?。ɑ鹦牵?/p>
先說基本操作:
導(dǎo)入數(shù)據(jù)

打開數(shù)據(jù)之后,數(shù)據(jù)會(huì)在這個(gè)欄里高亮顯示

2.點(diǎn)擊apPLY加載數(shù)據(jù),點(diǎn)數(shù)據(jù)左邊的小眼睛圖標(biāo)控制誰開誰關(guān),如果都開就會(huì)重疊。

3.切塊和切片

選中一個(gè)vtk文件,點(diǎn)工具欄的Clip,然后出現(xiàn)下圖所示:

切平面的方向和位置可以在這里設(shè)置,也可以直接在圖上拖動(dòng)。

設(shè)置完成后,點(diǎn)擊已經(jīng)亮起的綠色APPLY按鈕,完成切塊。這樣就能看到剖面表面的數(shù)據(jù)信息。

切片的操作完全一樣,只是只切一個(gè)二維平面

4.編程計(jì)算。
Paraview支持很多Filter用于處理原數(shù)據(jù)

其中有幾個(gè)可以很簡(jiǎn)單有效地幫助我們處理數(shù)據(jù)。
PythonCalculator:
首先選中一個(gè)vtk文件,點(diǎn)Filter里的search

搜python,選python calculator

然后你選中的vtk文件會(huì)出現(xiàn)一個(gè)下掛的文件

我們?nèi)绾卫眠@個(gè)編程呢?
我們看被選中的vtk文件,點(diǎn)"Information"按鈕,會(huì)看到模型參數(shù)。其中Data array中的velocity_E_it010000就是vtk儲(chǔ)存的數(shù)據(jù),就相當(dāng)于python里的變量,可以直接用于計(jì)算。


記住變量名后,回到剛才生成的PythonCalculator1,看下面的欄

在Expression里可以輸入python代碼,我這里輸入的是pow(velocity_E_it010000,2),意思就是數(shù)據(jù)做一個(gè)平方。Array_Name就是你生成的新數(shù)據(jù)的名字。然后apPLY。
接著改下面的Coloring參數(shù),改成你新數(shù)據(jù)的變量名。這樣圖上的顏色才是你新數(shù)據(jù)的顏色。

效果圖:

好了,這就是計(jì)算某個(gè)文件里的數(shù)據(jù)的方法了。
那么,我們?nèi)绻卸鄠€(gè)vtk文件,想同時(shí)用它們的數(shù)據(jù)做計(jì)算,該怎么辦呢?
首先我先用上面的操作對(duì)E,N,Z三個(gè)文件都做同樣的操作和命名,生成三個(gè)新子文件,我想把它們加起來求和。

這個(gè)時(shí)候是不能直接加起來的,因?yàn)槊總€(gè)文件的數(shù)據(jù)之后自己的子文件才能訪問,所以我們?cè)趺醋瞿兀?/p>
同時(shí)選中三個(gè)文件(按著ctrl點(diǎn)鼠標(biāo)),點(diǎn)Filters的Search

搜索append,選擇append Attributes,然后點(diǎn)擊綠色的apPLY鍵

這時(shí)候發(fā)現(xiàn)生成了一個(gè)三者共同的子文件AppendAttributes1

再看這個(gè)文件的information鍵的內(nèi)容

發(fā)現(xiàn)這個(gè)共同子文件同時(shí)包含了三個(gè)文件的數(shù)據(jù)。這個(gè)時(shí)候我們可以在這個(gè)文件中用剛才的PythonCalculator計(jì)算了!

對(duì)AppendAttributes1做一個(gè)Python Calculator,點(diǎn)綠色的ApPLY。

然后在Expression中把上面算出來的三個(gè)變量加起來,起一個(gè)Array Name,然后點(diǎn)apPLY

之后在下面的Coloring中選擇計(jì)算出的變量的顏色,sum_velocity,然后apPLY

這樣就得到了我們想要的,三個(gè)vtk文件數(shù)據(jù)的平方和的vtk文件。

只是拋磚引玉,這就是跨文件提取參數(shù)計(jì)算的方法。至于局部怎么算我不太會(huì)了。
P.S.我是看了這篇文章才基本確定了Paraview可以內(nèi)置編程

但是這位博主鴿了后面的計(jì)算部分。。。我表示當(dāng)場(chǎng)去世。

于是經(jīng)過一天的對(duì)Paraview的格式的研究,終于探索出了多個(gè)vtk→appendAttributes→PythonCalculates的可行道路。(也使我處理vtk的腳本顯得很蠢