ANSYS命令流学习指南_第1页
ANSYS命令流学习指南_第2页
ANSYS命令流学习指南_第3页
ANSYS命令流学习指南_第4页
ANSYS命令流学习指南_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、分享知识 传播快乐达尔文档 DareDocANSYS命令流学习指南APDL内容简解由DEAN原创、整理,仅供学习交流2014年5月达尔文档|DareDoc整理ANSYS命令流学习指南-APDL内容简解目录什么是ANSYS命令流,APDL是什么?1ANSYS命令流与GUI方式联系及其优点1二次开发涉及到的工具1如何学习ANSYS命令和APDL1工欲善其事必先利其器(编辑器选择)2LOG文件的秘密4APDL主要内容5自定义工具栏5使用参数7变量命名7变量赋值7变量定义查看和删除7参数保存和恢复8字符变量的用法8数组初步8数组赋值9ANSYS*get命令和查询函数9*get命令9查询函数(Inqui

2、ry Function)11系统信息查询函数/INQUIRE12内嵌获取函数的用法12宏12什么是APDL宏12宏定义13宏的搜索路径(宏在何放)14宏库(宏的家园)15控制语句16条件转移命令16无条件转移17循环语句17GUI交互18各种语言的含义20编写命令流的良好习惯21有用的东西整理21一些常用符号21参数与数据文件的写出与读入22常用宏解析24查询db名称,删除以db名+000.jpg为名称的图片24提取图片25查询变量或数组在ANSYS内部编号25线法线方向统一调整25梁单元单元表建立26参考资料26II28DareDoc什么是ANSYS命令流,APDL是什么?ANYS提供两种工

3、作方式,GUI图形用户界面(GraphicalUserInterface又称图形用户接口)操作和命令流。在ANSYS中,命令流是由一条条ANSYS的命令组成的一个命令组合,这些命令按照一定顺序排布,能够完成同GUI方式一样甚至GUI不能完成的的操作。命令流方式融GUI方式、APDL、UPFs、UIDL、MAC,甚至TCL/TK于一个文本文件中,可通过/input命令(或UtilityMenu>File>Read Input From)读入并执行,也可通过拷贝该文件的内容粘贴到命令行中执行。命令流通常由ANSYS命令和APDL功能语句组成。APDL(ANSYSParametricDe

4、signLanguage)为ANSYS参数化设计语言。APDL是用来自动完成某些功能或建模的一种脚本语言,提供一般程序语言的功能。它包含三个方面的内容:工具条、参量和宏命令。灵活运用这三种工具,可以实现快速操作,数据快速传递、更新等功能。ANSYS命令流与GUI方式联系及其优点ANSYS命令流可以和GUI方式配合使用,各自分别都能独立完成分析,部分操作只能通过命令方式实现。对于复杂的有限元模型,使用GUI方式的缺点就会暴露,因为一个分析的完成需要进行多次反复。这样,在GUI方式中,就会出现大量重复的操作,会严重影响设计人员的心情。命令流有以下几个优点:Ø 可减少大量的重复工作,少许修

5、改的话,只需变动几行代码或者参数就行,可为设计人员节省大量的时间。Ø 便于保存和携带,一个复杂的有限元分析的APDL代码也就几百行,也就几十KB。Ø 便于交流,设计人员进行交流时,查看APDL代码明显方便得多。Ø 高级需求时,可以二次开发。熟练后分析速度要快于使用GUI;减少重复劳动;方便和别人交流。但这并不是说只需学习命令流就可以了,对于初学者来说,GUI方式是最易懂和入门的方式,熟练的操作GUI可以便于命令的理解。因此,我们在学习ANSYS过程中,菜单操作是对ANSYS使用环境熟悉的一个重要过程。二次开发涉及到的工具可以通过ANSYS为用户提供了良好的二次开发

6、环境,开发适用于用户自己的模块,提高分析效率和质量。ANSYS提供了四种二次开发工具:APDL;UPFs(UserProgrammableFeatures)用户可编程特性,操作途径是对ANSYS核心FORTRAN代码进行修改,对开发者有限元知识水平要求较高;UIDL(UserInterfaceDesignLanguage)用户界面设计语言;Tcl(Toolcommandlanguage)工具命令语言,Tk是基于Tcl的图形开发工具箱,二者用于ANSYS界面开发,比UIDL更加接近底层。如何学习ANSYS命令和APDL首先,需要对ANSYS中涉及的各种命令进行归类。命令流通常由ANSYS命令和A

7、PDL功能语句组成。如何区分呢?大致可以通过命令有无前缀区分:带/的命令:一般是系统命令(总体命令)或各模块标示符,比如功能菜单(UtilityMenu)中的多数操作、主菜单(MainMenu)进入各模块。如删除所有的参数以及模型和结果/clear,前处理命令对应的处理器/PREP7,求解模块/SOLUTION,后处理命令/post1、/post26等。带*的命令:一般是APDL的标识符,也就是ANSYS的参数化语言,如*do,*enddo等等无/和*命令:是各个模块下的ANSYS命令,使用时需要进入相应的处理器。如/PREP7下才可以使用ET(定义单元)命令。ANSYS命令按照功能可分为三个

8、大类:前处理命令、后处理命令、和结果查看命令,每个大类有自己对应的处理器,/PREP7处理器,后处理/POST1、/POST26等。ANSYS有超过1000条命令,很难有人把这些完完全全记住,我建议先学习APDL语法及规则,记住常用的关键词,配合这些关键词套用需要的命令。然后了解常用的ANSYS命令。对于ANSYS常用命令的学习,网上资料很多,更详细的用法可以在ANSYS主菜单-help-helptopic中查找。图1APDL在ANSYS14.5帮助中的位置工欲善其事必先利其器(编辑器选择)多数命令流可以直接拷贝到ANSYS命令提示符栏中运行,但部分命令不支持这种方式,而且执行速度比较慢。更常

9、用的方法是将命令流在文本文档中整理好,然后通过/input命令或UtilityMenu>File>ReadInputFrom运行。最常见的文本编辑器就是WINDOWS自带的记事本了,具有系统自带、功能简单,使用方便的特点,能够满足基本的需求。在此,介绍两种我们常用的文本编辑器,UltraEdit和PSPad。UltraEditPSPad这两个编辑器很强大,但选择使用它们有这么几个原因:1. 强大的数据处理能力、文件对比、替换、列选等2. 语法高亮PSPad还具有自动完成功能。UE9.0c版体积小,绿色版,大文件打开速度快,很EASY的列选及列操作。PSPad在大文件打开时速度慢,U

10、nicode支持不太好,另外换行(wordwrap)问题始终没解决建议选用UE。LOG文件的秘密通过ANSYSGUI操作时,几乎所有的操作都会记录到工作目录jobname.log文件中,并且以ANSYS命令的方式记录。所以,查看log文件就能弄明白操作所对应的命令,这也是初学者学习和编写命令流的一种途径。但log里也记录了很多无用的东西,比如转动视角,放大缩小等;选择实体也会产生罗嗦大量代码。这就需要进行整理和简化。下面7点是网友总结的log文件整理心得。1.要注意时间,因为每次做的东西都会跟在log文件后面,所以要根据时间取舍,不是所有的log文件中的内容就有用的,一开始我建议从新建一个文件

11、开始。2.最好每做一步看一下log文件,可以知道自己的操作对应哪些命令3.有些关于存盘、显示视角等命令可以删除。4.选取实体时往往会产生很多命令,可以简化。5.整理命令流时要新建立一个文本文件,以便从log文件中拷贝所需要的。6.File菜单中的Readinputfrom可以读入自己所建立的命令流来执行。7.可以增加注释语句以增强可读性其实有一个小工具可以帮助你快速整理logAnsysCommandParserANSYS命令解析器同时,如果你的db文件是在ANSYS中操作的,可以通过下面方式写出记录文件UtilityMenu>File>WriteDBLogFileLGWRITE,F

12、name,Ext,-,KeditAPDL主要内容APDL也像其他编程语言一样,有自己的语法特点和语法规则。其功能语句和FORTRAN语言较为接近。APDL主要包括以下内容:Ø 使用工具栏:WorkingwiththetoolbarØ 使用参数:UsingparametersØ 使用APDL数学函数和矩阵运算:UsingAPDLMathformatrixmanipulationsØ APDL作为宏语言:APDLasamacrolanguageØ 用户界面接口:InterfacingwiththeGUIØ 加密宏:Encryptingma

13、cros自定义工具栏ANSYS没有像其他软件一样的工具图标,但是可以把一些经常用的功能通过自定义按钮的方式添加到Toolbar里面。主要用到了*ABBR(Abbreviation的缩写)命令,其格式为*ABBR,按钮上的标签名称,按钮调用的命令或宏的名称<代码>!ANSYSTOOLBAR工具快捷按钮byTAOLEI!-!说明:通过在界面上增加常用按钮,快速完成相应功能,输入这些命令后,更新工具栏就可以了!也可以修改ansysv100v100ANSYSapdlstart110.ans文件(ANSYS11.0)(ansys11,其它版本也有相应的文件)!ANSYS14.5版本路径ANS

14、YSIncv145ansysapdlstart145.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,L_PLOT,LPLOT*ABBR,K_PLOT,KPLOT*ABBR,N_SEL,NSEL,P*ABBR,E_SEL,ESEL,P*ABBR,MAT_NUM,/PNUM,MAT,1*ABBR,REAL_NUM,/PNUM,REA

15、L,1*ABBR,TYPE_NUM,/PNUM,TYPE,1*ABBR,NO_NUM,/PNUM,DEFA*ABBR,BE,ALLSEL,BELOW,ELEM*ABBR,BV,ALLSEL,BELOW,VOLU*ABBR,BA,ALLSEL,BELOW,AREA*ABBR,BL,ALLSEL,BELOW,LINE*ABBR,CONFIG,/CONFIG,NRES,20000*ABBR,WPS,WPSTYL,DEFA*ABBR,PARAME,*STATUS*ABBR,VGLUE,VGLUE,ALL*ABBR,MERGE_ALL,NUMMRG,ALL,LOW*ABBR,COMP_ALL,NUMCM

16、P,ALL*ABBR,MOVE_WK,KWPAVE,P*ABBR,ALIGN_WK,KWPLAN,-1,P*ABBR,CALC,/SYS,CALC.EXE*ABBR,UNDO,UNDO/GO!恢复语句写入log文件使用参数参数指的是变量。即能够代表数据、字符或者数组的自定义名称。例如,一个长方体的几何属性,可以用长宽高这几个参数来描述。为形象、简便的表述这几个参数,常用length、width和hight变量指代其具体数值。ANSYS变量类型分为:数值、字符和表三种类型。其中,数值包含两种类型的参数:标量和数组。所有数值变量(整形或实形)都以双精度数储存。被使用但未声明的参数都被赋一个接近0的

17、值,或"极小值",大约为2100。例如,若参数A被定义为A=B,但B没被定义,则赋给A一个极小值。ANSYS包含两种类型的参数:标量和数组。变量命名ANSYS的变量由不超过8个字符的字母、数字和下划线组成,且变量只能以字母开头。例如ABC、PI、A_1等为合法变量,而M&E、VALUE_ABC、3M_为非法变量。同时,定义ANSYS变量时要注意以下几点:1. 不能与ANSYS表示字相同,例如自由度(DOF)标识字(TEMP,UX,PRES等);常用标识字(ALL,PICK,STAT等);用户定义标识字(如用ETABLE命令定义的标识字);数组类型标识字(如CHAR,

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

19、M=(X2-X1)*2-(Y2-Y1)*2)/2!变量定义查看和删除定义好的变量可以整体显示或者查看,也可以重新赋值和删除用*STATUS命令把定义的变量排列显示出来字符和数值型变量可以通过parameters->scalarparameters查看、修改和删除数值型数组变量的值通过Parameters->ARRAYParameters->definearray查看、修改和删除清除变量值*set,AA或AA=删除某个变量可以用*del*del,AA*del,all删除所有变量参数保存和恢复如果要在其他ANSYS任务中使用当前定义的参数,可以先把它们写入一个文件中,然后读取(恢

20、复)该文件。读取文件时,可以全部代替当前定义的参数,也可以只把它们加到当前定义的参数中(会覆盖已存在的参数)。可用PARSAV命令把参数写入一个文件中(UtilityMenu>Parameters>SaveParameters)。参数文件是ASCII文件,主要由APDL*SET命令组成,该命令用来定义各种参数。可用PARRES命令从一个文件中读取参数(UtilityMenu>Parameters>RestoreParameters)。字符变量的用法暂无数组初步数组是ANSYS非常实用有效的数据存储和运算工具。其定义方法与普通变量略有差别。ANSYS中数组包括数值型、字符

21、型和表三种类型的数组。下面分别是三种数组的定义方法。一般格式*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其中数值型和字符型数组,下标为整数,行列面的起始下标均为1,而TABLE的下标为大于等于0的实数或整数。数组赋值1)利用*set命令或“=”给单个或多个数组元素赋值与scala

22、r变量赋值是格式相同。2)利用*set或“=”赋值时,赋值对象为第一个元素名,赋值数据是一个列矢量,赋值结果是按列下标递增顺序从第一个赋值数组依次赋值。注意,一次最多只能给10个连续数组元素赋值,当只给一个元素赋值时与变量赋值完全一致。举例:(1)*DIM,A,ARRAY,12,1,1定义数组A为一个array类型,12行1列A(1)=1,2,12给每个元素赋值为其行标(2)*DIM,B,array,4,3,1定义数组B为一个array类型4行3列B(1,1)=11,21,31,41B(1,2)=12,22,32,42B(1,3)=31,32,33,43B=注意此赋值的下标!对于二维数组,赋值

23、顺序按照列进行赋值,注意此规律。三维也是一样的。(3)*DIM,C,char,4,1,1C(1)=a,b,c,dANSYS*get命令和查询函数*get命令ANSYS*get(UtilityMenu>Parameters>GetScalarData)命令可以返回一些值并存储在一个变量或者数组中。例如通过*GET,node1x,NODE,1,LOC,X可以获得节点1的X坐标,并存储在变量node1x中,其GUI操作如下:*get命令调用的格式如下*GET,Par,Entity,ENTNUM,Item1,IT1NUM,Item2,IT2NUM这里l Par是将被赋值的参数名;l Ent

24、ity是被提取项目的关键词,有效的关键词是NODE,ELEM,KP,LINE,AREA,VOLU等。l ENTNUM是实体的编号(若为0指全部实体);l Item1是指某个指定实体的项目名。例如,如果Entity是ELEM,那么Item1要么是NUM(选择集中的最大或最小的单元编号),要么是COUNT(选择集中的单元数目)。在ANSYSCommandsReference(ANSYS命令参考手册)中的*GET部分对每种实体的Item1值有完整的说明。帮助路径为/CommandReference/VIII.GCommands/*GET可以把*GET命令看成是对一种树型结构从上至下的路径搜索,即从一

25、般到特殊的确定。可用下面的例子来说明*GET命令的用法。下面的第一条命令用于获得单元97的材料属性(MAT参考号)并赋给单元BCD:*GET,BCD,ELEM,97,ATTR,MAT!BCD=单元97的材料号*GET,V37,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=得到这些节点中编号最小的节点

26、号正如*GET从数据库获取标量数据,可以用*VGET获取数组信息或UtilityMenu>Parameters>GetArrayData先定义数组,然后获取数据例如:*dim,dispval,array,20,3!20×3array*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查询函数(Inquiry Function)在ANSYS操作过程或条件语句中,

27、常常需要知道有关模型的许多参数值,如选择集中的单元数、节点数,最大节点号等。此时,一般可通过*GET命令来获得这些参数。现在,对于此类问题,我们有了一个更为方便的选择,那就是查询函数 Inquiry Function。Inquiry Function类似于ANSYS的 *GET 命令,它访问ANSYS数据库并返回要查询的数值,方便后续使用。ANSYS每执行一次查询函数,便查询一次数据库,并用查询值替代该查询函数。假如你想获得当前所选择的单元数,并把它作为*DO循环的上界。传统的方法是使用*GET命令来获得所选择的单元数并把它赋给一个变量,则此变量可以作为*DO循环的上界来确定循环的次数*get

28、, ELMAX,elem,count*do, I, 1, ELMAX*enddo现在你可以使用查询函数来完成这件事,把查询函数直接放在*DO循环内,它就可以提供所选择的单元数*do, I, ELMIQR(0,13)*enddo这里的ELMIQR并不是一个数组,而是一个查询函数,它返回的是现在所选择的单元数。括弧内的数是用来确定查询函数的返回值的。第一个数是用来标识你所想查询的特定实体(如单元、节点、线、面号等等),括弧内的第二个数是用来确定查询函数返回值的类型的(如选择状态、实体数量等)。同本例一样,通常查询函数有两个变量,但也有一些查询函数只有一个变量,而有的却有三个变量。ANSYS提供了许

29、多类似的查询函数,下面举一个例子,其它常用查询函数可以在帮助中查询。NODEndinqr(node,key)node节点号,对于key=12,13,14为0key标识关于node的返回信息=1, 选择状态=12,定义的数目=13,选择的数目=14,定义的最大数=-2,超单元标记=-3,主自由度=-4,激活的自由度=-5,附着的实体模型ndinqr(node,key)的返回值对于key=1=-1,未选择=0,未定义=1, 选择系统信息查询函数/INQUIRE要获得当前系统时间、ANSYS工作目录、文件信息、系统时间等参数使用/INQUIRE命令。格式为:/INQUIRE, StrArray, F

30、UNCStrArray:将接受返回值的字符数组参数名FUNC:指定系统信息返回的类型参考目录:/ Command Reference / X. I Commands / /INQUIRE 内嵌获取函数的用法对于某些信息,除了使用*get命令获取外,可以通过ANSYS内嵌的获取函数来获得信息。主要分成两类,一般函数和数学函数。例如Node1x=NX(1)!节点1在当前激活坐标系中的x坐标值与上面的*GET,node1x,NODE,1,LOC,X!等价可以看出,此类函数比*get的用法更加简洁和明确同样,ANSYS提供了一些常用的数学函数,比如三角函数,取整,取余等。ABS(x)SIGN(x,y)

31、CXABS(x,y)EXP(x)LOG(x)LOG10(x)SQRT(x)NINT(x)MOD(x,y)RAND(x,y)GDIS(x,y)SIN(x),COS(x),TAN(x)*AFUN.ASIN(x),ACOS(x),ATAN(x)ATAN2(y,x)VALCHR(CPARM)CHRVAL(PARM)UPCASECPARMLWCASE(CPARM)查询这些函数在ANSYS14.5中的路径为/ANSYSParametricDesignLanguageGuide/B.GETFunctionSummary宏什么是APDL宏APDL最强有力的特征之一是创建宏的能力,使用宏能减少工作量并提高分析效

32、率,宏带给开发者高效和惊喜,使你的成就感升华到最大限度。那么什么是惊喜,什么是宏?简单来说宏是把多条命令组合后自定义成一个新命令,以后只要键入这条命令就实现多条命令的效果。类似其它语言中的函数。例如,多次用到如下操作:生成一个尺寸为4,3,2的长方形块和一个半径为1的球体。然后,从块的一个角处减去球体。其基本命令流为:/prep7/view,-1,-2,-3block,4,3,2sphere,1vsbv,1,2finish把这段命令流保存在文本文档中,并命名为mymacro.mac,就可以通过*use,mymacro或mymacro来执行。宏定义常用宏功能:l 它可以如同ANSYS命令一样具有

33、变量l 分支和循环用来控制一系列命令l 交互式特征如图形拾取,提示,以及对话框宏可以嵌套一个宏引用第二个宏,第二个宏引用第三个宏,等等一直可嵌套20级,其中包括由ANSYS/INPUT命令引起的任何文件转换。每一次嵌套的宏执行完毕后,ANSYS程序仍置于前一个宏的控制之下命名一个宏时需要注意以下几点:l 宏不能与已经存在的ANSYS命令同名l 文件名不能超过32个字符;l 文件名不能以数字开头;l 文件扩展名不能超过8个字符(如果想和执行ANSYS命令一样执行宏,该宏的扩展名应为.mac);l 文件名或文件扩展名中不能包含空格;l 文件名或文件扩展名不能包含任何被当前文件系统禁止使用的字符,为

34、了更好的移置性,还不能包含任何被UNIX或Windows文件系统禁止使用的字符。在ANSYS中可以通过三种途径来生成宏:l在输入窗口执行*CREATE命令。参数的值不确定,参数名被写入文件中。l使用*CFOPEN,*CFWRITE,和*CFCLOS命令。参数名被其当前值取代,值被写入文件中。l选择UtilityMenu>Macro>CreateMacro菜单项。该方法打开一个可作为简单的多行编辑器的对话框来生成宏。参数的值不确定,参数名被写入文件中。图GUI方式创建宏宏的搜索路径(宏在何放)保存宏的位置可能影响到宏能否正确执行,一般地,ANSYS按如下缺省路径搜索用户生成的宏(.m

35、ac扩展名):² 1.ANSYS的/ansys_inc/v145/ansys/apdl目录;² 在ANSYSMACROLIB环境变量中定义的路径;² 在WINDOWS系统中的注册路径;² 当前工作目录。如果在上级路径和下级路径同时寻找到同样的文件名,则采用上级路径带参数的宏再以前面的宏为例,如果长方体和球的尺寸每次都要改变,需要不断的修改定义的宏吗?答案是可以使用参数减少工作量。通过特殊的字符名,你可以创建多达19个参数的宏,这个特殊的字符名指通过ARG1、ARG2ARG19来接收传递的具体参数。例如,通过ARG1,ARG2,ARG3,ARG44个变量传

36、递长方体和球的具体尺寸,宏编写如下:/prep7/view,-1,-2,-3block,arg1,arg2,arg3sphere,arg4vsbv,1,2finish按如下方式运行该宏:mymacro,4,3,2.2,1参数如同标准的ANSYS命令中的参数,可以为:l 数字l 字符(被包括在单引号中,不超过8个字符)l 参数(标量或数组)l 参数表达式参数的意义由所定义的宏来决定宏库(宏的家园)宏库顾名思义就是存放宏的库,可以把多个宏集中放在一个文件中,减少宏文件数量,方便管理。其类似其它语言的函数库文件。宏库文件没有明确的文件扩展名,若有,不能超过8个字符。我以前采用了.AML这样一个后缀名

37、。其文件名的命名规则和宏文件一样。宏库文件的结构为:MACRONAME1!宏名1ANSYS语句!具体命令行/EOF!宏1结束退出宏MACRONAME2!宏名2ANSYS语句!具体命令行/EOF!宏2结束退出宏MACRONAME3!宏名3ANSYS语句!具体命令行/EOF!宏3结束退出宏注意:宏库中有效代码中不能存在空行,不能有整行的注释语句。每个宏以/EOF结束。可以在每行语句后或宏库最末写注释。使用宏库及其中的宏当宏命令包含在宏库文件时,在执行宏命令前必须先打开宏库文件。使用“*ulib,mymacros,mlib,/myaccount/macros/”来打开宏库文件,mymacros为宏库

38、文件名,mlib为扩展名,/myaccount/macros/为宏库文件所在的路径。在打开宏库文件后,只能用*use命令来执行宏库文件包含的宏命令,不能再用*use命令来执行单独位于宏文件中的宏命令。可以用不带任何参数的*ulib命令来关闭宏库文件后,再用*use命令来执行单独位于宏文件中的宏命令。控制语句APDL的流程控制是一个难点,也是精髓所在。APDL提供了大量的控制程序的命令,通过这些命令对于判断、重复等很有用处,包括:1、调用子程序(宏);2、宏内的无条件转移3、宏内的条件转移;4、重复命令、增加命令或者若干命令参量;5、命令的循环。最主要的是分支语句和循环语句。条件转移:IFTHE

39、NELSE结构无条件转移:*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其中,lVAL1是比较的第一个数值(或数字参数);lOper是比较运算符;lVAL2是比较的第二个数值(或数字参数);l若比较的值为真,则执行Base指定的操作。Oper项,比较运算可能

40、是以下八种(x,y为需要比较的参数):VAL1,EQ,VAL2!等于(VAL1=VAL2);VAL1,NE,VAL2!不等于(VAL1#VAL2).VAL1,LT,VAL2!小于(VAL1<VAL2).VAL1,GT,VAL2!大于(VAL1>VAL2).VAL1,LE,VAL2LE!小于或等于(VAL1vVAL2).VAL1,GE,VAL2!大于或等于(forVAL1>=VAL2).VAL1,ABLT,VAL2!绝对值小于VAL1,ABGT,VAL2!绝对值大于BASE的命令为THEN*STOP*EXIT*CYCLE通过给Base变量赋值THEN,*IF命令就变成了if-t

41、hen-else结构(和FORTRAN中的该结构类似)的开始。该结构包括:l一个*IF命令,接下来是l一个或多个*ELSEIF命令选项l一个*ELSE命令选项l一个必需的*ENDIF命令,标识字该结构的结束。在最简单的形式中,*IF命令判断比较的值,若为真,则转向Base变量所指定的标识字处。结合一些*IF命令,将能得到和其它编程语言中CASE语句相同的功能。注意,不要转向某个位于if-then-else结构或do循环中的带标识字的行。通过给Base变量赋值STOP,可以离开ANSYS。if-then-else结构仅仅判断条件并执行接下来的程序体或跳到*ENDIF命令的下一条语句处(用&quo

42、t;Continue"注释表示):注意可以在if-then-else结构中执行/CLEAR命令。/CLEAR命令不会清除*IF堆栈,*IF层的号码仍然保留。必须用*ENDIF来结束分支。同时,要记住/CLEAR命令会删除所有的参数,包括在分支命令中使用的任何参数。为避免由于删除参数而引发问题,可以在/CLEAR命令前运行/PARSAV命令,然后在/CLEAR命令后立刻运行/PARRES命令。无条件转移最简单的转向命令-*GO-指示程序转到某个指定标识字行处,不执行中间的任何命令。程序继续从该指定标识字行处开始执行。例如:*GO,:BRANCH1-!这个程序体被跳过(不执行)-:BRA

43、NCH1-由*GO命令指定的标识字必须以冒号(:)开头,并不能超过8个字符(包括冒号)。该标识字可位于同一文件中的任何地方。注意不鼓励使用*GO命令。最好使用其它的分支命令来控制程序流。循环语句*REPEAT命令是最简单的循环命令,通过它可以直接按指定的次数执行上一条命令,并按常数增加命令所带参数。例如:E,1,2*REPEAT,5,0,1E命令在节点1和2之间生成一个单元,*REPEAT命令指示执行E命令5次(包括最初的一次),每执行一次第二个节点号加1。结果共生成5个单元:1-2,1-3,1-4,1-5,和1-6。注意大多数以斜线(/)或星号(*)开头的命令,以及扩展名不是.mac的宏,都

44、不可以重复调用。但是,以斜线(/)开头的图形命令可以重复调用。同时,要避免对交互式命令使用*REPEAT命令,诸如那些需要拾取或需要用户响应的命令。do循环允许按指定的次数循环执行一系列的命令。*DO和*ENDDO命令分别是循环开始和结束点的标识字。下面的do循环例子读取5个载荷步文件(从1到5)并对5个文件做了同样的更改:*DO,I,1,5!I=1ot5;LSREAD,I!读取载荷步文件IOUTPR,ALL,NONE!改变输出控制ERESX,NOLSWRITE,I!重写载荷步文件I*ENDDO也可以通过使用*IF,*EXIT,或*CYCLE命令来丰富自己的循环控制。在构造do循环时,要遵循以

45、下原则:l 不要通过在*IF或*GO命令中带有:Label来从do循环结构中跳出;l 不要在do循环结构中用:Label来跳到另外一行语句。可以用if-then-else-endif结构来代替;l 在do循环结构中,第一次循环后,自动禁止命令结果输出。如果想得到所有循环的结果输出,就在do循环结构中使用/GOPR或/GO(无响应行)命令。l 在do循环结构中使用/CLEAR命令要特别小心。/CLEAR命令不会清除do循环堆栈,但是它会删除所有的参数,包括在本身的*DO语句中的循环参数。为避免由此引发的循环l 值未定义的问题,可以在/CLEAR命令前运行/PARSAV命令,然后执行/CLEAR命

46、令和/PARRES命令。GUI交互在一个ANSYS宏中,可以通过许多方法去访问ANSYS图形用户界面(GUI)的组件可以改变和更新ANSYS工具条;可以通过*ASK命令提示用户输入某个参数的值;可以生成对话框提示用户输入多个参数的值;可以通过*MSG命令让宏写一条输出信息;可以让宏更新或移走状态条;可以允许用户在宏中通过图形拾取选择实体;可以调用任何对话框。通过在宏中包含*ASK命令,该宏就可以提示用户输入某个参数的值。*ASK命令的格式为:*ASK,Par,Query,DVAL多个参数输入时,可采用multipro命令。MULTIPRO命令可以构造一个简单的多行提示对话框,该对话框最多可以包

47、含10个参数提示。该命令允许使用UIDL中的*CSET命令来产生提示,并为每个提示指定缺省值。MULTIPRO命令必须和以下命令一同使用:1-10个*CSET命令;最多两个允许用户输入两行内容的*CSET命令。该命令语法为:MULTIPRO,'start',Prompt_Num*CSET,Strt_Loc,End_Loc,Param_Name,'Prompt_String',Def_ValueMULTIPRO,'end'其中:'start'文字串,作为第一个参数,标识字MULTIPRO结构的开始。必须括在单引号中。Prompt_N

48、um至少有一个*CSET命令省略了Def_Value参数或Def_Value设为0,才必须用到该参数。该参数为整形数,等于接下来的*CSET提示的数目。Strt_Loc,End_Loc对第一个*CSET命令,Strt_Loc参数的初始值为1。End_Loc的值为Strt_Loc+2(对第一个*CSET命令,值为3)。以后Strt_Loc的值为End_Loc+1。Param_Name参数名,用来存储用户输入的值。若用户没有输入,其值为Def_Value的值。'Prompt_String'字符串,最多可包含32个字符,用来描述参数。必须括在单引号中。'end'文字串

49、,用来结束MULTIPRO命令。各种语言的含义解释性语言的定义:解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低。现代解释性语言通常把源程序编译成中间代码,然后用解释器把中间代码一条条翻译成目标机器代码,一条条执行。编译性语言的定义:编译性语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。脚本语言的定义:脚本语言(Scri

50、ptlanguage,scriptinglanguage,scriptingprogramminglanguage)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。脚本语言一般都有相应的脚本引擎来解释执行。他们一般需要解释器才能运行。一个脚本通常是解释运行而非编译。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让程序员快速完成程序的编写工作。而宏语言则可视为脚本语言的分支,两者也有实质上的相同之处。解释性语言:Java、JavaScript、Perl、Python、Ruby、MATLAB等。编译性语言:C/C+、Pasca

51、l/ObjectPascal(Delphi)脚本语言:Python、JAVASCRIPT,ASP,PHP,PERL等编写命令流的良好习惯1、设计规划就像ANSYS的各个模块一样,规划好自己的代码流程,分成模块,比如参数定义和输入模块,建模,加载,求解,后处理等。重复用到的模块,考虑写成宏文件。规划得越详细,模块分工越明确,越容易明白下一步该做什么,这好比搭积木的游戏,你可以把你的积木块组合成各种各样的形状,但首先要熟悉每个积木块的功能。2、有备无患复杂的分析编写命令流之前,先找出难点所在,逐一克服难点,整体编写时就无压力了。如无法确定遇到的困难,可由最简单功能开始实现,慢慢加深,实现自己的目的

52、。常用的代码就留存,随时拷贝修改成为自己的代码。3、见名知意程序再小,用的变量也不会少,变量起名应当见名知意是个老话题了,好处是显而易见的。4、对称之美中国人讲究对称之美,用在编程里也很合适,如果程序里用到A循环嵌套B判断,B判断又包含C循环之类的结构,记着使用缩进法,让A:ENDDO对齐A:DO,B:ENDIF对齐B:IF诸如此类,依次缩进,总之对称就等于美观加易读。5、多加注解对代码中定义的变量、宏、以及功能的添加注释说明,别嫌麻烦。如果过了三月五月,连自己写的东西都看不明白了,那才大麻烦。6、注重通用编写的东西尽量可以在以后使用到,这就需要能用参数表达的值尽量改用参数。可以带入或需要修改

53、的部分尽量集中。有用的东西整理一些常用符号连接符号$一般每行只写一条命令,$是把两行或者是多行命令流连接为一行的符号。k,4.02,5.5$k,4.9,3.85$k,4.9,0强制转化符号%把字符参数名括在两个百分号%中可以实现强制替换,主要目的是实现在字符串中插入变化的子字符串。StrTitle='Model1'/TITLE,Thisis%StrTitle%/REPLOTStrTitle='Model2'/TITLE,Thisis%StrTitle%/REPLOT在任何命令名域作为命令名。也可在域1中作为一个"未知命令"的宏名。例如:R=&

54、#39;RESUME'%R%,MODEL,DB字符、数字混合替换例子某变量由文件名+序号+扩展名组成,如FN='TEST1.DAT'FILENAME='TEST'NO=1FN='%FILENAME%NO%.DAT'得到的参数为FN='TEST1.DAT'参数与数据文件的写出与读入基本用法ANSYS的参数或数组通常使用*VWRITE命令输出到文件中以便查看和处理。其命令格式为*VWRITE,Par1,Par2,Par3Par19共可以输出19个参数(10个数组)或者常量使用该命令需要注意:1. 使用*VWrite命令把数据输

55、出到文件时,必须要使用*CFOpen命令事先打开一个文件;*CFOpen命令必须和*CFClos命令配对使用。2. *VWRITE这个命令只能通过file->readinputfrom.实现,不能在窗口输入执行。3. *Vwrite命令后面必须紧跟输出格式说明;例如:*Vwrite,a,b,c(格式说明)4. 格式说明中Fw.d,w的数值不能太小,以至于输出的数据丢失了整数部分的精度;例如:a=123.4,Fw.d中的w至少要为5,否则在ANSYS中运行时报错;这样的非语法类错误,很难发现;为了避免此类错误发生,w应该至少设置为输出数据的所有数字个数1(小数点)常用格式说明:1.''(一对单引号):用于在输出

温馨提示

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

最新文档

评论

0/150

提交评论