Enregistrez les données sur VTK en utilisant Python et tvtk avec plusieurs champs vectoriels

StackOverflow https://stackoverflow.com//questions/20035620

  •  21-12-2019
  •  | 
  •  

Question

J'essaie de sauvegarder trois ensembles de quantités vectorielles correspondant à la même grille structurée (vitesse, intensité de turbulence et écart type des fluctuations de vitesse).Idéalement, j'aimerais qu'ils fassent partie du même fichier vtk, mais jusqu'à présent, je n'ai pu en insérer qu'un seul dans le fichier comme ceci :

sg = tvtk.StructuredGrid(dimensions=x.shape, points=pts)
sg.point_data.vectors = U
sg.point_data.vectors.name = 'U'
write_data(sg, 'vtktestWake.vtk')

J'ai passé quelques heures à chercher un exemple sur la façon d'ajouter plus d'un champ vectoriel ou scalaire, mais j'ai échoué et j'ai donc pensé demander ici.Tout conseil sera très apprécié.

Merci,

Arthur

Était-ce utile?

La solution

Après quelques recherches, j'ai trouvé la solution suivante basée sur ce et ce exemple.Vous devez ajouter le champ de données supplémentaire à l'aide du add_array méthode voir :

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')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top