SuperAPI AI 工具集

pyvista-visualization

数据与分析

查看项目

更新于 10-16 02:41

技能介绍

用途

本技能用于对计算流体力学(CFD)结果进行三维交互式可视化,典型对象包括速度场、压力等值线/等值面、流线以及泵体几何。底层使用 PyVista——一个构建在 VTK 之上的高层 3D 可视化库。

安装与配置

基础安装命令:

pip install pyvista numpy

可选的增强功能依赖:

# 用于网格处理和额外特性
pip install meshio vtk

# 用于 Jupyter notebook 支持
pip install trame jupyter-server-proxy ipywidgets

基础导入模式:

import pyvista as pv
import numpy as np

# 设置绘图主题
pv.set_plot_theme('document')  # 或 'default', 'dark', 'paraview'

# 启用离屏渲染(用于无显示环境的脚本)
# pv.OFF_SCREEN = True

主要能力

三维网格可视化

支持 CFD 常用的多种网格类型:结构化网格(带曲线坐标的规则网格)、非结构化网格(任意单元类型,如四面体、六面体等)、PolyData(表面网格与点云)、均匀网格(规则笛卡尔网格,即体素)。示例中演示了创建 StructuredGrid 并可视化。

标量场可视化

可显示压力、温度、湍流强度等标量量,例如向网格添加压力场后,通过 add_mesh 配合 contour 绘制等值面,并设置颜色映射与标量条。

矢量场可视化(Glyphs)

使用箭头等字形可视化速度矢量,示例中通过 grid.glyph(orient='velocity', scale='velocity', factor=0.1) 创建箭头并着色。

流线

通过速度场追踪流线,示例中使用 grid.streamlines(vectors='velocity', source_center=..., source_radius=..., n_points=..., max_time=...),并用 streamlines.tube(radius=0.005) 生成管状流线。

体渲染

用透明度显示三维标量场(如密度或温度),使用 plotter.add_volume(grid, scalars='pressure', cmap='coolwarm', opacity='sigmoid')。

切片与裁剪

从三维域中提取二维切片或裁剪区域,例如 grid.slice_orthogonal(x=0.5, y=0.5, z=0.25) 与 grid.clip(normal='x', value=0.5)。

CFD 应用示例

正文给出多个完整示例,包括:速度场可视化(构造含旋流的管流速度场,用切片加流线展示)、压力等值线(构造障碍物周围压力分布并绘制等值面)、湍流可视化(构造湍动能 TKE 并做体渲染)、泵体几何显示(用圆柱与平面组合创建简化叶轮并配合光照渲染),以及综合可视化(轮廓、切片、流线、高压等值面组合并设置相机)。

交互特性

  • 相机控制:可通过 plotter.camera_position 设置相机位置、焦点与上方向,也支持 'xy'、'xz'、'yz'、'iso' 等预设视图。
  • 多视口:使用 pv.Plotter(shape=(1, 2)) 创建并排对比,并通过 link_views() 同步相机。
  • 动画:可生成环绕路径 generate_orbital_path 并 orbit_on_path,也可输出 GIF 或 MP4。

导出与保存

  • 保存静态图像:plotter.screenshot('cfd_pressure.png', ...),可指定分辨率。
  • 导出网格:grid.save('cfd_results.vtk'),也支持 .vtu、.vtp 等格式。
  • 导出到 ParaView:PyVista 网格与 VTK 兼容,可直接在 ParaView 中打开做进一步后处理。

最佳实践

  • 选择合适的颜色映射:速度用 'jet'、'viridis'、'plasma';压力/温度用 'coolwarm'、'RdBu_r';湍流用 'hot'、'inferno'。
  • 使用一致的标度:设置 clim(颜色范围)以便在多工况间对比。
  • 添加上下文:包含几何轮廓、坐标轴和比例条。
  • 大数据集优化:抽稀(mesh.decimate(0.5))、启用 LOD(enable_eye_dome_lighting())。
  • 有效标注:添加标题、带单位的标量条标签。
  • 注意光照:添加自定义光源以增强三维感知。
  • 谨慎使用透明:将不透明表面与透明体渲染结合。

限制与说明

资料未提供本技能的收费、价格、平台限制或性能上限等信息,暂未提供。使用时需注意各依赖安装命令与代码示例均按原文保留,实际运行效果取决于本机环境与数据。