APDL综合实例
- 格式:pdf
- 大小:39.69 KB
- 文档页数:8
第七章 APDL 综合实例7.1 问题说明本章在阐明APDL 技术时本想也采取实例的方式,把APDL 的各个细节都用一个个详细的实例说清楚,无奈APDL 细节内容比较繁复,而且不和UIDL 那样各成体系,APDL 的应用很多情况下都是和UIDL 、UPF 结合在一起应用的,它甚至渗透到基础分析中的各个环节中,可以说也是ANSYS 的脚本基础。
考虑到大家都不会有兴趣来聆听枯燥的数组构建法,宏函数的参元特性等罗嗦的APDL 语法,这里我们打算用一个比较大的综合实例来想大家描述一部分APDL 的功能,从这里你将能看到我们能用APDL 干些什么。
还记得UIDL 实例解析二中的一个例子巴,这里我们有必要重温一下:如图1(a)一所示,一带孔薄板,长4000mm ,宽2000mm ,顶部中心部分1800mm 处承受42MP 的压力,左右两个长圆孔中心分别踞四周1000mm ,长圆孔的具体形式如图1(b)所示,上下分别为半圆,中部用直线衔接。
这里假设长圆长轴与水平方向夹角为α。
为了使得孔边缘应力集中最小,这里拟调整α的大小(α∈[-π/2, π/2]),以便在固定的H 情况下达到长圆孔周围应力集中最小。
在UIDL 实例二的部分我们只是在GUI 界面下实现了它的参数化建模,这部分工作在本章的综合实例中仍然有效,下面我们将一步步完全实现这一问题。
7.2 解题思想本问题是在用户给定H 的情况下求得α角的最优解,使得孔边最大拉应力最小(这是因为材料抗拉性能比较弱)。
这里我们的想法是把α取每一个角度时候得到的孔边最大拉应力都求出,比较一下,得到孔边拉应力最小情况下对应的α取值。
现在的问题是,我们只能够对每一离散的α值求取其孔图1 (b)H r边最大拉应力,让α在[0°~360°]之间连续取值不仅是无法做到的,而且在工程中也没有必要,这里我们拟每隔一定角度计算一下孔边最大拉应力,最终在这些有限的角度中求取出最佳的α值。
10.1有限元模型的建立/TITLE,3D analysis on shield tunnel in Metro ! 确定分析标题/NOPR !菜单过滤设置/PMETH,OFF,0KEYW,PR_SET,1KEYW,PR_STRUC,1 !保留结构分析部分菜单/COM,/COM,Preferences for GUI filtering have been set to display:/COM,Structural1.材料、实常数和单元类型定义/clear !更新数据库/prep7 !进入前处理器et,1,solid45 !设置单元类型et,2,mesh200,6save !保持数据(2)定义模型中的材料参数。
!土体材料参数mp,ex,1,3.94e6 !地表层土弹性模量mp,prxy,1,0.35 !地表层土泊松比mp,dens,1,1828 !地表层土密度mp,ex,2,20.6e6 !盾构隧道所在地层参数mp,prxy,2,0.30mp,dens,2,2160mp,ex,3,500e6 !基岩地层参数mp,prxy,3,0.33mp,dens,3,2160!管片材料参数,管片衬砌按各向同性计算mp,ex,4,27.6e9 !管片衬砌弹性模量mp,prxy,4,0.2 !管片衬砌泊松比mp,dens,4,2500 !管片衬砌密度!注浆层,参数按水泥土取值mp,ex,5,1e9 !注浆层弹性模量mp,prxy,5,0.2 !注浆层泊松比mp,dens,5,2100 !注浆层密度save !保持数据第1章大型有限元软件ANSYS简介2 2.建立平面内模型并划分单元(1)在隧道中心线定义局部坐标,便于后来的实体选取。
local,11,0,0,0,0 !局部笛卡儿坐标local,12,1,0,0,0 !局部极坐标csys,11 !将当前坐标转换为局部坐标wpcsys,-1 !同时将工作平面转换到局坐标cyl4,,,,,2.7,90 !画部分圆半径为2.7cyl4,0,0,2.7,0,3,90 !画管片层部分圆cyl4,0,0,3,0,3.2,90 !画注浆层部分圆rectng,0,4.5,0,4.5 !画外边界矩形aovlap,all !做面递加nummrg,all !合并所有元素numcmp,all !压缩所有元素编号rectng,4.5,31.5,0,4.5 !画矩形面nummrg,all !合并所有元素numcmp,all !压缩所有元素编号save !保持数据(2)划分单元,如图10-1所示。
ANSYS 数据文件读写的APDL命令详解及实例源自机知网作者:huright一 FORTRAN数据格式I格式(又叫整数格式)一般形式:Iw 或:Iw.m其中:w 一个数据占的位数宽度(又称“字段宽度”),m 需要输出的最少数字位数。
例1:(1)数字在指定的区域内向右端靠齐,如果数字位数比指定的字段宽度w小,则左边补以空格。
负数的符号也包含在字段宽度内。
(2)如果数字的位数超过了规定的字段宽度w,则不输出有效数据,而在该字段宽度范围内充满“*”符号。
(3)如果数字的位数超过了m,则按实际应输出的位数输出(但条件是不能超过w)。
m 不包括负号所占的一列。
F格式(又叫小数型格式)一般形式:Fw.dw 各数值占的总位数 d 输出数据的小数位数(小数点后的位数)。
例1:(1)数字在指定的区域内向右端靠齐,如果数字位数(含小数点和符号位)比指定的字段宽度w小,则左边补以空格;如果数字的位数超过了规定的字段宽度w,则不输出有效数据,而在该字段宽度范围内充满“*”符号。
(2)如果数据的小数位数比指定的小数位数d小,则在小数右边补0以凑足d位;如果小数位数大于d位,则输出时多于的小数位数按“四舍五入”规则舍去。
(3)假设b为数据整数部分的位数,则应使w≥b+d+1(小数点占一列),如果输出负数,则应保证w≥b+d+2(小数点和负号各占一列)。
(4)用F格式输出时应注意,由于难以事先确切估计出数据的大小,输出大的数时容易产生“宽度不够”的错误(由于w不够大),输出小的数时会出现丢掉有用数字的情况(由于d不够大而将后面的数字截去),这就是“大数印错,小数印丢”。
E格式(又叫指数型格式)一般形式:w.dw 各数值占的总位数,d 输出数据的小数位数(小数点后的位数)。
例1:(1)采取标准化的指数形式输出一个实数,d为以指数形式出现的数据的数字部分的小数位数。
(2)指数部分一般占4列,其中字母“E”和指数的符号各占一列,指数2列。
filename,contact_thermal/title,contact_thermal example/prep7et,1,13,4,,1! 选择直接耦合单元PLANE13,单元自由度为ux,uy,temp ! 定义为轴对称et,2,48! 定义结构接触单元keyopt,2,1,1! 设定接触单元的相应选项keyopt,2,2,1keyopt,2,7,1r,2,2e11,0,0.0001,,,0.1! 定义接触单元实常数mp,ex,1,2e11! 定义管材结构及热属性mp,alpx,1,5e-5mp,kxx,1,10mp,dens,1,7880mp,c,1,500rect,0.11,0.12,0,0.02! 建模rect,0.121,0.131,0,0.02 amesh,allnsel,s,loc,x,0.11! 将内管内壁的X方向位移及温度耦合cp,1,ux,allcp,2,temp,allnsel,s,loc,x,0.12! 将内管外壁的X方向位移及温度耦合cp,3,ux,allcp,4,temp,allnsel,s.loc,x,0.121! 将外管内壁的X方向位移及温度耦合cp,5,ux,allcp,6,temp,allnsel,s,loc,x,0.131! 将外管外壁的X方向位移及温度耦合cp,7,ux,allcp,8,temp,allnsel,s,loc,y,0.02! 将内管顶部节点的Y方向位移及温度耦合nsel,r,loc,x,0,0.12cp,9,uy,allnsel,s,loc,y,0.02! 将外管顶部节点的Y方向位移及温度耦合nsel,r,loc,x,0.121,0.131cp,10,uy,allnsel,s,loc,x,0.12! 创建接触单元cm,cont,nodensel,s,loc,x,0.121cm,targ,nodetype,2real,2gcgen,cont,targ,3/soluantype,trans! 瞬态分析tunif,20! 初始平均温度tref,20! 参考温度sfl,4,conv,300,,300! 内管内壁对流边界sfl,6,conv,10,,20! 外管外壁对流边界nsel,s,loc,y,0! 约束所有底边单元的Y向位移d,all,uy,0time,180! 载荷步时间deltime,10,5,15! 定义时间步长outres,all,all kbc,1autots,on! 自动时间步长allsel solve! 求解/post1plnsol,temp! 显示温度分布plnsol,s,eqv! 显示等效应力。
利用ansy s APDL进行优化设计的例子一、问题描述:二、分析文件的A PDL语句及注释:(可把该文件拷贝到一个文本文件,作为ansy s的分析文件。
)!第一步,初始化ANS YS系统环境FINISH/CLEAR/filena me,BeamOp t!第二步,定义参数化设计变量B=1.4 !初始化宽度H=3.8 !初始化高度!第三步,利用参数创建有限元模型/PREP7!进入前处理ET,1,BEAM3!定义单元类型为BEAM3AREA=B*H !梁的截面积IZZ=(B*(H**3))/12 !绕Z轴的转动惯量R,1,AREA,IZZ,H !定义单元实常数,以设计变量表示MP,EX,1,30E6 !定义材料性质MP,PRXY,1,0.3N,1 !创建节点1N,11,120 !创建节点11FILLE,1,2EGEN,10,1,-1 !复制单元FINISH!退出前处理!第四步,执行求解/SOLUANTYPE,STATICD,1,UX,0,,11,10,UYSFBEAM,ALL,1,PRES,20 !施加压力(单位长度上的负荷)=20 SOLVEFINISH!第五步,进入后处理并创建状态变量与目标变量/POST1SET,,,,NSORT,U,Y !以Uy为基准对节点排序*GET,DMAX,SORT,,MAX !参数DMAX=最大位移ETABLE,VOLU,VOLU !VOLU=每个单元的体积ETABLE,SMAX_I,NMISC,1 !每个单元I节点处应力的最大值ETABLE,SMAX_J,NMISC,3 !每个单元J节点处应力的最大值SSUM !对单元表求和*GET,VOLUME,SSUM,,ITEM,VOLU !得到总的体积ESORT,ETAB,SMAX_I,,1 !按照单元SM AX_I的绝对值大小排序*GET,SMAXI,SORT,,MAX !参数SMAX I=SMAX_I中的最大值ESORT,ETAB,SMAX_J,,1 !按照单元SM AX_J的绝对值大小排序*GET,SMAXJ,SORT,,MAX !参数SMAX J=SMAX_J中的最大值SMAX=SMAXI>SMAXJ!找到最大的应力FINISH三、优化过程的菜单方式实现1、设计变量有两个:B和H在本例中需要分别采用两种方法进行优化设计:1)首先选用子问题(sub-proble m)优化方法,设置迭代30次,获得7个可行性优化结果;2)再次基础上进行扫描法优化(DV-sweep),选择BEST Design opt,NSPS 中填入5.优化过程的a pdl,命令流:finish/INPUT,'BEAM','INP',',,0!执行优化分析/OPTOPCLROPANL,'BEAM','INP','' !指定分析文件名!声明优化变量OPVAR,B,DV,0.5,16.5 !B和H为设计变量OPVAR,H,DV,0.5,8OPVAR,DMAX,SV,-0.1,0 !DMAX和S MAX为状态变量OPVAR,SMAX,SV,0,20000OPVAR,VOLUME,OBJ !VOLUME为目标函数!优化控制设置选项OPDATA,,,OPLOOP,PREP,PROC,ALLOPPRNT,ONOPKEEP,ON!选择子问题法进行第一次优化计算OPTYPE,SUBP !子问题法OPSUBP,30,7,!最大迭代次数OPEXE!执行优化循环!选择扫描法进行第二次优化分析OPTYPE,SWEEP !dv sweep扫描法OPSWEE P,BEST,5 !最佳设计序列,5次评估OPEXE!执行优化分析。
ANSYSAPDL学习案例资料⼀直都在学习ANSYS Workbench可能觉得还不错,看着⼀堆的花花绿绿的云图,爽啊!可是你有没有觉着学习WB的过程似乎少了点什么,如果你没有发现看看下⾯这个⼀开始就提到基本流程为前处理、求解以及后处理,在前处理⾥⾯有很重要的有⼀环:定义单元。
⾃从这个号第⼀篇⾄现在,在WB中⼏乎没有⾃⼰定义过单元。
没有定义过居然还能算,还与材料⼒学对了这么久。
因为有很多⼯作,软件给我们做了,像定义单元就是其中⼀项。
⼀旦你转到其他软件,如Optistruct 可能会⾮常的不习惯,感觉很别扭。
这就好像⽤了Solidworks再⽤CREO就厌烦的不得了,怎么整这么多⼳蛾⼦出来,还让我定义⼀堆参考,真的很不智能。
越是⾃动化程度⾼的,越是能够磨灭我们的主观思维,渐渐的让我们丧失了主动性。
有些⼈说你就⼩题⼤做吧,不就⼀个单元的事情么,你⾃⼰选择还能整出花样?单元选择只是举例,APDL是完全按照CAE思维⾛的,WB集成度太⾼,很多东西可能都忽略了,让我们忘记了分析中还有这么⼀些重要的环节,⽽有可能就让我以为分析就是这样,本来就如此,那你⼜怎么知道这些未知项对分析结果的⼀些影响呢。
在之前的例⼦⾥⾯也有在分析中插⼊⼀些命令流,通过命令流来控制单元的⼀些关键字,以实现WB⾥⾯没有的性能,因此⾜以说明APDL的重要性。
如果学习APDL的基本过程,如了解Link 的使⽤,那么在APDL模块你⾃然会看见这些单元关键字,你也就知道了。
后处理也有⼀些重要的应⽤,仅凭WB界⾯可能⽆法实现,因此从任何⼀⽅⾯讲,应该学习掌握⼀个标准的CAE分析过程。
下⾯这套教程,收藏了很久,之前学习ANSYS有做过前⾯⼏个例⼦,⼈太懒,没有坚持下去。
虽然学习APDL,但往后还是要以WB为主,APDL仅作为了解。
下⾯是⼀些⽰意:⽂档案例部分内容如上图,对零基础⽤户特别友好,每⼀步清清楚楚。
除了GUI,每⼀步下侧还带有命令流。
也存在⼀些⼩问题,如有些单元找不到了。
ANSYS_数据⽂件读写的APDL命令详解及实例ANSYS 数据⽂件读写的APDL命令详解及实例作者:huright⼀ FORTRAN数据格式I格式(⼜叫整数格式)⼀般形式:Iw 或:Iw.m其中:w ⼀个数据占的位数宽度(⼜称“字段宽度”),m 需要输出的最少数字位数。
例1:(1)数字在指定的区域内向右端靠齐,如果数字位数⽐指定的字段宽度w⼩,则左边补以空格。
负数的符号也包含在字段宽度内。
(2)如果数字的位数超过了规定的字段宽度w,则不输出有效数据,⽽在该字段宽度范围内充满“*”符号。
(3)如果数字的位数超过了m,则按实际应输出的位数输出(但条件是不能超过w)。
m 不包括负号所占的⼀列。
F格式(⼜叫⼩数型格式)⼀般形式:Fw.dw 各数值占的总位数 d 输出数据的⼩数位数(⼩数点后的位数)。
例1:(1)数字在指定的区域内向右端靠齐,如果数字位数(含⼩数点和符号位)⽐指定的字段宽度w⼩,则左边补以空格;如果数字的位数超过了规定的字段宽度w,则不输出有效数据,⽽在该字段宽度范围内充满“*”符号。
(2)如果数据的⼩数位数⽐指定的⼩数位数d⼩,则在⼩数右边补0以凑⾜d位;如果⼩数位数⼤于d位,则输出时多于的⼩数位数按“四舍五⼊”规则舍去。
(3)假设b为数据整数部分的位数,则应使w≥b+d+1(⼩数点占⼀列),如果输出负数,则应保证w≥b+d+2(⼩数点和负号各占⼀列)。
(4)⽤F格式输出时应注意,由于难以事先确切估计出数据的⼤⼩,输出⼤的数时容易产⽣“宽度不够”的错误(由于w不够⼤),输出⼩的数时会出现丢掉有⽤数字的情况(由于d不够⼤⽽将后⾯的数字截去),这就是“⼤数印错,⼩数印丢”。
E格式(⼜叫指数型格式)⼀般形式:w.dw 各数值占的总位数,d 输出数据的⼩数位数(⼩数点后的位数)。
例1:(1)采取标准化的指数形式输出⼀个实数,d为以指数形式出现的数据的数字部分的⼩数位数。
(2)指数部分⼀般占4列,其中字母“E”和指数的符号各占⼀列,指数2列。
利用ansys APDL 进行优化设计的例子一、问题描述:约束条件;1.总应力不超过"max2, 梁的变形不超过8m*3, 梁的高度不超过hm^x目标函数:使梁的重量最小二、分析文件的APDL语句及注释:(可把该文件拷贝到一个文本文件,作为ansys的分析文件。
)!第一步,初始化ANSYS系统环境FINISH/CLEAR/filename,BeamOpt!第二步,定义参数化设计变量B=1.4 !初始化宽度H=3.8 !初始化高度!第三步,利用参数创建有限元模型/PREP7 !进入前处理ET,1,BEAM3 !定义单元类型为BEAM3AREA=B*H !梁的截面积ETABLE,SMAX_I,NMISC,1 !每个单元I 节点处应力的最大值ETABLE,SMAX_J,NMISC,3 !每个单元J 节点处应力的最大值!绕Z 轴的转动惯量FILLE,1,2EGEN,10,1,-1 FINISH !第四步,执行求解 /SOLUANTYPE,STATICD,1,UX,0,,11,10,UYSFBEAM,ALL,1,PRES,20 !施加压力(单位长度上的负荷) =20SOLVEFINISH!第五步,进入后处理并创建状态变量与目标变量 /POST1SET,,,,!对单元表求和 *GET,VOLUME,SSUM,,ITEM,VOLU ! 得到总的体积ESORT,ETAB,SMAX_I,,1!按照单元SMAX_I 的绝对值大小排序 *GET,SMAXI,SORT,,MAX!参数 SMAXI=SMAX_I 中的最大值 ESORT,ETAB,SMAX_J,,1!按照单元SMAX_J 的绝对值大小排序 *GET,SMAXJ,SORT,,MAX !参数 SMAXJ=SMAX_J 中的最大值R,1,AREA,IZZ,H !定义单元实常数,以设计变量表示 MP,EX,1,30E6 MP,PRXY,1,0.3N,1!创建节点1 N,11,120!创建节点11NSORT,U,Y !以Uy 为基准对节点排序 *GET,DMAX,SORT,,MAX !参数DMAX=最大位移ETABLE,VOLU,VOLU !VOLU=每个单元的体积SSUMSMAX=SMAXI>SMAXJ !找到最大的应力FINISH三、优化过程的菜单方式实现1、1、读入分析文件进行分析:2、进入。
第六章解析APDL6.1 熟悉新朋友—APDLAPDL是我们即将结识的第二个强大二次开发工具。
它的全称是ANSYS Parametric Design Language。
APDL可以帮助你更加有效的进行分析计算,可以让你轻松自动化你的工作(循环、分支、宏等结构),并是一种高效的参数化建模手段。
很多情况下,APDL主要用在优化设计或者自适应网格划分中。
但在日常分析中如果你知道善用,APDL也将发挥其强大的优势,让你的工作变的生动起来。
6.2 二次开发工具之间的比较APDL所能实现的功能通俗的说来应该是次于UPF而强与UIDL,但实际上是由于三者具体侧重点不同造成的:UIDL主要控制GUI界面的各类二次开发方法,涉及的分析部分就要少一些,APDL可以称其为和分析部分频繁打交道的一组小型工具,功能强大,但不和UIDL一样能够非常具体的针对某一两方面的二次开发处理,通常情况下的他融合在分析的角角落落中。
UPF是三者之间的最强者,他能完成最复杂的二次开发工作,比如说构建新单元,复杂数据库交互,外围命令定制等,但UPF在很多情况下也借助了APDL命令来完全实现其功能。
同样我们也能在UIDL中欠入APDL命令,来构建比较复杂的GUI二次开发工作。
一句话,UIDL、APDL和UPF三者各有所长,密不可分。
结合使用三者,我们将能够实现任何强大的分析功能。
6.3 结束语我们这里对APDL的介绍将着重于它的一些基本功能,而不会象UIDL那样用一组实例来完整的描述他的所有功能,当然其间也会夹杂讲述一些例子,来加强大家对APDL工具应用技巧。
第七章 APDL综合实例7.1 问题说明本章在阐明APDL技术时本想也采取实例的方式,把APDL的各个细节都用一个个详细的实例说清楚,无奈APDL细节内容比较繁复,而且不和UIDL 那样各成体系,APDL 的应用很多情况下都是和UIDL 、UPF 结合在一起应用的,它甚至渗透到基础分析中的各个环节中,可以说也是ANSYS 的脚本基础。
考虑到大家都不会有兴趣来聆听枯燥的数组构建法,宏函数的参元特性等罗嗦的APDL 语法,这里我们打算用一个比较大的综合实例来想大家描述一部分APDL 的功能,从这里你将能看到我们能用APDL 干些什么。
还记得UIDL 实例解析二中的一个例子巴,这里我们有必要重温一下:如图1(a)一所示,一带孔薄板,长4000mm ,宽2000mm ,顶部中心部分1800mm 处承受42MP 的压力,左右两个长圆孔中心分别踞四周1000mm ,长圆孔的具体形式如图1(b)所示,上下分别为半圆,中部用直线衔接。
这里假设长圆长轴与水平方向夹角为α。
为了使得孔边缘应力集中最小,这里拟调整α的大小(α∈[-π/2, π/2]),以便在固定的H 情况下达到长圆孔周围应力集中最小。
在UIDL 实例二的部分我们只是在GUI 界面下实现了它的参数化建模,这部分工作在本章的综合实例中仍然有效,下面我们将一步步完全实现这一问题。
7.2 解题思想本问题是在用户给定H 的情况下求得α角的最优解,使得孔边最大拉应力最小(这是因为材料抗拉性能比较弱)。
这里我们的想法是把α取每一个角度时候得到的孔边最大拉应力都求出,比较一下,得到孔边拉应力最小情况下对应的α取值。
现在的问题是,我们只能够对每一离散的α值求取其孔边最大拉应力,让α在[0°~360°]之间连续取值不仅是无法做到的,而且在工程中也没有必要,这里我们拟每隔一定角度计算一下孔边最大拉应力,最终在这些有限的角度中求取出最佳的α值。
因此我们还需要用户自定义求解的精度参数,即我们每隔多少角度来计算一次(决定了结果精确到什么程度)。
比方说我们定义每隔5°计算一次的话,整个优化过程需要进行180/5=36次求解运算。
图1(b)H r7.3 构建步骤下面说明一下在构建过程中的一些全局参数:My_H:用户输入的H参数值My_sita:每次计算对应的α参数值My_dsita:每两次计算之间间隔的角度值(用户输入的参数)。
My_N:总共需要分析计算的次数。
My_N=180/My_dsitaMy_sita0:初始α值,这里统一定义为0°。
My_MinS1:最优化位置处的最大拉应力值。
(计算完以后才是)My_Msita:最优化位置处对应的α值。
Mysmin:每次分析计算得到对应特定α角时的孔边最大拉应力。
(一般都是孔边产生应力集中,所以也是整个板料内部的最大拉应力处)_s1数组:对应特定α时求解得到各个节点上的最大拉应力值。
1. 首先我们重新构建一比较完善的参数话建模脚本,取名为modaling.mac,该脚本针对固定的My_H和My_sita将构建整个几何模型,加好载荷和约束,具体细节请参看附录。
2. 构建脚本mysolve.mac:――――――――――――――――――――――My_sita0=0My_N=180/My_dsita*do,I,0,My_N-1parsav,all,myparfini/clear,startparres,new,myparMy_sita=My_sita0+My_dsita*Imodaling/solusolve/post1ar11=ndinqr(0,14)_s1=*dim,_s1,,ar11*vget,_s1(1),node,1,s,1*vscfun,mysmin,max,_s1(1)*if,I,eq,0,thenMy_MinS1=mysminMy_Msita=My_sita*ELSE*IF,mysmin,lt,My_MinS1,thenMy_MinS1=mysminMy_Msita=My_sita*ENDIF*ENDIFparsav,all,mypar*enddo―――――――――――――――――――――――――下面是几点说明:程序整个框架是先根据用户输入的参数定制好一些解题环境,比方说求出需要重复计算的次数My_N,然后用APDL的*do循环结构繁复执行My_N次,每次求得对应角度的孔边最大拉应力值,不断积累出这些对应角度孔边最大拉应力值的最小结果。
完成了My_N次结果后,最优结果My_MinS1和对应的角度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_ContentsInp_NoApplyCmd_)*Cset,1,2Fld_0Typ_LabPrm_Custom the Geographic InformationFld_2Prm_ Please Input the Dsita for Analysis(1~90)Typ_INTDef_*PAR(My_dsita)Fld_3Prm_ Please Input the H for Analysis(100~200)Typ_INTDef_*PAR(My_H)Cmd_)/GoCmd_)*GET,My_H,CPAR,2Cmd_)*GET,My_dsita,CPAR,1Cmd_)mysolve:E END:!――――――――――――――――――――――――这里可以看到和UIDL篇中的实例相比,多加了参数My_dsita的用户化输入。
最后的命令修改成直接用文件名调用(这是因为我们把文件名后缀改为了.mac,它标志着标准的宏文件)。
最后的对话框显示如下:用户定制好分析精度和H值后,点击OK就开始了完整的分析过程。
4. 求解结果最后求解完毕后得到了一些最优化结果:用*status命令可以看到所有参数结果(这里我用每隔5度进行一次分析求解):My_Msita=40°,用该最优化建模图形为:这里由于实常数对应力集中的效应没有影响,我们就不再给出具体计算结果来了。
有效的仅是在同样的载荷条件下不同角度的孔上最大拉应力的情况。
7.4 几点说明APDL中的参数化建模、优化涉及是十分复杂有效的,这里我们只是给出了一个小小的例子,用来举一反三。
套用同样的方法和机制,我们可以完成更加复杂的问题。
这里我们仅仅用到了APDL功能中的一小部分,我们完全可以想象一下UIDL+APDL+UPF能够完成什么样复杂程度的功能—几乎是任何功能!7.5 结束语这里结合APDL,UIDL和UPF讲述了一个比较综合的例子,在以后描述了UPF功能后,大家将更加为UPF功能的强大而神往不已。
附录:modaling.mac:――――――――――――――――――――――――――――――!This is a script which can create the modal with a parameter sita.!Parameter Settingsita=My_sita/180*PIr=0.2H=My_H/1000!Customize the Environmentkeyw,pr_struc,1/prep7et,1,shell63r,1,0.12,0.12,0.12,0.12uimp,1,ex,dens,nuxy,2.1e9,1.2,0.375!Modeling!Create platek,1,0,0k,2,2,0k,3,2,2k,4,0,2k,5,0.9,2k,6,1,1l,1,2l,2,3l,3,5l,5,4l,4,1al,1,2,3,4,5!Create hole!Create my coordinatek,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,8csys,11!Create Holek,9,H,rl,7,9l,7,6adrag,6,,,,,,7arotat,6,,,,,,7,10,-90arsys,y,2,3,1arsym,x,2,5,1aadd,2,3,4,5,6,7,8,9asba,1,10csys,0arsym,x,2, , , ,0,0nummer,all, , , ,lowaadd,1,2/auto,1gplot!Meshing the planesmrt,6amesh,all!Add DOFDK,2,UX,0, ,,UYDK,14,UX,0,,,UY!Add PressureSFL,4,PRES,42SFL,11,PRES,42 ―――――――――――――――――――――――――――。