定制结果输出----一个基于MSC Marc的二次开发例子

  • Posted on
  • by

MSC Marc是一款强大的非线性有限元计算软件。在使用该软件进行仿真的时候,软件根据计算模型提供了各种结果输出。

随着模型的变大,结果文件也随之变大,可能多达几十甚至上百G。尽管计算结果很多,但有时候有参考价值的信息也就一小部分。Marc没有提供计算的时候只输出某一结果到单独文件的功能,只能打开包含所有输出结果的文件,提取相应信息再输出。当使用后处理软件,比如MSC Mentat进行历史曲线提取的时候,需要读入整个结果文件到内存再逐步输出,这个过程非常缓慢。好在Marc提供了一百多个子程序,让用户可以达到修改本构关系、计算参数以及定制输出等多样的目的。

本文给出了一个输出反作用力到独立文件的例子。只要进行简单的修改,用户还可以用它实现输出包括位移、摩擦力等几十种信息到单独文件的功能。使用子程序的好处是可以边计算边提取结果,这样当模型计算完毕的时候,所需要的信息也提取完成,用户无需额外的时间等待结果。

关于Marc的子程序环境配置过程这里不再介绍,读者可以参考MSC的官方文档或者其它相关资料。在使用该子程序的时候,需要在结果输出面板打开impd子程序功能,并在计算面板关联本文提供的子程序。需要输出的节点保存在名为ndset的set(组)中,该组只能有一个节点。如果没有创建这个组,程序将不会计算;如果组里有多于一个的节点,程序会继续计算,但是在结果文件fort.txt中会有类似以下的错误提示:

|-------------------------------------------------------------------------|
|          Incorrect node information in Undset                           |
|    1ndset with    2nodes:             125, 126                          |
|-------------------------------------------------------------------------|

同时提供的还有一个有限元算例,建模过程用Marc所支持的流程文件编写。

结果定制输出子程序:impd.f 有限元算例:impd_demo.proc