简单的气体/流体动力学源代码

Simple gas/fluid dynamics source code

本文关键字:流体动力学 源代码 简单      更新时间:2023-10-16

我有一个三维体素对象矩阵,我想用它来存储一些基本物理原理的状态。这里的目的是在视频游戏中实时表示体积(约30FPS)。我想尝试使该卷能够执行以下操作:1.储存各种重量的流体和气体类型,并遵循基本的相互作用原理。例如,氧气比水轻。2.能够确定压力。3.能够与"实体"对象进行交互。因此,一个中空的3D盒子可以储存一些不会"泄漏"出去的东西。

所有这些都是非常基本的,可以放弃任何"准确性"测试。

很乐意接受想法以及任何合适的资源,以便进一步阅读。然而,我认为我不相信自己有能力拿一篇论文或一个高级方程式来建立自己的图书馆。

好吧,多流体模拟并不容易。你可以使用SPH(平滑粒子流体动力学),因为这种方法可以相对简单地模拟复杂的界面。如果我是对的,它也被广泛用于游戏/动画行业,例如Blender将其用于流体模拟。我建议你在研究更复杂的事情之前,先尝试做一个单一的流体模拟。要做好准备,这将需要相当多的努力,并且取决于您所寻求的并行化的准确性/分辨率类型。如果你有更多关于SPH的问题,我会尽力回答。

我在3D图形中看到的常用方法是基于Navier-Stokes方程的体素实现建模的。搜索这一点应该会有很多关于在代码甚至现成库中实现这种方法的方法的论文,但正如Azrael3000所说,计算流体学就像听起来一样困难,而且非常数学繁重。值得庆幸的是,它也可以很容易地拆分为多个线程,因此达到30FPS的最佳方法是将计算推送到GPU上。

另一件需要记住的事情是"体素"answers"帧"是图形术语。方程(记住,这是连续函数)的方法被称为FDTD-时域有限差分。在英语中,这意味着将字段采样为时间和空间上的离散点。