ansys宏

ScienceSoft 科研方法评论阅读模式

.ANSYS中,宏是包含一系列ansys命令并且后缀为.MAC.mac的命令文件。宏文件往往记录一系列频繁使用的ansys命令流,实现某种有限元分析或其他算法功能(个人感觉宏如同PROE的零件库,在ansys中可以把经常用的模型或分析用宏保存后,根据现实情况调用,调用时只需改变参数就可以!)。宏文件在ansys中可以当作定义的ansys命令进行使用,可以带有宏输入参数,也可以有内部变量,同时在宏内部可以直接引用总体变量。除了执行一系列的ansys命令之外,宏还可以调用GUI函数或把值传递给参数。

宏能够套嵌使用,即一个宏可以调用第二个宏,第二个宏可以调用第三个宏,最多可以套嵌20层,在每个套嵌的宏执行完成后,ansys软件将会返回到其上一层的位置!

.ANSYS宏的搜索路径

当宏文件储存成后缀为.mac扩展名的文件时,ansys将按下列顺序在缺省的路径中搜索用户创建的宏文件:

1.目录:/ansys_inc/v70/ansys/apdl

2.ANSYS_MACROLIB环境变量指定的路径或注册路径(主目录)

3./PSEARCH命令及其等价菜单路径Utility menu——macro——macro seach path

指定的宏文件存储路径

4./$HOME环境变量指定的路径

5.当前工作路径(在 ansys lauch 中设置的路径)

三.ANSYS宏的创建

1.可以使用ANSYS本身或文本编辑软件(非GUI法创建宏),如记事本,pspad来创建一个宏。如果宏很短,用ANSYS软件很方便,如果宏较长,或很复杂,那么可以采用文本编辑软件(这里推荐PSpad),同时使用文本编辑软件可以使用类似的宏或ANSYSLOG文件作为生成自己宏文件的参考。

对于一个复杂的宏来说,应该考虑是采用类似的宏作为参考的蓝本,还是先用ANSYSGUI模式交互式执行任务,然后在将其LOG文件作为生成宏的基础。这样可以减少生成宏的时间和精力!

2.宏的生成

宏的创建方法很多,通常包含以下四种:

2.1 使用*CREAT创建宏文件

格式:*CREATE,FNAME,EXT

*END

FNAME——文件名和路径,若不指定路径,将缺省为当前的工作目录

EXT——文件的扩展名,用.mac

END——宏结束语

注意:如果FNAME以存在,则本次的宏将覆盖原有的同名同路径文件

2.2使用*CFWRITE创建宏文件

格式:*CFOPEN,FNAME,EXT,_,LOC

*CFWRITE,

*CFCLOS

FNAME——文件名和路径,不指定路径将缺省为当前的工作目录

EXT——文件扩展名(mac

LOC——,表示覆盖已存在的同名文件

1,表示向同名文件中追加

注意:只有在*CFOPEN*CFCLOLSE 之间并以*CFWRITE开头的命令才有效!与命令*CFCRETE不同,*CFWRITE 并不能指定一个文件名,必须要用*CFOPEN指定一个宏文件,再用*CFWRITE进行 编辑 (修改或创建)用*CFCLOSE结束编辑!

2.3使用/TEE创建宏文件

利用/TEE命令可以将输入窗口中输入的ANSYS命令重定向输入到指定的文件中,同时执行这些命令,直到执行/TEEEND命令时为止。

格式:/TEE,LABEL,FNAME,EXT

LABLE——1,new:表示新创建一个命令记录文件,如果这个文件存在则覆盖它

2,append:表示打开一个命令记录文件,向其中追加命令行

3,end:表示结束newappend操作,关闭命令记录文件

FNAME,EXT同上

2.4使用utility menu——macro——creat macro 创建宏文件

点击后,可出现如下的一个对话框。

2.5使用文本编辑器进行编辑(内容如同一般的创建命令),把文件保存为.mac格式并放入ansys的搜索目录中,这里建议用PSpad编辑,很方便.

四.宏的运行

其实在前面宏的创建中已经多次运行了宏,具体方法如下:

1.对于后缀为.mac的宏文件并且储存在搜索路径中,可以直接输入到ansys的命令窗口,如同内部命令一样

2.使用*USE来执行任何宏文件

如果一个名为abc.mac的宏文件在搜索路径中可以这样执行:

*USE,abc

如果不在搜索路径中,可这样执行

*USE,路径/abc

3. 使用utility menu——excecute macro 来运行扩展名为mac的宏文件

五.宏的变量

这个问题应该是本教程的一个难点,但是只要思路清晰,也就很简单了!这里我以一个问题开头:

如此宏:

/TEE,NEW,MATP,MAC

A=10

B=5

C=5

/TEE,END

/TEE,APPEND,MATP,MAC

/prep7

block,,A,,B,,C

/TEE,END

A B C 是参数,在宏内定义了分别为10 5 5 ,如果在执行宏前,在ansys中也定义相同的变量名称A B C并且赋值为 1 0.5 0.5 ,那么执行的宏是采用的哪组A B C 呢?

在宏文件内部,APDL在一般情况下定义变量和数组都是全局变量,定义之后直至执行删除操作或退出ANSYS程序为止一直存在与ANSYS内存中,任何菜单操作,命令流文件或者宏文件中都可以使用他们。(问题答案揭晓,A B C 依然为10 5 5),但是APDL还提供了两套特殊命名的变量参数用作宏的局部变量,他们只能用在宏文件中,其生命周期与宏运行周期完全相同,只有在调用宏时才会用宏局部变量,当宏运行结束时这些局部变量会从内存中消失。这两种宏局部变量分别是:

1宏命令行的输入变量

2宏文件的内部变量

5.1宏命令行的输入变量

宏可以当作ansys的命令,此时宏命令可以具有19个变量,他们分别表示宏的19个输入参数,在宏中可以直接引用这19个变量,从而实现将宏命令输入行的变量参数传入宏文件中。这19个宏输入变量参数只能在每个宏文件内部使用,随着宏的调用而存在于宏的进程中,随着宏的退出二从内存中消失。正是于此,所有宏都可以使用这19个宏输入变量。

19个宏输入变量分别是 ARG1~ARG9 以及 AR10~AR19 他们可以输入以下值:

数值 文字或字符串 傻子或字符参数 参数表达式

注意:如果使用*USE 命令调用宏,则只能将从ARG1AR18的参数值传递到宏中,将宏当作ANSYS命令进行等价运行时,则可以将从ARG1AR19的参数的值传递到宏中!

实例:

创建宏

*createblomac

/prep7

Block,,ARG1,,ARG2,,ARG3

FINISH

*END

运行宏

Blo123

或采用GUI方式

5.2宏内部使用的局部变量

宏内部使用的局部变量,只有在宏文件内部才有效,调用宏时这些变量就存在,退出宏时会自动从内存中清除。内部使用的局部变量最多有79个变量参数,他们分别是从AR20AR99的变量。注意,在套嵌中,这79个参数也不会互相传递,不能共享和传递.

实例:

*CREATE命令创建一个计算阶乘的通用宏factorial.mac,其中利用ARG1最为宏的输入变量将阶乘数值传进宏文件,利用AR20作为宏的内部变量,用作控制DO循环数目的循环变量。然后,在主程序中调用宏factorial.mac分别计算10!和!50.

宏如下:*CREATE,factorial,mac

output_fact=1

*DO,AR20,1,ARG1

output_fact=output_fact*AR20

*ENDDO

*END

求解!10和!50 调用宏

FINISH

/CLEAR

/FILNAME,MAC_IN

factorial,10

FACT10=output_fact

factorial,50

FACT50=output_fact

六.宏的保存

默认 情况下,宏都保存到了 默认的起始目录, 用户可以保存到任意路径,方法如上设置FNAME 即可,GUI模式选择浏览目录,但是最好保存到ansys的搜索路径中,方便调用!

七.宏的应用

通过以上的教程,创建宏以及运行宏 都可轻松实现,但是,我们编制宏的目的是方便我们的分析和建模,所以我们可以把常用的零件或者标准零件或材料属性表..做成库,用的时候可以直接调用宏!这样不是大大加快了我们的效率了吗?

实例:

进行瞬态热应力分析时,给材料一般都要 分配 导热系数,比热容,密度,弹性模型,泊松比..我们可以把这个步骤制作成一个宏,每次分析的时候都可以调用这个宏,直接赋参数就可以了!

八.宏的套嵌和宏库

1.宏的套嵌

宏的套嵌就是在宏文件中调用其他的宏,APDL允许最多套嵌的宏为20层,套嵌调用宏时最多可以向宏中传递19个输入变量(ARG1~ARG9,AR10~AR19)每个套嵌的宏运行完毕后程序的进程自动返回给调用该宏的上一层。

2.宏库

可以把一些宏放到一个文件中,这个文件就是宏库文件,宏库文件没有明确的文件扩展名,但文件的命名规则和宏文件一样。其中,每个宏的开始处都有一个宏名,并以一个/EOF命令结束,建议把宏库文件放在宏的搜索路径中,这样方便调用.与宏文件不同,宏库文件可以有任何扩展名,做多包括8个字符。

宏库文件结构图:

MACRO_NAME1

/EOF

MACRO_NAME2

/EOF

MACRO_NAME3

/EOF

创建后,就可以调用宏库文件中的宏了,运行宏库中宏的格式如下:

/ULIB,FNAME,EXT--

*USE,

FNAME——宏库文件名及其路径(默认为工作目录)

EXT——宏库文件后缀

注意,一旦用*ULIB调用了宏库后,就不能用*USE运行非此库中的宏。

 

 

from: http://anony3721.blog.163.com/blog/static/511974201041914349681/

weinxin
我的微信公众号
分享科研软件、科研方法,为你的科研助力。
ScienceSoft
  • 本文由 发表于 25 3 月, 2015 02:04:16
  • 转载请务必保留本文链接:https://www.sciencesoft.cn/ansys-macro-intro/
评论  0  访客  0
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定