將ANSYS作為子程序調用

對于優(yōu)化或參數化設計,可以在VC或FORTRAN中將ANSYS作為子程序調用。具體調用方法如下:
1.在VC中調用ANSYS
::WinExec("d:/ANSYS57/BIN/INTEL/ANSYS57 -b -p ansys_product_feature -i input_file -o output_file",SW_SHOWNORMAL);



2.在FORTRAN中調用ANSYS
LOGICAL(4) result
RESULT=SYSTEMQQ('d:\ANSYS57\BIN\INTEL\ANSYS57 -b -p
ansys_product_feature -i input_file -o output_file')



3.說明
1和2中,input_file為用APDL語言編寫的ANSYS輸入文件。
ansys_product_feature為你的ANSYS產品特征代碼。
需要注意的是,在VC中調用ANSYS時,需要加一條判斷語句,以確定ANSYS
已經執(zhí)行完畢。




在FORTRAN中不需要判斷,F(xiàn)ORTRAN會等ANSYS執(zhí)行完畢才繼續(xù)執(zhí)行下一條語句。
在VC中,我沒有找到與FORTRAN類似的函數,只好加一條循環(huán)判斷語句。
如果誰能找著這樣的函數,請告訴我,謝謝!



判斷方法很簡單,只需判斷錯誤文件file.err是否可寫就可以了。
因為當ANSYS在運行時,file.err是不可寫的,只有當它運行完畢,此文件才可寫。




數據文件(假設輸出的數據文件名為opt.out):
*dim,out1,,2,1
out1(1)=dmax !目標函數
out1(2)=1-eymax !約束條件1
*cfopen,opt,out
*vwrite,out1(1),out1(2)
(2f10.6)
*cfclos
在VC中相應的顯示數據文件命令為:
result=system("notepad opt.out");



圖形文件(假設ANSYS工作文件名為test,輸出jpg圖形文件,具體信息請參考命令/show):
/SHOW,JPEG
JPEG,QUAL,75,
JPEG,ORIENT,HORIZ
JPEG,COLOR,2
JPEG,TMOD,1
/GFILE,600,
!*
plns,uy
/SHOW,TERM
在VC中相應的顯示圖形文件命令為:
result=system("mspaint test001.jpg");




**************************************************************************************
VC調用ANSYS的示例程序。
file://Test.cpp
#include "stdio.h"
#include"process.h"
void main()
{
int result;
printf("Solving...");
result=system("d:/ANSYS57/BIN/INTEL/ANSYS57 -b -p ansysul -i test.txt -o test.out");
file://不用::WinExec,就用不著等待語句,可以實現(xiàn)用FORTRAN調用一樣的效果。
printf("Solution finished...");
}




怎么還不知道?那個特征表找著沒有?ANSYS幫助->ANSYS,INC.Licensing Guide->License files->What are License files->Product feature Table
以第一行為例:ANSYS/MULTIPHYSICS ane3fl
ANSYS/MULTIPHYSICS是產品特征名稱,ane3fl是與其對應的產品特征代碼,把這個代碼填到下面的語句中:
result=system("d:/ANSYS57/BIN/INTEL/ANSYS57 -b -p ane3fl -i test.txt -o test.out");
VC中的變量與APDL語言中的變量可以進行數據交換,否則怎么實現(xiàn)參數化或優(yōu)化設計?
不過不能直接互換.我采用的辦法是,在VC中將變量結果寫到一個文件中,然后再在ANSYS的APDL語言文件中讀入這個文件的數據,再由ANSYS進行新的計算,計算結束之后,再由后處理處理結果,并將結果數據輸出到一個文件中,然后用VC讀入此文件中的數據,進行下一步處理
登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP