被ansys读取和写入的命令麻烦了好久,写写我的学习心得,理解的不深,也不一定全对,献丑了。
比如对一个简支梁施加外部荷载,荷载时程数据在txt文件中。因为ansys读入文件对文件数据的格式要求很严格,所以这里结合matlab,利用matlab生成所需的荷载数据。
matlab写入数据到txt
matlab写入数据到txt的方法有很多,假如要将4001X1的向量F,写入txt,则可以采用以下命令:
- fprintf
path_write='H:\cch_tianqiao_load\';
name_write=strcat(path_write,'load_txt_1.txt');
fid=fopen(name_write,'wt');
fprintf(fid,'%12.6f\n',F); %写入格式
fclose(fid);
type H:\cch_tianqiao_load\load_txt_1.txt %查看
fprintf写入的数据是小数格式。
- save
save H:\cch_tianqiao_load\load_txt_1_37.txt F -ascii
save('H:\cch_tianqiao_load\load_txt_1_37.txt','F','-ascii')
type('H:\cch_tianqiao_load\load_txt_1_37.txt')
注意ansys读取的数据必须是ascii形式,所以save命令的格式选择-ascii。
save命令默认写入的是科学计数法形式,如:1.0813328e+03。
如果是向量形式,以上两种方法都可以使用。
如何是写入矩阵,则我一般不采用fprintf命令,而是采用下面的命令。
- save
用法和上面一样,写入的数据仍然是科学计数法形式。 - dlmwrite
dlmwrite('H:\cch_tianqiao_load\load_txt_1_37.txt',FF,'precision','%12.6f');
dlmwrite可以定义写入的格式,具体请查看help文档,注意该命令写入的数据以“逗号,”隔开,如果以'%12.6f'写入txt,则下文ansys的读取命令要写成nF13.6。
ansys中*vread命令读取txt数据
ansys读取和写入数据都需要以宏文件形式进行。
读取数据采用*vread命令,详细用法,请参见:https://wenku.baidu.com/view/807b2f22bcd126fff7050bf1.html?re=view。
- 读入向量数据
如果data.txt中向量为(mx1)的维度,则读取方法为: - 首先,定义一个(mx1)的数组A,
- 然后,用*vread命令:
*vread,A(1,1),H:\cch_tianqiao_load\data,txt,,jik,1,m
(1F12.6)
其中,
- A(1,1)
表示将数据存入数组A,存储开始的位置为(1,1),即第一行第一列。
- H:\cch_tianqiao_load\data
表示路径名和文件名,不含后缀,要小于248个字符。
-
txt
为文件拓展名,即后缀。 - 注意后缀后面有一个空。
-
jik
为数据读取方式,jik表示txt文件数据的格式与数组的格式一致。 - 后面的
1,m
表示,列为1,行为m。 -
(1F12.6)
表示txt里面每行一个数据,格式为F12.6
。前面采用matlab生成数据也是为了这里写格式方便准确。
- 读入矩阵数据
如果data.txt中向量为(mxn)的维度,则读取方法为: - 首先,定义一个(mxn)的数组A,
- 然后,用*vread命令:
*vread,A(1,1),H:\cch_tianqiao_load\data,txt,,jik,n,m
(nF12.6)
其中,
- A(1,1)
表示将数据存入数组A,存储开始的位置为(1,1),即第一行第一列。
- H:\cch_tianqiao_load\data
表示路径名和文件名,不含后缀,要小于248个字符。
-
txt
为文件拓展名,即后缀。 - 注意后缀后面有一个空。
-
jik
为数据读取方式,jik表示txt文件数据的格式与数组的格式一致。 - 后面的
n,m
表示,列为n,行为m。 -
(nF12.6)
表示txt里面每行n个数据,格式为F12.6
。如果txt里面有10个数据,格式不一样,则(1F12.6,9F10.4)
表示每行10个数据,第一个格式为F12.6
,后9个格式为9F10.4
。
ansys读取txt数据
示例如下:
mm=4001
nn=10
!创建宏文件
*create,my_read_load,mac
*dim,w_load1,array,mm,nn !定义mmxnn数组w_load1
*vread,w_load1(1,1),H:\cch_tianqiao_load\load_txt_1,txt,,jik,nn,mm
(nnF12.6)
*end
!结束宏文件
!运行宏文件
my_read_load
*status,w_load1 !显示数据