有限元 fem 與 有限差分 fdm 在處理Dirichlet 自然邊界時的比較


      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 ~

  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章