是否可以使用脚本从 Abaqus CAE 中的 material 库导入 material?

Is it possible to import material from material library in Abaqus CAE using scripts?

我正在开发 Abaqus 6.14 插件,它可以帮助我完成我在 Python 中撰写的工程师论文。根据 Abaqus scripting reference guide,可以通过调用从输出数据库(*.odb 文件)导入 materials:

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

但是,由于 Abaqus 允许用户 export/import materials to/from 相对轻量级 Material 库(*.lib 文件)并在模型之间共享它们,我希望从这些而不是从通常庞大的 *.odb 文件中导入 materials。

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

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

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

但是,如果您有一个现有的 material 库并且您想要在您的 Abaqus CAE 数据库中导入一个 material,则有一个现有的方法可以做到这一点。

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

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

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

开头的那些