版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
APDL基础第9讲APDL基础
概述APDL是ANSYS参数化设计语言的的缩写,它是一种允许使用参数并能完成一系列任务的强大的程序语言。使用APDL可以:用参数而不是用数值输入模型尺寸,材料类型等。从ANSYS数据库中获取信息,比如节点位置或最大应力。在参数中进行数学运算,包括矢量和矩阵运算。把常用的命令或宏定义成缩写形式。建立一个宏使用if-then-else分支和do循环等来执行一系列任务。APDL基础
…概述这一章的目的是向您介绍APDL的基本功能使您能够:定义并使用标量参数从ANSYS数据库中获取信息您可以从在线帮助的APDL手册中获得更多的信息。我们将就以下问题展开讨论:A.定义参数B.利用参数C.获取数据库信息D.练习APDL基础
A.定义参数用以下格式定义参数Name=Value可以在输入窗口或标量参数对话框中输入(UtilityMenu>Parameters>ScalarParameters...)参数名不能超过8个字符。值可以是一个数值,一个以前定义过的参数,一个函数,一个参数表达式,或者一个字符串(用单引号括住)。APDL基础
...定义参数例子:inrad=2.5outrad=8.2numholes=4thick=outrad-inrade=2.7e6density=0.283bb=cos(30)pi=acos(-1)g=386massdens=density/gcircumf=2*pi*radarea=pi*r**2dist=sqrt((y2-y1)**2+(x2-x1)**2)slope=(y2-y1)/(x2-x1)theta=atan(slope)jobname=‘proj1’用*SET看有用参数列表APDL基础
...定义参数以上例子是关于标量参数的,它只有一个值—数字或者字符。ANSYS也提供数组参数,它有若干个值。数字数组和字符数组都是有效的。字符数组在本教程中不讨论。28.7-9.2-2.151.00.0xvalues=job1job2job3job4job5filnam=APDL基础
...定义参数一些命名规则:参数名不超过8个字符,并以字母开头。参数名中只能出现字母,数字和下划线。避免以下划线开头,这在ANSYS中另有它用。参数名不分大小写,如“RAD”和“Rad”是一样的。所有的参数都以大写形式存储。避免使用ANSYS标识,如STAT,DEFA,和
ALL。APDL基础
B.使用参数使用参数时,只需在对话框中或通过命令输入参数名就行了。例如,利用参数定义一个w=10,h=5的矩形,您可以使用以下菜单:Preprocessor>Create>Rectangle>By2Corners+或命令:/prep7blc4,,,w,hAPDL基础
...参数的用法注意:当使用参数时,ANSYS将立刻把参数名换为它的值。
上一个例子中的矩形将被存为10x5,而不是
wxh。也就是说,如果你在生成矩形后再改变
w或
h的值,矩形将不被修改。APDL基础
...参数的用法其它一些关于参数用法的例子:jobname=‘proj1’/filnam,jobname !作业名/prep7youngs=30e6mp,ex,1,youngs !杨氏模量force=500fk,2,fy,-force !2号关键点的力fk,6,fx,force/2 !6号关键点的力APDL基础
C.从数据库中获取信息从数据库中获取信息并给参数赋值,使用
*GET
命令或
UtilityMenu>Parameters>GetScalarData...对获取大量信息是很有用的,包括模型和结果数据,请参看*GET命令的详细资料。APDL基础
...从数据库中获取信息例子:*get,x1,node,1,loc,x !x1=节点1的x坐标[CSYS]*/post1*get,sx25,node,25,s,x !sx25=节点25的x方向应力[RSYS]**get,uz44,node,44,u,z !uz44=节点44的UZ方向的位移[RSYS]*nsort,s,eqv !对节点的vonMises应力排序*get,smax,sort,,max !smax=排序的最大值etable,vol,volu !用vol存储单元体积ssum !对单元表的列求和*get,totvol,ssum,,vol !totvol=对vol的列求和*CSYS=激活坐标系(CSYS)RSYS=激活的结果坐标系(RSYS)APDL基础
...从数据库中获取信息一些数据可以通过函数获取。
例如:x1=nx(1) !x1=节点1的x坐标[CSYS]*nn=node(2.5,3,0) !nn=在(2.5,3,0)处的节点[CSYS]*/post1ux25=ux(25) !ux25=25号节点的UX值[RSYS]*temp93=temp(93) !temp93=节点93的温度值width=distnd(23,88) !width=23号节点和88号节点间的距离*CSYS=激活坐标系(CSYS)RSYS=激或的结果坐标系(RSYS)APDL基础
...从数据库中获取信息在一些地方您可以直接取函数值,就象用一个参数一样。例如:k,10,kx(1),ky(3) !10号关键点x坐标取1号关键点的x坐标,y坐标取 !3号关键点的y坐标k,11,kx(1)*2,ky(3) ![CSYS]*f,node(2,2,0),fx,100 !在节点(2,2,0)施加力FX[CSYS]**CSYS=激活坐标系(CSYS)APDL基础概要:利用格式Name=Value定义参数.参数值可以是一个数值,一个以前定义过的参数,一个函数,一个参数表达式,或者一个字符串。利用
*GET
命令或函数从
ANSYS数据库中获取信息。ANSYS存储的是参数的实际值(数字或字符串),而不是参数名。2.数组参数数组参数
是能够容纳多个值的参数数组参数可以是1-D,2-D,or3-D.1-D:m
行
x1
列2-D:m
行
xn
列3-D:m
行
xn
列
xk
面17.1-47.6-5.225.0107.9814 17 3861057 -47 7041033 -52 3487141 25 -66622 107 1115x1array5x3arraymxnx3arrayAA=BB=CC=...数组参数本章主要讨论怎样定义和使用数组参数.主要内容:A.数组参数的类型B.怎样定义数组C.获取数据库信息D.数组操作E.专题数组参数
A.数组参数的类型有三种数组参数类型:数值数组表字符数组数值数组是标准的1-D,2-D,或3-D数值矩阵,如下面的
BBBB(2,3)=704BB(3,1)=1033等.814 17 3861057 -47 7041033 -52 3487141 25 -66622 107 1115x3arrayBB=数组参数
...数组参数的类型数据表除了行、列、面可以是实数外与数值数组类似。第零行、零列、零面必须填充数字。对定义随时间变化的载荷和类似情况非常有用例如,表FORCE可以表示力随时间的变化关系,第零行表示时间值。FORCE(0.4)=279.9996FORCE(6.5)=560.0FORCE(8.9)=119.25等数组参数
...数组参数的类型一个字符型数组是1-D,2-D,或3-D的字符串矩阵可用来存放文件名,自由度标识等每个字符串不超过8个字符。JOB1JOB2JOB3JOB4JOB5jobs=UXUYUZROTYROTZdofs=数组参数
B.怎样定义数组定义数组的步骤:1. 指定类型和维数UtilityMenu>Parameters>ArrayParameters>Define/Edit>Add或使用
*DIM
命令.
例如:*dim,aa,array,4 !4x1x1array*dim,force,table,5 !5x1x1table*dim,bb,array,5,3 !5x3x1array*dim,dofs,char,6 !6x1x1characterarray数组参数
...怎样定义数组2.给数组赋值UtilityMenu>Parameters>ArrayParameters>Define/Edit>Edit或使用*VEDIT
命令或使用“=”命令.例如:bb(1,1)=11,21,31,41,51bb(1,2)=12,22,32,42,52bb(1,3)=13,23,33,43,53数组参数
...怎样定义数组对于表型数组,必须定义第0位置。
否则,取缺省值7.8886E-31.例如:force(1,1)=0,560,560,238.5,0force(1,0)=1E-6,0.8,7.2,8.5,9.3force(0,1)=0数组参数
...怎样定义数组对字符数组,不能以图形方式填充字符串使用“=”命令键入值,接着用
*STAT显示字符串每个字符串必须用单引号括起来例如:dofs(1)=‘ux’,‘uy’,‘uz’,‘rotx’,‘roty’,‘rotz’*stat,dofs数组参数
...怎样定义数组给数组赋值的其他方法:用
*VFILL
命令或(UtilityMenu>Parameters>ArrayParameters>Fill)预定义函数赋值跃阶函数随机函数等从一个文件读入数据:*VREAD
用于数值数组*TREAD
用于数据表或
UtilityMenu>Parameters>ReadfromFile从数据库获取(下一步讨论).数组参数
C.获取数据库信息正如
*GET
从数据库获取标量数据,可以用
*VGET
获取数组信息.或
UtilityMenu>Parameters>GetArrayData先定义数组,然后获取数据.例如:*dim,dispval,array,20,3 !20x3array*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数组参数
…获取数据库信息其他可获取的数组信息类型:节点和关键点坐标(当前坐标系)单元属性,体,面等.实体的选择状态(1选上,0未选上)节点应力,应变,温度梯度,热通量等单元表数据等…数组参数
D.数组操作一旦定义了数组参数,就可以对它们进行各种操作UtilityMenu>Parameters>ArrayOperations或使用
*VFUN,*VOPER,*VSCFUN,*VWRITE等命令数组参数
...数组操作*VFUN
对单个数组操作*vfun,b(1),sin,a(1)
等价于
b(j)=sin(a(j))其他操作包括:自然对数,常用对数,指数平方根,排序,复制局部坐标系与整体坐标系的相互转换关系路径的切线和法线矢量等数组参数
...数组操作*VOPER
对两个数组参数操作。*voper,c(1),a(1),sub,b(1)
等价于
c(k)=a(k)-b(k)其它操作包括:加,减,乘,除最小值,最大值,逻辑运算微分,积分点积和叉积数组参数
...数组操作*VSCFUN
定义数组参数的属性。*vscfun,maxval,max,a(1)
等价于一个标量
maxval=max(a(i))其它操作包括:求数组的所有元素的和诸如标准偏差,中值,平均数等统计量最小值/最大值,最小值/最大值的位置
第一个和最后一个非零记录的位置数组参数
...数组操作*VWRITE把数据按格式写进文件例如:*cfopen,wing,dat*vwrite(/,3x,’NodeNumber’,4x,’Temperature’,/)*vwrite,nnum(1),tval(1)(5x,f6.0,6x,e14.8)*cfclose
将会创建一个名为
wing.dat
的文件,包含指定格式的
nnum
和
tval
数组数组参数
...数组操作还有大量很有用的数组操作。请参考
APDL程序员指南获取详细情况.10.宏基础APDL(ANSYS参数设计语言)最强有力的特征之一是创建宏的能力。宏就是一系列贮存在一个文件中的ANSYS命令,并且能象一个ANSYS命令一样来运行。常用宏功能:它可以如同ANSYS命令一样具有变量。分支和循环用来控制一系列命令。交互式特征如图形拾取,提示,以及对话框。宏可以嵌套――一个宏引用第二个宏,第二个宏引用第三个宏,等等―一直可嵌套20级。…宏基础在这一章,我们将给出创建宏的基本步骤:A.
创建一个宏B.
带参数的宏C.
分支D.
循环E.
总的指导方针F.
练习更多的细节,请参考APDL程序指南等宏基础
A.创建宏创建一个宏,在文本编辑器中,创建一系列命令,并以文件名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来计算整个体积。宏基础
…创建宏搜索路径:-ANSYS首先在下列搜索路径中寻找文件name.mac并运行它: 1.
/ansys57/docu2.
在ANSYS_MACROLIB环境变量路径中。3.
在WINDOWS系统中的注册路径。4.
当前工作路径。-如果在上级路径和下级路径同时寻找到同样的文件名,则采用上级路径。宏基础
B.带参数的宏通过特殊的字符名,你可以创建多达20个参数的宏:-NAME,arg1,arg2,arg3,…,ar10,ar11,ar12,…,ar20参数如同标准的ANSYS命令中的参数,可以为:数字字符(被包括在单引号中)参数(标量或数组)参数表达式参数的意义由所定义的宏来决定。宏基础
…带参数的宏例如,我们可以定义宏totvolume.mac来计算指定类型的所有单元体积和:-TOTVOLUME,TYPE宏具体如下:esel,s,type,,arg1etable,volume,volussum*get,totvol,ssum,,item,volume*vwrite,arg1,totvol(‘Totalvolumefortype’,f4.0,’elements=’,f8.2)求解之后在通用后处理器中发出totvolume,1将得出下列结果:宏基础
…带参数的宏注意:-特殊的字符名ARG1-ARG9和AR10-AR99仅仅是局部参数,仅仅在该宏中有效。一旦宏运行结束后并返回ANSYS主程序,它们将无意义。避免在模型的其它地方应用这些名称。-无论何时应用参数时,一定通过在宏中包含注释来描述它们的意义。 例如,下面在宏totvolume.mac的开始处的注释是非常有用的。 !MacroTOTVOLUME.MACtocalculatetotalvolumeofelements !Usage:TOTVOLUME,TYPE.validonlyinPOST1afterasolve !TYPE=validelementtypenumberesel,stype,,arg1 … …宏基础
C.分支通过应用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宏基础
…分枝条件符可能是:x,EQ,y !x=yx,NE,y !xyx,LT,y !x<yx,GT,y !x>yx,LE,y !xyx,GE,y !xyx,ABLT,y !|x|<|y|x,ABGT,y !|x|>|y|X和Y可以是数字,参数,或参数表达式。操作符为:THEN
运行随后的命令块*EXIT
退出DO循环*CYCLE
跳到DO循环末端这些操作符只有当条件为真是才起作用。否则,ANSYS将会移至*ELSEIF(若提供),*ELSE(若提供),和*ENDIF。*if,x,eq,y,
then宏基础
…分支例如,你可以在宏totvolume.mac中增加if-test来测试输入的变量是的有效性:*if,arg1,lt,1,then !如果ARG1小于1*msg,warn !发出一个警告Elementtypenumbermustbe1orgreater !退出宏/eof esel,s,type,,arg1 !选择所有确定类型的单元etable,volume,volu !建立单元表ssum !求解单元表数据总和…发出totvolume,-1将得出下列结果:宏基础
D.循环DO循环允许执行一个命令块数次。实际上在DO循环中对其中包含什么内容没有限制。你可以包含任何ANSYS命令――包括前处理,求解和处理――这是在条件允许的情况下。*DO开始循环,*ENDDO结束循环。 -你可以用*EXIT(退出循环)和*CYCLE(跳到DO循环末)控制循环。 -EX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论