每一個做非線性有限元分析的工程師都經歷過收斂困難。在這篇文章中,我將給出一些查找收斂問題的原因以及一些常見的解決方案。
1) 檢查作業診斷信息
打開ODB并選擇Tools>作業診斷。作業診斷提供所有警告和錯誤信息,以及殘差信息。最后很有用的特性之一是“視圖中的高亮選擇”復選框。
在“警告”選項卡中,用戶可以看到數值奇點和零樞軸的位置(如果適用的話),這可能會給出造成這些警告的原因。
在“殘差”選項卡中,可以可視化具有最大殘差的節點。在這個節點上尋找收斂困難的迭代,往往會顯示模型中引起問題的區域。這個地區有什么意外發生嗎?
在“接觸”選項卡中,可以查看最大接觸力誤差和最大穿透誤差的位置。如果接觸是造成問題的原因,這可能會顯示在那里。
在接觸選項卡中,可以查看最大接觸力誤差和最大穿透誤差的位置。如果是接觸造成的,這里很可能能查到原因。
當計算出現問題時,可以查看警告信息,看是否指出了問題點。例如,求解時第一個增量步不收斂,并給出了負特征值相關信息,而第二次嘗試就收斂了,這說明時間增量步長過大導致的。而當多次反復折返不收斂時,并重復發生警告信息時,這可能說明模型存在不穩定性。有些警告是非常具體的,另一些可能有不同的潛在原因,需要更多的經驗來解決問題。
不收斂的一個常見問題是約束不足。不合理的約束會導致局部的極端變形。約束不合理分為過度約束和約束不足。當約束不足,在某個方向存在剛體位移,即某方向剛度為0,通常會見到零主元警告信息。而過度約束也可能導致零主元警告。雖然Abaqus會自動解決一些過約束問題,但并不總是都能解決,例如過約束是由于加載后發生接觸才導致的。建議檢查與過約束相關的所有警告消息。不要希望Abaqus解決所有過約束問題,而是自己要正確地定義約束。另外,看一下零主元警告的位置(那里有約束嗎?)。
接觸也是導致收斂困難的元兇之一。想想看,這并不奇怪,因為接觸的開始會造成力-位移關系的不連續性,這就增加了用牛頓法求解的難度。這就是為什么Abaqus在接觸發生變化時發生嚴重不連續迭代的原因。
接觸不收斂的一個可能原因是接觸的初始狀態.如果模型中存在依靠接觸來獲得穩定(約束),并且最初沒有接觸,那么模擬可能會有不收斂困難。這在施加的是力載荷時常會發生:基本上力載荷是在不會發生剛體運動的模型中施加。而最初使用位移控制通常可以解決收斂問題。ABAQUS還提供接觸穩定,在接觸前自動控制剛體運動,幫助提高收斂。
在定義接觸控制時,可以使用自動穩定。這時也相當于在物體接觸之前施加一個阻尼,這樣就會阻止受載部件的位移而消除剛體運動。因為最后物體還是會接觸上,所以這個阻尼實際上在分析步內是逐漸減小的,最終減為0(默認)。這時建議在結果中檢查ALLSD,如查看ALLSD 與ALLIE的比值(一般認為需小于2%),這在遇到不穩定問題時也可以采用。
另一個由于接觸導致不收斂的潛在原因是實際接觸的面組卻沒有定義接觸,這通常會導致不收斂或者極度變形。自接觸很容易被使用者忽視,但使用通用接觸可避免這個問題。
當材料出現負(非正)剛度時(即應變增加而應力不增加),通常會出現不收斂問題。當采用試驗數據導入來定義材料屬性時最有可能發生。檢查最大應力和應變,判讀是否發生損傷。如果使用
Abaqus中的超彈材料模型,材料可能存在穩定極限(即超出某應變范圍就變得不穩定),這時右鍵點擊Evaluate即可評估材料,查看不穩定區間。當采用彈-塑性材料模型時,而加載超過了所定義應力應變曲線范圍,Abaqus默認進行外插值成水平線,即應變增加,應力不再增加(類似理想塑性)。這時,材料的剛度已變為0,如果這只發生在單個單元,計算可以完成,而大面積發生時就會發生問題,這通常意味著載荷過大。
可能最常見的導致不收斂的原因是結構不穩定性的存在。一個重要原則是建模時應盡量簡單,只考慮對所研究問題有影響的部分。記住這一點,當載荷是緩慢施加時,假定是靜態分析,合理降低模型的復雜度。當材料受力時,根據牛頓第一定律:
假設時靜態分析, 那么加速度就是零,所以總的合力為零,即存在受力平衡。如果系統從一個平衡狀態過度到另一個平衡狀態,以及中間過程都是平衡的,那么可以認為這個靜態假設合理的。是否總是這樣呢?舉一個例子,當兩個物體在受力前是不接觸的。為什么現實中會出現這種情況?由于加載件的初始位移是由其慣性決定的,而慣性在這里被我們簡化了,實際上穩定了問題。包含慣性或阻尼效應通常有助于獲得收斂解。有幾種方法可以做到這一點。在定義分析步時,可以選擇自動鎮定,例如默認指定的耗散能量分數。這相當于增加了一個額外的粘性力,其與時間步長與節點位移的比值成正比,具有穩定效果。檢查粘性耗散是否不太大,這時需在結果里檢查ALLSD相對于ALLIE的比值是否足夠小。
另一個方法是使用動態隱式分析步,選擇準靜態分析。這里使用了Euler后向格式,它具有基于實際質量的粘性效應。在這種情況下,時間依賴問題得到了解決,因此時間尺度應該是合理的。這時需在結果里檢查ALLSD相對于ALLIE的比值是否足夠小。
如果當你嘗試了所有辦法依然解決不了時,該怎么辦呢?我們就束手無策嗎?當然不是,嘗試Explicit求解這時就成了救世主。雖然分析所需時長增加了,但在某些極度非線性分析中利用Standard獲得收斂解是不太現實的。而利用Explicit至少我們還能得到結果而無需擔憂不收斂問題。誰知道呢,也許讓電腦花更多時間計算比你反反復復修改模型調試來的更高效呢!