如何利用ANSYS的随机分布函数功能

Please Share Us

点击此处查看 ✿水哥原创ANSYS视频教程清单 ✿

水哥专属答疑服务已开通,点此此处查看详情

最近微信公众号后台有同学咨询水哥关于ANSYS随机函数的问题,今日略做介绍,仅供大家参考。
随机分布在材料微观力学分析中扮演者重要角色,例如混凝土骨料力学、新型材料纤维力学分析等内容,提及随机分布,更多的同学可能会联想到采用第三方软件如Matlab来生成,并导入ANSYS计算,其实ANSYS本身自带随机分布功能,只是功能略有限制。
ANSYS中产生随机分布的一个重要函数是 *VFILL,该函数主要的作用是对数组进行填充赋值,而在赋值的过程中,用户既可以选择自定义数据内容,也可以选择利用随机函数产生数值,ANSYS Help中*VFILL说明如下:

如何利用ANSYS的随机分布函数功能

该函数主要输入参数为数组名称以及输入数据的函数,当选择为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

如何利用ANSYS的随机分布函数功能

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

如何利用ANSYS的随机分布函数功能

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

如何利用ANSYS的随机分布函数功能

上面只是简单的示范,实际使用时还可以结合自己项目的特殊性在各个随机元素之间施加约束条件,结合*DO和*IF循环可以达到很多想要的结果。
例如混凝土随机骨料投放,假定骨料都是球形,骨料半径在10mm~50mm之间,例如下面代码可得如下效果:

如何利用ANSYS的随机分布函数功能

 

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循环来实现,其实随机问题归根到底还是算法问题。
祝好
ANSYS结构院
2021.11.8

欢迎扫描如下二维码关注本站微信公众号:ANSYS结构院

有时间麻烦帮忙点击下公众号文末的广告哦, 权当码字的辛苦费,感谢大家!

Please Share Us
© 版权声明
THE END
喜欢就支持一下吧
点赞2赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容

YOU MAY LIKE…