OpenFOAM里kOmega模型的问题
-
@一颗鸭蛋 好的,谢谢你们的提醒。我后来按照Fluent里初始化的数据给了初始条件,用kOmega模型倒是能直接算下去了,但结果还是不对,您能帮我看看这些边界条件吗?
这个case是这样的,要算一个喷流,四周流体都是静止的(或者有一点很慢很慢的速度)。喷管入口总温和环境温度相同都是300K,喷管总压是环境压力的1.197倍。各个边界的条件设置如下,用的轴对称网格。
UFoamFile { version 2.0; format ascii; class volVectorField; location "0"; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { WALL { type noSlip; } FAR { type zeroGradient; } IN { type zeroGradient; } OUT { type zeroGradient; } AXIS { type symmetryPlane; } SYM_pos { type wedge; } SYM_neg { type wedge; } }
p
FoamFile { version 2.0; format ascii; class volScalarField; object p; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; internalField uniform 101325; boundaryField { WALL { type zeroGradient; } FAR { type totalPressure; p0 uniform 101326; } IN { type totalPressure; p0 uniform 121286; } OUT { type fixedValue; value $internalField; } AXIS { type symmetryPlane; } SYM_pos { type wedge; } SYM_neg { type wedge; } }
T
{ version 2.0; format ascii; class volScalarField; location "0"; object T; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 1 0 0 0]; internalField uniform 300; boundaryField { WALL { type zeroGradient; } FAR { type fixedValue; value $internalField; } IN { type totalTemperature; gamma 1.4; psi thermo:psi; T0 uniform 300; value uniform 300; } OUT { type fixedValue; value $internalField; } AXIS { type symmetryPlane; } SYM_pos { type wedge; } SYM_neg { type wedge; } }
k
FoamFile { version 2.0; format ascii; class volScalarField; location "0"; object k; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; internalField uniform 0.04; boundaryField { WALL { type kqRWallFunction; value uniform 113; } FAR { type fixedValue; value uniform 0.04; } IN { type fixedValue; value uniform 113; } OUT { type zeroGradient; } AXIS { type symmetryPlane; } SYM_pos { type wedge; } SYM_neg { type wedge; } } // ************************************************************************* //
omega
FoamFile { version 2.0; format ascii; class volScalarField; location "0"; object omega; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 -1 0 0 0 0]; internalField uniform 186; boundaryField { FAR { type fixedValue; value uniform 186; } OUT { type zeroGradient; } WALL { type epsilonWallFunction; value uniform 783589.9; } AXIS { type symmetryPlane; } IN { type fixedValue; value uniform 783589.9; } SYM { type empty; } SYM_pos { type wedge; } SYM_neg { type wedge; } }
nut
FoamFile { version 2.0; format ascii; class volScalarField; location "0"; object nut; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -1 0 0 0 0]; internalField uniform 0.01; boundaryField { WALL { type nutkWallFunction; value uniform 0.01; } FAR { type calculated; value uniform 0.01; } IN { type calculated; value uniform 0.01; } OUT { type calculated; value uniform 0.01; } AXIS { type symmetryPlane; } SYM { type empty; } SYM_pos { type wedge; } SYM_neg { type wedge; } }
这是我之前的计算结果,对比喷流轴线上的速度分布和湍动能分布
用Fluent和OpenFOAM的计算做了个对比,kOmegaSST模型两个软件算的差不多,但kOmega模型就差很多,除了换湍流模型其他的计算条件都是一样的。然后大家说的边界条件,我现在比较担心壁面处的计算会对结果产生很大影响吗?我查了一下kOmega模型,OpenFOAM里的omega的边界条件似乎只有omegaWallFunction,壁面附近使用壁面函数。我不关心壁面附近边界层的情况,是不是只要保证y+在30~100间就可以?壁面附近的网格间距过大或过小是否都会有问题?
-
@东岳 老师我把壁面改成omegaWallFunction又跑了一遍,结果改善的不是很明显,我猜是壁面的计算对喷流流场计算影响有限。
然后我去对比了Fluent中和 OpenFOAM中kOmega方程的区别,其实之前也比较过,发现其实大部分系数都一致,但有两个和流动相关的系数在OpenFOAM里做了简化。具体是这样的:
标准kOmega方程:
其他项和系数都一样,但是OpenFOAM里这两项
的系数和Fluent中存在差别。OpenFOAM把
分别定义为beta和Cmu,取值分别为0.072和0.09.也就是说忽略了 的影响,将其默认为1.
fluent中的这两项有更细节的计算方法:
由于我也找不到什么别的不同了,所以我就在OpenFOAM的kOmega模型里加上了这两项的计算,又重新跑了一遍case。这回跑出来的结果倒是和Fluent里的计算结果比较接近了,几次对比的结果如下:
不过我也不敢确定我这样就是对的,或许这两项系数的修改对于我的算例影响很大,对于其他类型的流动影响就不是很大。所以也想看看大家有没有用OpenFOAM里的kOmega模型算过其他的算例,或许对于有些算例使用OpenFOAM默认的kOmega模型就可以算的很好,不需要考虑那两项系数的变化,对于有些算例需要考虑系数的变化,希望能确定一下OpenFOAM里标准kOmega模型的适用范围。
我把我改的模型放上来,如果老师同学有兴趣可以用这个模型算一下试试。不过改的时候代码编得十分粗糙,就简单实现了功能,运算优化之类的都没有考虑。如果有人愿意帮我检查检查或者看看能不能优化就更好了,谢谢大家~mykOmega.zip -
omega模型适合计算高速流的问题吗?
-
@huoyanxiadebing 哈哈,其实也能看出来用kOmega模型算我这个算例结果和实验差别挺大的,算的不准,或许是不适合这种高速流动。
做这个对比其实是想说openfoam里的kOmega模型和fluent里的标准kOmega模型不太一样,和我在书上看到的也不太一样,主要是有的系数做了简化。
这种变化对我的算例的计算结果有较大影响,但对于其他的算例或者流动情况这种简化的影响可能就不会很明显。而且这种简化对计算的影响是积极的还是消极的也不好判断,对于有些流动可能简化了算的更准,对于有些流动可能不简化算的更准,这可以提醒我们以后用OpenFoam的kOmega模型算东西可能要考虑一下这种影响。万一也有朋友想对比一下fluent和openfoam的计算结果,也用了komega模型,也发现差别很大,那我们做的东西还能相互映证一下,没准还更有底气,还能少走个弯路。
然后kOmega模型的使用范围,我在网上查到的是低雷诺数预测效果较好,但好像高雷诺数也还行。对于自由剪切流比较适合。不过这些概括都比较笼统,我也就只算过一个喷流,没啥工程经验,如果有新算例我也就只能按着网上的建议去试,然后合不合适,有的时候算了才知道,还得具体问题具体分析。我觉得湍流模型这块其实挺有意思的,以我的算例为例,为了算喷流好多人拿不同的湍流模型在那测试,各有各的优劣。不过我觉得我还得多学习学习,吸取前人的经验。 -
@shampoo 在 OpenFOAM里kOmega模型的问题 中说:
明显
从理论上来说,komega模型不适合高速流流动,你如果单纯的研究边界层或剪切流中这种低速流动,可以用komega模型进行计算,但是你计算的喷管流域中既包括高速流(湍流核心区)也包括低速流(边界层或剪切层),低速区和高速区的湍动粘度系数求解是不相同的,理应使用SST komega。另外,试湍流模型的方法非常不可取,在你计算之前你就应该知道所使用的湍流模型是否适合你的计算域,是直接求解边界层中的流动还是使用壁面函数的经验模型对这种分离流很大的数值结果肯定有影响。
-
@huoyanxiadebing 哇您解释的好清楚,学到了很多,感谢感谢!我积累的实在是太少了,还得加油呢