提高COMSOL非线性瞬态模型的收敛性的方法
提高COMSOL非线性瞬态模型的收敛性的方法
COMSOL Multiphysics是一款功能强大的多物理场仿真软件,广泛应用于工程和科研领域。在使用COMSOL求解非线性瞬态模型时,经常会遇到收敛性问题。本文将详细介绍如何通过调整求解器设置来提高模型的收敛性。
在求解瞬态模型时,经常会收到类似如下的错误消息:
非线性求解器不收敛。
达到最大牛顿迭代次数。
时间:0.15582918651998362
最后一个时步不收敛。
当你查看瞬态模型的“求解器日志”时,会看到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
... ... ... ... ... ... ... ... ... ... ...
瞬态求解器的工作原理
瞬态求解器通过一组基于牛顿法的迭代技术在每个时步对可能呈非线性的方程组进行求解。如果这些迭代技术在任意时步失败,则NLFail
列中的数值将递增。这些用于求解非线性方程组的牛顿法技术在每个时步计算函数及其导数。此导数也称为雅可比矩阵,其计算量相对较大。因此,默认情况下,软件会尽量减少重新计算雅可比矩阵的次数。如果非线性求解器难以收敛,它将减小所请求的时步并尝试计算解。当时步减小时,Tfail
列中的数值会递增。如果解场随时间快速变化,那么这是一种很好的方法。
但是,如果模型具有很强的非线性,那么这可能会是一种次优方法,或者可能根本不起作用。之所以产生这种非线性,可能是因为材料属性随解发生变化,也可能是反馈方程引起的,例如,在使用电流物理场接口中的电流或功率类型的终端条件时会涉及这类方程。
解决方案
1. 更新雅可比矩阵
为了求解强非线性模型,一个可行的解决办法是,在非线性求解器尝试在每个时步计算解的每次迭代中更新雅可比矩阵。为此,可以展开研究设置并转到瞬态求解器分支下的全耦合子特征,然后定位到方法和终止栏。将雅可比矩阵更新:改为在每次迭代中,以替代最小,如下所示(分别对应中英文版本)。完成此更改通常就足够了。
2. 调整最大迭代次数和容差因子
但有时,每个时步的非线性问题具有强非线性,即使采用牛顿法(更新雅可比矩阵)仍然无法收敛。下一个要更改的设置是最大迭代次数,其默认值为4。将该值增加到25或更大的值。接下来,调整容差因子:设置。其默认值1表示使用相对容差设置,如瞬态研究步骤中指定的那样。相对容差的默认值为0.01,其实际值为容差因子:乘以此数值,即:在本例中,将容差因子:设为0.1可以得到这个非线性问题在每个时步的相对容差为0.001。这意味着,当您收紧瞬态求解器的相对容差设置时,通常可以放宽容差因子。
3. 更改非线性方法
如果模型仍未收敛,您可以将非线性方法:设置从恒定(牛顿)改为自动(牛顿),后者可以实现阻尼牛顿法。此方法会自动更新雅可比矩阵并使用动态阻尼项,因此需要更多的计算资源。自动高度非线性(牛顿)与此类似,但开始时具有更多阻尼,因而求解速度更慢,但更可能收敛。
4. 调整分离步设置
默认情况下,模型可能使用分离法。在求解多物理场问题时常常是这样,由于强非线性往往只会影响模型中的一个物理场,所以使用这种方法通常是合理的。在分离式求解器中,每个分离步表示不同物理场的解,并单独进行求解,求解时会使用牛顿法的一些变体。您可以按如上所述进行类似修改,因为这是由存在的非线性所驱动的,所以只能对一个分离步进行修改。也就是说,如果只有一个物理场存在材料或反馈非线性,您可能只需修改该物理场的设置,如下面的屏幕截图所示。
5. 启用非线性控制器
如果您在求解器日志中观察到的主要是Tfail
列的数值经常递增,可以在时间步进设置中启用非线性控制器,如下面的屏幕截图所示。此设置将在向后差分公式法中实现更有效的时步控制,尤其适用于高度非线性模型。请注意,即使对于不含非线性的模型,Tfail
列中的数值也会递增,在这种情况下,最好收紧求解器的相对容差。
模型验证
最后请记住,为了验证模型的精度,您总是需要执行相对容差细化研究和网格细化研究,分别如知识库 1254:控制瞬态求解器的时间步长和知识库 1261:执行网格细化研究中所述,具体详细信息见COMSOL官网。
控制瞬态求解器的时间步长 - 知识库
执行网格细化研究 - 知识库
本文详细介绍了在COMSOL中解决非线性瞬态模型收敛性问题的各种方法。通过调整雅可比矩阵更新方式、最大迭代次数、容差因子、非线性方法等参数,可以有效提高模型的收敛性。同时,文章还强调了模型验证的重要性,建议进行相对容差细化研究和网格细化研究,以确保模型的准确性和可靠性。