

MATLAB调用NASTRAN的连续计算解决方案 - 缤纷若风
source link: https://www.cnblogs.com/bfrf/p/16332236.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用MATLAB调用NASTRAN提交bdf文件计算的方法笔者试过几种,分别做一下介绍
MATLAB直接调用操作系统命令
该方法对单次计算可能方便些,定义一个字符串,并使用eval命令调用,具体格式为:
% strNas为NASRTAN路径% strBDF为bdf文件路径str = ['!', strNAS, ' ', strBDF];eval(str);
印象中该方法似乎是非阻塞的,但最近几次实际使用居然是阻塞调用,可能记忆有所偏差,或者版本不同(笔者版本是2019b)?不过可以顺便提下早期的做法,判断NASTRAN计算的大致时间T,通过pause(T),从而实现每个nastran计算时matlab处于暂停运算的状态,避免多个运算同时进行。当然NASTRAN的每次计算耗时并不一定相同,T只能是一个比计算耗时最大值还要大一些的值,这可能造成了大量的时间浪费。
最早我是遇到了pause的问题,并希望能在需要自动连续计算时减少不必要的等待时间,因此笔者又探索出下一种方法并至今一直在使用。
生成批处理文件调用
批处理(bat)文件功能强大,而且现在看来也很方便。不过似乎在Linux平台上有点问题?但一般在Windows系统中还是比较通用的。此外可以按需附加对一些格式文件的删除功能,代码如下:
% strNas为NASRTAN路径% strBDF为bdf文件路径% strBAT为bat文件路径strDEL = ['del /a /f /q *.MASTER' newline... 'del /a /f /q *.DBALL' newline... 'del /a /f /q *.f04' newline... 'del /a /f /q *.IFPDAT' newline... 'del /a /f /q *.xdb'];fidbat = fopen(strBAT,'w');strCOM = [strNas ' ' strBDF];fprintf(fidbat,'%s\n',strCOM);fprintf(fidbat,'%s\n',strDEL); % 删除一些不需要的文件fclose(fidbat);system(strBAT);
此处有几个小点要注意一下:
1.bdf文件与bat文件如果在同一文件夹下只需提供文件名即可,否则还是需要完整路径的。
2.matlab中调用bat分两种情况,一种是阻塞型,一种是非阻塞型,前者在被调程序运行结束后将控制权返给matlab,而后者是同步运行,在调用格式上的区别是后者是需要加标识符&的。
这是阻塞型调用:
str = 'test.bat';system(str);
这是非阻塞型调用:
str = 'test.bat &';system(str);
bat被调后会有相应输出重定向至MATLAB界面,若不希望显示在界面上,则可使用该格式
[s,c] = system(str);
若需要记录这些内容,则可以进一步地,使用diary命令,将界面内容存盘。
3.在编辑路径如strNas时,建议使用双引号括上字符串,这样的格式是一定不会出问题的,如下:
strNas = '"C:\Program Files\MSC.Software\MSC_Nastran\2020sp1\bin\nast20200.exe"';
这当中就扯到一个很有意思的话题了,如果不用双引号可不可以?在笔者这个路径下不行,原因就是笔者的NASTRAN安装在C:\Program Files\...下,该文件夹居然有空格。但如果一定不想用双引号也是有办法的,恰巧之前在知乎上看到相关的讨论,在DOS下文件夹最长识别8字符,因此需要用PROGRA~1代替表示,这也算是一个非常古早的系统设计了吧。
需要注意的是,bat的路径在MATLAB当前工作路径下,如果存在子文件夹,则需要cd进所需路径,否则nastran计算生成的一堆内容全塞在当前路径下了。
其实一直百思不得其解的问题是,在最早笔者用的应当是第1种方法,当时被计算时间的问题整的无力吐槽,恰逢当时遇到了需要连续计算大量bdf文件的问题,因此自己尝试了很多方法,最后用批处理文件至今。但回过头去发现该方法似乎和第一种大同小异,因为批处理也把控制权交由MATLAB来管理,即若在MATLAB运行bat文件时使用Ctrl+C强行中止是能够中止计算与MATLAB程序的,这与第一种已无差别。权做一个没啥用的小发现吧(手动狗头)。不过还是觉得关于PROGRA~1路径的事还是非常有意思的。
Recommend
-
62
我不知该如何形容此时此刻内心的激动,我站在椰树集团总部前,中国设计界重要的椰树学派,那么缤纷,震撼地直接展示在我眼前,我仿佛感受到一阵改革的春风,要哭了
-
8
Matlab 的传值调用的效率问题 作者: 张志强 ,...
-
6
Matlab 的并行计算 作者: 张志强 , 发表于 201...
-
16
标签: gvl怡境国际 分类:
-
7
完全免费!一秒生成缤纷背景图的在线神器「bbburst」 收藏 11小时前 编辑:
-
6
福利 | 缤纷优选,乐享元宵——来FB商城一起过节吧! - FreeBuf网络安全行业门户 限时体验 编组备份 4...
-
10
声明:本文涉及图文和模型素材仅用于个人学习、研究和欣赏,请勿二次修改、非法传播、转载、出版、商用、及进行其他获利行为。
-
3
费列罗投2.14亿美元在北美增加健达缤纷乐产能,此前刚卷入儿童感染沙门氏菌事件 原创 蓝鲸产经 李振兴 · 2022-06-15 10:58:45 阅 4.3w 北美时间6月14日,费列罗北美公司称将投资约2.14亿美元扩建其位...
-
10
为什么用RSS,能怎么用RSS订阅微信公众号 建议信息聚合(Really Simple Syndication, RSS)在08年我第一次摸到自己家电脑时就给我留下了印象,当时还想这打开都啥玩意呀怎么一堆编码,好多网站还都有,只怪当时无...
-
4
缤纷多彩的糖果色,Cherry KC200 MX键盘评测_原创_新浪众测 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK