流体流动、热传递与Python

5 投票
1 回答
6499 浏览
提问于 2025-04-16 10:26

完整编辑:

我想多提供一些关于整个问题的信息。这个项目还处于早期阶段,我的问题其实只是关于其中一个小部分。

最终目标:
我目前正在尝试用Python模拟热空气在一个固定障碍物周围的流动。我有一个稳定的空气流入,整体流动是瞬态和湍流的。整个练习的目的是理解:
- 空气流动是如何变化的
- 障碍物是如何加热的
- 空气是如何降温的,以及空气压力是如何下降的

目前完成的:
进展不大,因为项目还在早期阶段。我有一个二维的矩形区域和一个圆形的障碍物。网格在障碍物和流体之间的边界处变得更细,因为那里发生了有趣的事情。目前我只考虑空气流动,没有考虑对流或热传递。我使用FEniCS软件来解决纳维-斯托克斯方程。FEniCS提供了一个使用Chorin投影方法的N-S求解器示例,我把这个示例调整到了我的设置中。我把固定的障碍物建模为一个没有滑动边界条件的区域(也就是说,我把空气流动的速度设置为零)。求解器仍然在这个区域内解决N-S方程,特别是障碍物内部的压力会随时间变化。可能更好的做法是避免这种情况,把N-S求解器限制在流体区域。但目前我觉得这对速度影响不大。

问题:
这个程序运行得相当慢。我不介意最终的模拟花费几天时间,但目前只是二维流体在障碍物周围流动,网格也没有达到我想要的细度。我希望这个过程能更快,因为当热量因素加入时,情况会变得复杂得多。

我的问题:
归根结底就是一个问题:

在Python中,有什么快速的算法或方法可以解决纳维-斯托克斯方程?

我完全可以从头开始编写一个求解器,但这也引出了同样的问题。今天早上我想到,投影方法可能不是一个坏主意,因为它将压力和速度的更新解耦,我可以尝试将其分配给不同的CPU核心。

1 个回答

6

如果你打算从头开始写代码,Python其实是个不错的选择。不过,要从零开始写的话,你需要很多背景知识。

把两个系统结合在一起是个难题。

有人提醒我,你正在使用一个叫FEniCS的工具包(谢谢你,Sven)。所以我之前的回答需要调整一下。我会先问你一些关于物理方面的问题,然后再谈谈这个工具包。

对于像空气这样的气体,如果在那个温度下的马赫数小于0.1,那么不可压缩的Navier-Stokes方程就适用了。你的问题符合这个条件吗?可能是,但我还是想问一下。

Navier-Stokes方程不适用于你的固体障碍物。如果你用一个网格来建模整个系统,那你是怎么描述这个固体的?它是高粘度流体吗?这样可能会让方程组变得难以处理,也会影响到你在使用显式积分时的稳定时间步长。

流动是稳态还是瞬态?(稳态比较简单)流动是层流还是湍流?(层流比较简单)

在你的固体障碍物中是导热,而在流体中则是导热和对流。流体在固体障碍物表面会有动量和热边界层,你的网格需要解决这些问题。这是固体和流体之间重要的热传递发生的地方。为了处理从边界条件到远场速度和温度的过渡,你需要在固体表面附近使用细致的网格。你在网格设计中考虑到这一点了吗?

看起来FEniCS是使用有限元方法,但我在文档中没有看到任何关于如何将动量和能量方程结合在一起的说明。

要想得到好的建议,你需要提供更多的信息。有没有专门讨论物理数值方法的StackOverflow版块?你可能会需要它。

撰写回答