有限元弱形式a(u,v)=f(v)中的v?

如題,用有限元時一般需要推導偏微分方程對應的弱形式a(u,v)=f(v),其中,u是待求解的量。我看書上、文獻里對v的描述都是:v取解空間中的基函數。

我的問題是:

1、在我求解方程a(u,v)=f(v)之前,我並不知道解空間的基函數是多少,怎麼確定v是多少?

2、在程序實現過程中,v取一個值還是多個值?其個數根據什麼確定?

求大神指點!


從基本的一維線彈性問題為例講一下有限元方法中v的意義和處理

  • Strong Form(強形式): Governing Eqn.s and B.C.s

一維線彈性問題只要有合適的邊界條件就是well-posed problem,其Strong Form為

frac{partial}{partial x}left(EAfrac{partial u}{partial x}
ight)=0qquad inquadOmega

u=gqquad on quadGamma_g

sigma=Efrac{partial u}{partial x}=hqquad onquadGamma_h

以上分別是momentum balance,Dirichlet and Neumann boundary conditions

u是位移場(未知量, primary variable),假設body force為零,彈性模量E和截面積A均為1,當然方程本身不重要。

  • Weak Form (弱形式):Method of Weighted Residual (v的意義)

一般直接用Method of Weighted Residual (加權餘量法?)構造弱形式,當然例子中的方程是典型橢圓方程,也可以通過變分法直接構造弱形式,不過對於以一般的偏微分方程還是MWR更加普遍。

概念上來看,對於Governing eqn的餘量u_{,xx},對其加權v的空間積分為零;int_{Omega}vleft(frac{partial}{partial x}left(frac{partial u}{partial x}
ight)
ight)dOmega=0;此處v又稱weighting function(權),是一個任意函數,所以Weak Form成立的條件是餘量處處為零,也就回到了Strong Form,這是概念性的理解一下Strong Form和Weak Form 為什麼等價,數學證明可以參考相關文獻。

作點變形可以在Weak Form中也引入邊界條件

int_{Omega}vleft(frac{partial}{partial x}left(frac{partial u}{partial x}
ight)
ight)dOmega=
int_{Omega} frac{partial}{partial x}left(vfrac{partial u}{partial x}
ight)dOmega-
int_{Omega} frac{partial v}{partial x} frac{partial u}{partial x} dOmega=0 Integration by parts

int_{Omega} frac{partial v}{partial x} frac{partial u}{partial x} dOmega=int_Gamma vfrac{partial u}{partial x}dGamma
=int_{Gamma_h+Gamma_g} vfrac{partial u}{partial x}dGamma=int_{Gamma_h} vcdot h dGamma Divergence theorem

然後有Weak Form的嚴格定義

Find uinmathcal{U} , such that

int_{Omega} frac{partial v}{partial x} frac{partial u}{partial x}  dOmega=int_{Gamma_h} vcdot h dGamma
qquadforall vinmathcal{V}

mathcal{U}=left{ u(x)| u(x) in W^{1,2} , u(x)=g on Gamma_g 
ight}

mathcal{V}=left{ v(x)| v(x)in W^{1,2} , v(x)=0 on Gamma_g 
ight}

W^{1,2}是Sobolev空間

  • Finite Element Galerkin Weak Form (v如何處理)

MWR有多種形式,最有名的當然是Galerkin法,概念上可以理解為weighting function和trial solution用同一個函數空間,那麼其在有限元法下就體現為它們使用相同的形函數在單元內插值。那vu能不能用不同的函數空間?當然可以,比如Petrov-Galerkin法中就不一樣。其實可以觀察之前Weak Form的推導,如果不用分部積分,那麼weighting function只需要連續就行了(C_0),而trial solution需要兩次可導(C_2),這樣如果應用Galerkin法,就必須使用高次形函數。

FE Galerkin Weak Form 為

sum_{e=1}^{N_{el}}int_{Omega^e} frac{partial v}{partial x} frac{partial u}{partial x}  dOmega^e=sum_{e=1}^{N_{el}}int_{Gamma_h^e} vcdot h dGamma^e 此處求和符號嚴格來說應該是Assembly符號,反正表示local(element) stiffness和residual,結合為global stiffness和residual(等式的左右兩邊).

單元內應用有限元插值函數N

v=N^av^aqquad u=N^av^aqquad (Einstein notation)

a是每個單元的節點數目

則residual的矩陣形式是

R^av^a=N^av^ahquad
R^a=N^ah

剛度的矩陣形式

(v^a)^TK^{ab}u^b=N^a_{,x}v^aN^{b}_{,x}u^bquad K^{ab}=N^a_{,x}N^{b}_{,x}

最後需要求解的方程是

K^{ab}u^b=R^a

a,b是矩陣行列編號

總結一下

  1. 弱形式不是偏微分方程的對應,是偏微分方程及其邊界條件的對應,兩者嚴格等價;
  2. v是weighting function,是任意函數,其函數空間只要滿足其在Weak Form中的連續性和可積行;
  3. Galerkin法中,weighting function和trial solution用相同的數值(函數)空間;
  4. v不需要確定,本身應該是任意函數,應用有限元法求解的時候會在等式左右兩邊(consistent tangent moduli和residual)中都出現而消去。


前面的答案都已經解釋的比較清楚了,這裡試著從弱形式背後的邏輯來稍作補充,希望有所幫助~

首先多物理場的數值模擬是基於解PDE(偏微分方程)的。這些PDE通常是由一些守恆法則推導而來的,例如質量守恆,能量守恆,動量守恆等等。而弱形式的基本思想就是把這些PDE轉化為在一個域上的積分,以一種更快捷但不一定完全準確的方式得出這些PDE的解。這裡舉個簡單的例子。

這裡以一維的靜態傳熱為例(1D heat transfer at steady state),假設熱源為零。由傅里葉定理可得:

q(x)=-kfrac{partial T}{partial x}

其中k為傳熱係數,q為heat flux。T為溫度場,就是待求的未知量。再根據能量守恆,我們可以得到PDE:

frac{partial q(x)}{partial x}=0

對於這個例子,這個微分方程確實是手解都能解,但是我們試著從另一種思路來考慮它。

想把這個PDE轉化成一個域上的積分,最簡單粗暴的想法就是對它在整個域上做積分(這裡設這個域為0&int_{0}^{1}frac{partial q(x)}{partial x} dx=0

原PDE的解肯定是這個積分的解,但是這個積分的解不一定是原PDE的解。而且仔細想想,這個形式實在是太「弱」了。 原PDE是要求frac{partial q(x)}{partial x}在整個域上處處為零,而這個積分只是要求frac{partial q(x)}{partial x}在整個域上的平均值為零。這顯然是不合理的。所以需要進一步提高。

於是我們進一步思考,其實在某一點滿足frac{partial q(x)}{partial x}=0frac{partial q(x)}{partial x}在這點附近的很小的一個區域的積分為零是可以近似等價的。把這個思路擴展的整個求解域,於是我們可以用一組很多極小積分區間的積分來近似原PDE,如下:

int_{0}^{0.01}frac{partial q(x)}{partial x} dx=0

int_{0.01}^{0.02}frac{partial q(x)}{partial x} dx=0  ,

......

int_{0.99}^{1}frac{partial q(x)}{partial x} dx=0

積分式子的數量越多,那解就越近似於PDE的精確解。可以想像,如果積分區域無限小,積分數量無限多,滿足這組積分的解就是PDE的精確解。

順著這個思路,我們換一種方式。那就是將被積函數乘以一個權函數(weighting function)再在全域上積分。而每個權函數	ilde{T}(x)都只在一個很小的區域內non-trivial。如下圖所示:

不難理解,這種方法和之前說的在一個極小區域積分是近似等價的,只要我們有很多個	ilde{T}(x)。於是我們就可以得到:

int_{0}^{1}frac{partial q(x)}{partial x} 	ilde{T}(x) dx=0

在有限元中,我們知道會用形函數(shape function)對節點值進行插值,而形函數正好就有上述權函數所需要的性質,即在某一小區域non-trivial,其他地方為零或接近零。所以有限元中通常將形函數作為弱形式的權函數。

由於q是T的一階微分,frac{partial q(x)}{partial x}實際上是T的二階微分。所以然後我們可以用分部積分,降低微分的階數,得到:

-int_{0}^{1} q(x)frac{partial 	ilde{T}(x)}{partial x}  dx+q	ilde{T}(x)|_{x=1}- q	ilde{T}(x)|_{x=0}=0

帶入q(x)=-kfrac{partial T}{partial x} ,得到

int_{0}^{1} kfrac{partial T(x)}{partial x}frac{partial 	ilde{T}(x)}{partial x}  dx+q	ilde{T}(x)|_{x=1}- q	ilde{T}(x)|_{x=0}=0

這裡我們就得到了這個問題的完整弱形式。


  • 解空間是什麼

解空間的基函數的通俗說法就是:與微分方程邊界條件一致的基函數。

在求解微分方程之前,對方程解的了解就只有滿足邊界條件(一般是齊次邊界,不是齊次的也變換成齊次的,齊次簡單說就是邊界上等於0),不滿足邊界條件的函數必然不可能是方程的解。現在流行的有限元都是基於Galerkin法的,也就是權函數和形函數取同一組基函數。所以把方程的解表示成解空間基的線性組合,如果基函數不滿足邊界條件,顯然會導致解的錯誤,因而必須在滿足邊界條件的函數空間選基函數,也就是題目里說的解空間。

  • 要選多少個v

前面已經說了,需要把方程的解表示成解空間基函數的線性組合。函數空間基本都是無限維的,也就是說應該有無窮多個基函數。無窮個對於實際而言是無意義的,而且通過理論和經驗都能判斷,有些基函數容易出現,有些基函數則無關緊要,因而選取有限個就能達到一定精度。假設取了n個基函數,就會對應n個係數,換句話說,就有n個待求未知量,求出這n個未知量,與基函數組合得到的函數就是微分方程的近似解。

n個未知量自然需要n個獨立方程就足夠了,所以選取n個線性無關的權函數v就可以了。

上述並非是針對有限元法的,而是針對一般的加權余值法。

Galerkin法就更為特殊了,因為權函數與形函數取的是同一組基,選了個n個形函數,自然就得到了n個權函數,也就是nv

有限元法除了具有Galerkin法的特點外,另一個特殊的地方在於,形函數是根據網格節點的場變數的值通過多項式插值構造的,換句話說,劃分了網格,確定了單元類型(確定單元類型的意思就是確定插值的方式),形函數也就得到了,形函數的個數也成為所謂的自由度。

所以,有限元並不需要考慮v的個數,只要考慮網格劃分和單元類型,自然就生成全部的形函數和全部的v了。


基函數是單元上的插值用的,要看你選的有限元的次數,當用局部坐標表示時,基函數由幾個基本的形函數組成。想深入了解弱形式還是看有限元的書吧。


實際上,u和v,在嚴格的理論中,需要在Sobolev空間中討論。在一本計算數學專業的有限元書裡面,都會有嚴格的定義和有限元解的收斂性的證明。但這需要一定的數學基礎。

這裡從數值方法應用者和lz說的程序實現的角度來說說。以標量的Possion方程為例,試探函數選為基函數是方便自然的:既保證了對稱正定性,又保證了稀疏性。對稱正定性意味著可以採用CG和ICCG之類的求解器去求解;而稀疏性是有限元的又一個大優點,這主要得益於基函數/試函數具有局部性的特點,假設你對基函數/試函數選擇了一個全域性的傅里葉展開,可就沒有這麼個優點了。

試探函數可以不必選擇為基函數的,比如在積分方程的矩量法中就是這樣的,但是有些性質如正交性還是要滿足的吧。試探函數的選擇會對矩陣的性態有很大影響,有時候甚至導致離散方程是不適定的。

從lz的問題當中,可以看出lz的一個誤區是,沒有認識到,在推導過程中,試函數是一組有限維的正交的基函數所張成的,張成的意思就是說,每一個基函數是確定的,記為Ni,可以簡單定義為在基點(節點)上為1,其它基點上為0,但是表示未知場u或v時,還需要乘以一個任意的係數,記為ui或vi。只不過vi在離散形式中,可以通過化簡,從兩邊約掉,即integ(vi*Ni*divgradu)=integ(vi*Ni*f)變為integ(Ni*divgradu)=integ(Ni*f);Ni通過與微分運算元divgrad的分部積分,從而達到降次的目的,即integ(Ni*divgradu)=integ(gradNi*gradu);再將u表示成Nj*uj,方程左邊就得到一個稀疏對稱形式integ(gradNi*gradNj)uj了。怎麼樣,v的選擇實際上退化為Ni的選擇了。


參見科爾莫戈羅夫范函中傅立葉分析之前的部分,有一章對偶空間那部分,有關於求解微分方程的解釋


在你解的時候已經知道解空間是什麼了

V一般取形函數


推薦閱讀:

有限元中單元剛度矩陣的計算是否沒有意義?
研究生在學習有限元課程前需要什麼數學知識?
如果別人不相信你的 CAE 分析結果怎麼辦?
疲勞理論計算的結果真的沒有意義么?
用有限元分析法分析邊坡穩定有哪些問題?

TAG:有限元分析FEA |