以下内容来自《Abaqus 有限元分析常见问题解答与实用技巧》
复杂有限元模型中,包含很多种材料,而且每种材料的特性参数非常多,在Abaqus / CAE 中定义这些参数十分浪费时间,是否有更加方便省时的方法来完成参数的定义呢?
『解 答』
Abaqus / CAE 中的宏功能允许记录一系列 Abaqus 的脚本接口命令,并保存在宏文件(abaqusMaros.py)中。在 Abaqus / CAE 的 File 菜单下,选择 Macro Manager … 可以录制宏,每个脚本接口命令都与 Abaqus / CAE 的某个操作对应,录制完毕后无需保存模型直接退出 Abaqus / CAE,录制的宏将自动保存到文件abaqusMacros.py(笔者的保存路径是 C: \ 用户 \ a \ abaqusMcaros.py)。
下面以表4-1中所列3种材料的材料特性参数为例,教给读者使用宏管理器功能录制材料特性参数的详细操作步骤。实际应用时,读者可以根据需要录制任意数量的材料特性参数,或者直接创建材料库。
表4-1 钢、铜和铝的材料属性(单位:N,m,Kg)
材料名称 | 材料属性 | 材料属性值 |
钢 | 弹性模量 | 200 E 9 |
泊松比 | 0.3 | |
密度 | 7800 | |
屈服应力和塑性应变 | 400 E 6,0.00 | |
420 E 6,0.02 | ||
500 E 6,0.20 | ||
600 E 6,0.50 | ||
铜 | 弹性模量 | 110 E 9 |
泊松比 | 0.3 | |
密度 | 8970 | |
屈服应力和塑性应变 | 314 E 6,0.00 | |
铝 | 弹性模量 | 70 E 9 |
泊松比 | 0.35 | |
密度 | 2700 | |
屈服应力、塑性应变和温度 | 270 E 6,0,0 | |
300 E 6,1,0 | ||
243 E 6,0,300 | ||
270 E 6,1,300 |
录制材料特性参数的详细操作步骤如下:
(1)启动 Abaqus / CAE,在 File 菜单下选择 Macro Manager …创建宏add_SI_Materials,将保存路径设置为 Home,如图4-11所示。
图 4-11 创建宏 add_SI_Materials
(2)切换到 Property 模块,在 Material Manager 下创建表4-1中的3种材料并输入对应材料属性。这部分操作比较简单,笔者在此不一一介绍操作界面,请读者自行完成。
(3)单击 Stop Recording 按钮结束宏录制。
(4)不必保存模型,直接退出 Abaqus / CAE。
(5)重新启动 Abaqus / CAE,在 File 菜单中打开 Macro Manager,选中宏add_SI_Materials,单击 Run 按钮执行宏文件(图4-12),瞬间执行完毕。切换到Property 功能模块,在 Material Manager 中可以看到创建好的3种材料(图4-13)。
图4-12 执行宏文件
图4-13 创建完的3种材料
在软件安装的根目录(笔者的路径为C:\用户\a\ abaqusMacros.py)下找到录制的宏文件 abaqusMacros.py(资源包下列位置\ abaqusMacros.py),使用文本编辑器 EditPlus 软件打开,其源代码如下:
1 def add_SI_Materials():
2 import section
3 import regionToolset
4 import displayGroupMdbToolset as dgm
5 import part
6 import material
7 import assembly
8 import step
9 import interaction
10 import load
11 import mesh
12 import job
13 import sketch
14 import visualization
15 import xyPlot
16 import displayGroupOdbToolset as dgo
17 import connectorBehavior
18 session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=ON,
19 engineeringFeatures=ON)
20 session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(
21 referenceRepresentation=OFF)
22 mdb.models['Model-1'].Material(name='Steel')
23 mdb.models['Model-1'].materials['Steel'].Elastic(table=((200000000000.0, 0.3),
24 ))
25 mdb.models['Model-1'].materials['Steel'].Density(table=((7800.0, ), ))
26 mdb.models['Model-1'].materials['Steel'].Plastic(table=((400000000.0, 0.0), (
27 420000000.0, 0.02), (500000000.0, 0.2), (600000000.0, 0.5)))
28 mdb.models['Model-1'].Material(name='Copper')
29 mdb.models['Model-1'].materials['Copper'].Elastic(table=((110000000000.0, 0.3),
30 ))
31 mdb.models['Model-1'].materials['Copper'].Density(table=((8970.0, ), ))
32 mdb.models['Model-1'].materials['Copper'].Plastic(table=((314000000.0, 0.0), ))
33 mdb.models['Model-1'].Material(name='Aluminum')
34 mdb.models['Model-1'].materials['Aluminum'].Elastic(table=((70000000000.0,
35 0.35), ))
36 mdb.models['Model-1'].materials['Aluminum'].Density(table=((2700.0, ), ))
37 mdb.models['Model-1'].materials['Aluminum'].Plastic(temperatureDependency=
38 ON, table=((270000000.0, 0.0, 0.0), (300000000.0, 1.0, 0.0), (243000000.0,
39 0.0, 300.0), (270000000.0, 1.0, 300.0)))
l 第1行代码定义函数 add_SI_Materials()。
l 第2行至第17行代码分别导入下列功能模块:section、regionToolset、displayGroupMdbToolset、part、material、assembly、step、interaction、load、mesh、job、sketch、visualization、xyPlot、displayGroupOdbToolset、connectorBehavior。细心的读者会发现,这些模块都是在 Abaqus / CAE 中建模使用的模块或工具。
l 第18行至第21行代码对视口 Viewport – 1中的部件进行显示设置,这些设置一般都由 Abaqus 自动完成,读者不必太关心。
l 第22行至第39行代码分别为模型 Model-1 创建了3种材料 Steel、Copper和 Aluminum,代码都使用英文单词加限制符“.”表示,读者很容易读懂并明白每行代码的含义,此处不再赘述。
『实用技巧』
(1)对于企业用户,建议按照本节介绍方法建立材料库;对于仿真分析工程师或在读研究生,根据需要,建议把常用材料属性也录制为宏,提高建模分析的效率。
(2)按照类似操作,读者也可以将复杂模型的建模部分、重复使用部分(例如,荷载工况库、分析过程库)录制为宏文件。
(3)根据需要,读者可以录制部分 Abaqus /CAE 操作,也可以录制完整的有限元分析。
本节只介绍了最简单的 Abaqus 软件中的 Python脚本开发,更完整的 Abaqus 脚本开发的详细介绍,请参见笔者的另一本著作《Python 语言在 Abaqus 中的应用》(第二版),书中详细介绍了 Python 编程基础、Abaqus 中的 Python 脚本接口基础知识、编写脚本建立模型、访问输出数据库(ODB)、定制插件等,任何一位Abaqus 软件使用人员借助于 Python 二次开发,都可以大大提高有限元分析的效率,少则提高几十倍,多则提高成千上万倍。