首页/文章/ 详情

学会ANSYS数组的定义与使用,提高参数化建模与分析水平

4年前浏览4820

ANSYS中APDL的“数组”与其他高级语言概念类似,这里通过实例介绍数组的定义、赋值、显示等内容。在建模和后处理过程中,使用数组可大大提高参数化过程,进而提高分析效率。ANSYS数组分为数值型数组、表数组、字符型数组和字符串数组,如无特别说明,本文所指数组均为数值型数组。

1.数组的定义

*DIM,Par,Type,IMAX,JMAX,KMAX,Var1,Var2,Var3,CSYSID

其中Par是数组名,其命名规则与变量一样,如不超过32字符等。

Type是数组类型,标识符有ARRAY、ARR4、ARR5、TABLE、TAB4、TAB5、CHAR、STRING等,数值型就前三个,即ARRAY、ARR4和ARR5;缺省为ARRAY即数值型数组。

IMAX、JMAX、KMAX为数组下标的最大值。Var1、Var2、Var3对应表数组的行、列、面名字,但对于ARR4和AAR5时,也为下标的最大值。CSYSID是坐标编号,在表数组荷载时使用。

例如:*DIM,A,,10!定义一维数组A(10)

*DIM,B,,5,3!定义二维数组B(5,3)

*DIM,C,,10,5,4!定义三维数组C(10,5,4)

*DIM,D,ARR5,10,5,4,2,6!定义五维数组D(10,5,4,2,6)

2.数组赋值

数组赋值方法主要有*SET或“=”、*VFILL、*VREAD等,常用的有“=”和*VREAD。需要特别注意的是,数组赋值以“列”优先,分别介绍如下。

(1)“=”赋值

等号可以一次为数组的一个元素或多个元素赋值,即可一个一个元素赋值,也可一次赋予18个元素的值。多于18个元素时,可以另次赋值,例如有两个数组A(30)和B(4,5),赋值如下:

*DIM,A,,30!30个元素的一维数组

*DIM,B,,4,5!4行5列数组

A(1)=1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10.0,11,12,13,14,15,16,17,18!一次赋18个

A(19)=19,20,21,22,23,24,25!从19开始再赋7个

A(26)=26,27,28,29!从26开始再赋4个

A(30)=30!当然也可一次赋一个元素

STAT,A!显示A(30)数组的值

!假设B数组按4行5列分别元素数值为:

!1.1 1.2 1.3 1.4 1.5

!2.1 2.2 2.3 2.4 2.5

!3.1 3.2 3.3 3.4 3.5

!4.1 4.2 4.3 4.4 4.5

!B数组赋值命令如下

B(1,1)=1.1,2.1,3.1,4.1!赋第1列的各行元素

B(1,2)=1.2,2.2,3.2,4.2!赋第2列的各行元素

B(1,3)=1.3,2.3,3.3,4.3!赋第3列的各行元素

B(1,4)=1.4,2.4,3.4,4.4!赋第4列的各行元素

B(1,5)=1.5,2.5,3.5,4.5!赋第5列的各行元素

!B(4,3)=100.0!赋予单个元素(4,3)数值

!STAT,B!先行后列显示数值,一个一个元素显示,不太直观。

*VEDIT,B!编辑、修改、赋值、显示数组B,比较直观。

再次强调,ANSYS数组按“列优先(列不动行变)”赋值,如2维数组按列赋值,在一列时再按一维数组赋值。对于3维甚至更高维时规律类似,如5维数组,先按第5维赋值,然后是第4维,再是面赋值等等。

(2)*VREAD赋值

*VREAD命令是从ASCⅡ文件读入数据,与其他高级语言类似。命令格式为:

*VREAD,ParR,Fname,Ext,--,Label,n1,n2,n3,NSKIP

其中ParR为已经定义好了的数组名。Fname和Ext为带路径的数据文件名和扩展名,长度分别可达250个字符和8个字符,但不能采用中文目录名,缺省时为当前工作目录和当前工作文件名;一般不建议数据文件名和工作文件名相同,如需要带目录的文件时为('E:/ANSYSWORK/DATA/FILENAME')样式(注意无括号)。

Label为赋值顺序标识符,可取IJK、IKJ、JIK、JKI、KIJ、KJI或空(按IJK缺省)。n1、n2、n3为与Label次序对应的数值,例如当Label=KIJ时,按(((ParR(i,j,k),k=1,n1),i=1,n2),j=1,n3)读入并赋值。

NSKIP为读入数据文件时跳过的行数,表示从下一行开始读入数据,缺省为零,即从第1行开始读入数据。

在使用*VREAD时注意:该命令后紧跟数据格式行,且不能直接在粘贴在GUI的命令窗口执行;其次是数据文件可以为无整数的、用英文逗号隔开的数据(ANSYS“小意外系列”之一:须了解并避免出错)。

通常数据文件都是按行和列排列的数据,当然希望按此读入数据,例如按下述组织的数据文件(可用记事本编辑并保存在ANSYS当前工作目录下,且为MYTEST.TXT文件):

1.1,1.2,1.3,1.4,1.5

2.1,2.2,2.3,2.4,2.5

3.1,3.2,3.3,3.4,3.5

4.1,4.2,4.3,4.4,4.5

5.1,5.2,5.3,5.4,5.5

6.1,6.2,6.3,6.4,6.5

根据上述数据文件,显然读入顺序应该“行不动列变”,即JIK格式,也就是*VREAD,A,MYTEST,TXT,,JIK,5,3,1,打开就是(((A(I,j,k),j=1,5),i=1,3),k=1,1)。可执行的命令流如下:

*DIM,A,,3,5!定义A(3,5)

*DIM,B,,3,5,2!定义B(3,5,2)

*CREAT,READDAT,MAC!创建宏文件READDAT.MAC

*VREAD,A,MYTEST,TXT,,JIK,5,3,1!读入数据及格式

(5F15.5)

*END!宏结束

READDAT!执行宏

*CREAT,READDAT1,MAC

*VREAD,B,MYTEST,TXT,,JIK,5,3,2

(5F15.2)

*END!

READDAT1

!显示数组(一个一个显示)

*VEDIT,A

*VEDIT,B

!利用DOS命令删除刚刚创建的两个宏文件

/sys,del,readdat.mac

/sys,del,readdat1.mac

(3)*VFILL赋值

*VFILL用于填充数组或表数组,填充的数据按一定的分布规律或系列随机数,其格式为:

*VFILL,ParR,Func,CON1,CON2,CON3,CON4,CON5,CON6,CON7,CON8,CON9,CON10

其中ParR为已定义的数组名。Func可以按:

DATA-将指定数据CON1~CON10填充数组。

RAMP-按CON1 ((n-1)*CON2)规律填充数组,n由数组最大下标确定。

RAND-按均匀随机数填充数组,即RAND(CON1,CON2)。

GDIS-按高斯分布随机数填充数组,即GDIS(CON1,CON2)。

TRIA-按三角分布随机数填充数组,即TRIA(CON1,CON2,CON3)。

BETA-按β分布随机数填充数组,即BETA(CON1,CON2,CON3,CON4)。

GAMM-按γ分布随机数填充数组,即GAMM(CON1,CON2,CON3)。

RIGID-按参考坐标(CON1,CON2,CON3)生成刚体模态填充数组。

CLUSTER-按CLUSTER生成激励频率填充数组,需使用(CON1,CON2,CON3,CON4,%CON5%)。

有趣的ANSYS随机数发生器

3.显示数组

命令*STAT,ParR可以列表显示数组值,按行、列、面顺序排列,但显示时每行一个元素。

命令*VEDIT,ParR可以编辑、修改数组值,也可通过此命令赋值。

命令*VPLOT可以绘图显示数组值,其命令格式为“*VPLOT,ParX,ParY,Y2,Y3,Y4,Y5,Y6,Y7,Y8”,其中ParX为横坐标轴“列名称”,缺省时为数组下标。ParY和Yi为竖坐标轴的“列名称”,即可同时绘制8条曲线。

*DIM,GG,,30,5

*VFILL,GG(1,1),GDIS,1,10

*VFILL,GG(1,2),TRIA,1,20,2

*VFILL,GG(1,3),BETA,1,20,2

*VPLOT,,GG(1,1),GG(1,2),GG(1,3)

4.数组删除

数组删除与变量删除相同,即“数组名=”就将改数组删除了,在读入命令流(/INPUT或宏)中,系统不提醒确认,但在GUI方式时系统要求确认删除。

上述为数组的基本内容,ANSYS还提供了对数组的各种运算函数和命令,可大大方便计算分析,这些回头再聊。ANSYS的APDL类似FORTRAN语言,因此可以在ANSYS中添加自己的编程计算部分,但计算速度可能不太理想。



image.png

类似数组的停车场

---------------------------------------------------------------------------------------------

版权声明:

原创文章,来源铁大王新敏,本文已经授权,欢迎分享,如需转载请联系作者。



代码&命令MechanicalWorkbenchMechanical APDL
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2020-11-27
最近编辑:4年前
王新敏
硕士 | 教授 好好学习,天天快乐
获赞 122粉丝 613文章 96课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈