如何在python中可视化vtu文件



我正在使用meshio软件包从vtu文件中提取信息,该文件表示在一个时间步长内雷诺数为220的情况下流经圆柱体(Von Karman涡流(的二维版本。我能够提取一个称为数据的变量中的x和y坐标,如下所示:

In[7]: data    
Out[7]: 
array([[0.02692238, 0.40000474],
[0.02049045, 0.41      ],
[0.03102019, 0.41      ],
...,
[0.27846185, 0.15545069],
[0.04423019, 0.05609254],
[0.04601913, 0.06239963]])
In [9]: np.shape(data)
Out[9]: (12568, 2)

此外,我能够提取任何字段变量,例如压力,如下所示:

In [8]: Pressure
Out[8]: 
array([ 0.04950621,  0.05545308,  0.04723278, ..., -0.05356851,
0.07954962,  0.08006932])
In [10]: np.shape(Pressure)
Out[10]: (12568,)

模拟具有triangle 6元素,即在顶点处具有3个规则节点和在每条边的中间具有3个额外节点的二次元素。这是节点连接的结构。

In [14]: cells['triangle6']
Out[14]: 
array([[    0,     1,     2,  3528,  3527,  3531],
[    3,     4,     5,  3525,  3239,  3238],
[    4,     6,     5,  3408,  3237,  3239],
...,
[ 1737,   484,   343,  7316,  4145,  4148],
[ 3204,  3199,  3202, 12296, 12294, 12566],
[ 3200,  3199,  3204, 12295, 12296, 12567]], dtype=int64)
In [15]: np.shape(cells['triangle6'])
Out[15]: (6142, 6)

如何使用这些信息绘制模拟?

一年后我将回答自己的问题。因此,如果重点只是可视化Python中的vtu文件。PyVista是您需要的东西。在这里,他们有一个关于如何可视化vtu文件的优秀系列教程。

还可以使用matplotlib.pyplot.scatter()以因变量作为色图强度来快速绘制散射。

例如,如果要在二维域中绘制"压力"。

import matplotlib.pyplot as plt
sc = plt.scatter(x,y, c = pressure)
plt.colormap(sc)

如果您想使用plt.imshow()获得更好的绘图,则需要应用插值将数据转换为结构化网格。

最新更新