顯式(explicit)和隱式(implicit)這兩個詞在有限元分析中大家可能經常看到,特別是涉及到動力學分析時。但其實廣義的說他們分別對應著兩種不同的算法:顯式算法(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)
考慮常微分方程:
初始條件:
設為每一步的時間步長, 在Tn時刻,. (n=0,1,2,3...),在T(n+1)時刻有:
所以在顯式算法中,T(n+1)時刻的值由T(n)時刻決定,也就是說當前時刻的值由上一時刻的值決定。
隱式算法(implicit method)(backward Euler method)
考慮同一個方程,在T(n+1)時刻有:
所以在隱示算法中,T(n+1)時刻的值不光由T(n)時刻決定,還由當前時刻T(n+1)決定。也就是說當前時刻的值由上一時刻和當前時刻的值共同決定。隱式算法往往需要求解二次方程。
我們來看看一個具體事例:
設常微分方程:
根據上面的方法,對於顯示算法有:
得出:
對於隱式算法有:
導出二次方程:
求解得:
所以很明顯,在隱式算法中,要求得K+1時刻的值,就需要求解二次方程的根。
關於收斂性
顯式算法的過程(藍色為真實值)
隱式算法的過程(每個時間步長中,通過Newton–Raphson method算法不斷進行收斂迭代,直至接近真實值為止)
時間步長(time integration)的依賴性(時間變量只在動力學中涉及)
運用上面的方法,我們以方程為例,通過數值算法求得f(u)。當把時間步長取為1時,顯式(explicit)和隱式(implicit)的結果如下圖所示:
可以看出,隱式算法是絕對收斂的,每一步都沒有偏離真實值,而由於時間步長取得很長,所以顯式算法的結果遠遠偏離了真實值。
當把時間步縮小到0.05時,顯示算法的結果如下圖所示:
可以看出,當把時間步取得很小時,顯示算法可以很接近真實值。
上面主要講了隱式和顯式算法的差別,下面我們來看看這兩種方法在動力學分析中的運用和差別。
動力學分析(Dynamics Analysis)
靜力學(static)分析不考慮質量/阻尼和時間,而動力學分析需要考慮系統阻尼和時間的變化。
首先大家要知道有限元分析FEA的輸出是什麼,雖然我們可以從仿真後處理中得到很多的結果,如應力,應變,位移等等,但本質上,所有的物理量都是通過先計算出節點處的位移,然後導出應變,再通過應變根據材料力學的理論導出其它物理量的,這一點大家要記住。
在有限元分析中,動力學分析的基本方程是由如下方程導出和決定的:
[M]{a} + [C]{v} + [K]{x} = {F}
其中[M]是質量矩陣,[C]為阻尼矩陣,[K]為剛度矩陣,a為加速度,v為速度,x為位移,{F}表示外力。如果我們把方程寫為導數的形式,則有:
所以這裡的加速度,速度和位移是彼此關聯的,這很有用。
這個方程大家可能不陌生,在前面講到模態分析時提到過這個方程,當時說的模態分析是不需要考慮質量和阻尼的,所以方程也較簡單,只考慮剛度。剛度的導出大家可能不怎麼熟悉,剛度在有限元分析中佔有很重要的地位,要了解剛度的一些性質,大家可以閱讀我先前分享的資料(點擊連結:學習資源分享:科羅拉多州立大學有限元學習資料,第一章節就是主要講解剛度的)。
隱式動力學(explicit dynamic)
在動力學分析中,隱式分析直接計算位移x,而要求得位移x,就需要對剛度矩陣K進行求逆(inversion),而計算機在進行矩陣求逆時,需要耗費大量時間和計算機內存。可能有人會問為什麼需要對剛度矩陣K求逆呢,學過線形代數的都知道,要求位移x,那麼我們需要對方程做如下變動:
而,所以有:
所以對剛度矩陣K求逆是必須的。
顯式動力學(explicit dynamic)
在動力學分析中,顯式分析先計算加速度a,再通過積分算法分別導出速度v和位移x。比如一旦在時刻n求得了加速度,速度會在n+1/2時刻計算出,然後位移在n+1時刻求出(相當於一個時間步長),然後通過位移導出應變(strain),在通過應變導出應力(stress)。
可能有人會問,和隱式動力學類似,要求得加速度a,不是一樣要對質量矩陣M求逆嗎,是的,但這裡M的導出遠遠比剛度矩陣簡單很多,而且M可以簡化為對角矩陣,所以對M不需要直接求逆,通過簡單的矩陣乘法就可以得出逆矩陣。
計算的效率
在動力學分析中,顯式法和隱式法在計算時間上各有優缺點
適用範圍
雖然在計算效率上各有優勢,但總的來說,在動力學分析中,主要還是採用顯式算法,因為在動力學分析中,如頻率響應分析,響應譜分析等等,往往時間很短,要獲得較好的結果,需要取很短的時間步長來捕捉瞬時的響應,這時候顯示動力學就很有用,而且在計算時間上也具有較大優勢。
隱式算法主要還是用於時間周期較長的非線性分析(Nonlinear analysis),屬於靜力學分析的範疇,當然也包括動力學分析裡面特殊的準靜力分析(quasi-static)。
靜力學分析中是不會用到顯式算法的,動力學分析中主要採用顯式算法(特別是響應時間很短的問題),當然也可以採用隱式算法,但需要選擇較為合適的時間步長,當時間步長取得合適時,拋開計算時間,兩種算法的結果是相差不大的,同一個問題大家可以兩種方法都試一試,但總的來說,動力學分析大多數問題還是採用顯示算法的。
顯式算法的例子:
物體以高速(比如2000m/s)落在一個平板上,交互時間為0.2秒時
飛機著陸時的瞬時響應
隱式算法的例子:
鈑金成型過程的非線性分析