江南之梦

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

前两天在做一个通过MATLAB调用ANSYS来进行优化的联合模拟。之前一直通过MATLAB提供的system命令调用ANSYS以batch mode运行命令流都没有问题,可是这一次却出现了一个Windows错误“ANSYS Program has stopped working”。在最开始的debug阶段以为是ANSYS命令流的问题,但是输入文件直接通过ANSYS的batch mode以及command prompt都是可以运行。而且笔者还尝试了一些ANSYS自带的例子,发现其中一些也无法通过MATLAB调用。之后笔者又在MATLAB里更换了dos以及“!”命令,发现问题依旧。这种状态持续了近一个星期,最终在一个帖子(http://www.mathworks.com/matlabcentral/answers/160210-how-can-i-run-ansys-from-matlab)里找到了解决方法。

 

MATLAB自从2014b之后,在运行system命令时,通过一个环境变量KMP_STACKSIZE将stack size设置成了512k。这就导致如果调用的程序过大的话Windows会因为堆栈溢出而报错。之后笔者按照建议通过

system('SET KMP_STACKSIZE=2048k')

增加stack size之后,问题得到解决。至于设置多大的stack size可以保证调用程序可以成功运行,这个问题还没有确切的答案。

 

 


posted on 2015-11-25 11:06  江南之梦  阅读(778)  评论(0)    收藏  举报