前言
介绍abaqus和python二次开发的教程较少,而比较常见的一种python二次开发方法是:使用PythonReader.exe去读取Abaqus运行后的内部生成代码(即对应temp目录下的abaqus.rpy,例如“Abaqus\temp\abaqus.rpy”)再粘贴到.py文件中,打开使用Abaqus->“运行脚本”执行.py文件复现之前的操作。通过添加一些for循环和判断语句实现复现的操作中的部分参数的修改和仿真结果的数据导出。
在VSCode上编写修改上述.py文件时,常出现大量红色波浪线且无法消除(对应的调用库均为Abaqus内置的API,无法被外部读取)。为了便捷化编写Abaqus二次开发的python代码,并提高效率,我在github上找到了一个叫abqpy的开源项目,以下是我学习后整理的笔记。(欢迎交流)
注:
以下内容均翻译、参考自abqpy的官方文档:https://docs.abqpy.com/en/stable/getting_started.htmlabqpy的官方github地址:https://github.com/haiiliin/abqpyabqpy的官方示例:https://github.com/haiiliin/abqpy/tree/2023/examples
目录
- 前言
- 注:
- 入门
- 介绍
- 安装
- 工作机理
- 这个包如何工作
- 编写Abaqus/Python脚本
- 运行Abaqus/Python脚本
入门
介绍
abqpy是一个为 Abaqus 的 Python 脚本提供类型提示的 Python 包,您可以使用它流畅地编写 Abaqus 的 Python 脚本,甚至无需在 Abaqus 中执行任何操作。它还提供了一些简单的 API 来执行 Abaqus 命令,以便您可以运行 Python 脚本来构建模型、提交作业并在一个 Python 脚本中提取输出数据,甚至无需打开 Abaqus/CAE。
(也就是说,abqpy是用来编写abaqus的python脚本的模块,可以实现无gui运行,但不支持调试(因为abaqus不支持外调))
安装
安装环境:Python 3.7+、Abaqus 2016+
安装命令:
pip install abqpy==2023.* # 推荐
pip install abqpy==2023.5.3
pip install abqpy
(官方建议安装同版本的abaqus和abqpy避免兼容性问题,截止230705最新版是2023.5.3,能查到的最旧版本是2022年发布的v2016a0。个人建议,安装abaqus2022(网上已有资源),并pip install abqpy==2022.5.3,使版本匹配)
工作机理
当我们使用 Abaqus/CAE 图形用户界面 (GUI) 创建模型并可视化结果时,每次操作后 Abaqus/CAE 都会在内部发出命令。这些命令反映了您创建的几何图形以及您从每个对话框中选择的选项和设置。GUI 使用称为 Python 的面向对象编程语言生成命令。GUI 发出的命令被发送到 Abaqus/CAE 内核。内核解释命令并使用选项和设置来创建模型的内部表示。内核是 Abaqus/CAE 背后的大脑。GUI是用户和内核之间的接口。
总之,Abaqus 使用 Python 语言与 Abaqus 内核交互,在 Abaqus/CAE 中可以完成的所有操作,也可以使用 Python 脚本完成。Abaqus 已经安装了 Python 解释器,以便 Abaqus/CAE 可以使用它与 Abaqus 内核进行交互。
由于某些原因,我们无法直接使用 Abaqus 内部的 Python 解释器来构建 Abaqus 模型。但幸运的是,我们可以使用Abaqus提供的命令来访问它。
abaqus cae
[database=database-file]
[replay=replay-file]
[recover=journal-file]
[startup=startup-file]
[script=script-file]
[noGUI=noGUI-file]
[noenvstartup]
[noSavedOptions]
[noSavedGuiPrefs]
[noStartupDialog]
[custom=script-file]
[guiTester=GUI-script]
[guiRecord]
[guiNoRecord]
通常,我们可以使用 noGUI 文件或脚本文件在 Abaqus 中执行 Python 脚本。
另外一个Python解释器,就是我们自己安装的Python解释器,abqpy 安装在哪里(这里翻译不对,原文的where是地点状语从句,这句话是指abqpy安装在我们自己的python解释器中)。abqpy提供了一个将我们的Python脚本连接到Abaqus Python解释器的桥梁,它为Abaqus的Python脚本提供了类型提示,使我们能够快速编写Abaqus Python脚本。
(概括地说)Abaqus内部有一个python解释器,我们本身也有一个python解释器(以VScode为例)。Abaqus的python只能用noGUI或脚本文件在Abaqus中执行,因此VScode中无法编译它。而abqpy模块提供了一个桥梁,让我们VScode中编写的abaqus脚本不会报错(未知类型有红色波浪线),基于此,我们可以在VScode中编写abaqus脚本并运行、获取仿真结果,但无法调试。abqpy安装在我们VScode的python环境中。
这个包如何工作
abqpy只是一个为 Abaqus/Python 脚本提供类型提示的包,它安装在 Abaqus/Python 环境之外,您可以使用它abqpy来编写 Abaqus/Python 脚本,并自行在 Abaqus 内运行脚本。然而,借助 Abaqus 命令,可以实现更简单的方法:您实际上可以使用自己的 Python 解释器运行脚本,而无需打开 Abaqus,这是通过abaqus命令实现的,如下所示:
abaqus cae noGUI=script.py