是否可以以基于时间和确定性的方式模拟流体动力学?

计算科学 并行计算 模拟 计算物理学 流体动力学
2021-12-15 12:34:23

问题域

我有许多联网的 PC。我希望能够在它们之间实时模拟和复制相同的简单流体动力学模拟(例如 Navier-Stokes)。也就是说,同一体流体将在每台 PC 上隔离地同时模拟。它们都将具有相同的起始条件。

我希望到目前为止很简单。现在,每台具有自己模拟的 PC 都可以独立地将输入添加到模拟中。例如,一台 PC 可能会在xyz有时t自己的模拟。我需要能够将该输入复制到所有其他 PC 和模拟,以便它们彼此保持同步。

我想总结一下——我想在多个联网的 PC 上实时运行单个流体动力学模拟。我不能简单地将生成的模拟数据复制到所有其他 PC,因为延迟和带宽要求太高,所有其他 PC 都会落后。他们每个人都需要尽可能地同步。

问题

我的问题是关于流体动力学方程:是否可以模拟可以随时输入的流体动力学t,这可能在模拟获得输入时已经过去,并考虑到这一点?

注意:当我说输入时,我的意思是模拟环境的变化,无论是对容纳流体的容器的变化、力的变化还是流体体积的变化。

我目前对这个问题的假设是可以实时运行简单的流体动力学(参见 Jos Stams implementation)。

1个回答

这是一个非常有趣的问题。如果我理解正确,您正在同时在多台 PC 中模拟水体。它们都在同一时间开始,如果不理会它们应该在一段时间后得到相同的结果。但是,您的用户会在其中一台 PC 中制造干扰(我认为与您的游戏相关),然后应该将其传输到其他 PC,以便他们也可以看到干扰。由于信息传输的滞后,如果其他计算机在收到干扰时而不是在原始 PC 中创建干扰时使用干扰,则会不同步。

您的想法是,也许来自引起干扰的 PC 的数据可以编织到其他 PC 的结果中,以暂时纠正结果。一个潜在的实现可能是:

您需要比实时更快地运行您的预测模型,然后您会实时显示结果。因此,例如,您在后台有一个进程在 1 秒内运行下一个 10 秒。然后,当一台 PC 发生某些事情时,您可以将信息与实时时间戳一起发送给其他 PC。其他计算机将获取此信息并在来自干扰的时间戳之前(即当前时间之前)开始运行预测模型。由于您的运行速度快了 10 倍或更多倍,您实际上可以知道当前时间的结果,包括来自其他 PC 的干扰数据,并将其显示给玩家。

这是您正在寻找的解决方案吗?