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数据可视化: Matplotlib3D几何处理: 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):
"""创建可视化标签页"""
def update_sample_visualization(self):
"""更新样本可视化"""
def show_previous_sample(self):
"""显示上一个样本"""
def show_next_sample(self):
"""显示下一个样本"""
独立可视化窗口
独立的可视化窗口类:
class VisualizationWidget(QWidget):
def __init__(self, model_path=None, dataX=None, dataY=None):
"""初始化可视化窗口"""
def update_visualization(self):
"""更新可视化显示"""
def show_previous(self):
"""显示上一个样本"""
def show_next(self):
"""显示下一个样本"""
def predict_field(self, input_data, field_index):
"""使用模型预测指定字段"""
3.4 可视化技术细节
中文支持
自动检测并配置中文字体支持多种常用中文字体(SimHei、Microsoft YaHei等)处理中文负号显示问题
图像优化
固定DPI设置确保清晰度使用适当的颜色映射突出数据特征添加轮廓线标识几何边界动态调整颜色条范围
性能优化
增量更新机制避免重复创建图形对象保持axes属性一致性防止图像变形固定布局参数提高渲染效率
4. 数据处理模块
数据处理模块负责CFD仿真数据的生成、加载和管理,为模型训练和可视化提供数据支持。
4.1 数据格式
输入数据格式 (dataX)
形状: (Ns, Nc, Nx, Ny)Ns: 样本数量Nc: 输入通道数(通常为1,表示几何信息)Nx, Ny: 网格尺寸
输出数据格式 (dataY)
形状: (Ns, 3, Nx, Ny)Ns: 样本数量3个输出通道分别表示:
通道0: Ux (水平速度场)通道1: Uy (垂直速度场)通道2: Pressure (压力场) Nx, Ny: 网格尺寸
4.2 数据处理功能
示例数据生成
生成多种几何形状的测试数据(圆形、翼型、方形等)根据障碍物SDF生成相应的流场数据提供可视化示例便于理解数据结构
数据加载
支持Pickle格式数据文件加载分别加载输入数据和输出数据文件自动识别数据形状并验证数据完整性
数据预处理
符号距离函数(SDF)计算流场数据标准化处理障碍物区域内数据置零处理
4.3 数据处理类和函数
示例数据生成函数
def create_circle_obstacle(nx, ny, center, radius):
"""创建圆形障碍物的符号距离函数"""
def create_airfoil_obstacle(nx, ny):
"""创建翼型障碍物的近似符号距离函数"""
def generate_velocity_field(obstacle_sdf, inlet_velocity=1.0):
"""根据障碍物生成简化的速度场"""
def generate_pressure_field(ux, uy, obstacle_sdf):
"""根据速度场生成简化的压力场"""
def create_sample_data():
"""创建示例数据集"""
STL处理器数据生成功能
class STLProcessor:
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数据集"""
4.4 数据流处理
STL导入流程:
加载STL文件 → 生成2D SDF → 创建CFD数据集 → 保存为Pickle文件
数据加载流程:
选择输入文件 → 选择输出文件 → 加载数据 → 验证形状 → 更新可视化
数据使用流程:
数据传递给训练模块进行模型训练数据传递给可视化模块进行结果展示
4.5 数据质量保证
数据形状验证确保符合DeepCFD要求障碍物区域数据一致性检查数值范围合理性验证提供数据统计信息便于调试
5. 训练模块
训练模块实现了深度学习模型的训练功能,支持多种网络架构和训练参数配置。
5.1 核心功能
模型训练
支持多种深度学习架构(FNO2d、UNet、ResNet)可配置训练参数(训练轮数、批次大小、学习率)多线程训练避免界面卡顿实时训练进度监控
训练控制
开始训练功能停止训练功能训练进度条显示训练日志实时输出
模型管理
模型保存与加载训练完成后的模型路径返回
5.2 支持的网络架构
FNO2d (Fourier Neural Operator 2D)
适用于求解偏微分方程的傅里叶神经算子架构
UNet
经典的编码器-解码器架构,适用于图像分割和重建任务
ResNet (Residual Network)
残差网络架构,通过跳跃连接缓解梯度消失问题
5.3 训练参数配置
可配置参数
网络架构:从下拉菜单中选择(FNO2d、UNet、ResNet)训练轮数:1-1000范围内的整数值,默认100批次大小:1-256范围内的整数值,默认32学习率:0.000001-1.0范围内的浮点数,默认0.001
参数调节建议
训练轮数:根据数据复杂度和收敛情况调整批次大小:根据GPU内存容量调整学习率:根据训练稳定性调整
5.4 训练流程
训练准备:
验证数据是否已加载禁用开始训练按钮,启用停止训练按钮初始化训练进度条
模型创建:
根据选择的架构创建相应模型初始化模型参数
训练执行:
多线程执行训练过程实时更新进度条输出训练日志信息支持训练中断
训练完成:
保存训练模型启用开始训练按钮,禁用停止训练按钮切换到可视化标签页展示结果
5.5 训练类接口
class TrainWorker(QThread):
# 信号定义
progress_updated = Signal(int) # 进度百分比
log_message = Signal(str) # 日志消息
training_finished = Signal(str) # 训练完成信号
def __init__(self, dataX, dataY, architecture, epochs, batch_size, learning_rate):
"""初始化训练工作线程"""
def run(self):
"""执行训练过程"""
def stop_training(self):
"""停止训练"""
5.6 训练监控与日志
进度监控
实时进度条显示训练进度每10个epoch输出一次进度日志
日志信息
训练开始和结束提示每个epoch的完成状态训练参数摘要错误和异常信息
异常处理
训练过程中的异常捕获用户中断训练的支持错误信息的详细记录
5.7 模型保存
训练完成后,模型会被保存到本地文件系统,默认文件名为”trained_model.pt”。在实际应用中,应使用torch.save()函数保存完整的模型状态。
6. 用户界面
DeepCFD GUI采用现代化的图形用户界面设计,提供直观易用的操作体验。
6.1 界面布局
主窗口结构
顶部菜单栏:包含文件、视图、帮助等菜单项工具栏:提供常用功能的快捷按钮状态栏:显示应用程序状态信息主工作区:采用左右分栏布局
左侧:控制面板右侧:可视化区域
控制面板
位于主窗口左侧,最大宽度350像素,包含以下功能组:
数据加载组模型参数组训练控制组训练日志组
可视化区域
位于主窗口右侧,包含标签页:
欢迎页面结果可视化页面
6.2 主要界面元素
菜单栏
文件菜单:
加载数据(Ctrl+O)退出(Ctrl+Q) 视图菜单:
可视化结果(Ctrl+V) 帮助菜单:
关于(F1)
工具栏
加载数据按钮开始训练按钮可视化结果按钮关于按钮
控制面板组件
数据加载组
输入文件标签:显示当前选择的输入文件名输出文件标签:显示当前选择的输出文件名选择数据文件按钮:打开文件选择对话框导入STL模型按钮:导入STL几何模型
模型参数组
网络架构下拉框:选择模型架构(FNO2d、UNet、ResNet)训练轮数微调框:设置训练轮数(1-1000)批次大小微调框:设置批次大小(1-256)学习率微调框:设置学习率(0.000001-1.0)
训练控制组
开始训练按钮:启动模型训练停止训练按钮:中断模型训练进度条:显示训练进度
训练日志组
日志文本框:显示训练过程中的日志信息
可视化区域组件
欢迎页面
应用程序标题使用说明文本功能介绍
结果可视化页面
上一个样本按钮:切换到前一个数据样本下一个样本按钮:切换到后一个数据样本物理量下拉框:选择显示的物理量(Ux、Uy、Pressure)三列可视化图表:
几何信息图真实数据图预测数据图
6.3 界面交互
数据加载流程
点击”选择数据文件”按钮选择输入数据文件(.pkl格式)选择输出数据文件(.pkl格式)系统自动加载并显示数据信息
STL导入流程
点击”导入STL模型”按钮选择STL文件系统自动处理STL文件并生成CFD数据集自动加载生成的数据
模型训练流程
设置模型参数点击”开始训练”按钮监控训练进度和日志训练完成后自动切换到可视化页面
结果可视化操作
使用”上一个样本”/”下一个样本”按钮切换数据样本使用物理量下拉框切换显示的物理量实时更新三个视图的显示内容
6.4 界面样式
颜色主题
主色调:蓝色系(#0078d4)背景色:白色(#ffffff)辅助色:灰色系
控件样式
按钮:蓝底白字,圆角设计输入框:白色背景,灰色边框下拉框:白色背景,灰色边框进度条:蓝色进度指示
字体设置
主字体:Segoe UI,9号字标题字体:加粗,较大字号日志字体:等宽字体,便于阅读
6.5 响应式设计
窗口适应性
最小尺寸:800×600像素可调整大小分栏比例自动调整
高DPI支持
使用Qt的高DPI像素映射属性确保在高分辨率屏幕上清晰显示
状态反馈
状态栏实时显示操作状态按钮状态根据操作进程自动启用/禁用进度条提供直观的进度反馈
7. 安装和运行说明
7.1 系统要求
操作系统
Windows 10/11 (64位)macOS 10.14或更高版本Linux (Ubuntu 18.04或更高版本推荐)
硬件要求
处理器:Intel i5或同等性能的AMD处理器内存:8GB RAM(推荐16GB)存储空间:至少2GB可用空间显卡:支持OpenGL 2.0或更高版本的显卡
7.2 环境依赖
Python环境
Python 3.8或更高版本pip包管理器
必需的Python包
PySide6>=6.0.0numpy>=1.20.0torch>=1.9.0matplotlib>=3.3.0numpy-stl>=2.16.0scipy>=1.7.0
7.3 安装步骤
1. 安装Python
如果尚未安装Python,请从python.org下载并安装Python 3.8或更高版本。
2. 克隆或下载项目
git clone <repository-url>
# 或者直接下载项目压缩包并解压
3. 安装依赖包
进入项目目录并安装所需的Python包:
cd deepcfd_gui
pip install PySide6 numpy torch matplotlib numpy-stl scipy
4. 验证安装
运行以下命令验证关键依赖是否正确安装:
python -c "import PySide6, numpy, torch, matplotlib, stl"
7.4 运行应用程序
启动方式
在项目根目录下执行以下命令启动应用程序:
python deepcfd_app.py
首次运行
首次运行时,您将看到欢迎界面,其中包含使用说明:
点击左侧控制面板中的”选择数据文件”按钮加载数据设置模型参数点击”开始训练”按钮训练模型在”结果可视化”标签页中查看仿真结果
7.5 使用示例数据
项目包含了示例数据文件,可以直接用于测试:
:示例输入数据
sample_input.pkl:示例输出数据
sample_output.pkl:示例STL几何模型文件
sample_*.stl
加载示例数据
点击”选择数据文件”按钮选择作为输入文件选择
sample_input.pkl作为输出文件点击”开始训练”进行模型训练
sample_output.pkl
导入STL模型
点击”导入STL模型”按钮选择任一文件系统将自动生成CFD数据集并加载
sample_*.stl
7.6 故障排除
常见问题及解决方案
1. 中文显示问题
问题:界面上的中文字符显示为方块或乱码解决方案:确保系统安装了中文字体,程序会自动尝试使用SimHei、Microsoft YaHei等常用中文字体
2. 依赖包缺失
问题:运行时提示模块未找到解决方案:使用pip安装缺失的包,例如:
pip install numpy-stl
3. CUDA相关错误
问题:PyTorch CUDA版本不兼容解决方案:检查CUDA版本并安装对应版本的PyTorch,或使用CPU版本
4. 权限问题
问题:无法保存文件或访问某些资源解决方案:以管理员权限运行程序,或修改相关目录的访问权限
5. 界面显示异常
问题:界面元素显示不正常或重叠解决方案:调整窗口大小,或检查系统显示缩放设置
日志查看
程序会在控制台输出详细的运行日志,可用于诊断问题。启动时会显示:
Python可执行文件路径Python版本信息当前工作目录Python路径信息
7.7 性能优化建议
训练性能
根据硬件配置调整批次大小使用GPU加速(如果可用)合理设置训练轮数避免过拟合
可视化性能
大数据集时适当降低可视化更新频率关闭不必要的可视化窗口确保足够的系统内存
8. 总结
DeepCFD GUI 是一个功能完整的计算流体力学深度学习仿真平台,具有以下特点:
8.1 技术优势
集成化的图形用户界面,操作简便支持多种几何模型导入和处理提供完整的数据处理和可视化功能支持多种深度学习架构训练实时训练监控和结果展示
8.2 应用场景
CFD仿真研究和教学流体力学问题快速求解深度学习模型训练和验证工程设计中的流场分析
8.3 扩展性
模块化设计便于功能扩展支持自定义网络架构集成可适配不同的数据格式和处理需求
8.4 发展方向
集成更多深度学习架构增强3D可视化功能支持更多格式的几何模型导入提供更丰富的后处理分析工具
本技术文档涵盖了DeepCFD GUI的主要功能模块、使用方法和技术细节,为开发者和用户提供全面的参考信息。