
發布
注冊
/
登錄abaqus創建集合作用的案例
abaqus-python 利用getByBoundingCylinder(...)創建單元集合
在學習的時候被網上的帖子和幫助文檔誤導(其實是新新手的緣故),命令老寫成這個樣子:
elist = e.getByBoundingCylinder(7,6,0,7,6,20,5.8)
# 正確命令:
elist = e.getByBoundingCylinder(center1=(7,6,0),center2=(7,6,20),radius=5.8)
abaqus python 二次開發攻略 P195,P196
abaqus 用戶幫助文檔
2 簡單案例
案例簡介:選取多個圓柱體框中的單元并創建為集合。
具體命令:
################################
# 可以運行#######
from abaqus import*
from abaqusConstants import*
p = mdb.models['Model-3'].parts['Part-1']
e = p.elements
elist_I = e.getByBoundingCylinder(center1=(7,6,0),center2=(7,6,20),radius=5.8)
elist = elist_I
elist_I = e.getByBoundingCylinder(center1=(21,6,0),center2=(21,6,20),radius=5.8)
elist = elist+elist_I
p.Set(elements=elist,name='Set-matrix')
print(type(elist)) # <type 'Sequence'>
這就是運行結果。
展開 ABAQUS二次開發|findAt函數創建集合的使用方法
關注微信公眾號:仿真社,回復“findAt”獲取源文件
Abaqus二次開發時,經常會遇到getSequenceFromMask,用此命令創建的集合是掩碼編碼,若集合是作為優化變量,則不具備操作性,應該盡量避免使用它。findAt函數是解決這一不足的有力武器,findAt函數是通過坐標點的方式來創建point、surface、cell集合,具有參數化的特點,方便控制。
1.問題描述
a)
建立A
、B
兩個區域的集合
圖1 A,B區域圖
有限元模型的長寬分別為60mm,25mm,A區域的位置為x小于30,y大于18;B區域的位置為x大于30,y小于7。
b)為優化集中力位置,使用findAt()函數在懸臂梁的頂部創建一個施加集中力的可變集合(圖2)。
圖2懸臂梁模型
2.技術路線
2.1創建A、B區域的集合
findAt函數是利用區域內的一點坐標創建集合,因此選擇A區域的坐標(10,20,0),B區域的坐標(50,5,0),為新創建的集合命名為Set-target,代碼如下:
2.2 創建點的可變集合
創建點集合的思路為:如果點在線內(不包含端點),則首先創建一個基準點,然后對模型基于基準點進行切分,最后創建集合;如果點在線的兩端,則直接創建集合。圖2展示了實現該功能的代碼,主要是一個判斷功能,保證創建的點集合在模型上,否則就報錯。
圖3 判斷是否需要進行切分
下面展示了實現創建集合功能的代碼,其中findAt函數實現了對加載集中力位置的定義。在定義點時,用到的一個對象是vertices,即頂點,這也就是為什么要切分的原因。模型只有切分了之后才會有頂點!
展開