吾生有涯 学海无涯
析模有界 知识无界

「胡言」残差简解

内容纲要

在利用软件进行CFD计算过程中,打交道最多的名词肯定是残差。我们常利用计算残差来评判计算是否达到收敛。那么什么是残差?

残差的概念来自于迭代法,指的是同一物理量在两次迭代之间的变化量。度量残差的方法很多,比如说计算差值、均方根等。

1 迭代法中的残差

下面这段代码利用松弛迭代法求解线性方程组,并输出三个未知量x1,x2及x3的残差变化曲线。

# -*- coding: utf-8 -*-#
import matplotlib.pyplot as plt
import numpy as np

def f(x1, x2, x3, count, w):
  it = np.arange(1,count,1)
  count =[]
  x1r = []
  x2r = []
  x3r = []
  for item in it:
      y1 = x1-w*(x1-0.1*x2-0.2*x3-7.2)
      y2 = x2-w*(-0.1*y1+x2-0.2*x3-8.3)
      y3 = x3-w*(-0.2*y1 -0.2 *y2+x3-8.4)
      if (max(abs(y1-x1), abs(y2-x2), abs(y3-x3)) < 0.00001):
          # 设定精度为0.00001
          print('最终的计算结果为%s、%s和%s' % (y1, y2, y3))
          break;
      else:
          print('第%s次迭代的计算结果为%s、%s和%s' % (item, y1, y2, y3))
          x1r.append(abs(y1 - x1))
          x2r.append(abs(y2 - x2))
          x3r.append(abs(y3 - x3))
          count.append(item)
          x1,x2,x3 = y1,y2,y3

  plt.plot(count,x1r,'r',label='x1')
  plt.plot(count,x2r,'b',label='x2')
  plt.plot(count,x3r,color='green',label='x3')
  plt.yscale('log')
  plt.xlabel('Iteration')
  plt.ylabel('Residual(log)')
  plt.legend()
  plt.show()
f(15,15,8,1000,0.5)

前面的文章中,采用递归来迭代计算,这里采用循环来定义迭代过程。

重要的代码在这里:

if (max(abs(y1-x1), abs(y2-x2), abs(y3-x3)) < 0.00001):
         print('最终的计算结果为%s、%s和%s' % (y1, y2, y3))
         break;

这几行代码定义了残差为0.00001,当所有物理量的变化量低于该阈值时,计算停止。

上面的代码经过22次迭代达到收敛,输出的残差变化曲线如下图所示。

下图是改用松弛因子1.0计算的残差曲线。计算在迭代6步后达到收敛。

下图利用松弛因子1.5进行计算得到的残差图。计算在迭代21次后达到收敛。

需要注意的是:

  • 上面采用的三种不同的亚松弛因子(0.5,1.0,1.5)进行计算,最终均收敛值1e-5,虽然残差曲线不同,但最终获取的计算结果是相同的。

  • 残差降低到收敛标准,只能表示计算收敛,但无法证明结果正确与否。但是能确定的是,计算没有达到收敛,其结果肯定是不正确的。

2 Fluent中残差设置

在Fluent软件中,双击模型树节点Monitor > Residual即弹出残差设置对话框,如下图所示。

在该对话框中,用户可以设定每一个物理量的残差标准。

关于在Fluent中残差设置的一些经验:

  • 二维计算模型通常设置残差低于1e-5

  • 能量方程残差通常低于1e-6

  • 对于复杂计算模型,残差并非判断收敛的唯一标准

注:本文部分内容来自连载《小白学CFD》,转载请务必保持文章完整性!

本篇文章来源于微信公众号: CFD之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《「胡言」残差简解》
文章链接:https://www.topcfd.cn/10972/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册