在 Python、Paraview python api 中使用 paraview 过滤器

Using paraview filters in Python, Paraview python api

我一直在使用 Paraview 来可视化和分析 VTU 文件。我发现计算梯度过滤器非常有用。我想知道 Paraview 是否有 python API 可以用来使用这个过滤器。

我正在寻找这样的东西。

import paraview as pv

MyFile = "Myfile0001.vtu"

Divergence = pv.filters.GradientOfUnstructuredDataset.(Myfile)

ParaView 完全 scriptable in python。本文档的每个部分都有一个 'do it in python' 版本。

虽然 API 文档不一定存在,但您可以使用 Python Trace(在“工具”菜单中)记录来自 GUI 的操作并将其保存为 python 脚本。

编辑

要以数组形式取回数据,需要一些额外的步骤,因为 ParaView 在 client/server 模式下工作。您应该 Fetch 数据,然后您可以操作 vtkObject,提取数组并将其转换为 numpy。

类似

from paraview.simple import *
from vtk.numpy_interface import dataset_adapter as dsa

gridvtu = XMLUnstructuredGridReader(registrationName='grid', FileName=['grid.vtu'])
gradient = GradientOfUnstructuredDataSet(registrationName='Gradient', Input=gridvtu)
vtk_grid = servermanager.Fetch(gradient)
wraped_grid = dsa.WrapObject(vtk_grid)
divergence_array = wraped_grid.PointData["Divergence"]

请注意 divergence_array 是 numpy.ndarray

您也可以编写纯 vtk 代码,如 this example on SO