最近使用ANSYS计算温度场方面的东西,每次都要手动运行,自己处理计算结果。可怜无助的我深感劳累啊,最主要的是怎么能把我宝贵的时间用在重复的劳动中。so,出于懒的需要,查询了一些关于matlab调用ANSYS的资料,经过自己实践,整理了以下内容。
1、调用ANSYS
!"D:\ANSYS Inc\v180\ANSYS\bin\winx64\ansys180.exe" -b -i "E:\ansys2matlab\work.txt" -o "E:\ansys2matlab\process.out";
以上为在matlab中调用ANSYS内核的代码。
"D:\ANSYS Inc\v180\ANSYS\bin\winx64\ansys180.exe" 是ANSYS的绝对路径,依据ANSYS的安装位置改写即可;
-b 是使用batch方式运行ANSYS;
-i 是输入文件;
"E:\ansys2matlab\work.txt" 是用ANSYS APDL语言编制的计算模型
-o 是输出文件;
"E:\ansys2matlab\process.out" 是ANSYS计算过程的输出文件。个人认为没啥用,纯属记录运行过程。
tips:
执行上述命令后,计算机调用ANSYS内核计算,不会显示经典的ANSYS界面;
过程文件process.out不包含计算结果,计算结果需要用APDL语言在work.txt里编写,以文本格式输出。
2、APDL语言调出计算结果
调用ANSYS计算之后会发现,在matlab里找不到计算结果,只能悲催的打开ANSYS经典界面,载入计算结果。啊,天老爷啊,我折腾了半天,就给我看这个。我真是@#¥¥%&&**
不过后来我发现可以在计算模型work.txt中,添加一部分APDL代码,将该死的计算结果保存出来。
以下是我轻(da)松(fei)写(zhou)意(zhang),编写的小东西:
- /post1
- c_node=node(0,0,0) ! 从坐标获得节点编号
- *get,n_set,active,0,set,nset !获得总共运行了多少步
- *cfopen,'dataout','txt' !创建输出文本
- *do,j,1,n_set,1
- set,,j
- *get,v_time,active,0,set,time
- *get,c_temp,node,c_node,temp
- *vwrite,j,v_time,c_temp
- (F5.0,' ',f8.2,' ',F10.4)
- *enddo
- *cfclos !关闭文本
3、用matlab对计算结果进行处理
终于到这一步了。
只需要用load函数将 dataout.txt 载入matlab,我就可以为所欲为了,随便打扮这个小姑娘了,哈哈哈。