ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:207.77KB ,
资源ID:4197149      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4197149.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ansys编程语言.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ansys编程语言.docx

1、ansys编程语言3.11.7 写数据文件可以通过*VWRITE命令把数组中的数据写到格式化(表格式)的数据文件中。该命令最多可带有10个数组向量作为参数,并把这些向量中包含的数据写入当前打开的文件(*CFOPEN 命令)中。每个向量的格式由*VWRITE命令后紧接的FORTRAN 77数据描述符确定(因此不能从ANSYS输入窗口执行该命令)。数组向量要指定起始元素位置(如MYARRAY(1,2,1)。可以用表达式来计算数据文件中每一行的位置。关键词SEQU将从1开始写一个连续的整数列。数据文件中每一行的格式由数据描述符决定。命令的每一个参数都要带有一个描述符。在描述符行不要有FORMAT这个

2、词。可以使用实数格式或字符格式描述符,不能使用整形或直接列表描述符。3.11.7.1 数据格式描述符若对FORTRAN的数据描述符不熟悉,本部分将从头说明如何格式化数据文件。要获得更多的信息,请参阅FORTRAN 77编译器文件。一定要给*VWRITE命令所带参数中的每一个数据项提供一个数据描述符。通常地,对任何数字值都可以采用F描述符(浮点数)。F描述符的语法为:Fw.d 其中,w指数据宽度,d 指小数点右边的阿拉伯数字的个数。因此,对于一个共有10个阿拉伯数字且小数点后有8个阿拉伯数字的数据,将采用如下描述符:F10.8对于字符数据,可以采用A描述符。A描述符的语法为:Aw 其中,w 指数

3、据宽度。因此,因此,对于一个共有8个字符的字符数据,将采用如下描述符:A8下面的例子说明如何使用*VWRITE命令和数据描述符:给定数组MYDATA为下面的宏首先定义一个标量参数 X为25,然后打开文件vector (*CFOPEN 命令)。然后使用*VWRITE命令定义将要写入文件中的数据,写入的第一个向量采用SEQU关键词来提供行数。注意,在某些情况下,常数、标量参数和包含数组元素值的操作也可以写入文件中。x=25*cfopen,vector*vwrite,SEQU,mydata(1,1,1),mydata(1,2,1),mydata(1,3,1),10.2,x,mydata(1,1,1)

4、+3(F3.0, ,F8.4, ,F8.1, F8.6, ,F4.1, F4.0, F8.1)*cfclos该宏将生成如下的数据文件: 1. 2.1522 3.9 5.286370 10.2 25. 5.2 2. 2.3049 4.0 5.409196 10.2 25. 5.2 3. 2.0105 3.4 5.936638 10.2 25. 5.2 4. 2.3683 3.3 5.632203 10.2 25. 5.2 5. 2.8491 4.8 5.978024 10.2 25. 5.2 6. 2.2280 3.5 5.546851 10.2 25. 5.2下面的例子使用如下定义的数组注意接

5、下来的*VWRITE命令中数据描述符的用法:*vwrite,SEQU,mydata(1,1),mydata(1,2),(mydata1(1,1)+mydata1(1,2)( Row,F3.0, contains ,2F7.3,. Is their sum ,F7.3, ?)结果数据文件为:Row 1. contains 10.000 50.000. Is their sum 60.000 ?Row 2. contains 20.000 60.000. Is their sum 60.000 ?Row 3. contains 30.000 70.000. Is their sum 60.000

6、?3.11.8 对数组参数的运算同参数表达式和函数允许对标量参数进行运算一样,也有一系列的命令可以对数组参数进行运算。这种运算可分为以下几类:对列(向量)的运算,矢量运算和完整矩阵(数组)的运算,矩阵运算。所有的运算都受到一套ANSYS规定命令的影响,这一部分详见3.11.8.3。3.11.8.1 对向量的运算对向量的运算就是按某种顺序对数组元素进行一系列的诸如加、减、求正弦、求余弦、点积、叉乘等运算。虽然可以通过采用Do循环(见4.5.5部分)来达到这一目的,但是更为简便快捷的方法是采用向量操作命令-*VOPER, *VFUN, *VSCFUN, *VITRP, *VFILL, *VREAD

7、, 和 *VGET。在这些命令中,只有*VREAD 和*VWRITE对字符数组参数有效,其余的只能用于ARRAY类型或TABLE 类型(由*DIM定义)的数组参数。*VFILL, *VREAD, *VGET, *VWRITE, 和 *DIM命令在本章中已经介绍过了,本部分要讨论的其它命令包括:*VOPER 或 Utility MenuParametersArray OperationsVector Operations 对两个输入数组向量进行运算,输出一个数组向量。*VFUN 或 Utility MenuParametersArray OperationsVector Functions 对两

8、个输入数组向量执行某函数,输出一个数组向量。*VSCFUN 或 Utility MenuParametersArray OperationsVector-Scalar Func 确定单个输入数组矢量属性,并将结果存放到指定的标量参数中。*VITRP或 Utility MenuParametersArray OperationsVector Interpolate 通过在指定的表下标位置插入一个数组参数(TABLE类型)来生成一个数组参数(ARRAY类型)。下面的例子说明了这些命令的用法。查阅ANSYS 命令参考手册(ANSYS Commands Reference)可以得到关于这些命令的语法。

9、在下面的例子中,数组参数(ARRAY类型) X, Y, 和THET定义为:首先定义结果数组为 Z1。然后,*VOPER命令把X的第2列和Y的第1列相加,二者都从第一行开始,然后把结果赋给Z1。注意,对所有的数组参数都要指定起始位置(行和列的下标数)。*DIM,Z1,ARRAY,4 *VOPER,Z1(1),X(1,2),ADD,Y(1,1) 在下一个例子中,同样首先定义结果数组为 Z2。然后,*VOPER命令把X的第1列(从行2开始)和Y的第1列(从行1开始)相乘,然后把结果赋给Z2(从行1开始)。*DIM,Z2,ARRAY,3 *VOPER,Z2(1),X(2,1),MULT,Y(1,4)

10、在这个例子中,同样首先定义结果数组为 Z4。然后,*VOPER命令计算四对向量的点积,一对为X和Y的1行。这些矢量的i, j, 和 k分量依次是X的列1, 2,和3 以及Y的列2, 3,和4。结果将写进Z4,它的i, j和k分量分别是矢量1, 2,和3。 *DIM,Z4,ARRAY,4,3 *VOPER,Z4(1,1),X(1,1),CROSS,Y(1,2)在下一个例子中,同样首先定义结果数组为A3。然后,*VFUN命令把X的第2列中的每个元素平方后赋给A3。*DIM,A3,ARRAY,4 *VFUN,A3(1),PWR,X(1,2),2 在下一个例子中,同样首先定义结果数组为A4。然后,两个

11、*VFUN命令分别计算THETA中的数组元素的余弦和正弦值,并分别赋给A4中的第一和第二列。注意,现在的A4表示一个由7个点(其x, y, z的全局坐标就是那三个向量)描述的90度的圆弧。该圆弧半径为1.0,并在z = 2.0且与x-y平行的平面上。*DIM,A4,ARRAY,7,3*AFUN,DEG *VFUN,A4(1,1),COS,THETA(1) *VFUN,A4(1,2),SIN,THETA(1) A4(1,3)=2,2,2,2,2,2,2 在下一个例子中,同样首先定义结果数组为A5。然后,*VFUN命令计算A4所表示的曲线在每个点处的切线向量,并进行归一化处理后赋给A5。*DIM,

12、A5,ARRAY,7,3 *VFUN,A5(1,1),TANG,A4(1,1) 两个附加的*VOPER运算-积聚(GATH)和分散(SCAT)-可用于根据在一个“位置”向量中包含的位置号从一个向量中拷贝值到另一个向量。下面的例子说明了积聚运算。注意,结果数组总是预先定义。在这个例子中,积聚运算拷贝B1的值到B3(通过在B2中指定的下标位置)。注意,B3中的最后一个元素为0,是其初始化值。*DIM,B1,4*DIM,B2,3 *DIM,B3,4B1(1)=10,20,30,40 B2(1)=2,4,1 *VOPER,B3(1),B1(1),GATH,B2(1) 3.11.8.2 矩阵运算矩阵运算

13、是一种数字数组参数之间的数学运算,例如矩阵乘法、计算转置矩阵、求解联立方程组等。本部分将要讨论的命令包括:*MOPER 或 Utility MenuParametersArray OperationsMatrix Operations 对两个输入数组参数矩阵进行矩阵运算,输出一个数组参数矩阵。矩阵运算包括: 矩阵相乘; 求解联立方程组; 对矩阵中的某个指定向量排序(按上升顺序); 计算两个向量之间的协方差; 计算两个向量之间的相关性;*MFUN 或 Utility MenuParametersArray OperationsMatrix Functions 拷贝或转置一个数组参数矩阵(接受一个

14、输入矩阵,生成一个输出矩阵)。*MFOURI 或 Utility MenuParametersArray OperationsMatrix Fourier 计算傅立叶级数的系数或求傅立叶级数。下面的例子用来说明这些命令的用法。查阅ANSYS 命令参考手册(ANSYS Commands Reference)可以得到关于这些命令的语法。这个例子说明了*MOPER命令的排序功能。假定数组(SORTDATA)被定义如下:首先,定义数组OLDORDER,*MOPER命令将把行的初始顺序放在OLDORDER中。然后,*MOPER 命令对SORTDATA中的行进行排序,这样1,1向量就按升序排列了。*dim

15、,oldorder,5*moper,oldorder(1),sortdata(1,1),sort,sortdata(1,1)得到的结果数组为: 若要恢复 SORTDATA数组为初始顺序,那么就要执行下面的命令:*moper,oldorder(1),sortdata(1,1),sort,oldorder(1,1)在下面的例子中,*MOPER命令用来求解联立方程组。两个数组定义如下:*MOPER 命令可以用于求解联立方程组组成的方阵,方程组采用如下形式:*MOPER 命令求解的联立方程组为:要求解以上方程组,首先定义结果数组C。然后,用*MOPER命令求解方程组,用A作为系数矩阵,B作为b值组成的

16、向量。*DIM,C,4*MOPER,C(1),A(1,1),SOLV,B(1)C数组中的结果为:接下来的例子说明如何使用*MFUN命令来转置数组中的数据。在这个例子中,假定数组DATA预先定义为:同样地,首先定义结果数组DATATRAN。然后,用*MFUN命令转置数据并把结果写入DATATRAN数组。*DIM,DATATRAN,2,3*MFUN,DATATRAN(1,1),TRAN,DATA(1,1)DATATRAN数组中的结果为:3.11.8.3 用于向量和矩阵运算的命令所有向量和矩阵运算命令都受到下面这些命令的影响:*VCUM, *VABS, *VFACT, *VLEN, *VCOL, 和

17、*VMASK. (在所有命令中,只有*VLEN 和 *VMASK,与*VREAD或 *VWRITE连用时,对字符数组参数有效)。可以通过*VSTAT命令来查看这些命令的状态。这些命令中的绝大多数(及其相应的GUI路径)在本章中已经介绍过了,接下来将介绍剩下的命令。除*VSTAT命令之外,下面将要介绍的其它所有的命令都可以通过菜单Utility MenuParametersArray OperationsOperation Settings得到。注意每次执行向量或矩阵运算之后,所有规定命令都将重置为缺省设置。下面列出有效的数组规定命令:*VCUM 指定结果累积或不累积(覆盖已有结果)。ParR为

18、向量运算的结果,要么被加入一个已存在的同名参数中,要么被覆盖。缺省为不累积结果,即ParR覆盖掉已存在的同名参数。*VABS 使向量运算中的某个或所有参数取绝对值。缺省为实数值。*VFACT 对向量运算中的某个或所有参数乘以一个比例因子。比例因子缺省为1.0。*VCOL 指定矩阵运算中列的数目。缺省为从指定起始处填满结果数组的所有位置。*VSTAT 列出数组参数的当前状态。*VLEN 或Utility MenuParametersArray OperationsOperation Settings 指定数组参数运算中被用到的行的数目。*VMASK 或 Utility MenuParameter

19、sArray OperationsOperation Settings 指定某个数组作为屏蔽向量。下表列出了各类规定命令及其影响到的向量和矩阵运算命令:*VABS*VFACT*VCUM*VCOL*VLEN NROW,NINC*VMASK*MFOURINoNoNoN/ANoNoNo*MFUNYesYesYesNoYesNoYes*MOPERYesYesYesNoYesNoYes*VFILLYesYesYesN/AYesYesYes*VFUNYesYesYesN/AYesYesYes*VGETYesYesYesN/AYesYesYes*VITRPYesYesYesN/AYesYesYes*VOPE

20、RYesYesYesN/AYesYesYes*VPLOTNoNoN/AN/AYesYesYes*VPUTYesYesNoN/AYesYesYes*VREADYesYesYesN/AYesYesYes*VSCFUNYesYesYesN/AYesYesYes*VWRITENoNoN/AN/AYesYesYes下面的例子说明了一些规定命令的用法。查阅ANSYS 命令参考手册(ANSYS Commands Reference)可以得到关于这些命令的语法。例1 定义结果数组CMPR。然后与*VMASK和 *VLEN命令连用的两个*VFUN命令压缩选择的数据并把结果写入CMPR中的指定位置。在*VFUN

21、命令中, COMP 运算的反运算为EXPA 。*DIM,CMPR,ARRAY,4,4*VLEN,4,2 ! 每四行执行下一个*V- 运算, 每次跳过一行*VFUN,CMPR(1,2),COMP,Y(1,1)*VMASK,X(1,3) ! 使用X的列3作为下一个*V-运算的屏蔽矢量。*VFUN,CMPR(1,3),COMP,Y(1,2)例2 用*VFACT命令把数组向量中的值根据NUMDP标量参数(本例中设为2)指定的值按比例增大或缩小。NUMDATA数组定义如下:numdp=2*vfact,10*numdp*vfun,numdata(1),copy,numdata(1)*vfun,numdat

22、a(1),nint,numdata(1)*vfact,10*(-numdp)*vfun,numdata(1),copy,numdata(1)或者更简单地执行如下命令:numdp=2*vfact,10*numdp*vfun,numdata(1),copy,numdata(1)*vfact,10*(-numdp)*vfun,numdata(1),nint,numdata(1)那么,作为结果的 NUMDATA 数组为 例3 通过*VLEN 和 *VMASK命令找到小于100的素数的数目。生成数组MASKVECT时,用1.0表示该行值是素数,用0.0表示该行值不是素数。生成屏蔽向量的算法为:把所有值大

23、于1的行初始化为1.0,然后通过成倍增加因数在可能的因数范围内进行循环。*VLEN命令设置运算的行增量为FACTOR,执行*VFILL 命令时,行号根据该值增加。因为起始行是FACTOR x 2,所以每次循环中行的变化为:FACTOR x 2, FACTOR x 3, FACTOR x 4等等。*dim,maskvect,100*vfill,maskvect(2),ramp,1*do,factor,2,10,1*vlen,factor*vfill,maskvect(factor*2),ramp,0*enddo*vmask,maskvect(1)*dim,numbers,100*vfill,nu

24、mbers(1),ramp,1,1*status,numbers(1),1,10输出结果可以由*STATUS命令显示出来,NUMBERS中的前10个元素为:PARAMETER STATUS- NUMBERS ( 5 PARAMETERS DEFINED) (INCLUDING 2 INTERNAL PARAMETERS) LOCATION VALUE 1 1 1 0.000000000E+00 2 1 1 2.00000000 3 1 1 3.00000000 4 1 1 0.000000000E+00 5 1 1 5.00000000 6 1 1 0.000000000E+00 7 1 1

25、7.00000000 8 1 1 0.000000000E+00 9 1 1 0.000000000E+00 10 1 1 0.000000000E+003.11.9 用图形表示数组参数向量可以通过*VPLOT命令用图形来显示数组向量的值。接下来用例子说明*VPLOT命令的一些功能。在本例中,有两个TABLE类型数组(TABLEVAL 和 TABLE2)和一个数字数组,分别定义如下:注意,既然ARRAY类型数组的数据是无序的,那么就用柱状图表示;TABLE类型数组的数据是有序的,就用曲线表示。绘图通过下面的命令得到:*vplot,arrayval(1,1),2图 3-7 图例*vplot,ta

26、bleval(1,1),2图3-8 图例*vplot,table2(1),tableval(1,1),2图3-9 图例*vplot,tableval(1,0),tableval(1,1),2图3-10 图例第四章 作为宏语言的APDL4.1 什么是APDL宏可以在一个宏文件(有时候也被称为命令文件)中记录一个经常用到的ANSYS 命令序列。通过宏可以生成自定义的ANSYS命令。例如,在磁分析中计算由于涡流引起的功率损失时,需要在后处理中执行一系列的ANSYS命令。通过把这些命令记录到一个宏中,那么就有了一个新的命令,通过执行它可以完成该计算所需的那一系列的ANSYS命令。除了执行一系列的ANS

27、YS命令之外,宏还可以调用GUI函数或把值传递给参数。还可以对宏进行嵌套。也就是说,一个宏能调用第二个宏,第二个宏能调用第三个宏,等等。最多可嵌套20层,其中包括由ANSYS /INPUT命令引起的任何文件转换。每一次嵌套的宏执行完毕后,ANSYS程序仍置于前一个宏的控制之下。下面是一个简单的宏文件的例子。在本例中,宏生成一个尺寸为4, 3, 2的长方形块和一个半径为1的球体。然后,从块的一个角处减去球体。/prep7/view,-1,-2,-3block,4,3,2sphere,1vsbv,1,2finish假如这个宏取名为mymacro.mac,那么就可以用这样一个ANSYS命令来执行以上

28、的命令序列:*use,mymacro或 (因为扩展名为.mac) mymacro。很显然,这个宏的功能并不十分强大,但它很好地说明了宏的原理。本章提供了一些关于产生、保存和执行宏的知识。同时论述了在产生宏的过程中,必须用到的作为解释性语言的APDL的有关基本知识。4.2 产生宏可以在ANSYS中产生宏,也可以通过文本编辑器(如 emacs, vi, 或 wordpad) 产生宏。假如要生成的宏很简单,那么在ANSYS中生成就非常方便了。假如要生成一个长的复杂的宏,或者要编辑一个已经存在的宏,那么最好使用文本编辑器。而且,可以使用文本编辑器利用一个已经存在的类似的宏或ANSYS日志文件来生成自己

29、的宏。如果生成的宏既长且复杂,那么最好从一个已经存在的类似的宏着手,或者先通过交互模式完成该任务,再以生成的日志文件作为基础生成宏。这两种方法都可以大大地缩短所需耗费的时间和精力。4.2.1 宏文件命名规则宏就是保存在一个文件中的ANSYS命令序列。宏不能与已经存在的ANSYS命令同名,否则,ANSYS执行的将是内部的命令,而不是宏。下面是宏命名中所受到的限制: 文件名不能超过32个字符; 文件名不能以数字开头; 文件扩展名不能超过8个字符(如果想和执行ANSYS命令一样执行宏,该宏的扩展名应为.mac); 文件名或文件扩展名中不能包含空格; 文件名或文件扩展名不能包含任何被当前文件系统禁止使

30、用的字符,为了更好的移置性,还不能包含任何被UNIX 或 Windows文件系统禁止使用的字符。为了确保没有使用ANSYS命令名,在生成宏之前应该试着象运行ANSYS命令一样运行准备赋给宏的名称。如果ANSYS返回如下所示的消息,就可以确信在当前处理器中没有该命令。为“安全”起见,应该在每一个计划要用到的处理器中都检查一下宏文件的名称。(也可以检查宏文件名是否与在线文档中的某个命令名相同,但是该方法不能查找不在文档中的命令)图4-1 声明执行未知命令的消息框 若使用.mac作为扩展名,ANSYS将和执行内部命令一样执行该宏。扩展名.MAC用于ANSYS内部的宏,用户不能使用。4.2.2 宏的搜索路径一般地,ANSYS按如下缺省路径搜索用户生成的宏(.mac 扩展名):1. 由环境变量ANSYS_MACROLIB(如果已经定义了)指定的路径或注册路径(主目录)。该环境变量在针对各平台的ANSYS安装和配置指南(ANSYS installation and configuration guide)中有详细说明;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1