Abaqus的Python后处理详解-kxh(全面)
基于PYTHON的ABAQUS后处理开发

基于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语言编制脚本接口可以执行的程序,从而实现自动化重复性的工作、创建和修改模型数据库、访问数据库的功能。
基于Python的ABAQUS后处理技术在隔水管静态分析中的应用

・专题研究・ 收稿日期: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 中的应用--学习笔记

运算符和表达式
赋值运算符 = 算数运算符:加 + 减 - 乘 * 除 /
幂 ** x**y 将返回 x 的 y 次幂 取模 % 返回除法的余数 取整数 // 返回商的整数部分 ※ Python 不支持自增、自减运算 关系运算符:小于< 大于> 小于等于<= 大于等于>= ※ 关系运算符返回值 True 或 False 逻辑运算符:与 and 或 or 非 not ※ 逻辑运算符返回值 True 或 False 【重】运算符优先级(序号越大表示优先级越高)
观察列表(watch list)等功能。
3)EditPlus 编辑器:
模板代码:
#!/user/bin/python
使 Python 程序可以在 UNIX 操作系统下运行
# -* - coding:UTF-8 -*- 设置编码集为 UTF-8,使得编写 Python 代码过程中可以
输入中文字符
编写规则 1)合理使用注释:注释语句放在 # 后;中文注释必须先添加 # -* - coding:UTF-8 -*2)合理使用空行:空行的作用在于分隔两段不同功能或不同含义的代码,便于以后代
※ 若单引号表示的字符串中还有单引号,如’what’s your name’,系统将无法判断字符
串起始点而报错,这时可以用转义字符(\)实现,如’what\’s your name’;也可以使用双引
号”what’s your name”。
※ 常用转义字符及含义
转义字符 含义
转义字符 含义
\’
单引号
\v
※ 使用 IDE 开发工具或 EditPlus 等文本编辑软件编写代码时,编辑软件能够不起冒号 并实现自动缩进,可以大大提高代码的编写效率。
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 后处理开发

基于 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], 郭玲;杨合;邱晞;李恒;詹梅;郭良刚
因版权原因,仅展示原文概要,查看原文内容请购买。
Python语言在ABAQUS中的应用

Python语言在ABAQUS中的应用
Python语言在ABAQUS中的应用
【摘要】采用python脚本语言二次开发abaqus,通过开发python脚本程序处理abaqus重复工作,提高了工作效率。
【关键词】python;abaqus;交换输入;函数
引言
abaqus是大型通用的有限元分析软件,可以模拟绝大部分工程材料的线性和非线性行为,获得了广大用户的认可,在建筑结构分析领域应用广泛。
python是一种面向对象的脚本语言,,该语言已经诞生20余年,它的简洁性和易用性使程序的开发过程变得简单,特别适用于快速应用开发。
在此介绍一下编写脚本快速建模。
编写python脚本快速建立模型是abaqus高级用户经常使用的功能之一。
例如,在abaqus/cae中建模时需要反复输入各种参数和设置多个对话框,编写脚本只需要几条语句就可以实现。
如果经常建立相同或类似模型,还可以编写独立的模块,还可以编写脚本创建材料库,运行python脚本后material manager将自动出现定义的材料。
在此介绍3种最常用的快速建立模型的方法,包括交互式输入、创建材料库。
1.交互式输入
交互式输入直接指定模型参数,而无需在abaqus/cae下选择多个菜单、多个按钮,可以节省许多建模时间。
abaqus脚本接口提供3种交互式输入函数,分别是:getinput()函数、getinputs()。
Abaqus的Python后处理详解-kxh

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文件数据的级数,可以逐渐调大该参数,观察打印结果。
ABAQUS后处理简明教程

计算结束后查看结果:如果要查看应力图,单击左侧菜单栏中的如果查看承载力曲线,单击左侧菜单栏中的后选择OD 豳变量输出,单击继续。
弊竭:邙1,二»— 11.15.42GMT+0B1D' ODB.VuOdb 总Mqu$/GLartd 后rd6.14-3 +5r 6i8e+04+5,150«+04+4L 加+。
4+4fc 215e-|-04-bX7*7e+04+3.27选择相应的反力RF 和位移U>Z1E:度的岳>二I PF;在看在寺分岳口PELQ:学志型性应至71FW 心三在忑当日▼・RF ■的九L,_Mflgnitude ~~J□RF1 □ RF2团RF3>匚]/:底作用力更,乎:她会▼.U;空碘^———__-Migriitudt二ULHU2i £U3>UR 照于;序归VOIDR.孑地比调或面克:丁广■/=二二注室有用激前沿付雁寺二群享郎紫斑和活招的柠卡,吨.一百击去宣程禽喝下国.编辑.字符5?孑二母已在变量模块的位置选项选择唯一节点的,然后在下面然后在单元/结点模块中的右上角有激活分析步/帧选项,单击,出现下面界面,然后将geo分析步前面的对号取消掉,单击确定。
在选择方法中,选择结点集,然后选择之前定义的参考点集,然后单击下面的绘图即可KrPtnjj tip在左侧菜单栏中单击出现•当苛三叁±RLODB;Zodt名和.RFiRF^PT:FQ4INPAFrrmFWii口与*RFRFS用RMinstant IT FOIJNDATION'I not\^7^.」「U3P「FdUNDATl FromFWd口杆a U:U391p?rt in夕#口M F<XlN04r[0N4node4双击即可打开计算结果数值,其中x为时间,y为反力或位移,将y复制到excel中画图即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。