ANSYS基础教程APDL基础.docx

上传人:b****4 文档编号:3484359 上传时间:2022-11-23 格式:DOCX 页数:17 大小:345.44KB
下载 相关 举报
ANSYS基础教程APDL基础.docx_第1页
第1页 / 共17页
ANSYS基础教程APDL基础.docx_第2页
第2页 / 共17页
ANSYS基础教程APDL基础.docx_第3页
第3页 / 共17页
ANSYS基础教程APDL基础.docx_第4页
第4页 / 共17页
ANSYS基础教程APDL基础.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

ANSYS基础教程APDL基础.docx

《ANSYS基础教程APDL基础.docx》由会员分享,可在线阅读,更多相关《ANSYS基础教程APDL基础.docx(17页珍藏版)》请在冰豆网上搜索。

ANSYS基础教程APDL基础.docx

ANSYS基础教程APDL基础

ANSYS基础教程—APDL基础

发表时间:

2011-3-17

关键字:

ANSYSANSYS教程APDL基础

信息化调查找茬投稿收藏评论好文推荐打印社区分享

本文主要介绍APDL基础功能,包括:

定义参数、利用参数、获取数据库信息方面展开。

概述

   

   ·APDL是ANSYS参数化设计语言的缩写,它是一种允许使用参数并能完成一系列任务的强大的程序语言。

   ·使用APDL,可以:

   –用参数而不是用数值输入模型尺寸,材料类型等。

   –从ANSYS数据库中获取信息,比如节点位置或最大应力。

   –在参数中进行数学运算,包括矢量和矩阵运算。

   –把常用的命令或宏定义成缩写形式。

   –建立一个宏使用if-then-else分支和do循环等来执行一系列任务。

A.定义参数

   ·用以下格式定义参数

   Name=Value

   –可以在输入窗口或标量参数对话框中输入(UtilityMenu>Parameters>ScalarParameters...)

   –参数名不能超过8个字符。

   –值可以是一个数值,一个以前定义过的参数,一个函数,一个参数表达式,或者一个字符串(用单引号括住)。

   ·例子:

   inrad=2.5   g=386

   outrad=8.2   massdens=density/g

   numholes=4   circumf=2*pi*rad

   thick=outrad-inrad   area=pi*r**2

   e=2.7e6   dist=sqrt((y2-y1)**2+(x2-x1)**2)

   density=0.283   slope=(y2-y1)/(x2-x1)

   bb=cos(30)   theta=atan(slope)

   pi=acos(-1)   jobname=‘proj1’

   用*SET看有用参数列表

   ·以上例子是关于标量参数的,它只有一个值—数字或者字符。

   ·ANSYS也提供数组参数,它有若干个值。

数字数组和字符数组都是有效的。

字符数组在本教程中不讨论。

   一些命名规则:

   ·参数名不超过8个字符,并以字母开头。

   ·参数名中只能出现字母,数字和下划线。

   ·避免以下划线开头,这在ANSYS中另有它用。

   ·参数名不分大小写,如“RAD”和“Rad”是一样的。

所有的参数都以大写形式存储。

   ·避免使用ANSYS标识,如STAT,DEFA,和ALL。

B.使用参数

   ·使用参数时,只需在对话框中或通过命令输入参数名就行了。

   ·例如,利用参数定义一个w=10,h=5的矩形,

   –您可以使用以下菜单:

   Preprocessor>Create>Rectangle>By2Corners+

   –或命令:

   /prep7

   blc4,,,w,h

   注意:

   ·当使用参数时,ANSYS将立刻把参数名换为它的值。

   上一个例子中的矩形将被存为10x5,而不是wxh。

也就是说,如果你在生成矩形后再改变w或h的值,矩形将不被修改。

   ·其它一些关于参数用法的例子:

   jobname=‘proj1’

   /filnam,jobname   !

作业名

   /prep7

   youngs=30e6

   mp,ex,1,youngs   !

杨氏模量

   force=500

   fk,2,fy,-force   !

2号关键点的力

   fk,6,fx,force/2   !

6号关键点的力

C.从数据库中获取信息

   ·从数据库中获取信息并给参数赋值,使用*GET命令或UtilityMenu>Parameters>GetScalarData...

   ·对获取大量信息是很有用的,包括模型和结果数据,请参看*GET命令的详细资料。

   ·例子:

   *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)

   ·一些数据可以通过函数获取。

   例如:

   x1=nx

(1)   !

x1=节点1的x坐标[CSYS]*

   nn=node(2.5,3,0)   !

nn=在(2.5,3,0)处的节点[CSYS]*

   /post1

   ux25=ux(25)   !

ux25=25号节点的UX值[RSYS]*

   temp93=temp(93)   !

temp93=节点93的温度值

   width=distnd(23,88)   !

width=23号节点和88号节点间的距离

   *CSYS=激活坐标系(CSYS)

   RSYS=激或的结果坐标系(RSYS)

   ·在一些地方您可以直接取函数值,就象用一个参数一样。

例如:

   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]*

APDL基础

1概要:

   ·利用格式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面

   ·本章主要讨论怎样定义和使用数组参数.

   ·主要内容:

   A.数组参数的类型

   B.怎样定义数组

   C.获取数据库信息

   D.数组操作

A.数组参数的类型

   ·有三种数组参数类型:

   –数值数组

   –表

   –字符数组

   ·数值数组是标准的1-D,2-D,或3-D数值矩阵,如下面的BB

   –BB(2,3)=704

   –BB(3,1)=1033

   –等.

   ·数据表除了行、列、面可以是实数外与数值数组类似。

   –第零行、零列、零面必须填充数字。

   –对定义随时间变化的载荷和类似情况非常有用

   –例如,表FORCE可以表示力随时间的变化关系,第零行表示时间值。

   ·FORCE(0.4)=279.9996

   ·FORCE(6.5)=560.0

   ·FORCE(8.9)=119.25

   ·等

   ·一个字符型数组是1-D,2-D,或3-D的字符串矩阵

   –可用来存放文件名,自由度标识等

   –每个字符串不超过8个字符。

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,51

   bb(1,2)=12,22,32,42,52

   bb(1,3)=13,23,33,43,53

   ·对于表型数组,必须定义第0位置。

否则,取缺省值7.8886E-31.

   –例如:

   force(1,1)=0,560,560,238.5,0

   force(1,0)=1E-6,0.8,7.2,8.5,9.3

   force(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数组

3宏基础

   ·APDL(ANSYS参数设计语言)最强有力的特征之一是创建宏的能力。

   ·宏就是一系列贮存在一个文件中的ANSYS命令,并且能象一个ANSYS命令一样来运行。

   ·常用宏功能:

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

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

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

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

   宏基础

   ·本文给出创建宏的基本步骤:

   A.创建一个宏

   B.带参数的宏

   C.分支

   D.循环

   E.总的指导方针

    ·更多的细节,请参考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/docu

   2.在ANSYS_MACROLIB环境变量路径中。

   3.在WINDOWS系统中的注册路径。

   4.当前工作路径。

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

B.带参数的宏

   ·通过特殊的字符名,你可以创建多达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

   (‘Totalvolumefortype’,f4.0,’elements=’,f8.2)

   ·求解之后在通用后处理器中发出totvolume,1将得出下列结果:

   ·注意:

   –-特殊的字符名ARG1-ARG9和AR10-AR99仅仅是局部参数,仅仅在该宏中有效。

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

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

   –-无论何时应用参数时,一定通过在宏中包含注释来描述它们的意义。

   例如,下面在宏totvolume.mac的开始处的注释是非常有用的。

   !

MacroTOTVOLUME.MACtocalculatetotalvolumeofelements

   !

Usage:

TOTVOLUME,TYPE.validonlyinPOST1afterasolve

   !

TYPE=validelementtypenumber

   esel,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

   ·例如,你可以在宏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循环末)控制循环。

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

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

   !

--MacroTOTVOLUME.MACtocalculatetotalelementvolume.

   !

--Usage:

IssueTOTVOLUMEinPOST1afterasolution.

   !

--Result:

   !

--a)evolume(i)=totalvolumeforelementtypei

   !

--b)totvol=grandtotalvolume

   !

   *get,numtypes,etype,,num,count!

Getnumberofelementtypes

   *dim,evolume,array,numtypes!

Openanumtypesx1array

   *do,i,1,numtypes!

Fori=1-numtypes...

   esel,s,type,,i!

Selectelementsoftypei

   etable,volume,volu!

Storevolumeinelementtable

   ssum!

Sumelementtableitems

   *get,totvol,ssum,,item,volume!

totvol=sumof‘volume’

   evolume(i)=totvol!

Storetotvolinevolume(i)

   *enddo!

Endofdo-loop

   *vscfun,totvol,sum,evolume(i)!

totvol=grandtotalvolume

   esel,all!

Activatefullsetofelements

E.一般注意事项

   ·建立短小且简单的宏。

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

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

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

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

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

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