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. 关于Open Foam9的RheoTool流变工具包模拟毫米量级的几何模型不收敛问题

关于Open Foam9的RheoTool流变工具包模拟毫米量级的几何模型不收敛问题

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

    我在使用RheoTool流变工具包,模拟一个二维方腔流动时,发现入口速度或流量稍微大一点,会导致不收敛。几何长度为36mm,宽度为4mm,矩形空腔边长为4mm。生成的网格均为正方形网格。0文件夹的U设置如下
    ba7090d3-d863-48e5-92ce-8b8db7d36dec-image.png
    模型的物性参数设置如下
    9c68fcfe-517f-4d58-85e1-32c5ef4ee66f-image.png
    fvSchemes设置如下
    80956ea6-cb35-4bf0-91dc-ccba688da96a-image.png
    fvSolution设置如下:xiexie:
    da82c7e2-c20d-498c-a9ed-aa10b4476727-image.png
    ControDict文件设置如下
    3d729434-bf77-46d2-8e99-4abb6d0a9b4c-image.png
    入口速度给定0.04m/s,或者流量1.68e-7m^3/s,是合理的,实验中这样的速度是可以实现的,论文中,也是可以查到的,但是我设置的参数,就是不收敛,不知道为什么?有没有大佬指教指教,谢谢::xiexie:

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

    粘弹性流体那面我没有亲自算过,看过的一写论文表示那面的tau方程收敛性确实是非常差的。我看你用的是FENE-P,能换个粘痰的模型试试么。

    另外你那个SIMPLE里面,变量的松弛因子都比较大。改小一下看看。

    网格没问题,看了就是纯算法导致的发散。


    不对,你这个比较混乱。如果是SIMPLE,就是稳态,为什么ddt还是欧拉?其他变量的残差也是按照瞬态设置的。

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

    1 条回复 最后回复
  • T 离线
    T 离线
    tiankai
    写于 最后由 编辑
    #3

    补充网格信息
    784145fa-fce7-40b4-bc92-a11e3ac1f97c-94b0dda5ba067c81be963a19eb563c8.png

    1 条回复 最后回复
  • T 离线
    T 离线
    tiankai
    写于 最后由 编辑
    #4

    @李东岳 在 关于Open Foam9的RheoTool流变工具包模拟毫米量级的几何模型不收敛问题 中说:

    粘弹性流体那面我没有亲自算过,看过的一写论文表示那面的tau方程收敛性确实是非常差的。我看你用的是FENE-P,能换个粘痰的模型试试么

    之前都换过,粘弹性的包括Oldroyd-B,还有Carreau-Yasuda都试过,都不收敛,感觉好像是我的问题

    T 1 条回复 最后回复
  • T 离线
    T 离线
    tiankai
    写于 最后由 李东岳 编辑
    #5

    这是rheoFoam的说明

    3de7c461-6e4a-4944-be8b-ac74b5ae05a2-image.png

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

    你看一下你的求解器源代码是瞬态算法还是稳态算法。从你的fvSolution以及fvScheme来看,两者混到一起了。

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

    T 1 条回复 最后回复
  • T 离线
    T 离线
    tiankai
    在 中回复了 李东岳 最后由 李东岳 编辑
    #7

    @李东岳 在 关于Open Foam9的RheoTool流变工具包模拟毫米量级的几何模型不收敛问题 中说:

    你看一下你的求解器源代码是瞬态算法还是稳态算法。从你的fvSolution以及fvScheme来看,两者混到一起了。

    我查阅了一下,在rheoTool算例文件96015200-4fd3-4929-baf1-2e3ca1b8e7f9-image.png
    中入口速度是和时间有关的
    a49e85be-6ef0-4ba1-aa86-80288f19cddc-image.png
    这应该是一个瞬态的算例,但是在fvSolution中,也有SImple

    SIMPLE
    {
        nInIter          1;
        nNonOrthogonalCorrectors 0;
        pRefCell        0;
        pRefValue       0;
    
        residualControl
        {
            
        }
    }
    
    relaxationFactors
    {
         fields
          {     
            p 1;
          }
    
         equations
          { 
            U 1;
            tau 1;
            theta 1;
          }
    }
    

    此外我将Simple改为PISO,运行的时候会报错,提示fvsolution文件中无SIMPLE。我查了一下用户文档,发现关于fvSolution有这样一段描述
    3afcce8d-9501-4a23-914e-61bcbea02099-image.png
    46bcdd6f-0757-4b95-b4c5-a3c301c2207e-image.png
    这又表明当SIMPLE存在时,确实是稳态的情况,尽管rheoFoam是瞬态求解器。现在我搞不清楚到底该怎么设置。从所有的算例文件夹下,无论是瞬态还是稳态都是有SIMPLE这个字段的。
    另外,在用户指导最后一页看到这样一句话
    09b126b0-6fd6-4ba9-8512-b2ce5d6e50c2-image.png
    说是ηp>ηs是,尽可能将耦合设置为 none,按照他说的设置了,仍然不起作用。
    总之,试了很多方法仍然不收敛,期待大佬帮忙解决

    T 1 条回复 最后回复
  • T 离线
    T 离线
    tiankai
    在 中回复了 tiankai 最后由 李东岳 编辑
    #8

    @tiankai @李东岳
    补充一下:和李老师讲的一样,初步判断是对流项的数值格式不稳定导致的。

    打开FENE-P的算例文件夹中,模拟了一个宽度为1m的槽道流,入口速度指定为1m/s。并且在该算例中,忽略掉了对流项

    divSchemes
    {
        default                  none;
        div(tau)                 Gauss linear; 
        div(grad(U))             Gauss linear;
        div(phi,U)               GaussDefCmpw none;     
        div(phi,theta)           GaussDefCmpw cubista;
        div(phi,1|f)             GaussDefCmpw cubista;
        div(phi,A)               GaussDefCmpw cubista;
        div(phi,tau)             GaussDefCmpw cubista;
        div(phi,C)               GaussDefCmpw cubista;
    }
    

    执行之后,发现是收敛的。

    随后我将入口速度改为了100m/s,1000m/s,执行之后不收敛。
    然后修改对流项格式 div(phi,U) GaussDefCmpw cubista; 运行之后收敛。不加对流项不收敛,添加上对流项反而收敛,有点意思?

    最后,我将槽道的宽度设置为1mm,入口速度设为1000mm/s(也就是将通道尺度缩小1000倍,入口速度缩小1000倍),同样不忽略对流项,运行之后,发现不收敛。在对流项几种格式都进行了尝试后,还是不收敛。难道是对流项的数值格式有bug?
    a5840669-d849-4195-b3b3-0c36bfa850eb-image.png
    希望同感兴趣的同行一块讨论:tiankai0721@163.com

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

    你这个排版最好处理处理。排版不好看起来比较乱。我一会看看你写的,信息量比较大

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

    T 1 条回复 最后回复
  • T 离线
    T 离线
    tiankai
    在 中回复了 李东岳 最后由 编辑
    #10

    @李东岳 好嘞,谢谢李老师,我这两天,弄一下排版

    1 条回复 最后回复
  • T 离线
    T 离线
    tiankai
    在 中回复了 tiankai 最后由 李东岳 编辑
    #11

    尝试了粘弹性的包括Oldroyd-B,发现是收敛的

    1 条回复 最后回复
  • T 离线
    T 离线
    tiankai
    写于 最后由 李东岳 编辑
    #12

    @李东岳 李老师,这是对上面的内容重新梳理,谢谢您啦

    我使用rheoTool工具包,模拟了几何长度为36mm,宽度为4mm,在通道的两侧有4mm×4mm方腔的二维流动;模型为FENE-P非牛顿模型。我设置入口流量为3.62e-7m/s(或入口速度0.008m/s),使用了自适应时间步长,最大Co数设置为1。运行后发现不收敛。求解器为rheoFoam瞬态求解器。

    针对不收敛的情况进行了尝试
    1、在fvschemes文件中,时间使用了Euler,fvsolution中算法是SIMPLE。这里需要说明的是在rheoTool工具包中,SIMPLE是瞬态的。因为在rheoTool中,所有的算例的fvsolution文件中,均有SIMPLE字段。因为在算例文件中,大量的入口条件是和时间相关的,这种流动问题显然不可能是稳态流动。(我在将SIMPLE修改为PISO报错了,提示不存在SIMPLE字段)

    下面是用户手册的一段关于fvsolution的说明
    手册中说,SIMPLE确实是稳态的算法,但是rheoFoam默认是瞬态求解器,只要在ddtSchemes中设置为空便是稳态求解器。另外手册中是推荐使用瞬态算法的,因为这样会使矩阵尽可能的对角占优,数值格式更稳定一点。
    21bff237-40ca-4dc0-bcea-aa2132ff31f9-image.png

    d58869fd-7b51-47be-b389-5f8b1bc3a481-image.png

    844537aa-9271-46a1-91e3-2070c0c84256-image.png

    2、另外我将松弛因子改小也不能保证收敛。

    3、在用户指导最后一页看到这样一句话,说是ηp>ηs是,尽可能将耦合设置为 none,按照他说的设置了,仍然不起作用。
    71b464fd-3daf-4213-b9a2-629eaac8e4d3-image.png

    4、当我将模型改为Oldroyd-B时,发现算例可以收敛,所以肯定是数值格式的问题。

    5、所以我又运行了FENE-P的算例文件:模拟了一个宽度为1m的槽道流,入口速度指定为1m/s。运行之后发现可以收敛。于是我将入口速度改为100m/s,1000m/s,运行之后就发现不收敛了。通过查看fvSchemes发现,对流项的导数设置为空,于是我修改对流项的格式为div(phi,U) GaussDefCmpw cubista; ,运行之后便收敛了。(这里忽略对流项发散,添加对流项收敛,有点意思?)

    最后,我将槽道的宽度设置为1mm,入口速度设为1000mm/s(也就是将通道尺度缩小1000倍,入口速度缩小1000倍),同样不忽略对流项,运行之后,发现不收敛。下图是对流项几种可供下选择的数值格式。在对流项几种格式都进行了尝试后,还是不收敛。难道是对流项的数值格式有bug?
    1133f606-52ce-42fd-a0d1-5d19ba1ccdff-image.png

    总结:通过一系列的尝试,终于找到了原因。发现就是FENE-P的数值格式不稳定导致的,大概率是对流项的原因。也就是说FENE-P在毫米尺度上对流项会导致数值不稳定,从而发散。但是我看到一篇关于FENE-P模型的文章(10.1103/PhysRevFluids.6.033304),论文中使用的也是mm量级的几何模型,却可以达到收敛。请求大佬帮忙解决,或者感兴趣的同行一块交流:tiankai0721@163.com.

    下面是我的各个文件的设置情况

    0文件夹设置如下

    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        format      ascii;
        class       volVectorField;
        location    "0";
        object      U;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    dimensions      [0 1 -1 0 0 0 0];
    
    internalField   uniform (0 0 0);
    
    boundaryField
    {
        INLET
        { type                   flowRateInletVelocity;
          volumetricFlowRate     3.36e-7; 
          value uniform     (0 0 0); //猜测初始速度
        }
        
        OUTLET
        {
            type            zeroGradient;
        }
        LOWERWALL
        {
            type            fixedValue;
            value           uniform (0 0 0);
        }
        UPPERWALL
        {
            type            fixedValue;
            value           uniform (0 0 0);
        }
        frontAndBack
        {
            type            empty;
        }
    }
    // ************************************************************************* //
    
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        format      ascii;
        class       volSymmTensorField;
        object      tau;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    dimensions      [1 -1 -2 0 0 0 0];
    
    internalField   uniform (0 0 0 0 0 0);
    
    boundaryField
    {
        INLET
        {
            type            fixedValue;
            value           uniform (0 0 0 0 0 0);
        }
        
        OUTLET
        {
            type            zeroGradient;
        }
     
        LOWERWALL
        {
            type            linearExtrapolation;
            value           uniform (0 0 0 0 0 0);
        }
        
        UPPERWALL
        {
            type            linearExtrapolation;
            value           uniform (0 0 0 0 0 0);
        }
    
        frontAndBack
        {
            type             empty;
        }
    }
    
    // ************************************************************************* //
    
    FoamFile
    {
        format      ascii;
        class       volScalarField;
        object      p;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    dimensions      [0 2 -2 0 0 0 0];
    
    internalField   uniform 0;
    
    boundaryField
    {
        INLET
        {
            type            zeroGradient;
        }
        
        OUTLET
        {
              type            fixedValue;
              value           uniform 0;
        }
     
        LOWERWALL
        {
             type            zeroGradient;
         
        }
        UPPERWALL
        {
             type            zeroGradient;
         
        }
        
        frontAndBack
        {
            type             empty;
        }
    }
    
    物性参数设置如下
    
    FoamFile
    {
        format      ascii;
        class       dictionary;
        object      constitutiveProperties;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    
    parameters
    {                
                    type             FENE-P;
    
                    rho              rho [1 -3 0 0 0 0 0] 1.;
                    etaS             etaS [1 -1 -1 0 0 0 0] .01;
                    etaP             etaP [1 -1 -1 0 0 0 0] .99;             
                    lambda           lambda [0 0 1 0 0 0 0] 0.5;
                    L2               L2 [0 0 0 0 0 0 0] 100;
                    solveInTau       false;                
    
                    stabilization    coupling;                    
    }
    
    passiveScalarProperties
    {
                    solvePassiveScalar   no;
                    D                    D [ 0 2 -1 0 0 0 0 ] 1e-9; 
    }
    
    // ************************************************************************* //
    
    
    fvSchemes文件如下
    
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        format      ascii;
        class       dictionary;
        object      fvSchemes;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    ddtSchemes
    {
        default         Euler;
    }
    
    gradSchemes
    {
        default         Gauss linear;
        grad(p)         Gauss linear;
        grad(U)         Gauss linear;
        linExtrapGrad       Gauss linear;      
        
    
    }
    
    divSchemes
    {
        default                  none;
        div(tau)                 Gauss linear; 
        div(grad(U))             Gauss linear;
        div(phi,U)               GaussDefCmpw cubista; 
        div(phi,1|f)             GaussDefCmpw cubista; //FENE-P本构方程中的f 
        div(phi,A)               GaussDefCmpw cubista; //A
        div(phi,theta)           GaussDefCmpw cubista;
        div(phi,tau)             GaussDefCmpw cubista;
        div(phi,C)               GaussDefCmpw cubista; //
    }
    
    laplacianSchemes
    {
        default                       none;
        laplacian(eta,U)              Gauss linear orthogonal;
        laplacian(p|(ap-H1))          Gauss linear orthogonal;
         
    }
    
    interpolationSchemes
    {
        default           linear;
          
    }
    
    snGradSchemes
    {
        default         orthogonal;
    }
    
    fluxRequired
    {
        default         no;
        p;
    }
    
    // ************************************************************************* //
    
    
    
    fvSolution 如下
    
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        format      ascii;
        class       dictionary;
        object      fvSolution;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    solvers
    {
        p
        {
            solver           PCG;
            preconditioner   DIC;
            tolerance        1e-10;
            relTol           0;
            minIter          0;
            maxIter          800;
            
        }
    
        U
        {
    
            solver           PBiCG;
            preconditioner
            {
                preconditioner DILU;
            }
    
            tolerance         1e-8;
            relTol            0;
            minIter           1;
            maxIter           1000;
        }
    
        "(theta|tau|C|A)"
        {
    
            solver           PBiCG;
            preconditioner
            {
                preconditioner DILU;
            }
    
            tolerance         1e-12;
            relTol            0;
            minIter           0;
            maxIter           1000;
        }
     
    }
     
    
    SIMPLE
    {
        nInIter          1;
        nNonOrthogonalCorrectors 0;
        pRefCell        0;
        pRefValue       0;
    
        residualControl
        {
            
        }
    }
    
    relaxationFactors
    {
         fields
          {     
            p 0.9;
          }
    
         equations
          { 
            U 0.5;
            tau 0.5;
            theta 0.5;
          }
    }
    
    // ************************************************************************* //
    ControlDict文件如下
    FoamFile
    {
        format      ascii;
        class       dictionary;
        object      controlDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    application     rheoFoam;
    
    startFrom       latestTime;
    
    startTime       0;
    
    stopAt          endTime;
    
    endTime         1;
    
    deltaT          1e-4;
    
    writeControl    runTime;
    
    writeInterval    0.0001;
    
    purgeWrite      0;
    
    writeFormat     ascii;
    
    writePrecision  12;
    
    writeCompression compressed;
    
    timeFormat      general;
    
    timePrecision   10;
    
    graphFormat     raw;
    
    runTimeModifiable yes;
    
    adjustTimeStep on;
    
    maxCo          0.8;
    
    maxDeltaT      0.001;
    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #13

    瞬态求解器不能使用松弛因子。你核实一下rehoFoam是不是这方面又有自己的特殊处理。

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

    1 条回复 最后回复
  • T 离线
    T 离线
    tiankai
    写于 最后由 编辑
    #14

    已解决,是因为FENE-P模型的数值格式不稳定导致的。我之前将槽道宽为1m算例的入口速度设置为1000m/s能够收敛是我将壁面条件设置为了slip滑移,所以可以收敛。当改为无滑移边界时,就发现不收敛了。本质上就是该数值格式可能在高雷诺数下是不稳定的。

    1 条回复 最后回复

  • 登录

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