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

我有一个legacy VTK files的序列,例如:file_0.vtk,file_1.vtk,file_2.vtk,我可以在ParaView中打开它作为文件_ .. vtk的时间序列(described here),并且可以查看和动画文件序列使用时间控件.我目前正在使用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对象的每个索引的时间步长值?

解决方法:

我调查了你的答案,发现没有直接的方法去做你的要求.

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

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

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中所述.

上一篇:十年两版,Velocity Engine 2.1 发布


下一篇:velocity的宏