基于PYTHON的ABAQUS后处理开发 附Python语言在Abaqus中的应用文档下载

ABAQUS 的后处理功能不能完全提供我们在分析过程中所需的数据,为更好的扩展后处理功能,查看和分析结果数据,本文提出了使用Python 语言对 ABAQUS 进行二次开发来达到这一目的的方法。文中讨论了ABAQUS 的脚本接口和对象模型在 二次开发中的作用和调用流程,以及文件的读写与复制、数据读取与处理、结果输出与查看等关键技术。以共轨管锥面密封性的分析为例,使用Python 语言提取了分析结果数据并将结果作为初始条件加载于新的分析中,最终得到所需的分析数据。

引言
基于PYTHON的ABAQUS后处理开发 附Python语言在Abaqus中的应用文档下载的图1
ABAQUS 是目前国际上最为先进的通用非线性有限元分析软件之一,软件包括种类丰富的材料库和单元库,可以模拟绝大部分工程材料的线性和非线性行为,而且材料库和单元库分开,材料和单元之间的组合能力很强,可以胜任复杂结构的静态与动态分析。ABAQUS自带的CAE 模块是一个完整ABAQUS 环境,提供—个简单一致的接口,可以用于创建、提交、监视和评价模拟所得到的结果。
Python 是一种简单易学、功能强大的编程语言,它有高效率的高级数据结构,可以简单而有效地实现面向对象编程。ABAQUS 有限元程序就通过集成脚本语言Python 向 二次开发者提供了很多库函数,通过Python 语言调用这些库函数来增强ABAQUS 的交互式操作能力。本文通过Python 脚本语言来提取ABAQUS 的后处理结果,并对结果数据进行相应的计算和转换,并将处理结果作为初始条件应用于其后的开发过程中。

1
ABAQUS、PYTHON接口程序

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语言在Abaqus中的应用文档下载的图2


2
实现的关键技术

后处理是将有限元计算后的数据形象的显示出来供用户对计算结果进行查看和分析的。首先明确所要实现的功能,并设计功能实现的流程,使用Python 调用ABAQUS 提供的方法编写程序对结果数据库进行处理。其中关键技术有文件的读写和控制、数据的读取、数据的处理和结果的输出与查看等。

基于PYTHON的ABAQUS后处理开发 附Python语言在Abaqus中的应用文档下载的图3



2.1 文件的读写和复制


通过Python 语言提取Odb 文件中提供的OdbAccess 文件,实现对计算结果数据库文件的二次开发,有时这种开发还需要对.dat 文件和.fil 文件进行数据的读取。



2.2 数据的读取


数据读取即使用Python 语言通过ABAQUS的脚本接口读取odb 文件中的数据。ABAQUS 计算得到的数据是以面向对象的形式存储在结果数据库Odb 文件中的,要读取文件中的数据必须找到数据所在的路径,直接引用其中的变量或者使用数据对象的方法得到数据。



2.3 数据的处理


将提取出来的数据按照设计算法进行计算,得到所需要的结果文件。



2.4 数据的输入


将计算后得到的数据作为初始条件加载入新模型中进行计算和结果的显示。


3
应用举例

以高压共轨系统中出油孔锥形面密封有效性分析为例,通过对预警过程和加载油压的工作过程进行模拟,分析锥面密封的有效性。首先建立锥面密封的简化模型并对预紧过程进行分析,通过计算锥形面同管接头之间的分离力(式1,2)预定义一定的分布力作用于螺母同管接头的接触面,得到锥形面间的接触应力、应变及更新后的管接头节点坐标。在螺母的预紧工作完成后,加载油压的工作过程不再施加预紧力,而在第一步中产生的相对位移作为新的初始条件加载在模型中并保持不变,这种加载无法直接设置多步分析得到,因此需要将上步分析中得到的应力、应变及更新的节点坐标写入新的分析文件中进行下一步的计算。使用Python 语言访问结果数据odbAccess,指定数据所在的路径即相应的步(step)和帧(frame),直接引用其中的使用数据对象(fieldOutput),将提取出来的数据写入文本文件中,作为初始条件加载入下一步的工作模型中进行计算。

基于PYTHON的ABAQUS后处理开发 附Python语言在Abaqus中的应用文档下载的图4



3.1 共轨管密封组件的安装预紧力计算


针对实际密封锥面加工精度和质量情况建立相应的共轨管密封锥面部分的几何模型,将计算所得预紧力使用分布载荷形式作用于螺母的预紧结合面上,使得管接头外表面同共轨管锥面紧密贴合,保证油路密封。由于预紧螺母的形状对于预紧力的施加没有太大的影响,因此将六角螺母的形状简化为圆柱形;为了尽量减小有限元计算中出现的不收敛现象,预紧螺纹部分也简化为内圆柱面,预紧力则由作用在螺纹螺旋面上的摩擦力转变为作用在内圆柱面上的轴向力。密封面组件具有轴对称性,为了减少计算时间,在三维建模中只对一半的结构进行建模分析,在剖分面上通过边界约束的施加来限定其轴对称性。管壁内暂不施加油压作用,进行预紧力作用下的三体应力- 位移分析,分析结果应力分布如图3 所示。

基于PYTHON的ABAQUS后处理开发 附Python语言在Abaqus中的应用文档下载的图5



3.2 更新节点坐标及相应物理量


由上一步中得到的分析结果文件中,使用开发的python 后处理程序,提取预紧过程达到变形稳定后的三体组件各节点的位置文件,更新第二步中的节点的坐标文件,以及相应的应力分布等场变量文件。导入更新后的节点坐标文件,在这一预紧稳态位置将预紧螺母和共轨管出油孔的预紧结合面“TIE”在一起模拟螺母预紧后的状态;同时将应力分布作为初始条件增加到模型中,模拟螺纹预紧后锥形接触面的状态,这一步可以看作是模拟管接头的预紧安装。此时共轨管锥面同管接头之间存在了初始的接触压力,保证油路的密封性。

Python 的开发文件首先需要导入odbAccess,使openOdb打开指定的数据库,并指定需要提取数据的step 及frame,在这些数据中使用fieldOutputs 读取需要的结果数据,如位移、应力及温度等参数,存入新建inp 文件中。在新的分析中,使用*initial conditions语句引用变量文件进行计算。最终的分析结果如图4 所示:

基于PYTHON的ABAQUS后处理开发 附Python语言在Abaqus中的应用文档下载的图6


4
总结

使用ABAQUS 脚本接口及Python 语言,对ABAQUS 计算结果进行处理,实现后处理所未提供功能,便于后续的分析过程。

使用Python 进行二次开发,可以有效的查看并处理分析过程中所关心的数据,并根据使用者要求进行各种数据处理,提高了分析能力。

下载地址:Python语言在Abaqus中的应用文档下载

ABAQUSABAQUS后处理开发ABAQUS二次开发

基于PYTHON的ABAQUS后处理开发 附Python语言在Abaqus中的应用文档下载的评论0条

    暂无评论

    基于PYTHON的ABAQUS后处理开发 附Python语言在Abaqus中的应用文档下载的相关视频课程

    基于PYTHON的ABAQUS后处理开发 附Python语言在Abaqus中的应用文档下载的相关案例教程

    ABAQUS 显式explicit计算时所有结果都将写入到.odb文件中,在GUI界面进行数据提取时效率较低,且有些详细结果不能直接从.odb中获取。因此,需要利用python读取.odb,然后进行提取关心的数据,以此进行下一步计算。这里以python提取轮轨接触时的法向力和切向力结果为例,进行说明: #- -coding: UTF-8-*- from abaqus import * from o
    之前号内分享过一篇基于Matlab对Abaqus-odb结果文件进行modify的推文,大家有兴趣可点击阅览Matlab“稍作修改”Abaqus-odb结果!!!,本次想要分享的是如何将Abaqus产生的odb文件转入Paraview中进行后处理显示? 灵感来源 相信有的小伙伴在网上会发现有一项开源项目正是解决这个问题,地址:https://github.com/haiiliin/odb2vtk,
    1. 概述 早期的结构设计中,工程师们主要研究结构的强度、刚度等内容,客户也更多的关注结构的安全性及稳定性。随着技术的发展及竞争,在安全可靠的前提下,客户越来越看重产品的舒适性,因此有必要进行结构振动与噪声控制优化设计工作。 合理的开展结构减振降噪优化工作的前提是:正确识别噪声源,分析其振动能量的分布和主要传播途径。而结构振动强度的功率流分析方法可使结构的能量传递路径和振源可视化。 本期小编将给大
    今天完成了一些节点性工作,下午有些时间,回答一个后台有网友的提问: 这个问题具有一定的普遍性和通用性,普遍性是很多人都会遇到,通用性是指应用场景很广泛,尤其是现在很多人赶时髦搞深度学习和机器学习什么的,需要进行大量计算和数据处理来构建数据集,这就不可避免的要进行批量化处理了,因此对这些问题进行基本的讲解也就有了意义,我原来也写过一些相关文章,点击下面图片可以跳转。 该网友的问题,实际上是两个问题:
    ### python脚本提取解释 # 导入模块 from odbAccess import * from abaqusConstants import * from odbMaterial import * from odbSection import * import math # 打开odb文件 odb = openOdb(path=r'G:\CABLE_CON\TEXT2\Job-1.odb
    影响力
    粉丝
    内容
    获赞
    收藏
      项目客服
      培训客服
      0 6