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. 如何根据残差判断是否收敛?

如何根据残差判断是否收敛?

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

    我在使用buoyantSimpleFoam时,想要通过残差来判断是否收敛,得到如下的残差图,其中p_rgh在0.1左右就不变了,而k和epsilon也在0.001以上。
    为了减小残差,我调小了fvsolution中的tolerance和residualControl,另外也尝试了修改p_rgh的计算方法,但是都没有用,残差依旧如下图所示,请问这样收敛了吗?为什么残差这么大?谢谢!

    残差图:
    0_1512393903375_2017-12-04 21-21-48屏幕截图.png

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

    buoyantSimpleFoam是个稳态求解器,有的时候稳态求解器残差一直会下降不下去的。

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

    I 深 2 条回复 最后回复
  • I 离线
    I 离线
    Izumi
    在 中回复了 李东岳 最后由 编辑
    #3

    @李东岳 谢谢!我在几个点上放了probe,确实变化不大,应该是收敛了。
    但是苏军伟在博客中提到:

    外残差: 对于方程f(x,t)=0在t_0时刻有收敛解x_0, 则f(x_0,t=t_0)=0; 当用t0时刻的结果代入到t1时刻的方程时,通常并不能满足方程,即 f(x_0, t = t_1) = r !=0; 这里的残差r称为外残差。
    内残差:在cfd计算中通常将方程转化为代数方程Ax=b;当得到某个解A*x_0-b = r1; 这里的r1 ->0时,认为Ax=b收敛。 这里的r1为内残差。
    对于稳态问题:只有当r->0时,才被认为收敛,也就是(x_1 - x_0)->0. 也就是我们在cfd计算中通常见到的那个残差,fluent及其pyFoam输出残差图就是这个r。r常被作为收敛判据。

    如果稳态问题只有r -> 0时才收敛,那么为什么buoyantSimpleFoam收敛时的残差还降不下去?

    1 条回复 最后回复
  • 夜 离线
    夜 离线
    夜阑烟寒
    写于 最后由 编辑
    #4

    你好,问一下您是用什么监测残差的,是新版本的foamMonitor吗,还是自己写的gnuplot脚本?

    I 1 条回复 最后回复
  • I 离线
    I 离线
    Izumi
    在 中回复了 夜阑烟寒 最后由 编辑
    #5

    @夜阑烟寒 我用的是OpenFOAM 5自带的foamMonitor

    夜 2 条回复 最后回复
  • 夜 离线
    夜 离线
    夜阑烟寒
    在 中回复了 Izumi 最后由 编辑
    #6

    @izumi 嗯谢谢啦,我用的是3.0.1的,所以找了个gnuplot脚本看残差,但是感觉显示的略有问题。

    1 条回复 最后回复
  • 夜 离线
    夜 离线
    夜阑烟寒
    在 中回复了 Izumi 最后由 编辑
    #7

    @izumi 0_1516259759442_捕获.JPG
    我用的也是基于simple算法的求解器,就是压力因为加了非正交修正,所以压力方程会被求解多次,然后脚本就把压力曲线化成了一个条带状曲线。所以我把压力残差去掉了

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

    如果稳态问题只有r -> 0时才收敛

    我个人觉得有时候r不会趋向于0,会一直震荡

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

    I 1 条回复 最后回复
  • 夜 离线
    夜 离线
    夜阑烟寒
    写于 最后由 编辑
    #9

    个人理解。其实对于稳态求解,残差曲线平了基本就收敛了,所有变量残差下降到tolerance是很难的,尤其对于压力方程,从log的输出也能看出,U、k、epsilon、omega方程的迭代次数和压力方程的迭代次数相比,一个时间步,压力方程需要更多的迭代次数,这是基于simple算法本身的特性决定的,压力泊松方程是双曲型方程,比较难求解。@李东岳 有不对地方,希望东岳老师纠正

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

    @李东岳 看《Computational Methods for Fluid Dynamics》126页说:

    根据经验内残差下降1到2个数量级就可以了,外残差则要下降3到5个数量级才行。

    结合书中给的例子:

    初值给0,初始误差大小和解相同,残差下降3到4个数量级,则误差可能下降到解的0.1%。

    这样看来,如果初值给的好,外残差很可能降不下来,r就不能趋向于0了

    1 条回复 最后回复
  • 深 离线
    深 离线
    深海矿工
    在 中回复了 李东岳 最后由 编辑
    #11

    @东岳 那是下降呢?还是不下降呢?

    1 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    写于 最后由 编辑
    #12

    看论文发现有作者说fluent稳态计算残差降到1e-7则认为收敛停止计算,但是我用of的simpleFoam的时候发现残差根本降不到那么低,连降到1e-6都已经是极限了。我都不敢在论文里写残差判断标准了,一般你们怎么说收敛标准呢

    1 条回复 最后回复

  • 登录

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