Bagaimana cara menetapkan nilai langkah waktu khusus untuk serangkaian file VTK lama di ParaView?

Saya memiliki rangkaian file VTK lama, misalnya: file_0.vtk, file_1.vtk, file_2.vtk, yang dapat saya buka di ParaView sebagai rangkaian waktu (dijelaskan di sini ) sebagai file_..vtk, dan urutan file dapat dilihat dan dianimasikan menggunakan kontrol waktu. Saat ini saya menggunakan ParaView 4.4.0.

File VTK lama terlihat seperti ini, di mana nilai timestep disimpan di header (baris kedua):

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

Namun, di ParaView nilai timestep diasumsikan sama dengan indeks, yaitu indeks 0 adalah waktu 0,0, indeks 1 adalah waktu 1,0, dan indeks 2 adalah waktu 2,0. Dan menambahkan filter AnnotateTime juga menunjukkan langkah waktu ini untuk indeks langkah waktu.

Namun, file saya menggunakan langkah waktu variabel, seperti yang dijelaskan di header setiap file. (Saya rasa format VTK lama tidak memiliki cara untuk menentukan nilai-nilai ini). Saya telah melihat-lihat aplikasi ParaView untuk melihat apakah ada cara untuk mengimpor atau mengubah nilai-nilai ini, tetapi saya tidak dapat menemukannya.

Menggunakan Python Shell bawaan, inilah upaya menyedihkan saya untuk membuat objek dengan VTKReader Lama:

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)

Yang menampilkan dialog "Informasi" objek dengan benar, hingga saya menambahkan AnnotateTimeFilter, yang menyetel ulang 0 ke 0, 1 ke 1, dan 2 ke 2.

Apakah ada cara, menggunakan point-click atau Python, untuk memperbarui nilai timestep untuk setiap indeks objek VTK lama di ParaView?


person Mike T    schedule 18.11.2015    source sumber


Jawaban (1)


Saya menyelidiki jawaban Anda dan tidak menemukan cara langsung untuk melakukan apa yang Anda minta.

Namun, berikut adalah solusi tidak langsung (diambil dari milis paraview):

1. konversikan file vtk Anda ke file paraview xml (misalnya file VTU atau VTM): buka file vtk Anda dengan paraview, dan tulis file baru dengan File > Simpan Data. Anda perlu mencentang "tulis semua langkah waktu sebagai seri file".

2. buat File Data ParaView (.pvd). Dalam file ini Anda dapat menentukan nilai timestep untuk setiap file. Berikut ini contohnya:

    <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. muat file .pvd di paraview. Anda sekarang dapat menggunakan filter Waktu Anotasi dengan nilai langkah waktu yang baik.

Langkah 1 diperlukan karena solusi di atas tidak berfungsi dengan file .vtk, seperti yang dijelaskan di paraview wiki.

person Bertrand Gazanion    schedule 06.12.2015