[转载]matlab 调用ansys (转载)
(2016-06-08 09:00:22)
标签:
转载 |
原文地址:matlab 调用ansys (转载) 作者:飞江河
问题的提出:我们经常会需要用ansys计算一些东西,之后再用matlab来处理计算的结果。当修改某些参数重复上述过程的时候,就比较容易出现问题——比如ansys模型中的参数和matlab程序中参数的一致性问题等。这时可以考虑采用下面的协同工作的方法。
!"D:Program FilesAnsys
Incv100ANSYSbinintelansys100.exe" -b -i d:inpvm1.mac -o
"d:out put1.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); %分离系数初始化
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
mn',X(i,1),X(i,2),X(i,3));
fclose(fid);
!"C:Program FilesAnsys Incv100ANSYSbinintelansys100.exe" -b
-i C:hangjia_25_V.mac -o "C:1.txt"
%调用ansys计算程序
!"C:Program FilesAnsys Incv100ANSYSbinintelansy
%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;
[Nrow Ncol]=size(K0);
Z=zeros(Nrow,Ncol);
I=eye(Nrow,Ncol);
A=[Z I;-K0/M0 -C0/M0];
B=[Z;I/M0];
C=[I Z];
R=B*B';
[D p]=chol(R);
if p>0
if
real(eig(A))<0
Q=lyap(A,R);
h22=sqrt(trace(C*Q*C'));
h2=3.123592886516603e-006;
Gama(i)=(h22-h2)/h2;
else
Gama(i)=-1;
end
else
Gama(i)=-1;
end
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;
[Nrow Ncol]=size(K0);
Z=zeros(Nrow,Ncol);
I=eye(Nrow,Ncol);
A=[Z I;-K0/M0 -C0/M0];
B=[Z;I/M0];
C=[I Z];
R=B*B';
[D p]=chol(R);
if p>0
else
end
end
fid0 =
fopen('result.txt','wt');
for i=1:N
fprintf(fid0,'m m m m
.5fn',i,X(i,1),X(i,2),X(i,3),Gama(i));
end
fclose(fid0);
for i=1:N
end
前一篇:ANSYS导入MATLAB