流体流动、热传递和 Python

5

完整编辑:

我将提供关于整个问题的更多信息。项目处于早期阶段,我的问题实际上只涉及其中的一部分。

最终目标:
我目前正在尝试在Python中模拟围绕刚性障碍物周围的热空气流动。我有一个稳定的气流输入,在大量区域内的流动是暂态和湍流的。整个练习的目的是了解
- 空气流动的行为
- 障碍物如何加热
- 空气如何冷却以及气压下降

已完成的工作:
目前为止没有做太多工作,事情还处于早期阶段。我有一个二维矩形域和一个圆形障碍物。网格在大量区域和障碍物之间变得更细,因为有趣的事情发生在这里。目前我只考虑气流,没有对流或传热。我使用FEniCS软件集来求解Navier-Stokes方程。Fenics带有一个使用Chorin投影方法的N-S求解器示例,我改编了此示例以适应自己的设置。我将刚性体建模为具有无滑移边界条件的区域(即我将空气流动的速度设为零)。求解器仍然在该区域内求解N-S方程,特别是障碍物内部的压力会随时间变化。也许避免这种情况并将N-S求解器限制为大量区域是一个更好的想法。但是目前我认为这不会对速度产生太大影响。

问题:
这个东西运行得相当慢。如果最终模拟需要几天时间,我不介意,但目前只是二维流体流动围绕一个障碍物,网格不像我最终想要的那样细。我希望这能更快一些,因为当热量出现时会变得更加复杂。

我的问题:
归根结底只有一个问题:

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

我完全可以自己从头编写求解器,但这也引起了同样的问题。今天早上我想到投影方法可能不是最坏的想法,因为它分离了压力和速度升级,我可以尝试将其分配给不同的CPU内核。


1
你可能也想尝试一下 http://physics.stackexchange.com/。 - Emil H
1个回答

6

如果你从头开始编写代码,Python实际上是一个很好的选择。但是,你需要有很多背景知识才能从头开始编写。

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

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

如果空气在该温度下的马赫数小于0.1,则不可压缩的Navier Stokes适用于像空气这样的气体。你的问题是否是这种情况?这可能是真的,但我想问问。

Navier Stokes不适用于你的固体障碍物。如果你用一个网格来模拟整个东西,你是如何描述这个固体的呢?它是高粘度流体吗?这可能会使方程组病态并且难以解决。如果你使用显式积分,这也会影响稳定的时间步长大小。

它是定常流还是瞬态流?(定常较容易)流动是层流还是湍流?(层流较容易)

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

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

要得到好的建议,你需要提供更多信息。是否有一个物理数值方法的Stackoverflow?你需要它。


1
楼主表示他正在使用FEniCS,所以他并不是从头开始编写所有代码。如果你对FEniCS不熟悉的话,你可能想要了解一下它——我真的很喜欢它 :) - Sven Marnach
不熟悉(显然)-谢谢你指出来。只是粗略地看了一下-我会担心文档。它们很简略-不适合初学者或第一次尝试者。 - duffymo
谢谢你的回答。我在障碍物处有一个无滑移边界条件。马赫数小于0.1,是的。你提出了几个已经让我担忧的问题。目前整个项目还处于早期阶段,所以我不能说太多关于网格最终会是什么样子,特别是如何将热传递到整个系统中。目前我只关注流体流动,对流会在后面进行。我目前的问题是Navier-Stokes求解器速度非常慢,我不敢加入其他任何东西。因此,我正在寻找更快的流体问题替代方案。 - Till B

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