6-有限元之顯式算法和隱式算法

最近在學有限元,看到不少資料都提到了 EXPLICIT ALGORITHM 和IMPLICIT ALGORITHM,很是費解,查詢到一篇文章寫的不錯,特在此與大家分享,文章出處:公眾號 CAE&CFD

顯式(explicit)和隱式(implicit)這兩個詞在有限元分析中大家可能經??吹剑貏e是涉及到動力學分析時。但其實廣義的說他們分別對應著兩種不同的算法:顯式算法(explicit method)和隱式算法(implicit method),所以不論在動力學或者靜力學中都有涉及到。

我們都知道有限元分析FEA在計算微分方程(differential equations)時,由于計算本身的局限,比如計算機儲存的位數有限,以及方程本身的復雜性,計算機運用的是數值算法(numerical algorithm)來逼近真實解的。有限元分析中數值算法的基礎是歐拉法(Euler method),歐拉法又分為forward Euler method 和backward Euler method,這兩種方法被簡稱為顯式法(explicit method)和隱式法(implicit method)。

首先我們來看看這兩種算法的區別。

顯式算法(explicit method)(forward Euler method
考慮常微分方程:

1.jpg

6-有限元之顯式算法和隱式算法的圖2

初始條件:

2.jpg

6-有限元之顯式算法和隱式算法的圖4

設h為每一步的時間步長, 在tn時刻

3.jpg

6-有限元之顯式算法和隱式算法的圖6(n=0,1,2,3...),在T(n+1)時刻有:
6-有限元之顯式算法和隱式算法的圖7

4.jpg

所以在顯式算法中,T(n+1)時刻的值由T(n)時刻決定,也就是說當前時刻的值由上一時刻的值決定。

隱式算法(implicit method)(backward Euler method

考慮同一個方程,在T(n+1)時刻有:

5.jpg

6-有限元之顯式算法和隱式算法的圖10

所以在隱示算法中,T(n+1)時刻的值不光由T(n)時刻決定,還由當前時刻T(n+1)決定。也就是說當前時刻的值由上一時刻和當前時刻的值共同決定。隱式算法往往需要求解二次方程。

我們來看看一個具體事例:

設常微分方程:

6.jpg

6-有限元之顯式算法和隱式算法的圖12

根據上面的方法,對于顯示算法有:

7.jpg

6-有限元之顯式算法和隱式算法的圖14

得出:

8.jpg

6-有限元之顯式算法和隱式算法的圖16

對于隱式算法有:

9.jpg

6-有限元之顯式算法和隱式算法的圖18

導出二次方程:

10.jpg

6-有限元之顯式算法和隱式算法的圖20

求解得:

11.jpg

6-有限元之顯式算法和隱式算法的圖22

所以很明顯,在隱式算法中,要求得K+1時刻的值,就需要求解二次方程的根。

關于收斂性

顯式算法不存在收斂性的問題(因為不進行收斂計算),從方程中可以看出來,每個時刻的值由上一時刻所確定,所以一步一步進行下去,當時間步取得較大時,就會偏離真實值。

12.png

6-有限元之顯式算法和隱式算法的圖24

顯式算法的過程(藍色為真實值)

隱式算法是無條件收斂的,在隱式算法中,在求解二次方程的同時,會通過Newton–Raphson method算法對每一步進行迭代收斂,直至收斂到指定的偏差。如下圖所示:

13.png

6-有限元之顯式算法和隱式算法的圖26

時間步長(time integration)的依賴性(時間變量只在動力學中涉及)

顯式算法要獲得準確的結果,需要取很小的時間步長

隱式算法對時間步長要求不高,由于是絕對收斂的,往往可以取較大的時間步長。

運用上面的方法,我們以方程6-有限元之顯式算法和隱式算法的圖27為例,通過數值算法求得f(u)。當把時間步長取為1時,顯式(explicit)和隱式(implicit)的結果如下圖所示:

14.png

6-有限元之顯式算法和隱式算法的圖29

可以看出,隱式算法是絕對收斂的,每一步都沒有偏離真實值,而由于時間步長取得很長,所以顯式算法的結果遠遠偏離了真實值。

當把時間步縮小到0.05時,顯示算法的結果如下圖所示:

15.png

6-有限元之顯式算法和隱式算法的圖31

可以看出,當把時間步取得很小時,顯示算法可以很接近真實值。

上面主要講了隱式和顯式算法的差別,下面我們來看看這兩種方法在動力學分析中的運用和差別。

動力學分析(Dynamics Analysis

靜力學(static)分析不考慮質量/阻尼和時間,而動力學分析需要考慮系統阻尼和時間的變化。

首先大家要知道有限元分析FEA的輸出是什么,雖然我們可以從仿真后處理中得到很多的結果,如應力,應變,位移等等,但本質上,所有的物理量都是通過先計算出節點處的位移,然后導出應變,再通過應變根據材料力學的理論導出其它物理量的,這一點大家要記住。

在有限元分析中,動力學分析的基本方程是由如下方程導出和決定的:

[M]{a} + [C]{v} + [K]{x} = {F}

其中[M]是質量矩陣,[C]為阻尼矩陣,[K]為剛度矩陣,a為加速度,v為速度,x為位移,{F}表示外力。如果我們把方程寫為導數的形式,則有:

16.jpg

6-有限元之顯式算法和隱式算法的圖33

所以這里的加速度,速度和位移是彼此關聯的,這很有用。

隱式動力學(explicit dynamic

在動力學分析中,隱式分析直接計算位移x,而要求得位移x,就需要對剛度矩陣K進行求逆(inversion),而計算機在進行矩陣求逆時,需要耗費大量時間和計算機內存。那么我們需要對方程做如下變動:

17.jpg

6-有限元之顯式算法和隱式算法的圖35

18.jpg

6-有限元之顯式算法和隱式算法的圖37,所以有:

19.jpg

6-有限元之顯式算法和隱式算法的圖39

所以對剛度矩陣K求逆是必須的。

顯式動力學(explicit dynamic

在動力學分析中,顯式分析先計算加速度a,再通過積分算法分別導出速度v和位移x。比如一旦在時刻n求得了加速度,速度會在n+1/2時刻計算出,然后位移在n+1時刻求出(相當于一個時間步長),然后通過位移導出應變(strain),在通過應變導出應力(stress)。

可能有人會問,和隱式動力學類似,要求得加速度a,不是一樣要對質量矩陣M求逆嗎,是的,但這里M的導出遠遠比剛度矩陣簡單很多,而且M可以簡化為對角矩陣,所以對M不需要直接求逆,通過簡單的矩陣乘法就可以得出逆矩陣。

計算的效率

在動力學分析中,顯式法和隱式法在計算時間上各有優缺點

顯示動力學由于是間接求得位移x的,和前面類似,要取得足夠的精度,需要取很短的時間步長,所以需要進行很多步計算,但每一步計算需要的時間很短

隱式動力學由于是直接求得位移x,所以不存在收斂性問題,但由于動力學分析往往涉及到非線性(幾何非線性,材料非線性等),可能每一步都要進行剛度的求逆,非常耗時,但時間步長相對顯示算法可以取得很大。

適用范圍

雖然在計算效率上各有優勢,但總的來說,在動力學分析中,主要還是采用顯式算法,因為在動力學分析中,如頻率響應分析,響應譜分析等等,往往時間很短,要獲得較好的結果,需要取很短的時間步長來捕捉瞬時的響應,這時候顯示動力學就很有用,而且在計算時間上也具有較大優勢。

隱式算法主要還是用于時間周期較長的非線性分析(Nonlinear analysis),屬于靜力學分析的范疇,當然也包括動力學分析里面特殊的準靜力分析(quasi-static)。

靜力學分析中是不會用到顯式算法的,動力學分析中主要采用顯式算法(特別是響應時間很短的問題),當然也可以采用隱式算法,但需要選擇較為合適的時間步長,當時間步長取得合適時,拋開計算時間,兩種算法的結果是相差不大的,同一個問題大家可以兩種方法都試一試,但總的來說,動力學分析大多數問題還是采用顯示算法的。

顯式算法的例子:

20.png

6-有限元之顯式算法和隱式算法的圖41

物體以高速(比如2000m/s)落在一個平板上,交互時間為0.2秒時

21.png

6-有限元之顯式算法和隱式算法的圖43

飛機著陸時的瞬時響應

隱式算法的例子:

22.png

6-有限元之顯式算法和隱式算法的圖45

鈑金成型過程的非線性分析

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

TOP

33
13
48