ABAQUS 中基于 Python 脚本语言开发实现仿真自动化操作

进行 ABAQUS 开发编程前,首先需要明白 ABAQUS 有限元分析思路和基本流程,以及 Python 基本语法和面向对象编程有基本的认识,下面是 Python 和 ABAQUS 的开发模板:

# 注释说明本程序需要实现的项目内容和功能#
#----------------------------------
#Initialization 初始化导入需要的包
from ABAQUS import *
from abaqusConstant import *
from caeModules import *

#----------------------------------
#Create the model
'''How to create the model'''

#-----------------------------------
#Create the part
'''How to create the part'''

#-----------------------------------
#Create materials
'''How to create the materials'''

'''……'''

开发模板中编写具体功能的实现方法,可实现的功能和 ABAQUS 提供的各操作模块一致:

  • 初始化
  • 创建分析模型
  • 创建几何部件
  • 定义材料属性及截面并与几何模型实现连接
  • 创建装配体
  • 创建分析步
  • 定义场变量和历史变量输出
  • 创建边界及载荷
  • 网格划分
  • 提交求解
  • 结果后处理

写代码的过程中涉及的类、方法等,可以通过宏命令快速了解相关的 api 函数及其作用和功能;也可以通过查看工作路径下的 abaqus.rpy 文件,里面记录整个操作过程的脚本。

1. 层级关系

ABAQUS 基于 Python 扩展出 500 多种对象模型,它们之间存在着不同的层级和包含关系,通常可以分为三大类:Session、MDB 以及 Odb,如图所示为开发包中的各功能模块层级介绍。其中根据颜色分为 Container 容器和 Singular object 单个对象,Container 中还包含有其它对象,而 Singular object 仅为自己。

attachments-2020-08-zXHJklMO5f29220f2aa68.png

在 Python 和 ABAQUS 的开发模板中,通过下面的代码实现初始化,其中可以理解为所有。

from ABAQUS import *
from abaqusConstant import *
from caeModules import *

其中

from ABAQUS import *

可以 * 理解为导入 ABAQUS 模块下的所有公共对象。通过这一命令,我们才能使用 mdb.*、session. * 这些命令,这是面向对象编程的基本思路。

from abaqusConstant import *

可以理解为导入 ABAQUS 中用到的所有符号常量,通常是整型或者浮点变量,但是为了能够清晰的表明代码的含义都以大写英文单词出现,这与 C 语言中定义的符号常量意义差不多,比如下面的代码中的 THREE_D 和 DEFORMABLE_BODY:

testPart=testModel.Part(name='Test',dimensionality=THREE_D,type=DEFORMABLE_BODY)

定义我们建立的模型是三维可变形实体模型,是一类专有名词,在 ABAQUS 中有特定的含义,如果不事先通过 abaqusConstant 导入则使用该语句将会报错。

from caeModules import *

这一句实现 ABAQUS 窗口中所有对象模块的导入。一般而言,有这三句命令,初始化工作基本完成。

2. 建模、材料等

如何实现建模、材料属性编辑以及其它各项操作呢。为了能够方便的介绍相关模块内容,我们直接使用宏命令来进行脚本的录制,直接快速。

首先是创建分析模型,通常默认为“Model-1”,我们也可以自定义,如果不清楚如何自定义,可以通过宏进行监控便于代码的学习,这里创建 Model 并自定义名称的宏代码如图所示(红色框)。

attachments-2020-08-EO0jxHhs5f29225260fd7.png

所以我们在直接导入基础包之后,可以通过 mdb.models.changeKey(fromName='Model-1',toName='MyTestModel') 实现创建 Model,编写代码如下所示。

#----------------------------------
#Create the model
mdb.models.changeKey(fromName='Model-1', toName='MyTestModel')
myModel=mdb.models['MyTestModel']

之后创建分析部件,这里基于 ABAQUS 的 part 建模功能完成,我们拉伸创建一个长方体,察看宏代码如图所示(红色框)。

attachments-2020-08-ojcArLUN5f2922641c26f.jpeg

筛选简化后将其转为如下代码行。具体代码的含义,熟悉整个 ABAQUS 操作的朋友一眼就能明白,这里不作过多说明。

  • 分享于 · 2020.08.04 16:56 · 阅读 · 1970

[版权声明] :本文系网友分享,仅以非商业性的交流和科研为目的,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网( friends@stuch.cn )联系!我们将协调给予处理。转载授权码:确权中,请原作者尽快与我们取得联系,阅读原文(请登录)..

0 条评论

请先 登录 后评论
猜猜我是谁
叶正梗 -研究生

14
提问
17
回答
4
文章