ANSYS宏命令

4.1 什么是APDL宏命令?

用 户可以将一些经常使用的ANSYS命令记录在一个宏文件当中(有时也称为命令流文件)。通过宏可以更加有效地定制用户自己的ANSYS命令。例如,再磁场 分析中,由于计算旋涡电流而产生的功率消耗需要一系列的ANSYS后处理命令,通过将这些命令记录在一个宏文件里,用户就能得到一个新的,单一的命令,当 需要计算时只要执行这个命令即可。除了执行一个系列的命令以外,宏也能够调用GUI函数,将赋值传给变量。
宏能够嵌套使用,即一个宏可以调用第二个宏,第二个宏可以调用第三个宏,以此类推,最多可嵌套二十个层,包括ANSYS命令“/INPUT”引起的任何文件转换。在每个嵌套的宏执行完后,ANSYS软件将会返回到其上一层的位置。
下面是一个非常简单的宏文件例字,其内容是:先生成一个4*3*2的块,然后再生成一个半径为一的球体,随后从块的一角减去球体。其命令流文件为:
/PREP7
/
VIEW,,-1,-2,-3也可以用单引号引起来
BLOCK,,4,,3,,2
SPHERE,1
VSVB,1,2
FINISH
如果这个宏名叫做“Mymacro.mac”,就可以使用下面的命令来执行这个宏文件。
*USE,mymacro
或者 mymacro
尽管这并不是一个实际的宏,但它说明了一个原理。下面将介绍使用各种不同的方法来生成、储存、执行宏,同时也会讨论在使用APDL作为一种语言生成宏时的基本知识。

4.2创建宏
可 以使用ANSYS本身或文本编辑软件,如记事本等,来创建一个宏。如果宏相对简单而且很短,则用ANSYS软件是非常方便的。如果生成的宏较长,且很复 杂,或者是要编辑已经存在的宏,那么最好采用文本编辑软件。同时使用文本编辑软件可以使用类似的宏或ANSYS
的LOG文件作为生成自己宏文件的参考。
对于一个复杂且长的宏来说,应该考虑是采用类似的宏作为参考的蓝本还是先用ANSYS的GUI模式交互执行任务,然后再将其LOG文件作为生成宏文件的基础。上述两种方法都可以减少生成一个合适宏文件的时间和精力。

4.2.1宏文件的命名规则
宏文件就是将一系列的ANSYS命令贮存在一个文件里。因此宏的名称不应该与ANSYS系统内已经存在的命令名相同。否则ANSYS会执行其内部命令而不是宏。下面是对宏命名的限制规则:
•宏名不能超过32个字符。
•宏名不能用数字作为开头。
•文件的扩展名不能超过8个字符,如果在执行宏,那么按照ANSYS命令,其扩展名应该是“.mac”。
•文件名和扩展名不能包括空格。文件名和扩展名不能包含系统所禁止的任何字符。
为 了保证没有使用与ANSYS命令相同的文件名,在生成宏之前,事先在ANSYS软件里运行
一下这个文件名。类似的,应该用这个名称在所有的处理器中都试一 下,直到没有相同的ANSYS命令时,才可以使用这个名称作为宏名。还有一种简便的方法是将该名称放在在线帮助文档中,进行搜索,可以查出是否与存在的 ANSYS命令名相同。但这种方法不能检查出没有帮助文档的ANSYS命令。
使用扩展名“.mac”,可以使ANSYS在执行该宏时,当作一个内部命令一样使用。但最好避免使用这个扩展名,因为它被ANSYS内部宏所使用。

4.2.2宏的搜索路径
在缺省方式下,ANSYS通过下列路径搜索用户自定义的宏文件(其扩展名为.mac)。
目录:/AnsysInc/v70/ANSYS/apdl。
在ANSYS_MACROLIB环境下指定的路径或者注册目录。
由$HOME环境变量所指定的目录。
工作目录。
可以将自己个人使用的宏放在用户主目录下。对于经常要使用的宏应该放在/Ansys Inc/v70/ANSYS/apdl或者某些经常进入的目录下,这样任何人通过ANSYS_MACROLIB环境
变量都可以到。
对于Windows用户,当前目录常常就是一个由管理员设置的缺省目录,对于这个位置,用户应该请教管理员,也可以使用环境变量生成一个局部的“主目录”。

4.2.3用ANSYS生成宏
在ANSYS系统内,可以用四种方法来定制一个宏:
•在命令输入中执行“*CREAT”命令,这时参数值将不重新求解,参数名被写入文件里。
•使用命令“*CFOPEN”、“CFWRITE”和“CFCLOS”,参数将重新求解,并得到他们的当前值,这些值将被写入到宏文件中。
•在命令输入行中执行“/TEE”命令,这个命令在执行输入命令的同时,也把这些命令列出一个清单,并写入到一个文件里。命令在当前ANSYS的对话框中执行时,参数名会重新求解并得到它们的当前值。然而在生成的文件中,参数值没有求解,仅仅写入了参数名。
•选择GUI模式:Utility Menu>Marco>Creat Macro,这种方法将打开一个对话框,对生成宏来说,可作为一个简单多行编辑器,参数值将不会被求解,参数名将被写入到文件中。

4.2.3.1使用命令“*CREAT”
执行命令“*CREAT”后,将会使在命令输入行中执行的ANSYS命令改向进入到由该命令指定的文件中,在执行命令“*END”之前, 所有输入的命令都将会改向。如果已经存在的文件名与用户指定的文件名相同,ANSYS会覆盖掉这个已经存在的文件。
假设要生成一个名叫“matprop.mac”的文件,这个文件能够自动定义材料的性能参数,为生成这个宏,在命令输入行中输入下列命令流即可。
*CREAT,matrop,mac,macros
MP,EX,1,2.07E11
MP,NUXY,1.27
MP,DENS,1.7835
MP,KXX,1.42
*END
命令“*CREAT”包含有文件名、扩展名和目录路径(大多数情况指定为“macros”)等变量。
当使用命令“*CREAT”时,在命令中使用的所有参数都将会写入到文件中,但并不会将值赋给参数。
但要注意,命令“*CEREAT”不能在DO-LOOP循环中使用。

4.2.3.2使用命令“*CFWRITE”
如果希望在生成一个宏的同时,参数能够被当前的值所取代,这时可以使用命令“*CFWRITE”。与命令“*CREAT”不相同的是,命令“*CFWRITE”并不能指定一个文件名,必须先由“CFOPEN”指定一个宏文件,然后只有那些在命令输入行中输入的且用“*CFWRITE”作为前缀的命令才能够写入到指定的文件名、扩展名和工作目录。
下列的一个例子就是将一个“BLOCK”命令写入到当时打开的宏文件里。
*CFWRITE,BLOCK,,a,,b,,c
对于“BLOCK”命令来说,由于这些参数被作为变量使用,这些参数的当前值也要被写入到文件中,因此,对于这个例子来说,将要写入到宏文件里的这一行也可写成:
*CFWRITE,BLOCK,,4,,2.5,,2
要关闭这个打开的宏文件,可使用命令“*CFCLOS”。

4.2.3.3使用“/TEE”
执 行“/TEE,NEW”或者“/TEE,APPEND”命令后,命令输入行中的命令会改向并进入到由命令指定的文件中,同时这些命令也会被执行。除非执行 了“/TEE,END”命令,否则输入的命令都将会被改向,并执行。如果在执行命令“/TEE,NEW”后,已存在的文件名与指定的宏文件相同, ANSYS系统将会覆盖它,因此建议使用命令“/TEE,APPEND”。
另外,在命“/TEE”中除了label变量外,还可以指定文件名、扩展名和目录的路径。
命令在ANSYS对话框中执行时,所有的参数名都将会重新求解,并得到它们的当前值。然而在生成的文件中,参数名被写入,当前对参数指定的值并不会取代。如果感到当前的参数值非常重要,用户可用命令“PARSAV”将这些参数保留在一个文件里。


4.2.3.4使用操作路径
GUI:Utility Menu>Macro>Creat Macro
当执行这一操作后,系统会弹出一个对话框,在这个对话框中,用户可以输入命令并生成一个宏文件。但不能利用这个特征去打开或编辑已经存在的宏文件,如果用户在“*CREAT”域内输入一个与已经存在的文件同名的宏名,则已经存在的文件将会被覆盖掉。
与命令“*CREAT”类似,参数并不去求解,而是全部写入到宏文件当中。但最后一行要写上“*END”命令。

4.2.3.5使用文本编辑器
可以使用你最喜爱文本编辑器来生成或编辑一个宏文件。任何ASCII文本编辑器均可。同时ANSYS宏要求每行都有一个终止符(即回车符),以表示输入命令结束。因此在某个平台上生成的宏文件可以在任何平台上工作。
使用这种方法生成的宏文件,其内容不要包含“*CREAT”和“*END”命令。

4.2.3.6使用宏库文件
为了方便起见,ANSYS系统也允许将一系列的宏放在一个文件里。这个文件就称之为宏库文件。可以采用文本编辑器或命令“*CREAT”来生成这个宏库文件,由于宏库文件的命令行数肯定要比单个宏命令要多,也许使用文本编辑器是一种最好的方式。
宏库文件没有确定的文件扩展名,其文件名的命名规则与宏文件类似,宏库文件有如下的结构:
MACRONAME1
……
/EOF
MACRONAME2
……
/EOF
MACRONAME3
……
/EOF
如下的宏库文件里包含着两个简单的宏:
mybloc
/PREP7
/VIEW,,-1,-2,-3
BLOCK,,4,,3,,2
FINISH
/
EOF
mysphere
/PREP7
/VIEW,,-1,-2,-3
SPHERE,1
FINISH
/EOF
从上述例子可以看出,在宏库文件里,每个宏都以宏名作为起始位置,再用“/EOF”命令作为结束的标志。
宏库文件能够放在系统的任何位置,尽管这样,最好还是将其放在宏搜索的路径里。与宏文件不同之处是,宏库文件的扩展名可以使用8个字符。

4.3执行宏文件和宏库文件
用户可以通过使用“/*USE”命令来执行任何宏文件,如果要执行一个放在宏搜索路径中叫“mymacro”的宏时,可以使用:
*use,mymacro
在这种情况下,宏没有变量。如果要执行一个保存在“/myaccount/macro”中且名称为“mymacro.macro”的宏时,执行语句为:
*use,/myaccount/macros/mymacro.macro
由于“*USE”命令能够自动进入路径并搜索到文件名,因此没有必要指定分离的变量。
如果一个宏有一个“.mac”的扩展名,并且保存在搜索路径里。这时就可以象执行ANSYS内部命令一样在命令输入行中执行这个宏。如果要调用mymacro.mac这个宏时,只要在命令输入行中简单的输入:“mymacro”,并回车即可。
当然,也可以利用下拉菜单执行这个以“.mac”作为扩展名的宏。其中执行路径为:
GUI:UTILITY Menu>Macro>Execute Macro
如果一个宏有许多变量,那么可以直接在命令行中输入。如:
mymacro,4,3,2,1.5
或者 *use,mymacro.mac,4,3,2,1.5
而用下拉菜单即操作路径“UTILITY Menu>Macro>Execute Macro”时,会弹出一个对话框,其变量则在对话框中输入即可。
执行一个包含在宏库文件里的宏,其过程与执行宏文件是相似的。首先必须用命令“*ULIB”来指定一个文件,如指定宏是在“mymacros.mlib”库文件里,且保存在“/myaccount/macros”目录里,这时要执行下列操作:
*ulib,mymacros,mlib,/myaccount/macros/
在选择了一个宏文件后,就可以使用命令“*USE”来执行包含在这个宏库文件中的任何宏。就像包含在单个文件里一样,在使用“/*USE”时可以指定变量作为参数。
但要注意,在执行“*ULIB”命令后不能使用“*USE”命令去执行没有包含在指定宏库文件中的宏名。

4.4局部变量
APDL提供了两组特定命名的标量参数,他们被利用来作为局部变量使用。即:
•一组标量参数,为命令行中的变量传递给宏提供了一条通道。
•一组能够在宏里面使用的标量参数,它提供了能够定义值的一组局部变量,并且只在定义的那个宏里有效。



.4.1将变量传递给宏
可以使用19个标量参数将执行命令行中宏的变量传递给宏,这些标量参数能够在多个宏中重复使用,也就是说,它们的值对于宏来说是局部的。这些参数名是:ARG1-AR19,并且它们能够在下列范围内使用:
•数值。
•字符型字符串(用单引号括起来且不超过8个字符)。
•数值或字符参数。
•参数表达式。
但要注意,当使用命令“*USE”时只能将ARG1-AR19的参数值作为变量传递给宏。但如果生成的宏可以作为一个ANSYS命令使用,即它有一个扩展名“.mac”时,这时可以将ARG1-AR19的参数值传递给宏。
如下所示的宏需要4个变量:ARG1、ARG2、ARG3和ARG4。
/PREP7
/VIEW,,-1,-2,-3
BLOCK,,ARG1,,ARG2,,ARG3
SPHERE,ARG4
VSBV,1,2
FINISH
为了执行这个宏,用户应该输入:
mymacro,4,3,2.2,1

4.4.2宏里面的局部变量
每 个宏最多可以使用79个标量作为局部变量(AR20-AR99),这些参数对宏来说是完全局部的,多重宏也都有他们自己唯一的赋值给这些参数。这些参数并 不传递给由宏调用的嵌套宏。它们被传递给由“/INPUT”命令输入的任何文件,或者是在宏里面进行的“DO-LOOP”。

4.4.3宏外面的局部变量
ANSYS也有一组类似的ARG1-AR99的标量参数,它们对于输入文件来说是局部的,它们并不传递给由输入文件所调用的任何宏。因此一旦宏执行完成,系统又返回到输入文件时,AR
G1-ARG99的值又恢复到当前输入文件里所定义的值。

4.4.4在元件和部件中使用宏
为了使大的实体模型便于管理,可以根据不同类型的实体,如节点、单元关键点、线、面和体等,将一个模型分成离散的元件,每个元件可以容纳一种类型的实体,这样做的目的是可以根据分离的实体;来完成施加载荷或者生成图象等任务。
也可以生成部件,它们是成组的,是由两个或者多个元件甚至是多个部件组成的。一个部件最多可以嵌套5层,如可以建立一个由stator、permmag、rotor和windings等元件生成的名叫“motor”的部件。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。