【ANSYS经验技巧】- 学会使用变量数组函数(转载)
本帖最后由 Jillian 于 2016-9-5 10:18 编辑很多人发帖询问怎么定义函数,怎么定义数组,如何使用函数,看来这方面对于初学者确是一个难点,为了让大家了解并利用此功能,本人根据自己的理解作出如下总结:
一.参数介绍
1.参数的概念和类型:
参数是指APDL中的变量与数组。
变量参数有两种类型:数值型和字符型。
数组参数有三种类型:数值型,字符型,和表,表是一种特殊的数值型数组,允许自动进行线性差值。
在APDL中任何参数都不需要单独声明参数(不同于C语言)。数值型参数,无论整形还是实型都按照双精度进行存储,被使用但未被赋值的参数程序将默认一个接近0的极小值。字符型参数储存字符串,赋值方法是将字符创括在一对单引号中(最大长度8个字符)。
2.参数命名规则
1)必须以字母开头,长度不超过32个字符
2)只能包含字母,数值和下划线。
3)一般不能以下划线开头,以下划线开头的参数为系统隐含参数,只用于GUI和宏中。
4)以下划线结尾的参数用*STATUS命令或组列表显示,用*DEL删除。
5)不能使用宏专用的局部参数名:ARG1~ARG9和AR10~AR99.
6)不能使用*ABBR命令定义的缩写。
7)不能使用ANSYS表示子(Lable)如TEMP,UX,PRES等等。
举例一些无效参数名:
Fjsdklfjsklfjsklfjkslfjksdfjdkslfjsdklfjsdklfjs123434343(长度超过32)
S@B(含非法字符@)
UX(系统自由度标识符)'
12ddd(以数字开头)
二.变量的定义与赋值
一般定义变量与赋值有以下6种,但本文只介绍常用的几种:
1.利用*set定义变量并赋值
格式 *set,par,value,val2,val3……val10
Par——参数名
Valu——参数的赋值,数值或字符串
Val2~val10——对数组赋值(见例子4)
举例:
*set,length,12(定义length并赋值为12)
*set,width,length(定义width并赋值为length的值12)
*set,abc_111,’good’(给abc_111定义为字符good)
*set,B(1),1,2,3,4(给数组B赋值,B(1)=1, B(2)=2, B(3)=3, B(4)=4)
2. 利用“=”定义并赋值
“=”可以直接用来定义和赋值变量,作为一种速记符实际是通过内部调用*set实现参数定义与赋值的。
格式:name=value
name——参数名
vulue——赋给参数的数值或字符,字符必须放在一对单引号内并且不得超过8个字符。
例子:width=12
Length=width(12)
abc_111=‘good’
B(1)=1, B(2)=2, B(3)=3, B(4)=4
3.利用GUI或命令输入窗口进行变量定义与赋值。
1)在ansys命令输入窗口直接1,2输入。
2)利用利用GUI:utility menu——parameters——scalar parameters 定义赋值%
4.删除变量) ~
1)*set,par,(赋空值,字符型空为‘’)
2)name=(赋空值,字符型空为‘’)
3)利用上图delete
例子:width=
(width为空值注意不是0)
Abc_123=’’
(abc_123为空值)
5.列表显示变量参数
1)利用*status命令显示已定义的参数(变量,数组,表)
2)利用GUI:utility menu——list——other——parameters utility menu —— List —— status —— parameters —— all para
3)利用GUI显示指定参数:
utility menu——list——other——named parameters
utility menu——List——status——parameters——named: parameters
6.存储与恢复变量! n4 }1 k m6 I' q# e
1)存储变量到指定文件中使用PARSAV命令或选择菜单 utility menu——parameters——save parameter
格式如下:
PARSAV,LAB,文件名,扩展名
LAB包括scalar和all
Scalar——要存储的变量名(不包括数组表)
All——存储所有参数包括数组和表
2)从一个文件中恢复已存在的参数使用PARRES命令选择菜单
Utility menu——parameters——restore parameters
格式如下:
Parres,lab,文件名,扩展名
Lab——new和change
New——表示恢复的参数将覆盖程序内存中的变量(replace)
Change——表示恢复的参数将以合并方式增加到程序内存中(merge)
三.数组及其应用
1.ANSYS允许定义的数组类型
1)ARRAY数值型数组——ARRAY数值型数组是缺省的数组类型,用于存储整行式或实型数据,行列和面的下标从1开始的连续整数。
2)CHAR字符型数组——CHAR字符型数组用于存储字符串的数组,行列面的下标是从1开始的连续证书。
3)table表——table表用于存储整数或实数,是一种特殊的数值型数组,可以实现在数组元素之间的线性差值算法。可以给每一行,列面定义数组下标,并且下标为实数(而不是连续的整数),可以根据下标实现数据差值算法。
4)STRING字符串数组,可用*DIM,STRING可以将字符串输入到数组中,其列与面下标从1开始,行号由字符在字符串中的位置确定。
以上三种类型的数组都不能超过(2-1)/8字表长度。
2.定义数组参数
利用*DIM命令或利用utility menu——parameters——array parameters——define/edit定义数组,如果是array和table类型的数组元素将被初始化为0,如果是char类型的数组元素则被初始化为一空值。
利用*DIM格式如下:
*DIM,par,type,imax,jmax,kmax,var1,var2,var3
其中:par——数组名
Type——数组类型(array char table)缺省为array"
Imax~kmax——数组下标(i,j,k)的最大值
Var1~var3——type=table时对应行列面的变量名
3.赋值数组参数
1)
利用*set命令或“=”给单个或多个数组元素赋值与scalar变量赋值是格式相同。
2)
利用*set或“=”赋值时,赋值对象为第一个元素名,赋值数据是一个列矢量,赋值结果是按列下标递增顺序从第一个赋值数组依次赋值。注意,一次最多只能给10个连续数组元素赋值,当只给一个元素赋值时与变量赋值完全一致。
举例:
a) *DIM,,12,1,1. D; T! u; k8 \" D6 F
定义数组A为一个array类型,12行1列
A(1)=1,2,……12
给每个元素赋值为其行标
b) *DIM,B,array,4,3,1
定义数组B为一个array类型4行3列
B(1,1)=11,21,31,41
B(1,2)=12,22,32,42
B(1,3)=31,32,33,43
B=
注意此赋值的下标! 对于二维数组,赋值顺序按照列进行赋值,注意此规律。三维也是一样的。
c) *DIM,C,char,4,1,1
C(1)=‘a’,‘b’,‘c’,‘d’
3)
利用*VEDIT命令或等价GUI utility menu——parameter——array parameters——define/edit定义数组(不能编辑字符型数组)
填入适当的值后选择file——apply/quit,至此一个数组编辑完成
6
4)列表显示数组参数)
通过*status
或GUI list——parameters(与变量显示一样的操作!)实现!
5)曲线图形显示数组参数)
使用*VPLOT或通过GUI:utility menu——plot——array parameter绘制数值型数组参数的列矢量,由于array类型数组的数据是无序的故只能用柱状图;
*vplot,parx,pary,y2,y3,…y8;
其中,parx是x轴上的列矢量名
Pary,y2….是y轴上映射的8个列矢量
例如:
*DIM,A,ARRAY,5,1,1
A(1)=1,2,3,4,5
*vplot,,A
6)删除数组参数
删除数组参数与删除变量很类似,也可以用*set或“=“进行赋空值删除,对于字符参数则赋值为‘’,删除时只需删除变量名及第一个元素的名称,或使用utility menu——parameter——array parameter——define/edit。
举例:删除一个一维数组A(12,1,1)命令如下:
A(1)=
或*set,A(1)
7)数组的储存和恢复——此操作基本与变量相同,请参看变量的操作。
四.表参数的概念和定义
由于表参数(table)不同于一般数组,所以在这里着重的讲讲:
1.table表类型参数是数值型的数组参数,与array数组类似,但包含0行0列(其他数组都是从1开始),每个面的下标值放在该面的0,0处。表的下标可以是递增的整数或实数。表数组赋值是通过行和列的下标进行的,如果不赋值,程序自动赋最小值,表允许通过线性差值计算表数组中以定义元素之间的任意值!
注意:1)每个面的0,0元素值为该面的下标,若表为一二维表,只有一个面则无需赋值
2)0行0列的下标只有在差只是才会使用
显示(list)与数组规则相同注意imax为1开头,不包括0行0列。
对于表赋值建立建议使用GUI。若用APDL则为A(0,0,1)=….A(0,1,1)=…A(0,N,1)=…
可直接用*STATUS,TABLE
1.曲线图显示表参数的列矢量:与ARRAY一样使用*VPLOT,二者的差别是table类型数组的数据是有序的,采用曲线进行表示
2.表差值及表载荷应用9
表参数最大的特点就是提供按行列面的下标进行线性差值的功能。可以用于定义随某一变量(如时间)变化的边界条件载荷,相应谱曲线,压力曲线,材料温度曲线,磁性材料的B-H曲线。
五.使用函数加载器与编辑器
使用函数加载的必要性就不用多说了,直接开始教程:
函数编辑器定义一个函数的一般步骤:
1.打开函数编辑器,选择菜单路径utility——parameter——function
2.选择函数类型:单个方程还是多值函数(分段函数),如果是后者,必须键入函数变量名,即状态控制变量,同时六状态也被激活。
3.选择角度单位,度还是弧度。该选项仅决定方程如何被运算而不影响*AFUNC的设置
4.定义方程:利用基本变量,方程变量和按键定义单个方程表达式,或者定义最多6个不同定义域的方程表达式。
1)点击regime1选项卡,首先指定状态控制变量的最大和最小取值区间,然后定义该取值区间对应的方程表达式,可将每个状态控制下的方程储存起来,在其他状态控制中重复使用。
2)同理对regime2进行设置,只需制定当前区间最大值
1.输入一个注释描述函数(可选),选择菜单路径function——file——command
2.保存函数editor——save and type in name 输入文件名,.func为扩展名,如果需要这些被存储的函数,首先将其加载到ansys中,并定义一系列的方程变量,以表参数名的形式给某个分析使用。
使用函数加载器:
1.打开函数载入器,选择parameter——function——read from file 打开保存的函数
2.在table parameter name 中输入表变量名
3.对话框下部对应每个状态的函数表达式和状态表。单击函数表,即显示每个指定方程变量的数据输入区,如果需要使用材料ID变量,可以在其输入区输入。
4.在每个定义的状态中重复以上过程。
5.直到你为函数中所有的状态的所有变量提供赋值,才能保存为表格式参数使用。
注意:在ansys分析中用函数加载必须的两个步骤:
1利用函数编辑器创建任意方程或函数
2在利用函数加载器加载函数,并以函数定义表参数
转自:三维网。 作者:4kpolo
原帖链接:http://www.3dportal.cn/discuz/vi ... p%3Bfilter%3Ddigest
页:
[1]