# 开发过程与提示词汇总 > 记录本项目从需求提出到最终交付的完整对话过程、关键技术决策与物理认识。 > 项目:水平卧式流化床空床流场仿真(GPU LBM) --- ## 一、需求提出 **用户初始需求(原始提示词):** > 我的水平卧式流化床,床板开孔 2mm,开孔率 5.6%,床板的尺寸 2400x567mm,床板下方进风, > 进风分成 4 个区段,每一个区段都是一个箱体。每个区段都用直径 300 的进风管居中,从侧面进风, > 也就是进风风向和床板是平行的。床板是水平放,床板的孔是往出口方向倾斜了一点,不是正朝上的, > 倾斜很小,只有 5 度。进风风量是 2500 立方米每小时每个区段,然后进风风压,也就是床板上下方 > 压差是 2900Pa,上面沸腾区段需要你模拟出来一个合适的放大形状,请模拟空床的流场,顶部沸腾段 > 顶部是大排风管,还是上面这个快速计算的思路。 **需求拆解:** - 几何:2400×567 布风板、4 区段风箱、DN300 侧进风、2mm 孔 / 5.6% 开孔率 / 5° 倾斜、渐扩沸腾段、顶部大排风管 - 工况:每段 2500 m³/h,压差 2900 Pa - 目标:空床气相流场,快速计算,结果可参考 --- ## 二、关键澄清(问答) 用户对 3 个关键几何点做出选择: | 问题 | 用户选择 | | --- | --- | | 4 段如何划分 / 进风管方向 | 沿长度均分 4×600mm,DN300 从 567 侧面水平居中进入 | | 沸腾段放大形状 | 矩形渐扩 + 顶部大排风(2.4×0.567 → 2.4×1.2,DN800) | | 孔板 5° 倾斜方向 | 朝 +x(x=2.4 为出料端)| > **后记**:倾角方向在后续被用户更正为 **-x**(见"关键物理认识"第 4 条)。 --- ## 三、技术路线演进 ``` LBM (GPU) ──► 发现问题 ──► RANS 尝试 ──► 失败 ──► 回到 LBM + 风机曲线 ``` ### 阶段 1:GPU LBM 空床仿真 - 3D D3Q19 LBM,`numba.cuda` 加速,实测 ~120 MLUPS - 布风板最初用「速度边界」强制表观气速 - **问题**:压力场符号反了(顶部压力 > 风箱),且质量不守恒 ### 阶段 2:RANS 尝试(用户选 A) - 用 `scipy` + `pyamg` 写投影法 + AMG 压力求解器 - **失败**:共置网格棋盘振荡 + 进口速度边界过约束,压力爆到 -72703 Pa → NaN - 改交错网格 MAC,AMG 收敛正常(残差 9e-9),但速度进口仍把压力逼爆 ### 阶段 3:回到 LBM + 用户的两个关键物理修正 - **修正 1(恒功率风机曲线)**:`Δp · Q = P`,不再强制流量 - **修正 2(压力进口)**:进口给风机压力,流量自然涌现 - **结果**:压力符号彻底修正,风箱 > 沸腾段 ✓ --- ## 四、关键物理认识(用户指出,扭转全局) ### 1. 不是"强制满足",而是风机曲线 > "2500 是风机额定流量,2900 是压力,并不是不可变的,你搞什么呢,不是强制满足, > 而是离心风机会出现一个风机曲线的" **含义**:2500 m³/h 与 2900 Pa 是同一额定点上的两个值,**不是两个独立约束**。 工况点是「风机曲线 ∩ 系统阻力曲线」的**唯一交点**。仿真中只施加风机曲线压力,流量涌现。 ### 2. 恒功率输出 > "风机是遵循恒功率的输出" **含义**:风机曲线不是抛物线,而是 **`Δp · Q = P`(双曲线)**。 额定点 (0.6944 m³/s, 2900 Pa) → P ≈ 2014 W/段,总 8056 W。 ### 3. 不要纠结收敛 > "你为什么总是在纠结于收敛,如果你走到收敛这条路,那么这个项目就不可能成功" **含义**:目标是快速、物理自洽的结果,而非把残差压到机器精度。 ### 4. 倾角方向 > "孔的倾斜方向是这个绿色箭头方向,我觉得你搞错了" **含义**:孔轴倾斜方向为 **上-左(-x)**,而非我之前设的 +x。 ### 5. 板厚 > "板厚只有 2mm,你按多少算的" **含义**:布风板厚 **2 mm**,而我当时用了 50 mm(差 25 倍),已修正。 --- ## 五、遇到的问题与修正 | # | 问题 | 根因 | 修正 | | --- | --- | --- | --- | | 1 | 压力场符号反了 | 布风板用速度边界,无压降;压力由几何决定 | 改为压力进口 + 多孔板 | | 2 | 质量不守恒(进 9903 / 出 20100) | 速度边界强制流量,与无散约束冲突 | 压力进口让流量自由 | | 3 | RANS 压力爆到 -72703 Pa | 共置网格棋盘 + 进口过约束 | 改交错网格;仍失败,放弃 | | 4 | 压力进口后流量反流 -5828 | 倾角动量源施加过强 | 暂关闭倾角力 | | 5 | 顶部"进风口"误判 | 渐扩段末端向排风管强汇流的贴壁高速带 | 探针证实为汇流,非源 | | 6 | 板厚 50mm | 我设错 | 改 2 mm | | 7 | 500 格/m 要求 | 硬件装不下 | 见"硬件限制" | --- ## 六、硬件限制(诚实核算) | 网格 | 单元数 | D3Q19 双缓冲显存 | | --- | --- | --- | | 80 格/m | 4.2 M | 0.6 GB ✅ | | 100 格/m | 8.3 M | 1.3 GB ✅ | | 200 格/m | 66 M | 10.1 GB ❌ | | 300 格/m | 223 M | 33.9 GB ❌ | | 500 格/m | 1033 M | **157 GB** ❌ | **本机**:RTX A2000 **8 GB 显存** + 64 GB 内存。 - 500 格/m = 10.3 亿单元,光分布函数需 157 GB,**超显存 20 倍**,物理上装不下 - 本机 GPU 实际上限 ≈ **100–150 格/m** - 要上 500 格/m,需云 GPU(A100/H100 80GB × 2–4)或 CPU 求解器(OpenFOAM,64GB 内存可跑 ~250–300 格/m) --- ## 七、最终交付 **仓库**:`http://124.220.63.9:30000/admin/Physics-Ai-Fluent-Analysis.git`(分支 `fluidized-bed`) **内容**: - `tools/fbed_simulation.py`:主求解器(100 格/m,8.27M 单元) - `tools/fbed_figures.py` / `fbed_analysis.py`:出图 - `docs/assets/`:19 张图(4× 分辨率)+ `fbed_fields.npz` - `README.md`:项目详细说明 **结果**: - 工况点 Q ≈ 1463 m³/h(风机曲线与系统阻力交点) - 风箱 4061 Pa > 沸腾段 181 Pa(**Δp = +3880 Pa,符号正确**) - 求解 3900 步 / 184 s --- ## 八、后续方向 1. **OpenFOAM**:`simpleFoam` + `k-ε` + `porousBafflePressure`,CPU 跑 250–300 格/m 2. **多孔跳变边界**替代离散开孔,消除网格依赖 3. **神经算子**:以求解器生成参数化数据集 → 训练 GNN/Transformer → 毫秒级实时推理 --- *本文档汇总了从需求到交付的完整技术讨论,供后续迭代参考。*