问题的提出:我们经常会需要用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);