ANSYS命令流学习指南-APDL内容简解
APDL最强有力的特征之一是创建宏的能力,使用宏能减少工作量并提高分析效率,宏带给开发者高效和惊喜,使你的成就感升华到最大限度。
那么什么是惊喜,什么是宏?
简单来说宏是把多条命令组合后自定义成一个新命令,以后只要键入这条命令就实现多条命令的效果。类似其它语言中的函数。
例如,多次用到如下操作:生成一个尺寸为4,3,2的长方形块和一个半径为1的球体。然后,从块的一个角处减去球体。其基本命令流为:
/prep7
/view,,-1,-2,-3 block,,4,,3,,2 sphere,1 vsbv,1,2 finish
把这段命令流保存在文本文档中,并命名为mymacro.mac,就可以通过 *use,mymacro或 mymacro 来执行。
宏定义
常用宏功能:
? 它可以如同ANSYS命令一样具有变量 ? 分支和循环用来控制一系列命令
? 交互式特征如图形拾取,提示,以及对话框
宏可以嵌套—一个宏引用第二个宏,第二个宏引用第三个宏,等等—一直可嵌套20级,其中包括由ANSYS/INPUT命令引起的任何文件转换。每一次嵌套的宏执行完毕后,ANSYS
DareDoc
13
ANSYS命令流学习指南-APDL内容简解
程序仍置于前一个宏的控制之下
命名一个宏时需要注意以下几点:
? 宏不能与已经存在的ANSYS命令同名 ? 文件名不能超过32个字符; ? 文件名不能以数字开头;
? 文件扩展名不能超过8个字符(如果想和执行ANSYS命令一样执行宏,该宏的扩展名
应为.mac);
? 文件名或文件扩展名中不能包含空格;
? 文件名或文件扩展名不能包含任何被当前文件系统禁止使用的字符,为了更好的移置性,
还不能包含任何被UNIX或Windows文件系统禁止使用的字符。
在ANSYS中可以通过三种途径来生成宏:
在输入窗口执行*CREATE命令。参数的值不确定,参数名被写入文件中。
使用*CFOPEN,*CFWRITE,和*CFCLOS命令。参数名被其当前值取代,值被写入 文件中。
选择UtilityMenu>Macro>CreateMacro菜单项。该方法打开一个可作为简单的多行 编辑器的对话框来生成宏。参数的值不确定,参数名被写入文件中。
图GUI方式创建宏
宏的搜索路径(宏在何放)
DareDoc
14
ANSYS命令流学习指南-APDL内容简解
保存宏的位置可能影响到宏能否正确执行,一般地,ANSYS按如下缺省路径搜索用户生成的宏(.mac扩展名):
? 1.ANSYS的/ansys_inc/v145/ansys/apdl目录; ? 在ANSYS_MACROLIB环境变量中定义的路径; ? 在WINDOWS系统中的注册路径; ? 当前工作目录。
如果在上级路径和下级路径同时寻找到同样的文件名,则采用上级路径 带参数的宏
再以前面的宏为例,如果长方体和球的尺寸每次都要改变,需要不断的修改定义的宏吗?
答案是可以使用参数减少工作量。 通过特殊的字符名,你可以创建多达19个参数的宏,这个特殊的字符名指通过ARG1、ARG2~ARG19来接收传递的具体参数。
例如,通过ARG1,ARG2,ARG3,ARG44个变量传递长方体和球的具体尺寸,宏编写如下:
/prep7
/view,,-1,-2,-3
block,,arg1,,arg2,,arg3 sphere,arg4 vsbv,1,2 finish
按如下方式运行该宏:
mymacro,4,3,2.2,1
参数如同标准的ANSYS命令中的参数,可以为: ? 数字
? 字符(被包括在单引号中,不超过8个字符) ? 参数(标量或数组) ? 参数表达式
参数的意义由所定义的宏来决定 宏库(宏的家园)
宏库顾名思义就是存放宏的库,可以把多个宏集中放在一个文件中,减少宏文件数量,方便管理。其类似其它语言的函数库文件。
宏库文件没有明确的文件扩展名,若有,不能超过8个字符。我以前采用了.AML这样一个后缀名。其文件名的命名规则和宏
文件一样。宏库文件的结构为:
MACRONAME1!宏名1 ANSYS语句!具体命令行 /EOF!宏1结束退出宏 MACRONAME2!宏名2 ANSYS语句!具体命令行 /EOF!宏2结束退出宏 MACRONAME3!宏名3
DareDoc
15
ANSYS命令流学习指南-APDL内容简解
ANSYS语句!具体命令行 /EOF!宏3结束退出宏
注意:宏库中有效代码中不能存在空行,不能有整行的注释语句。每个宏以/EOF结束。可以在每行语句后或宏库最末写注释。
使用宏库及其中的宏
当宏命令包含在宏库文件时,在执行宏命令前必须先打开宏库文件。使用―*ulib,mymacros,mlib,/myaccount/macros/‖来打开宏库文件,mymacros为宏库文件名,mlib为扩展名,/myaccount/macros/为宏库文件所在的路径。
在打开宏库文件后,只能用*use命令来执行宏库文件包含的宏命令,不能再用*use命令来执行单独位于宏文件中的宏命令。可以用不带任何参数的*ulib命令来关闭宏库文件后,再用*use命令来执行单独位于宏文件中的宏命令。
控制语句
APDL的流程控制是一个难点,也是精髓所在。APDL提供了大量的控制程序的命令,通过这些命令对于判断、重复等很有用处,包括:1、调用子程序(宏);2、宏内的无条件转移3、宏内的条件转移;4、重复命令、增加命令或者若干命令参量;5、命令的循环。
最主要的是分支语句和循环语句。 条件转移:IF-THEN-ELSE结构 无条件转移:*GO 重复命令:*REPEAT 循环语句:DO-LOOP
需要注意的是以上命令都是带有*号的。
条件转移命令
IF语句是实现条件判断,根据结果运行一个命令、命令块或另外的命令。
*GET,FREQ1,MODE,1,FREQ
*IF,ABS(FREQ1-1),LT,0.01,THEN!如果频率误差小于1%,则退出 *EXIT *ENDIF
*IF命令的语法为:
*IF,VAL1,Oper,VAL2,Base 其中,
是比较的第一个数值(或数字参数); 是比较运算符;
是比较的第二个数值(或数字参数);
若比较的值为真,则执行Base指定的操作。
Oper项,比较运算可能是以下八种(x,y为需要比较的参数): VAL1,EQ,VAL2!等于(VAL1=VAL2); VAL1,NE,VAL2!不等于(VAL1#VAL2). VAL1,LT,VAL2!小于(VAL1
DareDoc
16
ANSYS命令流学习指南-APDL内容简解
VAL1,LE,VAL2LE!小于或等于(VAL1vVAL2). VAL1,GE,VAL2!大于或等于(forVAL1>=VAL2). VAL1,ABLT,VAL2!绝对值小于 VAL1,ABGT,VAL2!绝对值大于
BASE的命令为
THEN *STOP *EXIT *CYCLE
通过给Base变量赋值THEN,*IF命令就变成了if-then-else结构(和FORTRAN中的该 结构类似)的开始。该结构包括: 一个*IF命令,接下来是
一个或多个*ELSEIF命令选项 一个*ELSE命令选项
一个必需的*ENDIF命令,标识字该结构的结束。
在最简单的形式中,*IF命令判断比较的值,若为真,则转向Base变量所指定的标识字处。结合一些*IF命令,将能得到和其它编程语言中CASE语句相同的功能。注意,不要转向某个位于if-then-else结构或do循环中的带标识字的行。
通过给Base变量赋值STOP,可以离开ANSYS。
if-then-else结构仅仅判断条件并执行接下来的程序体或跳到*ENDIF命令的下一条语句处(用\注释表示):
注意-可以在if-then-else结构中执行/CLEAR命令。/CLEAR命令不会清除*IF堆栈,*IF层的号码仍然保留。必须用*ENDIF来结束分支。同时,要记住/CLEAR命令会删除所有的参数,包括在分支命令中使用的任何参数。为避免由于删除参数而引发问题,可以在/CLEAR命令前运行/PARSAV命令,然后在/CLEAR命令后立刻运行/PARRES命令。 无条件转移
最简单的转向命令-*GO-指示程序转到某个指定标识字行处,不执行中间的任何命令。 程序继续从该指定标识字行处开始执行。例如:
*GO,:BRANCH1
---!这个程序体被跳过(不执行)
---
:BRANCH1 --- ---
由*GO命令指定的标识字必须以冒号(:)开头,并不能超过8个字符(包括冒号)。该标 识字可位于同一文件中的任何地方。
注意-不鼓励使用*GO命令。最好使用其它的分支命令来控制程序流。
循环语句
*REPEAT命令是最简单的循环命令,通过它可以直接按指定的次数执行上一条命令, 并按常数增加命令所带参数。例如:
E,1,2
DareDoc
17
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ANSYS命令流学习指南(4)在线全文阅读。
相关推荐: