基于PYTHON的ABAQUS后处理开发 附Python语言在Abaqus中的应用文档下载
ABAQUS 的二次开发可以通过Python 脚本语言控ABAQUS内核实现前处理建模和后处理的计算分析。ABAQUS 脚本接口是Python 语言的一个扩展,可以使用Python 语言编制脚本接口可以执行的程序,从而实现自动化重复性的工作、创建和修改模型数据库、访问数据库的功能。ABAQUS 脚本接口中的每个对象都拥有相应的数据成(data)和函数,对象中的函数专门用来处理对象中的数据成员,被称为相应对象的方法,用来生成对象的方法被称为构造函数(constructor)。在对象创建以后,可以使用该对象提供的方法来处理对象中的数据成员。ABAQUS 的对象模型是指ABAQUS 脚本接口中的各种对象类型之间的层次关系。ABAQUS 脚本接口对Python 语言进行了扩展,额外提供了大约500 个对象模型,这些对象模型之间的关系比较复杂,大致将这写对象分为3 类,如图1 所示。其中,session对象用来定义视图、远程队列、用户定义的视图等;mdb 对象包括计算模型对象和作业对象,其中odb 对象包括计算模型和计算结果数据,每一类对象下面又包括各类子对象,比如mdb 对象下面的计算模型models 对象又包括很多子对象,如图2 所示。
结果数据库由ABAQUS 分析得到,其中包含了模型数(Modeldata)和结果数据(Result data)。模型数据描述了分析中使用的模型,包括零件、装配信息等。结果数据描述了分析得到的结果,包括步(step)、帧(frame)、场变量输出(field output)和历史变量输出(historyoutput)等。在后处理的二次开发过程中,就是读取odb 对象中的数据,进行计算等相应的处理,然后输出为相应形式供用户查看的。
后处理是将有限元计算后的数据形象的显示出来供用户对计算结果进行查看和分析的。首先明确所要实现的功能,并设计功能实现的流程,使用Python 调用ABAQUS 提供的方法编写程序对结果数据库进行处理。其中关键技术有文件的读写和控制、数据的读取、数据的处理和结果的输出与查看等。
通过Python 语言提取Odb 文件中提供的OdbAccess 文件,实现对计算结果数据库文件的二次开发,有时这种开发还需要对.dat 文件和.fil 文件进行数据的读取。
数据读取即使用Python 语言通过ABAQUS的脚本接口读取odb 文件中的数据。ABAQUS 计算得到的数据是以面向对象的形式存储在结果数据库Odb 文件中的,要读取文件中的数据必须找到数据所在的路径,直接引用其中的变量或者使用数据对象的方法得到数据。
将提取出来的数据按照设计算法进行计算,得到所需要的结果文件。
将计算后得到的数据作为初始条件加载入新模型中进行计算和结果的显示。
以高压共轨系统中出油孔锥形面密封有效性分析为例,通过对预警过程和加载油压的工作过程进行模拟,分析锥面密封的有效性。首先建立锥面密封的简化模型并对预紧过程进行分析,通过计算锥形面同管接头之间的分离力(式1,2)预定义一定的分布力作用于螺母同管接头的接触面,得到锥形面间的接触应力、应变及更新后的管接头节点坐标。在螺母的预紧工作完成后,加载油压的工作过程不再施加预紧力,而在第一步中产生的相对位移作为新的初始条件加载在模型中并保持不变,这种加载无法直接设置多步分析得到,因此需要将上步分析中得到的应力、应变及更新的节点坐标写入新的分析文件中进行下一步的计算。使用Python 语言访问结果数据odbAccess,指定数据所在的路径即相应的步(step)和帧(frame),直接引用其中的使用数据对象(fieldOutput),将提取出来的数据写入文本文件中,作为初始条件加载入下一步的工作模型中进行计算。
针对实际密封锥面加工精度和质量情况建立相应的共轨管密封锥面部分的几何模型,将计算所得预紧力使用分布载荷形式作用于螺母的预紧结合面上,使得管接头外表面同共轨管锥面紧密贴合,保证油路密封。由于预紧螺母的形状对于预紧力的施加没有太大的影响,因此将六角螺母的形状简化为圆柱形;为了尽量减小有限元计算中出现的不收敛现象,预紧螺纹部分也简化为内圆柱面,预紧力则由作用在螺纹螺旋面上的摩擦力转变为作用在内圆柱面上的轴向力。密封面组件具有轴对称性,为了减少计算时间,在三维建模中只对一半的结构进行建模分析,在剖分面上通过边界约束的施加来限定其轴对称性。管壁内暂不施加油压作用,进行预紧力作用下的三体应力- 位移分析,分析结果应力分布如图3 所示。
Python 的开发文件首先需要导入odbAccess,使openOdb打开指定的数据库,并指定需要提取数据的step 及frame,在这些数据中使用fieldOutputs 读取需要的结果数据,如位移、应力及温度等参数,存入新建inp 文件中。在新的分析中,使用*initial conditions语句引用变量文件进行计算。最终的分析结果如图4 所示:
使用ABAQUS 脚本接口及Python 语言,对ABAQUS 计算结果进行处理,实现后处理所未提供功能,便于后续的分析过程。
使用Python 进行二次开发,可以有效的查看并处理分析过程中所关心的数据,并根据使用者要求进行各种数据处理,提高了分析能力。