5

完整编辑:

我将提供有关整个问题的更多信息。该项目处于早期阶段,我的问题实际上只是关于这件事的一小部分。

最终目标:
我目前正在尝试在 Python 中模拟热空气在刚性障碍物周围的流动。我有稳定的空气流入,大量的流动是短暂的和湍流的。整个练习的目的是了解
- 气流的行为
- 障碍物升温
- 空气冷却和气压下降

到目前为止做的:
不多,事情还处于早期阶段。我有一个二维矩形域和一个圆形障碍物。网格在体块和障碍物之间的边界处变得越来越精细,因为那是发生有趣事情的地方。目前我只考虑气流,没有对流或热传递。我使用FEniCS用于求解 Navier-Stokes 方程的软件集合。Fenics 附带了一个使用 Chorin 投影方法的 NS 求解器示例,我将此示例应用于我的设置。我将刚体建模为具有无滑移边界条件的区域(即我将气流速度设置为零)。求解器仍然求解该区域的 NS 方程,特别是障碍物内的压力随时间变化。避免这种情况并将 NS 求解器限制在大容量范围内可能是一个更好的主意。但目前我认为这对速度影响不大。

问题:
事情运行得很慢。我不介意最终模拟是否需要几天时间,但目前它只是围绕障碍物的二维流体流动,并且网格最终没有我想要的那么好。我希望这会更快,因为当热量发挥作用时它会变得更加复杂。

我的问题:
归结为一个问题:

在 Python 中求解 Navier-Stokes 方程的快速算法或方法是什么?

我完全可以从头开始编写求解器,但这提出了同样的问题。今天早上我突然想到,投影方法可能不是最糟糕的想法,因为它解耦了压力和速度升级,我可以尝试将其分配给不同的 CPU 内核。

4

1 回答 1

6

如果您从头开始编写 Python,那么 Python 实际上是一个不错的选择。但是你需要很多背景才能从头开始。

耦合解决方案是一个难题。

有人向我指出你正在使用一个包 - FEniCS(谢谢你,Sven)。我原来的答案需要一些修改。我将从几个关于物理的问题开始,然后转向包装。

如果该温度下空气的马赫数小于 0.1,则不可压缩 Navier Stokes 适用于类似空气的气体。你的问题是这样的吗?这可能是真的,但我想我会问。

Navier Stokes 不适用于您的固体障碍物。如果您用一个网格对整个事物进行建模,您如何描述实体?它是一种高粘度流体吗?这可能会使方程组病态且难以求解。如果您使用显式积分,它也会影响稳定的时间步长。

它是稳定的流动还是瞬态的?(稳定更容易)流动是层流还是湍流?(层流更容易)

它是固体障碍物中的传导热传递和流体中的传导/对流。流体将沿着表面的固体障碍物具有动量和热边界层,您的网格必须解决这些障碍物。这就是固体和流体之间发生重要热传递的地方。这些将需要固体表面局部的精细网格来解决从边界条件到远场速度和温度的转变。你有没有在你的网格中考虑到这一点?

在我看来,FEniCS 正在使用有限元,但我在文档中没有看到任何内容告诉我应该如何将动量和能量方程耦合在一起。

你必须说更多才能在这里获得体面的建议。物理学 Stackoverflow 中有数值方法吗?你会需要它。

于 2011-01-22T13:36:28.383 回答