首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ANSYS宏基础

APDL(ANSYS参数设计语言)最强有力的特征之一是创建宏的能力。宏就是一系列贮存在一个文件中的ANSYS命令,并且能象一个ANSYS命令一样来运行。

常用宏功能:

它可以如同ANSYS命令一样具有变量。

分支和循环用来控制一系列命令。

交互式特征如图形拾取,提示,以及对话框。

宏可以嵌套――一个宏引用第二个宏,第二个宏引用第三个宏,等等。一直可嵌套20级。

下面我们将给出创建宏的基本步骤:

创建一个宏

带参数的宏

分支

循环

注意事项

1.创建宏

创建一个宏,在文本编辑器中,创建一系列命令,并以文件名name.mac保存它们,name以一个字母开始,可以达32个字符。在文件名中空格不允许。避免特殊字符。确保name不是一个有效的ANSYS命令。可以在开始或所有处理器(PREP7,POST1,等等)中进行检验。如果得到这种信息...不是有效的命令或宏…那么这个名字是“安全的”。

扩展名.mac允许你运行宏如同运行一个命令一样:只需敲入name。

例子:

宏totvolume.mac用来计算所有单元的整个体积:

esel,all                  !选择所有单元

etable,volume,volu!将所有单元体积建立单元表

ssum!求解单元表选项总和

*get,totvol,ssum,,item,volume!totvol=体积总和

*stat,totvol!列totvol值

在Post1(在求解之后)中发出totvolume来计算整个体积,如图12-17所示。

图1 通过宏计算整个体积

宏搜索路径:

ANSYS首先在下列搜索路径中寻找文件name.mac并运行它:

/ansys110/docu

在ANSYS_MACROLIB环境变量路径中

在WINDOWS系统中的注册路径

当前工作路径

-如果在上级路径和下级路径同时寻找到同样的文件名,则采用上级路径。

2.带参数的宏

通过特殊的字符名,你可以创建多达20个参数的宏:

NAME,arg1,arg2,arg3,…,ar10,ar11,ar12,…,ar20

参数如同标准的ANSYS命令中的参数,可以为:

数字

字符(被包括在单引号中)

参数(标量或数组)

参数表达式

参数的意义由所定义的宏来决定。

例如,我们可以定义宏totvolume.mac来计算指定类型的所有单元体积和:

TOTVOLUME,TYPE

宏具体如下:

esel,s,type,,arg1

etable,volume,volu

ssum

*get,totvol,ssum,,item,volume

*vwrite,arg1,totvol

(‘Total volume for type’,f4.0,’elements=’,f8.2)

求解之后在通用后处理器中发出totvolume,1,如图2所示,将得出下列结果:

图2 带参数的宏计算整个体积

注意:

特殊的字符名ARG1-ARG9,…..仅仅是局部参数,仅仅在该宏中有效。

一旦宏运行结束后并返回ANSYS主程序,它们将无意义。

避免在模型的其它地方应用这些名称。

字符名ARG1-ARG9,…..不能改变,只能用这些名字。

运行宏时宏名字后面的输入参数依次代入这些参数。

例子:

作几个关键点,用参数来控制连不同的线。

宏名称:crline.mac

finish

/clear

/prep7

k,1,0,0,0

k,2,0,1,0

k,3,1,1,0

l,arg1,arg2

gplot

输入crline,1,2 或  crline,2,3 或   crline,1,3来验证

3.分支

通过应用IF-THEN-ELSE结构,在只有一定的条件满足的情况下,你可以运行一个命令或命令块。

在*IF 和*ELSEIF命令中,可以运用AND,OR ,或XOR 比较符。

IF,A,EQ,B,AND,C,GT,D,THEN

分枝以*IF开始和*ENDIF结束。*ELSEIF和*ELSE在它们中也可以使用:

*if,x,eq,y,then

,,,,,,

,,,,,,

*elseif,x,eq,z,then

,,,,,,

*else

,,,,,,

,,,,,,

*endif

如图3分支示意图。

图3 分支示意图

例如,你可以在宏totvolume.mac中增加if-test来测试输入的变量的有效性,如图4所示:

*if,arg1,lt,1,then!如果ARG1小于1

*msg,warn!发出一个警告

Element type number must be 1 or greater!退出宏

/eof

esel,s,type,,arg1  !选择所有确定类型的单元

etable,volume,volu!建立单元表

ssum!求解单元表数据总和

发出totvolume,-1将得出下列结果:

图4 宏测试图

4.循环

DO循环允许执行一个命令块数次

实际上在DO循环中对其中包含什么内容没有限制。你可以包含任何ANSYS命令包括前处理,求解和处理,这是在条件允许的情况下。

*DO开始循环,*ENDDO结束循环。

你可以用*EXIT(退出循环)和*CYCLE(跳到DO循环末)控制循环。

EXITT和CYCLE也可以根据if-test的结果来执行。

作为一个例子,我们通过加入DO循环来扩展宏totvolume.mac,计算所有单元类型并将它们各的体积保存在数组参数中。

! -- Macro TOTVOLUME.MAC to calculate total element volume.

! -- Usage:  Issue TOTVOLUME in POST1 after a solution.

! -- Result:

! --   a) evolume(i) = total volume for element type i

! --   b) totvol = grand total volume

!

*get,numtypes,etype,,num,count! Get number of element types

*dim,evolume,array,numtypes! Open a numtypes x 1 array

*do,i,1,numtypes! For i = 1 - numtypes...

esel,s,type,,i!   Select elements of type i

etable,volume,volu!   Store volume in element table

ssum!   Sum element table items

*get,totvol,ssum,,item,volume!   totvol = sum of ‘volume’

evolume(i) = totvol!   Store totvol in evolume(i)

*enddo! End of do-loop

*vscfun,totvol,sum,evolume(i)! totvol = grand total volume

esel,all! Activate full set of elements

5.一般注意事项

建立短小且简单的宏

当创建宏的时候,可以在ANSYS命令窗口中剪切并粘贴命令来检测这些命令的顺序是否正确

运用注释来描述意图或期望的执行结果

在自己的目录中保存你自己的宏

在ANSYS_MACROLIB环境变量目录中保存那些任何人都可以进入的宏

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201024A020FK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券