当前位置:   article > 正文

MATLAB调用ANSYS进行有限元分析_采用matlab与ansys apdl联合的方法,一键批量计算所有截面的实常

采用matlab与ansys apdl联合的方法,一键批量计算所有截面的实常

在有限元分析中,当我们需要改变模型的多个物理参数反复进行分析求解。在ANSYS环境下重复操作费时费力。因此,可以使用MATLAB和ANSYS联合进行求解。
MATLAB调用ANSYS进行有限元分析步骤如下:

  1. MATLAB生成数据,并以科学计数法的形式写出到一个txt文件“input.txt”中;
  2. 编写ansys的APDL程序,在MATLAB环境下调用APDL程序,ANSYS以batch方式运行进行分析求解,并输出想要分析的结果,写出到一个txt文件“output.txt”中;;
  3. MATLAB调用“output.txt”,进行数据分析。

在上述步骤中,有3个 最最核心的关键:

  1. 以科学计数法的形式生成数据文件“input.txt”,是为了能够让“input.txt”正确调用到创建的ANSYS数组中,只有数据正确调用到ANSYS中才能准确进行有限元求解。(科学计数法的形式是目前我发现的最方便调用的数据形式)
%% 将matlab中的样本数据以科学计数法的形式导出成txt文件
sample = [2.5e-3, 2.1e11, 1.185e-3, 2.1e11, 3.031e-3, 2.1e11, 5.0e4, 5.0e4 5.0e4];
fid = fopen('truss.txt', 'wt');                                % -t模式按照文本而非二进制模式读写 
fprintf(fid,[repmat('  %.4e  ', 1, size(sample,2)), '\n'], sample');      % 转置并适时(写完一列后)添加换行
fclose(fid); 
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 在编写APDL代码时,首先要创建一个数组用于储存输入数据“input.txt”,
! 文件写入
*Create, dataread, mac
*DIM, input, array, 1, 9                    ! 创建样本数据存储的数组
*VREAD, input(1,1), F:\MATLAB_ANSYS\input, TXT, , JIK, 9, 1
(9f14.4)
*End
Dataread
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

然后进行有限元分析之后,对于想要输出的结果进行输出,创建一个数组储存想要输出的数据并将其写出到一个txt文件“output.txt”。

! 将数据导出
*DIM, output, array, 1, 1                    ! 创建数据存储的数组
*get, output(1), node, 5, U, y   ! 返回节点5的Y位置,并将结果作为output存储。 
*create, datawrite, mac
*cfopen, F:\MATLAB_ANSYS\output, txt
*vwrite, output(1,1)
  (f14.6)
*cfclose
*end
Datawrite
finish
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

上述代码具体含义参考;
使用MATLAB和ANSYS解决大量不同几何参数和荷载样本下连续求解结点位移.

  1. MATLAB调用ANSYS的操作流程
% ansys 版本中的可执行文件,path中有空格要加:""
ansys_path=strcat('"E:\ANSYS150\ANSYS Inc\v150\ansys\bin\winx64\ansys150.exe"');
% jobname,不需要后缀
jobname='truss';
% 是命令流文件,也就是用ansys写的apdl语言,matlab调用时,他将以批处理方式运行,需要后缀
skriptFileName='F:\MATLAB_ANSYS\truss_ansys.mac';
% 输出文件所在位置,输出文件保存了程序运行的相关信息,需要后缀
outputFilename='F:\MATLAB_ANSYS\ans.out';
% 最终总的调用字符串,其中:32代表空格的字符串ASCII码
sys_char=strcat('SET KMP_STACKSIZE=2048k &',32,ansys_path,32,...
    '-b -p ane3fl -i',32,skriptFileName,32,...
    '-j',32,jobname,32,...
    '-o',32,outputFilename),
% 调用ANSYS
ans1=system(sys_char);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

上述代码具体含义参考;
Matlab调用ANSYS的三种方法.

之后再用matlab调用ANSYS的输出文件“output.txt”就可以进行数据分析了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/90091
推荐阅读
相关标签
  

闽ICP备14008679号