請問有限元有哪些具體的方法,各自的優劣呢?還有與有限差分優劣呢?
有限元在大三學過計算力學,講的形函數、畫網格標序號、組裝稀疏剛度矩陣這個流程。後來聽說過無網格伽遼金法,但不太了解具體步驟。
另,CFD課上用的有限差分法,但是為什麼固體力學用有限元,流體力學用有限差分這沒想通。
o大部分工程方法都是先於理論存在的。
有限元方法在固體力學中的物理意義比較明確。剛度矩陣把位移映射到應力,應力對位移的積分是應變能。
從到就是虛功原理,測試函數就是虛位移。平衡系統對任意虛位移都有零虛功。平衡系統有最小的應變能,而方程的解應該最小化殘差的某個範數到零。對於流體力學來說就沒有這麼直觀。流體方程的殘差並沒有什麼直接的物理意義,密度乘動量散度是個啥玩意?你也很難說流體力學方程的解最小化了個什麼物理量。流體力學中自然的思路是把微分方程離散寫成差分方程,然後解代數方程就是了。
但是函數空間理論建立以後也就殊途同歸了。
所以現在不止流體力學也可以用有限元了,而是所有的偏微分方程求解都可以用有限元了。有限元的優勢和劣勢都在於,它是局部解析的。
---
Patch 1:很多人提到了穩定性和數值震蕩問題,這是流體控制方程得問題不是有限元的問題。有限元在這方面不存在特殊的,根本性的困難。有限體積法就是0階間斷有限元,怎麼會有有限體積能做有限元做不了的事?在間斷方法(有限體積或更一般的間斷有限元)中,構造界面通量時可以引入迎風來增強穩定,但迎風和人工粘性是數學等價的。到頭來所有的增穩措施都可以用人工粘性解決。所以有限元,哪怕是傳統的連續有限元,在處理流體問題時都不存任何先天障礙。
首先和控制方程有關,流體運動時對流可能佔主導地位,這時候微分方程簡化為拋物型的對流方程。
1. 求解對流方程初值問題時,有限元會產生數值振蕩,需要抑制振蕩格式(這個很難,但是也是可以搞的)2. 對流方程數值解需要滿足迎風物理性質,也就是下游值不能影響上游。普通有限元不具有迎風性質,因此適合求解擴散方程。(特殊的有限元可以有迎風格式,但是其基函數比較特殊。間斷有限元是有限體積法和有限元的結合,所以我不認為它是這裡說的原始的有限元方法)在一維情況下可以把三種格式(FEM、FDM、FVM)都寫成代數方程形式,這時候便清晰明了了---隨便補充,有限差分由於其直觀性基本作為所有CFD教材入門講解的格式。FEM並不是不可以用於流體,目前非結構化網格的高精度數值格式只有FEM相關格式能夠做到,也有好多現成的數值模型,如 hpGEM,nektar,nektar++,fluidity,dune 等一說到方法的比較我就有點抓瞎. 學的東西後來是越來越窄, 我只能簡單從我個人經驗角度說一些感受.
流體力學一般是一種大變形, 而固體力學很多時候就用簡單的小變形假設就足夠了(當然板殼問題最好用大變形, 至少是corotation方法). 所以流體力學應該是不會採用有限元的. 固體力學可以用有限元最基本的還是源自於每個節點的平衡, 平衡來自於內力和為0, 內力來自於應力的積分, 應力來自於應變, 應變來自於幾何關係, 這個鏈背後的數學是變分, 以及Hilbert空間的一些東西(基本忘光了). 而流體, 我不熟悉, 上面一個答案已經提到了, 控制方程就不一樣, 可能推導弱形式的時候就做不下去了?
希望其他人能多多補充, 我平時做了不少"怎麼做"的問題, 往往疏忽了"為什麼"的問題. 提問者很不錯, 關注到了這個點.有限元背後數學本質是變分原理和能量原理,研究連續介質力學和固體力學一般採用Lagrange坐標,彈性問題的偏微分方程都能找到數學上等價的變分形式,從而利用Ritz法,Galerkin法或者加權餘量法求解,這是有限元。
而流體力學裡,一般採用Euler描述,用場的觀點來描述流體質點的運動。相應的控制方程有可能找不到在數學上等價的變分形式,或者是相應等價的變分根本不存在,雖然也可以用有限元,現今計算流體力學好像有限元不是主流,才疏學淺不知道什麼原因。
我知道我們學校有些老師用粒子法來描述流體運動,不知道具體幹啥。應該是各有各的優勢,各有各的應用領域。從數學上來說。
有限元是一個新的框架下的數值方法。
中國學術圈內有一些人普遍認為有限元方法是中國的馮康老先生髮明的。目前來說西方的學術圈可能會認為是馮康獨立於西方發明的有限元。總的來說,有限元和有限差分有限體積的區別在於他是在Galerkin框架下的方法。
一旦歸於Galerkin框架下,就有一整套完整的理論去分析有限元的誤差,穩定性等等。這一整套的理論是非常優美的。例如最基礎的Lax-Milgram引理。首先,數學家對於一個數值方法,在乎的角度也許於工程師有很大的不同。
題主所說的Basis Fuction(Shape Fuction),Mass Matrix, Stiffness Matrix在分析裡面是不會出現具體形式的。這是theory和implementation的區別。所以在Galerkin框架下,有限元只是其中的一個方法。
在同一框架下的還有spectral method(譜方法),DG(間斷有限元)。這些方法基本有完備的數學理論支撐。(DG現在還沒有完全的理論分析)對於一個數值方法,首先要考慮的是Well-Posedness。即解是否存在,是否唯一。然後是誤差,穩定性分析。如果一個方法,少了任何一環,在數學上是沒有人會care的。即便有非常好的計算結果。再次要弄清楚,我們提到的有限元有限差分有限體積,都是用來求解偏微分方程的數值方法。
而偏微分方程有三類,拋物,橢圓,雙曲。
基本上來說,有限元對於橢圓類方程是非常有效的。同樣譜方法也是。有限體積在雙曲守恆律的計算上有非常好的結果。另外,從數學的角度來說,學習一個數值方法,不是弄清楚他的演算法是怎麼一個過程。
要徹底地理解一個數值方法,要對它的整套分析理論熟悉。這裡面要用到比較高級的數學工具,類似於泛函分析是最基礎的工具,所以工科的學生會感到這些方法很摸不透主要原因是對它的理解還停留在應用層,不是理論層。最簡單的一個例子。
共軛梯度法。它是用來求解對稱正定線性方程組的數值方法。演算法寫出來就6-7行。但要了解它的內在機理。半個學期的數學系研究生課程不一定講的完。可以這樣類比一下。有限元的理論很豐富。
但整個框架是定的。常用的技巧也是固定的。想要深入了解,必須有數學系的背景或者相應的知識儲備。在此基礎上讀完一本好的有限元數學教材。才能有所體會。學了CFD你應該會發現流體的穩定性實在是太難太難太難控制了。曾有CFD大神說過最諷刺的就是一個最簡單一維線性對流方程我們都不能精確的求解。有限元方法這個精讀很高但是為了處理流體穩定性需要的方法超麻煩。有興趣去看看Ziewkiencz的有限元方法:流體力學,你就會發現用有限元搞流體力學多麼的肝疼!看完後我就老老實實去弄有限體積法了。
如果你學計算方法只到題目里提到的那個程度,我覺得關於有限差分、有限元的比較方面,只要記住:有限差分適用於簡單幾何,編程成本相對低,有限元適用於複雜幾何,高階的精度方法較容易實現。(當然這也不是絕對)。
深入理解計算方法,需要比較高的學習成本,這個成本約等於一個應用數學碩士的課程量(如果你要做計算格式,寫文章偏證明,那麼1傅立葉分析,2實分析,3范函分析逃不掉了,4偏微分逃不掉,5高階的線性代數跑不掉了,6數值偏微分肯定要學,計算方法可能有兩三門,7側重fem的,8側重譜方法有限差分的,9側重解線性系統的,只多不少)。我覺得不是特別必要。其他答案里提到了一些關於能量原理,變分法,解的表達都說得沒錯,可是真的不好消化。
關於FEM,FVM,FDM的歸納和總結,Nodal Discontinuous Galerkin Methods by Hesthaven 有比較適度的內容。樓上幾位已經說得很明確啦,簡單來說,就是有限元是基於偏微分方程計算,為達到收斂需要佔用大量的計算資源,而差分方程就比較簡單,直接進行代數計算。其實現在也有用有限元來計算流體的,只是因為市場及軟體推廣、商業成本等等原因,還不夠普及,當然,計算精度本身就是一個問題。 上面有人提到粒子法,其實粒子法也推廣了一陣子,似乎沒有完全推廣開來,不過它在流體力學、氣動聲學等等方面有其優點,具體我不了解,不過它在表達形式上相當直觀。
推薦閱讀:
※《生活大爆炸》里提到的圈論是什麼?
※光的本質是什麼?具有哪些本質屬性?
※楊振寧先生回歸中國國籍是否會使得CEPC再無建成希望?
※為什麼量子力學的測量這個過程是個算符?
※矢量積這個概念是怎麼產生的?為什麼人們會想到用一個垂直於原來平面的向量來表示這個運算結果?這樣做有什麼好處?