首页 理论教育 APDL语言参数详解ANSYS15.0有限元分析入门与精通

APDL语言参数详解ANSYS15.0有限元分析入门与精通

时间:2023-10-27 理论教育 版权反馈
【摘要】:参数是APDL的变量。在ANSYS中,定义参数不必明确声明参数类型。APDL提供的数组参数的类型有:数值、字符和表。2)名称为从ARG1~ARG9和AR10~AR99的参数被保留为局部参数。这类参数名只能用于GUI和应用于ANSYS的宏中。可以提取ANSYS提供的值,再把这些值赋给参数,或者用*GET命令或各种内嵌获取函数从ANSYS中提取值。如表7-1所示,列出了可用的获取函数。其中,Par是数组名;Type是数组类

APDL语言参数详解ANSYS15.0有限元分析入门与精通

参数是APDL的变量。在ANSYS中,定义参数不必明确声明参数类型。所有数值变量(整形或实形)都以双精度数储存。被使用但未声明的参数都被赋一个接近0的值,或“极小值”,大约为2-100。例如,若参数A被定义为A=B,但B没被定义,则赋给A个极小值。

ANSYS包含两种类型的参数:标量和数组。括在单引号中的字符串(最多8个字符)可以赋给参数。APDL提供的数组参数的类型有:数值、字符和表(一种特殊的数值数组,能自动产生插值)。

可以用一个参数(代替数值或字符串)作为任何一个ANSYS命令的变量,该参数被求值并被赋给命令变量。例如,把值3赋给参数AA,然后执行命令:

N,12,AA,4

ANSYS程序将把该命令解释为:N,12,3,4!定义节点12为X=3,Y=4。

(1)参数的命名规则

参数名称必须以字母开头,且只能包含字母、数值和下画线。

下面列出的均为无效参数名:

●NEW_VALUE(超过8个字符)。

●2CF3(以数值开头)。

●M&E(含非法字符"&")。

在命名参数时,注意以下几点:

1)要避免参数名与经常使用的ANSYS标识字相同,如:自由度(DOF)标识字(TEMP,UX,PRES等);常用标识字(ALL,PICK,STAT等);用户定义标识字(如用ETABLE命令定义的标识字);数组类型标识字(如CHAR,ARRAY,TABLE等)。

2)名称为从ARG1~ARG9和AR10~AR99的参数被保留为局部参数。

提示:通常,局部参数用于宏中。

3)参数名不能与用*ABBR命令定义的缩写相同。

4)参数名不能以下画线“_”开头。这类参数名只能用于GUI和应用于ANSYS的宏中。

(2)参数的定义方法

定义参数的方法主要有:直接赋值给参数或从数据库中获取信息。

可以提取ANSYS提供的值,再把这些值赋给参数,或者用*GET命令或各种内嵌获取函数从ANSYS中提取值。

1)直接赋值给参数。在运行过程中,可以用*SET命令定义参数。如下面的例子:

978-7-111-47915-4-Part01-250.jpg

也可以用“=”作为一种速记符来调用*SET命令(这更方便),其格式为Name=Value,这里Name是指参数名,Value是指赋给该参数的数值或字符。

注意:对于字符参数,赋给的值必须被括在单引号中,并不能超过8个字符。

等号“=”的用法如下:

978-7-111-47915-4-Part01-251.jpg

这与上面的*SET是等效的。

在GUI中,可以直接在ANSYS输入窗口或标量参数对话框的“Selection”域(通过Utility Menu>Parameters>Scalar Parameters菜单项访问)中输入“=”。

2)从数据库中获取信息。ANSYS提供了两种方法来从ANSYS中提取数据:*GET命令是指从某个特定的项目中提取数据并赋给某个特定的参数;内嵌获取函数,可在运行时使用。每个获取函数从某个特定的项目中提取特定的数据。

*GET命令(Utility Menu>Parameters>Get Scalar Data)从某个特定的项目(一个点、一个单元、一个面等)中提取ANSYS提供的数据并赋给某个用户命名的参数。各种关键词、标识字和数字结合在一起来确定被提取的项目。

*GET命令的使用格式为:

*GET,Par,Entity,ENTNUM,Item1,IT1NUM,Item2,IT2NUM

其中,Par是将被赋值的参数名;Entity是被提取项目的关键词,有效的关键词是NODE,ELEM,KP,LINE,AREA,VOLU等,在ANSYS Commands Reference(ANSYS命令参考手册)中的*GET部分对之有完整的说明;ENTNUM是实体的编号(若为0指全部实体);Item1是指某个指定实体的项目名。例如,如果Entity是ELEM,那么Item1要么是NUM(选择集中的最大或最小的单元编号),要么是COUNT(选择集中的单元数目)。在ANSYS Commands Reference(ANSYS命令参考手册)中的*GET部分对每种实体的Item1值有完整的说明。

可以把*GET命令看成是对一种树型结构从上至下的路径搜索,即从一般到特殊的确定。

可用下面的例子来说明*GET命令的用法。如:

*GET,A,ELEM,5,CENT,X,

意为返回单元5的质心的X坐标值并赋给参数A。

*GET,BCD,ELEM,97,ATTR,M A T!B C D=单元97的材料号

获得单元97的材料属性(MAT参考号)并赋给单元BCD。

类似的还有(!之后为注释):

978-7-111-47915-4-Part01-252.jpg

提示:

1)*CSYS=激活坐标系(CSYS)。

2)RSYS=激活的结果坐标系(RSYS)。

一些数据可以通过函数获取。

例如:

978-7-111-47915-4-Part01-253.jpg

978-7-111-47915-4-Part01-254.jpg

获取函数的参数可以是参数也可以是其他的获取函数。例如,获取函数NELEM(ENUM,NPOS)返回在单元ENUM上NPOS处的节点编号,则联合函数NX(NELEM(ENUM,NPOS))返回该节点的X坐标值。如表7-1所示,列出了可用的获取函数。

表7-1 可用的获取函数

978-7-111-47915-4-Part01-255.jpg

(续)

978-7-111-47915-4-Part01-256.jpg

(续)

978-7-111-47915-4-Part01-257.jpg

(3)数组参数

变量参数只能存储一个参数值,工程分析所需要的与所产生的数据往往以表的方式更易于理解和管理,ANSYS的数组参数是能定义成矩阵形式的多维数组,数组参数中的项可以是用户定义的值,也可以是ANSYS计算出的值。用户定义的数组可以在ANSYS程序中直接输入,也可以从已有的数据文件中读入。

数组参数的类型有3种:第一类由简单整理成表格形式的离散数据组成;第二类就是通常所说的表式数组参数表,也是由整理成表格形式的数据组成的,但这种表允许在两个指定的表格项间进行线性插值,另外,表式数组参数表可以用非整数数值作为行和列的下标,这些特性使表式数组参数表成为简化数据输入输出的有力工具;第三类数组参数是字符串,由文字组成。

使用数组参数能简化数据输入,数组参数具有矩阵和向量运算能力,在ANSYS运行中,任何时刻数组参数(以及其他参数)都能以FORTRAN实数的形式写入文件,写出的文件可用于ANSYS其他应用。

定义数组参数有两种途径,利用*DIM命令或者利用GUI菜单定义。

*DIM命令格式如下。

978-7-111-47915-4-Part01-258.jpg

其中,Par是数组名;Type是数组类型,标识字有ARRAY(默认值)、CHAR、TABLE、STRING;IMAX、JMAX、KMAX分别是数组下标(I,J,K)的是最大值;Var1、Var2、Var3是TABLE类型数组时对应的行、列、面的变量名。

例如:

978-7-111-47915-4-Part01-259.jpg

采用GUI菜单定义数组参数的方法如下:在通用菜单中选择Parameters>Array Parameters>Define/Edit命令,弹出定义数组参数对话框,如图7-2所示。单击Add按钮,弹出定义数组参数对话框如图7-3所示,按照说明添加参数,单击OK按钮确认,或单击

Apply按钮继续添加多个数组。

978-7-111-47915-4-Part01-260.jpg

图7-2 定义数组参数对话框

978-7-111-47915-4-Part01-261.jpg

图7-3 添加新数组参数对话框

或使用“=”命令。例如:

978-7-111-47915-4-Part01-262.jpg

对字符数组,不能以图形方式填充字符串。直接按上述步骤操作会出现如图7-4所示警告信息。

使用“=”命令输入值,接着用*STAT显示字符串。每个字符串必须用单引号括起来。

例如:

978-7-111-47915-4-Part01-263.jpg

得到如图7-5所示数组信息。

978-7-111-47915-4-Part01-264.jpg

图7-4 警告信息

978-7-111-47915-4-Part01-265.jpg

图7-5 字符数组信息(www.xing528.com)

注意:对于表型数组,必须定义第0位置。否则,取默认值7.889E-31,如图7-6所示。

例如:

978-7-111-47915-4-Part01-266.jpg

赋值后如图7-7所示。

978-7-111-47915-4-Part01-267.jpg

图7-6 默认状态

978-7-111-47915-4-Part01-268.jpg

图7-7 赋值后

*VFILL命令或GUI界面中的Utility Menu>Parameters>Array Parameters>Fill预定义函数也可以赋值。

从一个文件读入数据也可以给参数赋值。

其中,读取数据的命令中,*VREAD用于数值数组、*TREAD用于数据表。在GUI界面中为Utility Menu>Parameters>Read from File。

从数据库也可以获取参数值。正如*GET从数据库获取标量数据,可以用*VGET获取数组信息,或由GUI界面中的Utility Menu>Parameters>Get Array Data命令进行操作。先定义数组,然后获取数据。

例如:

978-7-111-47915-4-Part01-269.jpg

(4)数组的操作

一旦定义了数组参数,就可以对它们进行各种操作,如图7-8所示。GUI:Utility Menu>Parameters>Array Operations;

978-7-111-47915-4-Part01-270.jpg

图7-8 数组的运算

或使用*VFUN,*VOPER,*VSCFUN,*VWRITE等命令。

1)对向量的运算。对向量的运算就是按某种顺序对数组元素进行一系列的诸如加、减、求正弦、求余弦、点积、叉乘等运算。

采用向量操作命令-*VOPER,*VFUN,*VSCFUN,*VITRP,*VFILL,*VREAD和*VGET。

注意:在这些命令中,只有*VREAD和*VWRITE对字符数组参数有效,其余的只能用于ARRAY类型或TABLE类型(由*DIM定义)的数组参数。

*VOPER

或选择Utility Menu>Parameters>Array Operations>Vector Operations命令。

对两个输入数组向量进行运算,输出一个数组向量。

例如:*voper,c(1),a(1),sub,b(1),等价于c(k)=a(k)-b(k)。

其他操作包括:加、减、乘、除;最小值、最大值、逻辑运算微分、积分;点积和叉积。

*VFUN

或选择Utility Menu>Parameters>Array Operations>Vector Functions命令。

对两个输入数组向量执行某函数,输出一个数组向量。

例如,*VFUN对单个数组操作,*vfun,b(1),sin,a(1)等价于b(j)=sin(a(j))。

其他操作包括:自然对数、常用对数、指数;平方根、排序、复制;局部坐标系与整体坐标系的相互转换关系,路径的切线和法线矢量等。

*VSCFUN

或选择Utility Menu>Parameters>Array Operations>Vector-Scalar Func命令。

确定单个输入数组矢量属性,并将结果存放到指定的标量参数中。

例如,*vscfun,maxval,max,a(1),等价于一个标量maxval=max(a(i))。

其他操作包括:求数组的所有元素的和;诸如标准偏差,中值,平均数等统计量;最小值/最大值,最小值/最大值的位置;第一个和最后一个非零记录的位置。

*VWRITE

把数据按格式写进文件,例如:

978-7-111-47915-4-Part01-271.jpg

将会创建一个名为wing.dat的文件,包含指定格式的nnum和tval数组。

*VITRP

或选择Utility Menu>Parameters>Array Operations>Vector Interpolate命令。

通过在指定的表下标位置插入一个数组参数(TABLE类型)来生成一个数组参数(ARRAY类型)。

2)对矩阵的运算。矩阵运算是一种数字数组参数之问的数学运算,例如矩阵乘法、计算转置矩阵、求解联立方程组等。

与向量的运算相类似,对矩阵的运算命令包括:

*MOPER

或选择Utility Menu>Parameters>Array Operations>Matrix Operations命令。

对两个输入数组参数矩阵进行矩阵运算,输出一个数组参数矩阵。

矩阵运算包括:矩阵相乘,求解联立方程组,对矩阵中的某个指定向量排序(按上升顺序)。

计算两个向量之间的协方差;计算两个向量之间的相关性。

*MFUN

或选择Utility Menu>Parameters>Array Operations>Matrix Functions命令。

复制或转置一个数组参数矩阵(接收一个输入矩阵,生成一个输出矩阵)。

*MFOURI

或选择Utility Menu>Parameters>Array Operations>Matrix Fourier命令。

计算傅里叶级数的系数或求傅里叶级数。

在ANSYS命令参考手册(ANSYS Commands Reference)可以得到关于这些命令的详尽介绍,读者初学APDL时对为数众多的命令难以记忆,应充分利用ANSYS的帮助文件(Product Help)。

所有向量和矩阵运算命令都受到下面这些命令的影响:*VCUM,*VABS,*VFACT,*VLEN,*VCOL,和*VMASK.(在所有命令中,只有*VLEN和*VMASK,与*VREAD或*VWRITE连用时,对字符数组参数有效)。可以通过*VSTAT命令来查看这些命令的状态。

*VSTAT命令之外,下面将要介绍的其他所有的命令都可以通过菜单Utility Menu>Parameters>Array Operations>Operation Settings得到。

3)下面列出有效的数组规定命令。

*VCUM

指定结果累积或不累积(覆盖已有结果)。ParR为向量运算的结果,要么被加入一个已存在的同名参数中,要么被覆盖。默认为不累积结果,即ParR覆盖掉已存在的同名参数。

*VABS

使向量运算中的某个或所有参数取绝对值。默认为实数值。

*VFACT

对向量运算中的某个或所有参数乘以一个比例因子。比例因子默认为1.0。

*VCOL

指定矩阵运算中列的数目。默认为从指定起始处填满结果数组的所有位置。

*VSTAT

列出数组参数的当前状态。

*VLEN

或选择Utility Menu>Parameters>Array Operations>Operation Settings命令。

指定数组参数运算中被用到的行的数目。

*VMASK

或选择Utility Menu>Parameters>Array Operations>Operation Settings命令。

指定某个数组作为屏蔽向量。

这些规定命令将对向量和矩阵的运算命令产生影响。其影响关系如表7-2所示。

表7-2 规定命令对运算的影响关系

978-7-111-47915-4-Part01-272.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈