多線程會影響Abaqus計算精度嗎?
Abaqus域級并行
一般情況下,多線程運行Abaqus/Explicit時,線程數并不會影響計算結果。
然而,有時運行同一個inp文件,當域級并行的拓撲域數目設置的不一樣時,我們發現,會存在計算結果不一致的問題,這是如何發生的呢?
先來看一下拓撲域的設置,顯式計算時,并行設置有Domain和Loop兩種方式,Domain即拓撲域,適用于大多數顯式計算,創建任務時,可以把它設置為線程數的整數倍,后處理時,也可以通過Color Code顯示這些拓撲區域。
域級并行設置和后處理顯示
Abaqus將劃分好的拓撲域均勻地分配給每個線程,所有域內單獨進行計算,每一個時間增量內,有共同邊界的域之間會進行通信,合并數據。
設置了8個拓撲域的金屬點陣沖擊模型
Domain如何影響計算結果?
在分析過程中,不同的分解形式會造成數值浮點運算次序的改變,由此產生不同的截斷誤差,也就會導致不同的計算結果。
通過一個示例可以展示這個過程,如下圖所示,現在我們要計算單元力引起的節點加速度。
假設
等效節點質量為單位質量
可執行3位數精度的浮點運算
問題中的單元力分別為F1=1.57,F2=10.1,F3=-1.53,F4=-10.2
1個拓撲域運行(左)- 2個拓撲域運行(右)
無限精度下
作為參考值的節點加速度:
a=F1+F2+F3+F4= -0.06
1個拓撲域運行
節點加速度:
a=((F1 + F2) + F3) + F4
數值標準化后:
a=((.016E2 + .101E2) -.015E2) - .102E2= 0
2個拓撲域運行
節點加速度:
a=(F1 + F3) + (F2 + F4)
數值標準化后:
a=(.157E1 - .153E1) + (.101E2 - .102E2)=.004E1 - .001E2
再一次標準化數值運算:
a=.004E1 - .010E1 = -0.006E1= -0.06
使用2個拓撲域運行時的結果與參考值相等,因為在兩個較小的數值并入較大的數值之前,恰好把它們相加了。
在很多分析中,這種截斷誤差引起的微小差異不足以影響整體響應,但是在一些高度非線性的模型如完美結構(未受擾動的幾何,Unperturbed Geometry)的后屈曲顯式分析中,可能導致顯著的計算差別。
比如方管壓潰變形的后屈曲顯式計算問題。
方管壓潰變形
直接進行完美結構的后屈曲分析會發現,使用不同的拓撲域計算,將導致結果出現顯著的差異,根據Abaqus幫助文檔,不改變模型的情況下,執行雙精度運行,可以一定程度上減少這種誤差,但是隨著時間積分的向后推進,誤差仍會比較顯著;而引入幾何缺陷,可以最大限度的避免這類問題中由于拓撲域不同而導致的截斷誤差。
方管完美結構壓潰反力
在屈曲分析之前,先進行特征值屈曲分析,提取前10階屈曲模態。
前10階屈曲模態
再通過屈曲模態引入幾何缺陷,執行顯式后屈曲分析,不同拓撲域下,計算結果基本一致,沒有顯著誤差。
*IMPERFECTION, FILE=tube_buckle, STEP=1
1, 2.0E-5
2, 0.8E-5
3, 0.4E-5
4, 0.18E-5
5, 0.16E-5
6, 0.10E-5
7, 0.10E-5
8, 0.08E-5
9, 0.02E-5
10, 0.02E-5
方管幾何缺陷結構壓潰反力
以上表明,處理完美結構后屈曲顯式分析或一些其它的高度非線性顯式分析模型時,要特別注意Domian造成的截斷誤差,而“光滑的”非線性問題,比如金屬輥壓成型,則對這種截斷誤差不敏感,無需擔心。
金屬輥壓成型
參考:
Abaqus Documentation
近期我有Abaqus在線培訓 → 點擊下面的圖片,可以了解更多~
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















