找回密码
 注册
Simdroid-非首页
查看: 74|回复: 4

matlab调用ansys计算模态,算不出结果???

[复制链接]
发表于 2019-6-21 14:05:55 | 显示全部楼层 |阅读模式 来自 江苏南京
小弟正在做一个有关优化的问题,由于ansys mechanical矩阵处理不方便,我试着用matlab循环调用ansys计算模态的方法得到数据。然而在计算中总有那么几个样本的模态算不出来,模态阶数没到设定阶数。但是把样本数据输出出来到apdl里计算是正常的,很困扰,求助论坛大佬
 楼主| 发表于 2019-6-21 14:14:35 | 显示全部楼层 来自 江苏南京
Simdroid开发平台
具体过程是这样的,先在matlab里用拉丁超立方方法得到模型尺寸的样本矩阵,然后在循环里先输出尺寸数据文本,作为计算命令流的输入文件,接着调用ansys计算,并输出对应的模态位移矩阵,matlab再读入数据。问题就是在循环调用ansys计算的时候就是有一两步计算结果不正常,而且计算时间也很久。而且发现当用matlab调用是,只计算有问题的那一组尺寸样本时会出现同样的问题。用apdl直接计算是就是正常的。
回复 不支持

使用道具 举报

 楼主| 发表于 2019-6-21 14:19:40 | 显示全部楼层 来自 江苏
不是偶然现象,不知道各位遇到过没有,还是我的程序有bug,
回复 不支持

使用道具 举报

 楼主| 发表于 2019-6-21 14:27:33 | 显示全部楼层 来自 江苏
  1. clear;
  2. clc;
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. %%%%%%%%%%%抽样参数设定和变量范围设定%%%%%%%%%%%%%%%%%%%%%%%%%%
  5. %                                                           %
  6. lhsnum = 10;  pnum = 12;        %拉丁超立方抽样个数,同样为循环计算次数,pnum样本维数
  7. LBUBs = zeros(pnum,2);      %参数的范围矩阵
  8. LBUBs = [0.2        0.35        % B2 内圈厚度占比
  9.          0.4    0.9         % B3 腹板底部距内圈底部距离占比
  10.          0.5e-3 1e-3        % H4 腹板厚度
  11.          1.2e-3 3e-3        % H7 内圈厚度
  12.          0.3        0.7         % B4 腹板底部距外圈底部占外圈厚度比
  13.          1.2e-3 3e-3        % H2 定子齿基板厚度
  14.          0.5e-3 2e-3        % H3 尺高
  15.          15e-3  21e-3       % D1 内圈内径
  16.          0.3        0.6         % B1 外圈厚度占比
  17.          0.3e-3 1e-3        % T1 齿隙宽
  18.          0.2        0.8         % BL5 齿顶宽度占外圈壁厚比
  19.          0.1        0.9];       % BC_ 齿顶偏移程度
  20. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  21. %%%%%%%%%%%%%%%%%%拉丁超立方样本生成%%%%%%%%%%%%%%%%%%%%%%%%%%
  22. %                                                           %
  23. xlhs = lhsdesign(lhsnum,pnum);  %拉丁超立方抽样
  24. Samp = zeros(lhsnum,pnum)';
  25. for i=1:pnum
  26.    Samp(i,:)= (LBUBs(i,2)-LBUBs(i,1))*xlhs(:,i)'+LBUBs(i,1);
  27. end
  28. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  29. %%%%%%%%%%%%%%%%%%调用ansys计算%%%%%%%%%%%%%%%%%%%%%%%%%%
  30. %                                                           %
  31. canshu=zeros(2,1);
  32. diss=zeros(630,40,lhsnum);
  33. fres=zeros(40,lhsnum);
  34. for i=1:lhsnum
  35.     fid=fopen('varable.txt','wt');   %打开varable.txt文件 如果没此文件,先创建
  36.         fprintf(fid,'B2=%5.6f\n',Samp(1,i));  %创建尺寸参数文本
  37.         fprintf(fid,'B3=%5.6f\n',Samp(2,i));
  38.         fprintf(fid,'H4=%5.6f\n',Samp(3,i));
  39.         fprintf(fid,'H7=%5.6f\n',Samp(4,i));
  40.         fprintf(fid,'B4=%5.6f\n',Samp(5,i));
  41.         fprintf(fid,'H2=%5.6f\n',Samp(6,i));
  42.         fprintf(fid,'H3=%5.6f\n',Samp(7,i));
  43.         fprintf(fid,'D1=%5.6f\n',Samp(8,i));
  44.         fprintf(fid,'B1=%5.6f\n',Samp(9,i));
  45.         fprintf(fid,'T1=%5.6f\n',Samp(10,i));
  46.         fprintf(fid,'BL5=%5.6f\n',Samp(11,i));
  47.         fprintf(fid,'BC_=%5.6f\n',Samp(12,i));
  48.         fprintf(fid,'CyNum=%5.6f\n',i);
  49.         fclose(fid);
  50. %%%%%%%%%%%将matlab产生的初始设计变量写入文件varable.txt中%%%%%%%%%%%%
  51. ! "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   
  52. spath = strcat('canshu' , num2str(i),'.TXT');
  53. canshu=importdata( spath );                         %读取模态阶数
  54. diss(:,1:canshu(1,1),i)=importdata('xdis.txt');     %读取各阶模态振幅
  55. fres(1:canshu(1,1),i)=importdata('fre.txt');        %读取各阶频率
  56. end
复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2019-6-21 14:45:51 | 显示全部楼层 来自 江苏南京
上面是matlab主程序代码,另外我ansys版本是18.0,matlab版本是2016b
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-20 00:39 , Processed in 0.034075 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表