最近使用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,我就可以爲所欲爲了,隨便打扮這個小姑娘了,哈哈哈。