matlab调用ansys计算模态,算不出结果???
小弟正在做一个有关优化的问题,由于ansys mechanical矩阵处理不方便,我试着用matlab循环调用ansys计算模态的方法得到数据。然而在计算中总有那么几个样本的模态算不出来,模态阶数没到设定阶数。但是把样本数据输出出来到apdl里计算是正常的:(,很困扰,求助论坛大佬 具体过程是这样的,先在matlab里用拉丁超立方方法得到模型尺寸的样本矩阵,然后在循环里先输出尺寸数据文本,作为计算命令流的输入文件,接着调用ansys计算,并输出对应的模态位移矩阵,matlab再读入数据。问题就是在循环调用ansys计算的时候就是有一两步计算结果不正常,而且计算时间也很久。而且发现当用matlab调用是,只计算有问题的那一组尺寸样本时会出现同样的问题。用apdl直接计算是就是正常的。 不是偶然现象,不知道各位遇到过没有,还是我的程序有bug,:Q clear;clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%抽样参数设定和变量范围设定%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
lhsnum = 10;pnum = 12; %拉丁超立方抽样个数,同样为循环计算次数,pnum样本维数
LBUBs = zeros(pnum,2); %参数的范围矩阵
LBUBs = [0.2 0.35 % B2 内圈厚度占比
0.4 0.9 % B3 腹板底部距内圈底部距离占比
0.5e-3 1e-3 % H4 腹板厚度
1.2e-3 3e-3 % H7 内圈厚度
0.3 0.7 % B4 腹板底部距外圈底部占外圈厚度比
1.2e-3 3e-3 % H2 定子齿基板厚度
0.5e-3 2e-3 % H3 尺高
15e-321e-3 % D1 内圈内径
0.3 0.6 % B1 外圈厚度占比
0.3e-3 1e-3 % T1 齿隙宽
0.2 0.8 % BL5 齿顶宽度占外圈壁厚比
0.1 0.9]; % BC_ 齿顶偏移程度
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%拉丁超立方样本生成%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
xlhs = lhsdesign(lhsnum,pnum);%拉丁超立方抽样
Samp = zeros(lhsnum,pnum)';
for i=1:pnum
Samp(i,:)= (LBUBs(i,2)-LBUBs(i,1))*xlhs(:,i)'+LBUBs(i,1);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%调用ansys计算%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
canshu=zeros(2,1);
diss=zeros(630,40,lhsnum);
fres=zeros(40,lhsnum);
for i=1:lhsnum
fid=fopen('varable.txt','wt'); %打开varable.txt文件 如果没此文件,先创建
fprintf(fid,'B2=%5.6f\n',Samp(1,i));%创建尺寸参数文本
fprintf(fid,'B3=%5.6f\n',Samp(2,i));
fprintf(fid,'H4=%5.6f\n',Samp(3,i));
fprintf(fid,'H7=%5.6f\n',Samp(4,i));
fprintf(fid,'B4=%5.6f\n',Samp(5,i));
fprintf(fid,'H2=%5.6f\n',Samp(6,i));
fprintf(fid,'H3=%5.6f\n',Samp(7,i));
fprintf(fid,'D1=%5.6f\n',Samp(8,i));
fprintf(fid,'B1=%5.6f\n',Samp(9,i));
fprintf(fid,'T1=%5.6f\n',Samp(10,i));
fprintf(fid,'BL5=%5.6f\n',Samp(11,i));
fprintf(fid,'BC_=%5.6f\n',Samp(12,i));
fprintf(fid,'CyNum=%5.6f\n',i);
fclose(fid);
%%%%%%%%%%%将matlab产生的初始设计变量写入文件varable.txt中%%%%%%%%%%%%
! "D:\anasys160\v160\ansys\bin\winx64\ansys160" -b -p ane3fl -j 125 -i E:\00-bysj\optim\12jm\MAnalys.mac -o E:\00-bysj\optim\12jm\outfile.out
spath = strcat('canshu' , num2str(i),'.TXT');
canshu=importdata( spath ); %读取模态阶数
diss(:,1:canshu(1,1),i)=importdata('xdis.txt'); %读取各阶模态振幅
fres(1:canshu(1,1),i)=importdata('fre.txt'); %读取各阶频率
end 上面是matlab主程序代码,另外我ansys版本是18.0,matlab版本是2016b
页:
[1]