首页/文章/ 详情

设计仿真 | MSC Nastran小众但便利的功能解读

1月前浏览879

引言        

MSC Nastran具备静力学、动力学、非线性、优化、气弹等功能全面的结构分析功能,在航空航天、汽车、船舶等各个行业均有广泛的应用。


一般MSC Nastran的应用场合都是非常严肃的工程应用场景,但作为一款具有五十多年历史的经典软件,其丰富而强大的功能中总会有一些相对小众、有趣、而在某些情况下又非常便利的功能,这篇文章就选取了几项这类功能进行了简单的介绍,其它更多的功能等待广大用户去继续挖掘。

■ ISHELL

■ Pre和Post

■ 模型参数替换

■ 账户管理

■ 输出文件操作

image.png        



   

     
ISHELL      

很多用户在使用MSC Nastran的时候通过bat语句去调用MSC Nastran来执行批量式计算,或者通过编写程序来修改bdf文件内容以及反复调用MSC Nastran来完成特定功能的计算分析。

在这些应用中MSC Nastran都处于被调用的位置,而其实MSC Nastran也可以作为主动方去调用其它程序。在很多情况下,采用MSC Nastran去调用其它程序可能更加便利。


MSC Nastran采用ISHELL去调用其它外部程序,支持bat/sh/ksh/csh语句、exe可执行文件、python脚本、perl脚本等。外部程序执行完成后也可以通过FORTIO来读取外部文件生成的内容供后续MSC Nastran继续执行计算来使用。这一步并不是必须的,如果无需数据返回,也可以不执行FORTIO这一步。


image.png      

下图是一个简单的示例,在MSC Nastran执行计算的最初阶段执行了python脚本。如下图中的脚本的两个功能是直接输出“The Zen of Python”以及将“hello world”保存在hello.txt中。


image.png      

ISHELL支持调用bat脚本,因此其中的可操作空间非常大,例如可以启动Patran、调用MATLAB执行计算,甚至是嵌套调用MSC Nastran执行另一个分析任务,其使用非常灵活,用户可以根据自身的需求来尝试使用。更详细的使用说明请参考[1, 2]。


   



   

     
Pre和Post      

前面描述的ishell主要是用于在MSC Nastran计算执行过程中,在特定的位置来调用外部程序,如果是在计算之前或者计算之后调用的话,则可以用更为简单的pre和post关键字。


如下图所示,首先将需要执行的命令写成bat脚本,然后在提交MSC Nastran计算时加入关键字pre或者post,使之等于脚本文件即可。下图中的脚本文件是启动Patran,并将脚本文件命名为run_patran.bat,然后用pre=run_patran.bat,即可在启动MSC Nastran计算之前启动Patran,采用post关键字则会在MSC Nastran计算结束之前来启动Patran。


与ishell类似,脚本文件具有极为丰富的可操作空间,用户可以根据实际需要,来编写相应的脚本来完成所需的功能。


image.png      

   



     

       
模型参数替换        

当采用MSC Nastran进行结构分析时,经常需要通过改变结构模型中的参数(如材料物性、单元属性等)来评估结构模型参数改变对结构特性的影响。MSC Nastran针对这类问题有多种解决途径,例如:


■ 手动或者编程直接修改bdf文件中的参数,然后执行批量计算;

■ 采用Odyssee / CAEfatigue等商用工具来批量修改bdf文件中的参数后批量计算并自动提取指定的结果数据,参考[3、4];

■ 采用STOCHASTICS卡片或者MONCARL卡片,参考[5、6];

■ 采用MSC Nastran已经内置了模型参数替换功能,用户可以直接使用,这部分就对这个方法进行简要介绍。


这一功能在使用时只需要在卡片对应位置输入%lable%,然后在提交计算时指定其具体数值即可,这样在实际执行计算过程中bdf文件中所有存在%lable%的位置均等效于所指定的数值。


如下图中的示例,在TITLE的位置和PSHELL卡片厚度域的位置均写为%thickness%,然后提交计算时采用关键字:repsym=thickness=0.1,最终f06文件中的模态计算结果即为壳单元厚度为0.1时的结果,与此同时f06文件中的TITLE区域也会将%thickness%替换为0.1。更详细的使用介绍见[1]。


image.png        

按照上面的操作步骤,用户完全可以用同一个bdf模型文件,在批量提交计算时在提交命令中根据实际需要修改参数,从而完成变参分析。这样操作可以避免每次修改参数都去编辑bdf文件,不仅可以减少手工操作、降低编程难度,而且可以提高程序执行的效率。


     



       

         
账户管理          

MSC Nastran内置了一套简单的账户管理工具,其主要作用是用于收集MSC Nastran分析求解任务的执行情况。


当用户提交MSC Nastran求解任务时,在关键字加入:acct=yes acid=XXX。这样MSC Nastran会自动将本次计算执行的时刻、耗费的时间、使用的软件版本、模型文件的位置和名称、求解序列以及执行分析求解的账户记录在指定的文件中。其默认的记录位置为MSC Nastran安装目录中的acct文件夹中,后缀为*.acc。注意:要求执行分析求解的用户对于此文件夹具有读、写以及创建新文件的权限。


下图中的下半部分就是一个执行计算命令的示例,上半部分是一个汇总文件的示例。


image.png          

如果上述关键字中没有acid时,那么上述信息可以正常写入汇总文件,其最后一个数据账户则是空白,反之,如果关键字中没有acct=yes,汇总信息不会写入。

除了上述基本操作之外,软件还支持将acct和acvalid两个关键字写入rcf文件,如下图所示。其中acvalid在等号后面的格式是字母f或者w跟着正则表达式,如果是字母f那么在执行过程中如果用户输入的账户名称不符合正则表达式的规则,那么MSC Nastran则禁止继续执行计算,而如果字母是w,那么MSC Nastran会报一个警告,然后继续执行计算。


image.png          

从上图命令行窗口中的第一次输入也可以看出,虽然此次计算不允许继续执行,但是窗口中的信息也告知了正则表达式的形式,因此后续用户可以根据提示修改账户名称来完成计算。从这一点也可以看出,这套工具并非为了强制验证用户对MSC Nastran的使用权限,而是“柔和”的提供了一套信息汇总的工具,便于系统管理人员对MSC Nastran的使用情况进行汇总分析。


除此之外,MSC Nastran还提供了一个账户数据自动汇总分析工具“MSCACT”,此工具可以自动读取、分析并展示汇总文件中的数据。其详细的使用方法见[7]。


       




       

         
计算输出文件操作          

MSC Nastran的计算输出文件一般包含f06、f04、log、h5文件等,这些文件的功能大体如下:f06:计算报错信息、警告信息,根据需要可以写入结果信息,但一般不推荐写入;f04:计算过程的硬件使用、内部模块和subdmap调用信息;log:计算日志,如:许可使用、执行的关键字、计算的时间、模型的自由度、简要的warning和fatal编号等;punch:格式化的结果数据;h5、op2、op4、xdb等均为结果数据格式,当前默认以及推荐采用h5格式。


MSC Nastran在计算执行过程中会根据计算中输出的信息类型,来将其分别输出到各个文件之中,以便于用户分类查看。但是有时候用户在计算求解时在f06文件中检索到了fatal,希望了解这个fatal错误的具体来源,这时候就可以将f04、f06以及矩阵列表进行混合输出,在出现fatal文字出现位置附近进行检索,可能可以部分的帮助用户来对模型进行调整。


image.png          

上图是一个简单的示例,在bdf文件第一行写MSC Nastran F04=6,这样在右侧的f06文件中即可看到原来属于f04文件的内容。此bdf文件中有一个错误时PSHELL卡片的第二域应该是整数,这里写成了实数。当然在原来f06文件的提示中就非常清晰的告知在第21行的PID数值类型错误。但是如果我们暂且忽略这个内容(因为并不是所有的fatal信息都像这个这么清晰),同样在fatal上方也可以看到名称为IFPSTAR的subdmap的第56行的NEWIFP函数出了问题,而这个函数正是用来读取bdf文件内容的。这样如果对于有些报错如果f06文件内容的fatal提示信息不足,可以通过这种方法来对错误有更全面的了解。


image.png          

用户也可以在提交计算时用关键字append=yes将f06、f04、log汇总为一个out文件,但是这种汇总时直接机械的累加,不是像上文所述,根据实际程序执行的过程来顺序穿插输出的。


很多用户需要通过编程读取MSC Nastran的计算结果然后进行后续的复杂计算。当前推荐采用直接读取h5文件的方式来进行。然后仍然有很多用户由于历史习惯或者其它原因,仍然希望读取f06文件内容,但是f06文件内容不够规整,直接去读的话,需要耗费大量的时间用于编写程序去进行文件内容的定位。对于这种情况我们也可以通过编写一段简单的DMAP语句,让指定内容的结果输出到单独的文件中,以便于编程读取。如下图中的左侧红框中的语句,首先找到所需要输出的结果的来源位置,然后通过putsys命令临时修改一下f06文件的fortran unit数值,从6变成7。完成指定内容的输出之后再恢复。7为punch文件的默认编号,这里只是借用了一下punch文件的后缀,其中仍然保持为原有f06文件的内容和格式。用户可以直接读取这些内容,大大减少在f06中定位所需的复杂程序。


image.png          

        


来源:IFD优飞迪
ACTNastranPatran静力学非线性航空航天船舶汽车电子MATLABpython材料数字孪生
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-08-26
最近编辑:1月前
优飞迪科技
赋能新仿真,创优新设计
获赞 326粉丝 351文章 540课程 4
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈