问题描述
当我查看瞬态模型的“求解器日志”时,看到 NLFail
列包含非零条目:
Step | Time | Stepsize | Res | Jac | Sol | Order | Tfail | NLfail | LinErr | LinRes |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | -out | 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
列中的数值将递增。这些用于求解非线性方程组的牛顿法技术在每个时步计算函数及其导数。此导数也称为雅可比矩阵,其计算量相对较大。因此,默认情况下,软件会尽量减少重新计算雅可比矩阵的次数。如果非线性求解器难以收敛,它将减小所请求的时步并尝试计算解。当时步减小时,Tfail
列中的数值会递增。如果解场随时间快速变化,那么这是一种很好的方法。
但是,如果模型具有很强的非线性,那么这可能会是一种次优方法,或者可能根本不起作用。之所以产生这种非线性,可能是因为材料属性随解发生变化,也可能是反馈方程引起的,例如,在使用电流物理场接口中的电流或功率类型的终端条件时会涉及这类方程。
- 注:在进行下述有关求解器的任何更改之前,请确保您的模型是适定的。请检查模型中的非线性和任意反馈条件,然后尝试估计它们针对给定输入将产生的响应类型。举例来说,如果由于正反馈使解趋于无穷大,求解器将无法捕获此响应。模型不收敛通常可能预示着建立的模型不正确或不完整。如果您正在对具有波型解的问题建模,请首先确保应用知识库 1118:解析瞬态波中描述的设置,并查看知识库 1244:求解载荷呈阶跃变化的波型问题。如果您求解的不是波型问题,并且当载荷或边界条件随时间发生突变时模型不收敛,请使用知识库 1245:求解包含时变脉冲载荷的模型中描述的事件。您应该始终确保边界条件和载荷与初始条件一致,如知识库 1172:求解初始值不一致的瞬态模型中所述。
为了求解强非线性模型,一个可行的解决办法是,在非线性求解器尝试在每个时步计算解的每次迭代中更新雅可比矩阵。为此,您可以展开研究设置并转到瞬态求解器分支下的全耦合子特征,然后定位到方法和终止栏。将雅可比矩阵更新:改为在每次迭代中,以替代最小,如下所示。完成此更改通常就足够了。
“全耦合”特征中已修改的设置。
但有时,每个时步的非线性问题具有强非线性,即使采用牛顿法(更新雅可比矩阵)仍然无法收敛。下一个要更改的设置是最大迭代次数,其默认值为 4
。将该值增加到 25
或更大的值。接下来,调整容差因子:设置。其默认值 1
表示使用相对容差设置,如瞬态研究步骤中指定的那样。相对容差的默认值为 0.01
,其实际值为容差因子:乘以此数值,即:在本例中,将容差因子:设为 0.1
可以得到这个非线性问题在每个时步的相对容差为 0.001
。这意味着,当您收紧瞬态求解器的相对容差设置时,通常可以放宽容差因子。
如果模型仍未收敛,您可以将非线性方法:设置从恒定(牛顿)改为自动(牛顿),后者可以实现阻尼牛顿法。此方法会自动更新雅可比矩阵并使用动态阻尼项,因此需要更多的计算资源。自动高度非线性(牛顿)与此类似,但开始时具有更多阻尼,因而求解速度更慢,但更可能收敛。
默认情况下,模型可能使用分离法。在求解多物理场问题时常常是这样,由于强非线性往往只会影响模型中的一个物理场,所以使用这种方法通常是合理的。在分离式求解器中,每个分离步表示不同物理场的解,并单独进行求解,求解时会使用牛顿法的一些变体。您可以按如上所述进行类似修改,因为这是由存在的非线性所驱动的,所以只能对一个分离步进行修改。也就是说,如果只有一个物理场存在材料或反馈非线性,您可能只需修改该物理场的设置,如下面的屏幕截图所示。
“分离步”特征中已修改的设置。
如果您正在求解多物理场问题并怀疑物理场之间存在很强的非线性,则可以从分离法切换到全耦合方法,如知识库 1258:理解“全耦合”与“分离”求解方法之间的区别中所述。您可能仍需要按之前所述调整设置。
如果您在求解器日志中观察到的主要是 Tfail
列的数值经常递增,可以在时间步进设置中启用非线性控制器,如下面的屏幕截图所示。此设置将在向后差分公式法中实现更有效的时步控制,尤其适用于高度非线性模型。请注意,即使对于不含非线性的模型,Tfail
列中的数值也会递增,在这种情况下,最好收紧求解器的相对容差。
启用非线性控制器。
最后请记住,为了验证模型的精度,您总是需要执行相对容差细化研究和网格细化研究,分别如知识库 1254:控制瞬态求解器的时间步长和知识库 1261:执行网格细化研究中所述。
COMSOL 尽一切合理的努力验证您在此页面上查看的信息。本页面提供的资源和文档仅供参考,COMSOL 对其有效性不作任何明示或暗示的声明。COMSOL 对所披露数据的准确性不承担任何法律责任。本文档中引用的任何商标均为其各自所有者的财产。有关完整的商标详细信息,请参阅产品手册。