openfoam添加湍流入口方法?
-
这个问题挺好,希望我的回答能抛砖引玉。
openfoam.org版本有turbulentInlet,是白噪声,原则上来讲做出来的湍流不真实,因为没有所谓的相关性;openfoam.com版本的有turbulentDFSEMInlet(https://www.openfoam.com/documentation/guides/latest/doc/guide-bcs-inlet-velocity-dfsem.html ),属于合成类型的湍流入口,应该比较真实。后面这个我个人没用过,不知道好不好用。
如果需要另外的代码,参照Eugene de Villiers的毕业论文(The Potential of Large Eddy Simulation for the
Modeling of Wall Bounded Flows),里面有专门讲到处理湍流入口。他是在平均场上添加了人为扰动,这些扰动是经过特殊设计的,经过一小段时间就可以发展成完全发展的湍流。这个人应该是开发OpenFOAM的课题组出来的,所以他提出的方式应该比较靠谱。相关的代码他在cfd-online上公布了,暂时找不到了- -还有一个是LEMOS程序包里的inflowGenerator。代码在这里,https://github.com/LEMOS-Rostock/LEMOS-2.4.x/tree/master/libLEMOS-2.4.x/boundaryConditions/inflowGenerator 。这个类似于合成类型,我看了代码,应该就是在入口的平面上一直有大大小小的涡穿过。
我一直在用inflowGenerator,但是因为我主要做射流,而射流里面湍流的产生、保持和发展主要还是靠速度梯度,所以可能不同的湍流入口条件不会太影响最终结果。我试过turbulentInlet,也确实和inflowGenerator算出来的差别不大,但对你来说可能不是这样。
-
这有一个of所有内置的边界条件的介绍,你看看说不准哪个就满足你的要求,自己拼一个。。
加油
http://www.nextfoam.co.kr/lib/download.php?idx=135228&sid=235c1d3fc28364657dbb43ccfe025b25 -
@cccrrryyy 老师您好,我编译出错是这样的
boundaryConditions/inflowGenerator/decayingVorton.C: In constructor ‘Foam::decayingVorton::decayingVorton(Foam::scalar, const vector&, const vector&, Foam::scalar)’: boundaryConditions/inflowGenerator/decayingVorton.C:63:27: **error**: ‘class Foam::Random’ has no member named ‘vector’ vector omg = 2*ranGen.vector01() - pTraits<vector>::one;``` code_text
-
@dyb 好久不登录了- -它需要的就是速度、长度尺度和雷诺应力。简单的话速度你给个均一值,长度尺度取水力直径的10%,雷诺应力(RField)我一般都按照 k epsilon 里面 k 的算法(3/2*(refU*turbulentIntensity)^2,turbulentIntensity取个百分之五啥的),RField格式是 uniform (Rxx Rxy Rxz Ryy Ryz Rzz),我一般就把算出来的这个值给Rxx Ryy Rzz。这个雷诺应力的顺序你自己再查一下,应该是这样的。
边界条件的设定其实没有很重要,大致差不多就行,比如长度尺度我看有人取水力直径的7%的,turbulentIntensity取到百分之二十的。雷诺应力,严格来说其他分量也应该有值,但我一直就给Rxx Ryy Rzz好像也没啥问题。
这个边界条件只是给一个扰动,真正的湍流应该是靠你场里面的流动产生,所以在边界条件设置上不要过于纠结具体的数值。
-
@cccrrryyy 在open foam中atmBoundaryLayerInletVelocity这个边界是带有风廓线,而InflowGenerator只有扰流没有风廓线,如果这两个边界可以编译到一起用作入口是非常不错。
atmBoundaryLayerInletVelocity这个边界的源码在OpenFOAM-2.4.0\src\turbulenceModels\incompressible\RAS\derivedFvPatchFields\atmBoundaryLayerInletVelocity这个位置,我虽然在用openfoam但是我不懂编程,我解决不了这个问题![替代文字]( 图片地址)
非常感谢老师的解答, -
@dyb 把两个结合起来肯定是有办法的,就相当于自己写一个边界条件了。但是我感觉这样需要的代码工作量可能很大,因为两部分代码里面都包含一些实际上你不想要管的东西,比如什么构造函数啊之类的,还要去好好的想每个类里面哪些数据和函数应该做成protected,哪些做成public之类的,种种问题。除非你是一个编程高手很熟悉这些东西,不然真的可能工作量太大了。实际上对inflowGenerator来说你就是需要给一个速度的profile,我觉得这个profile你按照之前那个post里面的方法去给就好了,根据位置去确定每个cell的速度是多少的时候你用atmBoundaryLayerInletVelocity里面提到的那个公式即可。
-
我把代码移植到OF-上了,并附上了我的算例以供参考:
https://github.com/ZhangYanTJU/boundaryConditions -
@浪迹天大 在 openfoam添加湍流入口方法? 中说:
我把代码移植到OF-上了,并附上了我的算例以供参考:
https://github.com/ZhangYanTJU/boundaryConditions少打了一个字。。。OF-7
-
@cccrrryyy 有个问题想请教下您。我也是做射流的,我是平板声速射流,来流空气为超声速(1800m/s)。这种情况下,应该如何确定积分尺度呢?我的射流孔直径为2mm,试验壁面边界层为1.2mm。按照cfd online的介绍,0.22thicknessBL,和取射流口直径的的10%基本一致,不知道这样取对不对呢?另外我网格最小尺寸0.3mm0.3mm*0.3mm,取0.2mm积分尺度会不会使计算速度很慢呢。ps:最近测过Jiawei Wan博士的TinF边界,2千万网格在720processor上计算,计算速度很慢,所以有此担心。
-
-
这个参数设置,有两种,一种是均匀,一种是自定义风切入口风速,
type decayingTurbulenceInflowGenerator; direction 1; LField nonuniform List<scalar> ( 0.025 0.025 ... 9.75 9.75 ); RField uniform (1 0 0 1 0 1 ); refField nonuniform List<vector> ( ( 2.4495403099953 0 0 ) ( 2.4495403099953 0 0 ) .... ( 5.48123361668986 0 0 ) ( 5.48123361668986 0 0 ) );