2

我正在开发 Abaqus 6.14 插件,它可以帮助我完成我用 Python 编写的工程师论文。根据Abaqus 脚本参考指南,可以通过调用从输出数据库(*.odb 文件)导入材料:

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

然而,由于 Abaqus 允许用户从相对轻量级的材料库(*.lib 文件)导出/导入材料并在模型之间共享它们,我想从这些而不是从通常庞大的 *.odb 文件中导入材料。

当然,这可以轻松地手动完成,尽管我想使用我的插件减少重复工作的数量,因为我需要在非常相似的模型上运行数十次模拟,但使用不同的材料和一些其他参数。我知道我也可以在模板 *.cae 文件中提供必要的材料,尽管如果我必须手动将新材料导入到数十个模型中或者我必须更新现有材料的属性,这可能会非常不方便。

我正在寻找一种解决方法,允许使用 Python 脚本将材料从材料库导入 Abaqus mdb 模型,但如果仅存在这种解决方法,则避免实现自定义 *.lib 文件解析器。

4

1 回答 1

3

您需要知道的第一件事是 Abaqus 材料库只是一个腌制文件。不需要特殊的解析器来使用它。您可以只使用标准 Python 库picklecPickle。当然,你需要弄清楚里面物体的确切结构。这并不难,因为您会看到它只是简单元组的列表。

但是,如果您有一个现有的材料库并且想要在 Abaqus CAE 数据库中导入材料,则可以使用现有的方法来执行此操作。

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

这里有一个棘手的问题是,为了使用此方法,您需要从材质库中获取一个材质字符串。这可以通过读取材料数据库文件来完成。如前所述,这是泡菜格式。

如您所知,Abaqus 已经有一种从材料库中读取数据并将其导入 CAE 模型的方法。他们有一个您可以使用的 Python 模块,但它只能在 GUI 进程中使用,而不能在内核进程中使用。如果你想花一些时间,你可以弄清楚是哪个模块做到了这一点。在 Abaqus 安装文件夹中,您会找到一些.pyc文件。如果您使用 Python 反编译器,您可以获得这些模块的源代码。寻找那些以mat.

于 2017-07-12T10:28:04.530 回答