LES直流槽道边界层模拟,如何得到正则化速度u+以及正则化坐标y+?
-
以OpenFOAM自带的channel395算例为例,我这里有4种计算$u_{\tau}$的方法。
方法一:
$$ u_{\tau } = {\rm Re}_{\tau }\nu/h=395*2e-5/1 $$
得$u_{\tau } = 0.0079000$。
方法二:
过计算出来的速度-高度曲线,实际地进行计算。$$ {u_\tau } = \sqrt {\nu {{\left. {\frac{{du}}{{dy}}} \right|}_{y = 0}}} = \sqrt {\nu {\frac{{u_1}}{{y_1}}}} $$
其中${u_1}$和${y_1}$分别是第一个输出点的流向速度和到壁面距离。
得到$u_{\tau } = 0.0069133$。方法三:
通过paraview的filter - integrate variables - 查看 cellData,得到wallShearStress的和以及面积Area,计算固壁面上的wallShearStress平均值,再使用$$ {u_\tau } = \sqrt {\frac{{{\tau _w}}}{\rho }} $$
计算摩擦速度$ {u_\tau }$。注意不可压缩求解器中没有密度,则认为$\rho=1$。
结果是$u_{\tau } = 0.0066952$。方法四:
在完全发展的槽道流中$$ \frac{{\partial p}}{{\partial x}} \times h = {\tau _w} $$
也就是 压力梯度 乘以 槽道半高 等于 壁面摩擦应力。给定平均速度的情况下,OpenFOAM会调节压力梯度使得平均速度达到设定值。在channel395的算例中到计算快结束时候,选择了某一时刻的压力梯度$\frac{{\partial p}}{{\partial x}} = 4.44604e-05$。代入计算,
得到$u_{\tau } = 0.0066678$。
你看这种方式计算出来的$u_{\tau }$跟你的区别大么
可以看到方法一是一种结果,方法二、三、四的结果很接近。
现在的问题就是实际计算出来的摩擦速度和由${\rm Re}_{\tau}$给出的摩擦速度不一样,但方法一的结果才是正确的。自带的channel395也对不上么?
channel395算例的结果
方法一的摩擦速度归一化结果是方法二(方法三和四也是这样子的图)摩擦速度归一化结果是
channel1000的结果在一楼。
现在感觉是槽道流动还是没算对。 -
channel395的平均yPlus是1.5910。channel1000的平均yPlus是0.8471。
channel395的fvScheme格式是下面这个,channel1000也没改fvScheme。FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default backward; } gradSchemes { default Gauss linear; } divSchemes { default none; div(phi,U) Gauss linear; div(phi,k) Gauss limitedLinear 1; div(phi,B) Gauss limitedLinear 1; div(B) Gauss linear; div(phi,nuTilda) Gauss limitedLinear 1; div((nuEff*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } wallDist { method meshWave; }
-
对,我最开始做槽道流算例的时候,用的他的初始化流场的方法,不然一直算的都是层流。不过chanel1000的这个不用特地初始化也可以。
下面这个是我的channel1000的算例,LES,就是在channel395的基础上改的,OpenFOAM版本是v2012。Allrun脚本可以直接运行,画图用matlab文件夹里面的boundary_layer_profile_2.m就行,改一下要画哪个时刻的就行。
各位老师同学有兴趣可以算一算,看看是哪里出问题了。帮帮我吧🙏
https://jbox.sjtu.edu.cn/l/L1Asg4 (提取码:1234) -
@学流体的小明 你好,这个下载链接需要校内VPN,外校无法下载,想问下能提供个外校人员可下载链接吗?
对,我最开始做槽道流算例的时候,用的他的初始化流场的方法,不然一直算的都是层流。不过chanel1000的这个不用特地初始化也可以。
下面这个是我的channel1000的算例,LES,就是在channel395的基础上改的,OpenFOAM版本是v2012。Allrun脚本可以直接运行,画图用matlab文件夹里面的boundary_layer_profile_2.m就行,改一下要画哪个时刻的就行。
各位老师同学有兴趣可以算一算,看看是哪里出问题了。帮帮我吧🙏
https://jbox.sjtu.edu.cn/l/L1Asg4 (提取码:1234) -
@coolhhh @李东岳
昨天仔细读了一下下面的这个文章,作者对OpenFOAM计算LES槽道进行了比较系统的分析。我发现他的图也是,只有最细的那套网格才算出了非常好的速度剖面,比较粗的两套网格都没算好,形状也和我的问题一样。
这篇文章还是在https://www.cfd-china.com/topic/2121/q-dns计算槽道流遇到了一些问题-求大神们指点看到的。之前读过,但是没仔细读😂。然后就浪费了好多好多时间。
确实是网格不够细的问题。https://www.sciencedirect.com/science/article/pii/S0021999117304059?via%3Dihub
-
@hongjiewang
Um是通过在动量方程中直接添加源项实现的,在v2012版本中是:/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v2012 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object fvOptions; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // momentumSource { type meanVelocityForce; selectionMode all; fields (U); Ubar (0.4 0 0); } // ************************************************************************* //
程序会自动调整压力梯度以达到Ubar的预设值。
之后我是打算用给定的动量方程源项,相当于给定$\partial p / \partial x$,通过vectorSemiImplicitSource实现。也是在fvOptions中调用。4800是随便给的,和上面0.4m/s的平均速度没有联系哈。$\partial p / \partial x$和$\tau_w$的关系见方法四。
有一些参考:
http://xiaopingqiu.github.io/2016/03/20/fvOptions2/
https://caefn.com/openfoam/fvoptions-semiimplicitsourcemomentumSource { type vectorSemiImplicitSource; active on; vectorSemiImplicitSourceCoeffs { selectionMode all; volumeMode specific; //absolute injectionRateSuSp { U ( (4800 0 0) 0); //partial p / partial x } } }