Abaqus中输出场文件odb的数据结构及Python读取
来源:互联网 发布:利润表数据分析 编辑:程序博客网 时间:2024/06/09 22:55
Abaqus所生成的Odb文件对象,包含了我们建模中的模型信息,比如:part;assembly;material;section;profiles;interaction等模型信息;在不考虑结果数据的情况下,我们可以把Odb对象与Model对象相对比开看,他们包含了有限元模型的大部分信息,Odb对象的成员信息如下:
下面是一个小实例,读取odb文件中的模型信息:
o = session.openOdb(name='HertzContact.odb',readOnly = False)#通过已有odb文件来创建Odb对象>>> p = o.parts#获取访问odb对象中的part仓库>>> print p {'ASSEMBLY': 'Part object', 'BALL': 'Part object', 'BASE': 'Part object'}>>> m = o.materials#访问材料仓库>>> print m{'STEEL': 'Material object'}>>> print m.keys<AbaqusMethod session.openOdb(r'C:/windows/system32/HertzContact.odb').models['Default Model'].materials.keys>>>> m0 = m[m.keys()[0]]>>> print m0.nameSTEEL#获取材料的模型键值对信息>>> print m0.density.table((7.9e-09,),)>>> print m0.elastic.table((210000.0, 0.3),)>>> print m0.elastic.typeISOTROPIC
下面我们通过构造函数对odb对象进行操作:新建材料对象和属性
#在当前odb对象o中创建Newsteel的新材料属性对象m1 = o.Material(name='NewSteel')#为m1添加密度对象参数>>> m1.Density(table=((7.9e-09,),))session.openOdb(r'C:/windows/system32/HertzContact.odb').models['DefaultModel'].materials['NewSteel'].options['density']#为m1添加弹性对象属性>>> m1.Elastic(table=((210000.0,0.3),),type=ISOTROPIC)>>> print m.keys()['NewSteel', 'STEEL']#已经创建到材料库中
一、网格信息
从Odb结果文件中,我们可以得到就有独立网格部件的model对象,这是因为Odb对象存储了模型的基本网格组织信息,Odb对象中的孤立网格信息存在于rootAssembly对象。rootAseembly是odbAssembly的实例对象。
其中rootAssembly对象中具有以下的信息:
以上各属性的访问方式充分体现面向对象的编程思想,通过实例化类的实例来调用对象的属性,和属性值。
另外一部分就是结果信息,而Odb对象中的结果数据都是保存在steps对象仓库中;分为场变量结果(fieldOutputs)和历史变量结果(historyOutputs);
Odb的模型数据结构在参考手册的图解为:
根据图解路径所示,我们要访问Odb文件中的场输出数据就必须指定正确的访问路径和场路径索引;
如:
odb.steps[].frames[].filedOutputs[].values[]
odb.historyRegions[].historyOutput[]
其中‘[ ]’中我们可以指定具体的名称或者索引值。
一:场变量数据的对象信息:
二,应用实例:读取odb文件中的节点和坐标
# -*- coding: mbcs -*-import os, os.path, sysfrom odbAccess import *from abaqusConstants import *def extractNodes(odbname, tname, tpath=None): if tpath==None: tpath = os.getcwd() tname = tname + '.inp' oname = odbname+'.odb' tFile=os.path.join(tpath,tname) oPath=os.path.join(tpath,oname) f = open(tFile, 'w') o = openOdb(path=oPath) instes = o.rootAssembly.instances for key in instes.keys(): labels, xyz = [], [] for node in instes[key].nodes: labels.append(node.label) xyz.append(node.coordinates) cc = dict(zip(labels, xyz)) aa = sorted(labels) bb = [cc[item] for item in aa] f.write('*Instance '+instes[key].name+'\n') for i in range(len(aa)): tepS = str(aa[i])+', '+str(bb[i][0])+', '+str(bb[i][1])+', '+\ str(bb[i][2])+'\n' f.write(tepS) f.close() o.close()if __name__=="__main__": extractNodes(odbname='HertzContact', tname='hertzcontact')
- Abaqus中输出场文件odb的数据结构及Python读取
- ABAQUS二次开发悬臂梁以及ODB文件信息的读取
- Matlab-python修改ABAQUS的inp计算文件
- Matlab调用Python读取Abaqus模型操作
- Allegro PCB gerber文件输出 + ODB++文件输出
- Abaqus的历史数据输出的问题
- ABAQUS提取截面节点的输出结果
- python登陆百度网盘并读取自己的所有文件,输出到文本文件中
- Abaqus obj inp 文件内部读取点坐标并统计
- python中读取xml文件的库
- Python中读取CSV文件的方法
- Python读取文件中特定位置及特定数目的内容
- Matlab-python-ABAQUS数据交互及联合使用
- python分批定量读取文件内容,输出到不同文件中
- 文件的读取和输出
- Python文件的读取
- python读取指定字节及位置的文件内容
- odb操作excel文件
- 如何在eclipse的配置文件里指定jdk路径(即配置启动eclipse的JDK)
- Unity 给代码添加命名空间
- Electron 快速入门
- 深度学习发展历程
- Kubernetes,微服务以及 Service Mesh
- Abaqus中输出场文件odb的数据结构及Python读取
- Mac OS开发 DockTile以及消息通知提示
- boost::asio::deadline_timer(理解)
- struts2
- 计算机基础---电脑的原理
- Xgboost原理详解
- 安卓xml布局中 android:paddingBottom="@dimen/activity_vertical_margin"是什么意思?
- sessionID一直变化。
- Hello, World