如何利用ANSYS的隨機分布函數功能

作者:水哥ANSYS

來源:本文源于ANSYS結構院,上海安世亞太授權轉載

技術鄰.png

隨機分布在材料微觀力學分析中扮演著重要角色,例如混凝土骨料力學、新型材料纖維力學分析等內容,提及隨機分布,更多的同學可能會聯想到采用第三方軟件如Matlab來生成,并導入ANSYS計算,其實ANSYS本身自帶隨機分布功能,只是功能略有限制。


ANSYS中產生隨機分布的一個重要函數是 *VFILL,該函數主要的作用是對數組進行填充賦值,而在賦值的過程中,用戶既可以選擇自定義數據內容,也可以選擇利用隨機函數產生數值,ANSYS Help中*VFILL說明如下:

1.jpg

該函數主要輸入參數為數組名稱以及輸入數據的函數,當選擇為data時,表示用戶自定義數據進行填充,當選擇其他選項時,則根據函數類型進行填充。

*VFILL隨機數生成支持均勻分布(Rand)、高斯分布(GDIS)、三角分布(TRIA)、貝塔分布(BETA)、伽馬分布(GRMM),*VFILL用于批量生成,如果需要單獨生成數據,則可以分別使用函數:

1) num=Rand(con1,con2)

2) num=Gdis(con1,con2)

3) num=Tria(con1,con2,con3)

4) num=Beta(con1,con2,con3,con4)5) num=Gram(con1,con2,con3)

上述con1~con4分別表示函數參數,例如針對均布分布,con1和con2分別表示分布的下限和上限。

下面分別以均布分布、高斯分布、伽馬分布為例進行演示。

 

1、均布分布

APDL代碼:

finish

/clear

/prep7

numA=1000

!建立隨機關鍵點
*dim,shuzu,array,numA,2

*vfill,shuzu(1,1),rand,1,10

*vfill,shuzu(1,2),rand,1,10

*do,i,1,numA

K,i,shuzu(i,1),shuzu(i,2)

*enddo

2.jpg

 

2、高斯分布

finish

/clear

/prep7

numA=1000

*dim,shuzu,array,numA,2

*vfill,shuzu(1,1),gdis,1,10

*vfill,shuzu(1,2),gdis,1,10

*do,i,1,numA

K,i,shuzu(i,1),shuzu(i,2)

*enddo

3.jpg

 

3、伽馬分布

finish

/clear

/prep7

numA=1000

*dim,shuzu,array,numA,2

*vfill,shuzu(1,1),gamm,0,1,2

*vfill,shuzu(1,2),gamm,0,1,2

*do,i,1,numA

K,i,shuzu(i,1),shuzu(i,2)

*enddo

4.jpg

 

上面只是簡單的示范,實際使用時還可以結合自己項目的特殊性在各個隨機元素之間施加約束條件,結合*DO和*IF循環可以達到很多想要的結果。例如混凝土隨機骨料投放,假定骨料都是球形,骨料半徑在10mm~50mm之間,例如下面代碼可得如下效果:

5.jpg

APDL代碼:

finish

/clear

/prep7

numA=100

!隨機生成100個粒徑并取整

*dim,Dima,array,numA

*vfill,Dima(1,1),rand,10,50

*do,i,1,numA

Dima(i)=nint(dima(i))

*enddo

!生成第一個球

X1=rand(50,950)

Y1=rand(50,950)

Z1=rand(50,1950)

k,1,X1,Y1,Z1

kwpave,1

sphere,dima(1)

!生成余下的球

*do,i,2,numA

*do,j,2,10000

X1=rand(50,950)

Y1=rand(50,950)

Z1=rand(50,1950)

X2=KX(5*(i-2)+1)

Y2=KY(5*(i-2)+1)

Z2=KZ(5*(i-2)+1)

DIS_X=abs(X1-X2)**2

DIS_Y=abs(Y1-Y2)**2

DIS_Z=abs(Z1-Z2)**2

DIS=(DIS_X+DIS_Y+DIS_Z)**0.5

Dis_min=dima(i)+dima(i-1)

*if,DIS,gt,Dis_min,then

*exit

*endif

*enddo

k,5*(i-1)+1,X1,Y1,Z1

kwpave,5*(i-1)+1

sphere,dima(i)

*enddo

wpcsys,-1

blc4,,,1000,1000,2000

*get,Vnum,volume,0,num,maxd

/trlcy,volu,1,Vnum

當然,實際項目中的情況遠比上面演示的要復雜,同時在實現過程中也是需要經過層層條件限制,結合IF判斷和DO循環來實現,其實隨機問題歸根到底還是算法問題。

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

4