我正在使用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()
获得更好的绘图,则需要应用插值将数据转换为结构化网格。