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

标签 python plugins scripting abaqus finite-element-analysis

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

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

但是,由于 Abaqus 允许用户将 Material 导出到相对轻量级的 Material 库(*.lib 文件)或从相对轻量级的 Material 库(*.lib 文件)导入 Material ,并在模型之间共享它们,因此我想从这些 Material 库(而不是通常体积庞大的 *.lib 文件)导入 Material 。 odb 文件。

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

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

最佳答案

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

但是,如果您有现有的 Material 库并且想要在 Abaqus CAE 数据库中导入 Material ,则可以使用现有的方法来实现此目的。

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

这里的一个棘手的事情是,为了使用此方法,您需要从 Material 库中获取 Material 字符串。这可以通过读取 Material 数据库文件来完成。正如已经提到的,这是 pickle 格式。

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

关于python - 是否可以使用脚本从 Abaqus CAE 中的 Material 库导入 Material ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45043831/

相关文章:

bash - 尝试打印出包含最早/最晚日期的行

linux - 脚本:从远程计算机读取文件并存储在 dir 变量中

java - 使用语言启发式检查

python - UnicodeDecodeError 帮助 : Data needs to be in ascii for seaborn but source code is in utf-8

python - 带对数拉普拉斯算子的 Matplotlib 直方图 PDF

结合两个 FOR 循环和一个 IF 语句的 Pythonic 方法?

plugins - 如何删除 native 插件

TFS Sprint 项目打印插件

javascript - DOM 元素删除时是否删除 jquery 插件

linux - windows环境下运行Linux Shell脚本