k壁面函数没有考虑一个网格多个边界面?



    • 问题1:of1806的kLowReWallFunction.C在计算壁面上的k值(kw),kw看似是指边界面上的k,但是由于yPlus算的应该是最近的单元体心处的yPlus,所以我猜想这就是算的离壁面第一层的单元的k,只是先存储在边界面上而已,代码如下:
    if (yPlus > yPlusLam_)
            {
                scalar Ck = -0.416;
                scalar Bk = 8.366;
                kw[facei] = Ck/kappa_*log(yPlus) + Bk;
            }
            else
            {
                scalar C = 11.0;
                scalar Cf = (1.0/sqr(yPlus + C) + 2.0*yPlus/pow3(C) - 1.0/sqr(C));
                kw[facei] = 2400.0/sqr(Ceps2_)*Cf;
            }
    
            kw[facei] *= sqr(uTau);
    
    

    然而后面我又发现,k没有像epsilon计算那样通过求和平均,来考虑一个网格多个边界面的情况。那么当一个网格有多个边界面时,对于这个网格,边界面上就会存有不同的k值,这时候如何确定这个单元的k值呢?

    • 问题2:在chalmers大学的学生report里有提到壁面函数计算有两类,一类是计算的是边界面上的值,例如k;一类是计算的体心的值。例如epsilon。而在kEpsilon.C中epsEqn会通过updateCoeffs()来改变第一层单元的epsilon值,这样刚好就用上了epsilon壁面函数所计算的体心值,而并没有发现kEqn通过updateCoeffs()来改变第一层网格单元的k值。这样的话前面求kw的目的是什么呢?


  • 补充一下问题2:在这篇知乎最后一个评论印子斐说:“k(注:应该说的是第一层网格体心的k)比较难给,of和fluent都采用给定tke方程里的production,在求解过程中自动得到k的值”。很疑惑是如何做到的。



  • k壁面函数没有考虑一个网格多个边界面?

    我知道epsilon那面是考虑的,k这面还没研究,不确定,你找到了告诉我

    :haqi:



  • @东岳 好滴



  • (1)对使用k的壁面函数有一个比较疑惑的地方是,kLowReWallFunction.C中是定义updateCoeff()来计算kw的,然而在kEpsilon.C文件里面根本找不到k使用了这个函数来计算kw,也就是根本没计算k。所以设置kqRWallFunction和kLowReWallFunction,看起来都没有区别,因为我暂时没有找到在哪里调用了。。而与之相对的是epsilon和G都使用了updateCoeff来更新离壁面第一层网格中心的值。所以我怀疑离壁面第一层网格的k根本没用壁面函数,而是直接靠解方程计算出来。我的一个猜想是,kEpsilon模型本身是为对数区设计的,使用这个模型,就默认第一层网格中心处于对数区,而在对数区,常规做法是不设置k的,而只计算epsilon和G,并且epsilon和G满足平衡条件,在WALL边界处默认设置了k的法向梯度为零(这似乎就默认了使用kqRWallFuntion)。所以在kEpsilon.C里面并没有调用k的updateCoeff()进行计算,(不知到印博士是不是这个意思),是靠直接求解方程得到k,而只对epsilon和G使用壁面函数。
    (2)油管上的fluidmechanical101对此有些视频,里面有提到k在对数区和粘性区的计算,公式和kLowReWallFunction对应,但是还是那个问题,这个计算是靠updateCoeffs()调用的,而没有发现在其他地方有使用。另外,这个函数计算的值是储存在边界面上的,而非网格中心。epsilon在计算的过程中也放在了边界面上,但用了求和平均,最后还是为了算出第一层网格中心的epsilon值。而kw并没有求和平均,在放到网格中心去,所以现在不清楚把k值放在边界面上的目的是什么。我另一个猜想是,是不是在组成k方程的时候用了边界的值,相当于把这个算出来的值当做边界条件了,可能是放入矩阵系数,也可能是放到等号右边的b去了。



  • @Samuel-Tu k的壁面函数有两种,当使用kqRWallFunction时,在物面采用的是k的梯度为0,即黎曼边界条件,全场可以正常求解,壁面第一层网格的k无需额外处理。当采用kLowReWallFunction时,根据yPlus确定壁面的k值,即为狄利克雷边界,全场仍可以正常求解,壁面第一层网格的k也无需额外处理。但不管哪一种,k的壁面函数均是在solve(kEqn)这步进行的,即求解k方程时加入了k的边界的处理。





  • k的壁面函数就是零法向梯度



  • @东岳 kqRWallFunction是零压力梯度边界,因此壁面第一层网格的k值与壁面上的k相等。kLowReWallFunction为固定值边界条件,利用壁面函数计算壁面上的k值,因此壁面第一层网格的k值与面上k值没有相等的关系。



  • @我是河滩k壁面函数没有考虑一个网格多个边界面? 中说:

    压力

    kqRWallFunction是零梯度,和物面压力法向梯度为零边界条件类似,壁面上的压力等于第一层网格中心的压力。



  • @我是河滩 是的。


Log in to reply
 

CFD中文网 2016 - 2020 | 京ICP备15017992号-2