У меня есть файл vtk, и мне нужно извлечь из него трехмерный вектор скорости. Я никогда не использовал его, поэтому я не знаю, что он содержит и как извлечь из него информацию.
При переполнении стека я нашел этот вопрос Сохранить массив данных из VTK в Python , что помогло, и я смог извлечь свои данные.
Это скрипт, который я использовал:
import vtk as v
import numpy as np
Filename = 'filename.vtk'
reader = v.vtkUnstructuredGridReader()
reader.SetFileName(Filename)
reader.ReadAllScalarsOn()
reader.ReadAllVectorsOn()
pa = v.vtkPassArrays()
pa.SetInputConnection(reader.GetOutputPort())
pa.AddArray(0, 'velocity_magnitude' )
print(pa)
writer = v.vtkDataSetWriter()
writer.SetFileName('test.vtk')
writer.SetInputConnection(pa.GetOutputPort())
writer.Update()
writer.Write()
И это файл, с которым я закончил:
# vtk DataFile Version 4.2
vtk output
ASCII
DATASET UNSTRUCTURED_GRID
FIELD FieldData 6
Nek_SpectralElementData 1 4 int
8 8 8 512
avtOriginalBounds 1 6 double
0 6.283185482 -1 1 0 3.141592741
VolumeDependent 1 1 bit
0
MeshName 1 1 string
mesh
CYCLE 1 1 int
1000
TIME 1 1 double
20
POINTS 262144 float
0 -1 1.5708 0.0503675 -1 1.5708 0.160339 -1 1.5708
0.310507 -1 1.5708 0.474891 -1 1.5708 0.625059 -1 1.5708
0.735031 -1 1.5708 0.785398 -1 1.5708 0 -0.997435 1.5708
0.0503675 -0.997435 1.5708 0.160339 -0.997435 1.5708 0.310507 -0.997435 1.5708
.
.
.
CELLS 175616 1580544
8 0 1 9 8 64 65 73 72
8 64 65 73 72 128 129 137 136
8 128 129 137 136 192 193 201 200
8 192 193 201 200 256 257 265 264
8 256 257 265 264 320 321 329 328
.
.
.
CELL_TYPES 175616
12
12
12
12
.
.
.
POINT_DATA 262144
VECTORS velocity float
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0.0113612 1.21843e-05 0.000552347
0.0115553 1.12597e-05 0.000419801 0.0121388 6.55409e-06 -0.000110149 0.0128729 -5.02466e-06 -0.000602613
Итак, проведя некоторое исследование, я понял, что в первой части у меня есть координаты точек, но почему их 9 в строке? Тогда я понял, что точки соединены шестигранными ячейками, их 175616, каждая с 8 точками, а затем у нас есть положения их углов, но я не знаю, как они написаны. В последней части у меня наконец есть свой вектор скорости, но опять же, почему 9 компонентов в строке? А как расставлены точки? К какой точке относится скорость первой линии? А для второго или третьего?
Если вы знаете какое-нибудь руководство, где я могу прочитать, как понять этот файл, вы очень поможете.
Большое спасибо!