如何在ParaView中为一系列传统VTK文件设置自定义时间步长值?

时间:2015-11-18 04:02:53

标签: python time-series vtk paraview

我有一个legacy VTK files序列,例如:file_0.vtkfile_1.vtkfile_2.vtk,我可以在ParaView中打开它作为时间序列(described here )作为file_..vtk,可以使用时间控件查看和动画文件序列。我目前正在使用ParaView 4.4.0。

传统的VTK文件如下所示,其中时间步长值存储在标题中(第二行):

# vtk DataFile Version 3.0
vtk output: file at time       0.0    
ASCII
...

然而,在ParaView中,时间步长值假设与索引相同,即索引0是时间0.0,索引1是时间1.0,索引2是时间2.0。添加AnnotateTime过滤器还会显示时间步长索引的这些时间步长。

但是,我的文件使用可变的时间步长,如每个文件的标题中所述。 (我不认为传统的VTK格式有办法指定这些值)。我查看了ParaView的应用程序,看看有没有办法导入或修改这些值,但我找不到它。

使用内置的Python Shell,这是我用LegacyVTKReader创建对象的可悲尝试:

files = ['file_0.vtk', 'file_1.vtk', 'file_2.vtk']
times = [0.0, 0.022608, 0.73781]
# First attempt
r = LegacyVTKReader(FileNames=files, TimestepValues=times)
print(r.TimestepValues)  # [0.0, 1.0, 2.0]

# Second attempt to try and fix it
r.TimestepValues = times
print(r.TimestepValues)  # [0.0, 0.022608, 0.73781]

Show(r)

在对象“信息”对话框中正确显示,直到我添加AnnotateTimeFilter,它重置0到0,1到1和2到2。

是否使用点击式或Python 来更新ParaView中传统VTK对象的每个索引的时间步长值?

1 个答案:

答案 0 :(得分:5)

我调查了你的答案,没有找到直接的方法来做你所要求的。

但是,这是间接解决方案(取自the paraview mailing list):

<强> 1。将您的vtk文件转换为xml paraview文件(例如VTU或VTM文件):使用paraview打开您的vtk文件,并使用File&gt;编写新文件。保存数据。您需要检查&#34;将所有时间步长写为文件系列&#34;。

<强> 2。创建一个ParaView数据文件(.pvd)。 在此文件中,您可以指定每个文件的时间步长值。这是一个例子:

    <VTKFile type="Collection" version="0.1" byte_order="LittleEndian">
        <Collection>
            <DataSet timestep="0"         file='file_0.vtu'/>
            <DataSet timestep="0.022608"  file='file_1.vtu'/>
            <DataSet timestep="0.73781"   file='file_2.vtu'/>
        </Collection>
    </VTKFile>

第3。在paraview中加载.pvd文件。您现在可以使用具有良好时间步长值的Annotate Time过滤器。

第1步是必需的,因为上述解决方案无法使用.vtk文件,如the paraview wiki中所述。