您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > Abaqus的Python后处理详解-kxh(全面)
AbaqusAbaqusAbaqusAbaqus中PythonPythonPythonPython后处理详解ByNUAAPh.DKongXianghong2013/04/23下图是AbaqusODB文件的数据结构,后处理操作主要对以下两步分进行操作:1)对场变量的读取路径:odb.setps[].frames[].fieldOutputs[]2)对历史变量的读取路径:odb.setps[].historyRegions[].historyOutputs[]1AbaqusODB文件数据结构2创建Abaqus分析实例2.1创建3D实体Part创建截面为10×10mm,长度为20mm的拉伸体部件。2创建Abaqus分析实例2.2对3D实体Part划分单元模型建得比较小,划分单元也比较少,这样得到的odb文件也比较小,有助于更方便地了解odb文件的数据结构。2创建Abaqus分析实例2.3创建材料及截面2创建Abaqus分析实例2.4给Part赋材料属性及创建装配实例2创建Abaqus分析实例2.5创建分析步为了输出HistoryOutput,所以分析步的增了步设置了多步(10步)。2创建Abaqus分析实例2.6编辑场输出变量2创建Abaqus分析实例2.7为历史输出变量创建NodeSet2创建Abaqus分析实例2.8编辑历史输出变量2创建Abaqus分析实例2.9创建边界条件施加边界条件的Region为Set-1。2创建Abaqus分析实例2.10施加载荷2创建Abaqus分析实例2.11创建Job在Job编辑对话框的Parallelization标签页中也可定义并行计算的核数。2创建Abaqus分析实例2.12在Abaqus/CAE中查看分析结果3在Abaqus/CAE中使用Python进行后处理3.1打开关闭odb文件的方法方法一:fromodbAccessimport*myodb=openOdb('D:/.../Job-1.odb')myodb.close()方法二:importodbAccessmyodb=session.openOdb('D:/.../Job-1.odb')myodb.close()方法三:importvisualizationmyodb=visualization.openOdb('D:/.../Job-1.odb')myodb.close()3在Abaqus/CAE中使用Python进行后处理3.2使用prettyPrint()方法查看odb数据结构(1)在Abaqus命令行借口中输入如下四行Python程序:fromodbAccessimport*fromtextReprimport*myodb=openOdb('Job-1.odb')prettyPrint(myodb,1)程序运行结果如右图所示,prettyPrint()的第2个参数表示打印odb文件数据的级数,可以逐渐调大该参数,观察打印结果。注:当odb文件在Abaqus的工作路径下时,使用openOdb()打开odb文件时可以不用写路径。3在Abaqus/CAE中使用Python进行后处理3.2使用prettyPrint()方法查看odb数据结构(1)prettyPrint()的第2个参数设为2时的打印结果,可以只关注steps下的数据。3在Abaqus/CAE中使用Python进行后处理3.3使用getIndentedRepr()方法查看odb数据结构(1)在Abaqus/CAE命令行中输入以下Python程序,可以将odb文件数据打印到指定的文本文件中。fromodbAccessimport*fromtextReprimport*f1=open('D:/Report2.txt','w')myodb=openOdb('Job-1.odb')r=getIndentedRepr(myodb,2)f1.write(r)f1.close()myodb.close()右图是将getIndentedRepr()方法第二个参数设为4时,打印到Report4.txt文件中是odb文件数据。仔细观察文本文件中的数据结构,有助于更好的理解odb文件的数据结构。3在Abaqus/CAE中使用Python进行后处理3.3使用getIndentedRepr()方法查看odb数据结构(2)3在Abaqus/CAE中使用Python进行后处理3.4在命令行接口中查看odb文件数据(1)fromodbAccessimport*#导入odbAccess模块myodb=openOdb('Job-1.odb')#打开odb文件mystep=myodb.steps#odb.stepsmystep.keys()#查看steps['Step-1']step1=mystep['Step-1']#读取Step-1step1.__members__#查看Step-1中的数据['acousticMass','acousticMassCenter','description','domain','eliminatedNodalDofs','frames','historyRegions','inertiaAboutCenter','inertiaAboutOrigin','loadCases','mass','massCenter','name','nlgeom','number','previousStepName','procedure','retainedEigenModes','retainedNodalDofs','timePeriod','totalTime']3在Abaqus/CAE中使用Python进行后处理3.4在命令行接口中查看odb文件数据(2)frm=step1.frames#读取odb.steps['Step-1'].frameslen(frm)#frams的长度11frm10=frm[10]#取frames[10],即frames[-1]frm10.__members__#查看frames[10]['associatedFrame','cyclicModeNumber','description','domain','fieldOutputs','frameId','frameValue','frequency','incrementNumber','isImaginary','loadCase','mode']fld=frm10.fieldOutputs#取fieldOutputsfld.keys()#查看fieldOutputs中的键['E','S','U']3在Abaqus/CAE中使用Python进行后处理3.4在命令行接口中查看odb文件数据(3)fldS=fld['S']#取应力SfldS.__members__#查看S包含的数据['baseElementTypes','componentLabels','description','isComplex','locations','name','type','validInvariants','values']val=fldS.values#所有单元的应力数据len(val)16v1=val[0]#取第一个单元的应力数据v1.__members__#查看第一个单元包含的应力['baseElementType',...,'data','dataDouble','elementLabel',...,'inv3',...,'magnitude',...,'mises','nodeLabel','outOfPlanePrincipal','position','precision','press','sectionPoint','tresca','type']3在Abaqus/CAE中使用Python进行后处理3.4在命令行接口中查看odb文件数据(4)dt=v1.data#取单元应力S11,S22,....,S23dtarray([0.383725494146347,0.383725494146347,-100.0,6.84141999931516e-16,-0.345002353191376,-0.345002353191376],'f')dt[0]#S110.38372549dt[5]#S23-0.34500235v1.mises#mises应力100.387283325195v1.elementLabel#单元编号1Thanks!Thanks!Thanks!Thanks!://blog.sina.com.cn/kxh86://blog.sina.com.cn/kxh86://weibo.com/kxh86://weibo.com/kxh86
本文标题:Abaqus的Python后处理详解-kxh(全面)
链接地址:https://www.777doc.com/doc-5281808 .html