100个实用小工具8-deepCFD二维流场神经网络 - 详解
DeepCFD GUI 技术文档

1. 项目概述
DeepCFD GUI 是一个基于 PySide6 和 DeepCFD 的图形用户界面应用程序,专门用于计算流体力学(CFD)的深度学习仿真。该工具支持数据加载、模型训练和结果可视化等核心功能。
1.1 主要特性
- STL几何模型导入与处理
- CFD数据集生成
- 深度学习模型训练(支持FNO2d、UNet、ResNet等架构)
- 仿真结果可视化(几何信息、速度场、压力场等)
- 直观的图形用户界面
1.2 技术栈
- GUI框架: PySide6 (Qt for Python)
- 科学计算: NumPy, SciPy
- 机器学习: PyTorch
- 数据可视化: Matplotlib
- 3D几何处理: numpy-stl
- 数据序列化: Pickle
2. STL处理模块
STL处理模块负责将三维STL几何模型转换为DeepCFD可用的输入数据格式。
2.1 核心功能
STL文件加载
- 支持标准STL文件格式(ASCII和二进制)
- 解析网格顶点和面片信息
- 提供模型基本信息统计(顶点数、面数等)
3D模型可视化
- 三维模型渲染显示
- 支持保存可视化图像
2D SDF转换
将3D STL模型转换为二维符号距离函数(SDF):
- 选取模型XY平面的中间截面
- 计算截面轮廓的符号距离函数
- 支持规则几何体的解析方法(立方体、球体等)
- 提供通用方法处理任意几何形状
CFD数据集生成
基于几何信息生成完整的CFD训练数据集:
- 输入数据:几何信息(SDF格式)
- 输出数据:流场信息(速度场Ux、Uy和压力场)
- 支持生成多个样本以丰富训练数据
2.2 支持的几何体类型
- 立方体:使用解析方法生成精确的SDF
- 球体:通过投影生成圆形SDF
- 圆柱体:通过截面生成圆形SDF
- 翼型:简化模型的近似SDF
- 自定义几何体:通用处理方法
2.3 类接口说明
class STLProcessor:
def load_stl(self, stl_file_path):
"""加载STL文件"""
def visualize_stl(self, save_path=None):
"""可视化STL模型"""
def convert_to_2d_sdf(self, nx=128, ny=64, save_path=None):
"""将3D STL模型转换为2D符号距离函数"""
def generate_cfd_dataset(self, stl_file_path, output_dir="./cfd_data", num_samples=5):
"""生成完整的CFD数据集"""
3. 可视化模块
可视化模块提供对CFD仿真结果的图形化展示功能,包括几何信息、真实数据和预测数据的对比显示。
3.1 核心功能
数据可视化
- 几何信息显示(SDF格式)
- 流场数据可视化(速度场、压力场)
- 真实数据与预测数据对比显示
- 支持多种物理量切换显示
交互操作
- 样本切换(上一个/下一个样本)
- 物理量选择(水平速度、垂直速度、压力)
- 实时更新显示
多视图展示
- 三列布局同时显示几何信息、真实数据和预测数据
- 自动调整颜色映射以突出数据特征
- 添加颜色条便于数值解读
3.2 可视化组件
主要视图
- 几何信息视图:显示障碍物的符号距离函数(SDF)
- 真实数据视图:显示CFD求解器计算的真实流场数据
- 预测数据视图:显示深度学习模型预测的流场数据
控制元素
- 样本导航按钮(上一个/下一个)
- 物理量选择下拉框
- 颜色条和坐标轴
3.3 可视化类接口
主窗口集成可视化
在主窗口中内嵌的可视化组件:
def create_visualization_tab(self):
"""创建可视化标签页"""