ANSYS经典界面导入TXT数据

  • Post author:
  • Post category:其他


在之前的博客


ANSYS经典界面保存单元解和节点解


介绍了使用


*VWRITE


将单元解或者节点解保存为TXT数据,这些数据在外部其他软件如MATLAB中计算之后,将会重新导入ANSYS中进行下一步计算使用。导入TXT数据需要使用


*VREAD


命令,首先看一下MATLAB如何保存为TXT文件。

1、MATLAB保存为TXT文件

主要有三种方法,分别是(1)save函数、(2)dlmwrite函数和(3)fopen+fprintf函数,这里主要介绍第三种方法,这种方法可以保存格式化的文本文件,方便导入。

% 创建文件
fid=fopen('myseqv500.txt','w');%建立文件
% 循环写入数据
for i=1:length(eMu)
    fprintf(fid,'%10.5f,%10.5f,%10.5f\r\n',eMu(i,1),eMu(i,2),eMu(i,3));% 保存小数点后5位
end
fclose(fid);

上面的例子中是保存矩阵数据eMu,eMU有三列数据,%10.5,表示每列数据长度10位,其中5位小数,同一行数据用逗号分隔(逗号分隔再导入ANSYS中的时候不容易出错),一行结束用回车换行。

保存的数据如下格式如下:

2、使用*VREAD导入TXT数据

命令:


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


其中:



ParR:

将要填充数据的数组参数名称



Fname:

数据文件名,Ext:文件后缀名,这里是TXT



Label:

读取数据的方式,可以是(IJK,JIK,IKJ,JKI,KIJ,KJI或者为空),其中IJK表示先写列再写行,就是往数组中写数据的时候一列一列写,JIK表示按行写数据,这里我们选择按行写数据



n1,n2,n3:

对应前面Label读取数据个数,比如JIK读取,此时J:1~n1,I:1~n2,K:1~n3



NSKIP:

读取数据需要跳过的行数。


具体如下:

/CLEAR,START
*DIM,TTT,ARRAY,EleNum,3                  !定义2维数组
*VREAD,TTT(1,1),myseqv500,TXT,,JIK,3,EleNum   !读入单元应力
(3F11.5)   !表示一行3个数,每个数格式是11位长度,小数5位



注意:



第一:按行读取数据,选择JIK方式,J表示的是列数,I表示的是行数



第二:读取数据格式是(3F11.5),我们保存的时候是F10.5,为什么这里我们选择F11.5呢,这里推测是包含了逗号占用了一个字宽度,不写成11不然读取的数据就不对。



之后就可以在ANSYS中菜单Parameters->Array Parameters->Define/Edit进行查看,这里我们导入的结果如下和上面的数据是对应的:



版权声明:本文为zhwzhaowei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。