前言
我们经常会进行一些具有 可变参数的有限元模型 的求解,以观察某些结果量对这些参数的敏感性。在ANSYS中有很多方法可以实现这一点。当然,最简单粗暴的就是一个参数建一次模型,求解一次。 本文给出的教程案例是通过使用数组将参数的各种值存储在第一列中, 然后,使用*do命令循环遍历数组中的3个值,对于数组中的每个值,分别进行一次求解。 本教程案例提取模型最大主应力存储在阵列的第二列中,绘制最大主应力等值线图,参数值作为标签在图上标出。绘图存储为jpeg图片文件,对研究的参数的3个值中的每一个重复此操作。 最后,写入文本文件,并将其与所产生的最大主应力一起列出的参数回显到屏幕上。 通过使用具有更多列的数组,此技术可以扩展到多个参数,这项技术可以自动化参数分析,并产生高生产率收益。 |
模型建立
通过以下命令,定义块体的大小几何参数,块体中孔的位置参数,同时定义了3行两列数组,其中第一列储存要研究的3个孔直径参数。
DIMENSIONS OF THE BLOCK
*SET,blkw,1*SET,blkh,.5
*SET,blkt,.1!LOCATION OF THE CYLINDER (HOLE)
*SET,cylx,.5*SET,cyly,.25!RADII OF THE CYLINDER .05,.08,.15
*dim,holrad,array,3,2,1
holrad(1,1)=.05
holrad(2,1)=.08holrad(3,1)=.15
注:这里*SET,blkw,1可以直接写成 blkw = 1,*set和“=”的作用一致。
通过*do 和*endo命令对要研究的参数进行循环求解,通过*if和*enif命令来清楚上次计算的网格和几何模型。同时从holrad数组中提取孔直径参数赋予cylrad,进一步用减去布尔运算建立模型。
*do,count,1,3
fini
/prep7
*if,count,gt,1,then
vclear,all
vdele,all,,,1
*endif
cylrad=holrad(count,1)
BLOCK,0,blkw,0,blkh,0,blkt, !建立块体。
CYL4,cylx,cyly,cylrad, , , ,blkt !建立圆柱体。
VSBV,1,2 !用块体减去圆柱体形成有孔的块体。
模型求解
/SOLU
FLST,2,1,5,ORDE,1
FITEM,2,5
DA,P51X,ALL,
FLST,2,1,5,ORDE,1
FITEM,2,6
SFA,P51X,1,PRES,-1000
EQSLV,PCG,1E-6
solve
后处理自动输出应力云图,自动保存所需数据
模型求解后,通过/ANUM、/TSPEC、/TLAB命令定义输出图上的注释,如下图所示。
/post1/
ANUM ,0,1,-0.59026,-0.7 !注释位置,注释字体设置
/TSPEC, 15, 1.200, 1, 0, 0
/TLABEL,-0.947,-0.7,Cylinder Radius =%holrad(count,1)%
将最大主应力云图输出在屏幕上,并自动保存为.JPEG格式图片。
plnsol,s,1
/show,jpeg
plnsol,s,1
/show,close
/show,term
最大主应力通过*get命令提取并赋值给maxs1,储存在holrad数组的第二列中。*enddo是匹配初始的*do命令。
NSORT,S,1
*GET,maxs1,SORT, ,MAX
holrad(count,2)=maxs1
*enddo
最后,使用*cfopen命令创建holard.txt文件,使用*vwrite写入数据,holard.txt第一行写入'Radius'和'Stress'标签,这里4X指的在'Radius'和'Stress'之间有4个空格。然后将holrad(1,1),holrad(1,2)写入,holrad(1,1)对应的孔直径参数,holrad(1,2)对应存储的最大主应力值。最后通过*uilist,holrad.txt将该.txt文件在ANSYS界面上显示出来。
*CFOPEN,holrad,txt,
*vwrite('Radius',4x,'Stress')
*VWRITE,holrad(1,1),holrad(1,2)
(f6.3,4x,f8.3)
*uilist,holrad.txt
总结
本案例教程只研究了一个参数,可以完全扩展到多个变参数研究上。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删