Pregunta

Estoy intentando guardar tres conjuntos de cantidades vectoriales correspondientes a la misma cuadrícula estructurada (velocidad, intensidad de turbulencia y desviación estándar de las fluctuaciones de velocidad).Idealmente, me gustaría que fueran parte del mismo archivo vtk, pero hasta ahora solo he podido incluir uno de ellos en el archivo, así:

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

Pasé las últimas horas buscando un ejemplo de cómo agregar más de un campo vectorial o escalar, pero fallé y pensé en preguntar aquí.Cualquier orientación será muy apreciada.

Gracias,

arturo

¿Fue útil?

Solución

Después de investigar un poco, encontré la siguiente solución basada en este y este ejemplo.Tienes que agregar el campo de datos adicionales usando el add_array método ver:

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')
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top