绘制代数残差以研究模型的收敛性

2016年 4月 27日

新发布的 COMSOL Multiphysics 5.2 版本中的 残差 算子可用于计算并绘制模型的代数残差,从而有效解决模型的收敛性问题。这篇博客将介绍如何使用 残差 算子对湍流仿真的收敛性进行可视化处理,以及深入理解模型的收敛特性。

什么是代数残差?

求解有限元模型时,明确结果的精确度十分重要。根据网格(离散化)和所求解方程的性质,代数残差只是多种误差来源中的一种。计算误差包括:

  • 截断误差(又称有限元方法的 伽辽金误差)。
  • 正交误差 是使用数值方法对有限元积分进行近似处理所产生的。
  • 几何近似法误差 是采用多项式表示法表征真实几何结构所产生的,一种临近弯曲边界,或位于弯曲边界上的单元积分误差。
  • 代数误差 因过早终止求解器(或使用了不恰当的容差)而产生。使用 残差 算子可存取这类误差。

一般情况下,代数误差(应该)比截断误差小得多。然而当遇到收敛性问题时,代数残差会变大,并且能反映出模型中问题产生的原因。

与 COMSOL Multiphysics 已给出的相关信息(例如收敛数,即按比例缩放的全局数)完全相反,残差 算子可以提供模型中每个变量的未缩放残差值,同时还能表明该物理量残差的空间分布情况。残差来源于有限元离散化的最新计算的残差矢量,但被解释为连续的空间场物理量。空间分布可以帮助准确找出建模域内相对较大的残差,从而阻碍解的收敛。模型中可能出现的问题包括:

  • 部分模拟域的网格分辨率不足
  • 几何结构中出现尖锐边角
  • 边界条件不适合或不兼容

让我们详细了解一下如何使用 残差 算子精确绘制及评估模型中的代数残差。

如何向模型添加代数残差

稳态和瞬态仿真都能使用 残差 算子。将 残差 算子添加到模型之前,需要在稳态或瞬态求解器的 高级 子节点设置中将其激活。存储上一个残差 默认设为 Off。如要要计算残差,请选择求解时;如要要计算残差并将其存储在输出中以进行后处理,则应选择求解和输出时。将残差存储在输出中,便可将其用于绘图以及一般需要额外内存资源的后处理,但如果您只是想在求解时绘制残差,则没有必要使用这一操作。

在 COMSOL Multiphysics 中向模型添加代数残差的设置窗口。
指定上一个残差值储存方式的设置。

在 COMSOL Multiphysics 中使用 残差 算子:以流体动力学为例

为了展示 残差 算子是如何帮助了解数值扰动进入有限元模型并进行扩散的方式,您可以打开 COMSOL 案例下载中的台阶湍流流场教学模型。这个案例使用的是 k-ɛ 湍流模型,展示了一个经典的背阶梯式流场的二维几何结构,其中的台阶角在湍流流动仿真中形成一个回流区。

这个模型包含了绘制求解时动量方程(速度场)的残差。为此,速度绘图组下包含带有表达式 residual(spf2.U) 表面 绘图节点,其中 spf2.U 表示速度大小。

表面绘图节点的设置窗口显示了使用 <em>残差</em> 算子作为绘图表达式。” width=”394″ height=”374″ class=”alignnone size-full wp-image-156711″ /><br />
<em></em>表面<em>绘图节点设置窗口的一部分,使用 <em>残差</em> 算子作为绘图的表达式。</em></p>
<p>软件会计算每一次分离式迭代的更新。在<em>分离式</em> 求解器节点中,伪时步用于稳定和加速,选择速度绘图组来绘制求解中显示的结果。对于此类绘图,将<em>存储上一个残差</em> 特征设为<em>求解时</em> 选项就足够了。此外请注意,如果选择<em>残差</em> 作为分离式求解器的“终止准则”,所得的残差值将与 <em>残差</em><br />
 算子给出的值完全一致。不过,针对默认解或残差准则,<em>残差</em> 算子还会提供其他重要信息。</p>
<p><img src=
分离式求解器的设置窗口,可在求解中显示结果栏下指定残差绘图。

这个案例清楚地表明当使用某种稳态方法(此例中为伪时步)求解传递问题时会发生什么。我们需要将“背阶梯扰动”造成的残差从区域中移除。只有通道内的“扰动”被移除,残差才会降低,这样仿真才能结束。下方截图显示了残差相对较大的区域从入口移动到出口的过程。

仿真显示了求解开始时的速度场残差绘图。
求解结束时的速度场残差。

求解开始与即将结束时的速度场残差。

收敛图证实了当较大的残差消失后,仅需很少的迭代次数便可使起初缓慢的收敛转变为快速收敛。这个现象符合扰动和误差会根据近似方程来发展这一事实,本文中的案例正是将以对流为主导的流动方程进行了瞬态近似处理。因此各类误差中需要将时间从域中移除,该时间对应于与伪时步迭代。

图像描绘了背阶梯式教学模型的收敛性。
背阶梯式湍流流场教学模型的收敛图。请注意即将结束时的快速收敛。

通过绘图及计算代数残差,您可以对不收敛或者收敛缓慢的模型进行调试,从而以最高效的方式获取仿真结果。

使用残差算子时需要考虑的因素

有几种情况需要考虑如何应用 残差 算子:

代数残差数据仅对求解器采取的实际时步有意义。对于默认的内插输出,COMSOL Multiphysics® 软件不会存储任何残差值;因此,您将得到一个关于内插时间的空图。对于瞬态问题,有两种方法可以研究残差(假定您已将 存储上一个残差 设置为 求解和输出时):

  1. 在求解时,将曲线图的 更新基于 设置更改为 以求解器采用的时步,并选择使用 残差 算子的曲线图。
  2. 输出 部分,将 瞬态求解器 节点的 要存储的时步 设置为 以求解器采用的时步。这种方法还使残差可用于结果评估。

此外,根据定义,单个约束自由度(DOF)的残差将为零。但是,如果一个约束涉及多个自由度,那么所有自由度的残差都将为零。例如,如果添加了约束条件u + v = 0,那么在该约束条件所在的选区中,\text{residual(u)} = \text{residual(v)} = 0 将处于激活状态。有许多内置约束都具有这种特性(例如,固体力学中的辊子条件, \textbf{u} \times \textbf{n} = 0 )。

这一点适用于逐点约束;弱约束没有此属性,即约束的自由度被设置为零。

扩展阅读

编者注:这篇博客更新于2024年2月29日,以包括使用残差算子时需要考虑的一些因素。


评论 (0)

正在加载...
浏览 COMSOL 博客