問題的提出:我們經常會需要用ansys計算一些東西,之后再用matlab來處理計算的結果。當修改某些參數重復上述過程的時候,就比較容易出現問題——比如ansys模型中的參數和matlab程序中參數的一致性問題等。這時可以考慮采用下面的協同工作的方法。 解決的方法:采用matlab作為主控程序,設置好所有的參數與選項傳遞給ansys(通過文件)并調用ansys計算。ansys計算結束后(默認情況下,matlab會自己等著,這一點很方便,呵呵)再用matlab處理ansys的輸出文件。由于所有的設置可以在matlab中統一完成,省去很多參數同步的工作,也順便實現了計算的自動化。呵呵。。。
核心提示:1.如何使用matlab調用ansys,下面是個例子
!"D:\Program Files\AnsysInc\v100\ANSYS\bin\intel\ansys100.exe" -b -i d:\inp\vm1.mac -o "d:\out put\1.txt"
! 是由matlab提供的用以執行shell命令的操作符(也可以用system或dos命令)
參數 -b指定使用batch方式運行ansys,-i 指定輸入文件,-o指定輸出文件。這里有一點值得注意的是,這里的輸出文件是指在gui方式運行是output windows中的輸出內容,通常不是我們想要的結果文件。
2.我們想要的ansys結果可以通過*vwrite,*mwrite等命令寫入文件,以供matlab使用。
3.想要matlab傳遞給ansys的參數,也通過文件方式傳遞。(不知哪位大俠有其他的方法,請不吝賜教!)
下面給出一個matlab調用ansys求解H2范數的例子:
%matlab和ansys協同工作
clear all;
e_num=25; %桿件總數
B=(1:e_num);
X=combnk(B,3);
N=size(X,1);
Gama=zeros(1,N); %分離系數初始化
for i=1:4
fid = fopen('flag.txt','wt');
fprintf(fid,'m m m\n',X(i,1),X(i,2),X(i,3));
fclose(fid);
!"C:\Program Files\AnsysInc\v100\ANSYS\bin\intel\ansys100.exe" -b -i C:\hangjia_25_V.mac -o "C:\1.txt" %調用ansys計算程序
%H2范數
format long;
K0=load('SMATR.txt');
M0=load('MMATR.txt');
C0=load('CMATR.txt');
E=2.06e11;
A=5.48e-3;
L=1.0;
K0=E*A/L*K0;
C0=1e5*C0;
[NrowNcol]=size(K0);