FEA的核心思想-仿真時間步-隱式算法顯示算法

有限元核心思想

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

理解了數值方法的核心再理解有限元就簡單多了,有限元求解的對象是偏微分方程??紤]偏微分方程,最終的解的定義域是在一個區域內的,這個區域內的解析表達式是非常困難的。這時候理所當然大家就會考慮怎么求解這個問題呢?肯定是在這個區域內找一些簡單函數去近似擬合,比如利用多項式 利用周期函數等等。。。。但是在這樣求解的過程中又會發現,我們在整個區域內近似是非常困難的,對于很多問題還是不是那么容易求解,試想一個形狀非常不規則的區域???這時候,科學家就會萌生了能否我把整個區域的問題劃分成一系列的簡單區域,簡單區域上問題求解是非常簡單的,最終的結果把所有區域結合起來不就可以了嗎? 這時候科學家又會聯系到,結構力學中的桿件結構,因為在桿件結構中已經有了這樣的方法。所以經過一系列的推導就有了這樣分片求解問題的方法 即有限元方法。
有限元并沒有什么復雜的,也不要被什么最小勢能,變分原理嚇住,因為這些都是在逐步完善有限元方法過程中理論的完善,最小勢能,變分原理是為了建立有限元的弱形式,或許你會問 弱形式是什么呢? 舉個例子,如果我們分析的微分方程式二階的,也就是方程中含有關于自變量的二階導數,那么我們建立的近似函數是不是也要具有二階呢?答案是肯定的,事實證明,階段太高是非常不利于問題求解的,那么就會思考可不可有一種等效的形式,但是階次又是比較低的?當然有了,這就是弱形式,試想如果可以用一次函數去近似是不是非常簡單呢?不得不說這是有限元方法得以這么盛行的非常重要的理論基礎。




時間步理解

做非線性分析的都知道時間步的問題,這里來談談一些注意和基本概念。簡單地說,在解非線性問題的時候,我們把整個求解過程分成小段。對于結構問題,這種分段等同于把加載過程分成多個步,每步結構加載變化一點,直到完成整個加載過程。如果是動力問題,那么這個加載步可以理解為真正的時間區間(但也不一定,因為可以有子步)。如果是靜力問題,這個加載步就是很多求解器所謂的偽時間步。

容易混淆的概念是,劃分時間步這個計算步驟在原則上是和牛頓迭代無關的。因為牛頓迭代是在每個時間步內進行的子循環。直到迭代滿足收斂條件,計算才向下一步進行。這個過程圓環套圓環的過程,導致了非線性求解的一系列特點和麻煩。

第一,收斂標準的問題。這個本質上是牛頓法需要探討的,但是因為時間步必須解決這個難點,所以在這里需要說說。在固體力學里面,收斂標準一般是三種,簡稱為UPW,分別指位移(U),加載(P),和做功(W)。每個量的收斂條件,本質都是衡量所在迭代步的相對誤差。理論上講,必須三個量都收斂才能保證計算結果穩定和精確,但是如果根據問題可以放松,那么常用的量至少要保證U和P收斂。

第二,時間步的劃分問題。加載步多了求解時間長,少了不準確或者根本不收斂(因為牛頓法本質上只能求局部不動點),所以時間步的劃分是個藝術。這個問題沒有標準答案,只能說視具體情況而定。如果你的問題不太難,求解器自帶的自適應算法應該能夠自動調整步長。靜力自適應算法的本質,是計算到目前為止的時間步的收斂模式。簡單地說,如果求解器發現現在這步收斂得快,那么下一步步長就可以放寬點,如果收斂得慢或者搞不定,那么就得縮小步長?;旧鲜莻€猜猜猜的過程。

第三,動力問題時間步的問題。和靜力問題不同,動力問題有“真正”的時間,需要進行時間積分,所以時間步的劃分是根據積分算法來決定的。而積分算法應該根據具體問題來選擇。常用的算法,固體和結構分隱式和顯式:隱式基本上都在Newmark和HHT上玩系數,目的是保證精確性但又濾掉高頻的信號,而顯式基本上就是保證時間步盡量大但又不大到影響穩定。流體基本上都是在Runge-Kutta和各種向后積分法中求穩定。所以當積分法定了,時間步的選擇的大方向也就定了。普通用戶在這個時候可以和精力情形一樣,寄希望于自適應算法。動力問題的時間步自適應基本上分兩類。一類是調整步長以適應特定的結構振動頻率,一類是調整步長以適應特定的積分誤差。

第四,多尺度的問題。下面這三類常見問題,對于時間步的決定都是讓人頭疼的,本質上都是因為有空間/時間多尺度的特點: 接觸問題(固體),湍流問題(流體),激波問題(固體和流體)。工程上解決的方式,本質上都是給模型添加穩定性,即所謂的數值減振/衰減。




顯示和隱式

顯式、隱式算法,也稱顯式解法和隱式解法,是計算力學中常見的兩個概念。

1、顯式算法

基于動力學方程,因此無需迭代;而靜態隱式算法基于虛功原理,一般需要迭代計算。顯式算法,最大優點是有較好的穩定性。

動態顯式算法采用動力學方程的一些差分格式,不用直接求解切線剛度,不需要平衡迭代,計算速度快,步長只要取的足夠小,一般不存在收斂性問題。因此需要的內存也比隱式算法要少。但顯式算法要求質量矩陣為對角矩陣,而且只有在單元級計算盡可能少時速度優勢才能發揮,因而往往采用減縮積分方法,容易激發沙漏模式,影響應力和應變的計算精度。

靜態顯式法基于率形式的平衡方程組與Euler向前差分法,不需要迭代求解。由于平衡方程式僅在率形式上得到滿足,所以得出的結果會慢慢偏離正確值。為了減少相關誤差,必須每步使用很小的增量。

使用顯式方法,計算成本消耗與單元數量成正比,并且大致與最小單元的尺寸成反比;

2、隱式算法

隱式算法中,在每一增量步內都需要對靜態平衡方程進行迭代求解,并且每次迭代都需要求解大型的線性方程組,這以過程需要占用相當數量的計算資源、磁盤空間和內存。該算法中的增量步可以比較大,至少可以比顯式算法大得多,但實際運算中上要受到迭代次數及非線性程度的限制,需取一個合理值。

使用隱式方法,經驗表明對于許多問題的計算成本大致與自由度數目的平方成正比,因此如果網格是相對均勻的,隨著模型尺寸的增長,顯式方法表明比隱式方法更加節省計算成本。

顯示和隱式的應用范圍

a)在求解動力學問題時,將方程在空間上采用有限元法(或其他方法)進行離散后,變為常微分方程組F=M(u)+C(u)+K(u)。求解這種方程的其中兩種方法為,中心差分法和Newmark法。采用中心差分法解決動力學問題被稱為顯式算法,采用Newmark法解決動力學問題被稱為隱式算法。

b)在求解動力學問題時,離散元法(也有其他方法)主要有兩種思想:動態松弛法(向后時步迭代),靜態松弛法(每一步要平衡)。動態松弛法是顯式算法,靜態松弛法是隱式算法。其中沖壓成型就是動態松弛法的主要例子。

c)在求解靜力學問題時,有時候將其看作動力學問題來處理而采用動態松弛法,這是顯式算法。Flac就是主要例子。


顯式算法

隱式算法

每步求解方法

矩陣乘法

線性方程組

時步穩定性

有條件

無條件

適用問題

動力中心差分法

動力動態松弛法

靜力動態松弛法

動力Newmark

動力靜態松弛法


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

TOP

30
6