不可压湍流模型改成可压湍流模型
-
-
@东岳 谢谢东岳老师。您说的这些是针对可压不可压求解器的修改?
我目前想改LamBremhorstKE低雷诺数湍流模型,从不可压改成可压/不可压都可以用的湍流模型,我是参照着LaunderSharmaKE模型来改的。
具体的k方程和e方程:
改成
改成
不确定这么改有没有效果,正在尝试。
-
@cccrrryyy 用的buoyantSimpleFoam,这个求解器适用于我的问题,应该没啥问题,湍流模型正在测试。
-
原始文献里面:
k方程
epsilon方程:
这么看来是不可压缩的?不确定我这么改成可压版本的会不会是徒劳。
另外,SuSp,kSource(),epsilonSource(),fvOptions这几项的添加我也不太确定有没有必要。
-
@东岳 谢谢老师!原始文献都只是不可压缩湍流方程,那我改成可压缩就不知道有没有意义了
-
@Calf-Z-DNS 原来原始文献是这样,那说明它的推导是按照不可压来进行的,按道理讲后续应该会有人把它延伸至可压吧?这个需要你自己去查文献了。
一般可压比不可压好像会多出来一些项,参见Fluent处理可压kEpsilon的方式。OpenFOAM里面虽然代码上模板化了,但是也可以看到可压比不可压要多出来一些项(我也只看过kEpsilon)。
-
@cccrrryyy 对的,可压里面多了Susp(2/3...)、epsilonSource、fvOptions这些项,添加这些项不知道对收敛性会不会有影响,反正现在这个湍流模型跑的例子一直没收敛。
另外对于低雷诺数湍流模型,k壁面我取定值,但epsilon壁面不知应该取epsilonWallFuntion(OF5中它可以用在低雷诺数湍流模型的情况下)还是取zeroGradient(Chalmers论文里面的建议)?
-
@Calf-Z-DNS 带有SuSp或者Sp字符的是为了增加计算稳定性弄的,这些字符可以保留,源项之类的就像东岳老师说的,单相流里面一般也不考虑这些。至于SuSp(2/3...)这个项,我之前研究kepsilon的时候推导过,这一项不是为了稳定性,这一项是从Bousinesq假设里面推出来的,所以它是理论上就存在的一项。这个地方建议你看看cfd-online上的这个帖子
听起来你对低雷诺数模型比我熟悉多啦,我一般就是k用kqRWallFunction,epsilon用你说的低雷诺数模型。这里我是参考Fluent的,因为Fluent里面有提到过壁面模型分成两块啥的,在什么y*小于11的时候用一个,大于11的时候用另一个,然后我看了OpenFOAM源码,感觉低雷诺数的那个壁面函数好像就是类似这样,所以就用了。我没有比较过它和zeroGradient的区别。
-
谢谢!这么看来fvoptions可以保留着,那么susp(2/3)这一项是从Bousinesq假设推导出来的话,它是在不可压里面适用?还是我理解有误。
另外我看不可压湍流模型里面没有susp fvoptions source这些项,而可压不可压通用的湍流模型就有。所以我改的时候就不知道怎么取舍。
而且目前湍流模型测试结果看起来不好,收敛性一直很差,调了边界条件、代码也都一样。
-
你看好像是比较早的版本的,从2.3.0开始可压不可压的代码应该是一样的,就是之前我们讨论过的,是全部用template去做的。比如kEpsilon在4.x里面就是
注意susp(2/3)那一项完整的是fvm::SuSp((2.0/3.0)*alpha()*rho()*divU, k_)或者fvm::SuSp(((2.0/3.0)*C1_ - C3_)*alpha()*rho()*divU, epsilon_)。不可压的时候这一项为0。我看了2.1.0的kEpsilon的代码,确实如你所说,不可压的里面没有susp这一项,可能是认为是0所以直接给去掉了。但实际上,把这一项加上是cfd里面更常规的做法,因为在计算没有收敛的时候(即使是不可压)这一项不一定就等于0,把它加上更有利于计算稳定性。总而言之,这一项应该是要加上的,对于不可压的case加上是有利于计算稳定性,原则上不会影响计算结果,但对于可压的case它不等于0,是有大小的。
按你之前说的,我觉得你目前的问题可能不在代码方面,而是你要修改的这个湍流模型是否有可压缩版本(经过严格理论推导的),或者更基础的,这个湍流模型适用于可压缩流吗?
仅供参考。
-
@cccrrryyy 谢谢,很有帮助!
我目前也在找是否有可压缩版本的文献,但发现做低雷诺数湍流模型的本身就比较少,不知道有什么有效的途径可以找到。目前能参考的就是原始文献,从方程上看应该是不可压的,所以有点虚。
-
@Calf-Z-DNS 我看你在cfd-online也发了帖子,好像没有人回复,说明这个问题可能比较小众。这种有点麻烦,就是不知道从什么地方入手。我感觉你需要找更多的人讨论一下,按道理一个湍流模型应该是有可压缩版本的,但是这个湍流模型是不是在推导的时候做了什么假设之类的?希望有搞湍流模型的专家来解答。
-
@东岳 今天找到一篇论文:
论文根据LB模型做了一些修改,给出的方程:
看上去应该是可压的LB模型了。
我对比过它跟我改的代码的差别,基本都一样,不太明白的就在GB这一项,应该是由浮升力引起的项。
openfoam里面是:fvm::SuSp((2.0/3.0)*alpha*rho*divU, k_)或fvm::SuSp(((2.0/3.0)*gamma_)*alpha*rho*divU, omega_)
我不知道它跟GB等不等价,看上去差很多。还需要研究一番。 -
@Calf-Z-DNS 对于LB,应该是
- fvm::SuSp(2.0/3.0*alpha*rho*divU, k_)与 - fvm::SuSp(((2.0/3.0)*Ceps1_ - C3_)*alpha*rho*divU, epsilon_)
,不小心复制成komega了。 -
辛苦辛苦。
OpenFOAM的kEpsilon模型是没有考虑浮升力的,所以这个文章里面带浮升力的项本身就是额外的。你从代码里也可以看到,OpenFOAM的kEpsilon是没有包含重力加速度的(OpenFOAM-4.x)。参见这里,https://www.openfoam.com/documentation/guides/latest/doc/guide-turbulence-ras-k-epsilon.html。
我个人感觉你目前还不需要考虑浮升力这一项,这个文章看标题它是针对buoyancy-driven flow的,所以它需要处理浮升力。从你要修改湍流模型的角度来讲这些都属于附加项,可以先不考虑吧。
话说这个Chalmers University of Technology好像开了好几年的针对OpenFOAM的课程了(http://www.tfd.chalmers.se/~hani/kurser/OS_CFD/),是个不错的学习材料!