ANSYS APDL内部常用函数

  1. 弧度与角度切换
函数名 用法
*AFUN 默认为弧度,用该命令可切换为度数
  1. 数学函数
  2. 函数名 用法
    ABS(X) 返回X的绝对值
    SIGN(X,Y) 取Y值的符号与X值的绝对值,当Y为0时,为正值,如A=SIGN(3,-4)=-3
    EXP(X) 返回E的X次方
    LOG(X) 返回ln(x)
    LOG10(X) 返回log10(x)
    SQRT(X) 返回X的平方根
    NINT(X) 对X取整,考虑四舍五入
    MOD(X) 考虑X/Y的余数
    RAND(X) 按均匀分布形式返回X,Y之间的一个随机数
    GDIS(X,Y) 返回一个服从平均值为x且标准方差为y的正太分布的随机数
    SIN(X)、COS(X)、TAN(X) 三角函数,默认X按弧度,通过 *AFUN 命令切换为度数
    SINH(X)、COSH(X)、TANH(X) 双曲线正弦、余弦和正切值
    ASIN(X)、ACOS(X)、ATAN(X) 反三角函数
    ATAN2(Y,X) Y/X的反正切值
  3. 符号数组函数
  4. 函数名 用法
    UPCASE(CPARM) 返回CPARM的的大写字符
    LWCASE(CPARM) 返回CPARM的的小写字符
  5. 选择函数
  6. 函数名 用法
    (K、L、V、V、A、N、E)SEL 根据类别选择
    (K、L、V、V、A、N、E)SEL(K、L、V、V、A、N、E) 选择已有几何集上面的其他种类元素,如NSELE,即为选择当前单元上面的节点
  7. 下一个元素编号

以下命令均为在当前选择集中生效,也即可搭配 SEL 选择命令使用

函数名 用法
NDNEXT(N) 返回当前选择集中离X节点编号最近的更高下一个节点编号
ELNEXT(E) 返回当前选择集中离E单元编号最近的更高下一个单元编号
KPNEXT(K) 返回当前选择集中离K关键点编号最近的更高下一个关键点编号
LSNEXT(L) 返回当前选择集中离L直线编号最近的更高下一个直线编号
ARNEXT(A) 返回当前选择集中离A面编号最近的更高下一个面编号
VLNEXT(V) 返回当前选择集中离V体编号最近的更高下一个体编号
  1. 位置坐标函数
  2. 函数名 用法
    CENTRX(E)、CENTRY(E)、CENTRZ(E) 返回单元E质心在全局坐标系的XYZ坐标值
    NX(N)、NY(N)、NZ(N) 返回节点N在当前激活坐标系下的XYZ坐标值
    KX(K)、KY(K)、KZ(K) 返回关键节点K在当前激活坐标系下的XYZ坐标值
  3. 根据坐标值返回编号
函数名 用法
NODE(X,Y,Z) 返回在当前激活坐标系下离坐标点(X,Y,Z)最近的节点编号,如果该位置有重合点,返回最小的节点编号
KP(X,Y,Z) 返回在当前激活坐标系下离坐标点(X,Y,Z)最近的关键点编号,如果该位置有重合点,返回最小的关键点编号
  1. 求取距离
  2. 函数名 用法
    DISTND(N1,N2) 节点N1和N2的距离
    DISTKP(K1,K2) 关键点K1和K2的距离
    DISTEN(E,N) 单元E质心与节点N之间的距离
  3. 查询角度函数
  4. 函数名 用法
    ANGLEN(N1,N2,N3) 返回直线N1-N2与N1-N3之间的角度,N代表节点
    ANGLEK(K1,K2,K3) 返回直线K1-K2与K1-K3之间的角度,K代表关键点
  5. 最近元素函数
  6. 函数名 用法
    NNEAR(N) 返回离节点N最近的节点编号
    KNEAR(K) 返回离关键点N最近的关键点编号
    ENEAR(N) 返回离节点N最近的单元编号
  7. 面积求积函数
  8. 函数名 用法
    AREAND(N1,N2,N3) 返回节点N1、N2、N3组成的三角形的面积
    AREAKP(K1,K2,K3) 返回关键点K1、K2、K3组成的三角形的面积
    ARNODE(N) 返回与节点N相连的被选择单元在节点N上分配的面积
  9. 法向向量函数
  10. 函数名 用法
    NORMNX(N1,N2,N3)、NORMNY(N1,N2,N3)、NORMNZ(N1,N2,N3) 返回节点N1、N2、N3所组成平面法向三个方向的方向余弦
    NORMKX(K1,K2,K3)、NORMKY(K1,K2,K3)、NORMKZ(K1,K2,K3) 返回关键点K1、K2、K3所组成平面法向三个方向的方向余弦
  11. 单元连接查询函数
函数名 用法
ENEXTN(N,LOC) 返回与节点N相连的第LOC个位置的单元编号
NELEM(E,NPOS) 返回单元E的第NPOS个节点编号
  1. 单元属性查询函数
  2. 函数名 用法
    EATT(E,VAL) 返回单元E的具体属性编号,当VAL=1时,返回材料编号;VAL=2时,返回单元类型编号;VAL=3时,返回实常数编号;当VAL=4时,返回截面编号
    RCON(R,LOC) 返回编号为R的实常数第LOC个位置中的数据
  3. 节点结果函数
  4. 函数名 用法
    UX(N)、UY(N)、UZ(N) 分别返回当前节点N三个方向的位移
    ROTX(N)、ROTYN)、ROTZ(N) 分别返回当前节点N三个方向的转动值
    TEMP(N) 返回当前节点N的温度值
  5. *Vwrite 的用法

ANSYS中数据的写出主要使用 *Vwrite ,其具体功能为将数组中的数据按照指定的格式写入数据文件中,*Vwrite命令依次最多可写出19个参数,调用格式如下:

$$
\begin{align}
*Vwrite,Par1,Par2,Par3……,Par19
\end{align}
$$

注:Par1~Par19为依次写出的19个参数,在使用*Vwrite进行数据写出之前,必须用 *Cfopen 打开或者创建一个数据文件, *Cfclose 则为关闭文件,需配对使用,*Cfopen使用格式如下:

$$
\begin{align}
*Cfopen,Fname,Ext,–,Loc
\end{align}
$$

,式中,Fname为带文件路径的文件名,缺省路径为工作路径,Ext为文件的拓展名,后缀一般设置为TXT,*Vwrite不能作为已知的APDL命令之间输入命令窗口使用,必须作为外部宏文件命令使用,使用格式如下:

1
2
3
4
5
6
7
8
9
10
*creat,datawrite,mac   !创建宏文件名字datawrite
*cfopen,filedata,txt !创建写出文件的名字filedata
*do,i,1,2600 !利用*do命令逐个写出数组的数据
aa=variable(i) !将具体的数值赋值给变量aa
*vwrite,aa !写出变量aa的数组
(f6.3) !写出格式
*enddo !结束循环
*cfclose !关闭文件
*end !宏文件创建完毕
datawrite !运行宏文件

1. 例子

数据库已经定义数组nodenum,采用*Vwrite写出到数据文件,文件名为nodenum.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/prep7
*dim,nodenum,array,20,5 !给数组nodenum赋值
*do,j,1,20
*do,i,1,5
nodenum(j,i)=5*(j-1)+i
*enddo
*enddo

!写出文件
*creat,datawrite,mac !创建宏文件名字datawrite
*cfopen,dda,txt !创建写出文件的名字dda
*do,i,1,20 !利用*do命令逐个写出数组的数据
*vwrite,nodenum(i,1), nodenum(i,2),nodenum(i,3),nodenum(i,4),nodenum(i,5) !写出变量aa的数组
(5F8.2) !写出格式
*enddo !结束循环
*cfclose !关闭文件
*end !宏文件创建完毕
datawrite !运行宏文件

17 *Vread 的用法

使用格式如下:$*Vread,ParP,Frname,Ext,–,Lable,n1,n2,n3,Nskip$,式中,ParP是读入数据的赋值对象数组,使用前需采用*dim命令进行定义;Frname为带路径的文件名,注意路径不能有中文,缺省路径为工作路径,Ext为文件的拓展名,Lable是取值顺序标识字符,分别为IJK、IKJ、JIK、KIJ、KJI,默认为IJK,n1、n2、n3分别为根据取值顺序标识符所采用的取值,Nskip为读入数据文件时需要跳过的开始行数,默认为0,表示从第一行开始读入数据。注:* Vread 不能作为已知的APDL命令之间输入命令窗口使用,必须作为外部宏文件命令使用,使用格式如下

1
2
3
4
5
6
*creat,dataread,mac   !创建宏文件名字dataread
*dim,elcentro,2600 !创建读入数据的数组
*Vread,elcentro(1,1),elcentro,txt,,ijk,n1,n2 !读入文件elcentro.txt的数据
(f6.3) !读入格式
*end !宏文件创建完毕
dataread !运行宏文件

2. 顺序标识符Lable的设定

Lable的设定决定了写入数据的顺序,i代表行,j代表列,k代表面,如果是IJK,则写入数组时先写入面,再写入列,最后写入行,即行的变化比列快,若为JIK,则写入数组时先写入面,再写入行,最后写入列,即列的变化比行快,对于二维数组来说,没有面的写入,只有行和列的写入变化

3. N1、N2、N3数值的设定

N1、N2、N3表示按上面指定的顺序,各下标分别要写入的数据个数,如IJK,3,4,1,表示数组ParP按列写入,共写3行4列,N2、N3默认值为1

矩阵的操作

矩阵定义

命令 参数值
*DMAT 创建稠密矩阵
*SMAT 创建稀疏矩阵
*VEC 创建向量
*FREE 删除所有矩阵,释放内存
*AXPY 矩阵加减,M2=v*M1 + w*M2
*COMP 矩阵压缩
*DOT 向量点乘
*FFT 傅里叶变换
*HPROD 哈达玛矢量积
*INIT 矩阵向量初始化
*INQUIRE 检索现有矩阵属性
*KRON 计算两个矩阵/向量的Kronecker积
*MERGE 合并矩阵或者向量
*MULT 矩阵乘积,M3 = M1(T1)*M2(T2)
*NRM 计算矩阵或者向量的范数
*REMOVE 矩阵裁剪
*RENAME 矩阵重命名
*SCAL 矩阵的缩放
*SORT 矩阵元素排序
*XPL 读取APDL内部文件
*EIGEN 模态求解
*ITENGINE 迭代求解
*LSBAC 求解
*LSENGINE 创建线性求解器
*LSFACTOR 矩阵分解
*PRINT 矩阵打印输出
*EXPORT 导出矩阵数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
finish
/clear
/prep7
!1、首先定义一个5*10的矩阵A和维度为10的向量X
*DMAT,A,d,Alloc,5,10
*VEC,X,d,Alloc,10
*Do,i,1,5
*DO,j,1,10
A(i,j)=i+j*2
X(j)=j
*enddo
*enddo
!2、利用*MULT进行矩阵运算
*MULT,A,,X,,B

!结果查看,首先将矩阵对象转为数组对象
*export,B,APDL,B_array

!点击ANSYS菜单栏Parameters->Array Parameters。找到B_array即可。

mmexportd3878eb5e385aab670178687931ba081_1725426591360.png