Abaqus中如何根據不同的材料來創建對應的set?
比如模型中有三種材料,我只想提取其中一種材料的應力,想根據該材料創建相應單元的set。進一步說我發現Odb display group中可創建不同材料的顯示組(腳本文件中不同材料的區域叫leaf,可根據elementMaterials來定義),但這個顯示組如何轉化為set呢?(或者說leaf如何轉化為set命令中的elementlabels)。謝謝
我覺得最好是先定義集合,然後再把材料屬性賦予給集合,這可以避免一個很麻煩的問題(這也就是題主你的問題的本質):如何獲得一個MeshElement object的材料?我曾經遍尋Abaqus Scripting Reference Manual,好像沒有現成的函數可以用,不光不能從element找它的材料,從一個cell出發找它本身的材料似乎也並不容易。
當然,考慮到在某些場合下,材料不是通過set來賦予的,而我們又想知道一個element的材料到底是什麼。我有個方法,不過有一個前提:在模擬前後沒有發生單元的刪除,增加或者改變(所以有remesh的,model change之類的情況發生時,我就只能攤手)。這個方法就是回到INP文件。我用一個簡單的例子來說明,如下是一個INP文件中和本題相關的語句:
*Element, type=C3D8R
1, 8, 5, 6, 7, 1, 2, 3, 4(第一個單元,label是1。「8, 5, 6, 7, 1, 2, 3, 4」這些數字是它的node的label)2, 5, 2, 1, 8, 9, 10, 11, 12(第二個單元)(以下是我做的兩個集合,只是為了好辨認,好說明這個問題。你手選區域來賦予材料屬性,也會有一個_PickedSet的內部集合,沒關係,這只是個名字而已,你不需要事先人為設置set)*Elset, elset=left(left集合包含了1個element,它的label是2)
2,*Elset, elset=right(right集合包含了1個element,它的label是1) 1,** Section: Section-2*Solid Section, elset=right, material=steel45
這句話就是關鍵了,這句話把材料和集合直接聯繫起來了,所以你可以用腳本去讀取INP文件,直接做文本尋找,找到了*Solid Section開頭的句子,找到句中的材料名,就找到了對應這個材料的set(這個set可以是事先手動生成的,腳本生成的,內部自動生成的,反正在INP里它只有一種面目,就是set),而通過set名可以輕鬆找到該set所有elements的label,有label了就可以為所欲為了。這種方法很像是騎驢找驢。。所以如果可以的話,盡量事先設置好集合,按照集合來賦予材料屬性為佳。不知道適不適合題主的需求,權當拋磚引玉了。
還有一種可以直接在GUI里操作的方法,利用probe value這個功能。詳述如下:
在後處理中已經可以用Display group來列出某種材料的elements,我們只需要用probe value功能,配合display group,就能捕獲到所有該材料的elements的label:用腳本的話我不怎麼懂,參考 @AsAlways的回答好了。
不過軟體操作的話,我可以提供一點建議
這個操作如果採用專業的前處理軟體的話 (ANSAhypermesh)就是個非常簡單的操作,但是ABAQUS的前處理沒有針對材料的操作,所以顯的有點麻煩。題主可以這樣,ABAQUS可以在針對instance操作,所以在建模的時候刻意的對不同的instance創建set,這樣在計算和後處理的過程中可以簡單一些。謝邀,不過我工作中從來沒有用到abaqus,我是做電子散熱的。看樣子我需要學學了。
在abaqus中給單元賦予不同的材料屬性時,abaqus會自動定義一個單元組,在odb中的element sets或者node sets中可以找到對應的集合。
推薦閱讀:
※pycham如何整合pyqt5並安裝qtdesigner?
※初學python和機器學習,想知道怎樣才能達到自己獨立編寫程序的能力?
※學習TensorFlow,Python 需要掌握到什麼程度才可以?
※如何入門Keras?
※scala和groovy的優勢有哪些?