admin 管理员组

文章数量: 1087139


2024年4月16日发(作者:html5运行用什么软件)

ANSYS基础教程—APDL基础

发表时间:2011-3-17

关键字:ANSYS ANSYS教程 APDL基础

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

本文主要介绍APDL基础功能,包括:定义参数、利用参数、获取数据库信息方面展

开。

概述

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

务的强大的程序语言。

·使用APDL, 可以:

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

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

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

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

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

A. 定义参数

·用以下格式定义参数

Name=Value

–可以在输入窗口或标量参数对话框中输入(Utility Menu > Parameters > Scalar

)

–参数名不能超过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 > By 2 Corners +

–或命令:

/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命令或Utility Menu >

Parameters > Get

·对获取大量信息是很有用的,包括模型和结果数据,请参看*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 ! 对节点的von Mises 应力排序

*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, or 3-D.

–1-D: m行x 1列

–2-D: m行x n列

–3-D: m行x n列x k面

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

·主要内容:

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.指定类型和维数

–Utility Menu > Parameters > Array Parameters > Define/Edit > Add

–或使用*DIM命令.例如:

*dim,aa,array,4! 4x1x1 array

*dim,force,table,5! 5x1x1 table

*dim,bb,array,5,3! 5x3x1 array

*dim,dofs,char,6! 6x1x1 character array

2. 给数组赋值

–Utility Menu > Parameters > Array Parameters > 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命令或(Utility Menu > Parameters > Array Parameters > Fill)预定

义函数赋值

·跃阶函数

·随机函数

·等

–从一个文件读入数据:

·*VREAD用于数值数组

·*TREAD用于数据表

·或Utility Menu > Parameters > Read from File

–从数据库获取(下一步讨论).

C. 获取数据库信息

·正如*GET从数据库获取标量数据,可以用*VGET获取数组信息.

–或Utility Menu > Parameters > Get Array Data

·先定义数组,然后获取数据.

·例如:

*dim,dispval,array,20,3 ! 20x3 array

*vget,dispval(1,1),node,1,u,x ! UX of nodes 1-20 in column 1

*vget,dispval(1,2),node,1,u,y ! UY in column 2

*vget,dispval(1,3),node,1,u,z ! UZ in column 3

·其他可获取的数组信息类型:

–节点和关键点坐标(当前坐标系)

–单元属性, 体,面等.

–实体的选择状态(1 选上, 0 未选上)

–节点应力,应变,温度梯度,热通量等

–单元表数据

–等…

D. 数组操作

·一旦定义了数组参数,就可以对它们进行各种操作

–Utility Menu > Parameters > Array Operations

–或使用*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,’Node Number’,4x,’Temperature’,/)

*vwrite,nnum(1),tval(1)

(5x,f6.0,6x,e14.8)

*cfclose

将会创建一个名为的文件,包含指定格式的nnum和tval数组

3 宏基础

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

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

运行。

·常用宏功能:

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

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

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

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

宏基础

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

A.创建一个宏

B.带参数的宏

C.分支

D.循环

E.总的指导方针

·更多的细节,请参考APDL程序指南等

A. 创建宏

·创建一个宏,在文本编辑器中,创建一系列命令,并以文件名保存它们.

–name以一个字母开始,可以达32个字符。

·在文件名中空格不允许。

·避免特殊字符。

·确保name不是一个有效的ANSYS命令。可以在开始或所有处理器(PREP7,POST1,

等等)中进行检验。如果得到这种信息...不是有效的命令或宏…那么这个名字是“安全的”。

–扩展名.mac允许你运行宏如同运行一个命令一样:只需敲入name。

·例子:

–宏用来计算所有单元的整个体积:

esel,all!选择所有单元

etable,volume,volu!将所有单元体积建立单元表

ssum!求解单元表选项总和

*get,totvol,ssum,,item,volume!totvol=体积总和

*stat,totvol!列totvol值

–-在Post1(在求解之后)中发出totvolume来计算整个体积。

·搜索路径:

·-ANSYS首先在下列搜索路径中寻找文件并运行它:

1./ansys57/docu

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

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

4.当前工作路径。

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

B. 带参数的宏

·通过特殊的字符名,你可以创建多达20个参数的宏:

-NAME,arg1,arg2,arg3,…,ar10,ar11,ar12,…,ar20

·参数如同标准的ANSYS命令中的参数,可以为:

–数字

–字符(被包括在单引号中)

–参数(标量或数组)

–参数表达式

·参数的意义由所定义的宏来决定。

·例如,我们可以定义宏来计算指定类型的所有单元体积和:

-TOTVOLUME,TYPE

·宏具体如下:

esel,s,type,,arg1

etable,volume,volu

ssum

*get,totvol,ssum,,item,volume

*vwrite,arg1,totvol

(‘Total volume for type’,f4.0,’elements=’,f8.2)

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

·注意:

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

效。

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

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

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

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

!Macro to calculate total volume of elements

!Usage: TOTVOLUME, only in POST1 after a solve

!TYPE=valid element type number

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

·例如,你可以在宏中增加if-test来测试输入的变量是的有效性:

*if,arg1,lt,1,then!如果ARG1小于1

*msg,warn!发出一个警告

Element type number must be 1 or greater!退出宏

/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循环来扩展宏,计算所有单元类

型并将它们各的体积保存在数组参数中。

! --Macro to calculate total element volume.

! --Usage: Issue TOTVOLUME in POST1 after a solution.

! --Result:

! --a) evolume(i) = total volume for element type i

! --b) totvol= grand total volume

!

*get,numtypes,etype,,num,count! Get number of element types

*dim,evolume,array,numtypes! Open a numtypesx 1 array

*do,i,1,numtypes! For i = 1 -

esel,s,type,,i! Select elements of type i

etable,volume,volu! Store volume in element table

ssum! Sum element table items

*get,totvol,ssum,,item,volume! totvol= sum of ‘volume’

evolume(i) = totvol! Store totvolin evolume(i)

*enddo! End of do-loop

*vscfun,totvol,sum,evolume(i)! totvol= grand total volume

esel,all! Activate full set of elements

E.一般注意事项

·建立短小且简单的宏。

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

是否正确。

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

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

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


本文标签: 参数 数组 命令 定义 循环