Documentation:

  • Abaqus Scripting User’s Guide
  • Abaqus GUI Toolkit User’s Guide
  • 本人对本文基本没有原创性贡献,所列内容仅为备忘之用,无其他用途,如有版权问题,联系本人删除。
  • 本文本应设置为私密文章,但考虑到总能为有需要的人提供些许帮助,特此公开。
  • 所列内容的原文出处详见文中超链接或文末的参考文献。

Blog Links

  • DalNur | 博客总目录

  • Abaqus 二次开发 基本概念

  • Abaqus 二次开发 应用实例

  • Python 语言创建 Abaqus inp 文件

目 录

  • Blog Links
  • 一、前言
    • 1.1. 二次开发简介
    • 1.2. 有限元分析流程
    • 1.3. Abaqus/CAE
    • 1.4. GUI与Kernel
    • 1.5. .rpy文件与.jnl文件
  • 二、Python简介
    • 2.1. Python解释器
    • 2.2. Python交互式命令行
    • 2.3. Python的编程模式
    • 2.4. Python代码的运行
  • 三、Abaqus脚本
    • 3.1. Abaqus中的Python
    • 3.2. 脚本的执行方式
    • 3.3. 命令行接口
    • 3.4. Abaqus脚本接口命令与Abaqus/Kernel的交互
    • 3.5. Abaqus Python 集成开发环境
      • 3.5.1. PDE的启动
      • 3.5.2. PDE的使用
  • 四、宏文件
    • 4.1. 宏的录制
    • 4.2. 宏的运行
  • 五、inp文件
    • 5.1. inp文件的构成
    • 5.2. 定义分析标题
  • 六、GUI 二次开发
    • 6.1. Abaqus GUI 工具包
    • 6.2. Abaqus/GUI应用程序中的控件
    • 6.3. 插件程序与自定义应用程序
    • 6.4. 插件程序开发
    • 6.5. 自定义程序开发
  • 七、用户子程序二次开发
  • 八、Abaqus的文件系统
  • 九、总结
  • 十、尾声
  • 十一、参考文献

一、前言

1.1. 二次开发简介

  Abaqus 软件包包括两大部分: 用来进行前后处理的 Abaqus/CAE 和用来对有限元模型进行求解计算的 求解器 。

  Abaqus/CAE包括:Abaqus/GUI 和 Abaqus/Kernel 。

  求解器包括: Abaqus/Standard,Abaqus/Explicit,Abaqus/CFD 等。

  Abaqus 软件包为用户提供了二次开发的接口程序,方便用户定制适合自己的 Abaqus 程序。

  Abaqus 允许用户通过如下方式自定义软件的功能:

    - User subroutines:用户子程序允许用户更改求解器的求解方式;

    - Environment files:允许用户更改各种默认设置;

    - Kernel scripts:内核脚本允许用户创建新功能以方便建模及结果处理;

    - GUI scripts:图形界面脚本允许用户创建新的图形界面或更改 Abaqus 默认的图形界面。

  对于用户而言,可以且有价值的 Abaqus 二次开发主要有两种,求解器层次的 Fortran 和 前后处理层次的 Python 。前者对应用户子程序开发,后者对应用户图形界面程序开发。

  Abaqus 用户子程序开发基于 Fortran 语言,用户可以根据实际需求编写材料本构关系 (UMAT/VUMAT)、自定义单元 UEL 等。

  用户图形界面开发则基于 Python 语言,主要是根据需求对原有 Abaqus/CAE 功能组件进行扩展,开发专用的前后处理模块及 GUI 工具等。用户子程序的开发影响的是 CAE 分析过程中的求解环节,GUI 开发主要是方便用户根据自身的需求开发前后处理工具或者辅助用户实现参数化的建模及数据处理等工作,其影响的是 CAE 分析过程中的前后处理环节。[1]

1.2. 有限元分析流程

  有限元究竟是干啥的? 它就求解偏微分方程近似解的一种数学方法。

    人类目前理解的物理世界,即 三维空间一维时间,通常可以用偏微分方程 (PDE) 来完整描述。然而,遗憾的是,数学中的解析方法往往不能解决我们现实世界中的复杂问题,这些复杂性通常源自 几何结构的复杂物理场的复杂 ,也就是说,难以求出实际问题的解析解。

    有限单元法的诞生,将现实世界 “ 时空离散化、数字化 ” ,构造出这些偏微分方程组的近似数值方程,并用数值方法求解。从此,我们可以在数位世界模拟现实物理世界了。[3]

  Abaqus 有限元分析的完整分析流程为: 建立有限元模型 → 求解计算 → 分析结果,如下图:

    (1). 前处理 (Abaqus/Pre)

    建立的 Abaqus 模型通常包括如下信息:几何形状、单元局部特性、材料数据、荷载和边界条件、分析类型、输出要求等。

    建模的过程是把待分析问题的模型图形化的过程,建模的最终目的是生成一个 Abaqus 求解器能识别的输入文件即 inp 文件。

    inp 文件不是编程语言,只是按照 Abaqus 求解器的计算要求,而形成的输入文件。

    Abaqus 输入文件是前处理 (Abaqus/Pre) 和求解器 (Abaqus/Standard) 之间的交流工具,它包含了对分析模型的完整描述。

     (2). 模拟计算 (Simulation)

    模拟计算即选择适当的求解器求解 inp 文件所确定的数值问题,求解器的求解过程实际上就是求解大型偏微分方程组的过程。

    计算速度(解方程的速度)和计算精度是评价有限元软件性能的两个重要方面。

    Abaqus/Standard 和 Abaqus/Explicit 就是用来求解大型方程组的求解器。

    - Abaqus/Standard 通用分析模块/隐式分析求解器,能够求解线性和非线性问题,包括静力、动力、热和电问题等的响应。

    - Abaqus/Explicit 特殊分析模块/显示分析求解器,采用显式动力有限元列式,适用于冲击、爆炸等短暂、瞬时的动态事件的分析。

     (3). 后处理 (Abaqus/Post)

    后处理一般是由 Abaqus/Post 或其他后处理程序实现的,Abaqus/Post 读入二进制文件,可以用各种各样方式显示结果,如彩色等值线图、动画、应力云图、位移云图及x-y平面绘图等。求解器计算求解后的分析结果主要存储在 .odb, .dat, .res, .fil 文件中。

    前处理的最终目的是生成 .inp 文件,求解器根据 inp 文件的有关要求进行求解计算并输出计算结果,后处理根据输出的结果 (.odb文件) 进行数据的二次加工供工程人员参考。前处理及后处理用户起主导作用,计算任务提交后计算机自动完成模拟计算。

1.3. Abaqus/CAE

    Abaqus/CAE (Complete Abaqus Environment) 是完整的 Abaqus 运行环境,它为生成 Abaqus 模型、交互式提交和监控 Abaqus 作业及评估 Abaqus 模拟结果提供了一个风格简明、一致的界面,用户通过主窗口与 Abaqus/CAE 进行交互。

    Abaqus/CAE包括: Abaqus/GUI 和 Abaqus/Kernel 。

  Abaqus/CAE启动后会产生三个进程: abq2016se.exe (取决于软件版本)、ABQcaeG.exe (Abaqus/CAE GUI) 和 ABQcaeK.exe (Abaqus/CAE Kernel) 。

    主窗口内包含: 标题栏、菜单栏、工具栏、环境栏、模型树/结果树、工具箱区、画布和作图区、视口 (Viewport)、提示区 (Prompt area)、信息区和命令行接口。

    信息区 (Message area): Abaqus/CAE 在信息区显示状态信息和警告。

    命令行接口 (Command line interface): 用户可以在此处输入 Python 命令 (代码) 或数学表达式。

                       Abaqus/CAE 内置的 Python 解释器将执行用户的上述输入。

Abaqus主界面及命令行窗口

1.4. GUI与Kernel

术语 含义
Abaqus/GUI 图形界面
Abaqus/Kernel 内核

  用户通过主窗口与 Abaqus/CAE 进行交互,主窗口是 Abaqus 图形界面的集中体现。

  主窗口内层层叠叠的菜单、各种按钮等控件构成了 Abaqus 图形界面的全体。

  用户在 Abaqus/CAE 中进行的各种操作,都会被转化为 Python 语句,通过执行这些语句/命令,就可完成一系列繁杂的前后处理操作。Abaqus 中每一个功能的实现,都离不开内核脚本的顺利运行。

  Abaqus/Kernel 即内核采用 Python 语言编写,内核在继承继承 Python 语言自身类模型的基础上,进行了扩展。新增了三个大类模型,分别为 Session 类、Mdb 类以及 Odb 类,对应视图、模型数据库和计算结果数据库三类对象。

  GUI 的作用 是收集用户输入,以命令流的形式将其打包并发送给 Kernel 执行。

  Kernel 的作用 是根据 GUI 传递过来的参数/请求,访问、创建或修改相应的数据库。

  The kernel is the brains behind Abaqus/CAE. The GUI is the interface between the user and the kernel.

  GUI 对于 Abaqus 各种功能的实现不是必不缺少的,是可有可无的。图形界面的存在很大程度上只是降低了用户的使用难度,用户可通过编辑内核脚本的形式,越过 Abaqus/GUI,直接完成有限元模型的前后处理和分析工作。

  尽管,理论上可直接越过 GUI,完成相关分析工作,但这种做法没有十分地必要。事实上,对于一个真正有意义的前后处理层面上的二次开发,GUI 和 Kernel 是分不开的,通过Kernel脚本实现某些特定的功能,再通过 Abaqus GUI Toolkit 将各种功能封装起来实现外层的 GUI 展现,这样完成的二次开发才更有价值,这种定制化开发可以大大降低用户的使用门槛。[3]

1.5. .rpy文件与.jnl文件

  为了实现某个功能,用户需在特定的 GUI (图形界面) 中输入相关参数,点击 “OK” 或 “Continue” 按钮后,程序后台将输入参数打包并生成与实现该功能相对应的 Python 语句,该语句会进一步传递给 Kernel 执行,这就是这个实现这个功能的完整流程。

  这一条条 Python 语句,就是要发送给内核执行的一条条命令。

  在 Abaqus 功能实现的过程中,后台程序实时记录用户在 Abaqus/CAE 中各种操作所对应的 Python 语句,并将其记录在当前工作目录下的 abaqus.rpy 文件中,abaqus.rpy 文件是实时更新的,也就是说,在 Abaqus/CAE 中,每完成一步操作,它所对应的Python语句都会立即出现在abaqus.rpy文件中,用户可以用任何一款文本编剧软件打开 abaqus.rpy 文件,查看操作对应的 Python 语句,并根据自身需要进行修改,这就为 Abaqus 的二次开发提供了很大的便利,只要用户能够在 Abaqus/CAE 中实现某一功能,那么它所对应的 Python 语句可直接查看 abaqus.rpy 文件得到,而不需要在帮助文档中查找,这就大大降低了二次开发的难度。

  Abaqus/CAE records its commands as a Python script in the replay (.rpy) file.

  另外,当每次对 CAE 模型进行保存时,文件保存目录下都会自动保存一个与模型名称同名的 .jnl 文件, .jnl 文件记录了已存储的模型数据库的 Abaqus/CAE 命令。

  .rpy 中记录着用户在 Abaqus/CAE 中所有操作,对应的 Pyhton 语句,包括视图的变化、模块的切换以及误操作等对应的 Python 语句,而 .jnl 文件仅记录着最终有效的操作。

  当你开发一些自定义的功能时,通常开始于创建实现这些功能的内核命令 (Python语句) 。这些命令可以通过在 Abaqus /CAE 中命令行接口 (CLI) 中执行来进行调试。一旦从 CLI 中确定内核命令可以准确运行,那么你就可以设计图形用户界面 (GUI) 来收集内核命令所需要的用户输入。

二、Python简介

  Abaqus/Kernel 采用 Python 语言编写,Abaqus/Kernel 是 Abaqus/CAE 的重要组成部分,它是保证前后处理顺利实现的核心模块。因此,用户要想实现前后处理层面的二次开发,就必须掌握基本的 Python 编程规则。对于小白,可从如下几个网站开始 Python 语言的学习:

序号 网站名称 连接
1 jackfrued - Python-100-Days https://github.com/jackfrued/Python-100-Days
2 廖雪峰 - Python教程 https://www.liaoxuefeng.com/wiki/1016959663602400
3 菜鸟教程 - Python 3 教程 https://www.runoob.com/python3/python3-tutorial.html
4 白月黑羽教Python - Python基础 http://www.python3.vip/doc/tutorial/python/0001/

Hello, World!

2.1. Python解释器

  Python 代码的执行最终是由计算机的 CPU (中央处理器) 来完成的。但 CPU 能且只能直接识别并执行机器指令,它的表现形式是二进制编码,形如:

二进制代码

  采用二进制代码直接编写程序,不但易读性差、出错率高、维护困难,而且也不能直观地反映用计算机解决问题的基本思路。为了克服这些缺点,程序猿们开发了各种各样程序,能自动将 Python 代码转换成 CPU 能识别的二进制代码,这些转换程序就叫 Python 解释器。Python 解释器不止一种,官方的 Python 解释器是用 C 语言实现的,也是使用最为广泛的 Python 解释器,通常称之为 CPython 。除此之外,Python 解释器还有 Java 语言实现的 Jython、C# 语言实现的 IronPython 以及 PyPy、Brython、Pyston 等版本。

  这里没有严格区分编译器和解释器,详见:python第一篇------编译型语言和解释型语言。

  Python 解释器本质上就是个翻译,它将 Python 语句翻译成 CPU 能其唯一能识别的二进制代码,从而实现 Python 语句的顺利执行。Python 解释器本身也是个程序, 可以由 C 语言、 Java 语言、 C# 语言等编写,它用来向 CPU 解释 Python 代码,我们运行 Python 程序时,首先启动 Python 解释器,解释器逐行读取要执行的 Python 程序文件,然后翻译成机器指令并发送给 CPU,CPU 按指令进行执行,并以二进制代码的形式反馈执行结果给解释器,经解释器的翻译后,呈现出程序猿能看懂的运行结果。其原理如下图所示:

  因此,Python 程序能顺利运行的必要前提是你的电脑上存在至少一款 Python 解释器,安装教程,详见:Python解释器的安装。

2.2. Python交互式命令行

  Python 解释器安装完成后,可按如下步骤, 进入解释器的交互式命令行:

  Step 1. windows 开始 >> 运行 >> 打开(O): 中输入 cmd >> 确定,启动 windows 命令提示符窗口(命令行窗口)。

  Step 2. 在 Windows 命令行中输入 Python 后回车,即进入了 Python 的交互式环境,所谓交互是指用户与 Python 解释器间的交互。

  成功进入到 Python 交互模式环境的标志是命令行中出现提示符 >>>,它是 Python 的主提示符,用户可在其后输入 Python 语句,按回车,语句将被执行。当定义函数时,命令行将出现次提示符 ,它主要提示用户随后输入的 Python 代码要按照 Python 的语法进行缩进,连续按两次回车后,将重新回到 >>> 提示符下。

2.3. Python的编程模式

  Python 的编程模式分为两种: 交互式编程模式 和 脚本式编程模式。

  1. 交互式编程模式

  在 Windows 命令行中输入 Python,按回车后, 便进入到 Python 交互模式。在提示符 >>> 后,直接输入 Python 语句,按回车,语句被执行,执行结果立刻被呈现出来,然后在提示符 >>> 后继续输入 Python 语句,按回车执行,依次进行,直到所有 Python 语句被执行完毕,这一过程用户与 Python 解释器实时交互,输入一条 Python 语句,按回车,语句被执行,执行结果在交互式命令行中被呈现,这一编程模式就是交互式编程。

  1. 脚本式编程模式

  Python脚本: 使用 Python 语言编写的一整段 Python 程序,保存在以 .py 结尾的文件中, 这个以 .py 结尾的文件就是 Python 脚本。

  通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效,这就是脚本式编程。具体操作如下:

  Step 1. 将要执行的 Python 语句,全部放直到一个以 .py 结尾的文本文件中,不是一般性,该文件暂且命名为 test.py 。

  Step 2. 启动 Windows 命令行窗口。

  Step 3. 在 Windows 命令行中输入 Python test.py (注意空格)。

  在 Windows 命令行中输入 Python test.py,其含义是,告诉 Windows 操作系统,python 脚本 test.py 采用 Python 解释器解释,解释器逐行将文件 test.py 中的Python语句翻译成二进制代码,发送给 CPU 执行,代码全部执行完后,Python 解释器就被关闭。

小结

  在命令行 (指 Windows 命令行) 中,可以执行 Python 进入 Python 交互式环境,也可以执行 Python test.py 运行一个 .py 文件。前者对应交互式编程模式,后者对应脚本式编程模式。

  此外,在命令行模式运行 .py 文件和在 Python 交互式环境下直接运行 Python 代码有所不同。Python 交互式环境会把每一行 Python 代码的结果自动打印出来,但是,直接运行 Python 代码却不会。

  最后,Python 交互模式的代码是输入一行,执行一行,而命令行模式下直接运行 .py 文件是一次性执行该文件内的所有代码。可见,Python 交互模式主要是为了调试 Python 代码用的,也便于初学者学习,它不是正式运行 Python 代码的环境!

2.4. Python代码的运行

  Python 代码有如下三种运行方式:交互式解释器、命令行脚本和集成开发环境

序号 运行方式 说明
1 交互式解释器 交互式编程模式代码的执行方式,逐行输入代码,输一行,执行一行。
2 命令行脚本 脚本式编程模式代码的执行方式,直接执行 .py 文件,文件内的全部代码一起执行。
3 集成开发环境 PyCharm 等,就是一款降低 Python 编程难度的软件。

  集成开发环境 (IDE: Integrated Development Environment): 是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。

  PyCharm 具备一般 Python IDE 的功能,比如:调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等。

三、Abaqus脚本

  Abaqus/kernel 是 Abaqus/CAE 的大脑,Abaqus/GUI 是用户和 Abaqus/kernel 间的接口。Abaqus Scripting Interface 允许用户越过 Abaqus/CAE GUI,直接和 Abaqus/CAE kernel 交流。包含 Abaqus Scripting Interface 命令的文件被称为脚本,使用脚本可以完成如下功能:

  - 重复任务自动化

  - 开展参数化研究

  - 创建和修改模型数据库

  - 访问结果数据库中的数据

  Abaqus Scripting Interface 是 Python 的延伸,通常,任何关于 Abaqus Scripting Interface 的讨论都同样适用于 Python , Python 语言是 Abaqus 的官方接口语言。

3.1. Abaqus中的Python

  Abaqus 中的 Python 并不是标准版本的 Python ,它是经过达索公司再开发的版本。达索公司在原生 Python 的基础上增加了增了三大类约 500 个新的类模型。因此,在标准版本的 Python 中可以顺利运行的代码,在 Abaqus 中一定可以运行,反之,不一定。

  在 Abaqus/CAE 主界面的菜单栏中,依次点击 Help >> About Abaqus 可查看当前 Python 的版本。

Abaqus版本 Python版本
Abaqus/CAE 6.14-1 Python Version 2.7.3
Abaqus/CAE 2019 Python Version 2.7.3

3.2. 脚本的执行方式

  在 Abaqus 中,脚本 (.py文件) 有如下几种执行方式:

  在Abaqus/CAE未启动的前提下:

   - 方式一:启动 Abaqus Command,在命令行中输入 abaqus cae script=test.py,则 Abaqus/CAE 被启动且显示GUI ,脚本 test.py 被执行。

   - 方式二:启动 Abaqus Command,在命令行中输入 abaqus cae noGUI=test.py,则 Abaqus/CAE 被启动且不显示 GUI , 脚本 test.py 被执行。

  在Abaqus/CAE启动的前提下:

   - 方式三:在 CAE 主界面菜单栏中单击 File >> Run Script >> test.py 。

   - 方式四:在命令行接口 (CLI) 中,Python 提示符 >>> 后,输入 execfile(‘test.py’) ,按回车后执行脚本。

   - 方式五:运行宏文件,在 CAE 主界面菜单栏中单击 File >> Macro Manager 。

   - 方式六:在 Abaqus/PDE 中运行脚本。

3.3. 命令行接口

  命令行接口 (Command Line Interface) 位于主界面底部,与信息区共用一个窗格,窗格左侧的两个按钮用于这两个功能间的快捷切换。

  Abaqus/CAE 在命令行接口显示 Python 提示符 >>>

  利用 Abaqus/CAE 内置的 Python 解释器,可以使用命令行接口输入 Python 命令和数学计算表达式。主提示符 >>> 为 Python 语言的提示符,次提示符 用于提示用户,随之输入的代码需要进行缩进。函数定义结束后需要按两次回车重新回到 >>> 提示符下。

示例:

命令区KCLI中定义函数 KCLI - Kernel Command Line Interface

  所谓的命令行接口接的是 Abaqus 中内置的 Python 解释器,它就是 Abaqus/CAE 中实时运行的 Python 的交互式命令行,在此处可进行 Python 交互式编程。

3.4. Abaqus脚本接口命令与Abaqus/Kernel的交互

  Figure illustrates how Abaqus Scripting Interface commands interact with the Abaqus/CAE kernel.

Abaqus Scripting Interface commands and Abaqus/CAE 命令流与Abaqus/CAE内核的关系

  Abaqus 脚本接口可以通过以下多种方式与 Abaqus/CAE 内核程序进行交互:

   - 图形用户界面 (GUI):在自定义对话框中设置或选择参数,适用于复杂、系统、完整功能的实现。

   - 命名行接口:适用于单句或多句简单指令的执行。

   - 执行脚本文件 (script):适用于相同指令重复执行或复杂指令执行的情况。

  The graphical user interface (GUI). For example, when you click OK or Apply in a dialog box, the GUI generates a command based on your options and settings in the dialog box. You can use the Macro Manager to record a sequence of the generated Abaqus Scripting Interface commands in a macro file. (宏文件记录GUI产生的命令)

3.5. Abaqus Python 集成开发环境

  Abaqus PDE —— Abaqus Python development environment

  The Abaqus PDE provides a simple interface that you can use to develop—create, edit, test, and debug—Python scripts. The Abaqus PDE is primarily intended for use with Abaqus/CAE user interface (GUI) and kernel scripts, including plug-ins, but you can also use it to work on scripts that function independently from Abaqus/CAE.

  Abaqus PDE 不需要额外安装,已经包含于 Abaqus 的安装程序中。Abaqus PDE 具有语法高亮和缩进,不具备自动补全功能。

3.5.1. PDE的启动

   Abaqus PDE有三种启动方式:

   - 在当前运行的 Abaqus/CAE 主窗口的菜单栏中,依次点击 File >> Abaqus PDE 。

   - 在 Abaqus Command 中输入 abaqus cae -pde

   - 在 Abaqus Command 中输入 abaqus pde

  前两种方法打开的 Abaqus/PDE 和对应的 Abaqus/CAE 位于相同的 session ,可以方便的将 Abaqus/CAE 的各步骤操作命令录制到 guiLog 文件中,加快开发的速度;最后一种方法单独打开 Abaqus/PDE ,并不与 Abaqus/CAE 工作区相关联,但是由于不打开Abaqus/CAE ,因而不占用许可证,具有较快的启动速度。

Abaqus/Python 集成开发环境的启动

3.5.2. PDE的使用

  1. 生成 .guiLog 文件

  To record a .guiLog from Abaqus/CAE:

  Step 1. 在 Abaqus PDE 主菜单栏中,依次点击 File >> New,即在主窗口中完成空白文件的新建。

  Step 2. 单击 Start Recording 图标,开始记录来自Abaqus/CAE的各步操作。

  Step 3. 在 Abaqus/CAE 中完成全部操作。

  Step 4. 单击 Stop Recording 图标,停止记录。

  Step 5. 使用标准文本编辑技术可编辑在主窗口中自动生成的各行代码。

  Step 6. 若要继续记录 Abaqus/CAE 的操作,单击 End of Main File 按钮,以将光标置于文末,重复步骤 2~4 。

  Step 7. 保存文件,文件默认名称为 " _abaqus1_.guiLog " ,默认路径为工作路径。

.guiLog文件的生成

  1. Abaqus/PDE中脚本的运行

  The Abaqus PDE runs scripts using one of three processes—GUI, kernel, or local. By default, .guiLog files are run in the Abaqus/CAE GUI process. If the Abaqus PDE was opened from within Abaqus/CAE, .py files and all other file types are run in the Abaqus/CAE kernel process by default. If the Abaqus PDE was opened without Abaqus/CAE, .py files are run in the local process by default.

  The local process runs the script without Abaqus/CAE, using Python in the local (PDE) process. You can change the process by selecting Settings → Run Script In and choosing the desired process, or by clicking the GUI, Kernel, or Local radio buttons located above the main window. If the Abaqus PDE was opened without Abaqus/CAE and you run a script with the GUI or Kernel process, Abaqus PDE will start Abaqus/CAE to run the script.

  -  Play: 代码一次性全部执行完;

  -  Next Line: 代码一只执行一行。

  调试器与断点:设置/清除断点 —— 快捷键 / F9

四、宏文件

  To manage macros containing a set of Abaqus Scripting Interface commands, select File → Macro Manager from the main menu bar. When you create a macro, Abaqus/CAE records a sequence of Abaqus Scripting Interface commands in a macro file while you interact with Abaqus/CAE. Each command corresponds to an interaction with Abaqus/CAE, and replaying the macro reproduces the sequence of interactions.

4.1. 宏的录制

  为了方便查找,所创建宏的存放路径均设置为工作路径,即 Directory 项选择 Work 。第一个宏创建完成后在工作路径中会自动生成一个名为 "abaqusMacros.py " 的 Python 文件,宏录制完成后以定义函数的形式存储在 abaqusMacros.py 文件中,所有创建的宏按生成的先后顺序存储在 abaqusMacros.py 这一文件中。

  例如:依次在 Abaqus/CAE 中录制 3 个宏,采用默认名称,分别为:Macro1、Macro2 和 Macro3,在工作目录中找到 abaqusMacros.py 文件,并将其打开,可以看到创建的 3 个宏是以函数的形式存在的,如下图:

宏的录制及其在abaqusMacros.py文件中的表达方式

4.2. 宏的运行

   - 方式一: File >> Macro Manager >> Run 。

   - 方式二: Run Script >> abaqusMacros.py >> 在命令区 KCLI 调用。

             若宏的名称为 Macro1,则在命令区 KCLI 输入 Macro1(),即实现宏 Macro1 的运行。

五、inp文件

  • 参考资料: 教你学会看&写 input 文件 。

5.1. inp文件的构成

  inp 文件是前处理 (Abaqus/Pre) 和求解器 (Abaqus/Standard等) 之间的交流工具,它包含了对分析模型的完整描述。inp 文件是一个直观的、基于由关键字格式组成的字符文件。

   - 注释行:两个星号 ( ** ) 开始的行为注释行。

   - 关键字行:一个星号 ( * ) 开始的行为关键字行。

   - 数据行:关键字行下面紧接着的通常为数据行。

  inp 文件中的每一行不能超过 80 个字符。

inp文件的构成

5.2. 定义分析标题

  inp 文件的开始必须冠以 *HEADING,在 *HEADING 下面的数据是用字符来说明所模拟的问题,它将提供对 inp 文件的准确描述,以便以后对该文件进行识别。此外,最好明确地说明量纲系统和总体坐标系的方向等。

  *HEADING 下面的字符块仅第一行出现在 odb 文件显示界面的 title block 中,其余均不显示,如下图:

字符块的显示

  由上可知,创建作业时 Description 里输入的内容、inp 文件中 *HEADING 下的第一行字符和 odb 文件显示界面中 title block 的第一行为同一内容。

六、GUI 二次开发

  • GUI —— Graphical User Interface 图形用户界面

  • 参考资料: Python GUI之tkinter概述 (了解 GUI 的基本组成即可) 。

6.1. Abaqus GUI 工具包

  Abaqus GUI Toolkit —— Abaqus GUI 工具包/箱

  图形用户界面的二次开发主要是依靠 Abaqus GUI Toolkit 来实现的,Abaqus GUI Toolkit 是 Abaqus 自动处理工具之一,它能修改和拓展 Abaqus/CAE GUI 的功能,提供更高效的问题解决方法。Abaqus GUI Toolkit 不能脱离 Abaqus/CAE 独立运行,须与 Abaqus/CAE 协同运行。

  通过 Abaqus GUI Toolkit,用户可以创建或修改 Abaqus/CAE GUI 的组件 (控件),该工具包允许用户进行如下操作:

  - 创建新的 GUI 模块,诸如创建像 Abaqus/CAE 中 Part 这样的模块。

  - 创建新的 GUI 工具箱。

  - 移除 Abaqus/CAE GUI 中的模块或工具箱。

  - 移除某个顶级菜单或其中的某个下拉项。

  - 部分更改 Abaqus/CAE GUI 的模块或工具箱。

  GUI 的终极目标是发送命令给 Kernel 执行。

  Abaqus GUI Toolkit 是 FOX GUI Toolkit 的延伸。以 FX 开头的类来自于标准 FOX 库,例如:FXButton;以 AFX 开头的类来自于 Abaqus 对 FOX 库的拓展,例如:AFXDialog;当具有相同功能的类具有两个前缀时,例如:FXTable 和 AFXTable,推荐使用前缀是 AFX 的类。

6.2. Abaqus/GUI应用程序中的控件

  Abaqus 图形界面程序 (GUI) 开发过程中会用到各种各样的控件 (widget) ,例如对话框、文本框、按钮、单选框、复选框、下拉框、表格等等。控件是 GUI 应用程序的最基本组成元素,用户可以使用各类控件从图形界面程序中收集参数、显示结果以及发送指令等。

   详见: 《Abaqus GUI 程序开发指南 Python语言》. 第四章 常用控件使用方法 。

An overview of an Abaqus GUI application

6.3. 插件程序与自定义应用程序

  用户可以通过以下两种方式使用 Abaqus GUI Toolkit :

  - 插件架构的使用 —— the use of the plug-in architecture.

  - 创建自定义应用程序 —— create a custom application.

  当 Abaqus/CAE 启动时,插件工具包 (Plug-in toolset) 依次搜索特定的文件路径,将用户创建的插件加载到顶层菜单 Plug-ins 内。因此,用户创建的插件必须放置于特定的文件路径下。如果仅仅是为标准的 Abaqus/CAE 程序增加某些功能,那么通过创建插件的方式,便可基本满足用户的需求。

新建插件程序的位置

  相比之下,通过创建自定义应用程序,用户除了可以为为 Abaqus/CAE 增加新的功能,还可以修改 Abaqus/CAE 的某些标准特征。虽然,创建自定义程序提供了最大的灵活性,但是,这就意味着它将比创建插件消耗更多的工作量。然而,自定义程序可以实现许多插件程序实现不了的功能,例如:

  - Remove Abaqus/CAE modules or toolsets.

  - Modify Abaqus/CAE modules or toolsets.

  - Change the application name and version numbers.

  - Control the startup command and license token used.

   SIMULIA Learning Community

6.4. 插件程序开发

  插件程序是 Abaqus GUI 开发中较为简单的一类,一般适用于功能简单、界面单一的程序开发。

  插件程序分为 内核插件程序 和 GUI插件程序 。

  内核插件程序通过编写脚本实现,内核插件没有图形界面,即通过直接运行脚本的形式为 Abaqus/CAE 增加新的功能。

  GUI 插件程序通过 Abaqus GUI 工具包创建图形界面,并将命令传递给内核程序执行。

编写脚本实现,内核插件没有图形界面,即通过直接运行脚本的形式为 Abaqus/CAE 增加新的功能。


  1. 插件程序的创建方法

  Abaqus 中的插件可以直接通过编写脚本得到,也可以通过 Really Simple GUI (RSG) Dialog Builder 可视化设计得到。直接使用脚本编程需要比较全面了解 Abaqus GUI Toolkit 中的对象和函数,而使用 RSG 比较直观简单,不需要了解 Abaqus GUI Toolkit 中的对象。使用 RSG 编写插件的缺点在于 RSG 仅能部分替代 GUI Toolkit 对象的创建任务,使用它只能建立比较简单的插件,利用 RSG 编写的插件都是一次性提供所有输入,单击“ OK ”按钮运行即得结果。当需要插件和用户能相互多次交互时,就必须借助 Abaqus GUI Toolkit 中的一些对象来实现。

  - RSG Dialog Builder 编写单步执行插件

     示例: 标准化钢箱梁abaqus模型建立,使用RSG的插件二次开发。

  - Abaqus GUI Toolkit 编写多步执行插件


  1. 插件程序的保存方式

   使用 RSG 对话框构造器创建的插件程序,有两种保存方式: RSG plug-in 和 Standard plug-in.

   RSG plug-in 可以在重新启动 RSG 对话框构造器时再次加载并编辑图形界面,Standard plug-in 无法进行重新加载,无法快速预览插件的图形界面,控件的增加修改及排列布置都需要手动输入代码来完成。

   但是 RSG plug-in 所包含的控件种类有很大的局限性,而 Standard plug-in 控件类别以及库函数丰富,可以实现较大规模复杂程序的开发,Abaqus 帮助文档中的资料基本是按照 Standard plug-in 方式提供的。

   推荐将插件程序保存为 Standard plug-in 。

   另外,插件的保存目录又分为 Home directory 和 Current directory 两者分别代表用户主目录和 Abaqus 当前的工作目录。


  1. 插件程序的使用方法

   插件程序的使用方法简单,无须安装。将编写好的插件程序直接拷贝到 Abaqus 安装目录或者当前工作目录下的 abaqus_plugins 文件夹内,便可实现对插件程序的自动加载。再次启动 Abaqus/CAE 时,在CAE主窗口界面下的 Plug - ins 菜单内会自动出现相应的插件工具菜单。

   插件程序可以放置在如下目录中:

  - abaqus_dir\abaqus_plugins,该插件可被所有用户使用。

  - home_dir\abaqus_plugins,该插件仅被特定用户使用。

  - current_dir\abaqus_plugins,该插件可以被有当前目录权限的用户使用。

  - abaqus_v6.env 文件中定义的plugin_dir,该插件可以被有该目录访问权限的用户调用。


  1. 插件程序的组成

   一般插件由 注册文件 、 图形界面文件 和 内核执行文件 组成 。

  - 注册文件

   一般以 ×××_plugin.py 命名,其主要作用是注册各类控件关键字,检查数据合法性,并将插件工具注册到 Plug-ins 菜单或者自定义工具条中。决定所创建的插件程序出现在 Abaqus/CAE 中的哪个位置处,是 Plug-in 菜单下,还是主菜单栏上,还是其他。

  - 图形界面文件

   一般以 ×××_DB.py 命名,其主要作用是定义图形界面框架、各类控件,并关联各控件的执行目标、执行动作。决定图形界面长什么样,要收集什么样的参数,参数搜集完成后发送给哪个内核函数等。

  - 内核执行文件

   一般 用户自定义 文件名称,内核执行文件是插件程序的核心,包含了一些列驱动 Abaqus/CAE 内核的指令,通过执行这些指令完成 CAE 建模以及数据处理等功能。决定该插件程序能实现什么功能。

   上述程序为插件程序的主要组成文件,除了上述文件外,用户还可以指定多种格式的图片文件作为工具图标或者截面插图。


  1. 插件程序的管理

   当插件程序较多时,可以将插件进行分类管理,将具有类似功能的插件放在统一的菜单或者工具条中,方便用户调用。

  - 通过菜单进行管理,即将插件工具注册到主菜单下。

  - 通过工具条进行管理,即将插件工具注册到工具条中。


6.5. 自定义程序开发

· · · 待续 · · ·

七、用户子程序二次开发

详见: abaqus二次开发概述 。

八、Abaqus的文件系统

文件类型 文件名称及拓展名 说明 默认名称
数据库文件 模型数据库文件 .cae - 用户自定义名称
数据库文件 输出数据库文件 .odb - job_name.odb
保存命令的文件 .rpy
(python脚本)
记录几乎每一步 GUI 操作所对应的内核函数命令 abaqus.rpy
保存命令的文件 .jnl
(python脚本)
包含用于复制已存储的模型数据库的 Abaqus/CAE 命令 与.cae文件的名称保持一致
文件类型 文件名称及拓展名 说明 默认名称
- .guiLog 记录使用者在CAE软件中的每一步 GUI 操作 _abaqus1_.guiLog
宏文件 .py
(python脚本)
- abaqusMacros.py

九、总结

  清晰而深刻的理解上述概念,有助于理清二次开发的思路,提升开发的效率。为了更深刻的理解 Abaqus 的二次开发,现作如下概括:

  物理世界通常可以用偏微分方程来完整描述,对于复杂问题,偏微分方程很难且往往不能求得解析解。采用有限单元法便可以离散求解,求解的精度取决于离散的程度,求解域被离散的越细小,求解精度越高,得到的离散方程组中方程的个数就越多。为了满足必要的解答精度,方程组的规模往往是相当巨大的,这就为手动求解带来挑战。随着计算机技术的迅速发展,使大型方程组的求解变得更加高效、快捷,许多有限元软件由此应运而生,Abaqus 就是其中较为成功的一款。

  作为一款商业通用的有限元分析软件, Abaqus 不可能很细致地囊括所有物理问题的分析。因此, Abaqus 允许用户自定义一些功能,以为模型的建立、计算结果的分析及特殊问题的求解提供最大方便。用户添加原生 Abaqus 版本所不具备的功能的这个过程,就是 Abaqus 的二次开发。

  在 Abaqus 中,一个物理问题的最终解答,主要包括前处理、求解计算和后处理三个过程。前、后处理主要依靠 Abaqus/CAE 实现,求解计算主要依靠 Abaqus 的求解器完成。 Abaqus/CAE 是由 Python 语言编写的, Abaqus 求解器是由 Fortran 语言编写的。因此, Abaqus 的二次开发有两种,前后处理层次的 Python 和求解器层次的 Fortran 。

  前处理的终极目标是生成 .inp 文件,.inp文件是求解器的输入文件,其中包含了对分析模型的完整描述, .inp 文件有其自身的特定格式。所有关于前处理方面的二次开发,最终目的都是为了方便、快速地生成 .inp 文件。.inp 文件确定了方程组的规模,规定了求解方式,定义了输出的物理量等,求解器根据 .inp 的请求,采用各种数学方法,在不显著降低求解精度的前提下,尽可能快速的求解方程,并将计算结果存储在 .odb 文件中。后处理主要是从 .odb 中读取数据,以待后续的数据二次加工,诸如绘制各种云图等。所有关于后处理方面的二次开发,最终目的也都是快速高效地处理计算结果。由上我们可知,.inp 文件确定了方程组具体形式,求解器完成了方程组的求解,.odb 文件存储计算结果 (方程组的解) 。

  在前后处理层次的二次开发中, GUI 二次开发是我们经常遇到且有意义的, GUI 二次开发主要是为 Abaqus/CAE 修改或添加图形界面以实现各种功能,它能显著降低用户使用 Abaqus 的难度。开发的图像界面位于何处,菜单栏还是工具条中,这是注册文件要完成的工作;图形界面长什么样,有几个按钮,搜集什么样的数据,这是图形界面文件要完成的工作;具体功能的实现,则是内核执行文件要完成的工作。

十、尾声

  以上,便是关于 Abaqus 二次开发 一些基本概念的简单介绍。

  因篇幅有限,某些内容未做详细介绍,如有疑问,欢迎邮件交流。

  Email: liyang@alu.hit.edu.cn 。

  仅以此文为我断断续续近 1 个月的 Abaqus 二次开发工作做一个总结。

  与此同时,也希望能够为初学者/有需要的人提供多一点参考。

  本文仅用于个人学习,除此之外,无其他任何用途。

  因个人水平有限,文中难免有所疏漏,还请各位大神不吝批评指正。

  胸藏文墨怀若谷,腹有诗书气自华,希望各位都能在知识的 pāo 子里快乐徜徉。

  本文逻辑清楚,内容详实,引例丰富。

  欢迎大家点赞、评论及转载,转载请注明出处!

  为我打call,不如为我打款!

  最后,祝各位攻城狮们,珍爱生命,保护发际线!

十一、参考文献

[1]. Abaqus GUI 程序开发指南 Python语言. 贾利勇 富琛阳子 贺高 周正光 编著.

[2]. ABAQUS Python 二次开发 攻略. 苏景鹤 江丙云 编著.

[3]. 理解多物理场有限元底层机理:偏微分方程——物理世界模拟器. 科技千里眼.

[4]. ABAQUS/Standard 有限元软件入门指南. 庄茁 等 译.

[5]. 使用python进行ABAQUS的二次开发的简要说明. young2203.

Abaqus 二次开发 基本概念相关推荐

  1. python在材料模拟中的应用_基于Python的ABAQUS二次开发及在板料快速冲压成形模拟中的应用...

    2009 doi :10 1 3969/ j 1 issn 1 1007 2 2012 1 2009 1 04 1 013 基于 Python 的 ABAQUS 二次开发及在板料快速 冲压成形模拟中的 ...

  2. python对abaqus本构二次开发_基于Python的Abaqus二次开发实例讲解

    第 1 页 共 11 页 基于 Python 的 Abaqus 二次开发实例讲解 ( asian58 2013.6.26 ) 基于 Python 的 Abaqus 的二次开发便捷之处在于: 1 .所有 ...

  3. abaqus python二次开发攻略_Python 进行 Abaqus 二次开发的基础知识

    1.Python 一切皆对象的特点 Object(对象):可以是数据,可以是函数,也可以是包含若干数据和函数的打包整体.对象可以包括成员和方法. Member(成员):对象包含的子对象,子对象可以是数 ...

  4. abaqus二次开发简单插件

    关于abaqus二次开发 Abaqus自带操作 1.1. 目录栏 - plug-ins – Abaqus –RSG Dialog Builder 这里可以利用abaqus自带的开发模块进行简单的设计 ...

  5. abaqus生成odb文件_【前沿技术】基于Python的ABAQUS二次开发在飞机蒙皮锤铆中的应用...

    基于Python的ABAQUS 二次开发在飞机 蒙皮锤铆中的应用 在飞机蒙皮铆接技术中,锤铆是用一个小冲击力循环累计施加到铆钉使之变形的过程.根据锤铆铆接工艺和铆枪结构原理,铆钉的塑性变形是由铆枪的活 ...

  6. python在abaqus二次开发_Python在ABAQUS二次开发中的应用实例2ppt

    PPT内容 这是Python在ABAQUS二次开发中的应用实例2ppt,包括了ABAQUS 脚本概述,Python 语言简介,ABAQUS脚本编写等内容,欢迎点击下载. 主要内容 一.ABAQUS 脚 ...

  7. 基于ABAQUS二次开发的仿真分析平台

    ✨基于ABAQUS二次开发的仿真分析平台✨ 随着近年来计算机领域里程碑式的进步,计算机软件市场的迅速扩张,推出了许多功能强大的计算机仿真软件.ABAQUS有限元仿真分析软件则是其中的翘楚,作为应用广泛 ...

  8. Abaqus二次开发——UEL资源大放送!!!

    本次给大家分享的是:UEL资源汇总 经过之前给大家分享的UEL入门案例,相信大家对于自定义开发单元有一定的理解,最起码会使用,整体的流程大概有一定的了解. 身处科研一线的你们可能会需要一些比较&quo ...

  9. 基于python的abaqus二次开发_基于PYTHON的ABAQUS二次开发实例讲解

    第 1 页 共 11 页 基于 Python 的 Abaqus 二次开发实例讲解 ( asian58 2013.6.26 ) 基于 Python 的 Abaqus 的二次开发便捷之处在于: 1 .所有 ...

最新文章

  1. 比特币黄金BTG遭遇51%算力攻击,即将归零?
  2. 奋斗--陆涛在高强追悼会上说
  3. Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller — SKB
  4. linux服务器后台运行程序
  5. 将pdf转换html_pdf文件怎么转换成html网页格式?用什么方法来转换?
  6. 计算机操作系统——作业调度算法
  7. java时间戳转calender_Java获取当前时间,时间戳转换为时间格式 | 学步园
  8. git学习(9):git 添加 ssh keys 出现如下错误
  9. 查看centos中的用户和用户组
  10. Node.js webpack babel
  11. JavaScript是如何工作的:引擎,运行时和调用堆栈的概述!
  12. IOS应用之一--异常处理(UncaughtExceptionHandler)
  13. console_init初始化的研究
  14. rake matlab,基于MATLABRake接收机仿真及性能分析.doc
  15. 试用SVO_edgelet
  16. 怎样从下载的MP4视频中将音乐提取出来?
  17. [精简]托福核心词汇60
  18. 中国菜刀与一句话木马之间的原理分析
  19. Kafka SSL 和 ACL 配置
  20. VLC初始加载优化:avformat_find_stream_info接口延迟降低

热门文章

  1. 2023中国(江西)国际餐饮产业博览会,2月26日开幕
  2. python中单引号和双引号的区别_python中单引号,双引号,多引号区别_python中单双引号...
  3. 【幻化万千戏红尘】qianfeng-JAVA课程结束总结
  4. 空间数据可视化:ArcGIS JavaScript API 二、三维数据一体化
  5. argis怎么关掉对象捕捉_ArcGIS常用快捷键
  6. 【西藏冒险王】的事谢广坤早就看透了!
  7. Nwafu-OJ-1507 Problem 阶段2考试题目4 手机按键
  8. MYSQL报错1075
  9. 去除面部黑色素小妙招_怎么淡斑祛除脸部黑色素 5个小妙招有效淡斑美白
  10. matlab数值与符号运算