APDL与优化培训刘晓宁TrainingManualNovember1,2002Inventory#00175514-2•本次培训分为两大部分内容–关于ANSYSAPDL语言的全面介绍–关于设计优化和拓扑优化及其相关内容的全面介绍•在进阶培训中对这两部分内容有简介–本次我们利用专门的培训课程对这两部分内容做更加仔细和深入的介绍.开场白TrainingManualNovember1,2002Inventory#00175514-3培训安排•第一天–参数使用,矢量/矩阵运算,读写数据文件,访问数据库,流程控制•第二天–宏编程技术,参数化建模,函数,缩写/工具条,定制简单用户界面•第三天–ANSYS优化概念,设计优化一般过程•第四天–设计工具,优化方法,健壮设计概念•第五天–拓扑优化,概率分析简介TrainingManualNovember1,2002Inventory#00175514-4APDL概念TrainingManualNovember1,2002Inventory#00175514-5什么是APDL?•APDL即ANSYSParametricDesignLanguage•专用解释性语言,用于自动实现通常性的任务,某种程度上类似FORTRAN•实现FEM的参数化建模、加载、求解和后处理–用参数而不是用数值输入模型尺寸,材料类型等–从ANSYS数据库中获取信息,比如节点位置或最大应力•是设计优化和自适应网格划分等高级特性的基础•为日常分析提供了很多便利–在参数中进行数学运算,包括矢量和矩阵运算–把常用的命令或宏定义成缩写形式–建立一个宏使用if-then-else分支和do循环等来执行一系列任务•定制人机数据和信息交互界面•开发特殊分析功能有限元专用分析系统TrainingManualNovember1,2002Inventory#00175514-6APDL建模实例利用APDL实现壳单元的变厚度及复杂三维实体建模TrainingManualNovember1,2002Inventory#00175514-7APDL建模实例利用APDL实现复杂实体建模TrainingManualNovember1,2002Inventory#00175514-8APDLGUI应用实例典型的多行提示对话框:参数输入窗口:TrainingManualNovember1,2002Inventory#00175514-9APDL应用系统实例TrainingManualNovember1,2002Inventory#00175514-10参数的使用TrainingManualNovember1,2002Inventory#00175514-11内容:•参数说明•参数命名规则•参数相关操作•参数的使用TrainingManualNovember1,2002Inventory#00175514-12参数的概念•参数是APDL的变量•不必明确声明参数类型,所有数值变量都以双精度数储存–被使用但未声明的参数都被赋一个接近0的值•ANSYS包含两种类型的参数:标量和数组–数组下节介绍•标量和数组元素可以是数值或字符型的TrainingManualNovember1,2002Inventory#00175514-13参数的命名规则•参数名不超过32个字符,并以字母开头。•参数名中只能出现字母,数字和下划线。•参数名不分大小写,如“RAD”和“Rad”是一样的。•避免使用ANSYS标识,如STAT,DEFA,和ALL。•记住,名称为从ARG1到ARG9和从AR10到AR99的参数被保留为局部参数。通常,局部参数用于宏中。•参数名不能与用*ABBR命令定义的缩写相同。•常规应用中参数名不要以下划线开头。这类参数名通常用于GUI和应用于ANSYS的专用宏中。有效参数名:ABCPIX_OR_Y无效参数名:MY_PARAMETER_NAME_LONGER_THAN_32_CHARACTERS(超过32个字符)2CF3(以数值开头)M&E(含非法字符&)TrainingManualNovember1,2002Inventory#00175514-14定义参数•定义参数的方法主要有:–在运行过程中把值赋给参数–提取ANSYS提供的值并把这些值赋给参数–用*GET命令或各种内嵌获取函数从ANSYS中提取值•给参数赋值–用*SET命令定义参数*SET,ABC,-24*SET,QR,2.07E11*SET,XORY,ABC*SET,CPARM,'CASE1‘–用’=’号更方便ABC=-24QR=2.07E11TrainingManualNovember1,2002Inventory#00175514-15其它例子•例子:inrad=2.5outrad=8.2thick=outrad-inradnumholes=4e=2.7e6density=0.283bb=cos(30)pi=acos(-1)g=386massdens=density/gcircumf=2*pi*radarea=pi*r**2dist=sqrt((y2-y1)**2+(x2-x1)**2)slope=(y2-y1)/(x2-x1)theta=atan(slope)jobname=‘proj1’GUI中可以直接以两种方法:ANSYS输入窗口标量参数对话框(UtilityMenuParametersScalarParameters)TrainingManualNovember1,2002Inventory#00175514-16在启动时给参数赋值•从操作系统的命令行启动ANSYS时–在ANSYS的运行命令(与系统有关)之后按-NameValue的格式输入参数定义即可,例如:ansys70-parm189.3-parm2-0.1•如果不是用命令行形式启动ANSYS,可以通过Interactive或Batch菜单项•假如在启动时要定义很多参数–在start**.ans文件中或一个能用/INPUT命令加载的单独文件中进行参数定义注意:不要使用一或两个字符参数,避免与ANSYS命令相冲突TrainingManualNovember1,2002Inventory#00175514-17从ANSYS总获取数据赋给参数提供了两种方法来从ANSYS中提取数据:•*GET命令(UtilityMenuParametersGetScalarData)•内嵌获取函数,可在运行时使用。每个获取函数从某个特定的项目中提取特定的数据。TrainingManualNovember1,2002Inventory#00175514-18*GET命令的格式*GET,Par,Entity,ENTNUM,Item1,IT1NUM,Item2,IT2NUMPar是存储提取项的参数名Entity是被提取项目的关键字,有效的关键字是NODE、ELEM等,ENTNUM是实体的编号(若为0指全部实体)Item1是指某个指定实体的项目名。例如,如果Entity是ELEM,那么Item1要么是NUM(选择集中的最大或最小的单元编号),要么是COUNT(选择集中的单元数目)。•可以把*GET命令看成是对一种树型结构从上至下的路径搜索,即从一般到特殊的确定。•一般可以先从GUI中执行此命令,成功后COPY到命令流中TrainingManualNovember1,2002Inventory#00175514-19*GET的例子*GET,BCD,ELEM,97,ATTR,MAT!BCD=单元97的材料号*get,x1,node,1,loc,x!x1=节点1的x坐标[CSYS]**GET,V37,ELEM,37,VOLU!V37=单元37的体积*GET,NMAX,NODE,,NUM,MAX!NMAX=最大激活节点数*GET,COORD,ACTIVE,,CSYS!COORD=激活的坐标系值/post1*GET,EL52,ELEM,52,HGEN!EL52=在单元52生成的热值*GET,HNOD,NODE,12,HGEN!HNOD=在节点12生成的热值*get,sx25,node,25,s,x!sx25=节点25的x方向应力[RSYS]**get,uz44,node,44,u,z!uz44=节点44的UZ方向的位移[RSYS]**GET,OPER,ELEM,102,HCOE,2!OPER=单元102面2上的膜系数*GET,TMP,ELEM,16,TBULK,3!TMP=单元16面3上的体积温度nsort,s,eqv!对节点的vonMises应力排序*get,smax,sort,,max!smax=排序的最大值etable,vol,volu!用vol存储单元体积ssum!对单元表的列求和*get,totvol,ssum,,vol!totvol=对vol的列求和TrainingManualNovember1,2002Inventory#00175514-20使用内联GET函数•对于某些常用的获取项目,可以用内嵌的获取函数来代替*GET命令–获取函数返回项目的值并直接用于当前运行之中*GET,L1,NODE,1,LOC,XMID=(L1+L2)/2MID=(NX(1)+NX(2))/2比较常用的:NSEL(N),NX(N),NODE(X,Y,Z),DISTND(N1,N2),UX(N),TEMP(N)x1=nx(1)k,10,kx(1),ky(3)nn=node(2.5,3,0)k,11,kx(1)*2,ky(3)/post1f,node(2,2,0),fx,100ux25=ux(25)temp93=temp(93)width=distnd(23,88)TrainingManualNovember1,2002Inventory#00175514-21列表显示参数•*STATUS命令(UtilityMenuListOtherParameters)•以下划线”_”开头或结尾的参数不能由*STATUS命令显示出来•通过给*STATUS命令定义附加参数来单独显示某些参数UtilityMenuListOtherNamedParameter*STATUS,ABC•ANSYS最多允许有1000个参数,但是由于GUI和ANSYS宏需要用到一些参数,所以用户可用参数不到1000个。–内部参数数目可由*STATUS命令列出–*GET,par,PARM,,MAX命令返回所有已定义参数的数目TrainingManualNovember1,2002Inventory#00175514-22使用和删除参数•使用参数时,只需在对话框中或通过命令输入参数名就行了。•例如,利用参数定义一个w=10,h=5的矩形,–可以使用以下菜单:PreprocessorCreateRectangleBy2Corners+–或命令:/prep7blc4,,,w,h注意:•当使用参数时,ANSYS将立刻把参数名换为它的值。本例的矩形将被存为10x5,而不是wxh。也就是说,如果你在生成矩形后再改变w或h的值,矩形将不被修改。如果要删除参数•使用“=”命令,其右边为空•*SET命令•GUI删除TrainingManualNovember1,2002Inventory#00175514-23字符参数•字符参数通常用来提供文件名和扩展名–把文件名赋给某个字符参数–在需要用到文件名的地方用对应的参数来代替–字符参数最多只能有8个字符Jbname=‘proj01’NAME='MACRO'/filename,jbname*USE,NAMETrainingManualNovember1,2002Inventory#00175514-24字符参数的禁止替换和强制替换•通过把参数名括在单引号中(如’XYZ‘)来防止参数被替换•在本来不发生替换时对其强制进行替换(把参数名括在百分号%中),适用于:–某些命令:/TITLE,/STITLE,/tlabel/syp*abbr–域:任何文件名或扩展名,如/filnam,resu