1、ANSYS TRAININGAPDL参数化设计语言参数化设计语言ANSYS TRAINING APDL 是是 ANSYS 参数化设计语言参数化设计语言的缩写的缩写,它是一它是一种可用来自动完成常规有限元分析操作或通过参数种可用来自动完成常规有限元分析操作或通过参数化变量方式建立分析模型的化变量方式建立分析模型的脚本语言脚本语言,是完成优化,是完成优化设计和自适应网格设计和自适应网格划分划分的最主要的基础。的最主要的基础。 APDL允许复杂的数据输入,使用户实际上对任何允许复杂的数据输入,使用户实际上对任何设计或分析都有控制权,如模型尺寸、材料属性、设计或分析都有控制权,如模型尺寸、材料属性、网
2、格密度、载荷边界条件等。网格密度、载荷边界条件等。什么是什么是APDL?ANSYS TRAININGAPDL具有下列功能,用户可根据需要进行组合使用具有下列功能,用户可根据需要进行组合使用或单独使用或单独使用:标量参数标量参数数组参数数组参数表达式和函数表达式和函数分支和循环分支和循环重复功能和缩写重复功能和缩写宏宏用户子程序用户子程序APDL的功能的功能ANSYS TRAINING使用使用APDL语言的优点语言的优点v 可以减少大量的重复工作,节省大量时间;可以减少大量的重复工作,节省大量时间;v 便于保存和携带;便于保存和携带;v 不受不受ANSYS软件的系统操作平台的限制;软件的系统操作
3、平台的限制;v 不受不受ANSYS软件版本的限制,个别命令除外;软件版本的限制,个别命令除外;v 在进行优化设计和自适应网格分析时,必须使用在进行优化设计和自适应网格分析时,必须使用APDL语言;语言;v ANSYS某些高级功能的实现必须使用某些高级功能的实现必须使用APDL;v 利用利用APDL,用户很容易建立参数化的零件库;,用户很容易建立参数化的零件库;v 可以编写常用命令集即宏命令,制作快捷按钮;可以编写常用命令集即宏命令,制作快捷按钮;v 可以利用可以利用APDL从事二次开发。从事二次开发。ANSYS TRAININGAPDL基础回顾基础回顾ANSYS TRAININGAPDL 基础
4、基础概述概述 介绍介绍APDL的基本功能使您能够的基本功能使您能够:定义并使用标量参数定义并使用标量参数从从 ANSYS 数据库中获取信息数据库中获取信息 您可以从在线帮助的您可以从在线帮助的APDL手册中获得更多的信息手册中获得更多的信息ANSYS TRAININGAPDL 基础基础A. 定义参数定义参数 用以下格式定义参数用以下格式定义参数Name=Value可以在输入窗口或可以在输入窗口或标量参数标量参数对话框中输对话框中输入入 (Utility Menu Parameters Scalar Parameters.)参数名不能超过参数名不能超过8个个字符。字符。值可以是一个数值,一个以前
5、定义过的值可以是一个数值,一个以前定义过的参数,一个函数,一个参数表达式,或参数,一个函数,一个参数表达式,或者一个字符串(用单引号括住)。者一个字符串(用单引号括住)。ANSYS TRAININGAPDL 基础基础 .定义参数定义参数 例子例子:inrad=2.5outrad=8.2numholes=4thick=outrad-inrade=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
6、-y1)/(x2-x1)theta=atan(slope)jobname=proj1用用 *SET 看有用参数列表看有用参数列表ANSYS TRAININGAPDL 基础基础 .定义参数定义参数一些命名规则一些命名规则: 参数名不超过参数名不超过8个个字符,并以字符,并以字母字母开头。开头。 参数名中只能出现参数名中只能出现字母字母,数字数字和和下划线下划线。 参数名参数名不分大小写不分大小写,如,如“RAD” 和和 “Rad” 是是一样的。所有的参数都以大写形式存储。一样的。所有的参数都以大写形式存储。 避免使用避免使用 ANSYS 标识,如标识,如 STAT, DEFA, 和和 ALLAN
7、SYS TRAININGAPDL 基础基础 B.使用参数使用参数 使用参数时,只需在对话框中或通过命令输入参数使用参数时,只需在对话框中或通过命令输入参数名就行了。名就行了。 例如例如, 利用参数定义一个利用参数定义一个 w=10,h=5的矩形的矩形,您可以使用以下菜单您可以使用以下菜单:Preprocessor Create Rectangle By 2 Corners +或命令或命令:/prep7blc4,w,hANSYS TRAININGAPDL 基础基础.参数的用法参数的用法注意注意: 当使用参数时当使用参数时, ANSYS 将立刻把参数名换为参将立刻把参数名换为参数的当前值。数的当前
8、值。上一个例子中的矩形将被存为上一个例子中的矩形将被存为 10 x5 , 而不是而不是 wxh。也就是说,如果你在生成矩形后再改变也就是说,如果你在生成矩形后再改变 w 或或 h 的值,矩形将不被修改。的值,矩形将不被修改。ANSYS TRAININGAPDL 基础基础.参数的用法参数的用法 其它一些关于参数用法的例子其它一些关于参数用法的例子:jobname=proj1/filnam,jobname ! 作业名作业名/prep7youngs=30e6mp,ex,1,youngs ! 杨氏模量杨氏模量force=500fk,2,fy,-force! 2号关键点的力号关键点的力fk,6,fx,f
9、orce/2! 6号关键点的力号关键点的力ANSYS TRAININGAPDL 基础基础C. 从数据库中获取信息从数据库中获取信息 从数据库中获取信息并给参数赋值从数据库中获取信息并给参数赋值, 使用使用 *GET 命命令或令或 Utility Menu Parameters Get Scalar Data. 对获取大量信息是很有用的,包括对获取大量信息是很有用的,包括模型和结果数据模型和结果数据,请参看,请参看 *GET命令的详细资料。命令的详细资料。ANSYS TRAININGAPDL 基础基础 .从数据库中获取信息从数据库中获取信息 例子例子:*get,x1,node,1,loc,x !
10、 x1 =节点节点1的的x坐标坐标 CSYS*/post1*get,sx25,node,25,s,x ! sx25 = 节点节点25的的x方向应力方向应力 RSYS*get,uz44,node,44,u,z ! uz44 =节点节点44的的UZ方向的位移方向的位移RSYS*nsort,s,eqv ! 对节点的对节点的 von Mises 应力排序应力排序*get,smax,sort,max ! smax = 排序的最大值排序的最大值etable,vol,volu ! 用用vol 存储单元体积存储单元体积ssum ! 对单元表的列求和对单元表的列求和*get,totvol,ssum,vol !
11、totvol = 对对 vol 的列求和的列求和*CSYS = 激活坐标系激活坐标系 (CSYS) RSYS = 激活的结果坐标系激活的结果坐标系 (RSYS)ANSYS TRAININGAPDL 基础基础 .从数据库中获取信息从数据库中获取信息 一些数据可以通过一些数据可以通过ANSYS的的内部函数内部函数获取获取(请查看帮助请查看帮助)。 例如例如:x1=nx(1) ! x1 = 节点节点1的的x坐标坐标 CSYS*nn=node(2.5,3,0) ! nn = 在在(2.5,3,0)处的节点处的节点 CSYS*/post1ux25=ux(25) ! ux25 = 25号节点的号节点的 U
12、X 值值RSYS*temp93=temp(93) ! temp93 = 节点节点93的温度值的温度值width=distnd(23,88) ! width = 23号节点和号节点和88号节点间号节点间的距离的距离*CSYS = 激活坐标系激活坐标系 (CSYS) RSYS = 激或的结果坐标系激或的结果坐标系 (RSYS)ANSYS TRAININGAPDL 基础基础 .从数据库中获取信息从数据库中获取信息 在一些地方您可以直接取函数值在一些地方您可以直接取函数值 ,就象用一个参数一样。,就象用一个参数一样。 例如:例如:k,10,kx(1),ky(3) ! 10号关键点号关键点x坐标取坐标取
13、1号关键点的号关键点的x坐标,坐标, y坐标取坐标取3号关键点的号关键点的y坐标坐标k,11,kx(1)*2,ky(3) ! CSYS*f,node(2,2,0),fx,100!在节点在节点(2,2,0)施加力施加力 FX CSYS*CSYS = 激活坐标系激活坐标系 (CSYS)ANSYS TRAININGAPDL 基础基础.定义参数定义参数 以上例子是关于以上例子是关于标量参数标量参数的的, 它只有一个值它只有一个值 数数字或者字符。字或者字符。 ANSYS 也提供数组参数也提供数组参数, 它有若干个值。数字数它有若干个值。数字数组和字符数组都是有效的。数组后面详细讨论组和字符数组都是有效
14、的。数组后面详细讨论28.7-9.2-2.151.00.0 xvalues =job1job2job3job4job5 filnam =ANSYS TRAINING数组参数数组参数ANSYS TRAINING2. 数组参数数组参数数组参数数组参数 是能够容纳多个值的参数是能够容纳多个值的参数 数组参数可以是数组参数可以是 1-D, 2-D, or 3-D.1-D: m 行行 x 1 列列2-D: m 行行 x n 列列3-D: m 行行 x n 列列 x k 面面17.1-47.6-5.225.0107.9814173861057-477041033-52348714125-666221071
15、115x1 array5x3 arraymxnx3 arrayAA =BB =CC =ANSYS TRAINING.数组参数数组参数本章主要讨论怎样定义和使用数组参数本章主要讨论怎样定义和使用数组参数.主要内容主要内容: 数组参数的类型数组参数的类型 怎样定义数组怎样定义数组 获取数据库信息获取数据库信息 数组操作数组操作ANSYS TRAINING数组参数数组参数A. 数组参数的类型数组参数的类型 有三种数组参数类型有三种数组参数类型:数值数组数值数组表表字符数组字符数组 数值数组数值数组 是标准的是标准的 1-D, 2-D, 或或 3-D 数值数值矩阵,如下面的矩阵,如下面的 BB:BB(
16、2,3) = 704BB(3,1) = 1033等等.814173861057-477041033-52348714125-666221071115x3 arrayBB =ANSYS TRAINING数组参数数组参数.数组参数的类型数组参数的类型 表数组表数组除了行、列、面可以是除了行、列、面可以是实数实数外与数值数外与数值数组类似。组类似。第零行、零列、零面必须填充数字。第零行、零列、零面必须填充数字。对定义随时间变化的载荷和类似情况非常有用。对定义随时间变化的载荷和类似情况非常有用。例如例如,表表FORCE可以表示力随时间的变化关系,第零可以表示力随时间的变化关系,第零列表示时间值。列表示
17、时间值。 FORCE(0.4) = 279.9996 FORCE(6.5) = 560.0 FORCE(8.9) = 119.25 等ANSYS TRAINING数组参数数组参数.数组参数的类型数组参数的类型 字符数组字符数组是是 1-D, 2-D,或或 3-D 的字符串矩阵的字符串矩阵可用来存放文件名可用来存放文件名,自由度标识等自由度标识等每个字符串不超过每个字符串不超过8个字符。个字符。JOB1JOB2JOB3JOB4JOB5jobs =UXUYUZROTYROTZdofs =ANSYS TRAINING数组参数数组参数B. 怎样定义数组怎样定义数组 定义数组的步骤定义数组的步骤: 1.
18、指定类型和维数指定类型和维数 Utility Menu Parameters Array Parameters Define/Edit Add 或使用或使用 *DIM 命令命令. 例如例如:*dim,aa,array,4 ! 4x1x1 array*dim,force,table, ! 5x1x1 table*dim,bb,array,5,3 ! 5x3x1 array*dim,dofs,char,6 ! 6x1x1 character arrayANSYS TRAINING数组参数数组参数.怎样定义数组怎样定义数组 2. 给数组赋值给数组赋值 Utility Menu Parameters
19、Array Parameters Define/Edit Edit 或或使用使用“=”命令命令.例如例如:bb(1,1)=11,21,31,41,51bb(1,2)=12,22,32,42,52bb(1,3)=13,23,33,43,53注意:注意:v赋值时名称后必须有下标,赋值时名称后必须有下标,v每一次赋值最多到一列结束,每一次赋值最多到一列结束,v因此必须因此必须每列分别赋值每列分别赋值。v每一个赋值命令最多只能赋每一个赋值命令最多只能赋10个值。个值。ANSYS TRAINING数组参数数组参数.怎样定义数组怎样定义数组 对于表型数组对于表型数组,必须定义第必须定义第0位置。位置。 否
20、则,取缺省值否则,取缺省值 7.8886E-31.例如例如:force(1,1)=0,560,560,238.5,0force(1,0)=1E-6,0.8,7.2,8.5,9.3force(0,1)=0ANSYS TRAINING数组参数数组参数.怎样定义数组怎样定义数组 对字符数组对字符数组, 不能以不能以GUI方式填充字符串。方式填充字符串。使用使用 “=”命令键入值命令键入值, 接着用接着用 *STAT 显示字显示字符串符串 每个字符串必须用每个字符串必须用单引号单引号括起来括起来例如例如:dofs(1) = ux, uy, uz, rotx, roty, rotz*stat,dofsA
21、NSYS TRAINING数组参数数组参数.怎样定义数组怎样定义数组 给数组赋值的其他方法给数组赋值的其他方法:用用 *VFILL 命令或命令或 (Utility Menu Parameters Array Parameters Fill)预定义函数赋值预定义函数赋值跃阶函数跃阶函数随机函数随机函数 等等从数据库获取从数据库获取(下一步讨论下一步讨论).从一个文件读入数据(后面详细讨论)从一个文件读入数据(后面详细讨论): *VREAD 用于数值数组用于数值数组 *TREAD 用于数据表用于数据表 或 Utility Menu Parameters Read from FileANSYS TR
22、AINING数组参数数组参数C. 获取数据库信息获取数据库信息 正如正如 *GET 从数据库获取标量数据一样,可以用从数据库获取标量数据一样,可以用 *VGET 获取数组信息获取数组信息.或或 Utility Menu Parameters Get Array Data 先定义数组,然后获取数据先定义数组,然后获取数据. 例如例如:*dim,dispval,array,20,3! 20 x3 array*vget,dispval(1,1),node,u,x! UX of nodes 1-20 in column 1*vget,dispval(1,2),node,u,y! UY in colum
23、n 2*vget,dispval(1,3),node,u,z! UZ in column 3ANSYS TRAINING数组参数数组参数获取数据库信息获取数据库信息 其他可获取的数组信息类型其他可获取的数组信息类型: 节点和关键点坐标节点和关键点坐标 (当前坐标系当前坐标系) 单元属性单元属性, 体,面等体,面等. 实体的选择状态实体的选择状态(1 选上选上, 0 未选上未选上) 节点应力节点应力,应变应变,温度梯度,热通量等温度梯度,热通量等 单元表数据单元表数据 等等ANSYS TRAINING数组参数数组参数*VREAD将文本文件读入数值数组将文本文件读入数值数组 例:例:文件文件dat
24、aval: 1.5 7.8 12.3 1.5 7.8 12.3 15.6 -45.6 42.515.6 -45.6 42.5 * *DIM,EXAMPLE,ARRAY,2,3DIM,EXAMPLE,ARRAY,2,3 * *VREAD,EXAMPLE(1,1),VREAD,EXAMPLE(1,1),datavaldataval,txt,JIK,3,2,txt,JIK,3,2 (3F6.1) (3F6.1) EXAMPLE = 1.5 7.8 12.3 1.5 7.8 12.3 15.6 -45.6 42.5 15.6 -45.6 42.5 必须指定起始元素(如必须指定起始元素(如(1,1)或(
25、或(2,2)等)等),(i,j)表示表示从第从第i行、第行、第j列开始列开始填充数据填充数据。 格式说明紧随读入命令后面格式说明紧随读入命令后面, 为为FORTRAN实型数据实型数据格式(格式(nF*.*) n表示从数据文件中表示从数据文件中每一行每一行读入读入n个数据个数据. 从起始元素开始按从起始元素开始按JIK指定的顺序给数组赋值。指定的顺序给数组赋值。ANSYS TRAINING数组参数数组参数*VREAD将文本文件读入数值数组将文本文件读入数值数组例:文件例:文件data1.txt: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
26、 21 22 23 24 25 * *DIM,arr1,4,4DIM,arr1,4,4 * *VREAD,arr1(1,1),data1,txt,IJK,4,4VREAD,arr1(1,1),data1,txt,IJK,4,4 (4F3.0)(4F3.0) * *DIM,arr2,4,4DIM,arr2,4,4 * *VREAD,arr2(1,1),data1,txt,JIK,4,4VREAD,arr2(1,1),data1,txt,JIK,4,4 (4F3.0)(4F3.0) * *DIM,arr3,4,4DIM,arr3,4,4 * *VREAD,VREAD,arr3(2,2)arr3(2
27、,2),data1,txt,JIK,3,3,data1,txt,JIK,3,3 ( (3 3F3.0)F3.0) * *DIM,arr4,4,4DIM,arr4,4,4 * *VREAD,arr4(2,2),data1,txt,JIK,3,3VREAD,arr4(2,2),data1,txt,JIK,3,3 ( (5 5F3.0)F3.0)ANSYS TRAINING数组参数数组参数*VREAD将文本文件读入数值数组将文本文件读入数值数组 答案:答案: arr1=1 6 11 16 2 7 12 17 3 8 13 18 4 9 14 19 arr2= 1 2 3 4 6 7 8 9 11 1
28、2 13 14 16 17 18 19 arr3=0 0 0 0 0 1 2 3 0 6 7 8 0 11 12 13 arr4= 0 0 0 0 0 1 2 3 0 4 5 6 0 7 8 9ANSYS TRAINING数组参数数组参数*TREAD将文本文件读入表数组将文本文件读入表数组 不需输入起始下标,只须数据表名,不需格式控制命令不需输入起始下标,只须数据表名,不需格式控制命令 数据文件中数字可用空格或逗号分开。数据文件中数字可用空格或逗号分开。 从数据文件中从数据文件中逐行逐行读入数据读入数据,并,并逐行逐行填充数据表填充数据表 最好保证数据文件与数据表格式的一致性最好保证数据文件与
29、数据表格式的一致性 例:例: 文件文件t2data.txtTemp (time-X-coord) Table Time X-Coordinate 0 00.3 0.5 0.7 0.90 10152025301 15202535402 20253555604 30407090100* *DIM,DIM,TtxTtx,table,4,5,time,X-COORD ,table,4,5,time,X-COORD * *TREAD,TREAD,TtxTtx,t2data,txt,2,t2data,txt,2ANSYS TRAINING数组参数数组参数D. 数组操作数组操作 一旦定义了数组参数一旦定义了
30、数组参数,就可以对它们进行各种操作就可以对它们进行各种操作Utility Menu Parameters Array Operations 或使用或使用 *VFUN, *VOPER, *VSCFUN, *VWRITE等命等命令令ANSYS TRAINING数组参数数组参数.数组操作数组操作 *VFUN 对单个数组操作对单个数组操作 *vfun,b(1),sin,a(1) 等价于等价于 b(j)=sin(a(j) 其他操作包括其他操作包括: 自然对数自然对数, 常用对数常用对数, 指数指数 平方根平方根, 排序排序, 复制复制 局部坐标系与整体坐标系的相互局部坐标系与整体坐标系的相互转换关系转换
31、关系 路径的切线和法线矢量路径的切线和法线矢量 等等ANSYS TRAINING数组参数数组参数.数组操作数组操作 *VOPER 对两个数组参数操作。对两个数组参数操作。 *voper,c(1),a(1),sub,b(1) 等价于等价于 c(k)=a(k)-b(k) 其它操作包括其它操作包括: 加加,减减,乘乘,除除 最小值最小值,最大值最大值,逻辑运算逻辑运算 微分,积分微分,积分 点积和叉积点积和叉积ANSYS TRAINING数组参数数组参数.数组操作数组操作 *VSCFUN 求出数组的标量参数求出数组的标量参数。 *vscfun,maxval,max,a(1) 等价于等价于一个标量一个
32、标量 maxval = max(a(i) 其它操作包括其它操作包括: 求数组的所有元素的和求数组的所有元素的和 诸如标准偏差,中值,平均数等统计诸如标准偏差,中值,平均数等统计量量 最小值最小值/最大值,最小值最大值,最小值/最大值的位最大值的位置置 第一个和最后一个非零记录的位置第一个和最后一个非零记录的位置ANSYS TRAINING数组参数数组参数.数组操作数组操作 *VWRITE把数组数据按格式写进文件把数组数据按格式写进文件 例如例如: *cfopen,wing,dat*vwrite(/,3x,Node Number,4x,Temperature,/)*vwrite,nnum(1),tval(1)(5x,f6.0,6x,e14.8)*cfclose将会创建一个名为将会创建一个名为 wing.dat 的文件,包含指定格式的的文件,包含指定格式的 nnum 和和 tval 数组数组ANSYS TRAINING数组参数数组参数.数组操作数组操作 还有大量很有用的数组操作。还有大量很有用的数组操作。 请参考请参考 APDL 程序员指南获取详细情况程序员指南获取详细情况.