1KB 代码在 386 上模拟 Navier-Stokes
Show HN: Navier-Stokes Visualized as 1kB i386 demos
在制作关于 MS-DOS 图形时代的 Web 项目时,受 OpenAI 关于 Navier-Stokes 平滑问题解决方案的启发,我尝试用复古的 386 架构重现这一流体可视化。最终,我通过极致优化,将基于 Burgers 涡旋解的演示程序压缩至 1KB 以内。项目包含两个版本:一个是利用调色板循环(Palette)实现动画,另一个则是实时渲染粒子轨迹。这两个程序不仅能在 js-dos 中运行,更能在真实的 386 硬件上流畅执行。从 16.16 定点数运算到移除所有冗余检查,每一步优化都旨在在极小的代码空间内呈现复杂的物理现象,证明了即使在 90 年代的硬件限制下,也能通过巧妙的算法实现令人惊叹的视觉效果。
这并非平滑问题的解决方案,而是 J.M.Burgers 于 1948 年发表的 Burgers 涡旋,它是 Navier-Stokes 方程的一个精确解。
- Kotlopou
这画面挺美,但这些可视化效果看起来都不是很……“奇点”?有人能告诉我,在这些模拟中该看哪里才能看到“爆破”(blowup)吗?是某个区域的速度趋于无穷大(是蓝色部分还是橙色部分?),还是仅仅变得不光滑?
- westurner
真酷!据我所记,Geisswerks 有能在 Win98/2k 上运行的 Navier-Stokes 可视化程序。
Milkdrop3/projectM 可以根据音频属性样本实时调整可视化参数。
也许可以放在一个开源的保龄球馆里:https://news.ycombinator.com/item?id=48971134
我自己也有一些粒子可视化作品,在修改了 ThreeJS 的粒子吸引器示例后,我开始用 R3F ReactThreeFiber 和 Drei 构建这样一个集合:https://github.com/westurner/particlewavefluid
ThreeJS 如果可用会使用 WebGPU,否则回退到 WebGL。
我还没实现 NS(Navier-Stokes);我应该优先构建 Fedi 的 SQG 和 DDF 模型,即仅用单个涡旋湿度的 GOE Gross-Pitaevskii 方程来模拟黑洞的 Dilatant Dark Fluid。
我确实做了(ai)审查,并试图从不可压缩流体的新 NS 解中寻找扩展。通过 Madelung 变换,Navier-Stokes 与 Lagrangian 力学之间存在联系;https://news.ycombinator.com/item?id=49637058
但 SQS 和 DDF 指出,时空的超流体是一种既压缩又不可压缩的膨胀流体(dilatant fluid),并且还有一个第 4 项。到目前为止,我使用了 4x4 范数张量高斯散斑(Gaussian splatters)来量化流体模拟,这似乎是有利的,因为据我理解(FWIU),范数张量在模拟中已经自然地实现了能量守恒。
同时也在针对有限架构进行模拟优化;
关于 MU-AV 的第一个版本(C++ 编写)在 ESP32-S3 上运行,搭配 1Hz 的 ePaper 显示屏 […]