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. 讨论 Fluent计算效率优于OpenFOAM

讨论 Fluent计算效率优于OpenFOAM

已定时 已固定 已锁定 已移动 OpenFOAM
30 帖子 9 发布者 33.2k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • F 离线
    F 离线
    Foamer24
    写于2019年5月24日 10:48 最后由 编辑
    #9

    很开心看到大家这么多的观点,下面也说说我最近的%(#ff0000)[个人]看法:laile:

    • 不管fluent还是OpenFOAM都只是工具,更关键的是所关注的问题及其内在的科学规律、机理。资深级CFDer应该会有判断garbage result的能力,会对结果有个大体的预期,对意想不到的结果也有分析判断的能力,甚至有的可以根据流场看出用什么软件/模型求解的。fluent设计目的是提供一个a black box solver that is robust,OpenFOAM则可以自编代码,处于食物链的上一级,更高一级的就是全部自编的in-house代码了。希望以后可以看到fluent的UDF提供更多像OpenFOAM的可操作空间。

    • fluent的非定常计算采用implicit,隐式的求解和时间无关,所以时间步长相比显式要大,不过隐式也存在迭代收敛的问题,这样的问题在OpenFOAM中也会出现,即not converged within 20 iterations。求解方法上用隐式或显式消耗的时间理论上无法比较,工程上一般隐式快一点。在fluent中用隐式进行定常计算,在计算稳定后,设置库郎数100也是可以的,因为定常的最终结果是一定的。但是非定常就不行了,这会牵涉到时间精度的问题。

    • 作为新手,我学习OpenFOAM的过程是先将OpenFOAM用成fluent,然后再准备修改OpenFOAM得到属于自己的fluent。:laile: 不知道这样合不合理,主要是直接看代码,难以短期内有进展,很多情况下要求的是做错了也要有个错的结果。。。

    • 回到标题,在计算三维LES时,相同网格在fluent里面计算的时间步长是10^-6,在OpenFOAM中用了runTimeModifiable 和 adjustTimeStep变为了10^-9~10^-8,不用就报错。不知道是不是就是大家所说的AMG求解器的原因。

    3f33834a-b8a7-4884-ac22-0d49bae68ef5-image.png

    1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    在 2019年5月24日 14:11 中回复了 Foamer24 最后由 编辑
    #10

    @Foamer24

    OF想赶上商软的鲁棒性和效率恐怕很难。一方面,商软有很多加速的“黑科技”,而这些“黑科技”在用户手册中都不会提及;另一方面,商软中的求解策略都经过优化,对CFD理解不深的人也可以轻松入手使用,而OpenFOAM中的求解参数自由度较大,对于CFD新手来说不当的参数设置显然会导致求解速度的降低。

    至于你的问题,在网格质量不好的情况,首先应当考虑提高网格质量,尽量避免出现歪斜率高的网格和非正交网格。因为这些网格会影响对流项和扩散项的离散精度,从而影响矩阵迭代求解的收敛速度。

    F 1 条回复 最后回复 2019年5月25日 04:23
  • W 离线
    W 离线
    wwzhao 超神
    在 2019年5月24日 14:13 中回复了 cccrrryyy 最后由 编辑
    #11

    @东岳 在 讨论 Fluent计算效率优于OpenFOAM 中说:

    具体怎么样,我不确定啊我是瞎说的。现在我说点啥都可能被人要求道歉..

    :xinlei:

    树大招风啊,李博顶住~

    1 条回复 最后回复
  • F 离线
    F 离线
    Foamer24
    在 2019年5月25日 04:23 中回复了 wwzhao 最后由 编辑
    #12

    @东岳 @wwzhao @cccrrryyy 您好!今天看到cfd-online上的链接:https://www.cfd-online.com/Forums/openfoam-solving/123586-simulations-large-time-steps-high-cfl.html 。里面讨论了 simulations with large time steps (high CFL),帖子比较老了,说原因是OPENFOAM中没有像fluent那样Pressure-velocity coupling的coupled solver。粗略的看了下文献《A fully coupled OpenFOAM® solver for transient incompressible turbulent flows in ALE formulation》,里面说Implicit + coupling 效率要高。

    F W C 3 条回复 最后回复 2019年5月25日 04:36
  • F 离线
    F 离线
    Foamer24
    在 2019年5月25日 04:36 中回复了 Foamer24 最后由 编辑
    #13

    试了下同样的算例用Fluent 19计算,真的是黑匣子。。。时间步长0.2s都不发散。要是能借鉴一些方法到OpenFOAM里面就好了 :mihu:

    1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    在 2019年5月25日 05:01 中回复了 Foamer24 最后由 编辑
    #14

    @Foamer24

    首先,我不认为coupled solver可以允许更大的时间步长。

    其次,从理论上说SIMPLE算法不适用于瞬态问题,Fluent里面使用了Transient SIMPLE算法来计算瞬态问题,时间步长取很大也可以算下去,但是很显然时间项的精度会很低,算出来的东西不可信。

    1 条回复 最后回复
  • C 离线
    C 离线
    cccrrryyy 超神
    在 2019年5月25日 08:31 中回复了 Foamer24 最后由 编辑
    #15

    @Foamer24 我记得在哪里看到过OpenFOAM的PIMPLE算法原则上是允许大时间步的,它设计这个算法好像就是为了绕过CFL数一定要小于1的情况(印象中是有个最大数字的,好像是<3~5)。回到你前面讲的LES在fluent里面时间步长是10^-6,在OpenFOAM里面就要更小。这一点我有体会,就是感觉OpenFOAM首先是自适应时间步不好用。我现在都用给定的时间步,数值上确实比fluent里面要用的小一点,但不像你在数量级上差这么多,我一般大概用到fluent时间步的八成左右。

    我计算的时候会检测最大和平均CFL数,有时候都跳到1点多了,但感觉好像也没啥问题- -我也是LES,然后速度场都用PBiCGStab加DILU,压力用PCG加DIC,不知道你用的是什么,可以分享一下么?你这个时间步我很好奇啊,这么小感觉算起来要等死人的- -

    学OpenFOAM光看代码真的不行,随便找个例子做一下学起来更快(比如加个标量方程啊之类的)。当然了,最重要的就是你说的对物理问题的理解。我还想加上一点,就是对数值算法的理解。我学什么numerical diffusion, dispersion这种就感觉学的艰难,甚至到现在都不敢说完全懂。

    I don't want to survive, I want to thrive.

    F 3 条回复 最后回复 2019年5月25日 09:42
  • F 离线
    F 离线
    Foamer24
    在 2019年5月25日 09:42 中回复了 cccrrryyy 最后由 编辑
    #16

    @wwzhao @cccrrryyy 您好!我还处于入门阶段,一边用OpenFOAM,一边学OpenFOAMwiki上的3weeks 和编程查询,我的fvSchemes和fvSolution文件如下,目前调试经验是在fvSchemes中设置fluxScheme Tadmor;算得比设置Kurganov;要快。我后面再试下各位的设置,再过来交流。:laile:

    /*--------------------------------*- C++ -*----------------------------------*\
      =========                 |
      \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
       \\    /   O peration     | Website:  https://openfoam.org
        \\  /    A nd           | Version:  6
         \\/     M anipulation  |
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       dictionary;
        location    "system";
        object      fvSchemes;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    fluxScheme          Tadmor;// Kurganov;
    
    ddtSchemes
    {
        default         Euler;
    }
    
    gradSchemes
    {
        grad(U)         cellLimited Gauss linear 1;
        grad(nuTilda)   cellLimited Gauss linear 1;
        grad(e)   cellLimited Gauss linear 1;
    }
    
    divSchemes
    {
        default         none;
        div(tauMC)      Gauss linear;
        div(phi,nuTilda) Gauss linearUpwind limited;
    }
    
    
    
    laplacianSchemes
    {
        default         Gauss linear corrected;
    }
    
    interpolationSchemes
    {
        default         linear;
    }
    
    snGradSchemes
    {
        default         corrected;
    }
    
    wallDist
    {
        method meshWave;
    }
    
    
    // ************************************************************************* //
    
    
    /*--------------------------------*- C++ -*----------------------------------*\
      =========                 |
      \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
       \\    /   O peration     | Website:  https://openfoam.org
        \\  /    A nd           | Version:  6
         \\/     M anipulation  |
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       dictionary;
        location    "system";
        object      fvSolution;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    solvers
    {
        p
        {
            solver          GAMG;
            tolerance       1e-7;
            relTol          0.01;
            smoother        GaussSeidel;
            cacheAgglomeration off;
            nCellsInCoarsestLevel 20;
            agglomerator    faceAreaPair;
            mergeLevels     1;
        }
    
        Phi
        {
            $p;
        }
    
    
        pFinal
        {
            $p;
            tolerance       1e-06;
            relTol          0;
        }
    
        "(k|omega|epsilon|nuTilda|U|R|v2|f|kt|kl|e)"    
        {
            solver          smoothSolver;
            smoother        GaussSeidel;
            nSweeps         1;
            tolerance       1e-20;
            relTol          0.01;
        }
    
    
      "(rho|rhoU|rhoE)"
        {
            solver          diagonal;
        }
    
    
    }
    
    // ************************************************************************* //
    
    
    1 条回复 最后回复
  • F 离线
    F 离线
    Foamer24
    在 2019年5月25日 11:45 中回复了 cccrrryyy 最后由 编辑
    #17

    @cccrrryyy 您好!请问你的时间步长具体值一般是多少?还有就是网格边界层高度是多高?我的分别是10e-8s和0.0001m。:zoule: 算的确实慢,难以接受

    C 1 条回复 最后回复 2019年5月26日 13:57
  • F 离线
    F 离线
    Foamer24
    在 2019年5月25日 13:12 中回复了 cccrrryyy 最后由 编辑
    #18

    @cccrrryyy 算例远场速度是72m/s,调节网格后时间步长提高到了3×10^-8,使用pointwise监测最窄边的长度为2.8×10^-5,使用这些值计算的库朗数是0.077,用rhoCentralFoam计算过程中显示的最大库朗数确是0.53,有点不理解,不知道这个最大库朗数点的位置在哪。:chouchou:

    Mean and max Courant Numbers = 0.001871585 0.5321452
    
    W 1 条回复 最后回复 2019年5月25日 14:01
  • W 离线
    W 离线
    wwzhao 超神
    在 2019年5月25日 14:01 中回复了 Foamer24 最后由 编辑
    #19

    @Foamer24

    远场速度不是最大速度,所以一般实际库朗数比计算得到的要大。

    F 1 条回复 最后回复 2019年5月25日 15:32
  • F 离线
    F 离线
    Foamer24
    在 2019年5月25日 15:32 中回复了 wwzhao 最后由 编辑
    #20

    @wwzhao :ok: 谢谢,库郎数中的速度指的是特征速度,就用了远场速度,不过用您说的最大速度来预估更合理。还看到东岳老师分享的链接,介绍三维非结构网格的库郎数计算,这个公式中的最小体积可以用画网格软件得到,但不知道通量该如何取值。

    W 1 条回复 最后回复 2019年5月25日 15:46
  • W 离线
    W 离线
    wwzhao 超神
    在 2019年5月25日 15:46 中回复了 Foamer24 最后由 编辑
    #21

    @Foamer24

    一方面,非结构网格的库朗数是通过网格体积和通量(与速度有关)计算的,而一般我们计算库朗数的公式是最简单的一维情况,这两种情况本身就有区别,参考这个链接。

    另一方面,有些网格的当地局部速度比特征速度大得多,所以这些网格的库朗数比用远场速度估算得到的库朗数要大。

    1 条回复 最后回复
  • 李 离线
    李 离线
    李东岳 管理员
    写于2019年5月25日 23:23 最后由 编辑
    #22

    @Foamer24 在 讨论 Fluent计算效率优于OpenFOAM 中说:

    Mean and max Courant Numbers = 0.001871585 0.5321452

    你努力的方向不应该去找库郎数,你的算例只是发散了,库郎数只是表现,不是根本。建议找找发散的原因去去根 :ok2:

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

    1 条回复 最后回复
  • C 离线
    C 离线
    cccrrryyy 超神
    在 2019年5月26日 13:57 中回复了 Foamer24 最后由 编辑
    #23

    @Foamer24 感谢分享!我没用过fluxScheme,所以这里什么比较好不太清楚。时间步我一般刚开始都是1e-06,之后根据最大CFL数再去调。我个人的感觉是如果需要调到5e-07以下我就会比较注意了,这种量级感觉算的相当慢了。我的网格有内流和外流两部分,内流的话边界层在0.1mm上下,和你差不多。这个就用雷诺数估算了一下。外流(射流)的话就没care边界层了。

    我觉得时间步的绝对大小参考意义比较小,毕竟也看你的硬件好坏。可能单个时间步需要的时间(我的大概在一分多钟)和总时间步数(我的大概50,000左右)比较有比较价值。另外,我的ddtScheme一般用backward,因为是二阶的。对流项我也一般不用迎风格式,迎风格式对LES好像不太好。线性求解器里面我的压力方程一直是用PCG在解,没用GAMG。这个点其实我很关心,就是PCG和GAMG到底孰优孰劣,希望有经验的来探讨下!

    你这个同样的网格用Fluent只需要1e-06这种量级的时间步吗?这个感觉不科学啊,同样的网格怎么会差这么多呢。

    I don't want to survive, I want to thrive.

    F 1 条回复 最后回复 2019年5月26日 16:10
  • F 离线
    F 离线
    Foamer24
    在 2019年5月26日 16:10 中回复了 cccrrryyy 最后由 编辑
    #24

    @cccrrryyy fluent的网格边界层更密,为1微米,满足y+小于1。:wanan:

    C 1 条回复 最后回复 2019年5月27日 06:24
  • C 离线
    C 离线
    cccrrryyy 超神
    在 2019年5月27日 06:24 中回复了 Foamer24 最后由 编辑
    #25

    @Foamer24 意思是Fluent的网格更密然后还能用更大的时间步?

    I don't want to survive, I want to thrive.

    F 1 条回复 最后回复 2019年5月28日 03:56
  • F 离线
    F 离线
    Foamer24
    在 2019年5月28日 03:56 中回复了 cccrrryyy 最后由 编辑
    #26

    @cccrrryyy 是的:zoule:

    1 条回复 最后回复
  • 李 离线
    李 离线
    李东岳 管理员
    写于2019年5月28日 06:29 最后由 编辑
    #27

    你需要深挖一下

    给你举个例子,下面是运算的一个log文件,时间步长非常小,2e-5,算2天之后,结果完全可以是正确的,但我觉得有问题

    捕获.JPG

    在自适应调节时间步长的情况下,时间步长会自动跳转满足CFL标准。其实对于我这个,如果在代码里加上几行,输出Ur的话,会发现下图中全场计算域中,就这么一个地方Ur的值特别大,导致局部库郎数过大。

    捕获2.JPG

    我建议你看看你的算例是不是也是这样,我怀疑跟我差不多

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

    F N 2 条回复 最后回复 2019年5月28日 06:58
  • F 离线
    F 离线
    Foamer24
    在 2019年5月28日 06:58 中回复了 李东岳 最后由 编辑
    #28

    @东岳 在 讨论 Fluent计算效率优于OpenFOAM 中说:

    Ur

    您好!之前测试的时候,壁面附近网格越密,网格高度变低、长宽比也变大,要求的时间步长deltaT就越小。不知道您说的Ur是什么定义?不知道在壁面附近有没有特殊处理,增加它的时间步长。:laile:

    李 1 条回复 最后回复 2019年5月28日 11:13
2019年5月22日 09:48

18/30

2019年5月25日 13:12

未读 12
2019年6月14日 12:44
  • 登录

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