PseudoTimePINN-BackwardFacingStep
模型介绍
PseudoTimePINN-BackwardFacingStep 复现 Re=800 后向台阶稳态不可压缩流实验,使用自适应伪时间步进的物理信息神经网络预测速度和压力。
论文:When PINNs Go Wrong: Pseudo-Time Stepping Against Spurious Solutions
模型描述
模型在后向台阶计算域内采样 Navier-Stokes 方程点,以解析边界条件和方程残差训练,不用 SU2 参考流场更新参数。参考场只用于误差评估和绘图。本模型包对应论文 Table 1 的 Re=800 adaptive pseudo-time 实验。
适用场景
| 场景 | 说明 |
|---|---|
| 后向台阶流动 | 近似求解分离、回流与再附着流场 |
| 工业仿真验证 | 比较 PINN 求解结果与数值参考场 |
使用说明
1. OneCode 使用
可通过 OneCode 在线环境体验智能化一键式 AI4S 编程:
2. 手动安装使用
硬件要求
- 推荐使用 GPU 或 DCU 完整训练。本次在 1 张 DCU 上完成 100000 步,耗时约 6 小时 13 分钟。
- 默认配置要求在 Slurm 计算节点训练,不要在登录节点运行完整训练。
下载模型包
从 ModelScope 下载模型包:
pip install 'modelscope[datasets]'
modelscope download --model OneScience/PseudoTimePINN-BackwardFacingStep --local_dir ./PseudoTimePINN-BackwardFacingStep
cd PseudoTimePINN-BackwardFacingStep
安装运行环境
DCU环境
# 请首先激活DTK及CONDA
conda create -n onescience311 python=3.11 -y
conda activate onescience311
# 支持uv安装
pip install onescience[cfd-dcu] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai
pip install -r requirements.txt
GPU环境
# 请首先激活CONDA
conda create -n onescience311 python=3.11 -y libstdcxx-ng=12 libgcc-ng=12 gcc_linux-64=12 gxx_linux-64=12
conda activate onescience311
# 支持uv安装
pip install onescience[cfd-gpu] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai
pip install -r requirements.txt
训练数据介绍
训练点在计算域中生成,不需要外部训练样本。评估使用作者公开仓库的 SU2 参考场 flow.vtu,包含 31265 个网格点。模型包配置默认读取 data/flow.vtu;该文件已单独整理到 OneScience/BackwardFacingStep-SU2-Re800。
modelscope download --dataset OneScience/BackwardFacingStep-SU2-Re800 --local_dir ./data
下载后应存在 data/flow.vtu;SHA256 为 004f10b2b9ce1e38542537da648c1221730308310f1f7fa675dc7a92b4900d8a。flow.vtu 只用于误差评估与绘图,不参与梯度更新。
训练
在已分配 GPU/DCU 的 Slurm 计算节点、模型包根目录中运行:
python scripts/train.py
默认训练 100000 步,按独立的无标签物理验证分数保存最佳权重。若在非 Slurm 环境中训练,需按实际设备修改 config/config.yaml 的 training.device 和 training.require_slurm。
训练权重
weight/best_model.pth 来自第 47200 步,大小 23,853,777 bytes,SHA256 为 02dfccc279625bce6f796d405b83ec0d2db719700a2eecc74d874ddb4bd775f6。另保留 weight/last_model.pth 供默认推理脚本比较训练末步结果,不推荐用它代替最佳权重。
推理
python scripts/inference.py
推理分别加载最佳权重和最后一步权重,在原始 SU2 网格上计算速度误差;结果保存至 results/。
评估和可视化
python scripts/result.py
本次最佳权重的 u 相对 L2 为 0.003582,论文 Table 1 为 0.002320;本次高 0.001262,约为论文值的 1.544 倍。最后一步权重的误差为 0.093482,因此应用时应选择最佳权重。详细训练曲线、误差和流场图见 results/。
OneScience 官方信息
| 平台 | OneScience 主仓库 | Skills 仓库 |
|---|---|---|
| Gitee | https://gitee.com/onescience-ai/onescience | https://gitee.com/onescience-ai/oneskills |
| GitHub | https://github.com/onescience-ai/OneScience | https://github.com/onescience-ai/oneskills |
引用与许可证
- 论文:When PINNs Go Wrong: Pseudo-Time Stepping Against Spurious Solutions。
- SU2 参考数据来自论文作者仓库;数据再分发条件应以原始来源说明为准。本模型包未附带参考数据。