线性方程式的解决方案:直接和迭代求解器

2013年11月11日

在本博客文章中,我们介绍了在COMSOL中使用的两类算法,以解决解决任何有限元问题时出现的线性方程系统。188金宝搏优惠这些信息对于了解求解器的内部工作以及了解内存需求如何增长问题大小。

线性静态有限元问题

让我们考虑由三个节点和三个元素组成的线性静态有限元问题:

具有三个元素和三个节点的线性静态有限元问题示例

每个元素都由两个节点界定。其中一个节点是在刚性壁上,我们知道位移将为零,因此我们不需要求解该节点。正如我们在之前的博客文章中看到的那样线性静态有限元问题,我们可以为每个节点编写力量的平衡:

f_ {u_1} = k_3(u_2-u_1)-k_2(u_1-0)

f_ {u_2} = p-k_3(u_2-u_1)-k_1(u_2-0)

我们可以将其写为:

\ begin {bmatrix} f_ {u_1} \\ f_ {u_2} \ neg {bmatrix} = \ begin {bmatrix} 0 \\ p \ nod {bmatrix} - \ begin {bmatrix} k_2 + k_3 && -k_3 \\ -k_3 && k_1 + k_3 \ neg {bmatrix} \ begin {bmatrix} u_1 \\ u_2 \ neg {bmatrix}

甚至更紧凑:

\ bf {f(u)= b-ku}

我们可以使用Newton-Raphson迭代方法解决此问题,由于这是一个线性静态问题\ Mathbf {U} _ {init} = \ Mathbf {0},给我们这个解决方案:

\ mathbf {u} _ {solution} = \ mathbf {k ^ { - 1} b}

现在,这个问题只有两个未知数或自由度(DOF),并且可以轻松用笔和纸求解。但总的来说,您的矩阵将有数千以上的DOF,并找到上述等式的解决方案通常是最重要的问题所要求的问题。在计算机上求解这样的线性方程系统时,也应该了解一个概念条件编号,衡量解决方案对负载变化的敏感程度的度量。尽管Comsol从188金宝搏优惠未直接计算条件号(这样做和解决问题一样昂贵),但我们确实以相对的方式谈论了条件编号。该数字使用用于求解线性方程系统的数值方法。

有两种基本类别的算法用于解决\ bf {k^{ - 1} b}直接的迭代方法。我们将介绍这两种方法,并在下面查看它们的一般属性和相对性能。

直接方法

COMSOL使用的直接溶剂是188金宝搏优惠腮腺炎朴素儿, 和线轴求解器。所有求解器均基于lu分解

这些求解器都将针对所有条件有限的有限元问题提供相同的答案,这是它们的最大优势,甚至可以解决一些问题不足的问题。从解决方案的角度来看,您选择的直接求解器之一是无关紧要的,因为它们将返回相同的解决方案。直接求解器的相对速度主要不同。腮腺炎,pardiso和spooles求解器各自都可以利用单台计算机上的所有处理器芯,但是pardiso往往是最快的,并且口径最慢。线轴还倾向于使用所有直接求解器的最少内存。所有直接求解器的确需要大量的RAM,但是腮腺炎和pardiso可以存储解决方案外核,这意味着他们可以将一些问题卸载到硬盘上。mumps求解器还支持群集计算,使您可以使用比任何单个计算机上通常可用的更多内存。

如果您要解决一个没有解决方案的问题(例如负载的结构性问题,但没有约束),则直接求解器仍将尝试解决该问题,但会返回看起来与以下方式相似的错误消息:

无法找到解决方案。相对残差(0.06)大于相对耐受性。返回的解决方案不收敛。

如果您收到此类型的错误消息,则应检查以确保您的问题是否正确约束。

迭代方法

comsol中的迭代求解器涵盖了各种方法,但在概念188金宝搏优惠上都非常简单地理解最高水平,与一个基本类似于共轭梯度法。其他变体包括广义最小剩余方法Biconjugate梯度稳定方法,这些内容有许多变化,但它们都表现得很好。

与直接求解器相反,迭代方法逐渐接近解决方案,而不是在一个大型计算步骤中。因此,当用迭代方法解决问题时,您可以观察解决方案中的误差估计随着迭代的数量而降低。对于条件良好的问题,这种融合应该是相当单调的。如果您正在努力不受条件的问题,那么收敛将慢。迭代求解器的振荡行为往往是一个指示问题未正确设置,例如当问题不够受到限制时。迭代求解器的典型收敛图如下所示:

迭代求解器的收敛图

默认情况下,当迭代求解器中的估计误差低于10时,该模型被视为收敛-3。这是在求解器设置窗口中控制的:

相对公差是从求解器设置窗口控制的

对于更快的溶液或更紧密的溶液,可以使这种耐受性更宽松,以提高当前网格的精度。公差必须始终大于取决于机器精度的数字(2.22×10-16)和条件编号(这取决于问题)。但是,通常没有任何意义,因为对您的模型的输入(例如材料属性)通常不准确地超过几位数字,因此容忍度太高了。如果您要改变相对公差,我们通常建议以一个数量级和比较解决方案的增量增量使公差更加紧密。请记住,您只能在当前使用的网格上解决更严格的耐受性,并且完善网格通常更合理。

迭代求解器的最大优势是它们的内存使用情况,它的内存使用量明显少于相同大小的问题的直接求解器。迭代求解器的最大缺点是他们并不总是“只是工作”。不同的物理学确实需要不同的迭代求解器设置,具体取决于要解决的管理方程的性质。

幸运的是,Coms188金宝搏优惠ol已经为所有预定义物理接口具有内置默认求解器设置。188金宝搏优惠comsol将自动检测到正在解决的物理和问题大小,并为这种情况选择求解器(直接或迭代)。选择默认的迭代求解器以最高的鲁棒性和最低的内存使用方式选择,并且不需要用户的任何交互来设置它们。

直接和迭代解决方法的结论思考

当求解模拟的线性方程系统时,COMSOL将自动检测最佳求解器,而无需任何用户交互。188金宝搏优惠直接求解器将使用比迭代求解器更多的内存,但可以更加坚固。迭代溶剂逐渐接近溶液,如果需要,可以改变收敛耐受性。


评论(6)

发表评论
118bet网址多少
加载...
anu das
anu das
2015年10月7日

我试图将泊松eqn和稀释物种的运输搭配。但这并没有融合。以下是我尝试解决它的简短说明:
(3D几何形状是针板电极),但我使用了2D轴对称[仅取1 kV时的针头边界,上升时间1E-6 US,下板使用静电仪在0 V处。
充电连续性EQN I.E DEL(RHE)/ DEL(t)+ div(-rhe * meu * e)= a * e * exp / e)使用稀释物种的运输。
所使用的BC为对流通量在电极边界处为零。即n.grad(rhe)= 0

通过空间电荷密度> RHE在静电中耦合两个物理
使用的pardiso,时间范围[0,1E-8,1E-7]。模型没有收敛。请给我您的提示,以解决此问题。

沃尔特弗雷
沃尔特弗雷
2015年10月14日

你好anu,
那些问题落在这里的范围之外。相反,您希望直接联系Comsol支持团队以获取帮助。188金宝搏优惠

Moez El-Massry
Moez El-Massry
2016年3月2日

我可以手动使求解器使用直接或迭代解决方案方法吗?(正如我正在进行一个停止和报告在LU accationization期间内存中的错误的模拟,并且根据博客,直接解决方案方法可能有所帮助。)

尼古拉斯金环
尼古拉斯金环
2016年6月8日

我实际上有一个完全相同的问题。我想手动选择一个求解器,该求解器的内存较少,因为我当前收到相同的错误消息。

沃尔特弗雷
沃尔特弗雷
2016年6月9日

你好,
关于内存的问题,请参阅此KB:
https://www.188金宝搏优惠comsol.com/support/knowledgeBase/1030/

BastiánRodríguezLópez
BastiánRodríguezLópez
5月12日,2020年

你好!谢谢你的解释。我正在尝试模拟铝之间的两块硬件,并在它们之间使用接触点。我想知道我应该使用哪个求解器。哪一种是一种明确的方法,而一种是隐式的?先感谢您。

探索comsol188金宝搏优惠博客