Python-ABAQUS二次开发
文章目录
前言
在使用Python提取ABAQUS后处理odb文件中的数据时,发现关于ABAQUS中具体的应力提取方式,缺少详细的总结和说明。因此在这里对于自己曾经使用过的ABAQUA二次开发相关函数做总结,之后遇到二次开发相关的问题也会补充在这篇文章里。
值得注意的一点是,所有有关ABAQUS二次开发的方法函数总结,都可以通过在ABAQUS软件中进行对应的操作,之后查看.rpy文件学习。 个人认为这是一种最为快速便捷的方法,比在博客中查询自己想要得到的结果函数要快的多。
一、ABAQUS odb文件结构
在采用Python对ABAQUS结果提取之前,首先我们要了解ABAQUS odb文件结构,实际上,之后的python获取abaqus结果数据的方法,即为根据数据结构图依次调用其中的各个函数。
二、Python-ABAQUS二次开发
1.引入库
代码如下:
from odbAccess import*
from abaqusConstants import*
import sys
import os
实际上,提取数据的过程,应当直接使用abaqus的runscrip运行,而导入库直接使用abaqus运行时rpy文件中自动导入的库即可。
2.Python选择节点和单元
Python选择节点和单元的常用函数如下:
getByBoundingBox()
getByBoundingCylinder()
getByBoundingSphere()
通过位置选择节点:
p = mdb.models['Model-1'].parts['Part-1']
n = p.nodes
# 通过矩形框选节点,括弧里为矩形的两个坐标
nlist = n.getByBoundingBox(-100, 100, 0, 100, 100, 0)
# 创建set,Set-1即为我们所框选矩形内的节点集合
p.Set(nodes=nlist, name='Set-1')
通过位置选择单元:
与通过位置选择节点的方法类似,只需将nodes换成elements即可。
注:选中节点的单元都会被选中
p = mdb.models['Model-1'].parts['Part-1']
n = p.elements
elist = e.getByBoundingBox(-0.2, -12.6, -0.1, 0.2 ,12.6 ,0.1)
获取节点的label:
仅需在所