流体动力学模拟,带有障碍物

10

我正试图在HTML5画布上编写一个流体动力学模拟器。我找到了一些很酷的东西(链接1)(链接2),看起来都是一个很好的起点,但它们都是基于单元格并使用一些疯狂的数学。

我想能够添加任意障碍物(任意方向的线条、圆形等)使事情更有趣,但我不知道从哪里开始。

是否有人知道一些相对简单的涉及任意方向障碍物的流体模拟方程?或者,有人可以指导我如何将上述示例之一与障碍物相结合所需的数学。

我知道这个问题接近需要在mathoverflow上提问的内容,但他们似乎更关心理论。如果我在错误的区域中,请谅解。我真的不知道该从哪里开始 - 如果有人以前处理过带有任意障碍物的流体模拟,我需要一些指引。

在这里,精确性让位于简单性。

谢谢!


2
很抱歉,如果你不理解数学,那么想要完成这个任务,最接近的方法就是复制粘贴别人的代码。 - Matti Virkkunen
5个回答

13

流体力学并不是一个简单的话题。另一个网站上所谓的“理论”只是这个领域的工作方式。

最简单的流体流动例子是2D、不可压缩、无旋、层流流动。我建议首先研究这个。

但这不是一个容易的领域。没有《十天自学计算流体力学》之类的书籍。


8
介绍图形导向流体模拟最好的书是罗伯特·布里德森(免责声明:他是我的博士导师)所著的《计算机图形学中的流体模拟》。网址为http://www.cs.ubc.ca/~rbridson/fluidbook/
虽然其中涉及大量数学,但也有很多代码示例可以为不擅长数学的人解释清楚。
该书主要介绍了您提到的基于单元格的方法。另一种主要的替代方法是“平滑粒子流体动力学”(SPH)。如果您想开始学习,马蒂亚斯·穆勒发表了一些关于这方面的论文。

+1 - 这本书看起来不错。如果你是被引用为自2008年以来应该添加的未来工作的C. Batty,我会认为你是这个主题的权威。非常好,谢谢你让我注意到它。我会把它加入我的“应该阅读”清单中。我已经下载了免费的表面流论文引用。我一定会仔细阅读它。 - duffymo

3
这是有关流体动力学和模拟的一份相当不错的清单: http://www.dgp.toronto.edu/~stam/reality/Research/pub.html 此外,您应该查看this网站,在那里您可以找到用Java编写并转换为Actionscript3的具体源代码。它非常有文档记录,所以将其转换为Javascript不应该成为问题。

非常好的资源,你第一个链接中的这篇论文特别有帮助:http://www.dgp.toronto.edu/people/stam/reality/Research/pdf/GDC03.pdf。其中解释了数学原理并提供了C代码。 - Cbas

3
如果你不关心真正的准确性,只想要一些华丽和酷炫的东西,我开发了一个非常简单的基于压力的模拟,可以在Javascript中提供非常快速的交互界面。你可以在这里看到它:这里

这很酷。对其他人的快速提示是,您必须单击黑屏幕才能对扰动做出反应。 - prototype

0

我已经尝试过了,只是想告诉你,在任何类型的流体模拟中,有一个重要的部分叫做投影,它在计算上非常耗费资源,即使在CPU上也需要很多时间。而且你可能也知道,由于很多原因,Javascript 的运行速度相对较慢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接