有限元 fem 与 有限差分 fdm 在处理Dirichlet 自然边界时的比较

来源:互联网 发布:华硕护眼模式软件 编辑:程序博客网 时间:2024/04/29 08:37


      why it cares?  

      2D Laplacian equation, soved by FEM & FDM

      u,xx + u,yy = 0


     有限元方法:

        任意一个节点必属于某个单元,不管该节点处于边界还是内部区域。所以边界节点和内部节点,从运算格式上讲,是同等考虑的。但,考虑Dirichlet边界条件,边界节点的位移已知。有限元采用 “划行划列”,将已知的自由度从总体矩阵中剔除。保留所有未知自由度,求解。

        ps, 对于大型矩阵,“从总体刚度矩阵中剔除行列”,导致矩阵resize并不实用。更好的解决是对已知自由度对应的刚度值乘以非常大的罚系数,来大大降低非主元的影响。


   有限差分方法:

         比如采取5点格式,那么内部节点都执行了这个格式的计算,而边界节点并不构成5点格式,没有做这个格式计算。所以,从运算格式上讲,内部节点与边界节点是不等同的。会发现,差分格式得到的刚度矩阵各个方向上自由度个数比系统离散在各个方向上布置的节点个数少2。

        

 那么,边界上已知的位移信息是如何传入内部区域的呢?  

         方法一: 将边界自由度加入刚度矩阵,那么矩阵各个方向上自由度个数等于节点个数,很好,跟有限元(没有剔除行列之前的)总体矩阵纬度一致。矩阵不会因此变奇异,因为只在矩阵对角线增加了正数(1)。 

         会发现这个样子,就是有限元处理Dirichlet边界条件的罚系数方法。不过,好像没有谁喜欢把低纬度的矩阵扩充到高纬度,如果有更简单的方法。


         方法二: 修改使用了边界自由度信息的节点的右端项,即将该边界自由度信息乘以相应的权值后,放到右端去。这样矩阵的形状不变。

        这个样子,跟有限元“划行划列”的思想一致了。


        总结: 对问题采用相同的离散(相同节点数),有限元方法产生的矩阵纬度与总节点数相同(采用罚系数);而有限差分方法生成的矩阵,只包括内部节点。 而且这个矩阵仍然是对角占有的正定阵,故解的唯一性有保证。


         实际中,计算pde数值解的另一个问题:存储 与 节点编号。 d纬(每个纬度采用n个自由度)的带状刚度矩阵存储 : n^2 * bandwidth。 bandwidth changes from O(const)  to  O(n^2), that's a big difference. 

        e.g. the extremely worst case with n = 100;  K storage needs 100 million double bit. that's fuck~  

        Maybe later ~

  


0 0
原创粉丝点击