星辰技文|ABAQUS結果提取大于某值的區域體積-Python方法

上一篇技文《ABAQUS結果提取大于某值的區域體積-CAE方法》中帶大家使用ABAQUS CAE界面直接提取大于100e6 Mises等效應力的區域體積,方法雖然比較好操作,但也存在明顯的缺點:
方法太繁瑣;統計歷程曲線時會顯得非常麻煩,因此我們找到了代步工具:Python。
精度較低;這是由于一個單元內只需要一個積分點滿足數值要求,整個單元都會顯示出來,但一個單元可能存在多個積分點,比如演示案例中采用六面體二階減縮積分單元(C3D20R)存在8個積分點,單元內部分積分點可能不滿足條件,也會被統計在內,從而導致統計的體積偏大,我們對比下CAE方法和Python方法的結果差異如下圖,最少都差32%!
樣的誤差雖然可以通過提高網格密度來減緩,但并不能完全避免,因此也就有必要對這些單元內所有積分點值進行判斷,獲得單元內滿足條件的積分點所占比例,再對其體積進行加權相加。而這樣的操作過程顯然不適合手動統計,再一次將目光投向了我們的代步工具:Python!
沒有Python基礎的小伙伴,建議先看曹金鳳姐姐的《Python語言在Abaqus中的應用》或江丙云哥哥的《ABAQUS Python二次開發攻略》,不然會有些吃力。雖然代碼備注的已經非常詳細,但還是需要一些背景支撐的。
【編程需求與分解】
為了與CAE過程進行對比,我們還是將需求定義為:提取懸臂梁加載過程中Mises等效應力大于100e6的區域體積。
懸臂梁模型背景:注意采用的是C3D20R單元,每個單元擁有20個節點、8個積分點;(不懂積分點含義的需要補充些有限元理論了)
一級需求分解:
1.遍歷所有Step分析步和Frame幀內的Mises場輸出,判斷是否大于100e6;
2.將滿足條件的單元體積進行累加;
3.求解每個單元的體積;
二級需求分解:
1.1遍歷Step
1.2遍歷Frame
1.3遍歷Mises場輸出
1.4判斷數值是否大于100e6
2.1需要考慮:部分單元內積分點n<=8個滿足判斷條件的情況。可將單元體積均分為8份,當判斷單個積分點滿足要求時,增加1/8個單元體積;
3.1 C3D20R單元為六面體,求解任意凸六面體單元體積:可將六面體切為以6個面為地面,內部任意一點(中心點)為頂點的6個四棱錐;每個四棱錐可分為2個四面體,分別求四面體體積再累加,則為整個六面體體積;(由于是二階單元,如果需要計算體積獲得更高精度,可以將單個四棱錐刨分為更多的四面體)
3.2 獲得六面體內部任一點,(真理:凸六面體八個角點坐標的平均值(中心點)一定位于該六面體內部),如果不是凸六面體,單元剛度將為負,所以不存在;
3.3 求任意四面體體積,百度就能找到公式;
3.4 獲得六面體的頂點坐標:C3D20R的前8個節點編號為六面體角點編號。
通過上面的二次需求分解,基本將一個看似復雜的需求劃分為若干個小而簡單的需求,而每個小的需求通常使用十行以內代碼即可完成;大家可以動筆自己編寫一下,這里就不展示最終代碼了,需要下載的小伙伴可以點付費下載,收取少量稿費,還望大家諒解與支持。
【收費下載文件】
Lug_614.cae:為測試的模型文件,高于ABAQUS6.14軟件版本則可直接打開;
Lug.inp:或可直接導入inp文件進行計算,也可abaqus command下提交運算
Lug.odb:由Lug_614.cae的job或Lug.inp計算獲得,運行代碼前請先計算模型。
20181225GetVolumeOfMisesGreaterThan.py:為主題相關的python代碼
【義務與合作聲明】
1、購買代碼原則上不提供答疑,如需修改程序或定制程序,可以通過技術鄰答疑和項目方式尋求合作;
2、由于工作原因,答疑預約時間為休息日和工作日的晚上8點到10點,項目合作僅能預約周末節假日;
3、預約答疑的小伙伴可在技術鄰直接發送答疑和項目申請給【星辰_北極星】,看到后會立馬給予回復,超出本人能力范圍的將直接退還預付款。
以下內容為付費內容,請購買后觀看
75人購買
Python代碼和案例:后處理如何測量大于一定數值區域體積
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















