我正在使用涡流粒子/“涡流”进行 2D 流体模拟,如视频游戏的流体模拟中所述。我认为这与“离散涡流法”相同。基本上,您使用具有定义涡量的粒子集合来表示流体,并通过使用 Biot-Savart 定律将所有涡流的诱导速度相加来计算某一点的流体速度(例如:, 在哪里是采样点和涡流之间的位置差,是涡量(3D 中的向量),并且是涡流和采样点之间的欧几里得距离)。
我试图在流体中引入一个盒子,让它来回移动并影响流体。这意味着要考虑盒子的无滑移和无通过边界条件。(也就是说,在盒子的边界处相对流体速度为 0)。
现在我正在对盒子的相对速度和盒子周围 80 个点的流体进行采样。我还在盒子周边附近放置了 80 个漩涡,但稍微向外偏移。我形成了一个大矩阵并求解涡旋需要抵消采样点处流体速度的涡度值(使用线性最小二乘法)。
这几乎可行,但我注意到我得到的解决方案高度依赖于采样点和涡流的确切布局。
有时我会得到交替旋转的不同方向的涡流模式(蓝点是逆时针旋转的涡流,红点是顺时针旋转的涡流):
其他时候,我让盒子左侧的所有涡流都以一种方式旋转,而另一侧的所有涡流都以另一种方式旋转,就像在这张照片中一样:
我认为第二张照片是我真正想要的。我还认为这两种不同的解决方案意味着我使用的方程组约束太少。添加额外的样本点有时会有所帮助,有时则不会。
我可以添加任何其他边界条件来帮助我获得我想要的结果吗?直观地说,我没有做任何事情来考虑在距离盒子一定距离处流体受到的干扰程度。我在想也许我可以添加边界层限制的条件。但我不确定那会是什么样子。
或者,是否有任何相关文献我可以查看基于涡旋粒子的流体模拟如何处理这些边界条件?