Salva dati su VTK utilizzando Python e TVTK con più di un campo di vettore
Domanda
Sto cercando di salvare tre serie di quantità vettoriali corrispondenti alla stessa griglia strutturata (velocità, intensità della turbolenza e deviazione standard delle fluttuazioni della velocità).Idealmente, mi piacerebbe che facciano parte dello stesso file VTK ma finora ho solo in grado di prenderne uno di loro nel file come:
sg = tvtk.StructuredGrid(dimensions=x.shape, points=pts)
sg.point_data.vectors = U
sg.point_data.vectors.name = 'U'
write_data(sg, 'vtktestWake.vtk')
.
Ho trascorso alcune ore oltre una ricerca per un esempio di come aggiungere più di un campo di vettore o scalare ma fallito e quindi pensavo che avrei chiesto qui.Qualsiasi orientamento sarà più apprezzata.
Grazie,
Artur
Soluzione
Dopo alcuni scavando intorno ho trovato la seguente soluzione basata su e Questo esempio.Devi aggiungere il campo dati aggiuntivo utilizzando il metodo add_array
, vedere:
from tvtk.api import tvtk, write_data
import numpy as np
data = np.random.random((3,3,3))
data2 = np.random.random((3,3,3))
i = tvtk.ImageData(spacing=(1, 1, 1), origin=(0, 0, 0))
i.point_data.scalars = data.ravel()
i.point_data.scalars.name = 'scalars'
i.dimensions = data.shape
# add second point data field
i.point_data.add_array(data2.ravel())
i.point_data.get_array(1).name = 'field2'
i.point_data.update()
write_data(i, 'vtktest.vtk')
.