度My_Msita也就求出来了。
? 不同次分析计算过程前必须对ANSYS环境中的现有模型清零,用到/clear命
令,但该命令会使用户参数同时清零,这里用到parsav和parres技术,在每次清零过程前先把当前工作区的参数保存起来,清模型结束后再调入工作区,这样就实现了只清模型、不清参数的效果。
? 解题结束后,我们先用ndinqr(0,14)这一UPF命令求取模型中的节点总数。然
后用*vget命令把所有节点上的最大拉应力都保存到_s1数组中,最后用*vscfun函数得到_s1数组中的最大值。
? 注意每次求解完提取数据时都要重新定义_s1数组的大小(因为每次划分单元
后总节点数不同),这时候每次ANSYS都回出现让你确认是否把已经存在的_s1数组结构改变的对话框,这将导致自动化求解中断,这里我们采用的一个技巧是每次重新定义_s1数组前先清掉_s1数组(用_s1=命令行)。这样救避免了Ansys的询问。同样解决/clear命令的Ansys询问方法就是写全/clear命令:/clear,start。注意这里我们是必须要用start参数的,它表面我们在新建模型时读入start55.ans文件,我们必须在工作目录中构建一个我们自己的start55.ans文件,里面添加上PI参数的说明(因为modaling.mac宏文件中将利用这一参数,如果系统环境中没有这一参数的说明,将产生建模错误)。 ? 解决完一次运算,保存完数据后记得用parsav函数保存环境参数。 3. 完善GUI参数化界面
这里我们要比上次UIDL实例二中多增加一个参数My_dsita,为此我们修改UIFUNC2.GRN函数中DoProject函数:
――――――――――――――――――― :N Fnc_DoProject
:S 0, 0, 0 :T Command
:A Optimize my Project
:D Please Input Custom Information :C )*Set,My_H,150 :C )*Set,My_dsita,90 :H Hlp_0_Contents Inp_NoApply Cmd_)*Cset,1,2 Fld_0 Typ_Lab
Prm_Custom the Geographic Information Fld_2
Prm_ Please Input the Dsita for Analysis(1~90) Typ_INT
Def_*PAR(My_dsita) Fld_3
Prm_ Please Input the H for Analysis(100~200) Typ_INT
Def_*PAR(My_H) Cmd_)/Go
21
Cmd_)*GET,My_H,CPAR,2 Cmd_)*GET,My_dsita,CPAR,1 Cmd_)mysolve :E END :!
――――――――――――――――――――――――
这里可以看到和UIDL篇中的实例相比,多加了参数My_dsita的用户化输入。最后的命令修改成直接用文件名调用(这是因为我们把文件名后缀改为了.mac,它标志着标准的宏文件)。 最后的对话框显示如下:
用户定制好分析精度和H值后,点击OK就开始了完整的分析过程。 4. 求解结果
最后求解完毕后得到了一些最优化结果:用*status命令可以看到所有参数结果(这里我用每隔5度进行一次分析求解): My_Msita=40°,用该最优化建模图形为:
这里由于实常数对应力集中的效应没有影响,我们就不再给出具体计算结果来了。
22
有效的仅是在同样的载荷条件下不同角度的孔上最大拉应力的情况。
4 几点说明
APDL中的参数化建模、优化涉及是十分复杂有效的,这里我们只是给出了一个小小的例子,用来举一反三。套用同样的方法和机制,我们可以完成更加复杂的问题。 这里我们仅仅用到了APDL功能中的一小部分,我们完全可以想象一下UIDL+APDL+UPF能够完成什么样复杂程度的功能—几乎是任何功能!
5 结束语
这里结合APDL,UIDL和UPF讲述了一个比较综合的例子,在以后描述了UPF功能后,大家将更加为UPF功能的强大而神往不已。
附录:
modaling.mac:
―――――――――――――――――――――――――――――― !This is a script which can create the modal with a parameter sita. !Parameter Setting sita=My_sita/180*PI r=0.2
H=My_H/1000
!Customize the Environment keyw,pr_struc,1 /prep7
et,1,shell63
r,1,0.12,0.12,0.12,0.12
uimp,1,ex,dens,nuxy,2.1e9,1.2,0.375
!Modeling !Create plate k,1,0,0 k,2,2,0 k,3,2,2 k,4,0,2 k,5,0.9,2 k,6,1,1 l,1,2 l,2,3 l,3,5 l,5,4
23
l,4,1
al,1,2,3,4,5
!Create hole
!Create my coordinate
k,7,1+H*cos(sita),1+H*sin(sita)
k,10,1+H*cos(sita),1+H*sin(sita),100 k,8,1+r*cos(sita+PI/2),1+r*sin(sita+PI/2) cskp,11,0,6,7,8 csys,11
!Create Hole k,9,H,r l,7,9 l,7,6
adrag,6,,,,,,7
arotat,6,,,,,,7,10,-90 arsys,y,2,3,1 arsym,x,2,5,1
aadd,2,3,4,5,6,7,8,9 asba,1,10
csys,0
arsym,x,2, , , ,0,0 nummer,all, , , ,low aadd,1,2
/auto,1 gplot
!Meshing the plane smrt,6 amesh,all
!Add DOF
DK,2,UX,0, ,,UY DK,14,UX,0,,,UY
!Add Pressure SFL,4,PRES,42 SFL,11,PRES,42
―――――――――――――――
24
25