1、1,APDL与命令流的使用,2,ANSYS命令流和APDL语言十分方便,其语言规则类似但易于FORTRAN。,什么是APDL语言? APDL是 ANSYS Parametric Design Language(ANSYS参数设计语言)的缩写, 一种脚本语言,可使模型参数化并使一般任务自动化。 用 APDL语言, 可以: 用参数而不是数字输入模型尺寸, 材料参数等。 从 ANSYS 数据库提取信息, 如结点坐标或最大应力值。,一、参数化建模,利用ANSYS命令流可以方便地实现模型的参数化。 可以直接点菜单完成第一个模型,然后将完成该模型的日志文件整理出来,经过人为的改造,即可形成一个参数化的输入
2、命令文件。关键在于如何整理命令流。,将命令流整理并写出来的路径是:FILEWrite DB Log file,然后给定写出的命令流文件的名称,在下面的选项注意选择Write essential commands only,则ANSYS的“转动模型”等冗余命令都将被滤掉,只剩下有用的命令,即*.mac。 注意,这还不是真正彻底的命令流,因为还有很多模型拾取的操作,因此将这部分操作改造掉才能得到真正的命令流*.inp。,二、参数的定义与使用,ANSYS参数有标量参数和数组两种。数组类型有数值型数组(ARRAY)、表(TABLE)、字符数组。 参数的用途: 赋值; 批量数据处理(运算/读写)。 参数
3、的特点: 不必声明参数类型; 使用未声明参数赋“极小值”(约为2E-100); 无论整型还是实型都按双精度存储; 数组参数必须先定义后使用。参数名不分大小写, 即, “RAD” 和 “Rad” 是相同的。所有参数 内部都是以大写形式存储的。,2.1标量参数,标量参数的使用应注意: 必须以字母开头,只能包含字母、数字和下划线; 不能以下划线开头,以下划线开头/结尾的参数为系统隐含参数(*.status,命令无效); 不能超过32个字符; 不能使用宏专用局部参数名:ARG1ARG9和AR10AR99; 不能使用由*ABBR命令定义的缩写; 不能使用ANSYS标识字(Label)。 DOF:TEMP
4、,UX,PRES等。 常用:ALL,PICK,STAT等。 用户定义:如用ETABLE命令定义的。 数组类型:如CHAR、ARRAY、TABLE等。,标量参数的定义方法: 1. 利用*SET命令定义。 2. 赋值号“”定义。 3. GUI菜单定义(如图2):Utility MenuParametersScalar Parameters 4. 启动时驱动命令定义。 5. 提取ANSYS数据库数据赋值定义。,例如:*SET,ABC,-24 *SET,QR,2.07E11 *SET,XORY,ABC Inrad2.5 Outrad8.2 ThickOutradInrad 启动时定义参数的两种途径:
5、在ANSYS启动命令之后按“Name Value”输入定义。 在ANSYS启动界面中进行定义。 举例: Ansys -parm1 89.3 -parm2 -0.1 Ansys -m1024-radius1 2.43-thick1 0.15-cname /filename/,提取ANSYS数据库数据赋值定义的两种途径: *GET提取命令。 内嵌提取函数。 *GET提取命令: 从特定对象(点、单元或面等)中提取数据库数据,并赋予某个用户命令的Scalar参数,有两种途径: 菜单路径:Utility MenuParametersGet Scalar Data。 *GET命令的使用格式。 *GET,P
6、ar,Entity,ENTNUM,Item1,IT1NUM,Item2,IT2NUM 其中:Par将被赋值的参数名; Entity将提取对象关键字(NODE,ELEM,KP); ENTNUM提取对象的号码(若为0指全部实体); Item1,IT1NUM是指对象的项目名和项目号; Item2,IT2NUM同上。,菜单路径: Utility MenuParametersGet Scalar Data,内嵌提取直接返回一个数值并在当前使用,内嵌提取函数主要提取以下信息: 1)实体选择状态; 2)选择下一个实体; 3)面积; 4)单元的表面; 5)自由度结果; 6)坐标最近节点或关键点; 7)关键点/
7、节点间距离或角度; 8)节点、单元、关键点等的特征坐标值; 9)节点见、关键点间以及节点到单元的距离; 10)离关键点/节点/节点最近的关键点/节点/单元; 11)节点关联单元/单元的逻辑节点号。,2.2数组参数,1.数值型数组 默认的数组类型为数值型数组。 行列面下标从1开始的连续证书。 数组元素为整型或实型数。 2.字符型数组 字符数组类型。 元素不超过8个字符。 行列面下标为从1开始的连续整数。 3.表 一种特殊的数字数组类型。 可以实现定义元素间的线性插值。 每一行、列和面定义数组下标,下标为实数。,数组的定义,数组的赋值,表型数组可用于施加边界条件等,也可用于存储公式编辑器编辑的公式
8、。 字符型数组用于存储字符串。数组和表的值可以直接让程序画出来。 具体方法如下:GUI:Utility MenuPlotArray Parameters 命令:*VPLOT,三、宏语言及程序控制,所谓APDL宏就是一个ANSYS命令序列,自动完成一定任务的文件。ANSYS自身有很多宏文件,包括前处理、后处理的等。用户可以编制自己常用的宏文件。宏调用的对象包括:ANSYS命令,GUI函数或将值传递给宏函数。 典型的宏文件示例:/prep7 /view,-1,-2,-3 block,4,3,2 sphere,1 vsbv,1,2 finish,ANSYS宏文件的扩展名可以规定为.mac,则它可以自
9、动执行,等同于ANSYS命令。 宏文件名不能超过32个字符,不能以数字开头,扩展名不能超过8个字符,不能使用扩展名.MAC(用于ANSYS内部宏),文件名或文件扩展名中不能包含空格,不能包含当前文件系统禁止使用的字符。,3.1宏的创建,1)ANSYS宏的搜索路径(即宏放到这些目录即可自动执行): ANSYS docu子目录:/ansys9X/v91/ANSYS/apdl; ANSYS-MACROLIB环境变量指定路径; /PSEARCH指定路径; 用户注册目录(home directory); 当前目录。,2)ANSYS宏文件的定义方法: 方法1参数的值不确定,参数名被写入文件中。 *CREA
10、TE,Fname,Ext,Dir *END 方法2 *CFOPEN,Fname,Ext,Dir,Loc *CFWRITE,Command 方法3通过菜单创建:Utility MenuMacroCreate Macro 方法4通过文本编辑器进行编辑。这是最常用的方法,3)宏库的创建 宏库文件包含一批宏,用*CREATE命令或文本编辑器创建。宏库文件没有明确文件扩展名。 宏库的典型格式如下: MACRONAME1 /EOF MACRONAME2 /EOF MACRONAME2 /EOF,下面是包括两个简单宏的宏库文件: mybloc /prep7 /view,-1,-2,-3 block,4,3,
11、2 finish /EOF mysphere /prep7 /view,-1,-2,-3 sphere,1 finish /EOF,3.2宏的执行,宏执行的方法: 1)使用*USE命令。在宏搜索路径中,从命令提示窗口输入*usemymarco; 2)在菜单中Utility MenuMarcoExecute Marco; 3)执行宏库中的宏,使用*ULIB命令,例如*ulib,mymarco,mlib,/myaccount/marcos/。,3.3循环与分支结构,3.3.1DO循环 ANSYS的DO循环的基本结构为: *DO,I,1,N *ENDDO DO循环中包含什么内容没有限制,甚至可以是整
12、个分析过程,并且DO循环可以多层嵌套。,3.3.2宏内子程序的调用 APDL允许嵌套达20级的宏,可以给宏传递19个变量。下面例子中宏库文件MYSTART宏,调用MYSPHERE宏创建球: mystart /prep7 /view,-1,-2,-3 mysphere,1.2 finish /eof mysphere sphere,arg1 /eof,3.3.3无条件分支GOTO 最简单的分支命令*GO,将程序跳转到一个指定的标记处而不执行其间的任何命令,程序从指定标记处继续执行。*GO,:BRANCH1 !这些命令将被跳过 :BRANCH1 ,3.3.4条件分支*IF命令 APDL允许基于条件
13、执行一系列交替的程序块,条件是通过比较两个数值(或代表数值的参数)。 简单的IFTHENELSE结构,可以将条件分支、循环等结合在一起来控制程序的执行。 例如在一个壳模型中,厚度 thk 定义为参数, 且只有三个壳厚可用 (即, 1/8”, 3/16”, 1/4”), 则可有如下 if-then-else 结构: et,1,63 ! 壳单元类型 *if,thk,lt,2.5/16,thenthk=1/8 ! 用 1/8 if thk 3.5/16 *elsethk=3/16 ! 否则用 3/16 *endifr,1,thk ! 定义壳厚为实常数,3.3.5隐式DO循环 隐式DO循环比DO循环更
14、快,因为它在内存中执行。 典型格式为x:y:z。z默认为1; 例如n,1:6,2:12:2将会执行下列步骤: n,1,2 n,2,4 n,3,6 n,6,12,四、定制简单对话框,可以通过指定变量对话框,提示信息,调用对话框等来直接通过界面交互操作,也可以增加程序的通用性和灵活性。,4.1单变量提示对话框,通过提示用户输入变量数值来确定模型的参数,也明确模型中需要输入的两,而且变量都可以有自己的默认值。 格式:*ASK,Par,Query,DVAL 功能:提示用户输入一个参数值对话框 值域:Par 参数名 Query 提示文字(最多32个字符) DAVAL 参数的默认值,4.2多变量提示对话输
15、入框,多变量提示对话输入框一次可以输入多个参数。 语法:MULTIPRO,start,变量数 *CSET,起始位置,终止位置,参数名,提示字符串,默认值 MUKLTIPRO,end 说明:可以输入110个*CSET命令。 -BUTTON返回状态值; -BUTTON0表示按下了OK按钮; -BUTTON1表示按下了Cancel按钮;,下面例子给出一个输入对话框。multipro,start,3 *cset,1,3,beamW,Enter the overall beam width,12.5*cset,4,6,beamH,Enter the beam height,23.345 *cset,7,9,beamL,Enter the beam length,50.0 multipro,end,