gauss upwind和gauss linearUpwind grad(U)结果差异大
-
@Samuel-Tu
绝大部分情况下,动量方程对流项离散用 gauss upwind 会导致很大的误差,不建议使用。
gauss linearUpwind grad(U) 算出来有震荡,可以试试对 grad(U) 使用 gradient limiter,应该会有改善。不知道你现在 gradSchemes 是怎么设置的? -
-
@Samuel-Tu fvSchemes 和 fvSolution 贴上来看看
-
@xpqiu
fvSchemes:ddtSchemes { default steadyState; } gradSchemes { default Gauss linear; grad(U) cellLimited leastSquares 1;//还用了cellLimited gauss linear和gauss linear grad(k) cellLimited leastSquares 1; grad(epsilon) cellLimited leastSquares 1; } divSchemes { default none; div(phi,U) Gauss limitedLinear 1;//还用了gauss upwind, gauss linearUpwind grad(U), bounded Gauss linearUpwind grad(U), 发现就gauss upwind和计算结果最吻合,gauss limitedLinear 1吻合的还行,其他的就完全有问题了。。 div(phi,k) bounded Gauss linearUpwind limited;//k和epsilon换了几个格式,发现影响不大 div(phi,epsilon) bounded Gauss linearUpwind limited; div((nuEff*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } wallDist { method meshWave; }
fvSolution:
solvers { p { //solver PCG; //preconditioner DIC; solver GAMG; tolerance 1e-7; relTol 0.1; smoother DICGaussSeidel; } "(U|k|epsilon|omega)" { solver PBiCGStab; preconditioner DILU; //solver smoothSolver; //smoother symGaussSeidel; tolerance 1e-7; relTol 0.001; } } SIMPLE { nNonOrthogonalCorrectors 2; consistent yes; residualControl { p 1e-7; U 1e-7; "(k|epsilon|omega|f|v2)" 1e-7; } } /*relaxationFactors { equations { U 0.9; ".*" 0.8; } }*/ relaxationFactors { fields { p 0.3; } equations { U 0.7; "(k|omega|epsilon).*" 0.7; } }
-
-
-
@Samuel-Tu
算例如果可以分享的话,发给我玩玩? -
@xpqiu
链接:https://pan.baidu.com/s/1Ts5W8eHIITgI4bjOOHyS6g
提取码:kk6h
或者用这个百度网盘的,我用的simpleFoam,这里面多加了一个50时间步的计算结果,这是用gauss linear计算比较稳定后的结果,方便改了div schemes再计算,能更快的得到稳定后的结果。。 -
@Samuel-Tu
结果怎么对比呢,你有后处理脚本吗? -
@xpqiu 我是用postProcess -func wallShearStress 和 writeCellCentres把roof这个patch 输出出来,再在paraview里面用calculater: 摩擦速度=sqrt(mag(wallShearStress)),最后在excel里画的roof里的每个面单元Cx(横坐标)和对应的摩擦速度的曲线。。我研究一下怎么整合出一个后处理脚本。。主要是postProcess似乎没有sqrt这个命令,如果有就可以不用paraview了。。
-
@Samuel-Tu 明白了,我算几个看看
-
这个是 div(phi,U) 我用 Gauss linearUpwind 的结果,看起来跟 fluent 的比较接近。
-
@Samuel-Tu
你这个算例设置得不太合理的地方有好几个,我没有一个一个去考察每个因素的影响,只是直接改成了我认为合理的设置。我把我改过的文件打包了,如下:
OFPlate0.zip这个网格咋一看,直觉就是边界层附近网格太粗了,看了一下最后一步的 yPlus分布,只看 roof 这个面,
果然,最小都300 多了。你用的湍流模型是 rke,这个是合理的选择,但是这个模型最好把 yPlus 控制在 30-100 范围内。
最后,我把我这边 gauss upwind 和 gauss linearUpwind 的结果对比放上来,
虽然看起来可能还是 upwind 的结果在中间这一段跟文献的更接近,但是左边这一段实际上这两个结果都与文献值有明显的偏差。我觉得你还是先把网格改得合理之后再算算看,应该会有改进的。
-
@Samuel-Tu
论文描述的最小网格尺寸,可能是除了 prism layer 以外区域的最小尺寸啊,他有没有提他的prism layer是怎么生成的,first layer thickness,expansion ratio,number of layers 这些?
11/35