2017-07-11 112 views
1

我正在使用Abaqus 6.14插件,它可以帮助我在我的工程师论文中编写Python程序。据Abaqus scripting reference guide可以通过调用导入来自输出数据库(* .odb文件)材料:是否可以使用脚本从Abaqus CAE的材料库中导入材料?

from abaqus import mdb 
mdb.models[name].materialsFromOdb(filename) 

然而,随着的Abaqus允许用户导出/导入材料/从较轻的材料库(* .LIB文件),并在模型之间共享它们,我想从这些模型中导入材料,而不是通常庞大的* .odb文件。尽管我想减少我的插件的重复工作量,因为我需要在非常相似的模型上运行几十个模拟,但使用不同的材质和一些其他参数。我知道我也可以在模板* .cae文件中提供必要的材料,但如果我必须手动将新材料导入到几十个模型或我必须更新现有材料的属性,这可能会非常不方便。

我在寻找什么是一种解决方法,它允许使用Python脚本将材料从材料库导入到Abaqus mdb模型,但是如果仅存在此类解决方法,则可以避免实施自定义* .lib文件解析器。

回答

3

您需要知道的第一件事是Abaqus材料库只是一个腌制文件。不需要专门的解析器来处理它。您可以使用标准Python库picklecPickle。当然,你需要弄清楚内部对象的确切结构。这并不难,因为你会发现它只是一个简单的元组列表。

但是,如果您有一个现有的材料库并且想要在您的Abaqus CAE数据库中导入一种材料,现在有一种方法可以实现它。

Abaqus中有一种方法,它使用材料数据库中的材料字符串并从中创建材料对象。我不记得确切的名称,但如果您手动导入一种材料并查看abaqus.rpy文件,您会看到它。

这里一个棘手的问题是,为了使用这种方法,您需要从材料库中获取材料字符串。这可以通过阅读材料数据库文件来完成。如前所述,这是腌菜的格式。如您所知,Abaqus已经有了从材料库中读取数据并将其导入CAE模型的方法。他们有一个可以使用的Python模块,但它只能在GUI进程中使用,而不能在内核中使用。如果你想花一些时间,你可以找出哪个模块做到这一点。在Abaqus安装文件夹中,您可以找到一些.pyc文件。如果你使用Python反编译器,你可以获得这些模块的源代码。寻找那些以mat开头的人。

+0

谢谢,作品完全按照预期工作。为了准确,您提到的方法是materials.createMaterialFromDataString(型号名称,材料名称,版本,数据)。取出库文件后,您将拥有5元组列表:元组中的最后一个元素是一个字典,其属性'data'应该作为数据参数传递给函数。 –