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