Files
Physics-Ai-Fluent-Analysis/README.md
T

158 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 水平卧式流化床 · 空床流场仿真
> 用 GPU 加速的 **3D D3Q19 格子玻尔兹曼方法 (LBM)** 计算水平卧式流化床**空床**(无颗粒)气相流场,
> 以**恒功率离心风机曲线**为压力进口,布风板为**多孔板**,流量与压差由物理自洽涌现。
---
## 1. 物理场景
| 项目 | 参数 |
| --- | --- |
| 布风板尺寸 | 2400 mm (x, 长度) × 567 mm (y, 宽度),水平放置 |
| 布风板厚度 | **2 mm** |
| 布风板开孔 | 孔径 2 mm,开孔率 **5.6%**,孔轴 **5° 倾斜**(朝 -x,出料方向) |
| 进风分区 | 沿长度均分 **4 段**(每段 600 mm),每段下方独立风箱 |
| 风箱高度 | 450 mm |
| 进风管 | 每段 **DN300**,从 567 mm 侧面水平居中进入(风向平行床板) |
| 沸腾/渐扩段 | 由 2400 × 567 在 **1000 mm** 高度内渐扩至 2400 × 1200 |
| 上部稳压段 | 2400 × 1200 × 400 mm |
| 渐缩段 | 500 mm |
| 排风 | 顶部居中 **DN800** 圆管 |
### 工况(离心风机)
| 项目 | 数值 |
| --- | --- |
| 单段额定风量 | 2500 m³/h(4 段合计 10000 m³/h) |
| 额定压差 | 2900 Pa(布风板上下) |
| 风机特性 | **恒功率输出** `Δp · Q = P`,P = 2900 × (10000/3600) ≈ **8056 W** |
| 关死压力 | 4350 Pa(用于 Q→0 截断) |
> **关键物理认识**:2500 m³/h 与 2900 Pa 是风机**额定点**上的两个值,不是两个独立约束。
> 离心风机给的是**风机曲线**,实际工况点是「风机曲线 ∩ 系统阻力曲线」的**唯一交点**。
> 因此仿真中**只施加风机曲线压力**,流量由系统阻力自然涌现。
---
## 2. 数值方法
- **求解器**:D3Q19 格子玻尔兹曼,BGK 碰撞 + 推流 + 半步反弹(bounce-back)固体边界
- **加速**:NVIDIA GPU(`numba.cuda`),实测约 **120 MLUPS**(百万格点更新/秒)
- **网格**:**100 格/m**,240 × 130 × 265 = **8,268,000 单元**(本机 8 GB 显存上限)
- **进口**:**压力进口**(固定密度 = 风机曲线压力),速度零梯度自由
- **出口**:**压力出口**(密度 = 1,速度自由)
- **布风板**:固体薄板 + 规则开孔(1 格孔 / 间距 4 格 ≈ 6.25% 开孔率)
- **固体壁**:无滑移
### 缩放
| 量 | 说明 |
| --- | --- |
| `U_LB` | 0.015(进口参考速度对应的格子速度) |
| `SCALE_U` | `U_in / U_LB` |
| `SCALE_P` | `1.2 × SCALE_U²`(格子压力 → Pa) |
---
## 3. 结果(100 格/m,2 mm 板厚)
| 指标 | 数值 |
| --- | --- |
| 工况点风量 | **Q ≈ 1463 m³/h**(风机曲线与系统阻力交点) |
| 风机压力 | 4350 Pa(关死) |
| 风箱静压 | **4061 Pa** |
| 沸腾段静压 | **181 Pa** |
| **布风板压差** | **+3880 Pa**(风箱 > 沸腾段 ✓) |
| 最大流速 | 4.89 m/s |
| 求解 | 3900 步 / 184 s |
> 压力**符号、结构、量级**均正确:风箱高压 → 布风板节流降压 → 沸腾段低压 → 向排风递减。
---
## 4. 输出图(`docs/assets/`,19 张,4× 分辨率)
| 文件 | 内容 |
| --- | --- |
| `fbed-overview.png` | 四联总览(x-z / y-z / 近板 / 沸腾段) |
| `fbed-montage-plenum.png` | 风箱层水平切面 ×5(4 段侧进风分布) |
| `fbed-montage-nearplate.png` | 布风板近区水平切面 ×6(射流合并) |
| `fbed-montage-freeboard.png` | 沸腾段/渐扩/排风水平切面 ×6 |
| `fbed-montage-xz.png` | 垂直切面 x-z ×5 |
| `fbed-montage-yz.png` | 垂直切面 y-z ×8(沿长度) |
| `fbed-sections.png` | 4 个区段中心 y-z |
| `fbed-zoom-sections.png` | 按区段剖分的 x-z 局部放大 |
| `fbed-streamlines.png` | 双大图流线 |
| `fbed-vectors.png` | 速度矢量图 |
| `fbed-components.png` | 速度分量 ux/uy/uz |
| `fbed-3d-cutaway.png` | 三正交切面三维剖切 |
| `fbed-pressure.png` | 静压场四联 |
| `fbed-pressure-drop.png` | 布风板压差分析 |
| `fbed-uniformity.png` | 各区段流量均匀性 |
| `fbed-decay.png` | 沿高度气速衰减 |
| `fbed-flowrate.png` | 进风/布风板/排风 风量平衡 |
| `fbed-tilt.png` | 布风板 5° 倾斜对近板风向影响 |
| `fbed-geometry.png` | 几何与边界示意 |
数据:`docs/assets/fbed_fields.npz`(ux/uy/uz/rho/solid)。
---
## 5. 复现
```bash
# 依赖: Python 3.11+, numpy, numba, numba-cuda, CUDA 13.2 runtime, matplotlib
# 主仿真 (100 格/m, 约 3-5 分钟)
python tools/fbed_simulation.py
# 批量出图 (秒级, 读 npz)
python tools/fbed_figures.py
python tools/fbed_analysis.py
```
环境变量(可选):
| 变量 | 默认 | 说明 |
| --- | --- | --- |
| `FBED_PPM` | 100 | 网格分辨率 (格/m) |
| `FBED_ULB` | 0.015 | 参考格子速度(越小越不可压,但越慢) |
| `FBED_HOLE` / `FBED_SPACE` | 1 / 4 | 开孔大小 / 间距(格) |
| `FBED_TB` | 120 | 求解墙钟预算 (s) |
| `FBED_DP` | 2900 | 额定压差 (Pa) |
---
## 6. 脚本说明
| 文件 | 作用 |
| --- | --- |
| `tools/fbed_simulation.py` | 主求解器(GPU LBM + 风机曲线 + 多孔板) |
| `tools/fbed_figures.py` | 切面/矢量/压力/流量等批量出图 |
| `tools/fbed_analysis.py` | 几何/倾斜/均匀性/衰减/压差等分析图 |
| `tools/fbed_check.py` / `fbed_check2.py` | 通量与压差诊断 |
| `tools/fbed_probe.py` | 切面 ASCII 速度探针 |
| `tools/fbed_rans.py` | RANS(投影法+AMG) 尝试版(未收敛,留档) |
---
## 7. 局限与已知问题(诚实声明)
1. **板厚亚网格**:2 mm 板厚在 100 格/m(格距 10 mm)下**小于一个网格**,只能按 1 格最薄板近似。要真正解析 2 mm 板 + 2 mm 孔,需 ~500 格/m(约 10.3 亿单元,需 ~157 GB 显存,本机 8 GB 无法承载)。
2. **5° 倾角未施加**:倾角水平分量仅为垂直分量的 8.7%,粗网格下孔道倾斜不足 1 格,无法几何分辨;作为动量源施加时曾导致进口反流,暂关闭。方向已按设计设为 **-x**。
3. **不可压近似**:LBM 密度波动 ~2.5%,压力场为相对值。
4. **层流**:未加湍流模型,粗网格下湍流混合未解析。
5. **工况点偏低**:细网格把布风板开孔阻力解析得更"阻",工况点落在 1463 m³/h;若要标定到额定 10000 m³/h,需放大等效开孔或减薄板厚。
---
## 8. 后续方向
- 用 **OpenFOAM**(`simpleFoam` + `k-ε` + `porousBafflePressure`)在 CPU 上跑更高分辨率(~250–300 格/m)
- 布风板改用**多孔跳变边界**(Δp = K·½ρv²,K≈900),避免离散开孔的网格依赖
- 以求解器生成参数化数据集 → 训练 **GNN/Transformer 神经算子** → 毫秒级实时推理
---
*本项目为物理世界流场实时仿真方向的水平卧式流化床 Demo。*