平台: 所有平台 版本: 所有版本

问题描述

当我查看时间依赖模型的求解器日志时,我看到nlfail列有非零条目:

时间 步长 res 雅克 溶胶 命令 tfail nlfail Linerr Linres
0 0 -出去 2 3 2 0 8E-14 3.5e-15
1 0.1 0.1 11 5 11 1 0 1 2.6e-16 2.4e-16
... ... ... ... ... ... ... ... ... ... ...

这是什么意思?

在解决时间依赖模型时,我会收到类似于以下错误消息的错误消息:

非线性求解器没有收敛。
达到牛顿迭代的最大数量。
时间:0.15582918651998362
最后一个时间步骤没有收敛。

我可以对求解器设置进行哪些更改来解决此问题?

解决方案

依赖时间的求解器正在通过基于牛顿方法的一组迭代技术来计算每个时间步中可能非线性方程式的解决方案。如果这些迭代技术在任何时间步中都失败了,则nlfail列将被递增。这些用于求解非线性方程系统的方法技术在每个时间步中评估了功能及其导数。该导数也称为雅各布并且计算相对昂贵。因此,默认情况下,该软件将尝试最大程度地减少重新评估Jacobian。如果非线性求解器的收敛难度,它将降低所需的时间段尺寸并尝试计算解决方案。减少时间段时,tfail列是增加的。如果溶液场随着时间的推移迅速变化,这是一种很好的方法。

但是,如果模型具有强大的非线性,这可能是一种次优的方法,也可能根本不起作用。这种非线性可能是由于材料属性是解决方案的函数而产生的,或者是由于反馈方程式(例如,在使用)当前的- 或者力量-类型终端条件电流物理接口。

该分辨率可以是在非线性求解器试图在每个时间步中计算解决方案时所采用的每次迭代中更新雅各布式。为此,扩展学习设置并转到时间依赖性求解器分支,完全耦合子场,方法和终止部分。修改Jacobian更新:成为每次迭代而不是最小, 如下所示。这种变化通常足够了。

完全耦合的设置

完全耦合功能中的修改设置。

但是,有时在每个时间步中的非线性问题都是如此强烈非线性,以至于即使有更新的雅各布式,牛顿的方法仍然无法收敛。更改的下一个设置是最大迭代次数,其默认值为4。将其增加到25, 或更高。接下来,调整公差因素:环境。它的默认值为1意味着正在使用相对公差设置,如与时间相关学习步骤。相对公差的默认值0.01公差因素:乘以这个数字,因此设置公差因素:0.1在这种情况下,将导致相对公差0.001在每个时间步中用于非线性问题。因此,当您收紧时间相关的求解器相对公差设置时,通常可以放松公差因子。

如果您的模型仍未融合,请更改非线性方法:设置常数(牛顿)自动(牛顿)这实现了阻尼牛顿的方法的方法。这会自动更新Jacobian并使用动态阻尼术语,因此在计算上更昂贵。这自动非线性(牛顿)是相似的,但从更多的阻尼开始,并且会更慢,但更有可能收敛。

默认情况下,您的模型可能会使用隔离方法。解决多物理问题并且通常是合理的,因为强大的非线性通常仅影响模型中的物理之一,通常是合理的。在隔离的求解器中,每个隔离步骤代表对不同物理的解,并使用牛顿方法的某种变体再次分别解决。您可以如上所述进行类似的修改,但仅仅是一个隔离的步骤,这是由于存在的非线性的动机。也就是说,如果仅在一种物理学中存在材料或反馈非线性,则您可能只需要修改该物理的设置,如下屏幕截图所示。

在隔离步骤功能中修改的设置。

如果您解决了多物理问题并怀疑物理学之间存在强烈的非线性,则从隔离到完全耦合的方法,如图所述知识库1258:了解完全耦合与隔离方法。您可能仍然需要如前所述调整设置。

如果您主要观察到tfail求解器日志中的列经常递增,启用非线性控制器时间步入设置如下屏幕截图所示。这将在BDF方法中启用更有效的时步控制,尤其是对于高度非线性模型。请注意tfail即使对于没有非线性的模型,列也可以增加,在这种情况下,最好拧紧求解器的相对公差。

启用非线性控制器。

最后,请记住,您将始终需要进行相对的耐受性精炼研究,如下所述:知识基础1254:控制时间依赖的求解器时间段,以及一项网状细化研究,如下所述:知识库1261:进行网状精炼研究,验证模型的准确性。