Abaqus顯式動力學入門案例-丟金幣/擲骰子
“ 用兩個剛體顯式動力學案例,入門Abaqus/Explicit”
最近科研項目遇到一點小小的挫折,涉及接觸的算例怎么修改邊界條件都難以收斂。我猜想如果換用顯式動力學可能可以讓問題更快實現收斂。之前雖然玩過一兩次,但一直沒有很認真的正式學習顯式動力學。今天這篇文章,就用USim鄧怡超工程師幾年前分享的兩個inp文件,學習一下Abaqus/Explicit顯式動力學分析。
既然用了別人的模型,那就在開頭顯著位置寫一下致謝吧。感謝USim,在我還在猶豫沒想好是在仿真領域一條道走到黑還是畢業轉行當碼農的時刻,是USim鄧工分享的一波Abaqus算例動畫讓我燃起了對有限元仿真的極大熱情(emmm這么說來也不知是福是禍,但我確實發自內心的喜歡力學和有限元仿真)。鄧怡超在他公眾號菜單里免費分享的很多inp文件也是我學習的樣本。
01
顯式動力學
先翻譯一些不那么有趣的東西。如果想直接看丟YingBi(這居然是敏感詞,完全無法理解)的小伙伴可以往下滑~(P.S.還是按慣例翻譯自幫助文檔。寫到這里發現我的彩云小譯半年會員居然已經到期了,果斷再續一年~)
什么是顯式動力學分析?它和隱式分析的區別在何處?
使用直接積分法的隱式動力學在Abaqus中是由Abaqus/Standard求解器提供的,而Abaqus/Explicit關于時間部分使用了中心差分算子。在隱式動力學分析中,必須對積分算子矩陣求逆,對每個時間增量步都需要求解一組非線性的平衡方程。而在顯式動力學中,節點的位移和速度是根據時間增量步開始時刻已知的量計算出來的,不需要組裝成整體質量陣和剛度陣并求逆。這樣顯式分析中每一個增量步的計算成本相對隱式來說更低。然而,在顯式動力學分析中,穩定時間增量步的大小是有限的,因為它使用的中心差分算子是條件穩定的,而Abaqus/Standard中使用的隱式算子則是無條件穩定的。因此,在Abaqus/Standard中的大多數分析里,對時間增量步都沒有限制(能限制時間增量的只有求解精度)。
中心差分法的穩定極限與應力波在模型中最小單元中傳播的時間有關。因此,如果模型的最小網格尺寸較小,或者材料中應力波速度較高,那么顯式分析的穩定時間增量步就非常短。因此,顯式分析適合用于建模總動態響應時長較短的分析,例如波的傳播等問題。同時,顯式分析的許多優點也適用于準靜態過程,在此情況下,需要使用質量縮放功能來降低材料中應力波的傳播速度。
Abaqus/Explicit有如下特點:
分析成本隨問題規模線性增加。而隱式算法計算成本隨問題規模增加的速度比線性更快。因此Abaqus/Explicit對于規模非常大的問題是很有吸引力的。
顯式積分算法在求解極不連續的短期事件或過程時往往比隱式算法更有效。
Abaqus/Explicit在求解與應力波傳播有關的問題時比Abaqus/Standard更有效。
這個顯式時間積分,公式也很簡潔明晰。下一步的速度通過前一步的速度和加速度求得,而下一時間步的位移通過速度乘以時間增量得到。
而這個u\ddot_i^N,這個加速度又是用牛頓第二定律計算得到的。由于使用了集中質量矩陣,所以可以把整個矩陣解耦合,不需要組裝總體剛度陣即可將時間步向下推進。集中質量陣把所有的質量都放在對角線元素上,所以非常容易求逆,而且計算復雜度只會隨自由度線性增加。顯式過程不需要在同一步內進行迭代,也不需要計算切線剛度陣。
因為顯式分析無需迭代也無需切線剛度陣,這也同樣簡化了接觸問題的處理。因此,對于接觸問題占主導的分析,顯式動力學分析也具有優勢,例如金屬板成型分析。
02
丟個鋼镚
這個案例如前所述,來自USim公眾號分享的inp文件。模型本身倒是非常簡單。鋼镚是體單元,下面的地面分別為體單元和面單元。
所有進行顯式動力學分析的材料都需要指定密度。因為對于動力學分析來說,不管是剛體還是柔性體,都有慣性效應
分析步使用動力,顯式分析步。
這里如果使用自動的話,會自動按照材料中應力波傳播的速率計算穩定時間增量。本案例作為顯式動力學的入門,全部零件設置為剛體,因此由用戶指定時間增量大小。
在Abaqus里,指定材料為剛體有多種方式。可以在部件模塊處就將材料定義為剛體,也可以先定義成柔性體,然后在相互作用這里使用剛體約束將材料定義為剛體。
而顯式動力學中定義接觸的方式也比隱式分析要簡單。在顯式分析中,只需要定義一個全局的通用接觸,general_contact即可。軟件會自動在所有單元的表面都覆蓋上一層接觸單元。
載荷模塊,底部固定,全局施加重力載荷,然后在鋼镚的剛體約束參考點處,施加一個角速度的預定義場。
可以看到,雖然用了30000個增量步,但總計算時長只有不到1分鐘。顯式動力學每個時間增量步的計算開銷確實非常低。
結果——
夭壽啦w(?Д?)w!鋼镚居然摔下去了 掉落無盡深淵……
我們來把轉速改小一點再試試。順便修改一下場輸出和歷程輸出的時間間隔。
嗯,作為一個動畫來說,這回幀數夠用了,而且也成功地沒有掉下去。學會Abaqus顯式,真的可以把它當大型通用動畫軟件來玩?(? ? ??)
03
擲個骰子
剛才那個鋼镚模型建立的不夠細致,沒分出正反面。下面這個骰子模型就更進一步,把點數一起畫了出來。
和丟鋼镚模型一樣,全部零件都約束為剛體,在整個模型上添加通用接觸。載荷只有一個重力,讓骰子自由下落。只是它們的初始下落角度比較隨意。
這個點數是——小藍2分,小紫5分。那如果我們其他參數什么都不改,只把時間步長從1e-4改為2e-5會發生甚么事呢?
小藍變成了4分,小紫則變成了2分!
……再把求解從6核修改成2核試試?
結果又不一樣了。這完全是個玄學啊。
可能因為整個模型中都施加了剛體約束,而且時間增量步不同,求解使用的核心數不同,確實會對數值計算的誤差產生影響。——看來,即使是今天的計算機,想要模擬一只拉普拉斯妖 預測骰子擲出來的點數,也還是很難的事情呀。
04
后記
學會了顯式動力學,挺多生活中有趣的物理現象就可以用有限元來模擬了。可以說要想把Abaqus玩成動畫軟件,顯式動力學分析是必經之路。其實本文中的幾個分析還可以更進一步,用Altair的工具給odb文件做個轉換,用HyperView讀取以后,還可以做更真實的物理渲染。(就更像動畫了)
文末再重申/致謝一次,這兩個模型都來自公眾號USim,不是我自己做的。我大概半年多以前也自己試著做過一個玩具的模型,但是當時沒能調通。
最后祝各位仿真從業者永葆一顆童心~
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















