Abaqus的Python后处理详解-kxh
- 格式:pdf
- 大小:4.71 MB
- 文档页数:24
基于PYTHON的ABAQUS后处理开发作者:李慧孙银茹来源:《中小企业管理与科技·上旬》2010年第06期摘要:ABAQUS的后处理功能不能完全提供我们在分析过程中所需的数据,为更好的扩展后处理功能,查看和分析结果数据,本文提出了使用Python语言对ABAQUS进行二次开发来达到这一目的的方法。
文中讨论了ABAQUS的脚本接口和对象模型在二次开发中的作用和调用流程,以及文件的读写与复制、数据读取与处理、结果输出与查看等关键技术。
以共轨管锥面密封性的分析为例,使用Python语言提取了分析结果数据并将结果作为初始条件加载于新的分析中,最终得到所需的分析数据。
关键词:ABAQUS Python 后处理有限元分析0 引言ABAQUS是目前国际上最为先进的通用非线性有限元分析软件之一,软件包括种类丰富的材料库和单元库,可以模拟绝大部分工程材料的线性和非线性行为,而且材料库和单元库分开,材料和单元之间的组合能力很强,可以胜任复杂结构的静态与动态分析[1]。
ABAQUS自带的CAE 模块是一个完整的ABAQUS环境,提供—个简单一致的接口,可以用于创建、提交、监视和评价模拟所得到的结果[2]。
Python是一种简单易学、功能强大的编程语言,它有高效率的高级数据结构,可以简单而有效地实现面向对象编程[2]。
ABAQUS有限元程序就通过集成脚本语言Python向二次开发者提供了很多库函数,通过Python语言调用这些库函数来增强ABAQUS的交互式操作能力。
本文通过Python脚本语言来提取ABAQUS的后处理结果,并对结果数据进行相应的计算和转换,并将处理结果作为初始条件应用于其后的开发过程中。
1 ABAQUS、PYTHON接口程序ABAQUS的二次开发可以通过Python脚本语言控制ABAQUS内核实现前处理建模和后处理的计算分析。
ABAQUS脚本接口是Python语言的一个扩展,可以使用Python语言编制脚本接口可以执行的程序,从而实现自动化重复性的工作、创建和修改模型数据库、访问数据库的功能。
・专题研究・ 收稿日期:2008205226基金项目:国家高技术研究发展计划(863计划)课题“深水钻井隔水管与井口技术”(2006AA09A10624)作者简介:赵焕卿(19632),男,河南偃师人,高级工程师,工程硕士,主要从事石油机械的研究与开发工作,E 2mail :zhaohq@ ;zhaohq2283@ 。
文章编号:100123482(2009)0120001205基于Python 的ABAQUS 后处理技术在隔水管静态分析中的应用赵焕卿a ,畅元江b(中国石油大学(华东)a.科技开发公司;b.机电工程学院,山东东营257061)摘要:为准确、高效地得到分析结果,研究了基于Pyt hon 语言的ABAQU S 后处理技术在隔水管静态分析中的应用。
采用ABAQU S 软件进行隔水管静态分析时,可调用自定义Pyt hon 程序访问数据库文件并直接提取相关分析结果,如隔水管最大等效应力、最大横向变形和最大弯曲应力等。
给出了基于Pyt hon 的ABAQU S 后处理技术在隔水管静态分析中的应用算例。
研究表明,自定义Pyt hon 程序提取隔水管分析结果准确、高效,扩展了ABAQU S 的应用,可为ABAQU S 在海洋工程中的应用和基于Pyt hon 的ABAQU S 后处理技术研究与应用提供参考。
关键词:Pyt hon ;ABAQU S 后处理技术;隔水管静态分析中图分类号:TE934.102 文献标识码:AApplication of Python 2based ABAQUS Post 2processingT echnique to Riser Static AnalysisZHAO Huan 2qing a ,C HAN G Yuan 2jiang b(a.Scienti f ic and Technological Com pany ;b.College of Mechanical and Elect ronic Engineering ,China Universit y of Pet roleum (H uadong ),Dong yi ng 257061,China )Abstract :In order to obtain t he interested calculation result s efficiently and accurately ,applica 2tion of pyt hon 2based ABAQU S po st 2p rocessing technique to riser static analysis was st udied in t his paper.When ABAQU S was employed to conduct riser static analysis ,customized Pyt hon program could be invoked to visit ABAQU S ODB files to ext ract directly such related calculation result s as max Mises st ress ,max lateral deflection and max bending st ress ,etc.An example was presented which illust rated t he application of pyt hon 2based ABAQU S post 2processing technique to riser static analysis.The research indicated t hat customized Pyt hon p rogram could be used to ext ract riser analysis result s efficiently and accurately ,which extended t he application of ABAQU S.It provided reference for application of ABAQU S to off shore engineering and for ap 2plication technique of Pyt hon 2based ABAQU S Post 2p rocessing technique.K ey w ords :Pyt hon ;ABAQU S post 2p rocessing technique ;riser static analysis 隔水管(立管)可用于钻井、采油和修井等作业,在海洋油气资源开发中具有举足轻重的作用[1]。
基于Python的Abaqus前、后处理GUI插件二次开发与应用作者:***来源:《计算机辅助工程》2022年第02期摘要:为提高Abaqus建模效率并进行可视化数据分析,利用Python语言对Abaqus前-后处理进行二次开发。
分析某柴油机机油-水冷却器模块组件,结果表明:前处理模块开发螺栓GUI插件,能够批量创建相同规格的螺栓载荷,提高前期建模效率,缩短分析周期;后处理模块开发Campbell制图插件,能根据工程实际需要将模态结果数据绘制成Campbell图,并将计算结果可视化输出。
关键词: Abaqus; Python; 二次开发; 前处理; 后处理; GUI界面中图分类号: TP391.99; TB115.1文献标志码: BGUI plugin redevelopment and application of Abaquspre-and post-processing based on PythonTIAN Yutai(Shanghai New Power Automotive Technology Co., Ltd., Shanghai 200438, China)Abstract: To improve the efficiency of Abaqus modeling and achieve visual data analysis,redevelopment of Abaqus pre-and post-processing is carried out with Python language. A diesel engine oil-water cooler module is analyzed. The results show that: a bolt GUI plug-in is developed for the pre-processing module, which can create bolt loads of the same specification in bulk,improving pre-modeling efficiency and shortening the analysis cycle; the Campbell mapping plug-in is investigated for the post-processing module, which can draw the modal result data into Campbell diagrams according to the actual needs of engineering and visualize the calculation results for output.Key words: Abaqus;Python; redevelopment; pre-processing;post-processing; GUI interface0引言作为国际通用计算分析软件,Abaqus具有丰富的单元类型与材料非线性模型,在各领域发挥至关重要的作用。
1 如何显示最大、最小应力在Visualization>Options>contour >Limits中选中Min/Max:Show Location2 后处理有些字符(图例啊,版本号啊,坐标系啊)不想显示view-view annotation option ,选择打勾3 后处理中显示边界条件Viewport--ODB Display Options 边界条件处打勾4 在模型上只显示云图,不显示网格option菜单-common-visible edges--free edges顺便窜一下,在前处理mesn之后不想显示网格,只显示模型的话,更简单:工具栏有显示mesh、显示线框、显示实体连续的三个按钮。
5 你想调大变形放大系数(Deformation Scal Factor)让变形显示更明显一点?注意:非线性问题,这个默认为是1(也就是不放大),只有线性的才能改。
option菜单-common-visible edges--Deformation Scale factor6 如何在后处理中移动图例选Gneral--legend 可以隐藏选Legent--Upper left corner 可以移动7 对ODB结果处理以后,如何保存结果從visualization模塊開啟odb檔(不要直接從job manager開啟),並取消勾選read only,對已有的XY-data作copy to odb。
8 job步提交运算后警告信息出现setwarning 或者nodewarning,(类似这样的语句:....have been identified in element setErrElemVolSmallNegZero.... identified in element setErrElemDistortedWarnNodeUnconstrainedWarnNodeMissMasterIntersectWarnElemDistorted.这里的Warn打头的代表相应的警告信息,Err代表相应的错误信息)我怎么知道这些set或者node到底在哪儿?在job步job manager点result,tool--- display group---在item 选node或者element,右边就出现相应的警告几何部分,勾选“Highlight item inviewport”就能在模型中高亮这些警告部分。
基于 PYTHON 的 ABAQUS 后处理开发
李慧;孙银茹
【期刊名称】《中小企业管理与科技》
【年(卷),期】2010(000)016
【摘要】ABAQUS的后处理功能不能完全提供我们在分析过程中所需的数据,为更好的扩展后处理功能,查看和分析结果数据,本文提出了使用Python语言对ABAQUS进行二次开发来达到这一目的的方法.文中讨论了ABAQUS的脚本接口和对象模型在二次开发中的作用和调用流程,以及文件的读写与复制、数据读取与处理、结果输出与查看等关键技术.以共轨管锥面密封性的分析为例,使用Python 语言提取了分析结果数据并将结果作为初始条件加载于新的分析中,最终得到所需的分析数据.
【总页数】2页(P268-269)
【作者】李慧;孙银茹
【作者单位】
【正文语种】中文
【相关文献】
1.基于Python的ABAQUS后处理技术在隔水管静态分析中的应用 [J], 赵焕卿;畅元江
2.基于Python-Matlab的Abaqus后处理技术在柴油机有限元分析中的应用 [J], 高喆;禹朝帅;刘钊宾;刘世谦;林好利
3.基于ABAQUS/Python的数控弯管专用后处理模块的拓展 [J], 冯颖;杨合;陈德
正;李恒;詹梅
4.基于Python的ABAQUS数控弯管数值模拟后处理 [J], 岳永保;杨合;詹梅;许旭东;李光俊
5.基于Python的ABAQUS后处理研究开发及其在薄壁管数控弯曲中的应用 [J], 郭玲;杨合;邱晞;李恒;詹梅;郭良刚
因版权原因,仅展示原文概要,查看原文内容请购买。
Abaqus中Python后处理详解By NUAAPh.D Kong Xianghong2013/04/23下图是Abaqus ODB文件的数据结构,后处理操作主要对以下两步分进行操作:1) 对场变量的读取路径:odb.setps[].frames[].fieldOutputs[]2) 对历史变量的读取路径:odb.setps[].historyRegions[].historyOutputs[]1 Abaqus ODB 文件数据结构2.1 创建3D实体Part创建截面为10×10mm,长度为20mm的拉伸体部件。
2.2 对3D实体Part划分单元模型建得比较小,划分单元也比较少,这样得到的odb文件也比较小,有助于更方便地了解odb文件的数据结构。
2.3 创建材料及截面2.4 给Part赋材料属性及创建装配实例2.5 创建分析步为了输出HistoryOutput,所以分析步的增了步设置了多步(10步)。
2.6 编辑场输出变量2.7 为历史输出变量创建Node Set2.8 编辑历史输出变量2.9 创建边界条件施加边界条件的Region为Set-1。
2.10 施加载荷2.11 创建Job在Job编辑对话框的Parallelization标签页中也可定义并行计算的核数。
2.12 在Abaqus/CAE中查看分析结果3.1 打开关闭odb文件的方法方法一:from odbAccess import *myodb=openOdb('D:/.../Job-1.odb')myodb.close()方法二:import odbAccessmyodb=session.openOdb('D:/.../Job-1.odb')myodb.close()方法三:import visualizationmyodb=visualization.openOdb('D:/.../Job-1.odb')myodb.close()3.2 使用prettyPrint()方法查看odb 数据结构(1)在Abaqus 命令行借口中输入如下四行Python 程序:>>> from odbAccess import *>>> from textRepr import *>>> myodb=openOdb('Job-1.odb')>>> prettyPrint(myodb,1) 程序运行结果如右图所示,prettyPrint()的第2个参数表示打印odb文件数据的级数,可以逐渐调大该参数,观察打印结果。
利用Python对Abaqus进行后处理结果输出-----中大_戚超_2016.10.31 概述在Abaqus的二次开发过程中,通常需要采用Python脚本语言将Abaqus的计算结果进行输出,然后再进行处理。
Python使Abaqus的内核语言,使用较为方便,Abaqus运行Python语言的方式有多种,可以直接命令窗口,也可以读入脚本,还可以采用类似批处理的方式。
本次以一个例子细说Python语言在Abaqus后处理中的应用,模型的计算结果云图如图1所示。
图1 计算结果2 输出所有积分点上的Mises应力直接上Python代码:import osfrom odbAccess import*from textRepr import*myodb=openOdb(path='Job-1.odb')cpFile=open('artlcF1.txt','w')RF=myodb.steps['Step-1'].frames[1].fieldOutputs['S'].valuesfor i in range(len(RF)) :cpFile.write('%.3F\n' %(RF[i].mises))else:cpFile.close()#引入模块,因为需要打开结果文件#打开结果文件,并复制给变量myodb#打开一个txt文件#将输出场赋值给RF#循环语句,向txt文件逐行写入mises应力Abaqus的结构层次分的很细,比如结果文件下分如下:使用过Abaqus的都知道step表示载荷步,frame表示载荷子步,因而在读取Mises应力时需要详细地指定输出哪一步的应力,而应力结果是输出场数据(fieldOutput)的中一种,需要指定是何种应力,程序才知道怎么读取并写入。
由于Abaqus里面涉及的变量特别多,通常很难记清楚那一项下面都有哪些量可以调用,此时比较好的方式是采用print 函数查看,例如查看myodb.steps['Step-1'].frames[1].fieldOutputs 下面有哪些变量可以调用,在窗口输入:print myodb.steps['Step-1'].frames[1].fieldOutputs显示:{'AC YIELD': 'FieldOutput object', 'CF': 'FieldOutput object', 'E': 'FieldOutput object', 'PE': 'Fiel dOutput object', 'PEEQ': 'FieldOutput object', 'PEMAG': 'FieldOutput object', 'RF': 'FieldOutput object', 'S': 'FieldOutput object', 'U': 'FieldOutput object'}各种不同的结果,包括位移、应力和支反力等等,因此可以知道通过如下的方式读取应力:myodb.steps['Step-1'].frames[1].fieldOutputs ['S']此时读取的信息特别多,我们想要的是其中的数值信息,因此可以:myodb.steps['Step-1'].frames[1].fieldOutputs ['S'].values通过此句能够读取所有节点的应力数据,输出其中一个:print myodb.steps['Step-1'].frames[1].fieldOutputs ['S'].values[0]显示:({'baseElementType': 'C3D8R', 'conjugateData': None, 'conjugateDataDouble': 'unknown', 'da ta': array([-855397.25, 58.817497253418, 358.723419189453, -139.652938842773, -456.986175537109, 4.29301929473877], 'f'), 'dataDouble': 'unknown', 'elementLabel': 1, 'fac e': None, 'instance': 'OdbInstance object', 'integrationPoint': 1, 'inv3': -855606.3125, 'localCoordSystem': None, 'localCoordSystemDouble': 'unknown', 'magnitude': None, 'maxInPlanePrincipal': 0.0, 'maxPrincipal': 359.0310********, 'midPrincipal': 58.7767 486572266, 'minInPlanePrincipal': 0.0, 'minPrincipal': -855397.5, 'mises': 855606.375, 'nodeLabel': None, 'outOfPlanePrincipal': 0.0, 'position': INTE GRATION_POINT, 'precision': SINGLE_PRECISION, 'press': 284993.25, 'sectionPoint': None, 'tr esca': 855756.5, 'type': TENSOR_3D_FULL})输出的信息特别多,但是可以看到有mises这一项。
在abaqus中使用python实现的功能(一、二)By lxm9977(lxm200501@)功能一:实行提交多个job的功能。
对象:Job object使用:在源文件开始写上import job,源程序用mdb.jobs[name] 使用名字为name的job对象。
建立一个job对象的方法:z利用已有的inp文件中建立job:mdb.JobFromInputFile()z利用已有的cae中建立job: Job(...)建议用第一种方法。
设定参数的方法:9利用第一种方法建立job的时候,可以设定很多的参数,比如type,queue,userSubroutine等。
格式:mdb.JobFromInputFile(name=,inputFile=,type=,queue =,userSubroutine=,…….)。
9也可以先建立一个job,然后利用job对象的setValues来设定参数,格式:job.setValues(type=,queue=,userSubroutine=,…….)。
一个简单的例子:文件:job.pyfrom abaqusConstants import *import jobmdb.JobFromInputFile(name='job-1-1',inputFileName='Job-1.inp')#基于inp文件Job-1.inp建立名称为job-1-1的jobmdb.jobs['job-1-1'].setValues(waitMinutes=1)#设定参数mdb.jobs['job-1-1'].submit()#提交任务mdb.jobs['job-1-1'].waitForCompletion()运行:在cmd下面运行:Abaqus cae nogui=job.py如果是多个job,同样道理了,不多说了。
Abaqus中Python后处理详解By NUAAPh.D Kong Xianghong2013/04/23下图是Abaqus ODB文件的数据结构,后处理操作主要对以下两步分进行操作:1) 对场变量的读取路径:odb.setps[].frames[].fieldOutputs[]2) 对历史变量的读取路径:odb.setps[].historyRegions[].historyOutputs[]1 Abaqus ODB 文件数据结构2.1 创建3D实体Part创建截面为10×10mm,长度为20mm的拉伸体部件。
2.2 对3D实体Part划分单元模型建得比较小,划分单元也比较少,这样得到的odb文件也比较小,有助于更方便地了解odb文件的数据结构。
2.3 创建材料及截面2.4 给Part赋材料属性及创建装配实例2.5 创建分析步为了输出HistoryOutput,所以分析步的增了步设置了多步(10步)。
2.6 编辑场输出变量2.7 为历史输出变量创建Node Set2.8 编辑历史输出变量2.9 创建边界条件施加边界条件的Region为Set-1。
2.10 施加载荷2.11 创建Job在Job编辑对话框的Parallelization标签页中也可定义并行计算的核数。
2.12 在Abaqus/CAE中查看分析结果3.1 打开关闭odb文件的方法方法一:from odbAccess import *myodb=openOdb('D:/.../Job-1.odb')myodb.close()方法二:import odbAccessmyodb=session.openOdb('D:/.../Job-1.odb')myodb.close()方法三:import visualizationmyodb=visualization.openOdb('D:/.../Job-1.odb')myodb.close()3.2 使用prettyPrint()方法查看odb 数据结构(1)在Abaqus 命令行借口中输入如下四行Python 程序:>>> from odbAccess import *>>> from textRepr import *>>> myodb=openOdb('Job-1.odb')>>> prettyPrint(myodb,1) 程序运行结果如右图所示,prettyPrint()的第2个参数表示打印odb文件数据的级数,可以逐渐调大该参数,观察打印结果。
注:当odb 文件在Abaqus的工作路径下时,使用openOdb()打开odb 文件时可以不用写路径。
3.2 使用prettyPrint()方法查看odb数据结构(1)prettyPrint()的第2个参数设为2时的打印结果,可以只关注steps下的数据。
3.3 使用getIndentedRepr()方法查看odb数据结构(1)在Abaqus/CAE命令行中输入以下Python程序,可以将odb文件数据打印到指定的文本文件中。
>>>from odbAccess import *>>>from textRepr import *>>>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.3 使用getIndentedRepr()方法查看odb 数据结构(2)3.4 在命令行接口中查看odb文件数据(1) >>> from odbAccess import * # 导入odbAccess模块>>> myodb=openOdb('Job-1.odb') # 打开odb文件>>> mystep=myodb.steps # odb.steps>>> mystep.keys() # 查看steps['Step-1']>>> step1=mystep['Step-1'] # 读取Step-1>>> step1.__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.4 在命令行接口中查看odb文件数据(2)>>> frm=step1.frames # 读取odb.steps['Step-1'].frames >>> len(frm) # frams的长度11>>> frm10=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 # 取fieldOutputs>>> fld.keys() # 查看fieldOutputs中的键['E', 'S', 'U']3.4 在命令行接口中查看odb文件数据(3)>>> fldS=fld['S'] # 取应力S>>> fldS.__members__ # 查看S包含的数据['baseElementTypes', 'componentLabels', 'description','isComplex', 'locations', 'name', 'type', 'validInvariants','values']>>> val=fldS.values # 所有单元的应力数据>>> len(val)16>>> v1=val[0] # 取第一个单元的应力数据>>> v1.__members__ # 查看第一个单元包含的应力['baseElementType', ..., 'data', 'dataDouble', 'elementLabel', ..., 'inv3', ..., 'magnitude', ..., 'mises', 'nodeLabel','outOfPlanePrincipal', 'position', 'precision', 'press','sectionPoint', 'tresca', 'type']3.4 在命令行接口中查看odb文件数据(4)>>> dt=v1.data # 取单元应力S11,S22,....,S23 >>> dtarray([0.383725494146347, 0.383725494146347, -100.0,6.84141999931516e-16, -0.345002353191376, -0.345002353191376], 'f')>>> dt[0] # S110.38372549>>> dt[5] # S23-0.34500235>>> v1.mises # mises应力100.387283325195>>> v1.elementLabel #单元编号1Thanks!/kxh86/kxh86。