通过使用PyVista实现一个螺旋状三维流场。
代码如下
import numpy as np
import pyvista as pv
# 创建结构化网格数据集
x, y, z = np.meshgrid(np.linspace(-1, 1, 10), np.linspace(-1, 1, 10), np.linspace(-1, 1, 10))
vectors = np.zeros((x.size, 3))
vectors[:, 0] = np.sin(np.pi * x.ravel()) * np.cos(np.pi * y.ravel()) * np.cos(np.pi * z.ravel())
vectors[:, 1] = -np.cos(np.pi * x.ravel()) * np.sin(np.pi * y.ravel()) * np.cos(np.pi * z.ravel())
vectors[:, 2] = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * x.ravel()) * np.cos(np.pi * y.ravel()) * np.sin(np.pi * z.ravel()))
# 将矢量数据添加到结构化网格中
grid = pv.StructuredGrid(x, y, z)
grid["vectors"] = vectors
# 计算流线
streamlines = grid.streamlines("vectors", integration_direction="both")
# 可视化流线
p = pv.Plotter()
p.add_mesh(streamlines, scalars="vectors", show_scalar_bar=False, line_width=2)
p.show()
实现效果如下: