我需要在雅可比矩阵中施加边界条件吗?

计算科学 有限元 边界条件 牛顿法
2021-12-24 00:18:44

在有限元法的框架下,当使用牛顿法时,我们求解,增量不会改变的某些条目与狄利克雷边界条件有关。中施加齐次狄利克雷条件,这样会有一些零条目。我的问题是:这真的需要吗?我应该保持雅可比不变和后处理吗?J(xk)δx=f(xk)δxxkJ(xk)δxxk+1

谢谢!

2个回答

使用有限元方法时,有多种方法可以实现 Dirichlet 边界条件。

对于属于 Dirichlet 边界的系统的每个未知行和右侧的条目以这种速度,您可以仅针对内部的未知数重新构造问题,从而减小其大小。iii

或者,您可以在非线性求解的每一步强制执行 Dirichlet 边界条件。但是,这假设您是负责编写求解器的人;如果你想用别人的软件为你解决非线性系统,你可能不得不求助于第一种方法。

这本书有一整节关于狄利克雷边界条件的内容,其中更详细地涵盖了这两个选项以及其他一些选项,例如惩罚方法。

这个评论对于评论来说有点太长了,但是关于 DanielShapero 关于改变雅可比矩阵的评论,对于每个自由度对应于 Dirichlet 边界条件 (BC),一个常见的方法是设置行雅可比矩阵等于单位矩阵的第行,这意味着您的(准)牛顿迭代应该是可以置换为形式的线性系统iii

[AB0I][δxinteriorδxBC]=[finterior(xk)fBC(xk)].

只要非线性求解的初始猜测将 Dirichlet BC 自由度设置为那些边界条件中指定的值,那么在非线性求解器的每次迭代中,都应该满足 Dirichlet 边界条件,并且因为δxBC=0fBC(xk)=0

您可以对功能迭代型非线性求解器执行类似的操作。

编辑:如果你将置换雅可比矩阵的行归零以获得

[AB00][δxinteriorδxBC]=[finterior(xk)fBC(xk)],

然后可以使用最小二乘直接方法(QR,SVD)或 Krylov 方法(它将计算 Drazin 逆并收敛到正确的解)来求解得到的秩不足系统。基于 LU 的方法应该由于零枢轴而返回错误,并且不能在不仅根据内部自由度重新构造系统的情况下使用,这是将行归零的一个小缺点。解决重构在这一点上可能更可取。Aδxinterior=finterior(xk)