如何使用 paraview 的可编程过滤器进行比较?

How can I make a comparison using paraview's programmable filter?

我正在尝试使用 Paraview 的可编程过滤器进行简单比较。总之,这是必要的,因为我只需要在我的值高于 100.0 的点上查看我的问题的解决方案。应该很简单吧?我在这里错过了什么?

mydata = inputs[0].PointData['T']

print(mydata[0])
if(mydata[0] > 100.0):
    print("True")
else: 
    print("False")

我预计此输出为 "False",因为 mydata[0] = 7.282856964183867e-48,但实际输出为 "True"。我的输入文件 can be downloaded here.

您正在处理多块数据集。它不能像标准数据集那样被访问。查看讨论 here :

使用多块数据集输入实现可编程滤波器的正确方法如下:

mydata = inputs[0].PointData['T']

print(mydata.Arrays[0]|0])
if(mydata.Arrays[0]|0] > 100.0):
    print("True")
else: 
    print("False")

第一个索引是块索引,第二个是值索引。

另一个解决方案是在 reader 和可编程过滤器之间添加一个 MergeBlocks 过滤器。