这是一个可离线运行的二维气流与扰动展示工具。速度场通过数值求解产生,烟雾与示踪粒子随速度场移动;不是固定播放的动画。首次打开自动运行“圆柱绕流”。
如何开始
选择预设 → 调整风速与吹向 → 选择工具添加或拖动障碍物 → 用“拖动空气”或“旋涡画笔”施加干扰。切到“速度分布”看快慢,切到“旋涡分布”看局部旋转方向。手机可用顶部“参数”,横屏或全屏更便于操作。
| 工具 | 操作 |
|---|
| 选择 / 移动 | 点击选中、按住拖动;参数面板可精确改位置、尺寸或角度。 |
| 拖动空气 / 旋涡 | 按住拖动向流场施加动量,并加入示踪物。旋涡脉冲作用在探针或画面中心附近。 |
| 圆形 / 矩形 / 手绘墙 | 拖动绘制。圆形也可单击放置默认尺寸。障碍最小宽度受计算网格限制。 |
| 烟源 / 局部风源 | 烟源只释放被动示踪物;风源施加局部动量、不代表真实风机性能。拖动确定风源朝向。 |
| 探针 / 视图 | 点击测局部模型速度;滚轮或+/−缩放,“平移”拖动视图,“适应画面”复位。 |
模型与边界
采用交错网格(MAC)、半拉格朗日平流、压力投影和显式速度扩散,近似求解二维、恒密度、不可压缩流动。入口给定来流速度,其余开放边界允许流出;固体采用网格化不可穿透边界。黏性边界和尾流存在离散误差。
将来流风速设为零不会自动清空已有流场;需要完全静止时,再点击“重置”。
角度是屏幕顺时针的“吹向”:0°向右、90°向下、180°向左、270°向上。阵风随模型时间周期变化;所有速度、时间、黏性、旋涡强度均为未标定模型单位,没有现实尺寸和介质标定。
烟雾是被动可视化标记,没有重量与浮力。有限网格与平流会带来数值扩散;“烟雾消散”是人为显示衰减。瞬时流线是当前速度场的切线,不等于非定常流中粒子的历史轨迹;速度色标随场景范围变化。旋涡色标为 ∂v/∂x − ∂u/∂y,屏幕坐标下正值表示顺时针。
适用范围
仅定性演示 可用于理解绕流、遮挡、混合与干扰。不包含真实三维湍流、热浮力、可压缩性、污染物反应或浓度标定。不得据此判定通风橱控制效果、排风设计、职业接触限值、可燃气体浓度或爆炸风险。也不提供阻力 / 升力工程结论。
60 帧与性能
右上角是实测绘制帧率。动画使用 requestAnimationFrame,物理按固定模型时间推进,必要时增加稳定性子步。自动精度根据负载降低计算网格;高负载下会放慢模型时间并显示实际速度,不冒充实时计算。设备、浏览器、刷新率和后台节流都可能使帧率低于 60;切到后台后自动暂停,返回需点击继续。
保存与隐私
本机保存仅使用当前浏览器 localStorage。导出 JSON 保存参数、障碍物、烟源、风源与探针,不保存正在流动的完整数值场或粒子轨迹;重新载入会重新启动计算。页面不联网、不使用统计服务。最多 100 个对象、8000 个手绘点;导入文件上限 2 MB。
GitHub 来源与许可
流场核心参考并改造 Matthias Müller / Ten Minute Physics — 17-fluidSim.html(MIT 许可)。已保留版权及许可;中文界面、多对象、风源、干扰、探针、性能控制和方案管理为本文件新增实现。另参考 MDN 动画调度文档。这些链接仅在手动点击时联网。
MIT 许可全文
内置基础自检
检查匀速场、压力投影、固体边界、示踪物和有限数值。自检不是工程验证,也不等于在你的设备上保证 60 帧。