有限元雜談之一 -- 有限元基礎(轉)

前言  

     寫本文的初衷 接觸有限元時間不算常也不短,從05年到現在吧,中間斷斷續續的學習有限元,大大小小 軟件也用了不少,牛人的帖子和大師們的著作讀了一些,最近常來simwe 逛逛,發現還有 很多初學有限元的朋友們, 提出的問題五花八門但大多不對正路, 不竟回想起了當年自己學 習有限元時情景, 孤立無助到處瞎碰, 通宵熬夜啃手冊也得不出一個所以然來, 問導師問師 兄還是常常一頭霧水, 現在回頭想想如果有幾個良師益友會是多么幸福的事情, 寫此文僅僅 只為了讓對有限元感興趣的朋友們少走一些彎路,有更多的精力和時間去研究更深層次的問 題,同時也算是報答simwer多年來陪伴。

本文并不是一套完整的教科式學習材料, 對于正真想在有限元上做一些工作的, 還是建議多 讀大師的著作和程序, 少看此文。 另外此文僅僅是自己對有限元方法粗淺的理解, 如有疏漏 的地方,還請各位高手大師補充指正。

什么是有限元

1.1 PDE

有限元是一種求解問題的數值方法,求解什么問題呢?--求解 PDE(偏微分方程) 那么PDE是做什么用的呢?--描述客觀物理世界。我想如果這兩個問題搞清楚了也就明白了 為什么要用有限元,有限元可以做那些東西。 PDE可以描述很多物理現象,電磁,流體, 換熱, 聲學,擴散,相變,各種力學,河床變遷,物種競爭,股票金融,等等等等。。。。乃 至整個宇宙,當然也不是所有的物理現象都可以用PDE等,所以我一般不建議用有限元方法仿真微觀物質現象的原因,但也有PDE應用于微觀 物質并得到很好的結果,如泊松方程來解析plasma的物理現象,這在量子物理里用統計的 方法過于龐大, 泊松方程反而使問題簡單而且能吻合實驗,這些都是題外話就不多說了。除 PDE以外, ODE同樣也可以描述客觀世界, ODE相對簡單, 多用于控制系統,很有一 些線性PDE的解法也都是將PDE轉化為ODE來求解的

1.2 求解PDE

有了PDE以后,問題是如何求解并得到結果,首先要說明的是不是所有的PDE都有解的, 往往有解的PDE才有實際工程意義。對于數值解法,常用的是有限差分,有限元,有限體 積和譜方法, 還有蒙特卡羅法。 有限差分出現的較早, 計算精度相對較高且可控, 但模型形 狀必須規則, 邊界條件處理困難, 好處是可以比較方便的控制計算精度, 編程簡便, 固定節 點的網格劃分形式適用于流體類的仿真。有限元方法效率高且滿足精度要求, 邊界條件容易 處理,得到了廣大的應用,尤其是在固體領域。譜方法由于可以采用高階差值方程和FFT 方法的來求解, 使得程序有著精度高, 收斂快的特點, 也克服了有限元條件下使用高階插值 方程計算費時的缺點, 常常使用periodicboundarycondition 但也有越來越多的算法使得一 類二類邊界成為可能,適合微觀尺度的PDE解,譜方法和有限元結合產生的譜元法取兩者 之優點, 使得應用前景非常好。 有限體積類似是有限差分和有限元的結合, 特點是計算點在 單元中心,雷曼邊界處理單元之間的交接,處理流體中的激波有著特殊優勢,計算方法邊界, 速度要比同等級的有限元方法快。蒙特卡羅法不是基于弱解形式的, 隨機數的多維采樣最終 得到統計上的結果,多用于金融分析。咱這里還是著重有限元解PDE,顧名思義,有限元 將整個計算幾何模型劃分為很多小的單元( element), 每個單元的含有一定數量的節點(node) 具體單個單元有多少節點, 有對應的不同算法與差值方程, 拿一個簡單的線性4 點平面單元來說, 每個單元包含4個節點, 每個節點有對應的自變量值, 比如簡單固體力學 問題(位移法),每個節點就有對應的位移值,熱力學問題每個節點就有對應的溫度值,等 等。然后單元內部的結果就通過差值方法顯示出來

1.3Galerkinapproximation weakformation(變分/虛功)

弱解(weakformation)是建立在變分法基礎上的,通過這個方法將 strongformPDE轉換為weakform 使得有限元的求解成為可能,具體如何推導weakform可以參考一些有限元書 籍, 如果一本基礎的有限元書籍沒有介紹如何推導weakform 那么可以考慮選擇換一本了。 推導所得的弱解形式仍需要通過計算機來計算, Galerkin方法推導出含有求和符號的公式, 在計算機中多半以 loop的形式來計算這個量, 往往這個量就是stiffnessmatrix中的各個量。 公式中還會存在積分計算, 有限元方法多用gaussquaradure的方法來計算, 精度一般可以滿 足。也就說一般簡單的限元計算中存在兩次 approximation 一次是 Galerkin一次是 gauss 法求積分, 這也是很多人在計算完以后需要進行驗證的原因,同時對于非線性問題 newton 法本身就是通過計算誤差來判斷收斂的, 固體有限元常常使用能量增量活residual增量作為newton求解器的判據。 單個單元的stiffnessmatrix計算完成后, 還需要將所有單元的矩陣裝 配為一個大型的矩陣,然后進行線性代數計算。這個裝配是很有技巧的,因為一般情況下stiffnessmatrix是一個很大的稀疏矩陣, 0值往往可以省去以節省計算量。 一個由10x10x10 8節點矩形單元組成的模型會有11x11x11 node 如果是熱力學問題自變量是溫度T 每個節點上有一個自由度,組裝后的的 stiffnessmatrix會有(11x11x11)x(11x11x11)=1771561 之大, 隨著單元數或變量的增加, 計算是驚人的, 這樣一個大的矩陣求解顯然不能用常規的 方法(gaussianelimination),這就是各種這樣求解稀疏矩陣算法存在的原因了, 稀疏矩陣存儲轉換方法可以參見 Bathe的《 FiniteElementProcedure》, 有效且快速求解線代方程組 是一個好的solver的標準

1.4 后處理

其實對于最基本的有限元方法, 求解得到的僅僅是各節點的自變量的值, 對于基本的位移法 如力學就是節點位移值, 熱力問題就是溫度值, 流體就是位移速度加壓力值, 如果我們想知 道應力或者應變怎么辦呢?后處理系統里面個都會增加相應子程序來計算 stress strainflux等等。 這也就是為何我們能看到各種各樣的云圖的原因了, 當然讀者也可以自己加入計 算各種量的子程序, 如應變能密度什么的。 關于什么是有限元就介紹到這里, 僅僅是一些隨和想法, 具體的理論和推導需要自身實踐與探索, 本文行文倉促只是闡述自己對有限元的 粗淺理解。有不對的地方還請指正。下一章會談及一些我曾經用過得軟件。

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

41
29
3