У меня есть файл pvtu со связанными файлами vtu, из которого я хочу отобразить некоторые данные. Если я загружаю pvtu в Paraview (5.6+), я получаю следующее изображение, когда выбираю Сплошной цвет (белый) и Поверхность с краями:
Сетка явно анизотропная вблизи верхней границы спочти сплющенные треугольники;это ожидаемое поведение.
Если я сейчас загружу ту же pvtu в Python и выведу сетку следующим образом,
import numpy
import matplotlib.pyplot as plt
import vtk
gridreader = vtk.vtkXMLPUnstructuredGridReader()
gridreader.SetFileName('whatever.pvtu')
gridreader.Update()
vtkOut = gridreader.GetOutput()
vtkData = vtkOut.GetPoints().GetData()
coords = numpy.array([vtkData.GetTuple3(x)
for x in range(vtkData.GetNumberOfTuples())])
plt.triplot(coords[:, 0], coords[:, 1])
plt.gcf().set_size_inches(16, 8)
plt.gca().set_aspect('equal')
plt.savefig('meshPython1.png', bbox_inches='tight')
plt.gca().set_xlim((5e5, 3e6))
plt.gca().set_ylim((6e5, 1e6))
plt.savefig('meshPython2.png', bbox_inches='tight')
Я получу это:
, где вы можете легко увидеть, что анизотропия отсутствует. Поэтому мой наивный вопрос: как мне воспроизвести сетку, отображаемую в Paraview с Python? Однако, возможно, есть более точный вопрос. Я полностью осознаю, что библиотека триангуляции matplotlib принимает треугольники в качестве аргумента, но я не могу найти команду, чтобы извлечь их из pvtu. Так что, возможно, лучший вопрос - как получить треугольники из файла pvtu?
Любая помощь приветствуется.