MRF源代码的问题



  • 大家好,最近阅读MRF的源代码时碰到了一些问题,其在旋转区域的处理时有一个给旋转坐标系内部的点加入科里奥利力的函数,但是貌似加得不对?按理论来说,如果以旋转坐标系作为参考系,应该在每一点加上科里奥利力和离心力,其数学式如下:
    0_1509596385667_a1a11ca6-d8f5-416e-983b-06b252cc654e-图片.png
    可是该程序中仅仅加入了上式中科里奥利力的一半,即w*v,并且没有加入离心力,这段代码如下:

    void Foam::MRFZone::addCoriolis
    (
        const volVectorField& U,
        volVectorField& ddtU
    ) const
    {
        if (cellZoneID_ == -1)
        {
            return;
        }
    
        const labelList& cells = mesh_.cellZones()[cellZoneID_];
        vectorField& ddtUc = ddtU.primitiveFieldRef();
        const vectorField& Uc = U;
    
        const vector Omega = this->Omega();
    
        forAll(cells, i)
        {
            label celli = cells[i];
            ddtUc[celli] += (Omega ^ Uc[celli]);
        }
    }
    

    网上也有人说其可能有问题,并将这段程序加以修改:

    void Foam::MRFZone::addCoriolis
    (
        const volVectorField& U,
        volVectorField& ddtU
    ) const
    {
        if (cellZoneID_ == -1)
        {
            return;
        }
    
        const labelList& cells = mesh_.cellZones()[cellZoneID_];
        vectorField& ddtUc = ddtU.primitiveFieldRef();
        const vectorField& Uc = U;
    
        const vector Omega = this->Omega();
    
        forAll(cells, i)
        {
            label celli = cells[i];
            ddtUc[celli] += (2.0*Omega ^ Uc[celli])+Omega ^ (Omega ^ (mesh_.C() - origin_));
        }
    }
    

    即改成了公式中的表达形式,附上其网址:http://waynezw0618.blog.163.com/blog/static/9228640920083235430877/ 那么该程序的编写是否真的有误?还是说是我对MRF思想理解出了偏差?



  • 目前对MRF、SRF理论只存在概念上的理解,具体的方程求解还没有时间去研究,不过很感兴趣,从时间来看估计得2018年下半年了,希望其他人能够提供建设性意见!



  • @lllwonderliquid 源代码并没有问题,科氏力和离心力是在旋转坐标系中出现的,在SRF求解器中会完整出现。但是在MRF中,其实是将被输运的速度改为绝对速度了,即:0_1510039003307_MRF.PNG
    详情见OpenFOAM wiki:http://openfoamwiki.net/index.php/See_the_MRF_development



  • @dzw05

    不知道你对MRF这块方程了解的怎么样,我比较感兴趣,能写个比较充分的推导过程么?



  • @李东岳 我也正在学习,其实具体推导过程OpenFOAM wiki上就有 http://openfoamwiki.net/index.php/See_the_MRF_development



  • @dzw05
    哦了,有空整理整理。


登录后回复
 

与 CFD 中国 的连接断开,我们正在尝试重连,请耐心等待