本页最初的规则涡管和螺旋装饰已删除。现在的色彩图、粒子与升力来自本课程实际运行的二维 D2Q9 格子 Boltzmann 数值求解,未下载或伪造流场视频。新流场和原课程六组记录是两套独立算例,界面分环节呈现,不宣称是同一次 CFD / 流固耦合计算。
- 固定圆柱、二维、Re=U∞D/ν=100;格子来流 U∞=0.08,Mach≈0.139。
- 计算域 20D×10D;圆柱位于 (4D, 5.07D),侧向周期边界。因此本例等价于横向间距 10D 的周期阵列,不是无限远场孤立圆柱基准。
- D2Q9-BGK:ν=(τ−0.5)/3;标准二阶平衡分布。圆柱壁面采用流体—固体 link bounce-back,入口采用 Zou/He 速度条件,出口采用 Zou/He 密度 ρ=1 条件。
- 初始极小横向扰动只打破对称性,后续没有周期性强迫、指定脱涡频率或预设涡旋形状。
- 计算至 t*=tU/D=180。频率从 80≤t*≤180 的完整升力记录识别;64 帧流场保存 140≤t*≤180,用于回放。
- 力由壁面反弹的动量交换求和,CL=Fy/(½ρ∞U∞²D),CD 同理;不是取正弦函数制造升力曲线。
compute-wake.py 是原创实现,未复制第三方求解器。它连同数据打包和显示代码按 MIT 许可 随课程提供。方法出处是 Zou 与 He 原论文,可参考 Latt 的公开 D2Q9 教学基准理解算法背景;本页没有嵌入其代码。
两套相同边界、Re 和格子来流的网格分别采用 D=20 与 D=24,对应 400×200 与 480×240。检查全部分布函数 / 导出场的有限值、流体平均密度漂移、升力的频谱与独立正向过零周期,并比较 St。精确的计算结果、两次 NPZ 的 SHA-256 和网格差写在 wake-data.js 的 verification 中。
细网格已实算得到:FFT St=0.180(频率分辨率 0.010),升力过零周期 St≈0.18103,平均 CD≈1.58562、CL 的 RMS≈0.27808;流体平均密度处于 0.99850–1.00184。开放进出口的流体总质量不应被要求严格恒定;这里报告的是平均密度稳定性,不把它冒称为封闭系统质量守恒证明。
| 网格 | 过零识别 St | FFT St | 平均 CD | CL RMS | 流体平均密度范围 |
| D=20;400×200 | 0.18045 | 0.180 | 1.62138 | 0.29539 | 0.99832–1.00225 |
| D=24;480×240 | 0.18103 | 0.180 | 1.58562 | 0.27808 | 0.99850–1.00184 |
St 的相对网格差约 0.32%;平均阻力仍相差约 2.26%,CL RMS 相差约 6.22%,因此本例不应被称为气动力已完全网格收敛。两组场和力记录均通过有限值检查。核验机器可读摘要在 wake-verification.json。
研究中无限远场或不同边界的 Re=100 孤立圆柱结果常在 St≈0.16–0.17 附近,如 Rajani 等的原始数值研究及 Fu 等的网格研究。本例存在横向周期约束、有限入口距离和阶梯圆壁,计算 St / 阻力略高,不能以“同一基准精确吻合”表述;它适合低 Re 交替尾涡的教学,不是高 Re 桥梁绕流验证。
20 与 24 格的对照是基本网格敏感性检查,尚不足以宣称 Richardson 网格收敛。更粗的 D=16 试跑出现密度漂移和非有限值,已经拒收;其结果没有进入网页载荷。正式画面只使用通过有限值和密度检查的 D=24 结果。
涡量为 ωD/U=(∂vy/∂x−∂vx/∂y)D/U,从求解出的速度场以中心差分计算;不是解析涡街。页面在 3D 场景中显示一张二维流场切片,圆柱只是几何参照,允许旋转、缩放。二维切片不可解释成三维湍流体数据。
为节省体积,涡量每帧 240×112 点,速度每帧 120×56 点,总计 64 帧。涡量与横向速度采用带精确零点的 8-bit 量化,流向速度采用线性 8-bit 量化;场值在空间 / 时间插值。涡量存储范围 ±5、颜色范围 ±4,速度颜色范围 0–1.6U。局部饱和只作用显示,不改动升力和网格核验数据。粒子用数值速度的双线性插值和中点 RK2 积分,位置越界后从入口重新释放。
整段是 140≤t*≤180 的循环回放,时间显示会随循环回到起点,不能把循环拼接当作连续外推。原课程六工况没有流场,回放它们时本页隐藏新增切片,保留原 UY / 升力 / 频谱,默认局部 1×,需要时可明确选择局部位移放大。
浏览网页不需要 Python、NumPy 或 Numba。重算才需要 Python 3、NumPy 和 Numba:
python compute-wake.py --diameter 20 --output wake-coarse.npz
python compute-wake.py --diameter 24 --output wake-fine.npz
python pack-wake.py --fine wake-fine.npz --coarse wake-coarse.npz
node physics-check.cjs脚本默认不调用可选替代出口;正式两网格采用相同 Zou/He 出口。NPZ 仅为重新计算和打包的中间结果,正式学习包只保留小型 wake-data.js、源码、核验摘要和必要截图,避免重复占用磁盘。