python - 使用 python 脚本从 paraview 编写所有时间步骤的plotOverline csv数据

标签 python csv scripting export-to-csv paraview

我正在尝试使用 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_0file_5.csv,但是 file_1> 到 file_4 将“nan”作为数据而不是实际值。其中,file_0file_5 具有应有的值。我是新手,不知道哪里错了!在绘制下一行数据之前不确定时间步长是否已更新。任何帮助,将不胜感激!我猜应该有一种更简单的方法来更新时间步长,然后在同一位置使用相同的过滤器。

最佳答案

我没有尝试查看您的脚本会发生什么,但如果您不需要在时间步骤之间更改任何内容,您只需设置一次管道,然后添加 writer.WriteAllTimeSteps = 1 .作者将更新时间步长并保存结果(您不再需要 for 循环)。

无论如何,你确定数据没有问题吗?如果您将时间步长更新为 2,然后从 GUI 打开电子表格布局,那么预期数据是存在还是 nan?

关于python - 使用 python 脚本从 paraview 编写所有时间步骤的plotOverline csv数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29009875/

相关文章:

linux - 输出自动更新到屏幕和文件的文本

linux - While 语句有助于 bash 脚本编写

python - 谷歌云合成语音501方法未找到

python - 如果 Python 中的条件未提供正确的结果

excel - 从多个 CSV 文件构建 Excel 电子表格

mysql - 如何使用 laravel 将 Mysql(大)表导出为 CSV?

perl - 为什么我的 Perl 程序会警告未初始化的值?

Python:从 pandas 数据帧生成字典,以行作为键,以列作为值

python - 在 Python 中,我如何表明我正在覆盖一个方法?

csvfix 的 Python 替代方案