不可压湍流模型改成可压湍流模型
-
@东岳 谢谢老师!原始文献都只是不可压缩湍流方程,那我改成可压缩就不知道有没有意义了
-
@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/),是个不错的学习材料!
-
@cccrrryyy 谢谢!
不过我的case正好是研究考虑浮升力的影响而引起的传热恶化现象,所以感觉有必要研究一下GB这一项。Chalmers 的课程我之前有注意到过。
-
@Calf-Z-DNS 在 不可压湍流模型改成可压湍流模型 中说:
浮升力的影响而引起的传热恶化现象
我没关注过LB湍流模型。不过你看看能不能把上面代码中的GB放到你的LamBremhorstKE模型里面来考虑浮升力的影响而引起的传热恶化现象
-
谢谢老师!
我正在尝试把buoyantKEpsilon的GB放到我的代码中。有两个问题:
1.采用湍流模型的话,控制方程引入的项:
这两项是采用湍流模型时自动加的,还是需要在求解器代码里面添加?
2.如果我想在湍流方程里面添加红框的这两项:
是直接植入公式,还是要用fvm::Susp(...)或者fvm::Sp(...)套进去?
我看有的直接写,有的是套进去,不知道有没有什么原则。
另外我看fvm::Susp(...)跟fvm::Sp(...)前面经常加负号,这是为了收敛性?那如果公式里面是加上这个源项,那么应该写成 - fvm::Susp(- 源项)? 谢谢。 -
@东岳 谢谢老师!
我拿着改完的LB模型(植入GB这一项),去跑常温常压下普通水的流动传热。用的查表法获取物性,当做可压问题处理。
奇怪的是一直遇到壁温不断升高的问题。
图是中心剖面的温度场,头尾绝热,中间段加热,但是看上去热量一直传不进去,壁温也一直在升高。
我用相同的求解器和物性库,拿kw模型来算就正常。
算例设置,代码,网格我都有调试过,没有实质性突破。不知道可能会是啥原因造成的?谢谢!
-
我还想问下大家有跑通用低雷诺数湍流模型的例子吗?
不知道对它有没有什么特殊的边界条件设置,或者是其他需要注意的地方。
我的例子都是压力跟速度的径向方向残差比较高,很难达到收敛。
谢谢!
-
@Calf-Z-DNS 之前硕士的时候在做示踪剂在水中传输过程中,密度随浓度变化的问题,所处理的问题和你遇到的差不多,我的压力也是收敛的不太好,大概在0.01,然后硕士毕业时间紧迫问题就放下了,看见有人也在做这个问题,突然感觉我以前做的工作还挺有意义的(以前觉得没什么意义 ),现在突然想捡起来做一做了