我正在尝试使用 Paraview 中的 PlotOverLine 过滤器
从一行中提取所有时间步的数据(作为 csv
)。在 GUI 中,我加载泡沫文件,使用 PlotOverLine 过滤器
并将电子表格 View 保存为 csv 文件,然后单击动画面板中的下一步按钮加载下一个时间步,然后重复上述操作线源同一位置处的剩余时间步长。(由于其 transient 数据,我需要固定位置处所有时间步长的数据。)我使用了以下脚本。
try: paraview.simple
except: from paraview.simple import *
paraview.simple._DisableFirstRenderCameraReset()
my_foam = FindSource("case.foam") #loading my case file
SetActiveSource(my_foam)
tsteps = my_foam.TimestepValues # trying to read all time step directories
for TimeStepNum in range(0,len(tsteps)): # the loop?
view = GetActiveView()
view.ViewTime = tsteps[TimeStepNum]
Render()
PlotOverLine1 = PlotOverLine( Source="High Resolution Line Source" )
DataRepresentation7 = Show()
PlotOverLine1.Source.Point1 = [-0.052, 0.0, 0.0] #my fixed location
PlotOverLine1.Source.Point2 = [0.0, 0.0, 0.0]
source = PlotOverLine1
writer = CreateWriter("file_%d.csv" %(TimeStepNum), source)
writer.FieldAssociation = "Points"
writer.UpdatePipeline()
Render()
del writer
假设我有 5 个时间步长,则脚本在 Paraview 上作为宏运行时会生成 file_0 到 file_5.csv,但是 file_1> 到 file_4 将“nan”作为数据而不是实际值。其中,file_0 和 file_5 具有应有的值。我是新手,不知道哪里错了!在绘制下一行数据之前不确定时间步长是否已更新。任何帮助,将不胜感激!我猜应该有一种更简单的方法来更新时间步长,然后在同一位置使用相同的过滤器。
最佳答案
我没有尝试查看您的脚本会发生什么,但如果您不需要在时间步骤之间更改任何内容,您只需设置一次管道,然后添加 writer.WriteAllTimeSteps = 1
.作者将更新时间步长并保存结果(您不再需要 for 循环)。
无论如何,你确定数据没有问题吗?如果您将时间步长更新为 2,然后从 GUI 打开电子表格布局,那么预期数据是存在还是 nan?
关于python - 使用 python 脚本从 paraview 编写所有时间步骤的plotOverline csv数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29009875/