Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. MRF源代码的问题

MRF源代码的问题

已定时 已固定 已锁定 已移动 OpenFOAM
6 帖子 3 发布者 6.2k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • L 离线
    L 离线
    lllwonderliquid
    写于 最后由 编辑
    #1

    大家好,最近阅读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思想理解出了偏差?

    D 1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

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

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • D 离线
    D 离线
    dzw05 超神
    在 中回复了 lllwonderliquid 最后由 编辑
    #3

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

    自主匠心,普惠仿真。

    李东岳李 1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 dzw05 最后由 编辑
    #4

    @dzw05

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

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    D 1 条回复 最后回复
  • D 离线
    D 离线
    dzw05 超神
    在 中回复了 李东岳 最后由 编辑
    #5

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

    自主匠心,普惠仿真。

    李东岳李 1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 dzw05 最后由 编辑
    #6

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

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]