news 2026/7/4 10:11:22

Matlab调用ANSYS的三种方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Matlab调用ANSYS的三种方法

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

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

*1. “!法* ” !"D:Program FilesAnsys Incv100ANSYSbinintelansys100.exe" -b -i d:inpvm1.mac -o "d:out put1.txt" “! ” 是由matlab提供的用以执行shell命令的操作符(也可以用system或dos命令)** *2. “system法*” system('D:\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
!“D:\ANSYS Inc\v180\ANSYS\bin\winx64\ansys180.exe” -b -i “E:\ansys2matlab\work.txt” -o “E:\ansys2matlab\process.out”;

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

“D:\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(‘D:\ANSYS\v80\ANSYS\bin\intel\ansys80 -b -p ane3fl -i C:\sibian.dat -o C:\vm5.out’)
  2. 这部分是关于batch的使用的,应尽量避免目录中的空格,减小不必要的麻烦。下边的batch模式是正确的。
    “D:\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), % 调用ANSYSans1=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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 10:08:46

Acunetix实战指南:从零部署到DevSecOps集成的Web漏洞扫描

1. 项目概述:为什么我们需要一个专业的Web漏洞扫描器?在今天的数字化世界里,一个企业的门面往往就是它的官方网站或Web应用。然而,这道“门”的安全性,却常常被开发速度和业务需求所挤压,成为最容易被忽视的…

作者头像 李华
网站建设 2026/7/4 10:08:29

Altium Designer工程创建与PCB设计规范指南

1. Altium Designer工程创建基础解析作为电子设计自动化(EDA)领域的行业标准工具,Altium Designer的工程创建是PCB设计流程的第一步。一个规范的工程结构不仅能提高设计效率,还能避免后期出现的各种文件管理问题。在实际工作中,我见过太多因为…

作者头像 李华
网站建设 2026/7/4 10:08:19

基于WSEN-ISDS的6DoF IMU运动跟踪系统设计与实现

1. 项目背景与核心器件选型在工业自动化、机器人导航和运动控制领域,精确跟踪物体在三维空间中的角运动和线性运动一直是个关键挑战。传统方案往往需要分别部署加速度计和陀螺仪,不仅增加了系统复杂度,还面临传感器数据融合的难题。STMicroel…

作者头像 李华
网站建设 2026/7/4 10:08:09

微信小程序逆向实战:wxappunpacker解包与AES加密数据解密分析

1. 项目概述与背景解析最近在分析一个微信小程序时,遇到了一个挺有意思的挑战:它的核心业务数据在传输和存储时都做了加密处理,前端代码也被打包混淆了。这对于想了解其内部实现逻辑、进行安全审计或者做一些合规性数据迁移来说,就…

作者头像 李华
网站建设 2026/7/4 10:07:35

AI多智能体协同系统实战:可观测性、状态契约与可调试技术栈

1. 这不是又一个“AI Agent 教程”,而是一线开发者写给同行的实战备忘录AgentCrewOps — Part 1 — Agents for builders: goals, gotchas, and a practical starting stack——这个标题里藏着三重真实信号:第一,“CrewOps”不是造词游戏&…

作者头像 李华
网站建设 2026/7/4 10:06:52

三轴运动追踪系统:WSEN-ISDS与PIC24微控制器的应用

1. 项目概述:三轴运动追踪的核心组件这个项目本质上是要实现一个全维度的运动追踪系统,核心在于将WSEN-ISDS三轴加速度计与PIC24FV32KA301微控制器相结合。WSEN-ISDS(型号2536030320001)是Wrth Elektronik推出的一款数字输出MEMS传…

作者头像 李华