本期内容将编写脚本创建输出数据库,并向其中添加模型数据、场数据和历史数据,在后处理模块中显示位移场变量计算结果,最后保存ODB文件。源脚本来自于曹老师的《Python语言在Abaqus中的应用》,好书值得推荐!
编程思路:
导入相应模块。本例中将创建输出数据库,并向其中添加数据,于是应添加:odbAccess、odbMaterial、odbSection、和abaqusConstants等模块;
创建输出数据库时,数据库不包含任何模型需要调用相应函数构造对象。一般情况下需要创建以下对象:材料属性(Material模块)、截面(Section模块)、部件实例(Assembly模块)、分析步和帧(Step模块)、节点和单元(Mesh模块);
向输出数据库中添加场数据和历程数据,本例中只向输出数据库中添加了节点位移,场输出为默认输出;
创建完数据库后,应调用save( )方法保存数据库文件,然后调用close( )方法关闭文件。
部分代码如下:
#!/user/bin/python
# -* - coding:UTF-8 -*-
# 本脚本的功能是创建输出数据库,添加模型数据和场数据
# 并将场数据作为默认的变形输出变量
from odbAccess import *
from odbMaterial import *
from odbSection import *
from abaqusConstants import *
# 创建输出数据库ODB,同时将创建根装配rootAssembly
odb = Odb(name='simpleModel',analysisTitle='ODB created with API',
description='example illustrating API ',path='odb_Create_ODB.odb')
# 创建材料
materialName = "Elastic Material"
material_1 = odb.Material(name=materialName)
material_1.Elastic(type=ISOTROPIC,temperatureDependency=OFF,
dependencies=0,noCompression=OFF, noTension=OFF,
moduli=LONG_TERM, table=((12000,0.3),))
# 创建截面
sectionName = 'Homogeneous Shell Section'
section_1 = odb.HomogeneousShellSection(name=sectionName,
material=materialName, thickness=2.0)
# 下面将定义模型数据
# 设置截面分类(section categories)
sCat = odb.SectionCategory(name='S5',description='Five-Layered Shell')
spBot = sCat.SectionPoint(number=1,description='Bottom')
spMid = sCat.SectionPoint(number=3,description='Middle')
spTop = sCat.SectionPoint(number=5,description='Top')
# 创建只包含2个单元的壳模型,包含4个积分点和5个截面点
part1 = odb.Part(name='part-1', embeddedSpace=THREE_D,type=DEFORMABLE_BODY)
nodeData = ((1, 1,0,0),(2, 2,0,0),(3, 2,1,0.1),(4, 1,1,0.1),(5, 2,-1,-0.1),(6, 1,-1,-0.1),)
part1.addNodes(nodeData=nodeData,nodeSetName='nset-1')
......
在Abaqus操作如下:点击File,Run Script,
若CAE界面下方出现:
New output database has been created successfully!
You can view the odb_Create_ODB.odb file in the visualization module!
则odb文件已经成功创建,在Visualization模块中不要直接点击变形图,而应该先在此模块中打开odb文件,在点击变形云图,如图所示:
本期代码就分享在这里了,大家有兴趣可在留言板进行留言,和木木互动起来~
往期推荐
相关文章,在仿真秀官网搜索:
Python脚本——输出场输出数据
ABAQUS自定义插件制作
Abaqus二次开发之Python(1)