好巧啊,我的CFD模拟今天也失败了!

还记得8月底,帕坦卡曾经发起过一次投票吗?坑填得有点晚了,抱歉!!!不过,晚来总比不来好,是吧!
今天,帕坦卡就结合自己开发CFD程序以及使用CFD软件的经验,按照得票数量,综合整理一下以上各类CFD问题的解决方案。

计算不收敛

的确,计算不收敛是CFD中最常遇到的问题,引起这一问题的原因主要包括但不限于以下几个方面:

1. 网格质量太差。尤其是在计算区域比较复杂的情况下,一些边角处的网格特别容易给计算带来困难,这个时候,大家一定要静下心来,认真分块并尽量做成结构化网格。一般来说,看着越顺眼的网格质量也越高

2. 计算模型设置不合理。比如说热源给得特别大,或者说某些区域温差太大等等,这些都特别容易造成计算的不稳定。
3.松弛因子太大。遇到收敛问题建议先用0.1这种特别小的松弛因子试一下,以确认是否是松弛因子的问题。
4.算法选择不合理。对于复杂计算来说,对流项的二阶迎风或者更高阶格式很有可能会引起发散,SIMPLEC算法可能在求解某些问题时不收敛。
5.时间步长太大,导致迭代几个时间步之后计算发散。
6.实在想不起来了,咱们看下一个吧。

软件结果似对非对,不知如何解释

大部分CFD研究者都更倾向于使用商业软件,并不是说软件有多么好用,软件的坑并不比自己编程要少,只不过编程实在是太困难了!

使用软件的痛苦,相信每个人都有经历。最让人崩溃的,莫过于软件模型与参数调试了一遍又一遍,还是得不到与文献吻合的结果。起码编程的人还能自我安慰,说自己的程序还有问题,可对于商业软件这个黑匣子,臣妾真的是无能为力呀!

所以说,使用软件一定要慎之又慎,一定要对多个工况下的计算结果小心求证。对于比较复杂的问题,我们不需要计算得和文献完全符合,只要处于合理区间就可以了。一般来说,百分之二三十的误差是很正常的
如果软件模型的计算结果完全不符合预期,那么可能就真得换个软件,或者在软件基础上做一些二次开发了,比如说Fluent软件就提供了用户自定义函数(UDF)来帮助用户实现一些软件难以满足的功能。
软件解决不了,又不会自编程或UDF
对于不会编程的小白,可以考虑去网上下载一些CFD算法或者LBM算法的基本程序研究一下,或者直接在留言区联系帕坦卡本人。
对于Fluent软件的UDF而言,强烈推荐大家使用软件自带的手册去学习,里面有着很简单但又十分详细的说明。
原理似懂非懂,缺乏计算流体力学和数值传热学基础

在设置计算模型过程中,我们必须考虑模型包含哪些控制方程。拿Fluent软件来说,默认打开的只有连续性方程与动量方程,如果需要考虑传热过程,就需要手动打开传热方程,如果是湍流,还需要打开湍流模型。此外,如果流动过程中流体受到重力、电磁力等等,也都是需要额外去设置的。

所以说,流体力学以及传热学基础还是十分重要的,因为CFD本质上就是求解偏微分方程组,即使我们不知道每一个方程怎么推导,对于需要求解哪几个方程,哪些参数需要事先给定,哪些是待求解变量,边界条件是什么,只有做到心中有数,才不会在计算过程中手忙脚乱。

尽管Navier-Stokes很难推导,还是推荐大家前去推导一番,并搞明白每一项代表的物理意义,这是突破基本原理这一关必须经历的。

而对于数值传热学而言,如果你是自己编程的人,那么不好意思,不会是不可能的。即使你使用软件进行计算,你还是需要了解一些数值传热学中的基本概念,比如说,SIMPLE算法更适用于稳态问题,PISO算法更适用于非稳态问题,一阶迎风格式会引起假扩散等等。

这里给大家推荐一本CFD好书《数值传热学实训》,这本书专门针对数值传热学初学者,无论你是不懂流体力学基本原理,还是数值传热学小白,都可以使用这本书作为入门教材。

此外,该书后续还会增加OpenFOAM,Fluent软件、UDF以及多相流等内容,绝对是你快速入门CFD的最佳选择之一。

数值传热学实训

数值越界
数值越界的出现往往是由于除以0这种特殊情况的出现引起的。按照帕坦卡的经验,对于很有可能除以0的地方,一定要加一个小量,比如说b/a可以写成b/(a+1.0e-30),关键时刻,这一个小小的1.0e-30是可以救命的。
还有,在程序或者UDF的编写中经常会出现一些常数,除非这个常数必须是整数,否则强烈建议,整数的后面尽量加个“.0。比如说,本来1.0/2.0*a=0.5a,但是如果你写成了1/2*a,这个值可就变成0了。
不会画网格
这种人应该比较少吧,要是不会画网格,还怎么做数值计算,但是画出高质量的网格确实比较困难,需要我们根据经验,对计算区域进行合理划分,并尽量使用结构化网格,这样不仅能提高计算过程的收敛性,还能够提高计算效率。
不知道怎么建模型
建模型最重要的就是化繁为简。
如果牛顿考虑地球的一草一木,他恐怕也就得不到万有引力公式了。
比如说我们要模拟超音速飞机机翼产生的激波,我们可以进行如下简化:

1.根据相对运动原则,可以认为空气以大于340m/s的速度流动,这样就可以不用考虑飞机位置的变化,也就是计算过程中网格不变,减小计算量;

2.假定飞机速度恒定,这样就可以认为飞机任意时刻的受力情况相同,也就是我们只需要计算某一时刻机翼周围的情况即可,将非稳态计算简化为稳态计算;

3.假定机翼在垂直飞行方向上形状一致,那么计算过程中只需考虑机翼的某一截面即可,将三维问题简化为二维问题,有效降低计算量,同时也降低了生成了网格的难度。

最终我们的计算区域及网格就变成了这个样子:

机翼有点小

计算后就可以得到机翼周围的激波:

机翼周围压力分布

算的慢,卡卡卡

一句话,富人靠砸钱,穷人靠技术。

不过我相信大部分人存在这个问题的原因主要

那你就需要掌握各种能够提高计算速度的技能:

1. 通过简化模型来减小计算的复杂程度,比如说忽略一些复杂几何结构,使用轴对称模型等方法来减小计算区域;

2.计算过程中可以使用自适应网格;

3.在不影响结果的情况下尽量使用较大残差;

4.非稳态计算尽量使用柯朗数去动态调控时间步长;

5.初始化给定的流场和温度场尽量接近最终稳定的场;

…………..

祝大家的CFD模拟都能够成功!

热流工程坊,专注于计算流体动力学和传热学的研究。

喜欢的朋友欢迎留言或私信!

你点的每个好看,我都认真当成了喜欢

关于CFD还有什么问题或想法

欢迎点击下方图片留言

(0)

相关推荐