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. 基于SA模型的湍流拓扑优化,求解异常

基于SA模型的湍流拓扑优化,求解异常

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

    下图是我基于不同的密度场(xh)进行速度场(U)和伴随速度场(Ua)的计算结果,xh有些小差异,但是伴随速度场计算出来完全不一样,右图计算出错了。
    a712471d-a2cf-4ca5-8ca9-88d11620cffc-image.png

    速度场计算是基于SA模型进行,在UEqn方程中增加了源项:

    tmp<fvVectorMatrix> tUEqn
    (
        fvm::div(phi, U)
      + turbulence->divDevReff(U)
      + fvm::Sp(alpha, U)
     ==
        fvOptions(U)
    );
    fvVectorMatrix& UEqn = tUEqn.ref();
    UEqn.relax();
    

    其中alpha是由密度场xh插值进行的,alphaMax=2.5e5,qu=0.01。

    alpha=alphaMax*qu*(1-xh)/(qu+xh);
    

    对于伴随速度场的计算,和UEqn类似,如下所示:

    volVectorField adjointTransposeConvectiona((fvc::grad(U) & Ua));
    tmp<fvVectorMatrix> tUaEqn
      (
          fvm::div(-phi, Ua)
        + adjointTransposeConvectiona
        + turbulence->divDevReff(Ua)
        + fvm::Sp(alpha, Ua)
       ==
          fvOptions(Ua)
      );
      fvVectorMatrix& UaEqn = tUaEqn.ref();
      UaEqn.relax();
    

    请大家帮忙看看,会有哪些可能性导致代码计算出现异常。

    1 条回复 最后回复
  • D 离线
    D 离线
    Do1975
    写于 最后由 编辑
    #2

    我尝试用其他的密度场进行测试,也发现同样的问题。
    密度场如下:
    dbfc78f8-284f-43b7-a726-1e2b9697ef93-image.png

    速度场如下:
    9326ac92-865a-4712-99f6-a9b42d8721d3-image.png

    但是伴随速度场Ua计算还是异常,下图是Ua迭代计算前50步的计算情况,似乎计算后越来越不收敛了:
    24440359-fe59-4d51-901d-35d982c772d8-Ua.gif

    想请教下各位老师,有没有解决方法?

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

    动图很酷炫 看不太懂啥意思 :135:

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

    D 1 条回复 最后回复
  • D 离线
    D 离线
    Do1975
    在 中回复了 李东岳 最后由 编辑
    #4

    @李东岳 李老师 动图中iter是指迭代步数。目前设置的是计算速度场计算200步完成后,再继续伴随速度场,这边为了减少gif的大小,我只生成了前50步的结果。
    在10-15步的时候,此时计算的Ua是正常的,但是随着迭代步增加,计算就不收敛了。一直没搞明白为什么。

    这是其他密度场下计算得到的Ua场:
    2da7895d-d452-4997-bef2-ce5c1f02afb9-image.png

    现在的问题是,有些密度场下可以计算,有些就异常了。(密度场是通过0时刻读入的,作为一个初始值)

    volScalarField xh
    (
        IOobject
        (
            "xh",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        mesh,
        scalar(voluse),
        zeroGradientFvPatchScalarField::typeName
    );
    xh.read();
    
    1 条回复 最后回复

  • 登录

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