许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Matlab调用ANSYS的三种方法:联合仿真实现

Matlab调用ANSYS的三种方法:联合仿真实现

阅读数 65
点赞 0
article_banner

采用matlab作为主控程序,设置好所有的参数与选项传递给ansys(通过文件)并调用ansys计算。ansys计算结束后(默认情况下,matlab会自己等着,这一点很方便,呵呵)再用matlab处理ansys的输出文件。由于所有的设置可以在matlab中统一完成,省去很多参数同步的工作,也顺便实现了计算的自动化。呵呵。。。

   核心提示:1.如何使用matlab调用ansys,下面是个例子

*1. “!法* ”
 !"https://www.gofarlic.comProgram FilesAnsys Incv100ANSYSbinintelansys100.exe" -b -i d:inpvm1.mac -o "d:out put1.txt"    
 “! ”  是由matlab提供的用以执行shell命令的操作符(也可以用system或dos命令)**
 
*2. “system法*”
       system('https://www.gofarlic.com\ANSYS\v80\ANSYS\bin\intel\ansys80 -b -p ane3fl -i C:\sibian.dat -o C:\vm5.out')
       
*3. “dos法”*	
dos( ' "C:\Program Files\ANSYS Inc\v162\ansys\bin\winx64\ANSYS" -b    -i "C:\New folder\matlabex\ansyscampbell\in.txt" -o "C:\New folder\matlabex\ansyscampbell\out.txt" ');  
That is, every path should have " " around it, so that if it happens to have a space in it, dos will not break it up into two arguments.

参数 -b指定使用batch方式运行ansys,-i 指定输入文件,-o指定输出文件。这里有一点值得注意的是,这里的输出文件是指在gui方式运行是output windows  中的输出内容,通常不是我们想要的结果文件。

   2.我们想要的ansys结果可以通过*vwrite,*mwrite等命令写入文件,以供matlab使用。

   3.想要matlab传递给ansys的参数,也通过文件方式传递。


1、调用ANSYS

   !“https://www.gofarlic.com\ANSYS Inc\v180\ANSYS\bin\winx64\ansys180.exe” -b -i “E:\ansys2matlab\work.txt” -o “E:\ansys2matlab\process.out”;

以上为在matlab中调用ANSYS内核的代码。

“https://www.gofarlic.com\ANSYS Inc\v180\ANSYS\bin\winx64\ansys180.exe” 是ANSYS的绝对路径,依据ANSYS的安装位置改写即可;

-b 是使用batch方式运行ANSYS;

-i 是输入文件;

“E:\ansys2matlab\work.txt” 是用ANSYS APDL语言编制的计算 模型  

-o 是输出文件;

“E:\ansys2matlab\process.out” 是ANSYS计算过程的输出文件



两种方式:

  1. 当matlab调用的时候,可以采用!的方式和system函数两种方式。注意第一个ansys80这个可执行文件目录中不能有空格,否则matlab不能识别。即可以采用如下的调用方式:

        system(‘https://www.gofarlic.com\ANSYS\v80\ANSYS\bin\intel\ansys80 -b -p ane3fl -i C:\sibian.dat -o C:\vm5.out’)
  2. 这部分是关于batch的使用的,应尽量避免目录中的空格,减小不必要的麻烦。下边的batch模式是正确的。

        “https://www.gofarlic.com\ANSYS\v80\ANSYS\bin\intel\ansys80” -b -p ane3fl -i C:\sibian.dat -o C:\vm1.out

        我 的经验是输入文件和输出文件的目录不能太长,且最好不带空格。刚刚开始的时候我的输入文件的目录是C:\Documents and Settings\Administrator\sibian.dat,结果batch不能执行。改为C:\sibian.dat 即可执行了。


遇到的问题

   MATLAB调用ANSYS停止工作的解决办法:

根据国外论坛的解答,发现是堆栈溢出的问题,错误代码c00000fd

   这是一个系统层级的错误,表示堆栈溢出;这个错误是Matlab调用第三方软件时触发的,因为在执行系统命令时,堆栈内存被名为KMP_STACKSIZE的环境变量默认指定为512k,不足以调用ANSYS。

   解决办法:人为放大堆栈内存,matlab中的调用命令改为
system(‘SET KMP_STACKSIZE=2048k & “C:\path_to_ansys\ansys[ version  ].exe” [input arguments…]’)

the problem is related to a particular piece of 3rd party software ( OpenMP  ) used by MATLAB. As of 2014b, when running system commands, the stack size is limited to 512k through an environment variable called KMP_STACKSIZE. It is possible to verify the existence and value of this   environment variable by issuing the following command listing all the variables (in Windows):

System(‘SET’)

   (produces a list of all environment variables currently set…)

   For ANSYS to be able to run, you need to increase the stack size before calling the ANSYS executable. You can do this by wrapping the ANSYS call in a batch script or you can do the following:

System(‘SET KMP_STACKSIZE=2048k & “C:\path_to_ansys\ansys[version].exe” [input arguments…]’)

   例子

%% matlab调用ANSYS进行分析
%% 
% ansys 版本中的可执行文件,path中有空格要加:""
ansys_path=strcat('"E:\ANSYS16_install\ANSYS Inc\v160\ansys\bin\winx64\ANSYS160.exe"');
% jobname,不需要后缀
jobname='tianqiao1';
% 是命令流文件,也就是用ansys写的apdl语言,matlab调用时,他将以批处理方式运行,需要后缀
skriptFileName='F:\cuichanghui_here_all\mll\C92_movingload_all_use.txt';
% 输出文件所在位置,输出文件保存了程序运行的相关信息,需要后缀
outputFilename='F:\cuichanghui_here_all\cch_test.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);

SET ANS_CONSEC=YES !设定连续运行忽略警告

SET ANSYS_LOCK=OFF

SET KMP_STACKSIZE=2048k

“C:\Program Files\ANSYS Inc\v181\ansys\bin\winx64\ANSYS181” -b -i ansysinputreader.txt -o out.dat


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空