有限元方法的核心思想是什麼?

有限元方法似乎是在不斷地簡化著什麼。

請問有限元方法的核心思想是什麼?在哪些層面對方程做了簡化?每一次簡化的依據和思路是什麼?


簡單的來說,有限元的核心一是求PDE(偏微分方程)的近似解,二是離散化(discretization)。

首先談下第一個核心。很多問題都可以歸結為一個泛函數(functional)。例如彈性力學中,可以寫出一個泛函數表示勢能。然後解決問題的方式便可以歸結於find a function to minimize the functional, 即找出一個函數去最小化泛函數,就像之前有人回答的最小勢能原理。想要找到這個函數,就需要用到變分法(variational method),即令泛函數的一階變分等於零。這個原理類似於找一個函數的極值是通過令它的導數等於零來求出的。一階變分等於零這個等式通過分部積分後通常可分為兩個部分,一個是governing equation,即偏微分方程(PDE)形式的控制方程,另一部分是邊界條件(boundary condition)。於是問題便轉化為了求解帶有邊界條件的PDE。工程中通常希望用簡化的方法求解PDE的近似解。近似求解PDE有多種方法,比如Strong form Galerkin, Weak form Galerkin, Rayleigh Ritz method。他們的核心思想都是設一個形式已知的近似方程(approximation function)(有限元中常用多項式(polynomial)), 然後帶入原PDE或functional來求解unknown coefficients。例如設近似方程為w=c_iphi_i(i=1,...,n)c_i就是要求的unknown coefficients,而phi_i是basis function,形式是自己設的,所以是已知的。當然,近似方程需要滿足一些條件,如滿足邊界條件,不能跳項等。由於Strong form Galerkin的近似方程需要滿足所有邊界條件(包括essential和natural),而Weak form和Rayleigh Ritz只需滿足essential boundary condition,所以有限元通常使用後兩種求解方法。關於邊界條件的劃分和近似求解PDE的具體方法如果需要我可以再日後補充。

第二個核心是離散化。一個連續的介質會被離散成數個簡單的基本幾何單元,即element。這些elements是通過節點(nodes)相互聯繫。這個過程就是通常所說的網格劃分(mesh)。對於每一個element都可以用上一段的方法進行求解,然後通過節點間的聯繫將element的結果組合成整個domain的結果,即assemble the stiffness matrix。

P.S. 由於這門課是國外學的,有些名詞不確定中文的準確翻譯,所以用英文注釋了。有些實在不知道怎麼翻的就直接用英文了,還請諒解,希望回答對您有幫助!


有限元法(Finite Element Method)是基於近代計算機的快速發展而發展起來的一種近似數值方法, 用來解決力學,數學中的帶有特定邊界條件的偏微分方程問題(PDE)。而這些偏微分方程是工程實踐中常見的固體力學和流體力學問題的基礎。有限元和計算機發展共同構成了現代計算力學 (Computational Mechanics)的基礎。有限元法的核心思想是「數值近似」「離散化」, 所以它在歷史上的發展也是圍繞著這兩個點進行的。

  1. 「數值近似」

由於在有限元法被發明之前,所有的力學問題和工程問題中出現的偏微分方程只能依靠單純的解析解(Analytical Solution)得到解答。這種方法對數學要求很高,而且非常依賴於一些理想化的假定(Assumption)。比如在土木工程中樑柱計算中出現的平截面假定,小應變假定,理想塑性假定。這些假定其實是和實際工程問題有很大偏差的,而且一旦工程問題稍微複雜一些我們就不能直接得到解析解,或者解析解的答案誤差過大。而有限元法把複雜的整體結構離散到有限個單元(Finite Element),再把這種理想化的假定和力學控制方程施加於結構內部的每一個單元,然後通過單元分析組裝得到結構總剛度方程,再通過邊界條件和其他約束解得結構總反應。總結構內部每個單元的反應可以隨後通過總反應的一一映射得到,這樣就可以避免直接建立複雜結構的力學和數學模型了。其總過程可以描述為:

  • 總結構離散化 — 單元力學分析 — 單元組裝 — 總結構分析 — 施加邊界條件 — 得到結構總反應 — 結構內部某單元的反應分析

在進行單元分析和單元內部反應分析的時候,形函數插值(shape function interpolation)和 高斯數值積分(Gaussian Quadrature)被用來近似表達單元內部任意一點的反應,這就是有限元數值近似的重要體現。一般來說,形函數階數越高,近似精度也就越高,但其要求的單元控制點數量和高斯積分點數量也更多。另外單元劃分的越精細,其近似結果也更加精確。但是以上兩種提高有限元精度的代價就是計算量幾何倍數增加。

為了提高數值近似精度同時盡量較少地提高計算量,有限元法經歷了很多發展和改良。下圖就是一典型的有限元問題,因為模型中間空洞部分幾何不規則性,結構用有限三角單元劃分。由於在靠外區域,結構反應變化程度不是很大,因此劃分的單元比較大和粗糙,而在內部,應力變化比較大,劃分也比較精細。而在左邊單元劃分最密區域,有應力集中現象(如裂紋問題的奇異解現象),所以又有相應的高級理論(比如non-local theory)來指導這部分的單元應力應變計算。結構被選擇性地離散,和高級理論構成了有限元發展的主要研究方向。

2. 「離散化」 離散化和相應單元特性和收斂研究也是有限元中一個重要研究領域,總的來說,有限單元和他們組裝成的總體結構主要分為:

  • 1-D 單元 (1-D element)

桿單元 (bar element) ------ 桁架 (truss)

梁單元 (beam element) ------ 框架 (frame)

板單元 (plate element) ------ 殼體 (shell)

  • 2-D單元 (2-D element) ------ 平面應力體 (plain stress) 和 平面應變體 (plain strain)

三角單元 (triangle element)

四邊形單元 (quadrilateral element)

多邊形單元 (polygonal element)

  • 3-D 單元 (3-D element) ----- 立體結構 (3-D problem)

三角體 (tetrahedrons element)

立方體單元 (hexahedrons element)

多邊體單元 (polyhedrons element)

具體的分類和單元形狀見下圖

可以看到每種單元又可以提高形函數的階數(控制點 node 數量)來提高精度。很多有限元研究也集中在這個領域。比如研究新的單元引用於結構動力反應以減小數值震蕩,比如用3-D單元去模擬梁單元等等。其實理論上來說這個領域可以有無限可能,因為對精度和數值穩定的追求可以是無限的。

3. 「光滑邊界」 和 與CAD的交互問題

其實這個算不上有限元的核心思想,不過是現在有限元研究熱的不能再熱的領域了,就是Hughes提出的「NURBS」有限元法,它的原理是用空間樣條曲線來劃分單元。如第一幅圖所示,傳統的有限元在處理不規則邊界的時候一般都是較多的單元和用三角單元,多邊形單元來解決,而且單元控制點都是和單元在一個平面上。 而NURBS 單元的控制點脫離了單元本身,並且利用B-spline理論上可以把單元的光滑程度(continuity)提高到無限,而且不會顯著提高計算量。

發展NURBS的另外一個好處是,在建模中常用的CAD軟體是用B-spline來進行模型建立基礎的,而NURBS 正好也是用用B-spline作為basis。 所以CAD和NURBS的交互可以非常簡單和高效的,甚至可以說是無縫連接。因此在工業界中十分複雜的模型都可以用CAD進行建模,再用NURBS進行有限元計算,如下圖。現在成噸的有限元paper都來自這個領域,因為有限元的基本理論基本已經成熟和robust,利用高性能計算機進行大尺度(large-scale)和高複雜結構模擬也是有限元發展的一個主要方向。

P.S. :需要提到一點的是,沒有高性能計算機技術的大力發展,就不可能有有限元的發展。有限元的理論最早是出現在1960年代,直到1970之後才隨著計算機的發展而迅速發展。而現在發展迅速的計算力學也是得益於高性能計算機的發展。可能當某一天計算機處理速度可以強大到我們可以用最複雜,最密集的單元完美快速地模擬任意結構,我們也不用再操心精度問題了。 所以我覺得有限元的核心還需要加上計算機技術的發展吧。


謝@Ch』enMeng邀

從邀請之日我就在思考這個問題了,但最近實在太忙,懶癌又作祟,因此拖了這麼久,題主提了個好大的問題,@Ch』enMeng又表現的那麼謙虛,都讓我不敢下手了,等了這麼久,也沒有人添加一份答案,我就寫點自己淺薄的理解吧

從模型簡化的角度來看,有限元的所有結構單元(structure element)基本上都基於材料力學的基本假設,比如桿是均勻的,梁是遵守平行界面假設的,我們平時雖然說有限元的最終目的是結構的優化,但原始計算結果卻是節點的受力(嚴格的說是節點的位移U),因此,有限元的計算其實和材料力學是相同的道理,如果我們將模型按照截面法進行分離,分離到最原始的元素也就是我們的單元。下圖所示的變截面桿,如果我們按照材料力學的方法計算,無非是在變截面處進行分割,如果按照有限元,也是在變截面處劃分成兩個單元。

但是,材料力學在進行計算時需要的簡化太嚴格,無法在複雜的結構中應用(比如上述的桿件有好多個截面和材料呢)。在有限元中,基本的單元其實就是材料力學的基本構件,單純的材料,規則的幾何外形等等,這些假設在單元足夠小的前提下是成立的,但當組裝成複雜結構後,過小的單元又會帶來數值計算上的誤差放大。

從數學計算的角度來看,有限元由於其數值方法的本性,在計算中需要做大量的簡化,比如,計算機無法像牛頓-萊布尼茲那樣尋找原函數來積分,只能採用數值積分方法,這就會帶來誤差,還比如解方程所需要的迭代等等,就像@Ch』enMeng所說的,有限元是一種工程方法,我們大多數時候更需要的是一個穩定的解。

所以,在對模型進行網格劃分的時候,並不是單元越小越好,也不是所有單元採用實體就更好,很多時候,我覺得採用結構單元更有效(比如現在主流的橋樑分析軟體都是基於梁的,沒有實體單元),那簡化的原則是什麼呢,就是看它的受力,如果是桿的受力特點,就簡化為桿,如果是桿件又承受彎曲了呢,那就簡化為梁,如果結構無法簡化成桿,梁,殼的時候,那就用實體。


發現很多人對有限元的理解並不是特別深刻。有限元只是求解偏微分方程的一種數值方法而已。所以理解有限元你必須要反思你學過的數值方法,比如數值分析的時候你是如何近似一個函數的,如何近似積分,近似導數??我們會發現數值方法的核心是 空間內的一組基來近似 空間內的複雜形式。簡單說就是利用 一組簡單的表達式來近似任何複雜的形式。拉格朗日插值不就是採用非常簡單的基函數來形成的。數值積分我們都是劃歸到了對多項式的積分上。。。。

理解了數值方法的核心再理解有限元就簡單多了,有限元求解的對象是偏微分方程。考慮偏微分方程,最終的解的定義域是在一個區域內的,這個區域內的解析表達式是非常困難的。這時候理所當然大家就會考慮怎麼求解這個問題呢?肯定是在這個區域內找一些簡單函數去近似擬合,比如利用多項式 利用周期函數等等。。。。但是在這樣求解的過程中又會發現,我們在整個區域內近似是非常困難的,對於很多問題還是不是那麼容易求解,試想一個形狀非常不規則的區域???這時候,科學家就會萌生了能否我把整個區域的問題劃分成一系列的簡單區域,簡單區域上問題求解是非常簡單的,最終的結果把所有區域結合起來不就可以了嗎? 這時候科學家又會聯繫到,結構力學中的桿件結構,因為在桿件結構中已經有了這樣的方法。所以經過一系列的推導就有了這樣分片求解問題的方法 即有限元方法。

有限元並沒有什麼複雜的,樓主也不要被什麼最小勢能,變分原理嚇住,因為這些都是在逐步完善有限元方法過程中理論的完善,最小勢能,變分原理是為了建立有限元的弱形式,或許你會問 弱形式是什麼呢? 舉個例子,如果我們分析的微分方程式二階的,也就是方程中含有關於自變數的二階導數,那麼我們建立的近似函數是不是也要具有二階呢?答案是肯定的,事實證明,階段太高是非常不利於問題求解的,那麼就會思考可不可有一種等效的形式,但是階次又是比較低的?當然有了,這就是弱形式,試想如果可以用一次函數去近似是不是非常簡單呢?不得不說這是有限元方法得以這麼盛行的非常重要的理論基礎。


1965年馮康在《應用數學與計算數學》上發表的論文《基於變分原理的差分格式》,是中國獨立於西方系統地創始了有限元法的標誌。

--馮康(中科院院士、數學家)


Variation


有限元的核心是迦遼金法+局部試函數。前者使問題轉化到弱解,後者使生成的線性系統稀疏,以便於求解。詳述如下。

數值求解偏微分方程都靠這樣那樣的離散。用迦遼金法離散PDE,無非三步:

1 表達未知函數為有限個函數的疊加

2 用另一組函數內積離散後的方程殘差

3 迫使殘差內積為零以形成線性系統

如果1、2步用同一組函數離散和內積,這是布諾夫-迦遼金法,否則是彼得羅夫-迦遼金法。所以里茲法用三角函數來離散未知函數無非是迦遼金的特例。推廣開說,傅立葉離散不過也是把函數用三角函數表達成和的形式。

當然,如果用傅立葉離散再用傅立葉級數作內積,得到的線性系統的係數矩陣是稠密的,不利於於快速數值求解。這就是有限元的第二個要素:試函數在絕大部分定義域為零。數學上這叫compact support(緊支撐)。

因為這第二個要素,在第二步作內積的時候生成的系統是稀疏和條帶的。想想教材常用的一維有限元例子,在每個單元用線性函數支撐,同一個試函數只在一個單元不為零。結果就是它只和相鄰單元在矩陣對應位置不為零。

這就是有限元的基本思想。有空再在專欄展開說。

模擬專欄

http://zhuanlan.zhihu.com/takisword


一直覺得有限元方法說白了就是解微分方程。基於物理模型建立的方程用數值方法求解,主要就是變分處理獲得弱積分形式,然後離散求解,是一種數學演算法。

歡迎關注專欄:http://zhuanlan.zhihu.com/fea-and-vp


這個問題很大,需要很長的篇幅才能顧及到有限元理論的幾大重要組成部分:Ritz 弱形式,離散化,多項式近似理論,等參元,收斂性分析...

大部分內容都在其它答案中提及了, 這裡我只想說說我自己的感悟。以前總覺得有限元不過就是很完善的技術,把很多已有的方法(有限差分法,Galerkin法,插值法)整合到一起。後來逐漸學習更多的數學PDE知識,和接觸更多的不同演算法,才漸漸意識到有限元的完美:也就是能在分片連續基礎上,結合泰勒展開和基於希爾伯特空間的泛函理論能給出精確的誤差、收斂性、唯一性分析。一切恰到好處、天衣無縫。

而很多基礎有限元提出的新方法,往往就失去簡單精確的誤差分析了。

所以從這個角度來說,我覺得有限元的核心就是在能解析的方法中做到最通用,而在通用的數值方法中的方法中做到最簡單和能解析。


降維和線性化吧, 通過選定基函數(每個離散單元的形函數)把偏微分方程的解集從無限維的函數空間降為一個有限維的線性空間, 然後求出方程的解相對於基函數的坐標就可以了.


The reason we use finite elements is to simply complex engineering problems that require the use of differential equations.

由於解決微分方程在工程中較為複雜,所以用有限元方法可以簡化計算得出近似解

當然分割的element越多,精確度越大,從而計算量也會增大,所以基本上現在都是用有限元軟體來解決問題。

當然簡單的beam,或truss,還是可以手解的。

其實學有限元方法最重要的還是要理解它的原理,怎麼分割,分割成什麼形狀,等等等等。

比如分割成長方形(類似wall 牆體)

比如分割成三角形

不同形狀的分割得出的結果也會不同所以要定義好分割的形狀。同時邊界條件也會影響有限元的結果。在這就不一一舉例子了。

希望回答對你有幫助!


個人理解,有限元的發展,其實得從物理的最小勢能原理說起。在有限元還沒被提出之前,物理學家已經開始大量的運用最小勢能原理,把方程(如彈性力學方程)轉化為變分形式,再選取適當的試探函數空間去求解該方程。物理學家逐漸發現試探函數空間難以構造,最後的方程往往也不是代數方程難以求解。

有限元的出現帶來了以下幾點好處,所有的試探函數空間都可以選取分片多項式之類的函數(當然也可以是其他的),試探函數空間不用單獨構造。因為是有限個自由度,最後離散形成的矩陣一定是可解的代數方程組(非線性方程離散形成非線性方程組)

有限元理論,變分方程的解都是在sobolev空間里,所以sobolev空間理論,如sobolev空間(包含分數階的),嵌入理論等是有限元的基礎。其核心理論在於穩定性和相容性的分析,這裡說的穩定性是指有限元解的存在唯一性,一般可以由infsup條件得出。而相容性是說有限元解和真解之間誤差的收斂速度,協調元的可以由cea引理和一些逼近理論給出(如插值誤差估計),非協調元的一般需要單獨分析它的非協調項。

以上是個人認為有限元比較重要的地方。


Thomas Hughes 鎮樓!

相比較已有答案而言,我的回答偏數學一點,既然題主問了「每一步的依據是什麼」,那麼要回答清楚就必須要用嚴謹的數學語言。

以2D的傳熱問題為例。傅立葉定律表述為q_i = -kappa_{ij} u_{,j} 其中q是heat flux, kappa是conductivity matrix,u是溫度。對於一個二維的域(大寫omega表示),函數f作用在整個域上(理解為載荷)。我們的問題是給定了載荷,已知邊界上某些點的heat flux, 以及另一些點上的溫度,求整個域上各個點的溫度。

用數學語言來描述就是:

已知f, g, h, 求u 使得q_{i,i} = f \
u=g\
-q_in_i = h 

第一個方程里f是外界載荷,是給定的,在傳熱問題中就是熱源了,定義域是整個域,用大寫omega表示;第二個方程的定義域是Gamma_g,意思是在Gamma_g上的點的溫度是已知的;第三個方程的定義域是Gamma_h,意思是在這個Gamma_h上的點的heat flux是已知的。

這個表述方式叫做strong form,記作&。接下來介紹問題的weak form,記作&,數學上可以證明&和&是完全等價的。證明不難,主要技術是散度定理和分步積分,但為省事我就不寫出來了。

首先引入兩個空間,一個叫trial solution space用小寫delta表示,一個叫variation space用V表示,trial solution space里的函數都滿足u = g on Gamma_g,也就是我們要求的解;variation space里的函數都滿足 u = 0 on Gamma_g。那麼&的表述是這樣的:

給定f,g,h,求u屬於delta使得對於所有的w屬於V都有

-int_{Omega}w_{,i}q_idOmega = int_{Omega}wfdOmega + int_{Gamma_h}w_{,i}q_idGamma

如果令a(w,u) = int_Omega w_{,i}kappa_{ij}u_{,j}dOmega\
(w,f) = int_Omega wf dOmega\
(w,f)_Gamma = int_{Gamma_h}whdGamma 那麼&就可以寫作a(w,u)=(w,f)+(w,h)_Gamma

為什麼要搞出個weak form來?它的意義在於引入了兩個空間,然後說對於這個空間里的所有函數都必須滿足這個式子。那麼自然我們就可以像線性代數里一樣選定一組「基底」來表示這個空間了。

到目前為止我們沒有對問題進行近似,接下來是網格的登場,用delta^h, upsilon^h作為原本delta, upsilon的近似。把將要求的u分解為v和g ,u^h = v^h + g^h,v屬於variation space g屬於trial space. 那麼問題就可以改寫為:a(w^h,v^h)=(w^h,f)+(w^h,h)_Gamma-a(w^h,g^h)這叫作Glerkin form,記作&

注意從&到&是一種近似,近似在我們將原本的域離散成了多個元素的組合。

接下來是shape function的引入,shape function有n(節點數)個, 用N(x)表示,它們的作用在於插值表示其它非節點處的值。這些函數有個特點就是「作用範圍」很小,它們只在節點周圍的若干個element上有值,其它地方一概為0。這樣設計的意義重大,就是我們可以真正從element的角度考慮問題,再將多個element組合起來。有了shape function之後,問題就可以寫為

sum_{Bin{eta-eta_g}} {a(N_A,N_B)}d_B =(N_A,f)+(N_A,h)_Gamma-sum_{Bin {eta_g}}a(N_A,N_B)g_B, Ain{eta-eta_g}

d是節點上的值,未知;N是shape function是已知的 g h都是已知的,至此問題其實就變成了

Kd = F 了, 在力學中,K可以稱為剛度矩陣,F稱為外力,d是形變。 我們把這個叫作 Matrix Form,記作&。 實際操作中,K和F都是通過先寫出每個element的k 和 f再進行組裝。得到全局的K, F之後剩下的事情就是解這個方程。雖然這個矩陣通常很大,但是shape function以及其它一些因素決定了它是稀疏矩陣,於是可以用一些已有的數學方法求解。

總結一下,對於有限元問題,我們首先用strong form描述問題,然後通過引入trial solution space和variation space推導出weak form,二者等價;接著進行離散得到Glerkin form,這一步有近似;最後通過形函數得到矩陣形式。

<S> = <W> approx <G> = <M>

關鍵技術是將問題離散化、形函數插值。整個方法的核心是保證&中對Omega的積分不變。

寫完之後自己讀一遍,我確信如果讀者沒有系統學習過有限元理論是完全看不懂的。但是想真正理解有限元,還是需要從理論學起。推薦圖中的書。


有限元的思想是通過變分法,將一個求解給定邊界條件下的二階偏微分方程的問題轉化為一個求解一個一階偏微分方程極值的問題。而這個求解極值的問題則假設其解是由若干個基線性疊加而成,最終將問題轉化為求解這些基的係數的問題。


先分解再合併,網格劃分是分解,從單剛到總剛是合併,用吳文俊的話說就是把質的困難轉化成量的複雜!計算機處理量很厲害,所以用計算機來處理這些多卻不複雜的計算。

本質上把一個困難的問題轉化成若干個簡單的問題的疊加!


變分法?


有限元方法的核心思想,從最初創立理論的大學問家,到今天的教授,到應用方面的工程師,理解是大不相同的。這個問題的答案可以有很多種。比如每一本有限元教科書的前言都會談到那個作者本人的理解。

從一個工程師的角度看,有限元方法是將一個真實的工程問題,比如橋樑,樓房,機械,汽車,等等,和一個等效的可以進行計算的模型對應起來,或者說是一種建立數學模型的方法。這個數學模型包括了原結構的幾何,材料,荷載,約束,等等對等數據。

一個好的工程師應該了解有限元的歷史,理論等。所有的理論歸根到底是「等效」的意義是什麼?怎麼就算等效了?為什麼網格越小,等效性就越好?即所謂「收斂性」。

但是對工程師來說,更重要的是,你的數學模型和物理實體是怎樣對應的。簡化的根據是什麼?引入誤差的原因是什麼?求解器的限制是什麼?你往往需要有幾個解析解在手上隨時對照,校驗你的建模方法是否有效。而且你要不斷地和試驗結果對比。


大問題化小:離散;

複雜解近似:變分。


呵呵上面回答都挺好,但是太教科書了,我來試試用自己的語言聊一下。

傳統的解析解方法求出的位移和應變是空間的連續函數,也就是給出了每一個點位移和應變的精確解(當然是在一定假設下,比如線彈性)。幾何模型複雜的情況下解析模型難以求解,所以退而求其次,只要求在一些離散點上的解能夠滿足平衡方程和調和方程就行了,那麼其他地方就用離散點上得到的結果進項加權擬合近似。這也就是為什麼mesh越細越好的原因。上面這個解釋只是形象化,沒有嚴格的按照能量法和變分原理來,因為這兩個東西實在難以用平實的語言說清楚。

理解有限元更好的方法是考慮裂紋問題,因為裂紋尖端的應力/應變會隨著網格的細化不斷增大(當然大家知道解析解給出的結果是正無窮,還是用線彈性假設)。也就是說裂紋尖端在用有限元的情況下,由於網格的存在,變形被束縛住了。


有限元核心,其實是在有限維有限元空間中,尋求一個逼近無限維空間(索伯列夫空間)的,在廣義導數意義下,滿足控制方程和邊界條件的解得一種演算法。希望大家批評指正!


推薦閱讀:

零基礎如何學習abaqus?
abaqus有限元分析中,運動耦合的控制點到底怎麼理解?
有限元中,分析複雜裝配體,考慮計算機計算能力的基礎之上,不論是不是薄板件,都用實體單元類型,可以嗎?
說一說radioss、optistruct、nastran、abaqus的優缺點。各用於什麼場合?
關於土木類學生有限元理論需要掌握到何種程度?

TAG:有限元分析FEA |