利用APDL命令選擇橢球面上的節(jié)點
2017-09-15 by:CAE仿真在線 來源:互聯網
問題的背景:筆者在利用Workbench的二次開發(fā)功能實現某模型的參數化建模、分網、加載時,由于workbench開發(fā)接口的限制,需要結合DM模塊、MAPDL模塊、Mesh模塊、FEM模塊以及Mechnical模塊。
在結合這些模塊的時候,為了實現參數化一鍵加載,需要在Mechnical模塊通過APDL和XML(ACT技術)完成加載功能,而Mechnical模塊里面的模型其實只有節(jié)點和單元,因此,在Mechnical模塊添加的APDL命令只能是對節(jié)點或者單元進行操作。
該模型有圓柱面和橢球面,圓柱面的節(jié)點其實比較好通過APDL選取,利用圓柱坐標系即可,但是橢球面上的節(jié)點則無法直接選取。
至此,問題便產生了,如何利用APDL在只有節(jié)點和單元的模型上選取橢球面上的節(jié)點。
局部模型如下所示。

圖1 單元模型

圖2 節(jié)點
筆者所想選取的節(jié)點是圖2中的最內層的節(jié)點,該群節(jié)點所對應的幾何模型是一個標準的橢球形,橢球形狀參數比為2:2:1。
該問題最大的障礙便是沒有幾何,只有節(jié)點和單元,如果有幾何的話,那么可以直接通過參數選擇面,再選擇依附在面上的節(jié)點即可。
如何解決該問題?
首先,筆者嘗試通過在前期劃分網格時添加一種額外的單元,mesh200,這是一個比較特殊的單元,有興趣的可以查查資料,先將該面單獨用mesh200進行網格劃分,之后對全部模型采用solid185進行劃分。
劃分完成后,模型導入Mechnical模塊,可以通過單元類型的方式直接選出所要的節(jié)點,而且選擇過程非常非常的方便和快捷。但是,mesh200單元只是用于網格劃分,不支持載荷和約束,也即是無法在這些節(jié)點上加載,這對于最終問題就顯得無效了。
顯然,該方法雖然能夠選出所要的節(jié)點,但是卻不能解決加載的問題,只能放棄。
至此,筆者只能嘗試采用橢球本身的位移約束方程來選擇了。
眾所周知,標準橢球的方程為:

在本次模型中,a=c=2b=Ri,因此,本模型的橢球面方程為:

也即是,橢球面上節(jié)點的(x,y,z)坐標肯定是滿足上述方程的,那么可以通過讀取節(jié)點的坐標值,代入上述方程計算,判斷是否滿足,如果滿足,那么就是所需要的節(jié)點,不滿足就不是。
基于此原則,可以寫出APDL命令的思路:
獲取總節(jié)點數目
循環(huán)遍歷
獲取當前的最小節(jié)點號
獲取該節(jié)點的三個坐標值
計算橢球方程
邏輯判斷
如果該節(jié)點滿足橢球方程,則存入數組
舍棄當前節(jié)點
之后,通過遍歷存儲的數組,可以選出所有滿足橢球方程的節(jié)點。
具體的APDL實現過程如下:
alls,all
csys,0
nsel,r,ext
nsel,r,loc,y,0,Body_Ri/2
tol=1e-6
j=0
*get,Total_node,node,0,count
*Dim,inner_node,array,Total_node,1
*do,i,1,Total_node,1
*get,node_min,node,0,num,min
ux=nx(node_min)
uy=ny(node_min)
uz=nz(node_min)
temp=(ux**2+uz**2+4*uy**2)/Body_Ri**2-1
abs_temp=abs(temp)
*if,abs_temp,lt,tol,then
j=j+1
inner_node(j)=node_min
*endif
nsel,u,,,node_min
*enddo
alls,all
nsel,r,,,inner_node(1)
*do,k,2,j,1
nsel,a,,,inner_node(k)
*enddo
注:定義了一個較小的變量tol=1e-6,主要是考慮可能存在一定的誤差,是節(jié)點的坐標不能完全符合橢球方程,這個屬于正?,F象,稍加考慮即可。
最終運行該段APDL代碼,可以選出所需要的最內層的節(jié)點,如下所示。

圖3 選擇節(jié)點
利用esln命令,選出該群節(jié)點所存附的單元,如圖4所示,所見就一層單元。

圖4 節(jié)點存附的單元
相關標簽搜索:利用APDL命令選擇橢球面上的節(jié)點 Ansys有限元培訓 Ansys workbench培訓 ansys視頻教程 ansys workbench教程 ansys APDL經典教程 ansys資料下載 ansys技術咨詢 ansys基礎知識 ansys代做 Fluent、CFX流體分析 HFSS電磁分析 Abaqus培訓