如何学习ANSYS命令流及APDL简解[稻谷书屋]_第1页
如何学习ANSYS命令流及APDL简解[稻谷书屋]_第2页
如何学习ANSYS命令流及APDL简解[稻谷书屋]_第3页
如何学习ANSYS命令流及APDL简解[稻谷书屋]_第4页
如何学习ANSYS命令流及APDL简解[稻谷书屋]_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、筷子学苑交流活动之十 APDL内容简解 Dean|迪安 2014-5-4 1 知识材料 2 Dare Design 2014 上篇 简介及准备 下篇 APDL内容简解 主要内容 3 Dare Design 2014 简介及准备 什么是ANSYS命令流,APDL是什么? ANSYS命令流与GUI方式联系及其优点 二次开发涉及到的工具 如何学习ANSYS命令和APDL 工欲善其事必先利其器(编辑器选择) LOG文件的秘密 上篇 4 Dare Design 2014 ANYS提供两种工作方式,GUI图形用户界面(Graphical User Interface又称图形用户接口)操作和命令流。 在AN

2、SYS 中,命令流是由一条条ANSYS 的命令组成的一个 命令组合,这些命令按照一定顺序排布,能够完成同GUI方 式一样甚至GUI不能完成的的 操作。 命令流方式融GUI方式、APDL、UPFs、UIDL、MAC,甚 至TCL/TK于一个文本文件中,可通过/input命令(或Utility MenuFileRead Input From)读入并执行,也可通过拷 贝该文件的内容粘贴到命令行中执行。 什么是ANSYS命令流,APDL是什么? 5 Dare Design 2014 命令流通常由ANSYS命令和APDL功能语句组成。APDL (ANSYS Parametric Design Langu

3、age)为ANSYS参数化设计语言。 APDL是用来自动完成某些功能或建模的类似于FORTRAN的 解释性语言,提供一般程序语言的功能。它包含三个方面的 内容:工具条、参量和宏命令。灵活运用这三种工具,可以 实现快速操作,数据快速传递、更新等功能。 APDL 是什么 上篇 简介及准备 解释性语言 解释性语言的程序不需要编译,在运行程序的时候才翻译, 每个语句都是执行的时候才翻译。这样解释性语言每执行一 次就需要逐行翻译一次,效率比较低。现代解释性语言通常 把源程序编译成中间代码,然后用解释器把中间代码一条条 翻译成目标机器代码,一条条执行。 6 Dare Design 2014 ANSYS命令

4、流与GUI方式联系及其优点 ANSYS命令流可以和GUI方式配合使用,各自分别都能独立 完成分析,部分操作只能通过命令方式实现。对于复杂的有 限元模型,使用GUI方式的缺点就会暴露,因为一个分析的完 成需要进行多次反复。这样,在GUI方式中,就会出现大量重 复的操作,会严重影响设计人员的心情。 7 Dare Design 2014 命令流有以下几个优点: p可减少大量的重复工作,少许修改的话,只需变动几行代 码或者参数就行,可为设计人员节省大量的时间。 p便于保存和携带,一个复杂的有限元分析的APDL代码也就 几百行,也就几十KB。 p便于交流,设计人员进行交流时,查看APDL代码明显方便 得

5、多。 p高级需求时,可以二次开发。 p熟练后分析速度要快于使用GUI;减少重复劳动;方便和别 人交流。 但这并不是说只需学习命令流就可以了,对于初学者来说 ,GUI方式是最易懂和入门的方式,熟练的操作GUI可以便于 命令的理解。因此,我们在学习ANSYS过程中,菜单操作是 对ANSYS使用环境熟悉的一个重要过程。 命令流方式的优点 上篇 简介及准备 8 Dare Design 2014 二次开发涉及到的工具 可以通过ANSYS为用户提供了良好的二次开发环 境,开发适用于用户自己的模块,提高分析效率和 质量。ANSYS提供了四种二次开发工具:APDL; UPFs(User Programmabl

6、e Features)用户可编程特性,操 作途径是对ANSYS核心FORTRAN代码进行修改,对 开发者有限元知识水平要求较高;UIDL(User Interface Design Language)用户界面设计语言;Tcl(Tool command language)工具命令语言,Tk是基于Tcl的图形开发 工具箱,二者用于ANSYS界面开发,比UIDL更加接 近底层。 9 Dare Design 2014 如何学习ANSYS命令和APDL 命令流通常由ANSYS命令和APDL功能语句组成。 大致可以通过命令有无前缀区分: 带/的命令:一般是系统命令(总体命令)或各模块标示符,比如功 能菜单

7、(Utility Menu)中的多数操作、主菜单(Main Menu)进入 各模块。如删除所有的参数以及模型和结果/clear,前处理命令对应 的处理器/PREP7,求解模块/SOLUTION,后处理命令/post1、 /post26等。 带*的命令:一般是APDL的标识符,也就是ANSYS的参数化语言, 如*do ,*enddo等 无/和*命令:是各个模块下的ANSYS命令,使用时需要进入相应的 处理器。如/PREP7下才可以使用ET(定义单元)命令。 10 Dare Design 2014 ANSYS命令按照功能可分为三个大类:前 处理命令、后处理命令、和结果查看命令, 每个大类有自己对应

8、的处理器,/PREP7处 理器,后处理/POST1、/POST26等。 ANSYS有超过1000条命令,很难有人把 这些完完全全记住,我建议先学习APDL语 法及规则,记住常用的关键词,配合这些关 键词套用需要的命令。然后了解常用的 ANSYS命令。对于ANSYS常用命令的学习 ,网上资料很多,更详细的用法可以在 ANSYS主菜单-help-help topic中查找。 如何学习ANSYS命令和APDL 上篇 简介及准备 11 Dare Design 2014 如何学习ANSYS命令和APDL 上篇 简介及准备 图1 APDL在ANSYS14.5 帮助中的位置 12 Dare Design 2

9、014 工欲善其事必先利其器(编辑器选择) 多数命令流可以直接拷贝到ANSYS命令提示符栏中运行,但部 分命令不支持这种方式,而且执行速度比较慢。更常用的方法是 将命令流在文本文档中整理好,然后通过/input命令或Utility MenuFileRead Input From运行。 最常见的文本编辑器就是WINDOWS自带的记事本了,具有 系统自带、功能简单,使用方便的特点,能够满足基本的需求。 13 Dare Design 2014 常用的文本编辑器,UltraEdit和PSPad 编辑器选择 上篇 简介及准备 14 Dare Design 2014 选择编辑器的原因: 强大的数据处理能力

10、、文件对 比、替换、列选等 语法高亮 PSPad还具有自动完成功能。 UE 9.0c版体积小,绿色版,大 文件打开速度快,很EASY的列 选及列操作。 PSPad在大文件打开时速度慢, Unicode支持不太好,另外换行 (word wrap)问题始终没解决 编辑器选择 上篇 简介及准备 15 Dare Design 2014 LOG文件的秘密 通过ANSYS GUI操作时,几乎所有的操作都会记录到工作目 录jobname.log文件中,并且以ANSYS命令的方式记录。所 以,查看log文件就能弄明白操作所对应的命令,这也是初 学者学习和编写命令流的一种途径。 16 Dare Design 2

11、014 但log里也记录了很多无用的东西,比如转动视角,放大缩小等;选择 实体也会产生啰嗦大量代码。这就需要进行整理和简化。 下面7点是网友总结的log文件整理心得。 1.要注意时间,因为每次做的东西都会跟在log文件后面,所以要根据 时间取舍,不是所有的log文件中的内容就有用的,一开始我建议从新建 一个文件开始。 2.最好每做一步看一下log文件,可以知道自己的操作对应哪些命令 3.有些关于存盘、显示视角等命令可以删除。 4.选取实体时往往会产生很多命令,可以简化。 5.整理命令流时要新建立一个文本文件,以便从log文件中拷贝所需要 的。 6.File菜单中的Read input from

12、可以读入自己所建立的命令流来执行 。 7.可以增加注释语句以增强可读性 LOG文件整理 上篇 简介及准备 17 Dare Design 2014 其实有一个小工具可以帮助你快速整理log AnsysCommandParser ANSYS命令解析器 同时,如果你的db文件是在ANSYS中操作的,可以通过下面方式写出记录文件 Utility MenuFileWrite DB Log File LGWRITE, Fname, Ext, -, Kedit ANSYS命令解析器 上篇 简介及准备 用于清理和转换Ansys日志文件(.log文 件),以生成等价的Ansys命令流的小 工具。 主要功能:主要

13、功能: 1.删除/auto“,/dist“,/replot之类因 图形界面操作所产生的“无用指令” (对建模和计算本身无影响的指 令); 2.将图形界面选择操作所产生的选择 操作指令转换为等价,但更加简洁、 可读性更好、更适合手工输入的选 择操作指令 转换Ansys日志文件命令流的小工具 AnsysCommandParser http:/ 2011/05/06/2039515.html 18 Dare Design 2014 APDL内容简解 自定义工具栏 使用参数 数组初步 ANSYS * *getget命令和查询函数 宏 控制语句 GUI交互 编写命令流的良好习惯 有用的东东 参考资料 下

14、篇 19 Dare Design 2014 APDL也像其他编程语言一样,有自己的语法特点和语法规则 。其功能语句和FORTRAN语言较为接近。 p使用工具栏:Working with the toolbar p使用参数:Using parameters p使用APDL数学函数和矩阵运算:Using APDL Math for matrix manipulations pAPDL作为宏语言:APDL as a macro language p用户界面接口:Interfacing with the GUI p加密宏:Encrypting macros APDL主要内容 u用参数而不是用数值输入模

15、型尺寸,材料类型等 u从ANSYS数据库中获取信息, 比如节点位置或最大应力 u在参数中进行数学运算,包括矢量和矩阵运算 u把常用的命令或宏定义成缩写形式 u建立一个宏使用if-then-else分支和do循环等来执行一系列任务 20 Dare Design 2014 ANSYS没有像其他软件一样的工具图标,但是可以把一些经常 用的功能通过自定义按钮的方式添加到Toolbar里面。 主要用到了*ABBR(Abbreviation的缩写)命令,其格式为 *ABBR,按钮上的标签名称,按钮调用的命令或宏的名称 自定义工具栏 命令*ABBR的使用格式如下: *ABBR,Abbr,string abb

16、r:显示在工具条上的缩写名,最多可包含8个字符. string:Abbr所代表的ANSYS命令,系统UIDL函数名或宏名的缩写字符串.如果*ABBR命令 的值域string是一个宏名,那么该宏必须放在指定的宏搜索路径下. 21 Dare Design 2014 !ANSYS TOOLBAR 工具快捷按钮工具快捷按钮 by TAOLEI !- !说明:通过在界面上增加常用按钮,快速完成相应功能,输入这些命令后,更新工具栏就可以了 !也可以修改ansysv100v100ANSYSapdlstart110.ans文件 (ANSYS11.0)(ansys11,其它版本也有相应的文件) !ANSYS14

17、.5 版本路径 ANSYS Incv145ansysapdl start145.ans !加入*ABBR,.,. 达到初始化时就添加的目的 !- /NOPR !以下语句不写入log文件 *ABBR,ALLS,ALLS *ABBR,RPLOT,/RPLOT *ABBR,E_PLOT,EPLOT *ABBR,N_PLOT,NPLOT *ABBR,V_PLOT,VPLOT *ABBR,A_PLOT,APLOT *ABBR, MOVE_WK, KWPAVE,P *ABBR, ALIGN_WK, KWPLAN,-1,P *ABBR,CALC,/SYS,CALC.EXE *ABBR,UNDO,UNDO /

18、GO !恢复语句写入log文件 自定义工具栏 下篇 APDL内容简解 22 Dare Design 2014 使用参数APDL内容简解 参数指的是变量。即能够代表数据、字符或者数 组的自定义名称。例如,一个长方体的几何属性, 可以用长宽高这几个参数来描述。为形象、简便的 表述这几个参数,常用length、width和hight变 量指代其具体数值。 ANSYS变量类型分为:数值、字符和表三种类 型。所有数值变量(整形或实形)都以双精度数储 存。被使用但未声明的参数都被赋一个接近 0 的 值,或极小值,大约为2100。例如,若参数 A 被 定义为 A=B,但 B 没被定义,则赋给A一个极小 值。

19、ANSYS 包含两种类型的参数:标量和数组。 length width hight 23 Dare Design 2014 ANSYS的变量由不超过8个字符的字母、数字和下划线组成,且 变量只能以字母开头。 例如ABC、PI、A_1等为合法变量,而M&E、VALUE_ABC、3M_ 为非法变量。 同时,定义ANSYS变量时要注意以下几点: u不能与ANSYS表示字相同,例如自由度(DOF)标识字 (TEMP,UX,PRES等);常用标识字(ALL,PICK,STAT等);用户定义 标识字(如用ETABLE命令定义的标识字);数组类型标识字( 如CHAR,ARRAY,TABLE等) u名称为从A

20、RG1到ARG9和从AR10到AR99的参数被保留为局部 参数。 使用参数变量命名 24 Dare Design 2014 通常由下面几种方法给变量赋值: 1.使用*set命令,如 *set,AA,1 *SET,AA,ABC!ABC已知或已赋值 *SET,CPARM,CASE1 !字符型变量的值需要用单引号括起来 2.当然最简单的方法是使用“=”号赋值 AA=1 AA=ABC CPARM=CASE1 使用*get获得变量的值 使用ANSYS函数获得变量值 通过参数间的运算或合成 X=A+B P=(R2+R1)/2 D=-B+(E*2)-(4*A*C)!求值D=-B+E2-4AC M=(X2-X

21、1)*2-(Y2-Y1)*2)/2! 使用参数变量赋值 25 Dare Design 2014 定义好的变量可以整体显示或者查看,也可 以重新赋值和删除 用*STATUS命令把定义的变量排列显示出 来 字符和数值型变量可以通过parameters- scalar parameters查看、修改和删除 数值型数组变量的值通过 Parameters-ARRAY Parameters-Define Array查看、修 改和删除 清除变量值 *set,AA或AA= 删除某个变量可以用*del *del,AA *del,all删除所有变量 使用参数变量查看和删除 26 Dare Design 2014

22、如果要在其他ANSYS任务中使用当前定义的参数,可以先把 它们写入一个文件中,然后读取(恢复)该文件。读取文件时 ,可以全部代替当前定义的参数,也可以只把它们加到当前定 义的参数中(会覆盖已存在的参数)。 可用PARSAV命令把参数写入一个文件中 (UtilityMenuParametersSave Parameters)。 参数文件是ASCII文件,主要由APDL*SET命令组成,该命令 用来定义各种参数。可用PARRES命令从一个文件中读取参数 (UtilityMenuParametersRestore Parameters)。 使用参数变量保存和恢复 27 Dare Design 201

23、4 数组初步 数组是ANSYS非常实用有效的数据存储和运算工具。其定义 方法与普通变量略有差别。 ANSYS中数组包括数值型、字符型和表三种类型的数组。下 面分别是三种数组的定义方法。 一般格式*DIM,变量名,数组类型,行数,列,面 *DIM,AA,4!类型ARRAY为缺省类型,维数为4x1x1 *DIM,XYZ,ARRAY,12!ARRAY类型数组,维数为12x1x1 *DIM,FORCE,TABLE,5!TTABLE类型数组,维数为5x1x1 *DIM,T2,4,3!维数为4x3x1 *DIM,CPARR1,CHAR,5!CHAR类型数组,维数为5x1x1 其中数值型和字符型数组,下标为

24、整数,行列面的起始下标 均为1,而TABLE的下标为大于等于0的实数或整数。 28 Dare Design 2014 1)利用*set命令或“=”给单个或多个数组元素赋值与scalar变量赋值是格式相同 。 2)利用*set或“=”赋值时,赋值对象为第一个元素名,赋值数据是一个列矢量, 赋值结果是按列下标递增顺序从第一个赋值数组依次赋值。注意,一次最多只能给10 个连续数组元素赋值,当只给一个元素赋值时与变量赋值完全一致。 举例: (1)*DIM,A,ARRAY,12,1,1 定义数组A为一个array类型,12行1列 A(1)=1,2,12 给每个元素赋值为其行标 (2)*DIM,B,arr

25、ay,4,3,1 定义数组B为一个array类型4行3列 B(1,1)=11,21,31,41 B(1,2)=12,22,32,42 B(1,3)=31,32,33,43 B= 注意此赋值的下标!对于二维数组,赋值顺序按照列进行赋值,注意此规律。三维 也是一样的。 (3)*DIM,C,char,4,1,1 C(1)=a,b,c,d 数组初步数组赋值 29 Dare Design 2014 ANSYS * *getget命令和查询函数 ANSYS*get(UtilityMenuParametersGetScalarData)命令可以返 回一些值并存储在一个变量或者数组中。 例如通过*GET,no

26、de1x,NODE,1,LOC,X可以获得节点1的X坐标,并存储 在变量node1x中,其GUI操作如下: *get命令 30 Dare Design 2014 *GET,Par,Entity,ENTNUM,Item1,IT1NUM,Item2,IT2NUM 这里 nPar是将被赋值的参数名; nEntity是被提取项目的关键词,有效的关键词是 NODE,ELEM,KP,LINE,AREA,VOLU等。 nENTNUM是实体的编号(若为0指全部实体); nItem1是指某个指定实体的项目名。例如,如果Entity是ELEM,那么 Item1要么是NUM(选择集中的最大或最小的单元编号),要么是

27、 COUNT(选择集中的单元数目)。 在ANSYS命令参考手册中的*GET部分对每种实体的Item1值有完整的说明 。帮助路径为 /CommandReference/VIII.GCommands/*GET ANSYS *get命令和查询函数*get命令调用格式 31 Dare Design 2014 可以把*GET命令看成是对一种树型结构从上至下的路径搜索,即从一般到特殊的确定。 可用下面的例子来说明*GET命令的用法。下面的第一条命令用于获得单元97的材料 属性(MAT参考号)并赋给单元BCD: *GET,BCD,ELEM,97,ATTR,MAT !BCD=单元97的材料号 *GET,V37

28、,ELEM,37,VOLU !V37=单元37的体积 *GET,NMAX,NODE,NUM,MAX !NMAX=最大激活节点数 *GET,COORD,ACTIVE,CSYS !COORD=激活的坐标系值 *GET,NCOUNT,node,0,count !NCOUNT=得到这些节点的个数 *GET,ND_NUM_MN,node,0,num,min !ND_NUM=得到这些节点中编号最小的节点号 正如*GET从数据库获取标量数据,可以用*VGET获取数组信息或 UtilityMenuParametersGetArrayData 先定义数组,然后获取数据 例如: *dim,dispval,arra

29、y,20,3 !203array *vget,dispval(1,1),node,1,u,x!UXofnodes1-20incolumn1 *vget,dispval(1,2),node,1,u,y !UYincolumn2 *vget,dispval(1,3),node,1,u,z !UZincolumn3 ANSYS *get命令和查询函数*get命令使用实例 32 Dare Design 2014 在ANSYS操作过程或条件语句中,常常需要知道有关模型的 许多参数值,如选择集中的单元数、节点数,最大节点号等。 此时,一般可通过*GET命令来获得这些参数。现在,对于此类 问题,我们有了一个

30、更为方便的选择,那就是查询函数 Inquiry Function。 Inquiry Function类似于ANSYS的 *GET 命令,它访问 ANSYS数据库并返回要查询的数值,方便后续使用。ANSYS每 执行一次查询函数,便查询一次数据库,并用查询值替代该查 询函数。 ANSYS *get命令和查询函数查询函数(Inquiry Function) *get, ELMAX,elem,count *do, I, 1, ELMAX *enddo 33 Dare Design 2014 ANSYS *get命令和查询函数查询函数(Inquiry Function) *do, I, ELMIQR(0

31、,13) *enddo 这里的ELMIQR并不是一个数组,而是一个查询函数,它返回 的是现在所选择的单元数。括弧内的数是用来确定查询函数的 返回值的。第一个数是用来标识你所想查询的特定实体(如单元 、节点、线、面号等等),括弧内的第二个数是用来确定查询函 数返回值的类型的(如选择状态、实体数量等)。 34 Dare Design 2014 ANSYS提供了许多类似的查询函数,下面举一个例子,其它常用查询函 数可以在帮助中查询。 NODEndinqr(node,key) node节点号,对于key=12,13,14为0 key标识关于node的返回信息 =1, 选择状态 =12,定义的数目 =1

32、3,选择的数目 =14,定义的最大数 =-2,超单元标记 =-3,主自由度 =-4,激活的自由度 =-5,附着的实体模型 ndinqr(node,key)的返回值 对于key=1 =-1,未选择 =0,未定义 =1, 选择 ndinqr(node,key) 35 Dare Design 2014 AREAarinqr(areaid,key) KEYPOINTSkpinqr(kpid,key) LINElsinqr(lsid,key) VOLUMESvlinqr(vnmi,key) 系统信息查询函数/INQUIRE 要获得当前系统时间、ANSYS工作目录、文件信息、系统时间等参数使 用/INQU

33、IRE命令。格式为: /INQUIRE, StrArray, FUNC StrArray:将接受返回值的字符数组参数名 FUNC:指定系统信息返回的类型 参考目录 / Command Reference / X. I Commands / /INQUIRE 查询函数 36 Dare Design 2014 内嵌获取函数的用法 对于某些信息,除了使用*get命令获取外,可以通过ANSYS内嵌的 获取函数来获得信息。主要分成两类,一般函数和数学函数。 例如 Node1x=NX(1) !节点1在当前激活坐标系中的x坐标值 与上面的*GET,node1x,NODE,1,LOC,X !等价 可以看出,此

34、类函数比*get的用法更加简洁和明确 /ANSYSParametricDesignLang uageGuide/B.GETFunctionSu mmary 查询这些函数在 ANSYS14.5中的路径为 37 Dare Design 2014 APDL内容简解 自定义工具栏 使用参数 数组初步 ANSYS * *getget命令和查询函数 宏 控制语句 GUI交互 编写命令流的良好习惯 有用的东东 参考资料 下篇 38 Dare Design 2014 宏什么是宏 APDL最强有力的特征之一是创建宏的能力,使用宏能减少工作量并提高分 析效率,宏带给开发者高效和惊喜,使你的成就感升华到最大限度。

35、那么什么是惊喜,什么是宏? 简单来说宏是把多条命令组合后自定义成一个新命令,以后只要键入这条 命令就实现多条命令的效果。类似其它语言中的函数。 例如,多次用到如下操作:生成一个尺寸为4,3,2的长方形块和一个半径为 1的球体。然后,从块的一个角处减去球体。其基本命令流为: /prep7 /view,-1,-2,-3 block,4,3,2 sphere,1 vsbv,1,2 finish 把这段命令流保存在文本文 档中,并命名为 mymacro.mac,就可以通过 *use,mymacro或 mymacro 来执行。 39 Dare Design 2014 p在输入窗口执行*CREATE命令。

36、参数的值不确定,参数名被写 入文件中。 p使用*CFOPEN,*CFWRITE,和*CFCLOS命令。参数名被其当前值 取代,值被写入文件中。 p选择UtilityMenuMacroCreateMacro菜单项。该方法打开 一个可作为简单的多行编辑器的对话框来生成宏。参数的值不确定, 参数名被写入文件中。 生成宏的途径 40 Dare Design 2014 宏的搜索路径 保存宏的位置可能影响到宏能否正确执行,一般地,ANSYS按如 下缺省路径搜索用户生成的宏(.mac扩展名): ANSYS的/ansys_inc/v145/ansys/apdl目录; 在ANSYSMACROLIB环境变量中定义

37、的路径; 在WINDOWS系统中的注册路径; 当前工作目录。 如果在上级路径和下级路径同时寻找到同样的文件名,则采用上级路径 带参数的宏 通过特殊的字符名,你可以创建多达19个参数的宏,这个特殊的字符名 指通过ARG1、ARG2ARG19来接收传递的具体参数。 例如,通过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 41 Dare Design 2014 宏

38、 宏库(宏的家园) 宏库顾名思义就是存放宏的库,可以把多个宏集中放在一个文 件中,减少宏文件数量,方便管理。其类似其它语言的函数库 文件。 宏库文件没有明确的文件扩展名,若有,不能超过8个字符。 我以前采用了.AML这样一个后缀名。其文件名的命名规则和宏 文件一样。宏库文件的结构为: MACRONAME1!宏名1 ANSYS语句!具体命令行 /EOF!宏1结束退出宏 MACRONAME2!宏名2 ANSYS语句!具体命令行 /EOF!宏2结束退出宏 MACRONAME3!宏名3 ANSYS语句!具体命令行 /EOF!宏3结束退出宏 42 Dare Design 2014 注意:宏库中有效代码中

39、不能存在空行,不能有整行的注释语句。每 个宏以/EOF结束。可以在每行语句后或宏库最末写注释。 使用宏库及其中的宏 当宏命令包含在宏库文件时,在执行宏命令前必须先打开宏库文件。使 用“*ulib,mymacros,mlib,/myaccount/macros/”来打开宏库文件, mymacros为宏库文件名,mlib为扩展名,/myaccount/macros/为宏库 文件所在的路径。 在打开宏库文件后,只能用*use命令来执行宏库文件包含的宏命令,不 能再用*use命令来执行单独位于宏文件中的宏命令。可以用不带任何参 数的*ulib命令来关闭宏库文件后,再用*use命令来执行单独位于宏文件

40、中的宏命令。 43 Dare Design 2014 控制语句 APDL的流程控制是一个难点,也是精髓所在。APDL提供了大量的控制 程序的命令,通过这些命令对于判断、重复等很有用处,包括:1、调用子 程序(宏);2、宏内的无条件转移3、宏内的条件转移;4、重复命令、增 加命令或者若干命令参量;5、命令的循环。 最主要的是分支语句和循环语句。 条件转移:IFTHENELSE结构 无条件转移:*GO 重复命令:*REPEAT 循环语句:DO-LOOP 需要注意的是以上命令都是带有*号的。 条件转移命令 IF语句是实现条件判断,根据结果运行一个命令、命令块或另外的命令。 *GET,FREQ1,MO

41、DE,1,FREQ *IF,ABS(FREQ1-1),LT,0.01,THEN!如果频率误差小于1%,则退出 *EXIT *ENDIF 44 Dare Design 2014 *IF命令的语法为: *IF,VAL1,Oper,VAL2,Base 其中, VAL1是比较的第一个数值(或数字参数); Oper是比较运算符; VAL2是比较的第二个数值(或数字参数); *if 如果. 若比较的值为真,则执行Base指定的操作。 Oper项,比较运算可能是以下八种(val1,val2为需要比较的参数): VAL1,EQ,VAL2!等于(VAL1=VAL2); VAL1,NE,VAL2!不等于(VAL1

42、#VAL2). VAL1,LT,VAL2!小于(VAL1VAL2). VAL1,LE,VAL2LE!小于或等于(VAL1vVAL2). VAL1,GE,VAL2!大于或等于(forVAL1=VAL2). VAL1,ABLT,VAL2!绝对值小于 VAL1,ABGT,VAL2!绝对值大于 45 Dare Design 2014 *if 然后呢 BASE的命令为 THEN *STOP *EXIT *CYCLE 通过给Base变量赋值THEN,*IF命令就变成了if-then-else结构(和 FORTRAN中的该 结构类似)的开始。该结构包括: 一个*IF命令,接下来是 一个或多个*ELSEIF命

43、令选项 一个*ELSE命令选项 一个必需的*ENDIF命令,标识字该结构的结束。 在最简单的形式中,*IF命令判断比较的值,若为真,则转向Base变 量所指定的标识字处。结合一些*IF命令,将能得到和其它编程语言中 CASE语句相同的功能。 46 Dare Design 2014 无条件转移 无条件*go *GO,:BRANCH1 -!这个程序体被跳过(不执行) - :BRANCH1 - 循环语句 *REPEAT命令是最简单的循环命令,通过它可以直接按指定的次数执行上一条 命令,并按常数增加命令所带参数。例如: E,1,2 *REPEAT,5,0,1 E命令在节点1和2之间生成一个单元,*RE

44、PEAT命令指示执行E命令5次(包括 最初的一次),每执行一次第二个节点号加1。结果共生成5个单元:1-2,1-3,1- 4,1-5,和1-6。 注意大多数以斜线(/)或星号(*)开头的命令,以及扩展名不是.mac的宏,都 不可以重复调用。但是,以斜线(/)开头的图形命令可以重复调用。 47 Dare Design 2014 do循环允许按指定的次数循环执行一系列的命令。*DO和*ENDDO命 令分别是循环开始和结束点的标识字。 下面的do循环例子读取5个载荷步文件(从1到5)并对5个文件做了同 样的更改: *DO,I,1,5!I=1ot5; LSREAD,I!读取载荷步文件I OUTPR,A

45、LL,NONE!改变输出控制 ERESX,NO LSWRITE,I!重写载荷步文件I *ENDDO DO开始循环,ENDDO结束循环。 你可以用EXIT(退出循环)和CYCLE(跳到DO循环末)控制循环 EXIT和CYCLE也可以根据if-test的结果来执行 控制语句 循环*do 48 Dare Design 2014 GUI交互 在一个ANSYS宏中,可以通过许多方法去访问ANSYS图形用户界面(GUI)的组件 可以生成对话框提示用户输入多个参数的值; 可以通过*MSG命令让宏写一条输出信息; 可以让宏更新或移走状态条; 可以允许用户在宏中通过图形拾取选择实体; 可以调用任何对话框。 通过

46、在宏中包含*ASK命令,该宏就可以提示用户输入某个参数的值。 *ASK命令的格式为: *ASK,Par,Query,DVAL 49 Dare Design 2014 多个参数输入时,可采用multipro命令。 MULTIPRO命令可以构造一个简单的多行提示对话框,该对话框最多可以 包含10个参数提示。该命令允许使用UIDL中的*CSET命令来产生提示,并为 每个提示指定缺省值。MULTIPRO命令必须和以下命令一同使用: 1-10个*CSET命令; 最多两个允许用户输入两行内容的*CSET命令。 该命令语法为: MULTIPRO,start,Prompt_Num *CSET,Strt_Loc

47、,End_Loc,Param_Name,Prompt_String,Def_Value MULTIPRO,end GUI交互多参数输入窗口 50 Dare Design 2014 start文字串,作为第一个参数,标识字MULTIPRO结构的开始。必须括在单引 号中。 Prompt_Num 至少有一个*CSET命令省略了Def_Value参数或Def_Value设为0 ,才必须用到该参数。该参数为整形数,等于接下来的*CSET提示的数目。 Strt_Loc,End_Loc对第一个*CSET命令,Strt_Loc参数的初始值为1。 End_Loc的值为Strt_Loc+2(对第一个*CSET命令

48、,值为3)。以后Strt_Loc的值 为End_Loc+1。 Param_Name 参数名,用来存储用户输入的值。若用户没有输入,其值为 Def_Value的值。 Prompt_String字符串,最多可包含32个字符,用来描述参数。必须括 在单引号中。 end 文字串,用来结束MULTIPRO命令。 GUI交互多参数输入窗口详解 51 Dare Design 2014 GUI交互多参数输入窗口实例 52 Dare Design 2014 编写命令流的良好习惯 1、设计规划 就像ANSYS的各个模块一样,规划好自己的代码流程,分成模块,比如 参数定义和输入模块,建模,加载,求解,后处理等。重复

49、用到的模块, 考虑写成宏文件。规划得越详细,模块分工越明确,越容易明白下一步该 做什么,这好比搭积木的游戏,你可以把你的积木块组合成各种各样的形 状,但首先要熟悉每个积木块的功能。 2、有备无患 复杂的分析编写命令流之前,先找出难点所在,逐一克服难点,整体编 写时就无压力了。 如无法确定遇到的困难,可由最简单功能开始实现,慢慢加深,实现自 己的目的。常用的代码就留存,随时拷贝修改成为自己的代码。 3、见名知意 程序再小,用的变量也不会少,变量起名应当见名知意是个老话题了, 好处是显而易见的。 53 Dare Design 2014 4、对称之美 中国人讲究对称之美,用在编程里也很合适,如果程序

50、里用到A循环嵌套 B判断,B判断又包含C循环之类的结构,记着使用缩进法,让A:ENDDO对 齐A:DO,B:ENDIF对齐B:IF诸如此类,依次缩进,总之对称就等于美观 加易读。 良好习惯 54 Dare Design 2014 5、多加注解 对代码中定义的变量、宏、以及功能的添加注释说明,别嫌麻烦。如果过 了三月五月,连自己写的东西都看不明白了,那才大麻烦。 6、注重通用 编写的东西尽量可以在以后使用到,这就需要能用参数表达的值尽量改用 参数。可以带入或需要修改的部分尽量集中。 良好习惯 有用的东东 常用 符号 文件 读写 常用 宏 解析 55 Dare Design 2014 连接符号$

51、常用符号 一般每行只写一条命令,$是把两行或者是多行命令流连接为一行的符号。 k,4.02,5.5$k,4.9,3.85$k,4.9,0 强制转化符号% 把字符参数名括在两个百分号%中可以实现强制替换,主要目的是实现在字符串 中插入变化的子字符串。 StrTitle=Model1 /TITLE,Thisis%StrTitle% /REPLOT StrTitle=Model2 /TITLE,Thisis%StrTitle% /REPLOT 在任何命令名域作为命令名。也可在域1中作为一个未知命令的宏名。例如: R=RESUME %R%,MODEL,DB 字符、数字混合替换例子 某变量由文件名+序号

52、+扩展名组成,如FN=TEST1.DAT FILENAME=TEST NO=1 FN=%FILENAME%NO%.DAT 得到的参数为FN=TEST1.DAT 56 Dare Design 2014 参数与数据文件的写出与读入 基本用法 ANSYS的参数或数组通常使用*VWRITE命令输出到文件中以便查看和处理 其命令格式为 *VWRITE,Par1,Par2,Par3Par19 共可以输出19个参数(10个数组)或者常量 使用该需要注意: 使用*VWrite命令把数据输出到文件时,必须要使用*CFOpen命令事先打开一个文 件;*CFOpen命令必须和*CFClos命令配对使用。 *VWRI

53、TE这个命令只能通过file-readinputfrom.实现,不能在窗口输入执行。 *Vwrite命令后面必须紧跟输出格式说明; 例如: *Vwrite,a,b,c (格式说明) 格式说明中Fw.d,w的数值不能太小,以至于输出的数据丢失了整数部分的精度; 例如:a=123.4, Fw.d中的w至少要为5,否则在ANSYS中运行时报错;这样的非语法类错 误,很难发现;为了避免此类错误发生, w应该至少设置为输出数据的所有数字个数1(小数点) 57 Dare Design 2014 常用格式说明: 1.(一对单引号):用于在输出数据的时候,输出注释字符串,常常用来 增加一些说明文字,增加可读性

54、; 比如: *Vwrite,Width,Length,Height (width:,F6.3, length:,F6.3, height:,F6.3) 2.nX:输出n个空格; 比如:在输出的a,b,c3个数据之间加入2个空格; *vwrite,a,b,c (F6.3,2X,F6.3,2X,F6.3) 3./:结束当前行的输出,转到下一行输出;如果两个/连续出现,则添加 一个空行; 4.没有直接像FORTRAN语言一样的整数输出格式I。 数组写出与读入 编写命令流过程中,经常需要把文件中数据(地震波数据)读入数组 或写出数组到文件中。 可以使用*VREAD命令用数据文件填充数组 基本用法 58

55、 Dare Design 2014 数组读写 (UtilityMenuParametersArrayParametersReadfromFile)。该命令从一个 ASCII数据文件读取信息,并由指定下标处开始写入数组中。可以通过数据描述符来控 制从文件中读取的信息的格式。数据描述符必须括在圆括号中,并放在*VREAD命令后 *VREAD,ParR,Fname,Ext,-,Label,n1,n2,n3,NSKIP 其中: ParR:是要将外部数据写入的参数或数组变量名,如是数组,必须已经定义(用 *DIM),且指出写入的开始位置,即包含下标(I,J,K)(默认首行首列首区),然后写入 从(I,J

56、,K)开始到结尾的所有数组元素;如是参数,只输入一个值。 Fname:是存放数据的外部文件名,Ext是扩展名, Label:可为IJK,IKJ,JIK,JKI,KIJ,KJI,或blank(默认为IJK),表示对数组ParR写入的顺序 。如IJK表示先写列再写行(先K,再J,再I;对于二维数组,先写列,下标J改变最快 ),JIK表示先写行再写列(先K,再I,再J;对于二维数组,先写行,下标I改变最快) n1,n2,n3:表示按上面的顺序,各下标分别要写入的数据个数,如JIK,5,6表示对 ParR按行写入,共写5列(对应J)6行(对应I),即三个数按顺序分别对应Label中的三个标 识符(例如

57、:KIJn1对应K、n2对应I、n3对应J,n2、n3默认为1) NSKIP:从文件中读取数据时,首先跳过文件开头的NSKIP行(如:说明部分等,非 数据内容),默认为0. 注意:*VREAD命令只能用于3维(含)及以下的数组。 59 Dare Design 2014 数据文件data.txt内容如下: 1.1 ,2.2 ,3.3 4.4 ,5.5 ,6.6 执行命令流 *DIM,AA,2,3 !数组AA有2行3列。 *VREAD,AA(1,1),DATA,TXT,JIK,3,2 !3对应J,2对应I (3F6.1) *STATUS,AA 不同控制符合IJK顺序导致读入的数组不同,或者出错,下面文章做了详细 的比较: 【对 ANSYS 中 *VREAD 命令用法的总结】 http:/ 628/ 数组读写 60 Dare Design 2014 finish /clear item=weight: data=234.56 unit=kg *dim,aa,array,4,1,1 aa(1)=10.2,324.5,123.7,908 *dim,bb,char,3,1,1 bb(1)=i am,a good,man *cfopen,byb,dat *v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论